در این مطلب، ویدئو تخمین پوس با سریعترین مدل یادگیری عمیق پایتون | MoveNet Lightning با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:51:01
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,270 –> 00:00:00,719
[موسیقی]
2
00:00:00,719 –> 00:00:02,639
میخواهید سریعترین مدل تخمین ژست را
3
00:00:02,639 –> 00:00:03,600
در جهان
4
00:00:03,600 –> 00:00:17,920
ببینید ببینید
5
00:00:18,080 –> 00:00:19,279
چه اتفاقی میافتد بچهها نام من
6
00:00:19,279 –> 00:00:20,800
نیکلاس رنو است و در این ویدیو ما
7
00:00:20,800 –> 00:00:22,400
قصد داریم به حرکت گردن نگاهی بیندازیم،
8
00:00:22,400 –> 00:00:24,800
بنابراین یکی از چیزهای شگفتانگیز
9
00:00:24,800 –> 00:00:26,080
در مورد این مدل است. آیا در
10
00:00:26,080 –> 00:00:28,800
واقع به طرز مضحکی سریع است، به این معنی که
11
00:00:28,800 –> 00:00:29,359
12
00:00:29,359 –> 00:00:31,439
برای برنامه های تناسب اندام در زمان واقعی عالی
13
00:00:31,439 –> 00:00:33,040
است یا اگر در حال ساخت
14
00:00:33,040 –> 00:00:34,640
مدل هایی هستید که به
15
00:00:34,640 –> 00:00:36,719
تخمین ژست مضحک سریع نیاز دارند،
16
00:00:36,719 –> 00:00:38,160
به خصوص اگر روی یک
17
00:00:38,160 –> 00:00:39,760
دستگاه کوچک کار می کنید یا اگر روی
18
00:00:39,760 –> 00:00:41,760
لپ تاپ کار می کنید که این کار را انجام نمی دهد. این مدل پردازنده گرافیکی
19
00:00:41,760 –> 00:00:44,320
ندارد، بیایید
20
00:00:44,320 –> 00:00:44,960
نگاهی عمیقتر به
21
00:00:44,960 –> 00:00:47,039
آنچه خواهیم داشت بیندازیم، بنابراین از
22
00:00:47,039 –> 00:00:48,559
نظر کاری که قرار است امروز انجام
23
00:00:48,559 –> 00:00:50,000
دهیم، کمی متفاوت است از این نظر که
24
00:00:50,000 –> 00:00:51,680
ما کاملاً انجام خواهیم داد. مقدار کمی
25
00:00:51,680 –> 00:00:52,320
از این چیزها
26
00:00:52,320 –> 00:00:54,160
از ابتدا، بنابراین اول از همه کاری که
27
00:00:54,160 –> 00:00:55,600
میخواهیم انجام دهیم این است که
28
00:00:55,600 –> 00:00:57,520
مدل movenet را دانلود کرده و در واقع
29
00:00:57,520 –> 00:00:58,719
آن را
30
00:00:58,719 –> 00:01:01,280
با استفاده از tf lite یا
31
00:01:01,280 –> 00:01:03,039
مفسر پرواز ردیف در نوتبوک jupyter بارگذاری میکنیم
32
00:01:03,039 –> 00:01:04,559
و سپس آنچه را که هستیم در واقع قصد انجام
33
00:01:04,559 –> 00:01:06,400
این کار است توابع رندر را از
34
00:01:06,400 –> 00:01:08,400
ابتدا بسازیم تا در واقع بتوانیم
35
00:01:08,400 –> 00:01:09,040
36
00:01:09,040 –> 00:01:11,119
نقطه عطف به طور خاص نقاط کلیدی
37
00:01:11,119 –> 00:01:13,439
و همچنین
38
00:01:13,439 –> 00:01:14,720
اتصالات هر یک از این مؤلفه های مختلف
39
00:01:14,720 –> 00:01:16,159
را برای movenet ترسیم کنیم، بنابراین در واقع خواهید
40
00:01:16,159 –> 00:01:16,640
41
00:01:16,640 –> 00:01:19,360
دید که رندر واقعا چگونه کار می
42
00:01:19,360 –> 00:01:20,720
کند. نگاهی به اینکه چگونه همه اینها
43
00:01:20,720 –> 00:01:22,479
قرار است با هم هماهنگ شوند،
44
00:01:22,479 –> 00:01:24,240
بنابراین ابتدا کاری که می خواهیم انجام دهیم این است
45
00:01:24,240 –> 00:01:26,000
که مدل movenet را دانلود و
46
00:01:26,000 –> 00:01:27,759
نصب می کنیم، بنابراین این کار استفاده از این
47
00:01:27,759 –> 00:01:29,600
پیش را برای ما بسیار آسان می کند.
48
00:01:29,600 –> 00:01:31,520
-مدل ساخته شده است و
49
00:01:31,520 –> 00:01:32,960
دوباره یک دسته کامل از
50
00:01:32,960 –> 00:01:34,640
برنامه ها برای این کار وجود دارد، به عنوان مثال بگویید می
51
00:01:34,640 –> 00:01:37,119
خواهید یک
52
00:01:37,119 –> 00:01:38,799
برنامه تشخیص اقدام در زمان واقعی بسازید یا اگر می خواهید
53
00:01:38,799 –> 00:01:40,720
چیزی بسازید که به شما کمک کند
54
00:01:40,720 –> 00:01:42,799
ژست های مختلف را در حین تمرین تشخیص دهید یا ارزیابی کنید،
55
00:01:42,799 –> 00:01:43,920
56
00:01:43,920 –> 00:01:45,439
این مدل عالی است. به
57
00:01:45,439 –> 00:01:47,040
خصوص به این دلیل که بسیار
58
00:01:47,040 –> 00:01:49,520
سریع است، شما می توانید آن را روی یک لپ تاپ اجرا کنید،
59
00:01:49,520 –> 00:01:50,320
مثلاً
60
00:01:50,320 –> 00:01:52,079
مک بوک بدون gpu و
61
00:01:52,079 –> 00:01:54,079
هنوز هم نسبتاً سریع خواهد بود
62
00:01:54,079 –> 00:01:55,600
و ما نگاهی به مدل کارت خواهیم
63
00:01:55,600 –> 00:01:56,880
انداخت که واقعی است. ly برخی از آن
64
00:01:56,880 –> 00:01:59,119
اطلاعات را نیز در یک ثانیه به شما می دهد،
65
00:01:59,119 –> 00:02:00,240
بنابراین وقتی آن را نصب کردیم،
66
00:02:00,240 –> 00:02:01,840
طبق معمول با وب کم خود شناسایی می کنیم
67
00:02:01,840 –> 00:02:03,280
و سپس کاری که در واقع
68
00:02:03,280 –> 00:02:04,960
انجام می دهیم این است که می نویسیم
69
00:02:04,960 –> 00:02:06,640
توابع رندر ما برای اینکه بتوانیم
70
00:02:06,640 –> 00:02:08,160
این تشخیصها را
71
00:02:08,160 –> 00:02:11,280
از ابتدا ارائه کنیم آماده انجام آن هستیم، خوب بچهها به
72
00:02:11,280 –> 00:02:11,760
آن
73
00:02:11,760 –> 00:02:14,400
برسیم، بنابراین برای اینکه از
74
00:02:14,400 –> 00:02:15,840
شبکه حرکت اهرمی استفاده کنیم،
75
00:02:15,840 –> 00:02:17,360
پنج کار کلیدی داریم که باید انجام دهیم
76
00:02:17,360 –> 00:02:19,280
، شمارهگذاری را از اینجا شروع کردهایم. صفر دوباره
77
00:02:19,280 –> 00:02:22,400
من نمی دانم رمزگشا در من است خوب است، بنابراین
78
00:02:22,400 –> 00:02:23,840
کاری که باید انجام دهیم این
79
00:02:23,840 –> 00:02:26,000
است که طبق معمول وابستگی های خود را نصب و وارد کنیم، ما
80
00:02:26,000 –> 00:02:27,040
81
00:02:27,040 –> 00:02:28,560
همه چیزهایی را که نیاز داریم نصب می کنیم،
82
00:02:28,560 –> 00:02:30,080
فکر می کنم وابستگی های اصلی را نصب کنیم نیاز
83
00:02:30,080 –> 00:02:32,160
به این کار به تنسورفلو
84
00:02:32,160 –> 00:02:34,000
و پانداها خواهد بود، بنابراین ما
85
00:02:34,000 –> 00:02:36,319
امروز از مفسر tf lite استفاده خواهیم کرد، بنابراین با برنامههای
86
00:02:36,319 –> 00:02:37,599
87
00:02:37,599 –> 00:02:40,400
بینایی رایانهای
88
00:02:40,400 –> 00:02:42,080
که قبلاً انجام
89
00:02:42,080 –> 00:02:44,160
دادهایم کمی متفاوت است و از tf lite استفاده میکنیم.
90
00:02:44,160 –> 00:02:45,760
به جای چیزی مانند یک
91
00:02:45,760 –> 00:02:47,360
ایست بازرسی امن که ما آن را مدل کنیم این کار را در
92
00:02:47,360 –> 00:02:48,879
دوره تشخیص شی جریان شدید انجام
93
00:02:48,879 –> 00:02:51,120
دادیم، اما خیلی خوب است که ما این کار را انجام خواهیم داد،
94
00:02:51,120 –> 00:02:52,400
سپس کاری که میخواهیم انجام دهیم این است
95
00:02:52,400 –> 00:02:53,760
که مدل را بارگذاری میکنیم،
96
00:02:53,760 –> 00:02:55,840
بنابراین برخی از تشخیصها و
97
00:02:55,840 –> 00:02:56,879
سپس آنچه را که من انجام میدهیم انجام میدهیم. من
98
00:02:56,879 –> 00:02:58,319
در واقع به شما نشان خواهم داد که چگونه
99
00:02:58,319 –> 00:03:00,080
توابع را بنویسید تا بتوانید نقاط کلیدی و لبه ها را ترسیم کنید
100
00:03:00,080 –> 00:03:01,360
101
00:03:01,360 –> 00:03:03,280
و بنابراین ما در واقع مقداری منطق را
102
00:03:03,280 –> 00:03:04,800
در آنجا قرار می دهیم که به ما امکان می دهد بفهمیم
103
00:03:04,800 –> 00:03:06,640
که آیا یک نقطه کلیدی یا
104
00:03:06,640 –> 00:03:07,519
تشخیص
105
00:03:07,519 –> 00:03:09,920
خاصی از آستانه ما عبور کرده است و تنها پس از
106
00:03:09,920 –> 00:03:11,200
آن ما آن را ارائه می کنیم، بنابراین این
107
00:03:11,200 –> 00:03:12,560
واقعاً شبیه
108
00:03:12,560 –> 00:03:15,120
روشی است که ما از تخمین پی پوز رسانه استفاده می کنیم تا
109
00:03:15,120 –> 00:03:16,480
بتوانیم این کار را انجام دهیم، اما
110
00:03:16,480 –> 00:03:18,080
دوباره چیز جالب در مورد مدلی است که می
111
00:03:18,080 –> 00:03:19,519
خواهیم انجام دهیم. استفاده از اینجا این است که
112
00:03:19,519 –> 00:03:21,599
به طرز مسخره ای
113
00:03:21,599 –> 00:03:23,599
بسیار سریع است، در واقع فکر می کنم در
114
00:03:23,599 –> 00:03:25,360
واقع سریع ترین مدل در جهان است، بنابراین می تواند
115
00:03:25,360 –> 00:03:26,000
116
00:03:26,000 –> 00:03:28,319
در بیشتر لپ تاپ های مدرن با سرعت بیش از 50 فریم در ثانیه اجرا شود.
117
00:03:28,319 –> 00:03:30,159
118
00:03:30,159 –> 00:03:31,920
119
00:03:31,920 –> 00:03:33,840
مدل های
120
00:03:33,840 –> 00:03:35,280
لپ تاپ استاندارد شما
121
00:03:35,280 –> 00:03:37,360
مسخره است خیلی سریع،
122
00:03:37,360 –> 00:03:40,080
بنابراین کاری که اکنون میخواهیم انجام دهیم اول است
123
00:03:40,080 –> 00:03:41,040
و
124
00:03:41,040 –> 00:03:43,120
من به صفحهای که به تازگی به شما نشان دادم پیوند میدهم
125
00:03:43,120 –> 00:03:44,480
تا بتوانید در واقع ببینید پشت آن چه چیزی وجود دارد،
126
00:03:44,480 –> 00:03:45,040
اما
127
00:03:45,040 –> 00:03:46,640
ابتدا کاری که میخواهیم انجام دهیم این است که
128
00:03:46,640 –> 00:03:48,080
میرویم برای نصب
129
00:03:48,080 –> 00:03:49,920
و وارد کردن وابستگی خود، پس بیایید
130
00:03:49,920 –> 00:03:52,480
یک سلول جدید ایجاد کنیم
131
00:03:52,480 –> 00:04:01,840
و بیایید به
132
00:04:03,120 –> 00:04:05,760
همه چیز درست بپردازیم، بنابراین این وابستگیهای ما
133
00:04:05,760 –> 00:04:06,239
اکنون
134
00:04:06,239 –> 00:04:08,959
نصب شدهاند، بنابراین ما رفتهایم و نصب
135
00:04:08,959 –> 00:04:10,560
کردیم، به نظر میرسد احتمالاً باید
136
00:04:10,560 –> 00:04:13,680
پیپ آپدیت uh را نصب کنیم، اما خوب است که
137
00:04:13,680 –> 00:04:14,319
رفتهایم
138
00:04:14,319 –> 00:04:15,760
و یک دو سه چهار
139
00:04:15,760 –> 00:04:17,600
کتابخانه مختلف را نصب کردیم، بنابراین برای انجام
140
00:04:17,600 –> 00:04:18,079
این
141
00:04:18,079 –> 00:04:20,959
کار رفتیم و علامت تعجب
142
00:04:20,959 –> 00:04:21,519
143
00:04:21,519 –> 00:04:24,160
نوشتیم.
144
00:04:24,160 –> 00:04:25,680
145
00:04:25,680 –> 00:04:28,800
146
00:04:28,800 –> 00:04:31,680
147
00:04:31,680 –> 00:04:33,520
به نوعی
148
00:04:33,520 –> 00:04:35,520
سه چهار وابستگی کلیدی
149
00:04:35,520 –> 00:04:36,639
ایجاد کرده ایم که رفته ایم و
150
00:04:36,639 –> 00:04:39,360
نصب کرده ایم، بنابراین tensorflow 2.4.1 tensorflow
151
00:04:39,360 –> 00:04:40,800
gpu 2.4.1
152
00:04:40,800 –> 00:04:42,560
و این اختیاری است فقط
153
00:04:42,560 –> 00:04:44,639
اگر واقعاً یک gpu روی
154
00:04:44,639 –> 00:04:45,199
155
00:04:45,199 –> 00:04:48,240
دستگاه خود دارید انجام دهید. با استفاده از یک gpu acce
156
00:04:48,240 –> 00:04:49,360
دستگاه lerator بنابراین ما میتوانیم از
157
00:04:49,360 –> 00:04:51,120
tensorflow gpu استفاده کنیم، اما خوب است که شما میتوانید
158
00:04:51,120 –> 00:04:52,880
این کار را بدون دستگاه شتابدهنده gpu انجام
159
00:04:52,880 –> 00:04:55,360
دهید، باید خوب بروید،
160
00:04:55,360 –> 00:04:57,680
سپس ما رفتهایم و opencv dash python را نصب کردهایم،
161
00:04:57,680 –> 00:04:59,360
بنابراین این به ما اجازه میدهد
162
00:04:59,360 –> 00:04:59,919
تا
163
00:04:59,919 –> 00:05:02,000
از وبکم خود در زمان واقعی استفاده کنیم. برای اینکه
164
00:05:02,000 –> 00:05:03,759
بتوانم تخمین پوز خود را انجام دهیم و
165
00:05:03,759 –> 00:05:04,479
سپس رفتم و
166
00:05:04,479 –> 00:05:06,160
matplotlib را نیز نصب کردم و این
167
00:05:06,160 –> 00:05:07,840
واقعاً برای آزمایش است، بنابراین
168
00:05:07,840 –> 00:05:09,440
زمانی که من در واقع
169
00:05:09,440 –> 00:05:10,720
توابع رندر را توسعه میدادیم، به طور گسترده از
170
00:05:10,720 –> 00:05:11,919
matplotlib استفاده میکردم،
171
00:05:11,919 –> 00:05:15,120
بنابراین اکنون مورد بعدی
172
00:05:15,120 –> 00:05:16,320
که به آن نیاز داریم. انجام این کار در واقع این است که
173
00:05:16,320 –> 00:05:17,840
این وابستگی ها را به نوت بوک خود وارد کنیم،
174
00:05:17,840 –> 00:05:25,840
پس بیایید ادامه دهیم و این کار را انجام دهیم،
175
00:05:26,080 –> 00:05:29,039
خوب این وابستگی های کلیدی ما هستند و
176
00:05:29,039 –> 00:05:29,440
اکنون
177
00:05:29,440 –> 00:05:31,759
وارد شده اند، بنابراین من رفتم و چهار
178
00:05:31,759 –> 00:05:33,199
خط مختلف کد را در آنجا نوشتم، بنابراین
179
00:05:33,199 –> 00:05:34,800
ابتدا آنچه را که رفتیم و انجام دادیم، جریان زمانی وارد شده است،
180
00:05:34,800 –> 00:05:35,840
بنابراین من
181
00:05:35,840 –> 00:05:38,960
import tensorflow را به عنوان tf نوشتهام و بنابراین
182
00:05:38,960 –> 00:05:40,479
tensorflow وابستگی اصلی ما
183
00:05:40,479 –> 00:05:42,000
در این مورد خواهد بود، بهویژه زمانی که
184
00:05:42,000 –> 00:05:43,759
صحبت از تشخیص
185
00:05:43,759 –> 00:05:45,440
با مدل movenet ما میشود و ما مشخصات داریم.
186
00:05:45,440 –> 00:05:47,120
اگر قرار است از مدلی
187
00:05:47,120 –> 00:05:47,440
به نام
188
00:05:47,440 –> 00:05:49,759
movenet lightning استفاده کنیم که سریعترین
189
00:05:49,759 –> 00:05:51,680
نسخه نت حرکت است،
190
00:05:51,680 –> 00:05:53,600
سپس کاری که انجام دادیم این
191
00:05:53,600 –> 00:05:55,520
است که numpy را وارد کردهایم و numpy فقط
192
00:05:55,520 –> 00:05:57,120
به ما در تبدیل آرایهمان کمک میکند، بنابراین من
193
00:05:57,120 –> 00:05:58,000
import
194
00:05:58,000 –> 00:06:00,880
numpy را به عنوان np نوشتم. و این به
195
00:06:00,880 –> 00:06:02,479
ویژه زمانی که نوبت به
196
00:06:02,479 –> 00:06:03,360
197
00:06:03,360 –> 00:06:05,280
انجام و نوشتن توابع رندر ما
198
00:06:05,280 –> 00:06:07,360
در مراحل سه
199
00:06:07,360 –> 00:06:10,639
و چهار میرسد بسیار مهم خواهد بود، سپس ما matplotlib
200
00:06:10,639 –> 00:06:11,440
را از
201
00:06:11,440 –> 00:06:14,800
matplotlib import pi نمودار به عنوان plt وارد کردهایم،
202
00:06:14,800 –> 00:06:16,639
بنابراین این صرفاً برای آزمایش است.
203
00:06:16,639 –> 00:06:18,560
فکر میکنید احتمالاً در این آموزش از آن استفاده میکنیم،
204
00:06:18,560 –> 00:06:19,759
اما
205
00:06:19,759 –> 00:06:21,520
اگر میخواهید فقط فریمی را
206
00:06:21,520 –> 00:06:22,960
که از وبکم خود
207
00:06:22,960 –> 00:06:24,880
گرفتهاید رندر کنید، میتوانید از matplotlib برای رندر کردن آن
208
00:06:24,880 –> 00:06:27,520
بهراحتی معقولانه استفاده کنید و در آخر،
209
00:06:27,520 –> 00:06:29,600
ما وارد شدهایم. برای
210
00:06:29,600 –> 00:06:31,840
انجام این کار، من import cv2 را نوشتم، بنابراین
211
00:06:31,840 –> 00:06:32,880
این همان
212
00:06:32,880 –> 00:06:34,639
چیزی است که ما برای گرفتن
213
00:06:34,639 –> 00:06:36,160
فید خود از وبکم خود استفاده میکنیم
214
00:06:36,160 –> 00:06:39,039
و به صفحه نمایش سرد نشان
215
00:06:39,039 –> 00:06:39,520
216
00:06:39,520 –> 00:06:42,240
میدهیم، بنابراین این وابستگیهای ما نصب شده و مهم هستند.
217
00:06:42,240 –> 00:06:43,919
اکنون کاری که باید
218
00:06:43,919 –> 00:06:45,680
انجام دهیم این است که در واقع ادامه
219
00:06:45,680 –> 00:06:49,280
دهیم و مدل خود را اکنون بارگذاری کنیم تا مدل خود را بارگیری کنیم
220
00:06:49,280 –> 00:06:50,639
آنچه که در واقع باید انجام دهیم این است
221
00:06:50,639 –> 00:06:52,560
که ابتدا مدل خود را دانلود کنیم، بنابراین
222
00:06:52,560 –> 00:06:54,000
اکنون نکته جالب در مورد این این است که شما
223
00:06:54,000 –> 00:06:55,680
واقعاً می توانید
224
00:06:55,680 –> 00:06:57,199
مدل movenet را که قرار است
225
00:06:57,199 –> 00:06:58,960
از آن استفاده کنیم را از
226
00:06:58,960 –> 00:07:00,560
هاب تنسورفلو دریافت کنید، بنابراین یک
227
00:07:00,560 –> 00:07:01,599
سری چیزهای مختلف وجود دارد که می توانید از هاب تنسورفلو به آنها دسترسی داشته باشید
228
00:07:01,599 –> 00:07:03,039
229
00:07:03,039 –> 00:07:04,880
و یکی از آنها به طور
230
00:07:04,880 –> 00:07:06,160
اتفاقی مدل movenet است که ما از آن
231
00:07:06,160 –> 00:07:07,520
استفاده خواهیم کرد. اکنون یک سری
232
00:07:07,520 –> 00:07:08,080
اطلاعات
233
00:07:08,080 –> 00:07:09,599
در مورد این مدل وجود دارد، بنابراین شما می توانید در واقع
234
00:07:09,599 –> 00:07:11,919
مطالعه کنید و ببینید که چگونه از آن استفاده کنید
235
00:07:11,919 –> 00:07:13,360
و در واقع یک سری اطلاعات به شما می دهد که
236
00:07:13,360 –> 00:07:15,039
چگونه می توانید
237
00:07:15,039 –> 00:07:17,280
تصاویر را واقعی انجام دهید و در واقع از مدل استفاده کنید.
238
00:07:17,280 –> 00:07:18,400
239
00:07:18,400 –> 00:07:21,280
من به ویژه آن را دوست دارم و بنابراین
240
00:07:21,280 –> 00:07:22,960
در حال حاضر من در تفسیر نور tf مدل هستم،
241
00:07:22,960 –> 00:07:24,880
اما شما
242
00:07:24,880 –> 00:07:26,000
می توانید از
243
00:07:26,000 –> 00:07:28,880
مدل ذخیره شده tf2 نیز استفاده کنید، بنابراین این بسیار
244
00:07:28,880 –> 00:07:30,960
شبیه به روشی است که ما واقعاً رفتیم و
245
00:07:30,960 –> 00:07:32,800
246
00:07:32,800 –> 00:07:34,639
مدل های تشخیص شی تنسورفلو را ساختیم. در قالبی مشابه
247
00:07:34,639 –> 00:07:35,120
248
00:07:35,120 –> 00:07:37,039
با نسخه tensorflow.js
249
00:07:37,039 –> 00:07:39,280
و همچنین یک نسخه t از سبک وجود دارد که
250
00:07:39,280 –> 00:07:41,199
اکنون نکته جالب در مورد این است و
251
00:07:41,199 –> 00:07:42,800
دوباره پیوندی به آن
252
00:07:42,800 –> 00:07:44,800
در توضیحات زیر قرار می دهم تا بتوانید
253
00:07:44,800 –> 00:07:45,840
به این نگاه کنید. خوب،
254
00:07:45,840 –> 00:07:48,240
اما این کارت مدل دقیقاً در اینجا وجود دارد،
255
00:07:48,240 –> 00:07:49,199
بنابراین اگر
256
00:07:49,199 –> 00:07:52,160
واقعاً کارت مدل را انتخاب کنید، در واقع
257
00:07:52,160 –> 00:07:52,960
یک سری
258
00:07:52,960 –> 00:07:55,120
اطلاعات در مورد مدلی که ما از
259
00:07:55,120 –> 00:07:56,400
آن استفاده خواهیم کرد به شما می
260
00:07:56,400 –> 00:07:59,599
دهد، بنابراین دو مدل کلیدی در
261
00:07:59,599 –> 00:08:01,759
داخل شبکه متحرک نوعی کره یا جهان
262
00:08:01,759 –> 00:08:03,360
وجود دارد که وجود دارد. رعد و برق توری حرکت می کند و رعد و برق
263
00:08:03,360 –> 00:08:03,919
حرکت می کند
264
00:08:03,919 –> 00:08:06,400
بنابراین رعد و برق سریع ترین
265
00:08:06,400 –> 00:08:07,039
نسخه
266
00:08:07,039 –> 00:08:09,840
است.
267
00:08:09,840 –> 00:08:11,680
268
00:08:11,680 –> 00:08:13,039
269
00:08:13,039 –> 00:08:15,599
270
00:08:15,599 –> 00:08:17,599
271
00:08:17,599 –> 00:08:19,520
پانچ پس
272
00:08:19,520 –> 00:08:20,319
دوباره به
273
00:08:20,319 –> 00:08:22,319
این سرعت نیست، اما هنوز
274
00:08:22,319 –> 00:08:23,840
یک
275
00:08:23,840 –> 00:08:26,800
مدل معقول به شما می دهد تا واقعاً کار کند، کمی اطلاعات در مورد معماری مدل به شما می دهد،
276
00:08:26,800 –> 00:08:28,000
277
00:08:28,000 –> 00:08:29,599
بنابراین از یک موبایل Net
278
00:08:29,599 –> 00:08:30,639
v2
279
00:08:30,639 –> 00:08:32,559
با ویژگی pyr استفاده می کند. در میان شبکه برای
280
00:08:32,559 –> 00:08:33,919
استخراج ویژگی
281
00:08:33,919 –> 00:08:36,559
و از centernet برای اجرای oh
282
00:08:36,559 –> 00:08:38,479
برای خروجی واقعی هدهای پیش بینی استفاده می کند
283
00:08:38,479 –> 00:08:40,399
و بنابراین این خروجی های پیش بینی نهایی
284
00:08:40,399 –> 00:08:41,919
285
00:08:41,919 –> 00:08:44,080
نیز ورودی ها را به شما نشان می دهد بنابراین به نظر می رسد
286
00:08:44,080 –> 00:08:46,720
که مدل لایتنینگ روی یک
287
00:08:46,720 –> 00:08:50,000
فریم 192 در 192×3 اجرا می شود. قرار است
288
00:08:50,000 –> 00:08:52,480
کانالهای rgb باشند، بنابراین رنگی است و
289
00:08:52,480 –> 00:08:54,240
مدل تندر ورودیهایی را میگیرد
290
00:08:54,240 –> 00:08:57,120
که کمی بزرگتر هستند، بنابراین 256 در 256.
291
00:08:57,120 –> 00:08:58,480
حالا خروجیای که از این میگیریم
292
00:08:58,480 –> 00:09:00,560
به شکل
293
00:09:00,560 –> 00:09:04,160
1 1 17 3 است. 17، 17
294
00:09:04,160 –> 00:09:05,279
نقطه کلیدی مختلف برای
295
00:09:05,279 –> 00:09:08,720
بدن ما هستند و سه مورد،
296
00:09:08,720 –> 00:09:10,880
مختصات x هستند، من فکر می کنم مختصات x y
297
00:09:10,880 –> 00:09:12,560
مختصات x و سپس
298
00:09:12,560 –> 00:09:14,240
فاصله اطمینان یا معیار اطمینان،
299
00:09:14,240 –> 00:09:14,800
300
00:09:14,800 –> 00:09:16,320
بنابراین ما در واقع از هر
301
00:09:16,320 –> 00:09:18,000
سه آن استفاده خواهیم کرد، بنابراین ما. از متریک y
302
00:09:18,000 –> 00:09:19,200
و متریک x استفاده می کنیم
303
00:09:19,200 –> 00:09:22,320
تا در واقع به جلو برویم و نقطه کلیدی خود را ترسیم
304
00:09:22,320 –> 00:09:22,959
305
00:09:22,959 –> 00:09:24,320
کنیم و سپس از
306
00:09:24,320 –> 00:09:26,000
معیار اطمینان برای تعیین اینکه آیا باید
307
00:09:26,000 –> 00:09:27,600
یا نه یا اینکه
308
00:09:27,600 –> 00:09:28,959
از آستانه ما که می خواهیم ادامه دهیم گذشته است یا نه استفاده خواهیم کرد.
309
00:09:28,959 –> 00:09:32,160
و از تو استفاده کن m
310
00:09:32,160 –> 00:09:33,200
همچنین اطلاعات کمی
311
00:09:33,200 –> 00:09:35,360
در مورد موارد استفاده مورد نظر
312
00:09:35,360 –> 00:09:37,680
به شما می دهد و کاربران اولیه برخی از
313
00:09:37,680 –> 00:09:39,360
داده های ارزیابی را به شما می دهد و
314
00:09:39,360 –> 00:09:40,720
همچنین معیارهایی را در مورد نحوه عملکرد واقعی
315
00:09:40,720 –> 00:09:41,600
316
00:09:41,600 –> 00:09:42,959
به شما می دهد، بنابراین اطلاعاتی در مورد
317
00:09:42,959 –> 00:09:44,800
مدل رعد و برق و مدل رعد و برق به شما می دهد.
318
00:09:44,800 –> 00:09:46,480
مجموعه کاملی از اطلاعات
319
00:09:46,480 –> 00:09:48,480
که می توانید بروید و نگاهی به آنها بیندازید، بنابراین
320
00:09:48,480 –> 00:09:50,000
همه اینها
321
00:09:50,000 –> 00:09:52,959
در tf hub dot dev توسعه
322
00:09:52,959 –> 00:09:53,760
323
00:09:53,760 –> 00:09:56,160
324
00:09:56,160 –> 00:09:56,880
325
00:09:56,880 –> 00:09:59,279
326
00:09:59,279 –> 00:10:00,240
327
00:10:00,240 –> 00:10:02,720
داده می شود. این لینک
328
00:10:02,720 –> 00:10:04,240
در توضیحات زیر موجود است، بنابراین اگر
329
00:10:04,240 –> 00:10:05,839
میخواهید ادامه دهید و این را انتخاب کنید،
330
00:10:05,839 –> 00:10:07,360
مطمئناً میتوانید این کار را انجام دهید
331
00:10:07,360 –> 00:10:09,360
اکنون کافی است صحبت کنید، بیایید در واقع ادامه دهیم
332
00:10:09,360 –> 00:10:10,720
و این مدل را دانلود کنیم، بنابراین تنها
333
00:10:10,720 –> 00:10:12,480
کاری که
334
00:10:12,480 –> 00:10:13,920
باید انجام دهید این است که به سادگی ادامه دهید.
335
00:10:13,920 –> 00:10:17,200
به این سمت بروید و
336
00:10:17,200 –> 00:10:19,200
دانلود را بزنید و مدل tflight شما را دانلود می
337
00:10:19,200 –> 00:10:20,160
کند، بنابراین می توانید ببینید که قبلاً
338
00:10:20,160 –> 00:10:21,839
دانلود شده است، بسیار کوچک است
339
00:10:21,839 –> 00:10:22,320
که
340
00:10:22,320 –> 00:10:26,079
خوب است، بنابراین اگر من بروم
341
00:10:26,079 –> 00:10:29,200
بیایید آن را به این صفحه نمایش بیاوریم
342
00:10:29,200 –> 00:10:31,120
تا از بین برود و مدل tflight را دانلود کرده
343
00:10:31,120 –> 00:10:32,000
344
00:10:32,000 –> 00:10:33,680
تا بتوانید ببینید که تنها کاری که
345
00:10:33,680 –> 00:10:35,920
باید انجام دهید این است که آن را برش دهید و در
346
00:10:35,920 –> 00:10:37,440
همان فهرستی که نوت بوک jupyter شما در آن قرار دارد، بچسبانید
347
00:10:37,440 –> 00:10:39,200
، بنابراین اجازه دهید زوم کنم. در و اجازه
348
00:10:39,200 –> 00:10:41,519
دهید این را به شما نشان دهم،
349
00:10:41,519 –> 00:10:43,200
بنابراین اگر وارد movenet شدیم، اینجا جایی است که
350
00:10:43,200 –> 00:10:44,880
من در حال حاضر در حال کار هستم، آن را به حداقل برسانید، بنابراین
351
00:10:44,880 –> 00:10:46,240
می توانید ببینید که من قبلاً آن را
352
00:10:46,240 –> 00:10:48,560
در آنجا چسبانده ام، اما اگر آن را به جای آن جایگذاری کنم،
353
00:10:48,560 –> 00:10:51,600
پس اکنون ما را دریافت کرده ایم.
354
00:10:51,600 –> 00:10:52,320
مدل
355
00:10:52,320 –> 00:10:53,920
رعد و برق تک پوز یا مدل رعد و برق شبکه پوز ما که
356
00:10:53,920 –> 00:10:55,519
واقعاً میتوانیم برویم و همه اینها در واقع
357
00:10:55,519 –> 00:10:56,959
358
00:10:56,959 –> 00:10:58,880
یک تور متحرک است نه شبکه متحرک یک مدل رعد و برق شبکه متحرک است که میتوانیم
359
00:10:58,880 –> 00:11:00,880
شروع کنیم به رفتن و استفاده از
360
00:11:00,880 –> 00:11:03,600
آن، بنابراین کاری که اکنون
361
00:11:03,600 –> 00:11:04,399
میخواهیم انجام دهیم این است در واقع
362
00:11:04,399 –> 00:11:06,240
این را در نوت بوک jupyter خود بارگذاری کنید، بنابراین
363
00:11:06,240 –> 00:11:15,839
اجازه دهید
364
00:11:20,880 –> 00:11:23,839
365
00:11:23,839 –> 00:11:24,880
366
00:11:24,880 –> 00:11:26,560
367
00:11:26,560 –> 00:11:28,079
این کار را انجام
368
00:11:28,079 –> 00:11:29,600
دهیم. مدل و سپس کاری که ما انجام می
369
00:11:29,600 –> 00:11:31,360
دهیم این است که زمان ها را
370
00:11:31,360 –> 00:11:32,800
به آن اختصاص می دهیم مفسر پس بیایید در واقع
371
00:11:32,800 –> 00:11:34,640
یک قدم به عقب برگردیم و ببینیم واقعاً چه چیزی در
372
00:11:34,640 –> 00:11:35,920
اینجا نوشته ایم،
373
00:11:35,920 –> 00:11:37,440
بنابراین ابتدا آنچه را که من رفتم و انجام دادم
374
00:11:37,440 –> 00:11:38,880
یک متغیر جدید به نام
375
00:11:38,880 –> 00:11:40,720
مفسر ایجاد می کنیم و به آن به عنوان
376
00:11:40,720 –> 00:11:42,240
اپراتوری فکر کنید که در واقع با پرواز ردیف ما کار می کند.
377
00:11:42,240 –> 00:11:43,760
مدل کنید بنابراین
378
00:11:43,760 –> 00:11:45,680
مفسر در واقع به
379
00:11:45,680 –> 00:11:47,279
ما اجازه می دهد که تشخیص دهیم، بنابراین
380
00:11:47,279 –> 00:11:49,120
در این مورد خاص مدل ما است،
381
00:11:49,120 –> 00:11:49,920
382
00:11:49,920 –> 00:11:51,760
سپس چیزی که من
383
00:11:51,760 –> 00:11:54,959
رفتم و به آن اختصاص دادم tf.light.interpreter است و سپس
384
00:11:54,959 –> 00:11:56,560
از مسیر مدل عبور کرده ایم.
385
00:11:56,560 –> 00:11:57,760
آرگومان کلمه کلیدی بنابراین
386
00:11:57,760 –> 00:12:00,160
مسیر زیر خط مدل مشخص شده برابر است
387
00:12:00,160 –> 00:12:01,519
و سپس من فقط
388
00:12:01,519 –> 00:12:03,200
نام مدل دانلود شده را رد کردم که در
389
00:12:03,200 –> 00:12:04,560
این مورد
390
00:12:04,560 –> 00:12:06,399
مدل خط تیره روشن است حرکت
391
00:12:06,399 –> 00:12:08,880
زیر خط خالص زیرخط تک پوز خط زیر خط
392
00:12:08,880 –> 00:12:11,760
رعد و برق زیر خط سه نقطه نور tf
393
00:12:11,760 –> 00:12:13,360
که کمی لقمه دارد اما در این
394
00:12:13,360 –> 00:12:14,560
مورد خاص، ما فقط
395
00:12:14,560 –> 00:12:15,920
به نام مدلی
396
00:12:15,920 –> 00:12:17,680
که قرار است از آن استفاده
397
00:12:17,680 –> 00:12:18,959
کنیم، رفته ایم و سپس کاری که رفته ایم و انجام داده
398
00:12:18,959 –> 00:12:20,880
ایم این است که ده ها را از قبل تخصیص داده ایم. یا بنابراین،
399
00:12:20,880 –> 00:12:22,480
ما یک مفسر نوشتاری داریم که نقطه
400
00:12:22,480 –> 00:12:24,399
تخصیص تانسور زیرخط را نشان میدهد، بنابراین این
401
00:12:24,399 –> 00:12:25,760
کاری است که باید انجام دهید
402
00:12:25,760 –> 00:12:28,000
زمانی که از یک مدل خنک tf light استفاده میکنید،
403
00:12:28,000 –> 00:12:29,920
بنابراین مدل ما
404
00:12:29,920 –> 00:12:31,360
اکنون بارگذاری شده است، کار بعدی که
405
00:12:31,360 –> 00:12:33,120
باید انجام دهیم این است که در واقع ادامه دهید و
406
00:12:33,120 –> 00:12:34,160
برخی از تشخیصها را انجام دهید،
407
00:12:34,160 –> 00:12:35,680
بنابراین ابتدا کاری که ما انجام خواهیم داد این است که
408
00:12:35,680 –> 00:12:37,360
مطمئن شویم میتوانیم از وبکم خود فید دریافت کنیم،
409
00:12:37,360 –> 00:12:38,320
بنابراین یک حلقه
410
00:12:38,320 –> 00:12:41,040
تشخیص وبکم بسیار ساده انجام
411
00:12:41,040 –> 00:12:42,320
میدهیم که احتمالاً
412
00:12:42,320 –> 00:12:44,240
در آموزشهای قبلی بینایی رایانه دیدهاید.
413
00:12:44,240 –> 00:12:45,760
که من انجام داده ام اما در این
414
00:12:45,760 –> 00:12:53,839
مورد بیایید ادامه دهیم و
415
00:13:13,440 –> 00:13:16,800
خوب آن را بگیریم که حلقه تشخیص اولیه ما
416
00:13:16,800 –> 00:13:20,160
اکنون انجام شده است، بنابراین ما رفتیم و نوشتیم،
417
00:13:20,160 –> 00:13:21,839
معتقدم هر وقت این کار را انجام دهیم هشت خط است،
418
00:13:21,839 –> 00:13:22,560
بنابراین
419
00:13:22,560 –> 00:13:26,000
یک دو سه چهار پنج شش هفت هشت
420
00:13:26,000 –> 00:13:27,600
هشت خطوط مختلف برای اینکه بتوانید به
421
00:13:27,600 –> 00:13:29,680
وبکم ما دسترسی پیدا کنید و شناسایی بیدرنگ انجام دهید،
422
00:13:29,680 –> 00:13:30,560
423
00:13:30,560 –> 00:13:32,800
بنابراین آنچه من
424
00:13:32,800 –> 00:13:35,200
رفتم و نوشتم cap برابر است با cv2.video capture بنابراین این
425
00:13:35,200 –> 00:13:37,519
عکسبرداری میشود یا به وبکم ما متصل میشود و
426
00:13:37,519 –> 00:13:39,440
دوباره گاهی اوقات لازم است
427
00:13:39,440 –> 00:13:41,360
با این شماره در اینجا بازی کنید. به ترتیب برای اینکه
428
00:13:41,360 –> 00:13:43,519
بتوانید بروید و به وبکم خود دسترسی پیدا کنید
429
00:13:43,519 –> 00:13:44,959
و اگر میخواهید واقعاً از یک
430
00:13:44,959 –> 00:13:46,320
ویدیو برای این کار استفاده کنید، میتوانید فقط
431
00:13:46,320 –> 00:13:47,199
از
432
00:13:47,199 –> 00:13:50,079
هر نقطه عبور کنید، مثلاً mp4 است
433
00:13:50,079 –> 00:13:51,440
و در واقع میتوانید
434
00:13:51,440 –> 00:13:51,839
435
00:13:51,839 –> 00:13:54,160
با استفاده از همین کد، ویدیو را طی کنید.
436
00:13:54,160 –> 00:13:55,360
ما آن را بهعنوان
437
00:13:55,360 –> 00:13:56,880
دستگاه فیلمبرداری صفر رها
438
00:13:56,880 –> 00:13:57,839
میکنیم، سپس کاری که انجام میدهیم این است که ما به
439
00:13:57,839 –> 00:13:59,600
طور مؤثری از طریق هر
440
00:13:59,600 –> 00:14:00,160
فریمی
441
00:14:00,160 –> 00:14:01,680
که از وبکم دریافت میکنیم حلقه میزنیم، بنابراین
442
00:14:01,680 –> 00:14:03,199
بررسی میکنیم تا زمانی که
443
00:14:03,199 –> 00:14:05,040
ضبط ما باز است، بنابراین در حالی که وبکم ما فعال است
444
00:14:05,040 –> 00:14:07,440
هنوز متصل است،
445
00:14:07,440 –> 00:14:09,279
سپس کاری که میخواهیم انجام دهیم این است که
446
00:14:09,279 –> 00:14:10,959
فریم را از وبکم خود بخوانیم،
447
00:14:10,959 –> 00:14:14,079
بنابراین در حالی که نقطه cap باز است و سپس
448
00:14:14,079 –> 00:14:16,399
پرانتزها را باز میکنیم، پرانتزها و
449
00:14:16,399 –> 00:14:17,600
کولون
450
00:14:17,600 –> 00:14:19,519
را میبندیم، سپس cap.read را اجرا میکنیم و
451
00:14:19,519 –> 00:14:20,639
این
452
00:14:20,639 –> 00:14:22,800
یک فریم را از آن میخواند. وبکم ما در یک نقطه از
453
00:14:22,800 –> 00:14:24,720
زمان و سپس کاری که انجام میدهیم این است
454
00:14:24,720 –> 00:14:26,480
که نتایجی را که از
455
00:14:26,480 –> 00:14:26,880
456
00:14:26,880 –> 00:14:29,199
آن فید بهدست میآوریم باز میکنیم تا
457
00:14:29,199 –> 00:14:30,320
بتوانیم آن را بیرون
458
00:14:30,320 –> 00:14:31,760
بیاوریم و سپس کاری که انجام میدهیم این است که
459
00:14:31,760 –> 00:14:34,320
آن را ارائه میدهیم. به صفحه نمایش بنابراین cv2.iamshow و سپس
460
00:14:34,320 –> 00:14:35,760
ما در حال عبور از طریق دو
461
00:14:35,760 –> 00:14:38,079
پارامتر یا دو آرگومان، بنابراین ابتدا
462
00:14:38,079 –> 00:14:39,519
آنچه را که میخواهیم قاب ما شبیه به آن باشد نامگذاری میکنیم
463
00:14:39,519 –> 00:14:41,040
، بنابراین در این مورد، در
464
00:14:41,040 –> 00:14:42,800
نوار بالایی میبینید که میگوید movenet lightning
465
00:14:42,800 –> 00:14:44,639
زیرا این همان چیزی است که آن را در اینجا نامگذاری
466
00:14:44,639 –> 00:14:46,240
کردهایم و سپس عبور میدهیم. از طریق فریم
467
00:14:46,240 –> 00:14:47,760
یا تصویری که میخواهیم رندر کنیم، بنابراین
468
00:14:47,760 –> 00:14:49,440
چیزی که در واقع
469
00:14:49,440 –> 00:14:52,000
از cap.read از این متغیر فریم میگیریم
470
00:14:52,000 –> 00:14:52,639
، در واقع
471
00:14:52,639 –> 00:14:55,120
یک تصویر است، بنابراین تصویری است که در
472
00:14:55,120 –> 00:14:56,399
آرایههای آن نمایش داده میشود،
473
00:14:56,399 –> 00:14:58,240
بنابراین شما در واقع یک تصویر را دریافت خواهید کرد.
474
00:14:58,240 –> 00:15:01,120
تعداد کانالها من فکر
475
00:15:01,120 –> 00:15:04,160
میکنم 480 در 640 در 3 خواهد بود، بنابراین
476
00:15:04,160 –> 00:15:07,120
480 پیکسل با ارتفاع 640
477
00:15:07,120 –> 00:15:09,040
پیکسل عرض و سه کانال عمق خواهد داشت
478
00:15:09,040 –> 00:15:10,639
زیرا رنگی است
479
00:15:10,639 –> 00:15:12,639
و سپس میتوانیم از cv2.iamshow
480
00:15:12,639 –> 00:15:14,639
برای رندر کردن آن تصویر استفاده کنیم،
481
00:15:14,639 –> 00:15:17,199
سپس همه چیز زیر است. همه چیز مربوط به
482
00:15:17,199 –> 00:15:18,399
خارج شدن از این
483
00:15:18,399 –> 00:15:20,920
با ظرافت است، بنابراین آنچه که ما نوشته ایم
484
00:15:20,920 –> 00:15:22,079
cv2.whitek10 است
485
00:15:22,079 –> 00:15:25,199
و 0xf برابر با ordq است، بنابراین اساساً
486
00:15:25,199 –> 00:15:27,120
بررسی می کنیم که آیا q را روی صفحه کلیدمان زده ایم یا نه،
487
00:15:27,120 –> 00:15:29,120
بنابراین بررسی کنیم که آیا
488
00:15:29,120 –> 00:15:31,360
کلیدی را در طول فریم زده ایم یا خیر. اگر
489
00:15:31,360 –> 00:15:33,040
اینها کلید q
490
00:15:33,040 –> 00:15:35,120
باشد یا خیر دو شرط برآورده
491
00:15:35,120 –> 00:15:36,240
می شود، در واقع
492
00:15:36,240 –> 00:15:38,240
از این بالا از اینجا خارج می شود، بنابراین به
493
00:15:38,240 –> 00:15:39,360
طور موثر بررسی می شود
494
00:15:39,360 –> 00:15:40,480
که آیا ما q را روی صفحه کلید خود می زنیم یا نه
495
00:15:40,480 –> 00:15:41,680
و اگر انجام
496
00:15:41,680 –> 00:15:43,120
داد، حلقه را می بندد و
497
00:15:43,120 –> 00:15:44,399
سپس به این دو را اجرا کنید
498
00:15:44,399 –> 00:15:45,920
تا به بعد پیشرفت کند
499
00:15:45,920 –> 00:15:47,920
و cap.release را اجرا کنید تا وبکم ما آزاد شود
500
00:15:47,920 –> 00:15:51,680
و سپس cv2.destroy یا ویندوز
501
00:15:51,680 –> 00:15:53,199
را اجرا کنید تا قاب بسته شود، بنابراین بیایید در
502
00:15:53,199 –> 00:15:54,720
واقع این را آزمایش کنیم و مطمئن شویم که
503
00:15:54,720 –> 00:15:56,240
همه در حال اجرا هستند،
504
00:15:56,240 –> 00:15:57,600
بنابراین اگر این را اجرا کنیم باید یک
505
00:15:57,600 –> 00:15:58,959
به سمت پایین
506
00:15:58,959 –> 00:16:00,160
صفحه نمایش
507
00:16:00,160 –> 00:16:01,759
که فید وبکم شماست، بالا میآید،
508
00:16:01,759 –> 00:16:03,360
بنابراین ما فید وبکم خود را دریافت کردهایم.
509
00:16:03,360 –> 00:16:05,519
510
00:16:05,519 –> 00:16:06,880
511
00:16:06,880 –> 00:16:08,560
512
00:16:08,560 –> 00:16:11,040
آماده برای رفتن هستیم، بنابراین کاری که اکنون باید انجام دهیم این است که
513
00:16:11,040 –> 00:16:11,680
در واقع برویم
514
00:16:11,680 –> 00:16:15,600
و از مدل رعد و برق خودمان در حالت تک ژست خود استفاده کنیم
515
00:16:15,600 –> 00:16:16,959
تا واقعاً برویم و تشخیص
516
00:16:16,959 –> 00:16:17,920
پوز خود را انجام دهیم،
517
00:16:17,920 –> 00:16:19,759
بنابراین بیایید در واقع این را ببندیم به
518
00:16:19,759 –> 00:16:21,519
یاد داشته باشید که اگر q را روی صفحه کلید بزنم،
519
00:16:21,519 –> 00:16:22,000
آن را بسته
520
00:16:22,000 –> 00:16:23,920
میشود و شما میتوانیم ببینیم که به نام
521
00:16:23,920 –> 00:16:26,320
movenet lightning در اینجا است،
522
00:16:26,320 –> 00:16:29,600
بنابراین اجازه دهید q را بزنیم تا بسته شود،
523
00:16:29,600 –> 00:16:31,279
سپس کاری که باید انجام دهیم این است که در واقع
524
00:16:31,279 –> 00:16:32,880
به جلو برویم و شروع به تشخیص خود کنیم،
525
00:16:32,880 –> 00:16:33,199
بنابراین
526
00:16:33,199 –> 00:16:34,480
کاری که میخواهیم انجام دهیم این است که
527
00:16:34,480 –> 00:16:36,240
فضای کمی برای خودمان ایجاد کنیم.
528
00:16:36,240 –> 00:16:36,959
از این حلقه
529
00:16:36,959 –> 00:16:38,079
و سپس ما شروع به انجام این کار می کنیم،
530
00:16:38,079 –> 00:16:40,639
بنابراین بیایید این کار را انجام
531
00:16:43,759 –> 00:16:45,839
دهیم تا سه کار کلیدی وجود داشته باشد
532
00:16:45,839 –> 00:16:47,360
که باید در داخل حلقه تشخیص خود انجام دهیم،
533
00:16:47,360 –> 00:16:48,880
بنابراین ابتدا آنچه باید
534
00:16:48,880 –> 00:16:50,000
انجام دهیم این است
535
00:16:50,000 –> 00:16:52,399
که تصویر خود را تغییر شکل دهیم زیرا به یاد داشته باشید مدل pose net
536
00:16:52,399 –> 00:16:54,399
قرار است باشد یا مدل movenet ما
537
00:16:54,399 –> 00:16:56,399
انتظار ورودی
538
00:16:56,399 –> 00:16:59,680
با اندازه 192 در 192×3 را دارد، بنابراین می توانید
539
00:16:59,680 –> 00:17:00,639
ببینید که در آنجا وجود دارد،
540
00:17:00,639 –> 00:17:02,480
بنابراین ما باید تصویر خود را تغییر شکل دهیم تا در
541
00:17:02,480 –> 00:17:03,920
آن فرمت باشد، بنابراین بیایید ابتدا برویم و این کار را انجام دهیم.
542
00:17:03,920 –> 00:17:19,839
بالا
543
00:17:20,160 –> 00:17:23,760
اوه خوب این تغییر شکل تصویر ما است، بنابراین
544
00:17:23,760 –> 00:17:25,280
ما رفتیم و چند کار را در آنجا انجام دادیم
545
00:17:25,280 –> 00:17:25,919
،
546
00:17:25,919 –> 00:17:27,599
بنابراین ابتدا آنچه انجام دادیم و انجام
547
00:17:27,599 –> 00:17:29,760
دادیم این است که رفته ایم و تصویر خود را کپی کرده ایم، بنابراین بیایید در
548
00:17:29,760 –> 00:17:31,039
واقع نگاهی به این کار بیندازیم.
549
00:17:31,039 –> 00:17:32,559
اگر
550
00:17:32,559 –> 00:17:34,400
همین الان تایپ کنم به یاد بیاور وقتی می رویم و
551
00:17:34,400 –> 00:17:35,760
حلقه خود را اجرا می کنیم میتوانیم از این تشخیص به
552
00:17:35,760 –> 00:17:37,039
آخرین فریم خود دسترسی پیدا کنیم،
553
00:17:37,039 –> 00:17:38,799
بنابراین اگر من
554
00:17:38,799 –> 00:17:41,120
واقعاً برچسب نمودار نقشه را
555
00:17:41,120 –> 00:17:44,840
تایپ کنم، نشان میدهم و اگر از فریم خود عبور کنیم،
556
00:17:44,840 –> 00:17:46,160
557
00:17:46,160 –> 00:17:48,000
میتوانید ببینید که این آخرین فریم
558
00:17:48,000 –> 00:17:49,760
ما است که اکنون در حال انجام آن هستیم. برای انجام این کار این است که در این
559
00:17:49,760 –> 00:17:51,679
سه خط ابتدا
560
00:17:51,679 –> 00:17:54,240
قاب خود را کپی کنیم،
561
00:17:54,400 –> 00:17:56,640
اجازه دهید یک سلول جدید در اینجا اضافه
562
00:17:56,640 –> 00:17:57,679
کنم تا تصویر
563
00:17:57,679 –> 00:17:59,679
برابر با نقطه کپی فریم را اجرا کنیم، بنابراین این
564
00:17:59,679 –> 00:18:01,520
تصویر ما را کپی می کند و اگر برویم و
565
00:18:01,520 –> 00:18:02,240
این را
566
00:18:02,240 –> 00:18:04,640
به تابع matplotlib ما ارسال کنید، میتوانید
567
00:18:04,640 –> 00:18:06,400
دقیقاً همان تصویر را در آنجا ببینید،
568
00:18:06,400 –> 00:18:07,840
سپس کاری که میخواهیم انجام دهیم این
569
00:18:07,840 –> 00:18:09,840
است که اندازه تصویر خود را تغییر میدهیم
570
00:18:09,840 –> 00:18:11,600
تا کاری که
571
00:18:11,600 –> 00:18:13,280
میخواهیم انجام دهیم این است که
572
00:18:13,280 –> 00:18:15,600
تصویر نقطهای را بنویسیم. نقطه زیر خط را با صفحه زیر خط تغییر اندازه می
573
00:18:15,600 –> 00:18:16,799
574
00:18:16,799 –> 00:18:18,480
دهیم و سپس ما در واقع ابتدا
575
00:18:18,480 –> 00:18:20,320
تصویر خود را استخراج می کنیم، بنابراین اگر تایپ
576
00:18:20,320 –> 00:18:22,160
کنیم،
577
00:18:22,160 –> 00:18:24,320
آن را در یک آرایه دیگر نیز کپسوله می کنیم،
578
00:18:24,320 –> 00:18:26,840
بنابراین اگر من واقعاً در
579
00:18:26,840 –> 00:18:28,880
np.expandium تایپ کردم، اجازه دهید در واقع نگاهی بیندازیم.
580
00:18:28,880 –> 00:18:30,480
در تصویر ما ابتدا
581
00:18:30,480 –> 00:18:32,799
image.shape را شکل دهید، بنابراین می توانید ببینید که
582
00:18:32,799 –> 00:18:36,320
اکنون 480 در 640×3 است بنابراین 480 پیکسل است.
583
00:18:36,320 –> 00:18:38,080
عرض 640 پیکسل بالا
584
00:18:38,080 –> 00:18:40,240
و عمق سه پیکسل برای نشان دادن
585
00:18:40,240 –> 00:18:41,440
کانال های مختلف ما،
586
00:18:41,440 –> 00:18:43,360
سپس کاری که ما در واقع
587
00:18:43,360 –> 00:18:44,960
برای تغییر اندازه باید انجام دهیم این
588
00:18:44,960 –> 00:18:46,720
است که باید آن را در یک آرایه دیگر کپسوله کنیم،
589
00:18:46,720 –> 00:18:48,480
590
00:18:48,480 –> 00:18:50,799
بنابراین برای انجام این کار می توانیم از np.expand dim استفاده کنیم،
591
00:18:50,799 –> 00:18:55,120
بنابراین اجازه دهید من به شما نشان می دهم که بنابراین np.expand
592
00:18:55,520 –> 00:18:59,200
که از محور تصویر ما عبور کنید برابر با صفر است،
593
00:18:59,200 –> 00:19:02,240
بنابراین اگر اکنون به شکل خود نگاهی بیندازیم،
594
00:19:02,240 –> 00:19:04,320
می توانید ببینید که در واقع در
595
00:19:04,320 –> 00:19:06,480
داخل یک آرایه دیگر محصور شده است، بنابراین همه
596
00:19:06,480 –> 00:19:08,799
این کارها در اینجا انجام می شود، پس ما
597
00:19:08,799 –> 00:19:10,679
واقعاً داریم انجام می دهیم در داخل آن
598
00:19:10,679 –> 00:19:12,640
tf.image.resize با تابع pad این است
599
00:19:12,640 –> 00:19:13,600
که ما بعد جدید را مشخص می کنیم،
600
00:19:13,600 –> 00:19:15,120
بنابراین در
601
00:19:15,120 –> 00:19:17,440
این مورد 192 در 192 خواهد بود.
602
00:19:17,440 –> 00:19:19,200
بنابراین اگر ما واقعاً برویم و این خط را
603
00:19:19,200 –> 00:19:21,440
اینجا اجرا کنیم
604
00:19:23,280 –> 00:19:24,640
و اگر برویم و نگاهی به آن بیندازیم.
605
00:19:24,640 –> 00:19:26,400
تصویر ما اکنون
606
00:19:26,400 –> 00:19:28,320
در حال اجرا نیست، اوه ما باید
607
00:19:28,320 –> 00:19:30,039
این را استخراج کنیم،
608
00:19:30,039 –> 00:19:33,039
609
00:19:36,720 –> 00:19:39,760
بنابراین mp.squeeze چه کردهایم، بنابراین، این
610
00:19:39,760 –> 00:19:42,080
اکنون یک تانسور است، بنابراین در این مورد خاص
611
00:19:42,080 –> 00:19:46,960
باید برویم و آن را به یک تبدیل کنیم.
612
00:19:46,960 –> 00:19:48,400
به یک عدد صحیح، بنابراین اجازه دهید در واقع برویم و
613
00:19:48,400 –> 00:19:53,840
این را تغییر دهیم تا اگر من بروم و cas کنم
614
00:19:54,640 –> 00:19:56,400
بنابراین می توانید ببینید که تصویر ما اکنون رفته
615
00:19:56,400 –> 00:19:59,039
و تغییر شکل داده است، بنابراین اکنون 192 در 192 است
616
00:19:59,039 –> 00:20:00,640
.
617
00:20:00,640 –> 00:20:03,679
اکنون کاری که اکنون باید انجام دهیم این است که برویم و
618
00:20:03,679 –> 00:20:05,120
ورودی و خروجی خود را تنظیم کنیم، اجازه دهید در واقع
619
00:20:05,120 –> 00:20:06,480
به آخرین خط آنجا نگاهی بیندازیم.
620
00:20:06,480 –> 00:20:07,760
برو و آن را پخش کن،
621
00:20:07,760 –> 00:20:09,039
بنابراین کاری که رفتیم و انجام دادیم این
622
00:20:09,039 –> 00:20:10,880
است که تصویر زیر خط ورودی
623
00:20:10,880 –> 00:20:13,440
برابر با tf.cast نوشته ایم و سپس
624
00:20:13,440 –> 00:20:14,559
از تصویر خود عبور
625
00:20:14,559 –> 00:20:16,799
کرده ایم و رفته ایم و نوع داده خود را مشخص
626
00:20:16,799 –> 00:20:18,559
کرده ایم که تصویر خود را می خواهیم. به
627
00:20:18,559 –> 00:20:20,880
عنوان float32 باشد، بنابراین اگر واقعاً به
628
00:20:20,880 –> 00:20:21,600
629
00:20:21,600 –> 00:20:23,919
داخل کارت مدل ما نگاهی بیندازید، در واقع
630
00:20:23,919 –> 00:20:24,640
به ما می گوید
631
00:20:24,640 –> 00:20:26,720
که ما نیاز داریم که داده هایمان به صورت شناور نمایش داده شوند
632
00:20:26,720 –> 00:20:28,159
،
633
00:20:28,159 –> 00:20:29,679
بنابراین در این مورد خاص این
634
00:20:29,679 –> 00:20:32,720
دقیقاً همان چیزی است که ما رفته ایم و اکنون اینجا انجام داده ایم.
635
00:20:32,720 –> 00:20:34,240
کاری که ما باید انجام دهیم این است که
636
00:20:34,240 –> 00:20:35,760
در واقع به جلو برویم و
637
00:20:35,760 –> 00:20:37,280
ورودی و خروجی خود را تنظیم کنیم
638
00:20:37,280 –> 00:20:39,360
و این بخشی از کار با
639
00:20:39,360 –> 00:20:40,880
مترجم پرواز ردیف است، بنابراین بیایید در
640
00:20:40,880 –> 00:20:49,840
واقع برویم و آن را به
641
00:20:50,640 –> 00:20:53,600
خوبی انجام دهیم تا ورودی و جزئیات خروجی ما باشد
642
00:20:53,600 –> 00:20:54,320
643
00:20:54,320 –> 00:20:56,080
تا به طور موثری انجام شود. فقط می رویم
644
00:20:56,080 –> 00:20:57,600
و جزئیات ورودی و خروجی خود را
645
00:20:57,600 –> 00:20:59,200
از ou دریافت می کنیم مفسر r tflight، بنابراین اجازه دهید در
646
00:20:59,200 –> 00:21:00,400
واقع به آن نگاهی بیندازیم،
647
00:21:00,400 –> 00:21:04,640
بنابراین جزئیات ورودی را دریافت
648
00:21:04,640 –> 00:21:06,559
کنید تا بتوانید ببینید که این
649
00:21:06,559 –> 00:21:08,559
ساختار خروجی است که ما در واقع
650
00:21:08,559 –> 00:21:09,039
651
00:21:09,039 –> 00:21:11,919
از دادههای خود یا از مدل خود دریافت میکنیم،
652
00:21:11,919 –> 00:21:13,200
653
00:21:13,200 –> 00:21:14,960
پس از اینکه آن را اجرا کردیم، بنابراین این نشان میدهد جزئیات ورودی خود را به
654
00:21:14,960 –> 00:21:16,559
ما می دهیم و می توانیم به جزئیات خروجی خود نگاهی بیندازیم
655
00:21:16,559 –> 00:21:18,559
و همچنین
656
00:21:18,559 –> 00:21:20,080
می توانید ببینید که
657
00:21:20,080 –> 00:21:22,480
آرایه ای به شکل کاما 1 117
658
00:21:22,480 –> 00:21:26,159
659
00:21:26,159 –> 00:21:27,280
را برمی گردانیم.
660
00:21:27,280 –> 00:21:29,200
پیشبینی کنید، پس بیایید ادامه دهیم
661
00:21:29,200 –> 00:21:45,840
و این کار را درست انجام دهیم
662
00:21:46,400 –> 00:21:49,360
و این آخرین بلوک کد ما است که
663
00:21:49,360 –> 00:21:50,559
در واقع ادامه میدهیم و پیشبینیهایمان را انجام میدهیم،
664
00:21:50,559 –> 00:21:51,520
665
00:21:51,520 –> 00:21:53,360
بنابراین کاری که در واقع انجام میدهیم این
666
00:21:53,360 –> 00:21:55,679
است که جزئیات ورودی خود را برابر با تصویر ورودی خود تنظیم میکنیم.
667
00:21:55,679 –> 00:21:56,640
668
00:21:56,640 –> 00:21:58,720
ما سپس پیشبینی خود را فراخوانی میکنیم و
669
00:21:58,720 –> 00:22:00,080
سپس کاری که انجام میدهیم این است
670
00:22:00,080 –> 00:22:01,520
که جزئیات خروجی خود را دریافت میکنیم، بنابراین بیایید در واقع
671
00:22:01,520 –> 00:22:03,280
نگاهی به نحوه انجام این کار بیندازیم،
672
00:22:03,280 –> 00:22:04,559
بنابراین ابتدا آنچه را که من نوشتم،
673
00:22:04,559 –> 00:22:07,360
تانسور زیر خطی مجموعه نقطهای مترجم است
674
00:22:07,360 –> 00:22:09,200
و سپس به که ما آن را در
675
00:22:09,200 –> 00:22:10,640
جزئیات ورودی می گیریم، بنابراین اجازه دهید عمل کنیم متحد
676
00:22:10,640 –> 00:22:12,640
نگاه کنید که ما چه می کنیم، بنابراین
677
00:22:12,640 –> 00:22:14,799
جزئیات ورودی را دریافت کنید، بنابراین کاری که ما انجام می
678
00:22:14,799 –> 00:22:16,640
دهیم این است که اولین شاخص خود را می گیریم و
679
00:22:16,640 –> 00:22:17,200
680
00:22:17,200 –> 00:22:20,159
این شاخص را در اینجا تنظیم می کنیم تا با تصویر ورودی ما برابری کند،
681
00:22:20,159 –> 00:22:21,919
بنابراین جزئیات ورودی تانسور مجموعه نقطه مفسر
682
00:22:21,919 –> 00:22:23,679
و سپس ما
683
00:22:23,679 –> 00:22:26,240
از شاخص 0 و کلید ایندکس
684
00:22:26,240 –> 00:22:28,240
عبور می کنیم و سپس از تصویر ورودی خود عبور می کنیم
685
00:22:28,240 –> 00:22:29,840
که در این حالت در
686
00:22:29,840 –> 00:22:30,880
داخل یک آرایه numpy پیچیده شده ایم
687
00:22:30,880 –> 00:22:33,679
بنابراین mp.array و سپس
688
00:22:33,679 –> 00:22:35,360
از تصویر ورودی خود عبور می کنیم
689
00:22:35,360 –> 00:22:38,280
از اینجا بالا بود، سپس interpreter.invoke را اجرا میکنیم
690
00:22:38,280 –> 00:22:39,520
691
00:22:39,520 –> 00:22:40,880
و این در واقع
692
00:22:40,880 –> 00:22:42,799
ادامه مییابد و پیشبینیهایمان
693
00:22:42,799 –> 00:22:44,320
را انجام میدهیم و سپس نتایج خود را برمیگردانیم
694
00:22:44,320 –> 00:22:45,840
، بنابراین نقاط کلیدی را
695
00:22:45,840 –> 00:22:48,000
با زیرخط با امتیاز زیر خطی که ایجاد میکنیم اجرا میکنیم.
696
00:22:48,000 –> 00:22:49,280
یک متغیر جدید
697
00:22:49,280 –> 00:22:50,720
و ما آن را برابر با
698
00:22:50,720 –> 00:22:53,440
نقطه مفسر تنظیم میکنیم که جزئیات خروجی تانسور زیرخط را نشان میدهد،
699
00:22:53,440 –> 00:22:55,760
بنابراین چیزی که در
700
00:22:55,760 –> 00:22:57,120
واقع به دست میآوریم این است که وقتی
701
00:22:57,120 –> 00:22:58,960
از جزئیات ورودی خود
702
00:22:58,960 –> 00:23:00,400
عبور میکنیم، از تصویر ورودی خود عبور میکنیم و سپس اگر
703
00:23:00,400 –> 00:23:02,559
برویم برای دریافت جزئیات خروجی
704
00:23:02,559 –> 00:23:04,799
این شاخص موثر است عملاً
705
00:23:04,799 –> 00:23:06,640
نتیجه خروجی خود را نگه
706
00:23:06,640 –> 00:23:09,120
میداریم، بنابراین اکنون کاری که میتوانیم انجام دهیم این است که برویم و
707
00:23:09,120 –> 00:23:09,919
این را اجرا کنیم
708
00:23:09,919 –> 00:23:12,240
تا آخرین خطی که در واقع اضافه
709
00:23:12,240 –> 00:23:14,240
کردم چاپ بود و سپس نقاط کلیدی زیرخط
710
00:23:14,240 –> 00:23:16,080
با امتیازهای زیرخط که این
711
00:23:16,080 –> 00:23:17,600
خط در اینجا بسیار مؤثر
712
00:23:17,600 –> 00:23:19,679
است در ابتدا نتایج خود را چاپ می کنیم،
713
00:23:19,679 –> 00:23:21,679
اما زمانی که به مرحله سوم و
714
00:23:21,679 –> 00:23:23,360
چهارم رسیدیم، در واقع می توانیم
715
00:23:23,360 –> 00:23:25,280
این نتایج را تجسم کنیم، بنابراین در واقع رندر خواهیم کرد،
716
00:23:25,280 –> 00:23:28,159
بنابراین بیایید این را اکنون اجرا کنیم
717
00:23:28,159 –> 00:23:29,760
و همه چیزها برابر باشند،
718
00:23:29,760 –> 00:23:33,120
باید برخی از تشخیص ها را چاپ کنیم.
719
00:23:33,120 –> 00:23:34,799
عالی است، بنابراین می توانید ببینید که فریم ما
720
00:23:34,799 –> 00:23:37,039
هنوز در حال اجرا است و در داخل اینجا ما در
721
00:23:37,039 –> 00:23:39,120
واقع نتایج تشخیص خود را به درستی دریافت می کنیم،
722
00:23:39,120 –> 00:23:39,600
723
00:23:39,600 –> 00:23:40,880
بنابراین در حال حاضر نمی توانید چیزی
724
00:23:40,880 –> 00:23:42,400
را روی صفحه نمایش رندر کنید زیرا ما رندر نمی کنیم
725
00:23:42,400 –> 00:23:43,279
که
726
00:23:43,279 –> 00:23:45,600
اشکالی ندارد اما می خواهیم رندر خود را انجام دهید تا
727
00:23:45,600 –> 00:23:47,520
بتوانیم عملاً از این کار خارج شویم،
728
00:23:47,520 –> 00:23:48,840
بیایید در واقع به نتایج خود نگاهی بیندازیم،
729
00:23:48,840 –> 00:23:50,559
بنابراین
730
00:23:50,559 –> 00:23:52,320
به یاد داشته باشید که می توانیم آخرین مجموعه
731
00:23:52,320 –> 00:23:53,679
متغیرها را از این
732
00:23:53,679 –> 00:23:55,600
حلقه تشخیص بگیریم، بنابراین اگر واقعاً
733
00:23:55,600 –> 00:23:57,520
این متغیر را در اینجا کپی کنیم،
734
00:23:57,520 –> 00:23:59,919
این در واقع ou است r مجموعه ای از نتایج،
735
00:23:59,919 –> 00:24:01,760
بنابراین امتیازات کلیدی ما در حال حاضر است، اگر
736
00:24:01,760 –> 00:24:04,960
ما واقعاً به شکل نگاهی بیندازیم،
737
00:24:04,960 –> 00:24:07,600
می توانید ببینید که دقیقاً همانطور که tflight
738
00:24:07,600 –> 00:24:08,080
گفته شده است،
739
00:24:08,080 –> 00:24:09,760
بنابراین به شکل 1
740
00:24:09,760 –> 00:24:12,480
کاما 1 کاما 17 کاما 3
741
00:24:12,480 –> 00:24:15,679
دقیقاً همان چیزی است که بود. اکنون در اینجا توضیح داده شده
742
00:24:15,679 –> 00:24:17,840
است تا این نتایج را به دست آوریم آنچه
743
00:24:17,840 –> 00:24:18,960
که می توانیم انجام دهیم این است
744
00:24:18,960 –> 00:24:22,240
که آرایه اول را بگیریم و سپس آرایه دوم را بگیریم
745
00:24:22,240 –> 00:24:23,919
و سپس اینها همه نشانه های مختلف ما هستند
746
00:24:23,919 –> 00:24:25,360
اکنون
747
00:24:25,360 –> 00:24:27,440
اغلب سوالاتی برایم پیش می آید که چگونه
748
00:24:27,440 –> 00:24:29,679
می توانم این نقطه عطف را بگیرم یا چگونه انجام دهم. من
749
00:24:29,679 –> 00:24:31,120
آن نقطه عطف را می گیرم یا چگونه می توانم این
750
00:24:31,120 –> 00:24:32,400
نقطه عطف را به خوبی
751
00:24:32,400 –> 00:24:34,159
752
00:24:34,159 –> 00:24:36,559
753
00:24:36,559 –> 00:24:38,320
بگیرم، هر یک از این نتایج در اینجا نشان دهنده برچسب های یک نقطه عطف خاص است، اکنون اگر واقعاً به آن نگاهی بیندازید،
754
00:24:38,320 –> 00:24:39,200
755
00:24:39,200 –> 00:24:41,679
در واقع به شما دستور می دهد، بنابراین اگر ما
756
00:24:41,679 –> 00:24:44,640
واقعاً به این آرایه نگاهی بیندازیم در اینجا
757
00:24:44,640 –> 00:24:46,720
می توانید ببینید که در این مورد خاص
75