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