مدت :

۳ ساعت

قیمت : ۷۵,۰۰۰ تومان
به‌روزرسانی: تیرماه ۱۴۰۲
LinkedIn
Twitter
Facebook
Telegram

درباره مدرس 

اطلاعات دوره

توضیحات

این آموزش YOLO v3 در واقع بخشی از این بسته آموزش بینایی کامپیوتر است که مستقل هم می‌توانید استفاده کنید. این آموزش خیلی سریع و الیته اصولی شما را وارد موضوع می‌کند. در این آموزش یولو به نسخه سوم می‌پردازیم که آخرین نسخه رسمی آن است. نه تنها یولو، بلکه آموزش تشخیص اشیا با پایتون در OpenCV و آشنایی اصولی با دنیای Object Detection هدف این آموزش است.

 

تشخیص اشیا چیست؟

تشخیص اشیا (+) به انگلیسی Object Detection یکی از حوزه‌های بینایی ماشین است. در این حوزه تلاش بر این است که ماشین‌ها بتوانند تصویر دنیای پیرامون خود یا جهان مجازی را دریافت و پردازش کنند. ماشین‌ها باید بتوانند محل اشیای پیرامون خود و نیز نوع آن‌ها را تشخیص دهند.

 

الگوریتم YOLO چیست؟

بیایید در یک نگاه ببینیم الگوریتم یولو چیست؟ یولو در سال 2016 توسط آقای جوزف ردمون (+) برای تشخیص اشیا با سرعت بالا معرفی شد. پیش از YOLO روش‌های مبتنی بر Classifier ها دقت مناسب اما سرعت پایینی داشتند. در این روش‌ها ابتدا ناحیه‌هایی از شکل (مثلا 2000 ناحیه) نامزد وجود یک شی می‌شدند و بعد به تعداد این ناحیه‌ها فرآیند شبکه عصبی عمیق اجرا می‌شد تا کلاس شی تشخیص داده شود. این کار را کند می‌کرد.

در یولو اما نگاه تازه‌ای ارائه شد. یولو مخفف عبارت You Only Look Ones است. در الگوریتم یولو تمام پیکسل‌های تصویر یکباره تحویل یک ساختار شبکه عصبی عمیق (معماری DarkNet) می‌شود. خروجی این شبکه به صورت یکجا، شامل موقعیت و نوع آبجکت‌ها (اشیا) در تصویر است. به این ترتیب اجرای یولو بسیار سریع‌تر می‌شود. این روند در این بسته آموزشی به صورت دقیق‌تر توضیح داده شده است.

 

نسخه‌های یولو؟ کدام ورژن یولو بهتر است؟

پس از انتشار نسخه اول در سال 2016 آقای ردمون به کار روی یولو ادامه داد. نسخه‌های YOLO v2 و YOLO v3 در سال‌های 2017 و 2018 منتشر شدند. سپس آقای ردمون در توییتی به دلیل نگرانی از سوء استفاده‌های احتمالی، از ادامه راه انصراف دادند. با این حال از آنجا که یولو متن باز بود، در سال 2020 به فاصله چند ماه از هم سه نسخه YOLO v4 و YOLO v5 و PP-YOLO توسط اشخاص دیگری منتشر شد.

در این دوره به آموزش YOLO v3 می‌پردازیم که آخرین نسخه آقای ردمون است. با این حال خبرهای خوبی از سرعت و دقت یولوهای دیگر منتشر شده که منابع لازم در خلال این آموزش برای علاقه‌مندان معرفی می‌شود.

 

این آموزش YOLO در یک نگاه

این آموزش یولو شما را وارد دنیای تشخیص اشیا می‌کند. به ظاهر فقط به آموزش تشخیص اشیا با پایتون در OpenCV می‌پردازیم. اما در واقع مفاهیم را هم با دقت توضیح می‌دهیم تا شما یک ورود به حوزه Object Detection را به طور کلی تجربه کنید.

برای مثال وقتی به پارامترهایی مثل mAP یا IoU یا دیگران می‌رسیم رد نمی‌شویم. از خود می‌پرسیم که mAP چیست؟ معنی IoU چیست؟ و در مورد آن‌ها با تصاویر متعدد صحبت می‌کنیم.

در این آموزش یاد می‌گیرید که یک اسکریپت پایتونی بسازید که بتواند ورودی وبکم را دریافت و پردازش کند. محل و نوع اشیا را نیز تشخیص دهد.

نکته مهم این است که یولو با هر دیتاستی که تعلیم ببیند می‌تواند آبجکت‌های متعلق به آن دیتاست را تشخیص دهد. در این آموزش یولو از نسخه تعلیم یافته با دیتاست کوکو (COCO Dataset) استفاده می‌کنیم. این دیتاست 80 نوع آبجکت را دسته‌بندی کرده است. برای شخصی سازی یولو، پس از این آموزش می‌توانید این آموزش تشخیص اشیای سفارشی با YOLO را ببینید.

ما یولوی تعلیم یافته را وارد پروژه خود می‌کنیم. ورودی دوربین را فریم به فریم به آن می‌دهیم. خروجی یولو را پردازش می‌کنیم و سرانجام روی فریم‌ها نمایش می‌دهیم.

در هر بخش سعی می‌کنیم علاوه بر اجرای پروژه، مثل همیشه مفهوم‌ها را به زبانی ساده و انگیزه‌بخش بیان کنیم.

 

این آموزش یولو بی‌نظیر است زیرا:

مفهوم‌ها را کنار کدنویسی به زبان ساده می‌آموزید.

تشخیص اشیا حوزه بسیار پرکاربردی است.

یولو یک الگوریتم سریع با دقت قابل قبول در تشخیص اشیا است.

با یک کاربرد دیگر از یادگیری عمیق آشنا می‌شوید.

 

پیشنیاز

آموزش OpenCV با پایتون – شروع سریع و عمیق پردازش تصویر (+)

 

کلیدواژگان

تشخیص اشیا – بینایی کامپیوتر – آموزش YOLO – آموزش یولو ورژن 3 – آموزش Yolo v3 – آموزش تشخیص اشیا با پایتون در OpenCV – آموزش تشخیص اشیا – الگوریتم یولو چیست؟ – کدام ورژن یولو ؟ – mAP چیست؟ – معنی IoU چیست؟ – معنی Blob چیست؟ – معماری DarkNet چیست؟

سرفصل مطالب

سرفصل مطالب

درس صفر – معرفی دوره
– نگاهی به پروژه این دوره
– نگاه سریع به مراحل آموزش
– پیشنیاز این آموزش

درس یکم – تشخیص اشیا چیست؟ یولو چیست؟
– تشخیص اشیا چیست؟
– معنی Object Detection در بینایی کامپیوتر
– الگوریتم YOLO چیست؟
– فرق الگوریتم YOLO و R-CNN
– الگوریتم یولو چطور کار می کند؟
– تاریخچه توسعه Yolo
– فرق YOLO v3 و YOLO v4
– کدام ورژن یولو بهتر است؟
– معرفی منابع مطالعاتی بیشتر

درس دوم – ایجاد پروژه و شروع کدنویسی
– معرفی ابزار لازم
– ایجاد پروژه و محیط مجازی
– نصب کتابخانه opencv-python و numpy
– دریافت ورودی وبکم و نمایش توسط cv2.imread
– توضیح پیرامون تبدیل گوشی اندروید به وبکم

درس سوم – معرفی و فراخوانی COCO Dataset
– این که کامپیوتر یاد بگیرد ببیند یعنی چه؟
– آشنایی با مجموعه داده کوکو از مایکروسافت
– فراخوانی نام کلاس های اشیا از دیتاست COCO
– استخراج نام کلاس ها در بلاک with با متدهای rstrip و split
– مفهوم استفاده از n در فراخوانی تابع rstrip و split
– نمایش نام و تعداد دسته‌ها برای اطمینان از تجزیه درست فایل

درس چهارم – فراخوانی معماری یولو
– معماری یولو به زبان ساده
– مفهوم Grid Cell در یولو
– مفهوم ماتریس 13 در 13 خروجی
– یولو چطور تعلیم می بیند؟
– مفهوم سه مقیاس پیش بینی یولو
– مفهوم yolov3-320 و yolov3-608 و yolov3-tiny
– دانلود وزن ها و تنظیمات شبکه های عصبی یولو
– نکته مهم در باره تنظیمات یولو در رزولوشن های مختلف

درس پنجم – متوسط دقت یا mAP چیست؟
– معنی IoU یا Intersection over Union چیست؟
– معنی True Positive و False Positive با یک مثال
– معنی True Negative و False Negative
– محاسبه دقت یا Precision تشخیص اشیا
– محاسبه فراخوانی یا Recall در تشخیص اشیا
– محاسبه Mean Harmonic یا پارامتر F1
– درک محاسبه mAP با یک مثال
– درک مفهوم AP یا Average precision for class
– محاسبه mAP به صورت انتگرالی
– محاسبه mAP بر اساس استاندارد COCO
– مفهوم mAP@0٫5 و مفهوم mAP@[0٫5:0٫95] – مفهوم AP small و AP medium و AP Large

درس ششم – ساخت دارک نت با ماژول شبکه‌های عصبی عمیق OpenCV
– ایجاد مدل دارک نت با تابع readNetFromDarknet
– تنظیم بک اند پردازشی با setPreferableBackend
– تنظیم مقصد پردازشی با setPreferableTarget
– مفهوم DNN_BACKEND_OPENCV و DNN_BACKEND_CUDA
– مفهوم DNN_TARGET_CPU و DNN_TARGET_OPENCL
– معرفی OpenVINO و کارکرد آن از شرکت اینتل (Intel)
– معرفی CUDA و کارکرد آن از شرکت انویدیا (NVIDIA)
– تفاوت پردازش یولو با CPU و GPU

درس هفتم – ورود تصویر به شبکه
– معنی Blob چیست؟
– مفهوم و کاربرد Blob Detection در OpenCV چیست؟
– معرفی تابع‌های استخراج Blob در ماژول dnn
– تفاوت blobFromImage و blobFromImages
– مفهوم scaleFactor در تابع blobFromImage
– مفهوم mean و size در تابع blobFromImage
– کاربرد Mean Subtraction در شبکه های عصبی عمیق مثل imageNet
– مفهوم پارامتر crop و ddepth در تابع blobFromImage
– تحلیل blob به کمک حلقه for و تابع enumerate در پایتون
– وارد کردن بلاب به شبکه دارک نت با تابع setInput

درس هشتم – دریافت خروجی شبکه
– آشنایی با لایه های خروجی‌های یولو
– آشنایی با متد forward در کلاس Net
– آشنایی با متد getUnconnectedOutLayersNames در کلاس Net
– مفهوم خروجی Small scale و Medium Scale و Large Scale در یولو
– اجرای شبکه و دریافت و تحلیل خروجی ها

درس نهم – نمایش اشیا روی تصویر
– رفتن به درون خروجی شبکه
– شناخت ساختار ماتریس خروجی Yolo
– استخراج نتایج پیش بینی ها (Bounding Box)
– انتخاب بهترین Bounding Box با بیشترین احتمال
– حذف باکس های هم‌پوشان به روش NMS
– کار روش Non-Max Suppression چیست؟
– تابع NMSBoxes برای حذف باکس های هم پوشان
– نمایش باکس اشیا با تابع rectangle
– نمایش عنوان کلاس اشیا با putText
– توجیه هندسی Bounding Box ها
– تبدیل مختصات نسبی به مطلق در باکس ها

درس دهم – جمع‌بندی و اندیشه‌پردازی
– راهی که آمدیم
– راهی که پیش رو داریم
– اندیشه‌پردازی برای استفاده از دانسته‌ها

نظرات (59)

59 دیدگاه برای آموزش YOLO – تشخیص اشیا با پایتون در OpenCV

  1. baradmosavi1400 (خریدار محصول)

    سلام آقای آصفی
    واقعا آموزش عالی بود ولی اگه میشه لطفا درس 9 را با همان کد هایی که لینک شان را در درس 2 پیوست کردین درس بدین

    • مصطفی آصفی

      سلام و سپاس از لطفتون. راستش الان تو هم رویش مشغول پیشبرد دوره یادگیری ماشین (+)‌ و دوره مدل های زبانی هستم و یه مقدار سرم شلوغه ولی فرصتی دست بده مورد شما رو بررسی و احتمالا به روز می کنم.

  2. fatmeh.taheri.13 (خریدار محصول)

    سلام استاد وقت بخیر
    ببخشید ارور This function is deprecated. Please call randint(0, 255 + 1) instead
    COLORS = np.random.random_integers(0, 255, size=(len(coco_classes), 3))
    Traceback (most recent call last):
    File “d:\car\object.py”, line 22, in
    net = cv.dnn.readNetFromDarknet(net_config,net_weights)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    cv2.error: OpenCV(4.8.1) D:\a\opencv-python\opencv-python\opencv\modules\dnn\src\darknet\darknet_importer.cpp:210: error: (-212:Parsing error) Failed to open NetParameter file: cfg/yolov3.cfg in function ‘cv::dnn::dnn4_v20230620::readNetFromDarknet’
    را چگونه برطرف بکنم؟

    • مصطفی آصفی

      سلام وقت بخیر. هشدار اول داره می گه به جای تابع randint در خط ۲۲ فایل object.py از تابع پایین استفاده کنید:
      np.random.random_integers(0, 255, size=(len(coco_classes), 3))
      دومی اما خطا هست و احتمالا به خاطر اینه که مسیر فایل yolov3.cfg رو نمی تونه بخونه. تو کدتون مسیر فایل رو می تونید مطلق (absolute) بدین تا بتونه پیداش کنه.

  3. حجت فلاح

    بسیار سپاسگزارم از راهنماییتان ، مشکل حل شد

    • مصطفی آصفی

      سلام مجدد. ممنونم که وقت گذاشتین و اطلاع دادین.

  4. حجت فلاح

    با عرض سلام و وقت بخیر
    جناب مهندس واقعا از دوره عالی تون تشکر می کنم .
    فقط در اجرای همون کد اصلی شما یک خطا داده میشود و برنامه اجرا نمی شود، خطای زیر:

    File c:\users\asus\documents\python save\read_mobile_webcam\creatyolo3.py:51 in findObjects
    i = i[0]

    IndexError: invalid index to scalar variable.

    بنده نظراتو دیدم و دوستان دیگه هم این مشکلو داشتن و شما فقط پاسخ دادین که “یکی از دوستانتون پایین هم گزارش کرد و به فایل های دوره هم پیوست شده”
    جناب مهندس حقیقتش بنده منظور این جمله شمارو متوجه نمیشم ؟ برای حل مشکل لطفا دقیق بفرمایین چیکار کنیم؟ به فایل دوره چی پیوست شده؟ کدام فایل؟
    واقعا بنده نیاز دارم به این برنامه و بخشی از پایان نامه بنده هست ، جدا خواهش می کنم دقیق راهنمایی کنین تا خطا برطرف شده، سپاسگزارم

    • مصطفی آصفی

      سلام و سپاس. مشکل از نسخه CV شما هست. منظورم از پیوست این بود که تو فایل های دانلودی دوره بعد از دانلود درس ۲ یک فایل زیپ دارین به نام «پیوست جدید درس دوم» که داخل اون توضیح دادم و لینک مرتبط برای نحوه رفع مشکل هم اضافه کردم. یکی از فراگیران این دوره (آقای نکویی) هم نسخه روزآمدی از کدها تهیه کردن که تو مخزن گیت هاب پروژه هم قبلا لینک داده بودم منتها چون ظاهرا گویا نیست لینک مخزن ایشون رو هم همین لحظه به همون فایل پیوست درس ۲ اضافه کردم. اگر چه که با بررسی همین لینک استک اورفلو (+) که داخل روزآمدی هم گفتم به راحتی می تونین مشکل رو حل کنید.

      پی نوشت: این مشکل رو رو به صورت موردی حل نکردم چون موارد از این دست با تغییر ورژن باز هم ممکنه پیش روی شما بیان و حتی کسانی باشن که گزارش هم نکنن. با ارجاع دادن فراگیران به است اورفلو شما بیشتر یاد می گیرن که آموزش ها (خواه هم رویش و خواه دیگر مجموعه ها) و حتی سورس های آماده دیگه رو برای نیاز روز خودتون منطبق کنین.

  5. register.hk65@gmail.com (خریدار محصول)

    درود بر شما. وقت بخیر.
    ببخشید مهندس، کد رو در pycharm اجرا کردم.
    با این تنظیمات yolov3.cfg و وزن yolov3.weights این خطا رو میده:

    net = cv2.dnn.readNetFromDarknet(net_config, net_weights)
    cv2.error: OpenCV(4.7.0) D:\a\opencv-python\opencv-python\opencv\modules\dnn\src\darknet\darknet_io.cpp:660: error: (-215:Assertion failed) separator_index < line.size() in function 'cv::dnn::darknet::ReadDarknetFromCfgStream'

    وقتی به جاش از از نسخه ی tiny استفاده می کنم، خطای قبلی برطرف شده اما خطای C++ میده. یعنی:
    output = net.forward(out_names)
    cv2.error: Unknown C++ exception from OpenCV code

    لطفا میشه راهنمایی بفرمایید؟

    سپاس فراوان

    • مصطفی آصفی

      سلام به شما. البته سیستم رو نمی بینم و نمی تونم قطعی بگم ولی این خطا یا به خاطر نسخه OpenCV هست یا ترتیب فراخواین که شاید به جای فایل کانفیگ اول فایل وزن ها رو فراخوانی کردید. یا بحث دایرکتوری تنظیمات و وزن ها هست. این سه مورد رو امتحان کنید و نتیجه رو اطلاع بدین.

  6. حسین نکویی (خریدار محصول)

    با سلام و احترام، ضمن تشکر از آموزش بسیار ارزشمند و خوبی که داشتید، کد ارایه شده یکسری باگ داره که نیاز است اصلاح شود. من نسخه اصلاح شده را در گیت هاب خودم آپلود کرده ام. با سپاس https://github.com/HoseinNekouei/Object_Detection

    • مصطفی آصفی

      با سلام و سپاس لینک مخزن شما رو به فایل زیپ لینک سورس کدهای دوره اضافه کردم. البته من مخزنتون رو بررسی نکردم ولی توصیه کردم فراگیران بررسی کنن.
      ضمنا لینک ریشه گیت هاب بنده تغییر کرده. اگه نیاز شد ارجاعی داشته باشین به این صورت هست:
      https://github.com/asefycom

  7. مهدی یزدان پناه (خریدار محصول)

    سلام خسته نباشید
    چرا توی معرفی یولو اسمی از پروفسور علی فرهادی نیوردید ایشون به همراه شاگردش جوزف ردمون الگوریتم یولو رو بوجود آوردن و از افتخارات ایران هستن استاد تمام دانشگاه واشنگتون

    • مصطفی آصفی

      سلام و ممنون از اشاره خوبتون.

  8. مریم نادعلی

    سلام وقت بخیر
    در واقع خطای اصلی، به شکل زیر است:
    Traceback (most recent call last):
    File “test.py”, line 61, in
    findObjects(output, frame)
    File “test.py”, line 50, in findObjects
    cv2.putText(img, f'{obj_classes[class_ids[i]].upper()} {int(confidences[i] * 100)}%’,
    IndexError: list index out of range
    در ضمن من خطای مربوط به ورژن opencv را کاملا حل کردم

    • مصطفی آصفی

      سلام به شما. بر اساس متن خطا لیست obj_classes (که تو کد اصلی coco_classes) بود برای شما به درستی پر نشده و وقتی قصد دارید به ایندکسی از اون دسترسی پیدا کنید خطا دریافت می کنید. اون جایی که با دستور open دارید فایل نام کلاس ها رو باز می کنید، بررسی کنید. یا فایل نام ها به درستی پیدا نشده یا نام ها به درستی داخل لیست وارد نشدن.
      با فرض درست بودن موارد بالا، چون کدتون رو نمی بینم وقتی کدتون رو شخصی سازی می کنید بهتره راهکارهای مختلف بر اساس متن خطا رو گوگل و بررسی کنید:
      گوگل کنید:
      cv2.putText(), IndexError: list index out of range
      و بعد
      این راهکار (+) یا موارد مشابه ممکنه یکیش رو آزمایش کنید و برای کد شما مفید باشه.

  9. w (خریدار محصول)

    باسلام خدمت استاد اصفی عزیز

    من مشکل دارم در اجرا کد تشخیص اشیا شما نمیدوم چرا وقتی دوربین رو اشیا قرار میدم تشخیص نمیده حتی اون کارد دور اشیا نماید
    و با این همون کد شما رو اجرا کردم بازهم خروجی به من نمیده لطفا راهنمایی کنیید

    • مصطفی آصفی

      سلام آقای تقدیسی. باید لاگ خطا به من بدین تا بتونم نظر بدم. هر جای کدتون ممکنه اشکالی داشته باشه. به این شکل نمیشه نظر داد.

  10. شایان فیروزی (خریدار محصول)

    باورم نمیشه همچین دوره ای رو با این قیمت خریدم !!! روش تدریس و تسلط استاد واقعا عالیه ، کیفیت صدا و تصویر هم خیلی خوب هست ، آموزش اصلا خسته کننده نیست و از تصاویر و عکس ها برای درک مفهوم خیلی خوب استفاده شده .

    استاد پیشنهاد میدم دوره های بیشتری رو در خصوص پردازش تصویر ، تشخیص و شناسایی اشیا ، همچنین مبحث Recognition (افراد ، کاراکترها ، دست نوشته های و غیره ) رو تولید کنین.

    • مصطفی آصفی

      سلام و ممنون از انرژی خوبتون. بله هدف از این سبک قیمت گذاری اینه که دوستان با قیمت مناسب تری تهیه کنن و ضمنا برای حمایت از اشتغال هم رویش هم رقمی پرداخت بشه. در مورد پیشنهادتون برای تشخیص اشیای اختصاصی (+) و پردازش تصویر (+) و تشخیص افراد (+) هم دوره هایی داریم. این ها رو لینک دادم و برای موارد بیشتر می تونید بخش شاخه ها رو بررسی کنید. در مورد اعداد دست نویس هم توصیه می کنم این آموزش شبکه عصبی با پایتون (+) رو ببینید. پایه ای هست و برای همه دوستان حتی اگه از کتابخونه های آماده بخوان استفاده کنن خوبه دیدنش.

      پی‌نوشت: اگه به این حوزه علاقه مند هستید و تجربه برنامه نویسی پایتون رو دارید و البته انگیزه و انرژی خوب می تونید در قالب فراگیر-مدرس به هم رویش ملحق بشید تا راهنمایی کنم هم موارد دیگه رو یاد بگیرید هم همزمان تدریس کنید. از منوی همکاری با ما می تونید اقدام کنید.

  11. هادی

    سلام ، بنده به سی شارپ تسلط دارم ، آیا میتونم از Yolo در سی شارپ استفاده کنم و آیا این دوره مفاهیم لازم برای اینکار منتقل میکنه ؟

    • مصطفی آصفی

      سلام به شما. تابع هایی که این دوره گفتیم برای استفاده از OpenCV با زبان سی یا پایتون به صورت مستقیم مفید هستن. تو این دوره مفاهیم یولو رو گفتیم که طبیعتا در جاهای دیگه هم کاربرد داره. با سی شارپ می شه یولو رو ظاهرا کار کرد. من تجربه ندارم البته ولی گوگل کردم use yolo in c sharp چند فیلم یوتیوب بالا اورد. بررسی بفرمایید.

  12. وحیدی

    سلام. ممنونم از پاسختون. خوب کجای کد ما objectness score را استفاده کردیم. من هیچ جایی از کدمون نمی بینم که عدد آبجکتوینس اسکور ([4]detect_vector) رو بگیره و یا بتونه بخونه تا ازش استفاده کنه.

    • مصطفی آصفی

      سلام مجدد. بله ما تو این آموزش تا جایی که خاطرم هست استفاده نکردیم.

  13. وحیدی

    سلام. متشکرم از آموزش خیلی خوبتون برای یولوی 3. برای من یک سوال مونده و اون اینکه در کد زیر
    indices = cv2.dnn.NMSBoxes(bboxes, confidences, confidence_threshold, nms_threshold)
    کانفیندنس ها در واقع میزان احتمال کلاسی هستند که احتمالش حداکثر هست (مثلا در یک مثال خاص کلاس انسان ما بین 80 کلاس بیشترین احتمال را دارد و ان احتمال برابر 73 می باشد. لذا در لیست confidences عدد 73 ذخیره می شود. لذا در دستور nms بالا اصلا از عدد objectiveness score ها که یک عدد برای هر باندینگ باکس هست استفاده نکردیم. پس کاربرد objectiveness score در کجا هست؟

    • مصطفی آصفی

      سلام و ممنون از لطف شما. شاخص objectness score در واقع به ما نشون میده که بین سه باکسی که یولوی ۳ می‌سازه، کدوم خوبه که نگه داشته باشه و کدوم موارد نیاز نیست. این مقاله (+) می‌تونه مطالعه مکمل خوبی باشه.

  14. حسین عارفی مقدم (خریدار محصول)

    سلام مجدد ممنون استاد.
    مشکل مربوط به نسخه opencv حل شد حالا واسه خط مربوط به فرمت خطا میده — خطا مربوطه رو که غیر فعال میکنم برنامه جواب میده ولی کلاس ها مشخص نمیشه
    File “C:/Users/oghyanoos/PycharmProjects/Aref/aa.py”, line 49, in findObjects
    cv2.putText(img, f'{coco_classes[class_ids[i]].upper()} {int(confidences[i] * 100)}%’,
    NameError: name ‘coco_classes’ is not defined

    دقیقا هم کد خودتون رو کپی کردم که غلط املایی یا نوشتاری نداشته باشم

    • مصطفی آصفی

      سلام به شما آقای عارفی مقدم. ببینید خطایی که دارید دریافت می کنید به نظرم پایتونیه. داره می گه coco_classes رو تعریف نکردید و حالا می خواید ازش تابعی رو صدا بزنید.

  15. hossein.arefi.moghaddam@gmail.com (خریدار محصول)

    سلام
    من خطای زیر رو میده برنامه رو هم قدم به قدم درست نوشتم

    بعداز تبدیل کدi=i[0] به i=[0]
    خطای زیر رو می دهد
    bbox = bboxes[i]
    TypeError: list indices must be integers or slices, not list
    [2]

    • مصطفی آصفی

      سلام. این خطا مربوط به نسخه OpenCV هست که پایین هم دوستانتون (آقای نوری) تو نظرات اشاره کردن.

  16. کورش فردوسیان (خریدار محصول)

    سلام وقت بخیر. خیلی ممنون از آموزش مفیدتون. من کدها و فایل های برنامه را دقیقا مطابق آموزش نوشتم و در پروژه قرار دادم. بعد از اجرا، برنامه هیچ خطایی نمیده اما خروجی هم به صورت تصویر نمی دهد. هرجا دستور پرینت میدم، جواب درست چاپ میشه اما خروجی تصویری ندارم.

    • مصطفی آصفی

      سلام وقت شما هم بخیر. خوشحالم اگه مفید بوده. در مورد مشکلتون راستش تا خطایی گزارش نکنید نمی تونم نظری جز این بدم که احتمالا یه جایی از کار شاید یه اشتباهی تو پیاده سازی کار دارید.

  17. محمود بیات (خریدار محصول)

    با سلام
    در اجرای کد خطای زیر را مشاهده می کنم
    آیا کسی راه حلی برای این مورد دارد ؟
    Traceback (most recent call last):
    File “D:\example\Fasle1\pythonProject2\main.py”, line 62, in
    findObject(output, frame)
    File “D:\example\Fasle1\pythonProject2\main.py”, line 40, in findObject
    i = i[0]
    IndexError: invalid index to scalar variable.

    • مصطفی آصفی

      سلام به شما. این مشکل نسخه OpenCV هست. یکی از دوستانتون پایین هم گزارش کرد و به فایل های دوره هم پیوست شده.

  18. مهدی علی نوری

    سلام
    دوستانی که خطایی شبیه به این دریافت می کنند، این خطا مربوط به تغییرات در نسخه جدید opencv می باشد. راه حل سریع، نصب همان نسخه ای از opencv که در این آموزش استفاده شده است می باشد. در غیر این صورت باید تغییراتی در این خطوط اعمال کنید.

    Traceback (most recent call last):
    File “C:\Users\Lenovo\PycharmProjects\pythonProject2\main.py”, line 69, in
    findObjects(output, frame)
    File “C:\Users\Lenovo\PycharmProjects\pythonProject2\main.py”, line 44, in findObjects
    i = i[0]
    IndexError: invalid index to scalar variable

    • مصطفی آصفی

      سلام و سپاس از اطلاعتون. بله درست می فرمایید. برای اطلاع دوستان این توضیح به فایل‌های این دوره هم پیوست شد.

  19. frostami1357@gmail.com (خریدار محصول)

    سلام استاد
    من مثل کدها رو پیاده کردم و از وب کم لب تاپ استفاده کردم. هیچ خطایی نمی ده ولی هیچ شی ای رو تشخیص نمی ده. فیلم خودم به عنوان کلاس Person
    نمی دونم علت چیه

    • مصطفی آصفی

      سلام به شما. لطفا لاگ کدنویسی خودتون رو نگاه کنید ببینید خطایی ندارید. یک جایی حتما اشتباه کردین چون اگه مثل بنده پیش بیاین مثل فراگیران دیگه به مشکلی نمی خورید.

  20. محمدرضا (خریدار محصول)

    سلام دوستانی که با ارور python 2 SDK برخوردن از نسخه pycharm 2020.3.5 استفاده کنن که برطرف شه
    و کسانی هم ک به ارور findObject برخوردن دستور [0]=i روکامنت کنن که برطرف شه

    • مصطفی آصفی

      سلام به شما و پوزش که دیر پاسخ میدم. اول خیلی ممنونم به خاطر روحیه اشتراک گذاری خوبتون و این راهنمایی که برای دوستانتون گذاشتین. دوم خواستم بپرسم که شما دیگه مشکلی نداشتین و الان با موفقیت کارتون با یولو انجام شد؟

  21. محمدرضا (خریدار محصول)

    مهم
    اون دسته از دوستانی که در ابتدای کد به ارور
    you need configured python 2 SDK to render … مواجه شدن از نسخه Pycharm 2020.3.5 استفاده کنن که ارور برطرف شه
    و دوستانی که به ارور findObject برخوردن در داخل تابع دستور [0]=i رو کامنت کنن که مشکلشون برطرف شه و بتونن خروجی رو ببینن

  22. mohammadrezasolgibtc73@gmail.com (خریدار محصول)

    سلام مجدد
    من در کد های فصل 6 با یک ارور برخورد کردم مربوط به این خط هست
    (net = cv2.dnn.readNetFromDarknet(net_config, net_weights
    که وقتی با ماوس روش نگه میدارم میگ
    you need configured python 2 sdk to render epydoc docstrings
    دقیقا طبق ویدیو پیش رفتم . ممنون میشم جواب بدین

  23. moeinaz78@gmail.com (خریدار محصول)

    سلام وقتتون بخیر
    این بخش کدمن به جای برگردوندن مختصات پرانتز خالی برمیگردونه، دلیلش چیه؟
    برای اجرا شما عکس و از کجا انتخاب میکنید؟موقعیت مکانی عکس مهمه؟
    def findObjects (output , img ):
    img_h, img_w, img_c = img.shape
    bboxes = []
    class_ids = []
    confidences = []

    for cell in output:
    for detect_vector in cell:
    scores = detect_vector[5:]
    class_id = np.argmax(scores)
    confidence = scores[class_id]
    if confidence > confidence_threshold:
    w,h = int(detect_vector[2] * img_w), int(detect_vector[3] * img_h)
    x,y = int((detect_vector[0] * img_w) – w/2), int((detect_vector[1] * img_h) – h/2)
    bboxes.append([x,y,w,h])
    class_ids.append(class_id)
    confidences.append(float(confidence))
    indices = cv2.dnn.NMSBoxes(bboxes, confidences, confidence_threshold, nms_threshold)

    • مصطفی آصفی

      سلام به شما. توصیه دوره رو با دقت و تا پایان ببینید بعد مشکلات رو مطرح کنید. اگه دقت کنید ما در پایان کد یک جایی این تابع رو فراخوانی می کنیم و به عنوان img هر frame فیلم دریافتی رو در حلقه وارد می کنیم. خط ۶۷ تو ریپوزیتوری نهایی.
      اینجا در واقع ما داشتیم بدنه تابع رو برای استفاده در آینده تعریف می کردیم.

  24. محمدرضا

    عرض سلام و خسته نباشید . با این دوره میشه در تصاویر تک طیفی (PAN) سنجش از دوری عملیات تشخیص اشیا رو انجام داد (برای مثال ماشین ها رو استخراج کرد) ؟ (تصاویر رنگی نیستن ) و رزولوشن مکانیشون تقریبا حدود نیم متر هست. ممنون میشم پاسخ بدین

    • مصطفی آصفی

      سلام به شما. سلامت باشین. بستگی به تعداد نمونه شما برای تعلیم داره. یولو لزوما به رنگ وابسته نیست و شبکه عصبی عمیقی که پشت اون قرار داره خودش سعی می کنه ویژگی های خاص یک کلاس رو بشناسه و اون ها رو برای تشخیص اون کلاس ذخیره کنه. بایستی امتحان کنید. باید منتها نمونه های خوب و متعددی داشته باشین.

  25. احمدرضا ساعتی (خریدار محصول)

    با سلام مجدد . استاد به من پیام میده که اتصال اینترنتی ام برقرار نیستraise ValueError(“check_hostname requires server_hostname”)
    ValueError: check_hostname requires server_hostname
    ولی اتصالم برقراره نمیدونم واقعا چکار کنم
    از قسمت cmd هم خواستم کتاب خونه ها رو بگیرم دقیقا همینو گفت

    • مصطفی آصفی

      سلام به شما. این ممکنه به خاطر VPN باشه یا ممکنه با نصب نسخه بالاتر pip با wheel حل بشه. چون مشخصات سیستم متفاوته معمولا خطا رو که گوگل کنید، از راهکارهای ارائه شده یک به یک امتحان کنید به نتیجه می‌رسید. برای مثال من گوگل می‌کنم:
      pip install got ValueError check_hostname
      این نشانی (+)‌ پیشنهادش نصب pip از روی فایل pip.py از خود وبسایتشه.
      این نشانی (+) هم خطای VPN دلیلی می‌دونن. لطفا جواب ها رو بررسی کنید و اگه به نتیجه رسیدین اینجا هم فرصت کردین با ما درمیون بگذارین.

  26. احمدرضا ساعتی (خریدار محصول)

    سلام وقتتون به خیر استاد من تازه شروع کردم
    برنامه رو که نصب کردم هنگام نصب کتاب خانه ها با خطای occurred when install package روبه رو شدم
    میشه راهنمایی ایم کنید

    • مصطفی آصفی

      سلام به شما آقای ساعتی. وقت شما هم بخیر. اگه ممکنه متن خطا رو کامل ارسال بفرمایید که بتونم بفهمم مشکل نصب نشدن بسته از کجاست. این خطایی که شما فرستادین فقط داره می گه خطایی موقع نصب رخ داد. اما معمولا شرح دقیق تری از علت خطا توی لاگ هست.

  27. محمد مهرانی (خریدار محصول)

    سلام و درود بی پایان
    ضمن تشکر فراوان و خسته نباشید بابت این دوره ی فوق العاده خوب و کاربردی
    استاد گرامی بنده تا جلسه 9 که میشه در وقاع جلسه خروجی گرفتن با هیچ خطایی مواجه نشدم.. اما زمانی که اومدیم و تابع findObjects ایجاد کردیم و output و فریم خروجیمون رو بهش پاس دادیم بنده با این خطا مواجه شدم و هر چقدر سعی کردم موفق به برطرف کردن آن نشدم.
    ممنون میشم اگر راهنمایی بفرمایید. یک دنیا تشکر
    ارور:
    Traceback (most recent call last):
    File “C:\Users\Lenovo\PycharmProjects\pythonProject2\main.py”, line 69, in
    findObjects(output, frame)
    File “C:\Users\Lenovo\PycharmProjects\pythonProject2\main.py”, line 44, in findObjects
    i = i[0]
    IndexError: invalid index to scalar variable.

    • مصطفی آصفی

      سلام به شما. توصیه می کنم خطا رو گوگل کنید. معمولا مشکلاتی که ما پیدا می کنیم پیش از ما هم ایجاد شده.
      اگه گوگل کنید: findObjects i = i[0] IndexError: invalid index to scalar variable. yolo
      برای مثال این راهنمایی (+) ممکنه مشکل کد شما رو حل کنه و ایراد شما هم شبیه همین باشه.

      پی‌نوشت: با توجه به تشابه خطای شما با خطای دوست دیگه در آموزش یولو من کمی مشکوک به مشکل ورژن شدم. لطفا این مورد و موارد مشابه دیگه رو بررسی و نتیجه رو باز اعلام کنید که چه کردین و به کجا رسیدین.

  28. reza.ranji010@gmail.com (خریدار محصول)

    خیلیییی دوره خوبی بود. استاد آصفی خیلی ممنون.

    • مصطفی آصفی

      سلام و سپاس که برای اظهار لطفتون وقت گذاشتین. امیدوارم که موفق باشید.

  29. مهدی درویش (خریدار محصول)

    سلام. وقت بخیر و ممنون از پاسخگویی تون
    من در اجرای آموزش به همچیم خطایی بر خوردم
    net=cv2.dnn.readNetFromDarknet(net_config, net_weights)
    cv2.error: OpenCV(4.4.0) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-95hbg2jt\opencv\modules\dnn\src\darknet\darknet_importer.cpp:207: error: (-212:Parsing error) Failed to parse NetParameter file: cfg/yolov3_training.cfg in function ‘cv::dnn::dnn4_v20200609::readNetFromDarknet’
    ——————–
    به این خط کد اشاره داره : net=cv2.dnn.readNetFromDarknet(net_config, net_weights)
    چکار باید انجام بدم

    • مصطفی آصفی

      سلام به شما. خطا داره می گه که تو فایل تنظیمات yolov3_training.cfg یک جایی یه تنظیم رو اشتباه درج کردین. شاید تو محاسبه اون مقدار اشتباه داشته باشین.

  30. فاطمه قنبری (خریدار محصول)

    سلام من تا الان دو بار کد را از روی فیلم نگاه کردم زدم اجرا نشد یک بار هم از روی کدهای گیت هاب برداشتم و انجام دادم که اروری را براتون فرستادم گرفتم باشه چشم من دوباره امروز از اول بازم از روی فیلم انجام میدم

  31. فاطمه قنبری (خریدار محصول)

    سلام آقای مهندس آصفی تشکر از تهیه فیلم آموزشی خوبتون
    من کدهای درون گیت هاب مربوط به (تشخیص اشیا با پایتون در OpenCV) را درون پروژه ام کپی و پیس کردم به ارور های زیر برخوردم
    :Traceback (most recent call last)
    <File "C:\Users\Ghanbari\PycharmProjects\Test2\first_yolo.py", line 67, in <module***
    findObjects(output, frame)
    File "C:\Users\Ghanbari\PycharmProjects\Test2\first_yolo.py", line 44, in findObjects***
    i = i[0]
    ****IndexError: invalid index to scalar variable*****

    از طرفی داخل فیلم نهم print(indices) هست ولی در کد گیت هاب print(indices)# به این صورت هستش وقتی از کامنت برمیدارم ارور میگیره و این خط را کامنت می کنم # findObjects(output, frame) ارور نمیده ولی باندینگ باکس نمی اندازد.

    ممنون میشم بنده راهنمایی کنید.

    • مصطفی آصفی

      سلام و سپاس از شما. آموزش رو لطفا با دقت ببینید و گام به گام پیش بیاین که کد رو کامل درک کنید. سوالتون نشون دهنده دقت کم روی توضیح کدهاست.

  32. علی

    سلام مجدد خدمت شما
    بله کاملا صحیح میفرمایید ، متشکرم خطا رو برطرف کردم اما اینبار دیگه خطا نمیده ولی وقتی به دستور Create 6 permanent cpu-threads در انتها میرسه عملیات بعدی شروع نمیشه ، توی فیلم آموزشتون بعد از کد بالا آموزش تازه شروع میشد

    • مصطفی آصفی

      سلام و پوزش از تاخیر. خوشحالم که مشکل رو حل کردین. در این مورد هم باز همین طور (+).

      پی‌نوشت: ندانستن عیب نیست. گوگل نکردن عیب است.

  33. علی

    سلام روزتون بخیر باشه
    عذر میخوام در بخش پایانی کد (darknet detector train data/obj.data cfg/yolov3_training.cfg darknet53.conv.74 -dont_show/.! )، متاسفانه این خطا رو میده ، ممنون میشم راهنمایی بفرمایید متشکرم

    CUDA status Error: file: ./src/dark_cuda.c : () : line: 492 : build time: Nov 11 2021 – 08:27:39

    CUDA Error: out of memory
    Darknet error location: ./src/dark_cuda.c, check_error, line #69
    CUDA Error: out of memory: File exists

    • مصطفی آصفی

      سلام روز شما هم بخیر. شاید بهتر باشه به جای پیشنهاد یه راه برای حل مشکل شما که شاید هم در مورد شما جواب نده توجهتون رو به نکته مهم تری جلب کنم.
      با توجه به مشخصات مختلف سیستم و کاربری و حتی باگ های ابزارها، بسیار پیش میاد که موقع اجرای کارها به مشکل بخورید. توصیه می کنم دست به گوگل باشید. الان خط اول خطا یا بخشی از اون رو که گوگل کنید و بگردید می بینید که افرادی پیش از شما با چنین مشکلی مواجه شدن و راهکارهایی هم برای حل اون ها پیشنهاد شده.
      برای مثال این لینک (+) رو ببینید. امتحانش کنید و اگه جواب نگرفتید موارد مشابه دیگه تا مشکل رو حل کنید. به این ترتیب چه مشکل حل بشه و چه نشه شما تجربه های تازه ای هم کسب می کنید.

  34. سحر سلیم پور (خریدار محصول)

    بی نهایت از لطف شما و نحوه تدریستون سپاسگذارم.

  35. سحر سلیم پور (خریدار محصول)

    ممنون از پاسخگویی شما.
    من هردو آمورش yolo شما رو نگاه کردم.
    فکر کنم خوب روشی که استفاده کردم رو توضیح ندادم

    من بر اساس BB های مختلف تعداد آبجکت های میس شده ( که همون fn هستش دگ درسته؟) محاسبه کردم
    مثلا برای bb ۱۰۰ ده تا آبجکت میس شده و…
    بعد تقسیم بر تعداد کل آبجکت ها کردم(fn/fn+tp)
    یه شکل نزولی هم بدست اومده که توی bb های کم احتمال میس شدن زیاده و هرچه bb بیشتر میشه این احتمال نسبتا کمتر میشه
    بازم اشتباهه؟استاد میتونم ایمیل تون رو داشته باشم؟

    • مصطفی آصفی

      سلام. بسیار عالی. الان متوجه سوالتون شدم. با توضیحی که دادین ظاهرا کاری که انجام دادین درسته. از دست رفته‌ها (fn) رو تقسیم بر کل موجودی یک آبجکت (fn+tp) کردین. طبیعتا اینجا ما از fp استفاده نمی‌کنیم چون بحث دقت تشخیص مطرح نیست.

      پی‌نوشت: بنده به دلیل حجم کار نمی‌رسم که با عزیزان ارتباط تک به تک ایمیلی یا پیام‌رسان برقرار کنم. تو همین بخش نظرات اگه مطرح کنید بهتره. چون هر سوال و جواب برای چند نفر در آینده قابل استفاده هست.

  36. سحر سلیم پور (خریدار محصول)

    سلام خسته نباشید.ممنون از آموزش عالیتون.
    بنده با این سوال تو یک پروژه object detection مواجه هستم:
    Based on the
    number of true positives and false negatives, draw a line plot for the probability of
    missing an object as a function of the size of the object’s bounding box (size of the
    box side in pixels in the ground truth and not the detection)
    برای این احتمال من از FNR=fn/(fn+tp) استفاده کردم. بنظرتون درسته؟
    شبکه yolo5 و تعدادتصاویرم 200-300 تا.

    • مصطفی آصفی

      سلام سلامت باشید. ممنون از لطف شما.
      خیر رابطه ای که نوشتید با توجه به صورت مساله درست نیست. صورت مساله شما داره می‌گه که احتمال از دست دادن یک آبجکت رو به صورت تابعی از اندازه Bounding Box تعیین کنید. رابطه ای شما بر اساس تعداد تشخیص های نادرست و درسته که اصلا ارتباطی با این مساله نداره.
      کاری که شما باید بکنید اینه که با توجه به توضیحات دوره به ویژه درس نهم، بیاید به ازای BB های مختلف تعداد آبجکت از دست رفته رو از مجموع عکس ها هر بار محاسبه کنید. خروجی این محاسبه ینی اندازه BB و تعداد FN رو در هر دو اجرا ذخیره کنید (مثلا در یک CSV). بعد یک نمودار خطی از این دو رسم و بهترین تابع رو بهش برازش کنید (با رگرسیون و متپلات لایب (+)).

  37. احسان کرمی

    سلام مهندس آصفی عزیز آموزشاتون عالی بود فقط بنده بسته جامع opencv را تهیه کردم ولی دوره چهارم یعنی تشخیص اشیا با Yolo داخل آن نیست ممنون میشم لطف کنین به ایمیلم ارسال کنین ehsankarami.vnt71@yahoo.com البته اینقدر آموزشاتون خوب هست که حتی اگه نفرستین هم باز هم از خرید دوره کاملا راضیم.موفق باشید منتظر آموزش های بعدی شما هستیم.

    • مصطفی آصفی

      سلام به شما آقای کرمی. ممنون از محبت و انرژی گرمتون. بنده الان محتوای آموزش جامع بینایی کامپیوتر (+) رو بررسی کردم. لطفا با دقت بررسی بفرمایید اون لینک هایی که نوشته دریافت درس فلان از بسته چهارم مربوط به دوره یولو و اون هایی که نوشته دریافت درس فلان از بسته پنجم مربوط به بسته یولوی اختصاصی هست.

  38. آریا

    باسلام
    من میخواهم تعداد (مرغ) های موجود در یک مزرعه را بشمارم
    ایا این اموزش به درد من میخورد؟
    در ضمن خیلی ممنون بابت اموزش های opencv و تشخیص چهره تون خیلی عالی بودند

  39. مهدی مظلومی (خریدار محصول)

    سلام. وقتتون بخری ببخشید من زمانی که می خواهم از اخرین وزین تعلیم یافته دوباره شروع کنم یادگیری را به ارور زیر برمیخورم.
    File “”, line 3
    get_ipython().system(‘./darknet detector train data/obj.data cfg/yolov3_training.cfg /mydrive/yolov3/yolov3_training_last.weights ‘)
    ^
    IndentationError: unexpected indent

    • مصطفی آصفی

      سلام به شما. خطایی که دریافت کردین خطای سینتکس دندانه گذاری پایتون هست. شاید به دلیل رفتن نادرست کد به خط بعد ایجاد شده باشه.

  40. ali (خریدار محصول)

    سلام و عرض خسته نباشد خدمت استاد عزیز
    در آموزش بخش 6 من در خط زیر با خطا برخورد کردم ، ممنون میشم اگر راهنمایی بفرمایید .
    net = cv2.dnn.readNetFromDarknet(net_config , net_weights)

    cv2.error: OpenCV(3.4.13) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-qioszjlt\opencv\modules\dnn\src\darknet\darknet_importer.cpp:207: error: (-212:Parsing error) Failed to parse NetParameter file: cfg/yolo3.cfg in function ‘cv::dnn::experimental_dnn_34_v20::readNetFromDarknet’
    با بردن موس به روی خط این پیغام رو میده:
    You need a configured Python 2 SDK to render Epydoc docstrings

  41. hamed Hod (خریدار محصول)

    سلام.وقتتون بخیر.می خواستم بپرسم که چطور می تونم مثلا روی فیلم کوتاه 10 ثانیه ای از قبل ضبط شده، هم تستش رو انجام بدم؟؟؟

    • مصطفی آصفی

      سلام به شما. کافیه که فیلم رو به صورت زیر بخونید:
      cap = cv2.VideoCapture(‘chaplin.mp4’)

      پی‌نوشت: دوره آموزش سریع پردازش تصویر رو ببینید و از گوگل کردن خواسته هاتون (به انگلیسی) غافل نشید که روی پای خودتون بایستید.

  42. حسن (خریدار محصول)

    سلام خدمت استاد آصفی. من میخوام وزن هایی که ساختم با گرافیک لپ تاب اجرا کنم البته توی اموزش قبلی توضیح مختصری دادید من هم تولکیت CUDA نصب کردم اما نتوستم پروژه ام با گرافیک اجرا کنم

    • مصطفی آصفی

      سلام به شما. برای نصب OpenCV روی GPU چون فقط یک بحث فنی نصب و راه اندازی هست و شما هم حالا با Yolo آشنا هستین، توصیه می‌کنم فیلم هایی مثل این آموزش رو ببینید.

  43. آرمان کریمی (خریدار محصول)

    خیلی خوب و ساده روان و دلنشین توضیح دادین

    • مصطفی آصفی

      سلام و سپاس از لطف شما و این که برای ارسال انرژی مثبت خودتون وقت گذاشتین.
      امیدوارم که مفید باشه.

  44. حسن (خریدار محصول)

    سلام مرسی از راهنماییتون
    مجبور شدم مجدد همه برناه هارو پاک کنم و دوباره نصب کنم که حل شد وکل پروژه بدون ارور ران کردم
    تشکر از آموزش خوبتون
    فقط یک راهنمایی میخواستم
    یک نرم افزار دارم مینویسم که یه فولدر عکس که شامل 1000 عدد تصویر صورت هست و میخوام چهره هر فرد را شناسایی و در فولدر مخصوص خودش ذخیره کنه مثل بایگانی میشه راهنمایی کنید چطور شروع کنم

    سوال دوم ربطی به این موضوع بالا ندارد
    با توجه اینکه این پروژه ها تشخیص اشیاء میشه توی رباتیک استفاده کرد ونیاز به پرداش های سنگین داره !
    بغیر از pc شما چه سخت افزاری پیشنهاد میدید تا realtime پردازش کنه و لگ نداشته باشه تا حدودی ؟ایا رزبری پای مناسب این کار هست یا ن سخت افزار دیگه ای به جز رزبری میشه استفاده کرد؟ اسمش چیه؟

  45. حسن (خریدار محصول)

    سلام مجدد استاد من بررسی کردم ادرس ها درست هستن و نام ها درست وارد شدن

    • مصطفی آصفی

      سلام. در این صورت با توجه به بخش دوم خطاتون (اگه این متن رو گوگل کنیم: cap_msmf.cpp SourceReaderCB terminating async callback opencv)، احتمالا این راهکار (+) مشکلتون رو حل می کنه.

  46. حسن (خریدار محصول)

    سلام خسته نباشید در قسمت 6 آموزش از این کد ارور دارم
    (net = cv2.dnn.readNetFromDarknet(net_config, net_weights
    متن ارور هم در پایین اوردم
    cv2.error: OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\dnn\src\darknet\darknet_importer.cpp:207: error: (-212:Parsing error) Failed to parse NetParameter file: conf/yolov3.conf in function ‘cv::dnn::dnn4_v20191202::readNetFromDarknet’

    [ WARN:0] global C:\projects\opencv-python\opencv\modules\videoio\src\cap_msmf.cpp (674) SourceReaderCB::~SourceReaderCB terminating async callback
    لطفا راهنماییم کنید چطور ارور برطرف کنم
    سپاس

    • مصطفی آصفی

      سلام به شما. این خطا داره می گه فایل خوانش فایل cofig شبکه با خطا مواجه هست. احتمالا مسیر فایلتون یا نامش رو به درستی وارد نمی کنید. ممکن هم هست که فایل تنظیماتتون جاییش خطا داشته باشه.

  47. Mery (خریدار محصول)

    استاد متوجه شدم اشتباهم چیه
    ممنون

    • مصطفی آصفی

      ممنونم که اطلاع دادین. بله این طور که متن خطا میگه تو وارد کردن پارامترها خطا دارین.

  48. Mery (خریدار محصول)

    سلام چک کردم با ویدیو شما هیچ تفاوتی نداره
    خطایی که میده:
    blob = cv2.dnn.blobFromImage(frame, scalefactor=1/255, size=blob_size, mean=(0,0,0), swapRB=True, crop=False)
    SystemError: new style getargs format but argument is not a tuple

  49. Mery (خریدار محصول)

    سلام خسته نباشید
    ببخشید من وقتی که این سه خط کد رو میزنم وبکمم بالا نمیاد:
    blob = cv2.dnn.blobFromImage(frame, scalefactor=1/255, size=blob_size, mean=(0,0,0), swapRB=True, crop=False)
    for image in blob:
    for k, b in enumerate(image):
    cv2.imshow(str(k), b)
    net.setInput(blob)
    ولی قبل از آن وبکمم می امد.
    در ضمن من از وبکم لپتاپم کمک گرفتم.
    میشه راهنماییم کنید و بگید مشکل کجاست؟
    و اینکه من ویدیو 7 را میگویم.
    ممنون

    • مصطفی آصفی

      سلام. لطفاً کدتون رو چک کنید که دقیقا مشابه آموزش باشه و چیزی تو مراحل قبل اشتباه نکرده باشین، بعد متن خطا یا لاگ ترمینال رو گزارش کنید تا بتونم کمکتون کنم.

  50. مهدی

    سلام.خسته نباشید.استاد من میخوام عملیات پردازش درfpga انجام شود.در مورد نحوه نصبopen vino و کامپایلش در open cv راهنمایی میکنید؟خیلی ممنون

  51. سروش رشیدی (خریدار محصول)

    سلام و عرض ادب,

    واقعا بهترین روش آموزش تشخیص اشیأ بسیار کوتاه و مفید حتا در مقایسه با ویدئوهای آموزشی یودمی.

    در صورت امکان آموزش مطلب زیر بسیار مفید خواهد بود:

    شمارش اشیا(خودرو ، انسان،…)
    محاسبه سرعت
    محاسبه فاصله بین اشیا
    دانلود خروجی شمارش اشیا به صورت فایل اکسل

    سپاسگزار

    • مصطفی آصفی

      سلام و سپاس از لطف و انرژی گرم شما.

      برای تشخیص اشیای اختصاصی توصیه می کنم این آموزش تکمیلی یولو (+) رو ببینید.
      بحث محاسبه فاصله و سرعت با حوزه ردیابی اشیا (Object Tracking) سروکار داره که به امید خدا در آینده به اون خواهیم پرداخت.

      در مورد خروجی گیری بیشتر به مهارت شما در پایتون مرتبط میشه. برای نمونه خروجی گیری رو کتابخونه پانداس به خوبی پیاده سازی کرده. امیدوارم به زودی آموزش این کتابخونه رو در هم رویش داشته باشیم اما شما منتظر نمونید و «ذخیره فایل csv در pandas» رو در گوگل جستجو کنید.

      پی‌نوشت: هم رویش رو با شناسه HamRuyesh در شبکه های اجتماعی دنبال کنید تا از انتشار آموزش ها و مقاله های مرتبط به موقع مطلع بشید.

  52. omid

    سلام وقت بخیر استاد
    چگونه می توان یک شی خاص را بهش معرفی کرد که در سایر تصاویر این شی را دیتکت کنه؟

  53. پوریا

    درود استاد
    یک سوال داشتم
    من میخواهم هر یک ساعت از طریق بلندگو تعداد افرادی که در یک اتاق هستند بیان بشود باید کدام آموزش رو فراهم کنم

    • مصطفی آصفی

      سلام به شما. می بخشید ظاهرا پیام شما رو من بین پیام های دیگه جا گذاشتم.
      در مورد سوالتون اگر در همون لحظه که یک ساعت به پایان می رسه قصد دارید تعداد نفرات رو شمارش و اعلام کنید، همین آموزش کافی هست.
      یولوی نسخه 3 همون طور که در فیلم معرفی هم گفتم، با دیتاست کوکو (COCO Dataset) تعلیم دیده و قادر به تشخیص 80 دسته از جمله «انسان» هست.
      حالت دوم مساله که کمی چالشی تره این طوره که شما بخواهید تعداد افرادی که در یک ساعت در یک مکان حضور پیدا کردن رو بشمرید. در این صورت بسته به نوع مساله ممکنه نیاز باشه افراد تکراری حذف بشن که در این صورت باید با استفاده از این آموزش تشخیص چهره (+) باید افراد رو شناسایی و کدگذاری کنید که هر فرد رو در یک بازه زمانی، یک بار بشمرید.

  54. رضا محمدی (خریدار محصول)

    ببخشید سورس کد ها هم موجود نبودن امکانش هست ارسال کنید به ایمیلی که ثبت کردیم ؟

    • مصطفی آصفی

      لینک سورس کدها از گیت هاب شخصی بنده در فایل های دانلودی موجود هست. بعد از دانلود لینک رو اجرا کنید و به گیت هاب مراجعه و سورس رو دانلود کنید.

  55. رضا محمدی (خریدار محصول)

    سلام ببخشید پیاده سازی رو رزبری پای با فرمایشات شما امکان پذیره ؟ یعنی امکان پیاده سازی یولو بر روی رزبری پای4 رم 2 جواب میده ؟ و اگر جواب میده همین کارایی که گفتید و انجام بدیم ؟

    • مصطفی آصفی

      سلام به شما. ببینید شما برای اجرای مدل کامل یولو 3 که در آغاز آموزش استفاده کردم حدود 1.65 گیگابایت رم نیاز دارید. پس روی کاغذ 2 گیگ رم شما باید کافی باشه. هر چند در اجرا باید دید که کارهای دیگه ای که رم رو در اون لحظه درگیر می کنه چه حجمی نیاز دارن و ممکنه وارد این حریم بشن.
      همین طور شما می تونید از مدل یولو تاینی (YOLO Tiny) استفاده کنید که حدود 390 مگابایت رم نیاز داره. البته همون طور که در آموزش هم توضیح دادم کمی دقت کم تر هست.

  56. محمد وجدانی (خریدار محصول)

    سلام استاد جلسه 9 فیلمش خوب رکورد نشده لطف برطرفش کنید مخصوصا اواخرش

    • مصطفی آصفی

      سلام به شما. بله 3 دقیقه آخر درس 9 به دلیل کند شدن سیستم، تصویر از صدا کمی جا می مونه اما در کل جز این مورد تا جایی که من بررسی کردم ایرادی نداره.

      پی‌نوشت: ضبط این درس بعد از 2 مرتبه ضبط مجدد، باز ضبط همین مشکل رو داشت و برطرف نمی شد. اما از اونجا که روی خود آموزش تاثیری نداشت نادیده گرفتم. تمام خروجی لازم رو شما عملا می بینید. فقط در اون تکه کوتاه، کمی ناپیوسته.

  57. Abolfazl Hassanzade

    سلام و عرض ادب خدمت استاد آصفی.
    استاد امروز مستندی در رابطه با ربات ها پخش شد.
    خب تا اینجا چیز مهمی نیست. اون حالا اقای راوی به یادگیری این ربات ها اشاره کرد که اون ها ابجکت ها یا اشیاء ها رو میدیدند، یادمیگرفتند و از هم تشخیص میدادند. به جز پایتون / open cv و یولو مواردی دیگری هم هست که همین کار رو انجام بدند؟
    محظ دانسته های شخصی پرسیدم یا علی.

    • مصطفی آصفی

      سلام به شما. بله حتما. دقت کنید که یولو و OpenCV هیچ کدوم ویژه پایتون نیستن. یولو یک الگوریتم هست که می‌تونه با زبان‌های مختلفی بر پایه فریمورک‌های یادگیری عمیق موجود پیاده سازی بشه. OpenCV هم یک کتابخونه متن باز نوشته شده با سی و سی پلاس پلاس هست که خوشبختانه API برای پایتون در اختیار گذاشته و شما می تونید به عنوان یک برنامه نویس پایتون اون رو یاد بگیرید. اصولا چون پایتون کدنویسی شیرین تری داره راه رو هموار می کنه برای یادگیری. ممکنه شما اونچه یاد می گیرید رو در یک پروژه با پایتون به کار بگیرید و به خوبی و با سرعت مناسب هم جواب بگیرید. یک جایی هم به دلیل نیاز به سرعت بالا و محدودیت سیستم نیاز باشه که اونچه با پایتون ساختید رو با سی پلاس پلاس بازگردانی کنید.
      به همین دلیل OpenCV کتابخونه خوبیه که شما در صورت نیاز بعد از آشنایی با توابع اون با زبان پایتون در صورت نیاز می تونید مهاجرت بدین. همین طوره در مورد ESP32 در رابطه با اینترنت اشیا که میشه با میکروپایتون (+) پیاده سازی کرد و اگر جایی نیاز به سرعت بالا بود به دلیل محدودیت ظرفیت برد ممکنه نیاز باشه که پروتوتایپ ایجاد شده با میکروپایتون رو مهاجرت بدید به آردوینو و سی.

      این به این معنی نیست که پایتون در کل برای پروژه های بزرگ مناسب نیست. به هیچ وجه. در قلب یوتیوب، اینستاگرام و بسیاری وبسایت های دیگه پایتون به خوبی کار می کنه. وبسایت IconFinder با جنگو نوشته شده و جوابگوی هزاران جستجوی روزانه هست. منتها گاهی سرعت بالا و امکانات پردازشی کم در دسترس (به ویژه در مقیاس پروژه های صنعتی) مهاجرت به زبان سیستمی رو طلب می کنه. که باید پروتوتایپ پایتونی رو به زبان سیستمی منتقل کرد.

  58. محمد وجدانی

    آیا ادامه این راه را خواهید رفت که مثلا قادر باشه علاوه بر تشخیص موقعیت یابی نیز انجام دهد؟

    • مصطفی آصفی

      منظورتون از موقعیت یابی رو متوجه نشدم. منظورتون Bounding Box در بردارنده آبجکت و موقعیت اون در تصویر هست؟ اگر این رو می فرمایید در همین آموزش بیان شده.

  59. محمد وجدانی

    سلام خسته نباشد . یعنی خودمون تعیین میکنیم چی یاد بگیره یا از قبل چیزهایی یادش دادن؟

    • مصطفی آصفی

      سلام به شما. خیر همون طور که در توضیحات آموزش درج شده، ما در این آموزش از یولوی تعلیم یافته با 80 کلاس کوکو دیتاست پیش می ریم.
      در آموزش دیگه ای انشالله به زودی به دیتاست اختصاصی هم می پردازیم.

دیدگاه خود را بنویسید

نظرات کاربران در خصوص دوره 

59 دیدگاه برای آموزش YOLO – تشخیص اشیا با پایتون در OpenCV

  1. baradmosavi1400 (خریدار محصول)

    سلام آقای آصفی
    واقعا آموزش عالی بود ولی اگه میشه لطفا درس 9 را با همان کد هایی که لینک شان را در درس 2 پیوست کردین درس بدین

    • مصطفی آصفی

      سلام و سپاس از لطفتون. راستش الان تو هم رویش مشغول پیشبرد دوره یادگیری ماشین (+)‌ و دوره مدل های زبانی هستم و یه مقدار سرم شلوغه ولی فرصتی دست بده مورد شما رو بررسی و احتمالا به روز می کنم.

  2. fatmeh.taheri.13 (خریدار محصول)

    سلام استاد وقت بخیر
    ببخشید ارور This function is deprecated. Please call randint(0, 255 + 1) instead
    COLORS = np.random.random_integers(0, 255, size=(len(coco_classes), 3))
    Traceback (most recent call last):
    File “d:\car\object.py”, line 22, in
    net = cv.dnn.readNetFromDarknet(net_config,net_weights)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    cv2.error: OpenCV(4.8.1) D:\a\opencv-python\opencv-python\opencv\modules\dnn\src\darknet\darknet_importer.cpp:210: error: (-212:Parsing error) Failed to open NetParameter file: cfg/yolov3.cfg in function ‘cv::dnn::dnn4_v20230620::readNetFromDarknet’
    را چگونه برطرف بکنم؟

    • مصطفی آصفی

      سلام وقت بخیر. هشدار اول داره می گه به جای تابع randint در خط ۲۲ فایل object.py از تابع پایین استفاده کنید:
      np.random.random_integers(0, 255, size=(len(coco_classes), 3))
      دومی اما خطا هست و احتمالا به خاطر اینه که مسیر فایل yolov3.cfg رو نمی تونه بخونه. تو کدتون مسیر فایل رو می تونید مطلق (absolute) بدین تا بتونه پیداش کنه.

  3. حجت فلاح

    بسیار سپاسگزارم از راهنماییتان ، مشکل حل شد

    • مصطفی آصفی

      سلام مجدد. ممنونم که وقت گذاشتین و اطلاع دادین.

  4. حجت فلاح

    با عرض سلام و وقت بخیر
    جناب مهندس واقعا از دوره عالی تون تشکر می کنم .
    فقط در اجرای همون کد اصلی شما یک خطا داده میشود و برنامه اجرا نمی شود، خطای زیر:

    File c:\users\asus\documents\python save\read_mobile_webcam\creatyolo3.py:51 in findObjects
    i = i[0]

    IndexError: invalid index to scalar variable.

    بنده نظراتو دیدم و دوستان دیگه هم این مشکلو داشتن و شما فقط پاسخ دادین که “یکی از دوستانتون پایین هم گزارش کرد و به فایل های دوره هم پیوست شده”
    جناب مهندس حقیقتش بنده منظور این جمله شمارو متوجه نمیشم ؟ برای حل مشکل لطفا دقیق بفرمایین چیکار کنیم؟ به فایل دوره چی پیوست شده؟ کدام فایل؟
    واقعا بنده نیاز دارم به این برنامه و بخشی از پایان نامه بنده هست ، جدا خواهش می کنم دقیق راهنمایی کنین تا خطا برطرف شده، سپاسگزارم

    • مصطفی آصفی

      سلام و سپاس. مشکل از نسخه CV شما هست. منظورم از پیوست این بود که تو فایل های دانلودی دوره بعد از دانلود درس ۲ یک فایل زیپ دارین به نام «پیوست جدید درس دوم» که داخل اون توضیح دادم و لینک مرتبط برای نحوه رفع مشکل هم اضافه کردم. یکی از فراگیران این دوره (آقای نکویی) هم نسخه روزآمدی از کدها تهیه کردن که تو مخزن گیت هاب پروژه هم قبلا لینک داده بودم منتها چون ظاهرا گویا نیست لینک مخزن ایشون رو هم همین لحظه به همون فایل پیوست درس ۲ اضافه کردم. اگر چه که با بررسی همین لینک استک اورفلو (+) که داخل روزآمدی هم گفتم به راحتی می تونین مشکل رو حل کنید.

      پی نوشت: این مشکل رو رو به صورت موردی حل نکردم چون موارد از این دست با تغییر ورژن باز هم ممکنه پیش روی شما بیان و حتی کسانی باشن که گزارش هم نکنن. با ارجاع دادن فراگیران به است اورفلو شما بیشتر یاد می گیرن که آموزش ها (خواه هم رویش و خواه دیگر مجموعه ها) و حتی سورس های آماده دیگه رو برای نیاز روز خودتون منطبق کنین.

  5. register.hk65@gmail.com (خریدار محصول)

    درود بر شما. وقت بخیر.
    ببخشید مهندس، کد رو در pycharm اجرا کردم.
    با این تنظیمات yolov3.cfg و وزن yolov3.weights این خطا رو میده:

    net = cv2.dnn.readNetFromDarknet(net_config, net_weights)
    cv2.error: OpenCV(4.7.0) D:\a\opencv-python\opencv-python\opencv\modules\dnn\src\darknet\darknet_io.cpp:660: error: (-215:Assertion failed) separator_index < line.size() in function 'cv::dnn::darknet::ReadDarknetFromCfgStream'

    وقتی به جاش از از نسخه ی tiny استفاده می کنم، خطای قبلی برطرف شده اما خطای C++ میده. یعنی:
    output = net.forward(out_names)
    cv2.error: Unknown C++ exception from OpenCV code

    لطفا میشه راهنمایی بفرمایید؟

    سپاس فراوان

    • مصطفی آصفی

      سلام به شما. البته سیستم رو نمی بینم و نمی تونم قطعی بگم ولی این خطا یا به خاطر نسخه OpenCV هست یا ترتیب فراخواین که شاید به جای فایل کانفیگ اول فایل وزن ها رو فراخوانی کردید. یا بحث دایرکتوری تنظیمات و وزن ها هست. این سه مورد رو امتحان کنید و نتیجه رو اطلاع بدین.

  6. حسین نکویی (خریدار محصول)

    با سلام و احترام، ضمن تشکر از آموزش بسیار ارزشمند و خوبی که داشتید، کد ارایه شده یکسری باگ داره که نیاز است اصلاح شود. من نسخه اصلاح شده را در گیت هاب خودم آپلود کرده ام. با سپاس https://github.com/HoseinNekouei/Object_Detection

    • مصطفی آصفی

      با سلام و سپاس لینک مخزن شما رو به فایل زیپ لینک سورس کدهای دوره اضافه کردم. البته من مخزنتون رو بررسی نکردم ولی توصیه کردم فراگیران بررسی کنن.
      ضمنا لینک ریشه گیت هاب بنده تغییر کرده. اگه نیاز شد ارجاعی داشته باشین به این صورت هست:
      https://github.com/asefycom

  7. مهدی یزدان پناه (خریدار محصول)

    سلام خسته نباشید
    چرا توی معرفی یولو اسمی از پروفسور علی فرهادی نیوردید ایشون به همراه شاگردش جوزف ردمون الگوریتم یولو رو بوجود آوردن و از افتخارات ایران هستن استاد تمام دانشگاه واشنگتون

    • مصطفی آصفی

      سلام و ممنون از اشاره خوبتون.

  8. مریم نادعلی

    سلام وقت بخیر
    در واقع خطای اصلی، به شکل زیر است:
    Traceback (most recent call last):
    File “test.py”, line 61, in
    findObjects(output, frame)
    File “test.py”, line 50, in findObjects
    cv2.putText(img, f'{obj_classes[class_ids[i]].upper()} {int(confidences[i] * 100)}%’,
    IndexError: list index out of range
    در ضمن من خطای مربوط به ورژن opencv را کاملا حل کردم

    • مصطفی آصفی

      سلام به شما. بر اساس متن خطا لیست obj_classes (که تو کد اصلی coco_classes) بود برای شما به درستی پر نشده و وقتی قصد دارید به ایندکسی از اون دسترسی پیدا کنید خطا دریافت می کنید. اون جایی که با دستور open دارید فایل نام کلاس ها رو باز می کنید، بررسی کنید. یا فایل نام ها به درستی پیدا نشده یا نام ها به درستی داخل لیست وارد نشدن.
      با فرض درست بودن موارد بالا، چون کدتون رو نمی بینم وقتی کدتون رو شخصی سازی می کنید بهتره راهکارهای مختلف بر اساس متن خطا رو گوگل و بررسی کنید:
      گوگل کنید:
      cv2.putText(), IndexError: list index out of range
      و بعد
      این راهکار (+) یا موارد مشابه ممکنه یکیش رو آزمایش کنید و برای کد شما مفید باشه.

  9. w (خریدار محصول)

    باسلام خدمت استاد اصفی عزیز

    من مشکل دارم در اجرا کد تشخیص اشیا شما نمیدوم چرا وقتی دوربین رو اشیا قرار میدم تشخیص نمیده حتی اون کارد دور اشیا نماید
    و با این همون کد شما رو اجرا کردم بازهم خروجی به من نمیده لطفا راهنمایی کنیید

    • مصطفی آصفی

      سلام آقای تقدیسی. باید لاگ خطا به من بدین تا بتونم نظر بدم. هر جای کدتون ممکنه اشکالی داشته باشه. به این شکل نمیشه نظر داد.

  10. شایان فیروزی (خریدار محصول)

    باورم نمیشه همچین دوره ای رو با این قیمت خریدم !!! روش تدریس و تسلط استاد واقعا عالیه ، کیفیت صدا و تصویر هم خیلی خوب هست ، آموزش اصلا خسته کننده نیست و از تصاویر و عکس ها برای درک مفهوم خیلی خوب استفاده شده .

    استاد پیشنهاد میدم دوره های بیشتری رو در خصوص پردازش تصویر ، تشخیص و شناسایی اشیا ، همچنین مبحث Recognition (افراد ، کاراکترها ، دست نوشته های و غیره ) رو تولید کنین.

    • مصطفی آصفی

      سلام و ممنون از انرژی خوبتون. بله هدف از این سبک قیمت گذاری اینه که دوستان با قیمت مناسب تری تهیه کنن و ضمنا برای حمایت از اشتغال هم رویش هم رقمی پرداخت بشه. در مورد پیشنهادتون برای تشخیص اشیای اختصاصی (+) و پردازش تصویر (+) و تشخیص افراد (+) هم دوره هایی داریم. این ها رو لینک دادم و برای موارد بیشتر می تونید بخش شاخه ها رو بررسی کنید. در مورد اعداد دست نویس هم توصیه می کنم این آموزش شبکه عصبی با پایتون (+) رو ببینید. پایه ای هست و برای همه دوستان حتی اگه از کتابخونه های آماده بخوان استفاده کنن خوبه دیدنش.

      پی‌نوشت: اگه به این حوزه علاقه مند هستید و تجربه برنامه نویسی پایتون رو دارید و البته انگیزه و انرژی خوب می تونید در قالب فراگیر-مدرس به هم رویش ملحق بشید تا راهنمایی کنم هم موارد دیگه رو یاد بگیرید هم همزمان تدریس کنید. از منوی همکاری با ما می تونید اقدام کنید.

  11. هادی

    سلام ، بنده به سی شارپ تسلط دارم ، آیا میتونم از Yolo در سی شارپ استفاده کنم و آیا این دوره مفاهیم لازم برای اینکار منتقل میکنه ؟

    • مصطفی آصفی

      سلام به شما. تابع هایی که این دوره گفتیم برای استفاده از OpenCV با زبان سی یا پایتون به صورت مستقیم مفید هستن. تو این دوره مفاهیم یولو رو گفتیم که طبیعتا در جاهای دیگه هم کاربرد داره. با سی شارپ می شه یولو رو ظاهرا کار کرد. من تجربه ندارم البته ولی گوگل کردم use yolo in c sharp چند فیلم یوتیوب بالا اورد. بررسی بفرمایید.

  12. وحیدی

    سلام. ممنونم از پاسختون. خوب کجای کد ما objectness score را استفاده کردیم. من هیچ جایی از کدمون نمی بینم که عدد آبجکتوینس اسکور ([4]detect_vector) رو بگیره و یا بتونه بخونه تا ازش استفاده کنه.

    • مصطفی آصفی

      سلام مجدد. بله ما تو این آموزش تا جایی که خاطرم هست استفاده نکردیم.

  13. وحیدی

    سلام. متشکرم از آموزش خیلی خوبتون برای یولوی 3. برای من یک سوال مونده و اون اینکه در کد زیر
    indices = cv2.dnn.NMSBoxes(bboxes, confidences, confidence_threshold, nms_threshold)
    کانفیندنس ها در واقع میزان احتمال کلاسی هستند که احتمالش حداکثر هست (مثلا در یک مثال خاص کلاس انسان ما بین 80 کلاس بیشترین احتمال را دارد و ان احتمال برابر 73 می باشد. لذا در لیست confidences عدد 73 ذخیره می شود. لذا در دستور nms بالا اصلا از عدد objectiveness score ها که یک عدد برای هر باندینگ باکس هست استفاده نکردیم. پس کاربرد objectiveness score در کجا هست؟

    • مصطفی آصفی

      سلام و ممنون از لطف شما. شاخص objectness score در واقع به ما نشون میده که بین سه باکسی که یولوی ۳ می‌سازه، کدوم خوبه که نگه داشته باشه و کدوم موارد نیاز نیست. این مقاله (+) می‌تونه مطالعه مکمل خوبی باشه.

  14. حسین عارفی مقدم (خریدار محصول)

    سلام مجدد ممنون استاد.
    مشکل مربوط به نسخه opencv حل شد حالا واسه خط مربوط به فرمت خطا میده — خطا مربوطه رو که غیر فعال میکنم برنامه جواب میده ولی کلاس ها مشخص نمیشه
    File “C:/Users/oghyanoos/PycharmProjects/Aref/aa.py”, line 49, in findObjects
    cv2.putText(img, f'{coco_classes[class_ids[i]].upper()} {int(confidences[i] * 100)}%’,
    NameError: name ‘coco_classes’ is not defined

    دقیقا هم کد خودتون رو کپی کردم که غلط املایی یا نوشتاری نداشته باشم

    • مصطفی آصفی

      سلام به شما آقای عارفی مقدم. ببینید خطایی که دارید دریافت می کنید به نظرم پایتونیه. داره می گه coco_classes رو تعریف نکردید و حالا می خواید ازش تابعی رو صدا بزنید.

  15. hossein.arefi.moghaddam@gmail.com (خریدار محصول)

    سلام
    من خطای زیر رو میده برنامه رو هم قدم به قدم درست نوشتم

    بعداز تبدیل کدi=i[0] به i=[0]
    خطای زیر رو می دهد
    bbox = bboxes[i]
    TypeError: list indices must be integers or slices, not list
    [2]

    • مصطفی آصفی

      سلام. این خطا مربوط به نسخه OpenCV هست که پایین هم دوستانتون (آقای نوری) تو نظرات اشاره کردن.

  16. کورش فردوسیان (خریدار محصول)

    سلام وقت بخیر. خیلی ممنون از آموزش مفیدتون. من کدها و فایل های برنامه را دقیقا مطابق آموزش نوشتم و در پروژه قرار دادم. بعد از اجرا، برنامه هیچ خطایی نمیده اما خروجی هم به صورت تصویر نمی دهد. هرجا دستور پرینت میدم، جواب درست چاپ میشه اما خروجی تصویری ندارم.

    • مصطفی آصفی

      سلام وقت شما هم بخیر. خوشحالم اگه مفید بوده. در مورد مشکلتون راستش تا خطایی گزارش نکنید نمی تونم نظری جز این بدم که احتمالا یه جایی از کار شاید یه اشتباهی تو پیاده سازی کار دارید.

  17. محمود بیات (خریدار محصول)

    با سلام
    در اجرای کد خطای زیر را مشاهده می کنم
    آیا کسی راه حلی برای این مورد دارد ؟
    Traceback (most recent call last):
    File “D:\example\Fasle1\pythonProject2\main.py”, line 62, in
    findObject(output, frame)
    File “D:\example\Fasle1\pythonProject2\main.py”, line 40, in findObject
    i = i[0]
    IndexError: invalid index to scalar variable.

    • مصطفی آصفی

      سلام به شما. این مشکل نسخه OpenCV هست. یکی از دوستانتون پایین هم گزارش کرد و به فایل های دوره هم پیوست شده.

  18. مهدی علی نوری

    سلام
    دوستانی که خطایی شبیه به این دریافت می کنند، این خطا مربوط به تغییرات در نسخه جدید opencv می باشد. راه حل سریع، نصب همان نسخه ای از opencv که در این آموزش استفاده شده است می باشد. در غیر این صورت باید تغییراتی در این خطوط اعمال کنید.

    Traceback (most recent call last):
    File “C:\Users\Lenovo\PycharmProjects\pythonProject2\main.py”, line 69, in
    findObjects(output, frame)
    File “C:\Users\Lenovo\PycharmProjects\pythonProject2\main.py”, line 44, in findObjects
    i = i[0]
    IndexError: invalid index to scalar variable

    • مصطفی آصفی

      سلام و سپاس از اطلاعتون. بله درست می فرمایید. برای اطلاع دوستان این توضیح به فایل‌های این دوره هم پیوست شد.

  19. frostami1357@gmail.com (خریدار محصول)

    سلام استاد
    من مثل کدها رو پیاده کردم و از وب کم لب تاپ استفاده کردم. هیچ خطایی نمی ده ولی هیچ شی ای رو تشخیص نمی ده. فیلم خودم به عنوان کلاس Person
    نمی دونم علت چیه

    • مصطفی آصفی

      سلام به شما. لطفا لاگ کدنویسی خودتون رو نگاه کنید ببینید خطایی ندارید. یک جایی حتما اشتباه کردین چون اگه مثل بنده پیش بیاین مثل فراگیران دیگه به مشکلی نمی خورید.

  20. محمدرضا (خریدار محصول)

    سلام دوستانی که با ارور python 2 SDK برخوردن از نسخه pycharm 2020.3.5 استفاده کنن که برطرف شه
    و کسانی هم ک به ارور findObject برخوردن دستور [0]=i روکامنت کنن که برطرف شه

    • مصطفی آصفی

      سلام به شما و پوزش که دیر پاسخ میدم. اول خیلی ممنونم به خاطر روحیه اشتراک گذاری خوبتون و این راهنمایی که برای دوستانتون گذاشتین. دوم خواستم بپرسم که شما دیگه مشکلی نداشتین و الان با موفقیت کارتون با یولو انجام شد؟

  21. محمدرضا (خریدار محصول)

    مهم
    اون دسته از دوستانی که در ابتدای کد به ارور
    you need configured python 2 SDK to render … مواجه شدن از نسخه Pycharm 2020.3.5 استفاده کنن که ارور برطرف شه
    و دوستانی که به ارور findObject برخوردن در داخل تابع دستور [0]=i رو کامنت کنن که مشکلشون برطرف شه و بتونن خروجی رو ببینن

  22. mohammadrezasolgibtc73@gmail.com (خریدار محصول)

    سلام مجدد
    من در کد های فصل 6 با یک ارور برخورد کردم مربوط به این خط هست
    (net = cv2.dnn.readNetFromDarknet(net_config, net_weights
    که وقتی با ماوس روش نگه میدارم میگ
    you need configured python 2 sdk to render epydoc docstrings
    دقیقا طبق ویدیو پیش رفتم . ممنون میشم جواب بدین

  23. moeinaz78@gmail.com (خریدار محصول)

    سلام وقتتون بخیر
    این بخش کدمن به جای برگردوندن مختصات پرانتز خالی برمیگردونه، دلیلش چیه؟
    برای اجرا شما عکس و از کجا انتخاب میکنید؟موقعیت مکانی عکس مهمه؟
    def findObjects (output , img ):
    img_h, img_w, img_c = img.shape
    bboxes = []
    class_ids = []
    confidences = []

    for cell in output:
    for detect_vector in cell:
    scores = detect_vector[5:]
    class_id = np.argmax(scores)
    confidence = scores[class_id]
    if confidence > confidence_threshold:
    w,h = int(detect_vector[2] * img_w), int(detect_vector[3] * img_h)
    x,y = int((detect_vector[0] * img_w) – w/2), int((detect_vector[1] * img_h) – h/2)
    bboxes.append([x,y,w,h])
    class_ids.append(class_id)
    confidences.append(float(confidence))
    indices = cv2.dnn.NMSBoxes(bboxes, confidences, confidence_threshold, nms_threshold)

    • مصطفی آصفی

      سلام به شما. توصیه دوره رو با دقت و تا پایان ببینید بعد مشکلات رو مطرح کنید. اگه دقت کنید ما در پایان کد یک جایی این تابع رو فراخوانی می کنیم و به عنوان img هر frame فیلم دریافتی رو در حلقه وارد می کنیم. خط ۶۷ تو ریپوزیتوری نهایی.
      اینجا در واقع ما داشتیم بدنه تابع رو برای استفاده در آینده تعریف می کردیم.

  24. محمدرضا

    عرض سلام و خسته نباشید . با این دوره میشه در تصاویر تک طیفی (PAN) سنجش از دوری عملیات تشخیص اشیا رو انجام داد (برای مثال ماشین ها رو استخراج کرد) ؟ (تصاویر رنگی نیستن ) و رزولوشن مکانیشون تقریبا حدود نیم متر هست. ممنون میشم پاسخ بدین

    • مصطفی آصفی

      سلام به شما. سلامت باشین. بستگی به تعداد نمونه شما برای تعلیم داره. یولو لزوما به رنگ وابسته نیست و شبکه عصبی عمیقی که پشت اون قرار داره خودش سعی می کنه ویژگی های خاص یک کلاس رو بشناسه و اون ها رو برای تشخیص اون کلاس ذخیره کنه. بایستی امتحان کنید. باید منتها نمونه های خوب و متعددی داشته باشین.

  25. احمدرضا ساعتی (خریدار محصول)

    با سلام مجدد . استاد به من پیام میده که اتصال اینترنتی ام برقرار نیستraise ValueError(“check_hostname requires server_hostname”)
    ValueError: check_hostname requires server_hostname
    ولی اتصالم برقراره نمیدونم واقعا چکار کنم
    از قسمت cmd هم خواستم کتاب خونه ها رو بگیرم دقیقا همینو گفت

    • مصطفی آصفی

      سلام به شما. این ممکنه به خاطر VPN باشه یا ممکنه با نصب نسخه بالاتر pip با wheel حل بشه. چون مشخصات سیستم متفاوته معمولا خطا رو که گوگل کنید، از راهکارهای ارائه شده یک به یک امتحان کنید به نتیجه می‌رسید. برای مثال من گوگل می‌کنم:
      pip install got ValueError check_hostname
      این نشانی (+)‌ پیشنهادش نصب pip از روی فایل pip.py از خود وبسایتشه.
      این نشانی (+) هم خطای VPN دلیلی می‌دونن. لطفا جواب ها رو بررسی کنید و اگه به نتیجه رسیدین اینجا هم فرصت کردین با ما درمیون بگذارین.

  26. احمدرضا ساعتی (خریدار محصول)

    سلام وقتتون به خیر استاد من تازه شروع کردم
    برنامه رو که نصب کردم هنگام نصب کتاب خانه ها با خطای occurred when install package روبه رو شدم
    میشه راهنمایی ایم کنید

    • مصطفی آصفی

      سلام به شما آقای ساعتی. وقت شما هم بخیر. اگه ممکنه متن خطا رو کامل ارسال بفرمایید که بتونم بفهمم مشکل نصب نشدن بسته از کجاست. این خطایی که شما فرستادین فقط داره می گه خطایی موقع نصب رخ داد. اما معمولا شرح دقیق تری از علت خطا توی لاگ هست.

  27. محمد مهرانی (خریدار محصول)

    سلام و درود بی پایان
    ضمن تشکر فراوان و خسته نباشید بابت این دوره ی فوق العاده خوب و کاربردی
    استاد گرامی بنده تا جلسه 9 که میشه در وقاع جلسه خروجی گرفتن با هیچ خطایی مواجه نشدم.. اما زمانی که اومدیم و تابع findObjects ایجاد کردیم و output و فریم خروجیمون رو بهش پاس دادیم بنده با این خطا مواجه شدم و هر چقدر سعی کردم موفق به برطرف کردن آن نشدم.
    ممنون میشم اگر راهنمایی بفرمایید. یک دنیا تشکر
    ارور:
    Traceback (most recent call last):
    File “C:\Users\Lenovo\PycharmProjects\pythonProject2\main.py”, line 69, in
    findObjects(output, frame)
    File “C:\Users\Lenovo\PycharmProjects\pythonProject2\main.py”, line 44, in findObjects
    i = i[0]
    IndexError: invalid index to scalar variable.

    • مصطفی آصفی

      سلام به شما. توصیه می کنم خطا رو گوگل کنید. معمولا مشکلاتی که ما پیدا می کنیم پیش از ما هم ایجاد شده.
      اگه گوگل کنید: findObjects i = i[0] IndexError: invalid index to scalar variable. yolo
      برای مثال این راهنمایی (+) ممکنه مشکل کد شما رو حل کنه و ایراد شما هم شبیه همین باشه.

      پی‌نوشت: با توجه به تشابه خطای شما با خطای دوست دیگه در آموزش یولو من کمی مشکوک به مشکل ورژن شدم. لطفا این مورد و موارد مشابه دیگه رو بررسی و نتیجه رو باز اعلام کنید که چه کردین و به کجا رسیدین.

  28. reza.ranji010@gmail.com (خریدار محصول)

    خیلیییی دوره خوبی بود. استاد آصفی خیلی ممنون.

    • مصطفی آصفی

      سلام و سپاس که برای اظهار لطفتون وقت گذاشتین. امیدوارم که موفق باشید.

  29. مهدی درویش (خریدار محصول)

    سلام. وقت بخیر و ممنون از پاسخگویی تون
    من در اجرای آموزش به همچیم خطایی بر خوردم
    net=cv2.dnn.readNetFromDarknet(net_config, net_weights)
    cv2.error: OpenCV(4.4.0) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-95hbg2jt\opencv\modules\dnn\src\darknet\darknet_importer.cpp:207: error: (-212:Parsing error) Failed to parse NetParameter file: cfg/yolov3_training.cfg in function ‘cv::dnn::dnn4_v20200609::readNetFromDarknet’
    ——————–
    به این خط کد اشاره داره : net=cv2.dnn.readNetFromDarknet(net_config, net_weights)
    چکار باید انجام بدم

    • مصطفی آصفی

      سلام به شما. خطا داره می گه که تو فایل تنظیمات yolov3_training.cfg یک جایی یه تنظیم رو اشتباه درج کردین. شاید تو محاسبه اون مقدار اشتباه داشته باشین.

  30. فاطمه قنبری (خریدار محصول)

    سلام من تا الان دو بار کد را از روی فیلم نگاه کردم زدم اجرا نشد یک بار هم از روی کدهای گیت هاب برداشتم و انجام دادم که اروری را براتون فرستادم گرفتم باشه چشم من دوباره امروز از اول بازم از روی فیلم انجام میدم

  31. فاطمه قنبری (خریدار محصول)

    سلام آقای مهندس آصفی تشکر از تهیه فیلم آموزشی خوبتون
    من کدهای درون گیت هاب مربوط به (تشخیص اشیا با پایتون در OpenCV) را درون پروژه ام کپی و پیس کردم به ارور های زیر برخوردم
    :Traceback (most recent call last)
    <File "C:\Users\Ghanbari\PycharmProjects\Test2\first_yolo.py", line 67, in <module***
    findObjects(output, frame)
    File "C:\Users\Ghanbari\PycharmProjects\Test2\first_yolo.py", line 44, in findObjects***
    i = i[0]
    ****IndexError: invalid index to scalar variable*****

    از طرفی داخل فیلم نهم print(indices) هست ولی در کد گیت هاب print(indices)# به این صورت هستش وقتی از کامنت برمیدارم ارور میگیره و این خط را کامنت می کنم # findObjects(output, frame) ارور نمیده ولی باندینگ باکس نمی اندازد.

    ممنون میشم بنده راهنمایی کنید.

    • مصطفی آصفی

      سلام و سپاس از شما. آموزش رو لطفا با دقت ببینید و گام به گام پیش بیاین که کد رو کامل درک کنید. سوالتون نشون دهنده دقت کم روی توضیح کدهاست.

  32. علی

    سلام مجدد خدمت شما
    بله کاملا صحیح میفرمایید ، متشکرم خطا رو برطرف کردم اما اینبار دیگه خطا نمیده ولی وقتی به دستور Create 6 permanent cpu-threads در انتها میرسه عملیات بعدی شروع نمیشه ، توی فیلم آموزشتون بعد از کد بالا آموزش تازه شروع میشد

    • مصطفی آصفی

      سلام و پوزش از تاخیر. خوشحالم که مشکل رو حل کردین. در این مورد هم باز همین طور (+).

      پی‌نوشت: ندانستن عیب نیست. گوگل نکردن عیب است.

  33. علی

    سلام روزتون بخیر باشه
    عذر میخوام در بخش پایانی کد (darknet detector train data/obj.data cfg/yolov3_training.cfg darknet53.conv.74 -dont_show/.! )، متاسفانه این خطا رو میده ، ممنون میشم راهنمایی بفرمایید متشکرم

    CUDA status Error: file: ./src/dark_cuda.c : () : line: 492 : build time: Nov 11 2021 – 08:27:39

    CUDA Error: out of memory
    Darknet error location: ./src/dark_cuda.c, check_error, line #69
    CUDA Error: out of memory: File exists

    • مصطفی آصفی

      سلام روز شما هم بخیر. شاید بهتر باشه به جای پیشنهاد یه راه برای حل مشکل شما که شاید هم در مورد شما جواب نده توجهتون رو به نکته مهم تری جلب کنم.
      با توجه به مشخصات مختلف سیستم و کاربری و حتی باگ های ابزارها، بسیار پیش میاد که موقع اجرای کارها به مشکل بخورید. توصیه می کنم دست به گوگل باشید. الان خط اول خطا یا بخشی از اون رو که گوگل کنید و بگردید می بینید که افرادی پیش از شما با چنین مشکلی مواجه شدن و راهکارهایی هم برای حل اون ها پیشنهاد شده.
      برای مثال این لینک (+) رو ببینید. امتحانش کنید و اگه جواب نگرفتید موارد مشابه دیگه تا مشکل رو حل کنید. به این ترتیب چه مشکل حل بشه و چه نشه شما تجربه های تازه ای هم کسب می کنید.

  34. سحر سلیم پور (خریدار محصول)

    بی نهایت از لطف شما و نحوه تدریستون سپاسگذارم.

  35. سحر سلیم پور (خریدار محصول)

    ممنون از پاسخگویی شما.
    من هردو آمورش yolo شما رو نگاه کردم.
    فکر کنم خوب روشی که استفاده کردم رو توضیح ندادم

    من بر اساس BB های مختلف تعداد آبجکت های میس شده ( که همون fn هستش دگ درسته؟) محاسبه کردم
    مثلا برای bb ۱۰۰ ده تا آبجکت میس شده و…
    بعد تقسیم بر تعداد کل آبجکت ها کردم(fn/fn+tp)
    یه شکل نزولی هم بدست اومده که توی bb های کم احتمال میس شدن زیاده و هرچه bb بیشتر میشه این احتمال نسبتا کمتر میشه
    بازم اشتباهه؟استاد میتونم ایمیل تون رو داشته باشم؟

    • مصطفی آصفی

      سلام. بسیار عالی. الان متوجه سوالتون شدم. با توضیحی که دادین ظاهرا کاری که انجام دادین درسته. از دست رفته‌ها (fn) رو تقسیم بر کل موجودی یک آبجکت (fn+tp) کردین. طبیعتا اینجا ما از fp استفاده نمی‌کنیم چون بحث دقت تشخیص مطرح نیست.

      پی‌نوشت: بنده به دلیل حجم کار نمی‌رسم که با عزیزان ارتباط تک به تک ایمیلی یا پیام‌رسان برقرار کنم. تو همین بخش نظرات اگه مطرح کنید بهتره. چون هر سوال و جواب برای چند نفر در آینده قابل استفاده هست.

  36. سحر سلیم پور (خریدار محصول)

    سلام خسته نباشید.ممنون از آموزش عالیتون.
    بنده با این سوال تو یک پروژه object detection مواجه هستم:
    Based on the
    number of true positives and false negatives, draw a line plot for the probability of
    missing an object as a function of the size of the object’s bounding box (size of the
    box side in pixels in the ground truth and not the detection)
    برای این احتمال من از FNR=fn/(fn+tp) استفاده کردم. بنظرتون درسته؟
    شبکه yolo5 و تعدادتصاویرم 200-300 تا.

    • مصطفی آصفی

      سلام سلامت باشید. ممنون از لطف شما.
      خیر رابطه ای که نوشتید با توجه به صورت مساله درست نیست. صورت مساله شما داره می‌گه که احتمال از دست دادن یک آبجکت رو به صورت تابعی از اندازه Bounding Box تعیین کنید. رابطه ای شما بر اساس تعداد تشخیص های نادرست و درسته که اصلا ارتباطی با این مساله نداره.
      کاری که شما باید بکنید اینه که با توجه به توضیحات دوره به ویژه درس نهم، بیاید به ازای BB های مختلف تعداد آبجکت از دست رفته رو از مجموع عکس ها هر بار محاسبه کنید. خروجی این محاسبه ینی اندازه BB و تعداد FN رو در هر دو اجرا ذخیره کنید (مثلا در یک CSV). بعد یک نمودار خطی از این دو رسم و بهترین تابع رو بهش برازش کنید (با رگرسیون و متپلات لایب (+)).

  37. احسان کرمی

    سلام مهندس آصفی عزیز آموزشاتون عالی بود فقط بنده بسته جامع opencv را تهیه کردم ولی دوره چهارم یعنی تشخیص اشیا با Yolo داخل آن نیست ممنون میشم لطف کنین به ایمیلم ارسال کنین ehsankarami.vnt71@yahoo.com البته اینقدر آموزشاتون خوب هست که حتی اگه نفرستین هم باز هم از خرید دوره کاملا راضیم.موفق باشید منتظر آموزش های بعدی شما هستیم.

    • مصطفی آصفی

      سلام به شما آقای کرمی. ممنون از محبت و انرژی گرمتون. بنده الان محتوای آموزش جامع بینایی کامپیوتر (+) رو بررسی کردم. لطفا با دقت بررسی بفرمایید اون لینک هایی که نوشته دریافت درس فلان از بسته چهارم مربوط به دوره یولو و اون هایی که نوشته دریافت درس فلان از بسته پنجم مربوط به بسته یولوی اختصاصی هست.

  38. آریا

    باسلام
    من میخواهم تعداد (مرغ) های موجود در یک مزرعه را بشمارم
    ایا این اموزش به درد من میخورد؟
    در ضمن خیلی ممنون بابت اموزش های opencv و تشخیص چهره تون خیلی عالی بودند

  39. مهدی مظلومی (خریدار محصول)

    سلام. وقتتون بخری ببخشید من زمانی که می خواهم از اخرین وزین تعلیم یافته دوباره شروع کنم یادگیری را به ارور زیر برمیخورم.
    File “”, line 3
    get_ipython().system(‘./darknet detector train data/obj.data cfg/yolov3_training.cfg /mydrive/yolov3/yolov3_training_last.weights ‘)
    ^
    IndentationError: unexpected indent

    • مصطفی آصفی

      سلام به شما. خطایی که دریافت کردین خطای سینتکس دندانه گذاری پایتون هست. شاید به دلیل رفتن نادرست کد به خط بعد ایجاد شده باشه.

  40. ali (خریدار محصول)

    سلام و عرض خسته نباشد خدمت استاد عزیز
    در آموزش بخش 6 من در خط زیر با خطا برخورد کردم ، ممنون میشم اگر راهنمایی بفرمایید .
    net = cv2.dnn.readNetFromDarknet(net_config , net_weights)

    cv2.error: OpenCV(3.4.13) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-qioszjlt\opencv\modules\dnn\src\darknet\darknet_importer.cpp:207: error: (-212:Parsing error) Failed to parse NetParameter file: cfg/yolo3.cfg in function ‘cv::dnn::experimental_dnn_34_v20::readNetFromDarknet’
    با بردن موس به روی خط این پیغام رو میده:
    You need a configured Python 2 SDK to render Epydoc docstrings

  41. hamed Hod (خریدار محصول)

    سلام.وقتتون بخیر.می خواستم بپرسم که چطور می تونم مثلا روی فیلم کوتاه 10 ثانیه ای از قبل ضبط شده، هم تستش رو انجام بدم؟؟؟

    • مصطفی آصفی

      سلام به شما. کافیه که فیلم رو به صورت زیر بخونید:
      cap = cv2.VideoCapture(‘chaplin.mp4’)

      پی‌نوشت: دوره آموزش سریع پردازش تصویر رو ببینید و از گوگل کردن خواسته هاتون (به انگلیسی) غافل نشید که روی پای خودتون بایستید.

  42. حسن (خریدار محصول)

    سلام خدمت استاد آصفی. من میخوام وزن هایی که ساختم با گرافیک لپ تاب اجرا کنم البته توی اموزش قبلی توضیح مختصری دادید من هم تولکیت CUDA نصب کردم اما نتوستم پروژه ام با گرافیک اجرا کنم

    • مصطفی آصفی

      سلام به شما. برای نصب OpenCV روی GPU چون فقط یک بحث فنی نصب و راه اندازی هست و شما هم حالا با Yolo آشنا هستین، توصیه می‌کنم فیلم هایی مثل این آموزش رو ببینید.

  43. آرمان کریمی (خریدار محصول)

    خیلی خوب و ساده روان و دلنشین توضیح دادین

    • مصطفی آصفی

      سلام و سپاس از لطف شما و این که برای ارسال انرژی مثبت خودتون وقت گذاشتین.
      امیدوارم که مفید باشه.

  44. حسن (خریدار محصول)

    سلام مرسی از راهنماییتون
    مجبور شدم مجدد همه برناه هارو پاک کنم و دوباره نصب کنم که حل شد وکل پروژه بدون ارور ران کردم
    تشکر از آموزش خوبتون
    فقط یک راهنمایی میخواستم
    یک نرم افزار دارم مینویسم که یه فولدر عکس که شامل 1000 عدد تصویر صورت هست و میخوام چهره هر فرد را شناسایی و در فولدر مخصوص خودش ذخیره کنه مثل بایگانی میشه راهنمایی کنید چطور شروع کنم

    سوال دوم ربطی به این موضوع بالا ندارد
    با توجه اینکه این پروژه ها تشخیص اشیاء میشه توی رباتیک استفاده کرد ونیاز به پرداش های سنگین داره !
    بغیر از pc شما چه سخت افزاری پیشنهاد میدید تا realtime پردازش کنه و لگ نداشته باشه تا حدودی ؟ایا رزبری پای مناسب این کار هست یا ن سخت افزار دیگه ای به جز رزبری میشه استفاده کرد؟ اسمش چیه؟

  45. حسن (خریدار محصول)

    سلام مجدد استاد من بررسی کردم ادرس ها درست هستن و نام ها درست وارد شدن

    • مصطفی آصفی

      سلام. در این صورت با توجه به بخش دوم خطاتون (اگه این متن رو گوگل کنیم: cap_msmf.cpp SourceReaderCB terminating async callback opencv)، احتمالا این راهکار (+) مشکلتون رو حل می کنه.

  46. حسن (خریدار محصول)

    سلام خسته نباشید در قسمت 6 آموزش از این کد ارور دارم
    (net = cv2.dnn.readNetFromDarknet(net_config, net_weights
    متن ارور هم در پایین اوردم
    cv2.error: OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\dnn\src\darknet\darknet_importer.cpp:207: error: (-212:Parsing error) Failed to parse NetParameter file: conf/yolov3.conf in function ‘cv::dnn::dnn4_v20191202::readNetFromDarknet’

    [ WARN:0] global C:\projects\opencv-python\opencv\modules\videoio\src\cap_msmf.cpp (674) SourceReaderCB::~SourceReaderCB terminating async callback
    لطفا راهنماییم کنید چطور ارور برطرف کنم
    سپاس

    • مصطفی آصفی

      سلام به شما. این خطا داره می گه فایل خوانش فایل cofig شبکه با خطا مواجه هست. احتمالا مسیر فایلتون یا نامش رو به درستی وارد نمی کنید. ممکن هم هست که فایل تنظیماتتون جاییش خطا داشته باشه.

  47. Mery (خریدار محصول)

    استاد متوجه شدم اشتباهم چیه
    ممنون

    • مصطفی آصفی

      ممنونم که اطلاع دادین. بله این طور که متن خطا میگه تو وارد کردن پارامترها خطا دارین.

  48. Mery (خریدار محصول)

    سلام چک کردم با ویدیو شما هیچ تفاوتی نداره
    خطایی که میده:
    blob = cv2.dnn.blobFromImage(frame, scalefactor=1/255, size=blob_size, mean=(0,0,0), swapRB=True, crop=False)
    SystemError: new style getargs format but argument is not a tuple

  49. Mery (خریدار محصول)

    سلام خسته نباشید
    ببخشید من وقتی که این سه خط کد رو میزنم وبکمم بالا نمیاد:
    blob = cv2.dnn.blobFromImage(frame, scalefactor=1/255, size=blob_size, mean=(0,0,0), swapRB=True, crop=False)
    for image in blob:
    for k, b in enumerate(image):
    cv2.imshow(str(k), b)
    net.setInput(blob)
    ولی قبل از آن وبکمم می امد.
    در ضمن من از وبکم لپتاپم کمک گرفتم.
    میشه راهنماییم کنید و بگید مشکل کجاست؟
    و اینکه من ویدیو 7 را میگویم.
    ممنون

    • مصطفی آصفی

      سلام. لطفاً کدتون رو چک کنید که دقیقا مشابه آموزش باشه و چیزی تو مراحل قبل اشتباه نکرده باشین، بعد متن خطا یا لاگ ترمینال رو گزارش کنید تا بتونم کمکتون کنم.

  50. مهدی

    سلام.خسته نباشید.استاد من میخوام عملیات پردازش درfpga انجام شود.در مورد نحوه نصبopen vino و کامپایلش در open cv راهنمایی میکنید؟خیلی ممنون

  51. سروش رشیدی (خریدار محصول)

    سلام و عرض ادب,

    واقعا بهترین روش آموزش تشخیص اشیأ بسیار کوتاه و مفید حتا در مقایسه با ویدئوهای آموزشی یودمی.

    در صورت امکان آموزش مطلب زیر بسیار مفید خواهد بود:

    شمارش اشیا(خودرو ، انسان،…)
    محاسبه سرعت
    محاسبه فاصله بین اشیا
    دانلود خروجی شمارش اشیا به صورت فایل اکسل

    سپاسگزار

    • مصطفی آصفی

      سلام و سپاس از لطف و انرژی گرم شما.

      برای تشخیص اشیای اختصاصی توصیه می کنم این آموزش تکمیلی یولو (+) رو ببینید.
      بحث محاسبه فاصله و سرعت با حوزه ردیابی اشیا (Object Tracking) سروکار داره که به امید خدا در آینده به اون خواهیم پرداخت.

      در مورد خروجی گیری بیشتر به مهارت شما در پایتون مرتبط میشه. برای نمونه خروجی گیری رو کتابخونه پانداس به خوبی پیاده سازی کرده. امیدوارم به زودی آموزش این کتابخونه رو در هم رویش داشته باشیم اما شما منتظر نمونید و «ذخیره فایل csv در pandas» رو در گوگل جستجو کنید.

      پی‌نوشت: هم رویش رو با شناسه HamRuyesh در شبکه های اجتماعی دنبال کنید تا از انتشار آموزش ها و مقاله های مرتبط به موقع مطلع بشید.

  52. omid

    سلام وقت بخیر استاد
    چگونه می توان یک شی خاص را بهش معرفی کرد که در سایر تصاویر این شی را دیتکت کنه؟

  53. پوریا

    درود استاد
    یک سوال داشتم
    من میخواهم هر یک ساعت از طریق بلندگو تعداد افرادی که در یک اتاق هستند بیان بشود باید کدام آموزش رو فراهم کنم

    • مصطفی آصفی

      سلام به شما. می بخشید ظاهرا پیام شما رو من بین پیام های دیگه جا گذاشتم.
      در مورد سوالتون اگر در همون لحظه که یک ساعت به پایان می رسه قصد دارید تعداد نفرات رو شمارش و اعلام کنید، همین آموزش کافی هست.
      یولوی نسخه 3 همون طور که در فیلم معرفی هم گفتم، با دیتاست کوکو (COCO Dataset) تعلیم دیده و قادر به تشخیص 80 دسته از جمله «انسان» هست.
      حالت دوم مساله که کمی چالشی تره این طوره که شما بخواهید تعداد افرادی که در یک ساعت در یک مکان حضور پیدا کردن رو بشمرید. در این صورت بسته به نوع مساله ممکنه نیاز باشه افراد تکراری حذف بشن که در این صورت باید با استفاده از این آموزش تشخیص چهره (+) باید افراد رو شناسایی و کدگذاری کنید که هر فرد رو در یک بازه زمانی، یک بار بشمرید.

  54. رضا محمدی (خریدار محصول)

    ببخشید سورس کد ها هم موجود نبودن امکانش هست ارسال کنید به ایمیلی که ثبت کردیم ؟

    • مصطفی آصفی

      لینک سورس کدها از گیت هاب شخصی بنده در فایل های دانلودی موجود هست. بعد از دانلود لینک رو اجرا کنید و به گیت هاب مراجعه و سورس رو دانلود کنید.

  55. رضا محمدی (خریدار محصول)

    سلام ببخشید پیاده سازی رو رزبری پای با فرمایشات شما امکان پذیره ؟ یعنی امکان پیاده سازی یولو بر روی رزبری پای4 رم 2 جواب میده ؟ و اگر جواب میده همین کارایی که گفتید و انجام بدیم ؟

    • مصطفی آصفی

      سلام به شما. ببینید شما برای اجرای مدل کامل یولو 3 که در آغاز آموزش استفاده کردم حدود 1.65 گیگابایت رم نیاز دارید. پس روی کاغذ 2 گیگ رم شما باید کافی باشه. هر چند در اجرا باید دید که کارهای دیگه ای که رم رو در اون لحظه درگیر می کنه چه حجمی نیاز دارن و ممکنه وارد این حریم بشن.
      همین طور شما می تونید از مدل یولو تاینی (YOLO Tiny) استفاده کنید که حدود 390 مگابایت رم نیاز داره. البته همون طور که در آموزش هم توضیح دادم کمی دقت کم تر هست.

  56. محمد وجدانی (خریدار محصول)

    سلام استاد جلسه 9 فیلمش خوب رکورد نشده لطف برطرفش کنید مخصوصا اواخرش

    • مصطفی آصفی

      سلام به شما. بله 3 دقیقه آخر درس 9 به دلیل کند شدن سیستم، تصویر از صدا کمی جا می مونه اما در کل جز این مورد تا جایی که من بررسی کردم ایرادی نداره.

      پی‌نوشت: ضبط این درس بعد از 2 مرتبه ضبط مجدد، باز ضبط همین مشکل رو داشت و برطرف نمی شد. اما از اونجا که روی خود آموزش تاثیری نداشت نادیده گرفتم. تمام خروجی لازم رو شما عملا می بینید. فقط در اون تکه کوتاه، کمی ناپیوسته.

  57. Abolfazl Hassanzade

    سلام و عرض ادب خدمت استاد آصفی.
    استاد امروز مستندی در رابطه با ربات ها پخش شد.
    خب تا اینجا چیز مهمی نیست. اون حالا اقای راوی به یادگیری این ربات ها اشاره کرد که اون ها ابجکت ها یا اشیاء ها رو میدیدند، یادمیگرفتند و از هم تشخیص میدادند. به جز پایتون / open cv و یولو مواردی دیگری هم هست که همین کار رو انجام بدند؟
    محظ دانسته های شخصی پرسیدم یا علی.

    • مصطفی آصفی

      سلام به شما. بله حتما. دقت کنید که یولو و OpenCV هیچ کدوم ویژه پایتون نیستن. یولو یک الگوریتم هست که می‌تونه با زبان‌های مختلفی بر پایه فریمورک‌های یادگیری عمیق موجود پیاده سازی بشه. OpenCV هم یک کتابخونه متن باز نوشته شده با سی و سی پلاس پلاس هست که خوشبختانه API برای پایتون در اختیار گذاشته و شما می تونید به عنوان یک برنامه نویس پایتون اون رو یاد بگیرید. اصولا چون پایتون کدنویسی شیرین تری داره راه رو هموار می کنه برای یادگیری. ممکنه شما اونچه یاد می گیرید رو در یک پروژه با پایتون به کار بگیرید و به خوبی و با سرعت مناسب هم جواب بگیرید. یک جایی هم به دلیل نیاز به سرعت بالا و محدودیت سیستم نیاز باشه که اونچه با پایتون ساختید رو با سی پلاس پلاس بازگردانی کنید.
      به همین دلیل OpenCV کتابخونه خوبیه که شما در صورت نیاز بعد از آشنایی با توابع اون با زبان پایتون در صورت نیاز می تونید مهاجرت بدین. همین طوره در مورد ESP32 در رابطه با اینترنت اشیا که میشه با میکروپایتون (+) پیاده سازی کرد و اگر جایی نیاز به سرعت بالا بود به دلیل محدودیت ظرفیت برد ممکنه نیاز باشه که پروتوتایپ ایجاد شده با میکروپایتون رو مهاجرت بدید به آردوینو و سی.

      این به این معنی نیست که پایتون در کل برای پروژه های بزرگ مناسب نیست. به هیچ وجه. در قلب یوتیوب، اینستاگرام و بسیاری وبسایت های دیگه پایتون به خوبی کار می کنه. وبسایت IconFinder با جنگو نوشته شده و جوابگوی هزاران جستجوی روزانه هست. منتها گاهی سرعت بالا و امکانات پردازشی کم در دسترس (به ویژه در مقیاس پروژه های صنعتی) مهاجرت به زبان سیستمی رو طلب می کنه. که باید پروتوتایپ پایتونی رو به زبان سیستمی منتقل کرد.

  58. محمد وجدانی

    آیا ادامه این راه را خواهید رفت که مثلا قادر باشه علاوه بر تشخیص موقعیت یابی نیز انجام دهد؟

    • مصطفی آصفی

      منظورتون از موقعیت یابی رو متوجه نشدم. منظورتون Bounding Box در بردارنده آبجکت و موقعیت اون در تصویر هست؟ اگر این رو می فرمایید در همین آموزش بیان شده.

  59. محمد وجدانی

    سلام خسته نباشد . یعنی خودمون تعیین میکنیم چی یاد بگیره یا از قبل چیزهایی یادش دادن؟

    • مصطفی آصفی

      سلام به شما. خیر همون طور که در توضیحات آموزش درج شده، ما در این آموزش از یولوی تعلیم یافته با 80 کلاس کوکو دیتاست پیش می ریم.
      در آموزش دیگه ای انشالله به زودی به دیتاست اختصاصی هم می پردازیم.

دیدگاه خود را بنویسید