مدت :

۳ ساعت

قیمت : ۷۵,۰۰۰ تومان
LinkedIn
Twitter
Facebook
Telegram

درباره مدرس 

اطلاعات دوره

توضیحات

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

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

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

 

گوگل کولب چیست ؟

گوگل کولب به انگلیسی Google Colab به زبان ساده یک هاست برای ایجاد، فراخوانی و نگهداری پروژه های ژوپیتر است. سپس می‌توانید پروژه‌های خود را به اتصال به یکی از کامپیوترهای مجازی Virtual Machine گوگل اجرا کنید.

در کولب گوگل شما می‌توانید برای اجرای پردازش‌های خود از پردازشگرهای CPU یا GPU یا TPU (پردازشگرهای مخصوص تنسورفلو TensorFlow) استفاده کنید.

در کولب می توانید با Google Drive و همین طور گیت هاب ارتباط بگیرید. نوت بوک ها و فایل ها را فراخوانی و اشتراک گذاری کنید. همچنین می‌توانید از تکه کدها و الگوریتم های دیگران که به صورت نوت بوک های AI Hub (+) استفاده کنید.

 

دارک نت چیست ؟

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

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

 

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

در گام اول به جمع آوری تعدادی عکس از آبجکت مورد نظر می‌پردازیم. گام دوم برچسب گذاری این عکس‌هاست. باید Bounding Box آبجکت یا آبجکت های مورد نظر در هر عکس ترسیم شود. برای این کار  از نرم افزار LabelImg (+) استفاده می‌کنیم.

در یک درس به شما نشان خواهم داد که در بسیاری موارد می‌توانید از عکس‌های برچسب گذاری شده دیتاست هایی مثل Open Images Dataset گوگل استفاده کنید.

گام سوم ابزارشناسی است. در کولب گوگل شما در واقع نوت بوک ژوپیتر می‌سازید. در قلب نوت بوک هم آی پایتون قرار دارد. پس برای یک درک عمیق، اول به این سوال جواب می‌دهیم که IPython چیست ؟ سپس به درک و نصب و راه اندازی Jupyter می‌پردازیم. آنگاه با هم می‌بینیم که چطور باید در کولب گوگل یک دفترچه ژوپیتر ایجاد و به یک VM متصل کرد.

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

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

 

این آموزش بی‌نظیر است زیرا
  • برای Yolo v2 و Yolo v3 و Yolo v4 قابل استفاده است.
  • برای تشخیص افراد هم می‌توان از آن استفاده کرد.
  • تشخیص اشیا از دیتاست اختصاصی را می‌آموزید.
  • فرآیند یادگیری یا Training را در یک شبکه عصبی تجربه می‌کنید.
  • می‌آموزید که از GPU های رایگان کولب برای یادگیری عمیق استفاده کنید.
  • با مفهوم برنامه نویسی ادیبانه Literate Programming آشنا می‌شوید.

 

پیشنیاز

آموزش YOLO – تشخیص اشیا با پایتون و OpenCV

 

کلیدواژگان

تشخیص اشیا چیست ؟ – Object Detection چیست ؟ – تشخیص اشیای اختصاصی با YOLO – تشخیص اشیای سفارشی با YOLO – آموزش تشخیص اشیا از دیتاست اختصاصی – تشخیص اشیا با پایتون – تشخیص آبجکت اختصاصی با YOLO – آموزش یولو – آموزش YOLO – فرق یولو 3 و یولو 4 – آموزش Yolo v4 – تشخیص اشیا با یولو – تشخیص اشیا شخصی – Colab – آموزش ژوپیتر – IPython چیست – دارک نت چیست – فرق Iteration و Epoch – معنی Batch Size

سرفصل‌ها

سرفصل‌ها

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

درس یکم – تهیه عکس برای تعلیم YOLO
– یادآوری YOLO v3 تعلیم دیده با دیتاست کوکو
– انتخاب عکس آبجکت مورد نظر از موتور جستجو
– افزونه دریافت همه عکس های یک صفحه در Microsoft Edge
– افزونه دریافت همه عکس های یک صفحه در Google Chrome
– افزونه دریافت همه عکس های یک صفحه در Muzilla Firefox
– آشنایی با بانک تصاویر Open Image Dataset V6
– ایده هایی برای اشیای سفارشی ممکن برای تشخیص یولو
– تشخیص هویت فرد با یا تشخیص چهره با یولو
– تشخیص حیوانات خاص یا اشیای خاص با یولو
– توصیه پیرامون یافتن و دریافت عکس‌های مناسب

درس دوم – برچسب گذاری عکس برای یولو
– معنی Annotation چیست ؟
– آشنایی با مفهوم و انواع برچسب گذاری در بینایی کامپیوتر
– آشنایی با نرم افزار LalelIMG – نرم افزار رایگان و متن باز برچسب گذاری تصویر
– آموزش برچسب گذاری عکس با نرم افزار LabelIMG
– تعریف کلاس ها و مفهوم مختصات و شماره کلاس در فایل متنی برچسب عکس

درس سوم – استفاده از تصویرهای برچسب دار گوگل
– پایگاه تصاویر OID یا Open Images Dataset چیست ؟
– نحوه دانلود عکس از OID به صورت کلی
– آموزش دانلود عکس های یک یا چند دسته از OID
– آشنایی با OIDv4_Toolkit برای دانلود عکس از Open Images Dataset
– تبدیل سیستم برچسب گذاری OID به YOLO با استفاده از کد پایتونی

درس چهارم – ابزارشناسی : آی پایتون Ipython چیست؟
– مقدمه ای به ابزارهای کدنویسی
– رابطه آی پایتون با ژوپیتر نوت بوک با گوگل کولب
– IPython یا آی پایتون چیست ؟
– تاریخچه IPython
– آموزش نصب آی پایتون و شروع کار با آن
– دستور ipython برای دریافت و راه اندازی
– تفاوت IPython با Python در تکمیل کدها
– فرق آی پایتون با شل پایتون در فراخوانی فایل ها
– فرق آی پایتون و پایتون در راهنما یا help دستورات
– چرا shell برای زبان برنامه نویسی لازم است؟
– توضیح پایانی و مقدمه رابطه IPython و Jypyter

درس پنجم – ابزارشناسی: دفترچه ژوپیتر Jupyter چیست؟
– دونالد کنوث کیست؟
– گریزی به این که TeX چیست و LaTeX چیست ؟
– مفهوم Literate Programming چیست ؟
– معنی Notebook چیست و دفترچه محاسباتی مجازی چه می‌کند ؟
– دفترچه ژوپیتر Jupyter چیست ؟
– تاریخچه نوت بوک ژوپیتر
– آشنایی با پروژه و وبسایت Jupyter
– آشنایی با JupyterLab و Voila
– آموزش نصب Jupyter با بسته آناکوندا
– فرق Anaconda و miniconda
– راه اندازی ژوپیتر و نوشتن اولین کد و اجرا
– نوشتن متن با Markdown و نمایش نتیجه

درس ششم – ابزارشناسی: گوگل کولب چیست ؟
– معنی Colab و Google Colaboratory
– سرویس Colab چیست ؟
– انواع پردازشگر قابل استفاده در کولب
– شروع کار با Google Colab
– ایجاد یک نوت بوک ژوپیتر در کولب گوگل
– افزودن کد و متن با نوت بوک Colab
– امکان اشتراک گذاری نوت بوک در گیت هاب و گوگل درایو
– امکان فراخوانی فایل ها از Drive
– محدودیت VM یا ماشین مجازی (Virtual Machine) کولب
– محدودیت منابع پردازشی در کولب گوگل
– همراهی AIHub با Colab
– اتصال Colab به سیستم local با استفاده از وب سوکت
– جمع بندی توانایی های کولب گوگل

درس هفتم – مدیریت GPU با Nvidia-smi
– تولکیت nvidia-smi چیست ؟
– تحلیل خروجی دستور nvidia-smi
– ایجاد نوت بوک در کولب
– معنی تخصیص بار پردازشی GPU در NVIDIA
– تنظیم پردازشگر کولب روی GPU
– معنی GPU و Name و Temp و Pref در خروجی nvidia-smi
– بررسی اتصال به GPU در نوت بوک

درس هشتم – اتصال کولب به درایو گوگل
– آپلود فایل تصویرها در درایو گوگل
– ایجاد یک نوت بوک در کولب
– تنظیم GPU به عنوان پردازنده در Notebook Setting
– بررسی اتصال جی پی یو در لینوکس با دستور !nvidia-smi
– استفاده از API درایو در کولب با فراخوانی drve از google.colab
– اتصال به درایو در لینوکس با دستور mount از ماژول drive
– ساخت لینک نمادین Symbolic Link با دستور ln
– بررسی محتوای پوشه با دستور ls پس اتصال

درس نهم – نصب دارک نت و تنظیم اختصاصی آن
– دارک نت چیست ؟
– فریمورک شبکه عصبی چیست؟
– زبان CUDA چیست ؟
– آموزش نصب دارک نت با کلون کردن گیت هاب
– معرفی دارک نت اصلاح شده یولو 4
– کلون دارک نت با استفاده از مخزن AlexeyAB
– تنظیم دارک نت با فایل Makefile
– استفاده از GPU با تنظیم GPU=1 در فایل دارک نت
– استفاده از OPENCV با تنظیم آن در دارک نت
– شتاب بخشی به پردازش GPU با فعال کردن کتابخانه CUDNN
– ویرایش استریمی فایل با دستور sed و ذخیره در خود فایل با فلگ -i
– کامپایل مخزن با دستور make و معنی آن

درس دهم – تنظیم پارامترهای یادگیری یولو
– نحوه یادگیری YOLO چگونه است؟
– مفهوم Stride پیش فرض 32 یولو
– معنی Batch در یادگیری عمیق و YOLO
– معنی Iteration و ارتباط آن با Batch Size
– تفاوت Number of Batches و Batch Size
– مفهوم Epoch یا دوره یادگیری با طرح مثال
– فرق Iteration و Epoch
– معنی Max_batches در یولو و تاثیر آن روی تعداد دور و تکرار یادگیری
– معنی Subdivision و Mini_batches در یولو
– معنی Filters و Classes و State در یولو
– دستورالعمل یادگیری سفارشی در Yolo V4
– ایجاد یک کپی از فایل تنظیمات یولو نسخه 3
– اعمال تنظیمات شخصی در یولو با دستور sed در لینوکس
– بررسی خروجی و تنظیمات شخصی سازی شده

درس یازدهم – ایجاد فایل‌های Names و Data در دارک نت
– ساخت فایل obj.names و نوشتن نام کلاس ها با دستور echo
– فرق echo و echo -e در خوانش کاراکترهای Escape
– ساخت فایل obj.data و نوشتن مسیر Train و Test با دستور Echo
– نوشتن مسیر خوانش نام کلاس های اشیا از obj.names با دستور اکو
– ایجاد مسیر ذخیره سازی وزن ها پس از تعلیم در درایو گوگل

درس دوازدهم – فراخوانی دیتاست عکس ها در پروژه
– ایجاد یک پوشه با دستور mkdir
– اکسترکت فایل زیپ عکس ها با دستور unzip
– استفاده از ماژول glob برای استخراج مسیر عکس ها
– درج نام عکس ها در فایل train.txt

درس سیزدهم – دانلود وزن های آماده و آغاز فرآیند آموزش شبکه
– مفهوم یادگیری انتقالی یا Transfer Learning
– دریافت فایل وزن های پیش تعلم یافته یولو با دستور wget
– آموزش دارک نت با دستور darknet.exe یا ./darknet در لینوکس
– آشنایی با پارامترهای دستور darknet برای تعلیم یا Training یولو
– ذخیره backup وزن ها پس از 100 و 1000 و پایان تکرارها در درایو گوگل

درس چهاردهم – آزمایش کیفیت یادگیری یولو
– آزمایش وزن تعلیم یافته دیتاست اختصاصی در پایتون و OpenCV
– نکته هایی برای نحوه آگاهی از کافی بودن تکرارها
– پایان دادن به آموزش بر اساس map یا avg
– نکته هایی برای بهبود تشخیص اشیا یا فرآیند آموزش شبکه

درس پانزدهم – جمع بندی و اندیشه پردازی
– دستاوردهای این آموزش
– امکان استفاده از این روش برای YOLO v4
– امکان تشخیص چند آبجکت اختصاصی با این روش
– بهینه سازی و کارهای آینده

نظرات (97)

97 دیدگاه برای آموزش تشخیص اشیای اختصاصی با YOLO

  1. حمید شعبانی (خریدار محصول)

    سلام
    دوره بسیار عالی هست
    لطفا در خصوص نحوه استفاده از gpu در پایتون برای yolo و open cv هم آموزش تهیه فرمایید
    ممنون

    • مصطفی آصفی

      سلام و سپاس از بازخوردتون. به روی چشم. البته من در حال حاضر تو حوزه بینایی فعالیت نمی کنم ولی چون این موضوع دغدغه بسیاری دوستان هست تلاش می کنم از دوستان مدرسی رو برای این بحث حذب کنم.

  2. amir amiri (خریدار محصول)

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

    output = net.forward(out_names)

    error: OpenCV(4.5.1) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-kh7iq4w7\opencv\modules\dnn\src\layers\convolution_layer.cpp:380: error: (-2:Unspecified error) Number of input channels should be multiple of 3 but got 1 in function ‘cv::dnn::ConvolutionLayerImpl::getMemoryShapes’

    چطور می تونم برطرفش کنم ؟

    • مصطفی آصفی

      سلام و سپاس از محبت شما. می بخشین جوابتون دیر شد. به نظرم ساده ترین کار اینه که با استفاده از پایتون مثلا با این نمونه کد (+) تصویرها را به سه کانالی تبدیل کنید. یا گوگل کنید:‌
      convert grayscale to 3 channel python

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

    سلام وقتتون به خیر باشه، من تمام مراحل دوره رو به صورت جز به جز انجام دادم اما موردی که وجود داره اینکه زمانی که مدل رو به حالت تعلیم در میارم در اخرین سلول از نوت بوکی قراردادید زمان Train کردن مدل هی بیشتر و بیشتر میشه من تمام مراحل رو دقیقا با همون فرمولی که ذکر شده انجام دادم، فقط با این تفاوت که من نمی خواستم ماسک رو شناسایی کنم دیتاست خودم بر اساس یک شی خاص تعیین کردم، در ضمن کلاس هام درسته، اون فرمولی که برای فیلتر ها batch ها و sub batch ها و … رو رعایت کردم. اما دقیقا نمیدونم مشکل از کجاست، ممنون میشم هر چه سریعتر من رو راهنمایی بفرمایید.

    • مصطفی آصفی

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

  4. darabi (خریدار محصول)

    استاد بزرگوار ممنونم از آموزش بسیار خوبتون.
    چطور در کدمون می تونم تعدا پیکسل های داخل هر bounding box را بدست بیارم و بزرگترین bounding box را مشخص کنم و نشان دهم؟

    • مصطفی آصفی

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

  5. darabi (خریدار محصول)

    سلام استاد بزرگوار،
    ممنونم از آموزش بسیار خوبتون. من چند تا سوال دارم ممنون میشم لطف کنید و راهنمایی بفرمایید.
    استاد، من از تصاویر دوربین حرارتی استفاده می کنم. متاسفانه object detection با کدی که داریم برای این تصاویر انجام نمی شه. من از دستورات زیر هم استفاده کردم متاسفانه درست نشد.
    while True:
    success, frame = cap.read()

    # Convert the frame to grayscale
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # Apply color map for thermal visualization
    thermal = cv2.applyColorMap(gray, cv2.COLORMAP_JET)

    # Resize the frame for YOLOv3-tiny input size
    resized_frame = cv2.resize(thermal, (blob_size, blob_size))

    # Create blob from the resized frame
    blob = cv2.dnn.blobFromImage(resized_frame, scalefactor=1/255, size=(blob_size, blob_size), mean=(0, 0, 0),
    swapRB=True, crop=False)

    • مصطفی آصفی

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

  6. M

    با سلام و تشکر از آموزش مفیدتون:
    استاد اگر بخواهیم بر روی یکسری از تصاویر که حاشیه نویسی هم شده،شبکه آموزش داده شده در این درس را test کنیم و MAP خودکار محاسبه شود چه کاری باید انجام دهیم.
    تشکر

    • مصطفی آصفی

      سلام و ممنون از لطفتون خوشحالم که مفید بوده. برای محاسبه خودکار mAP همون طور که تو مستندات مخزن گیت هاب هم مشاهده می کنید باید انتهای دستور darknet (موقع تعلیم) -map رو اضافه کنید:
      در مورد تست عکس حاشیه نویسی شده لطفا سوالتون رو بیشتر توضیح بدین. حاشیه نویسی منظورتون چی هست و چه چیزی رو روی تصاویر می خواین تشخیص بدین؟

  7. sabouriniloofar12@gmail.com

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

    • مصطفی آصفی

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

  8. sabouriniloofar12@gmail.com

    سلام اقای آصفی من یه مشکل خوردم اینکه وقتی دستور اخر برای ترین داده ها رو میزنم انگار فایلم نصفه اجرا میشه و اصلا برای ترین نمیره الان 3 روزه درگیرشم و نمیدونم مشکل کجاست دقیقا تا اخر این دستور اجرا میشه:
    CUDA-version: 11080 (12000), cuDNN: 8.7.0, GPU count: 1
    OpenCV version: 4.2.0
    yolov3_training
    0 : compute_capability = 750, cudnn_half = 0, GPU: Tesla T4
    net.optimized_memory = 0
    mini_batch = 4, batch = 64, time_steps = 1, train = 1
    layer filters size/strd(dil) input output
    0 Create CUDA-stream – 0
    Create cudnn-handle 0
    conv 32 3 x 3/ 1 416 x 416 x 3 -> 416 x 416 x 32 0.299 BF
    1 conv 64 3 x 3/ 2 416 x 416 x 32 -> 208 x 208 x 64 1.595 BF
    2 conv 32 1 x 1/ 1 208 x 208 x 64 -> 208 x 208 x 32 0.177 BF
    3 conv 64 3 x 3/ 1 208 x 208 x 32 -> 208 x 208 x 64 1.595 BF
    4 Shortcut Layer: 1, wt = 0, wn = 0, outputs: 208 x 208 x 64 0.003 BF
    5 conv 128 3 x 3/ 2 208 x 208 x 64 -> 104 x 104 x 128 1.595 BF
    6 conv 64 1 x 1/ 1 104 x 104 x 128 -> 104 x 104 x 64 0.177 BF
    7 conv 128 3 x 3/ 1 104 x 104 x 64 -> 104 x 104 x 128 1.595 BF
    8 Shortcut Layer: 5, wt = 0, wn = 0, outputs: 104 x 104 x 128 0.001 BF
    9 conv 64 1 x 1/ 1 104 x 104 x 128 -> 104 x 104 x 64 0.177 BF
    10 conv 128 3 x 3/ 1 104 x 104 x 64 -> 104 x 104 x 128 1.595 BF
    11 Shortcut Layer: 8, wt = 0, wn = 0, outputs: 104 x 104 x 128 0.001 BF
    12 conv 256 3 x 3/ 2 104 x 104 x 128 -> 52 x 52 x 256 1.595 BF
    13 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    14 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    15 Shortcut Layer: 12, wt = 0, wn = 0, outputs: 52 x 52 x 256 0.001 BF
    16 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    17 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    18 Shortcut Layer: 15, wt = 0, wn = 0, outputs: 52 x 52 x 256 0.001 BF
    19 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    20 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    21 Shortcut Layer: 18, wt = 0, wn = 0, outputs: 52 x 52 x 256 0.001 BF
    22 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    23 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    24 Shortcut Layer: 21, wt = 0, wn = 0, outputs: 52 x 52 x 256 0.001 BF
    25 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    26 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    27 Shortcut Layer: 24, wt = 0, wn = 0, outputs: 52 x 52 x 256 0.001 BF
    28 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    29 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    30 Shortcut Layer: 27, wt = 0, wn = 0, outputs: 52 x 52 x 256 0.001 BF
    31 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    32 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    33 Shortcut Layer: 30, wt = 0, wn = 0, outputs: 52 x 52 x 256 0.001 BF
    34 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    35 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    36 Shortcut Layer: 33, wt = 0, wn = 0, outputs: 52 x 52 x 256 0.001 BF
    37 conv 512 3 x 3/ 2 52 x 52 x 256 -> 26 x 26 x 512 1.595 BF
    38 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    39 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    40 Shortcut Layer: 37, wt = 0, wn = 0, outputs: 26 x 26 x 512 0.000 BF
    41 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    42 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    43 Shortcut Layer: 40, wt = 0, wn = 0, outputs: 26 x 26 x 512 0.000 BF
    44 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    45 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    46 Shortcut Layer: 43, wt = 0, wn = 0, outputs: 26 x 26 x 512 0.000 BF
    47 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    48 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    49 Shortcut Layer: 46, wt = 0, wn = 0, outputs: 26 x 26 x 512 0.000 BF
    50 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    51 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    52 Shortcut Layer: 49, wt = 0, wn = 0, outputs: 26 x 26 x 512 0.000 BF
    53 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    54 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    55 Shortcut Layer: 52, wt = 0, wn = 0, outputs: 26 x 26 x 512 0.000 BF
    56 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    57 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    58 Shortcut Layer: 55, wt = 0, wn = 0, outputs: 26 x 26 x 512 0.000 BF
    59 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    60 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    61 Shortcut Layer: 58, wt = 0, wn = 0, outputs: 26 x 26 x 512 0.000 BF
    62 conv 1024 3 x 3/ 2 26 x 26 x 512 -> 13 x 13 x1024 1.595 BF
    63 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
    64 conv 1024 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BF
    65 Shortcut Layer: 62, wt = 0, wn = 0, outputs: 13 x 13 x1024 0.000 BF
    66 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
    67 conv 1024 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BF
    68 Shortcut Layer: 65, wt = 0, wn = 0, outputs: 13 x 13 x1024 0.000 BF
    69 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
    70 conv 1024 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BF
    71 Shortcut Layer: 68, wt = 0, wn = 0, outputs: 13 x 13 x1024 0.000 BF
    72 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
    73 conv 1024 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BF
    74 Shortcut Layer: 71, wt = 0, wn = 0, outputs: 13 x 13 x1024 0.000 BF
    75 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
    76 conv 1024 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BF
    77 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
    78 conv 1024 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BF
    79 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
    80 conv 1024 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BF
    81 conv 18 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 18 0.006 BF
    82 yolo
    [yolo] params: iou loss: mse (2), iou_norm: 0.75, obj_norm: 1.00, cls_norm: 1.00, delta_norm: 1.00, scale_x_y: 1.00
    83 route 79 -> 13 x 13 x 512
    84 conv 256 1 x 1/ 1 13 x 13 x 512 -> 13 x 13 x 256 0.044 BF
    85 upsample 2x 13 x 13 x 256 -> 26 x 26 x 256
    86 route 85 61 -> 26 x 26 x 768
    87 conv 256 1 x 1/ 1 26 x 26 x 768 -> 26 x 26 x 256 0.266 BF
    88 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    89 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    90 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    91 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    92 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    93 conv 18 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 18 0.012 BF
    94 yolo
    [yolo] params: iou loss: mse (2), iou_norm: 0.75, obj_norm: 1.00, cls_norm: 1.00, delta_norm: 1.00, scale_x_y: 1.00
    95 route 91 -> 26 x 26 x 256
    96 conv 128 1 x 1/ 1 26 x 26 x 256 -> 26 x 26 x 128 0.044 BF
    97 upsample 2x 26 x 26 x 128 -> 52 x 52 x 128
    98 route 97 36 -> 52 x 52 x 384
    99 conv 128 1 x 1/ 1 52 x 52 x 384 -> 52 x 52 x 128 0.266 BF
    100 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    101 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    102 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    103 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    104 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    105 conv 18 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 18 0.025 BF
    106 yolo
    [yolo] params: iou loss: mse (2), iou_norm: 0.75, obj_norm: 1.00, cls_norm: 1.00, delta_norm: 1.00, scale_x_y: 1.00
    Total BFLOPS 65.304
    avg_outputs = 516723
    Allocate additional workspace_size = 149.82 MB
    Loading weights from darknet53.conv.74…
    seen 64, trained: 0 K-images (0 Kilo-batches_64)
    Done! Loaded 75 layers from weights-file
    Learning Rate: 0.001, Momentum: 0.9, Decay: 0.0005
    Detection layer: 82 – type = 28
    Detection layer: 94 – type = 28
    Detection layer: 106 – type = 28
    Resizing, random_coef = 1.40

    608 x 608
    Create 6 permanent cpu-threads

    • مصطفی آصفی

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

  9. محمدعلی فلاحتی (خریدار محصول)

    سلام عیدتنون مبارک ببخشید یه سوال داستم برای یولو v7 به نظر شما ب ازای هر کلاس چند اپوک لازمه

  10. محمدعلی فلاحتی (خریدار محصول)

    try to allocate additional workspace_size = 149.82 MB
    CUDA allocate done!

    calculation mAP (mean average precision)…
    Detection layer: 82 – type = 28
    Detection layer: 94 – type = 28
    Detection layer: 106 – type = 28
    4
    cuDNN status Error in: file: ./src/convolutional_kernels.cu : () : line: 543 : build time: Mar 3 2023 – 19:11:45

    cuDNN Error: CUDNN_STATUS_BAD_PARAM
    Darknet error location: ./src/dark_cuda.c, cudnn_check_error, line #204
    cuDNN Error: CUDNN_STATUS_BAD_PARAM: Success
    سلام معیار Map رو گزاشتم و با این ارور مواجه شدم

    • مصطفی آصفی

      سلام وقت بخیر. بله ظاهرا یه مشکل (+) این مخزن با دو کلاس و این فلگ هست.

  11. محمدعلی فلاحتی (خریدار محصول)

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

    • مصطفی آصفی

      سلام وقت بخیر. عبارت map رو به انتهای فرمان train به صورت پایین اضافه کنید.
      !./darknet detector train custom_data/labelled_data.data cfg/yolov3_custom.cfg custom_weight/darknet53.conv.74 -dont_show -map
      به این ترتیب یک فایل chart.png تو پوشه darknet تشکیل میشه.

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

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

    • مصطفی آصفی

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

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

    سوال زیر سوال چندین نفر است که ویدئو را تهیه کرده اند و اکنون به صورت جداگانه سوال کردیم اما متاسفانه حذف می
    ردد سوال ما.
    با سلام خدمت جناب آصفی
    من به دقت آموزش رو دیدم به یک سوال برخوردم، در آموزش می فرمایید بر اساس /batch=1/batch=64 و max_batches = 500200/max_batches = 6000
    یک تعداد Iteration مشخصی با توجه به 50 نمونه انسان های با ماسک و بدون ماسک باید طی شود اما در اینجا تا 1100 هم رفت و خودم قطع کردم لطفا راهنمایی بفرمایید طبق گفته خودتون باید تعداد نمونه (50) تقسیم بر تعداد بچ (64)بشه که عددی زیر یک می شود.
    باتشکر

    • مصطفی آصفی

      سلام به شما. پایین برای دوستتون توضیح دادم.

  14. مهدی

    با سلام و تشکر از آموزش خوبتون
    با توجه به اینکه
    ‘s/batch=1/batch=64/’
    و
    ‘s/max_batches = 500200/max_batches = 6000/’
    و اینکه تعداد عکس ها 50 هست باید epoch های بسیار کمی را داشته باشیم اما در اینجا با اجرا ظاهرا تعداد نامحدود iteration داریم و من آن را تا 1000 و save شدن فایل yolov3_training_1000.weights تجربه کردم و خودم آموزش را قطع کردم لطفا این مورد را راهنمایی بفرمایید

    • مصطفی آصفی

      سلام به شما. درس ۱۰ دقیقه ۱۳ این رو توضیح دادم. نمونه های ما صرفا آموزشی هست و اونجا هم گفتم که اگه ۶۴ تا عکس بود هر بچ ما شامل همه نمونه ها بود. یا اگه ۶۴۰ تا بود هر بچ ما ۶۴ تا عکس رو در برمی گرفت پس ۱۰ تا بچ داشتیم. دقیقه ۱۳:۳۱ تاکید کردم که «اگه نمونه های ما ۶۴ تا بود رندتر بود نه؟». یعنی الان که نمونه های ما صرفا جنبه درس آموزشی دارن و ۵۰ تا نیستن با این که بچ سایز رو ۶۴ گذاشتیم ولی یک بچ داریم همون ۵۰ تا رو در بر می گیره.

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

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

    gcc -Iinclude/ -Isrc/ -DOPENCV `pkg-config –cflags opencv` -DGPU -I/usr/local/cuda-11.6/include/ -DCUDNN -Wall -Wno-unused-result -Wno-unknown-pragmas -Wfatal-errors -fPIC -Ofast -DOPENCV -DGPU -DCUDNN -c ./src/gemm.c -o obj/gemm.o
    In file included from ./src/utils.h:5:0,
    from ./src/gemm.c:2:
    include/darknet.h:11:14: fatal error: cuda_runtime.h: No such file or directory
    #include “cuda_runtime.h”
    ^~~~~~~~~~~~~~~~
    compilation terminated.
    Makefile:89: recipe for target ‘obj/gemm.o’ failed
    make: *** [obj/gemm.o] Error 1

    • مصطفی آصفی

      سلام وقت بخیر. طبق این خطا فایل CUDA_RUTIME.H رو پیدا نمی کنه. طبق این گزارش (+) باید با تضحیح نسخه CUDA تو دستور NVCC درست کار کنه که البته خودتونم پایین نوشتین نسخه رو اصلاح کردین. شاید نسخه دیگه باید استفاده کنید. این پرسش و پاسخ (+) هم بررسی و نتیجه رو اعلام کنید.

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

    سلام وقت بخیر، در حال حاضر که نسخه Cuda 11.6 روی colab نصب هست و من فایل ها آموزش را دارم اجرا می کنم در زمان make کردن به خطای زیر میرسم. لطفا راهنمایی کنید. ضمنا فایل را هم NVCC= /usr/local/cuda-11/bin/nvcc اصلاح کردم. متشکرم

    gcc -Iinclude/ -Isrc/ -DOPENCV `pkg-config –cflags opencv` -DGPU -I/usr/local/cuda/include/ -DCUDNN -Wall -Wno-unused-result -Wno-unknown-pragmas -Wfatal-errors -fPIC -Ofast -DOPENCV -DGPU -DCUDNN -c ./src/convolutional_layer.c -o obj/convolutional_layer.o
    ./src/convolutional_layer.c: In function ‘cudnn_convolutional_setup’:
    ./src/convolutional_layer.c:148:5: warning: implicit declaration of function ‘cudnnGetConvolutionForwardAlgorithm’; did you mean ‘cudnnGetConvolutionForwardAlgorithm_v7’? [-Wimplicit-function-declaration]
    cudnnGetConvolutionForwardAlgorithm(cudnn_handle(),
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    cudnnGetConvolutionForwardAlgorithm_v7
    ./src/convolutional_layer.c:153:13: error: ‘CUDNN_CONVOLUTION_FWD_SPECIFY_WORKSPACE_LIMIT’ undeclared (first use in this function); did you mean ‘CUDNN_CONVOLUTION_FWD_ALGO_DIRECT’?
    CUDNN_CONVOLUTION_FWD_SPECIFY_WORKSPACE_LIMIT,
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    CUDNN_CONVOLUTION_FWD_ALGO_DIRECT
    compilation terminated due to -Wfatal-errors.
    Makefile:89: recipe for target ‘obj/convolutional_layer.o’ failed
    make: *** [obj/convolutional_layer.o] Error 1

  17. مهدی

    با سلام و احترام:
    تشکر از آموزش مفیدتون
    در حال ساختن فایل اجرایی برای دارکنت با !make حتی با کدهای خودتان خطای زیر داده می شود تمامی فرآیند را چندین بار چک نموده اما مشکل رفع نگردید و می گویند برای CUDAهای جدید این خطا وجود دارد.تشکر
    nvcc warning : The ‘compute_35’, ‘compute_37’, ‘compute_50’, ‘sm_35’, ‘sm_37’ and ‘sm_50’ architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning

    • مصطفی آصفی

      سلام و ممنون از اطلاعتون. این البته خطا نیست اخطاره و کدتون بعد از اون باید اجرا بشه. خطای nvcc fatal که دریافت نمی کنید درسته؟ می تونید برای نادیده گرفتن این اخطار بالا کدتون از این کد که خودش هم پیشنهاد کرده استفاده کنید:
      -Wno-deprecated-gpu-targets to suppress warning

  18. محمدعلی فلاحتی (خریدار محصول)

    سلام امیدواروم حالتون خوب یاشه ی سوال داشتم این که موقع آموزش ما ده کلاس داریم و 1500 داده اما بعد از 150 مرحله colab رمش پر میشه و راه قطع میشه ؟؟؟

    • مصطفی آصفی

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

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

    عرض سلام و خسته نباشید
    ضمن تشکر از آموزش عالیتون یه سوال داشتم
    من میخوام بعد از تشخیص اشیاء اونها رو ببرم و توی عکس های جداگانه نمایش بدم همونجایی که دستور cv2.rectangle هست تصویر رو اندازه x:x+w , y:y+h میبرم ولی یه قسمت دیگه از تصویر نمایش داده میشه چطور میتونم این کار رو انجام بدم

    • مصطفی آصفی

      سلام سلامت باشید. کد این لینک (+) می تونه مفید باشه.
      برای نمونه کدهای بیشتر گوگل کنید:
      how extract object as picture yolo

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

    سلام مهندس وقتتون به خیر ممنونم که با صبر و حوصله پاسخگوی سوالات بنده بودید.
    بنده با توجه به راهنمایی های شما و تحیقی که خودم انجام دادم به این نتیجه رسیدم که سایز 608*608 تقریبا مرز خوانایی و ناخوانایی کلمات هستند. به همین دلیل train قبلی رو با همان عکس ها و همان شرایط دوباره انجام دادم ولی با blob size==608*608 نتیجه خیلی بهتر شد و از 34 نمونه تستی 31 نمونه رو عالی تشخیص داد. البته فقط با یک لیبل و اون هم فقط جدول فاکتور رو تشخیص بده آموزش رو انجام دادم. البته با blob size == 800*800 هم آموزش دادم .ولی هنوز تست ازش نگرفتم. جواب اون رو هم اینجا مینوسم ممکن هست این مطالب برای باقی دوستان مفید باشه.
    مهندس بنده به انکر باکس های یولو رو تغییر ندادم . به نظر شما تغییر بدهم برای کار ما بهتر هست؟

    • مصطفی آصفی

      سلام و سپاس از این که تجربه خودتون رو به اشتراک گذاشتین. به نظرم تنظیمات خود یولو رو تغییر ندین. وقتی همه چیز متغیر بشه کار سخت میشه. در عوض توصیه می کنم نسخه های جدید یولو رو بررسی و امتحان کنید. شما الان ساختار یولو رو می شناسید و حتی اگه دانش زبانی خوبی نداشته باشین می تونید آموزش های زبان اصلی یوتیوب رو سریع شبیه سازی و مهاجرت کنید. یولوی ۷ (YOLO 7) یا نسخه ۴ جای بررسی دارن.

  21. سعیده (خریدار محصول)

    سلام ممنون از آموزش خوبتون

    یه سوالی که داشتم اینه که من برای حدود 300 تصویر آموزش رو انجام دادم ولی مشکلی که هست اینه که در همون ایپوک اول، ترین انجام میشه و به همین دلیل yolov3_training_last.weight برای من ایجاد نمیشه چطور می تونم وزن های آموزش دیده شده را بردارم و امتحان کنم؟

    • مصطفی آصفی

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

      پی‌نوشت: در کل می خوام تاکید کنم که دست به گوگل باشین. معمولا اغلب مشکلات و خواسته های ما رو دیگران قبل ما داشتن.

  22. Daberi (خریدار محصول)

    مهندس آصفی بسیار سپاسگزارم از اینکه وقت گزاشتید و به سوالات زیاد بنده جواب دادید.
    الان یک ترین انجام دادیم و نتیجه میشه گفت خوب هست .باکسی که دور جدول میندازه توی تست از لحاظ ارتفاع عالی هست ولی متاسفانه از لحاظ عرض جدول روی محور y حدودا 10 درصد(تقریبا یک تا 1.5 سانت کمتر یا بیشتر باکس میندازه) خطا داره. چه روی نمونه هایی که باهاش ترین شده و چه روی نمونه هایی که باهاش ترین نشده.
    ما آموزش رو با عکس های معمولا بالای 1024 پیکسل انجام دادیم.ولی blob موقع آموزش 416*416 بوده ،ممکنه به این دلیل باشه؟

    • مصطفی آصفی

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

  23. Daberi (خریدار محصول)

    سلام مهندس .ممنون بابت آموزش روان و از پایه نکات رو تشریح کردید.
    الان بنده روی یک پروژه واقعی آنالیز فاکتور کار میکنم.چند تا سوال داشتم ممنون میشم راهنمایی بفرمایید.
    1 // شما فرمودید ورودی تصویر باید قابل تقسیم به 32 باشد. الان من با گوشی خودم عکس گرفتم و ابعادش شده (1841*3998 ) با ( 96 dpi و 24 bit ) الان بنده روی همین عکس لیبیل بزنم و برای train استفاده کنم بعدا برای تست و محیط واقعی که کاربر ممکن هست با هر سایزی با گوشیش عکس بگیره و برای ما بفرسته ، یولو میتونه اشیا رو به درستی تشخیص بده؟
    2 // اینکه کاربر ها با هر نوع فرمت ممکنه برای ما عکس ارسال کنند هم آیا مشکلی برای تشخیص توسط یولو ایجاد میکنه؟
    3 // مهندس جان ما الان پنج تا کلاس تعریف کردیم با توجه به اینکه ما روی فاکتور کالا کار میکنیم وهمه محتواش متن و جدول هست ،نیازی به 80 تا آبجکت خود یولو نداریم؟ یا بهتر هست از اون 80 تا هم موقع train استفاده کنیم.؟؟
    4 // جناب آصفی ما یک مجموعه دیتا 3000 هزار تایی از عکس فاکتورها آماده کردیم به نظر شما کافی هست؟زیاد نیست؟
    5 // مهندس با توجه به اینکه ما به تصاویر رنگی نیاز نداریم. بهتر هست هم موقع train و هم موقعیکه عکس ارسالی توسط کاربر رو به یولو میدهیم عکس ها را خودمان سیاه و سفید کنیم؟؟ برای آموزش و تشخیص تاثیر بهتری داره؟

    • مصطفی آصفی

      سلام سلامت باشین. در مورد سوالاتون پایین براتون توضیح میدم اما سوالاتتون نشون میده که آموزش رو با دقت ندیدین و شاید بیشتر روی اجرای کدها مشغول بودین. خیلی مهمه که مفهوم ابزاری که استفاده می کنید رو عمیق درک کنید. درک عمیق در وهله اول روشن می کنه که مناسب کار هست یا نه.
      ۱- بهتره ورودی دریافتی از کاربر رو به شکل مناسب تبدیل و بعد وارد یولو کنید. ساخت blob (+) البته این موضوع رو مدیریت می کنه اما خوب اگه نسبت ابعادی شما خیلی متفاوت باشه به هر حال اعوجاج روی دقت تاثیر می گذاره.
      ۲- فرمت رو کنترل کنید تا یک فرمت قابل ارسال باشه یا میتونید از کاربر چند نوع عکس رو دریافت کنید و پشت صحنه قبل از ورود به شبکه اون رو تبدیل کنید.
      ۳- نه دیگه نیازی نیست.
      ۴- به نظر خوبه ولی نمیشه قطعی نظر داد. باید دیتاست در برگیرنده گوناگونی حالت های یک پدیده باشه. یه وقت هست شما با گربه سروکار دارید که انواع مختلف و حالت های مختلف می تونه داشته باشه و یه وقت هست با ماسک که خیلی گوناگونی محدودتری داره.
      ۵- بله عکس GrayScale تک کانالی رو هم موقع تعلیم و هم موقع تست معیار قرار بدین و از کاربر هم که می گیرید (کاربر هر طور که بارگذاری کرد) شما پشت صحنه تبدیل کنید.

  24. رضا

    با سلام و خسته نباشید خدمت استاد عزیز، اگر بخواهیم برای آموزش مدلی جهت object detection از yolo استفاده کنیم، که این مدل 500 کلاس از اشیا رو بتونه تشخیص بده، می تونیم از colab استفاده کنیم ؟ چون با توجه به محدودیت های colab و بالا بودن زمان آموزش ممکنه به مشکل بر بخوریم. و برای کم کردن زمان آموزش به کمک transfer learning چگونه باید عمل کنیم که دقت خوبی بگیریم؟

    • مصطفی آصفی

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

  25. فولادگر (خریدار محصول)

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

    • مصطفی آصفی

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

  26. farnoosh_heidary@yahoo.com (خریدار محصول)

    سلام وقتتون بخیر
    ممنونم بابت دوره عالی،
    من دیتاستم مستطیلی بود، ولی با همون سایر ۴۱۶ یولو رو ترین کردم، اما موقع تست روی تصویر چندین باکس می افته، میخواستم بدونم علتش چیه

    • مصطفی آصفی

      سلام و ممنون از انرژی خوبتون. شاید من خوب متوجه نشدم اما اگه منظورتون اینه که روی یک شی چند تا مستطیل ترسیم میشه شاید دارید از یولو ۴ استفاده می کنید که این کار درش طبیعیه. در هر صورت می تونید موقع ترین (دستور !./darknet) این فلگ رو به انتهای دستور اضافه کنید:
      -thresh 0.5
      شبیه این
      !./darknet detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights -dont_show test.mp4 -i 0 -out_filename results.avi -thresh 0.5

  27. علی

    سلام من وقتی میخوام یولو4 رو تست کنم این ارور رو میده ، قبلا وقتی ورژن اوپن سی وی رو تغییر میدادم تغییر میکرد ولی الان با تغییر دادن ورژنم درست نمیشه ، میشه گفت بیشتر ورژن ها رو تست کردم کتوی سایت های مختلف چیزی در مورد راه حلش ننوشته.
    OpenCV(3.4.2) /io/opencv/modules/dnn/src/darknet/darknet_io.cpp:559: error: (-212:Parsing error) Unsupported activation: mish in function ‘ReadDarknetFromCfgFile’

    لطفا راهنمایی کنید

    • مصطفی آصفی

      سلام به شما. دقت کنید که یولوی ۴ روی اوپن سی وی نسخه ۴.۲ و ۴.۳ جواب نمیده. باید نسخه بالاتر یا نسخه برنچ مستر رو نصب کنید. این ایشیو (+) رو ببینید.

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

  28. ابراهیم

    سلام اقای آصفی من در بخش نصی و تنطیم دارک نت به مشکل خوردم بعد از اجرای دستور (make!) درآخر این ارور رو به من میده چکار کنم
    Makefile:92: recipe for target ‘obj/convolutional_kernels.o’ failed
    make: *** [obj/convolutional_kernels.o] Error 1

    • مصطفی آصفی

      سلام به شما. این مقاله (+) و تغییران makefile رو در اون امتحان کنید.

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

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

    سلام استاد ممنون بابت آموزش خوبتون
    یه سوال داشتم
    blob_size دقیقا چیه که تعریف شده؟ من با تغییر مقدار blob_size نتایجم متفاوت میشه و یک blob_size ثابت (مثلا 320 یا 416) برای همه عکس ها جوابدهی کاملی نداره.
    برای blob_size چه مقداری خوبه؟

    • مصطفی آصفی

      سلام به شما آقای بازیار. کم لطفی می کنید. مفهوم بلاب رو جداگانه تو درس ۷ آموزش یولو (+) که شما هم فراگیرش هستین توضیح دادم.
      بلاب در واقع ورودی شبکه عصبی رو می سازه (+). اندازه blob در واقع اندازه تصویر ورودی هست. مثلا ۳۲۰ یعنی یک عکس ۳۲۰ در ۳۲۰ پیکسل از عکس اصلی می سازیم. ورودی شبکه ما هم یک مربع ۳۲۰ در ۳۲۰ از پیکسل‌ها خواهد بود.

  30. جابر پیشدار (خریدار محصول)

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

    • مصطفی آصفی

      سلام و ممنون از لطفتون. در مورد سوال اولتون بله طبیعتا اگه پردازش سیستم با نمایش مشغول نشه سرعت کمی بالاتر می ره. در مورد دوم به طور کلی همون طور که در پایان دوره هم گفتم (شایدم دوره یولوی مقدماتی بود)، شما اگه پردازشتون مبتنی بر GPU باشه روی سیستم سرعت خیلی بالاتر میره. خود سازنده کتابخونه تو سخنرانی تد خودش از جی پی یو استفاده کرد و سال ۲۰۱۶ یک سرعت خیلی خوبی رو ما می بینیم که کارشون داره. بنا به گفته خود وبسایت یولو و آقای ردمون اگه از GPU استفاده کنید تا ۵۰۰ برابر سرعت تشخیص بالا میره.

  31. فائزه فریدونیان (خریدار محصول)

    سلام حسته نباشد ، من زمانیکه وزن هایاموزش داده خودم را میدهم به شبکه در هنگام تست این ارور را مشاهده میکنم ،ممنون میشم راهنمایی کنید
    Traceback (most recent call last):
    File “c:\Users\ParsehRayan\Desktop\yolov3\costem\yolov3.py”, line 77, in
    findobjects(output, frame)
    File “c:\Users\ParsehRayan\Desktop\yolov3\costem\yolov3.py”, line 54, in findobjects
    cv2.putText(img, f'{coco_classes[class_ids[i]].upper()}{int(confidences[i]*100)}%’,
    IndexError: list index out of range
    [ WARN:0] global C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-95hbg2jt\opencv\modules\videoio\src\cap_msmf.cpp (435) `anonymous-namespace’::SourceReaderCB::~SourceReaderCB terminating async callback

  32. علی

    سلام من وزن های یولو4 را اموزش دادم ، زمانیکه میخوام از این وزن ها در برنامه استفاده کنم این ارور میده
    OpenCV(4.1.2) /io/opencv/modules/dnn/src/darknet/darknet_io.cpp:554: error: (-212:Parsing error) Unsupported activation: mish in function ‘ReadDarknetFromCfgStream’

    لطفا راهنمایی کنید

    • مصطفی آصفی

      سلام به شما. بر اساس این لینک (+)، این نسخه اوپن سی وی رو یولوی ۴ پشتیبانی نمی کنه. از آخرین نسخه تو برنچ مستر میشه استفاده کرد.

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

  33. علی عباسیان (خریدار محصول)

    با سلام و خسته نباشید. من یک سوالی داشتم. تمامی مراحل برای شخصی سازی شبکه عصبی را انجام دادم اما مشکلی که هست موقعی که کد شروع شروع به یادگیری و اجرا میکنم(!./darknet detector train data/obj.data cfg/yolov3_training.cfg darknet53.conv.74 -dont_show ) کد اجرا میشود ام بعد از 4 ثانیه اجرای کد متوقف می شود. ممنون میشم کمک کنید.

    در ادامه خروجی ترمینال رو کپی کردم.

    CUDA-version: 11010 (11020), cuDNN: 7.6.5, GPU count: 1
    OpenCV version: 3.2.0
    yolov3_training
    0 : compute_capability = 370, cudnn_half = 0, GPU: Tesla K80
    net.optimized_memory = 0
    mini_batch = 4, batch = 64, time_steps = 1, train = 1
    layer filters size/strd(dil) input output
    0 Create CUDA-stream – 0
    Create cudnn-handle 0
    conv 32 3 x 3/ 1 416 x 416 x 3 -> 416 x 416 x 32 0.299 BF
    1 conv 64 3 x 3/ 2 416 x 416 x 32 -> 208 x 208 x 64 1.595 BF
    2 conv 32 1 x 1/ 1 208 x 208 x 64 -> 208 x 208 x 32 0.177 BF
    3 conv 64 3 x 3/ 1 208 x 208 x 32 -> 208 x 208 x 64 1.595 BF
    4 Shortcut Layer: 1, wt = 0, wn = 0, outputs: 208 x 208 x 64 0.003 BF
    5 conv 128 3 x 3/ 2 208 x 208 x 64 -> 104 x 104 x 128 1.595 BF
    6 conv 64 1 x 1/ 1 104 x 104 x 128 -> 104 x 104 x 64 0.177 BF
    7 conv 128 3 x 3/ 1 104 x 104 x 64 -> 104 x 104 x 128 1.595 BF
    8 Shortcut Layer: 5, wt = 0, wn = 0, outputs: 104 x 104 x 128 0.001 BF
    9 conv 64 1 x 1/ 1 104 x 104 x 128 -> 104 x 104 x 64 0.177 BF
    10 conv 128 3 x 3/ 1 104 x 104 x 64 -> 104 x 104 x 128 1.595 BF
    11 Shortcut Layer: 8, wt = 0, wn = 0, outputs: 104 x 104 x 128 0.001 BF
    12 conv 256 3 x 3/ 2 104 x 104 x 128 -> 52 x 52 x 256 1.595 BF
    13 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    14 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    15 Shortcut Layer: 12, wt = 0, wn = 0, outputs: 52 x 52 x 256 0.001 BF
    16 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    17 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    18 Shortcut Layer: 15, wt = 0, wn = 0, outputs: 52 x 52 x 256 0.001 BF
    19 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    20 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    21 Shortcut Layer: 18, wt = 0, wn = 0, outputs: 52 x 52 x 256 0.001 BF
    22 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    23 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    24 Shortcut Layer: 21, wt = 0, wn = 0, outputs: 52 x 52 x 256 0.001 BF
    25 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    26 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    27 Shortcut Layer: 24, wt = 0, wn = 0, outputs: 52 x 52 x 256 0.001 BF
    28 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    29 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    30 Shortcut Layer: 27, wt = 0, wn = 0, outputs: 52 x 52 x 256 0.001 BF
    31 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    32 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    33 Shortcut Layer: 30, wt = 0, wn = 0, outputs: 52 x 52 x 256 0.001 BF
    34 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    35 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    36 Shortcut Layer: 33, wt = 0, wn = 0, outputs: 52 x 52 x 256 0.001 BF
    37 conv 512 3 x 3/ 2 52 x 52 x 256 -> 26 x 26 x 512 1.595 BF
    38 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    39 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    40 Shortcut Layer: 37, wt = 0, wn = 0, outputs: 26 x 26 x 512 0.000 BF
    41 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    42 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    43 Shortcut Layer: 40, wt = 0, wn = 0, outputs: 26 x 26 x 512 0.000 BF
    44 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    45 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    46 Shortcut Layer: 43, wt = 0, wn = 0, outputs: 26 x 26 x 512 0.000 BF
    47 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    48 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    49 Shortcut Layer: 46, wt = 0, wn = 0, outputs: 26 x 26 x 512 0.000 BF
    50 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    51 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    52 Shortcut Layer: 49, wt = 0, wn = 0, outputs: 26 x 26 x 512 0.000 BF
    53 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    54 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    55 Shortcut Layer: 52, wt = 0, wn = 0, outputs: 26 x 26 x 512 0.000 BF
    56 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    57 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    58 Shortcut Layer: 55, wt = 0, wn = 0, outputs: 26 x 26 x 512 0.000 BF
    59 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    60 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    61 Shortcut Layer: 58, wt = 0, wn = 0, outputs: 26 x 26 x 512 0.000 BF
    62 conv 1024 3 x 3/ 2 26 x 26 x 512 -> 13 x 13 x1024 1.595 BF
    63 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
    64 conv 1024 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BF
    65 Shortcut Layer: 62, wt = 0, wn = 0, outputs: 13 x 13 x1024 0.000 BF
    66 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
    67 conv 1024 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BF
    68 Shortcut Layer: 65, wt = 0, wn = 0, outputs: 13 x 13 x1024 0.000 BF
    69 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
    70 conv 1024 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BF
    71 Shortcut Layer: 68, wt = 0, wn = 0, outputs: 13 x 13 x1024 0.000 BF
    72 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
    73 conv 1024 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BF
    74 Shortcut Layer: 71, wt = 0, wn = 0, outputs: 13 x 13 x1024 0.000 BF
    75 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
    76 conv 1024 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BF
    77 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
    78 conv 1024 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BF
    79 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
    80 conv 1024 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BF
    81 conv 21 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 21 0.007 BF
    82 yolo
    [yolo] params: iou loss: mse (2), iou_norm: 0.75, obj_norm: 1.00, cls_norm: 1.00, delta_norm: 1.00, scale_x_y: 1.00
    83 route 79 -> 13 x 13 x 512
    84 conv 256 1 x 1/ 1 13 x 13 x 512 -> 13 x 13 x 256 0.044 BF
    85 upsample 2x 13 x 13 x 256 -> 26 x 26 x 256
    86 route 85 61 -> 26 x 26 x 768
    87 conv 256 1 x 1/ 1 26 x 26 x 768 -> 26 x 26 x 256 0.266 BF
    88 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    89 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    90 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    91 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    92 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    93 conv 21 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 21 0.015 BF
    94 yolo
    [yolo] params: iou loss: mse (2), iou_norm: 0.75, obj_norm: 1.00, cls_norm: 1.00, delta_norm: 1.00, scale_x_y: 1.00
    95 route 91 -> 26 x 26 x 256
    96 conv 128 1 x 1/ 1 26 x 26 x 256 -> 26 x 26 x 128 0.044 BF
    97 upsample 2x 26 x 26 x 128 -> 52 x 52 x 128
    98 route 97 36 -> 52 x 52 x 384
    99 conv 128 1 x 1/ 1 52 x 52 x 384 -> 52 x 52 x 128 0.266 BF
    100 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    101 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    102 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    103 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    104 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    105 conv 21 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 21 0.029 BF
    106 yolo
    [yolo] params: iou loss: mse (2), iou_norm: 0.75, obj_norm: 1.00, cls_norm: 1.00, delta_norm: 1.00, scale_x_y: 1.00
    Total BFLOPS 65.312
    avg_outputs = 516922
    Allocate additional workspace_size = 12.46 MB
    Loading weights from darknet53.conv.74…
    seen 64, trained: 0 K-images (0 Kilo-batches_64)
    Done! Loaded 75 layers from weights-file
    Learning Rate: 0.001, Momentum: 0.9, Decay: 0.0005
    Detection layer: 82 – type = 28
    Detection layer: 94 – type = 28
    Detection layer: 106 – type = 28
    Resizing, random_coef = 1.40

    608 x 608
    Create 6 permanent cpu-threads

    • مصطفی آصفی

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

  34. علی

    با سلام خدمت شما ، من یولو4 رو مانند یولو3 تنظیم کردم و تعداد کلاس ها و فیلترهاش رو تغییر دادم ، ولی زمانیکه ترین شبکه رو شروع میکنم ، بعضی از لایه ها و ناحیه ها لاس قابل توجهی دارن میخواستم بپرسم ایا راهی برای حل این مشکل هست ؟؟ چون احساس میکنم شاید مراحل تنظیم یولو4 با یولو3 کمی فرق داشته باشه.
    لطفا راهنمایی کنید.

    مثلا نمونه پایین یکی از لایه های ، یکی از بچ هاست

    IOU: 0.646761), count: 212, class_loss = 6.767802, iou_loss = 215.732773, total_loss = 222.5

  35. علی

    با سلام ، من yolov4 رو میخواستم ترین کنم ولی این ارور رو میده ، من در محیط کولب و با gpu برنامه رو ران کردم ، دقیقا نمیدونم این ارور از کجا ناشی میشه ، توی سایت های مختلف گفته بودن با تغییر batch ، میشه مشکلش رو حل کرد ولی من اینکار رو انجام دادم ولی باز جواب نداد . لطفا راهنمایی کنید.

    37 Try to set subdivisions=64 in your cfg-file.
    CUDA status Error: file: ./src/dark_cuda.c : () : line: 492 : build time: Mar 7 2022 – 20:06:17

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

    • مصطفی آصفی

      سلام به شما. این خطا داره می گه که قدرت پردارشی شما کافی نیست. لطفا این دو مورد رو امتحان کنید و ببینید مشکل حل میشه؟
      ۱- تو تنظیمات subdivisons رو مساوی ۳۲ یا حتی ۱۶ قرار بدین
      ۲- اندازه width و height رو کوچک تر کنید. مثلا اگه ۵۱۲ در ۵۱۲ هست به ۲۵۶ تبدیل کنید.

  36. علی

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

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

    • مصطفی آصفی

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

  37. علی

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

    [yolo] params: iou loss: mse (2), iou_norm: 0.75, obj_norm: 1.00, cls_norm: 1.00, delta_norm: 1.00, scale_x_y: 1.00
    Total BFLOPS 65.355
    avg_outputs = 518116
    Allocate additional workspace_size = 12.46 MB
    Loading weights from /mydrive/yolov3/yolov3_training_last.weights…
    seen 64, trained: 505 K-images (7 Kilo-batches_64)
    Done! Loaded 107 layers from weights-file
    Learning Rate: 0.001, Momentum: 0.9, Decay: 0.0005
    Detection layer: 82 – type = 28
    Detection layer: 94 – type = 28
    Detection layer: 106 – type = 28
    Resizing, random_coef = 1.40

    608 x 608
    Create 6 permanent cpu-threads

    ایا عبارت بالا به معنی این است که فرایند ترین کامل شده و وزن ها اماده اند که در برنامه ازشون استفاده کنیم ؟؟؟

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

    • مصطفی آصفی

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

  38. Mohammad

    سلام استاد وقتتون بخیر 🙂
    یک سوال داشتم ، اینکه آیا از yolo میشه برای face recognition استفاده کرد؟ (اگر دیتاست قوی باشه دقت خوبی داره؟)
    و اینکه اصلا برای تشخیص چهره yolo مناسب است یا کتابخونه face recognition?
    ممنون میشم راهنمایی کنید 🙂
    ارادت

    • مصطفی آصفی

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

  39. سید علی موسوی فرد

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

    • مصطفی آصفی

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

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

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

    سلام
    وقت بخیر
    برای تشخیص اشیا در ویدئو باید تغییراتی روی کد داده بشه ؟
    در قسمت آخر توضیح داده شده که از همین کدها برای ویدئو هم استفاده میشه ، لطف می کنید در مورد ویدئو راهنمایی کنید.
    ممنون

    • مصطفی آصفی

      سلام به شما. ما تو آموزش مقدماتی یولو (+) روی فیلم آزمایش کردیم. اول اون آموزش رو ببینید.
      البته باید یولو برای اجرا روی فیلم با اجرای روی GPU همراه باشه که سرعت مناسب داشته باشید.

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

    سلام وقت بخیر
    قسمت آخر یعنی تست کد با استفاده از دو تصویر تست1 و تست 2 رو چطور در ادامه کدها در کولب استفاده کنم . آیاد باید تصاویر تست 1 و 2 را در گوگل درایوم بارگزاری کنم؟
    cv2 چیه؟
    همه موارد رو درست پیش اومدم ولی هنوز نتونستم تستش کنم
    امکانش هست یک راهنمایی در این مورد بکنید ممنون

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

    سلام وقت بخیر و خدا قوت،
    جسارتا مرحله اخر هرکار میکنم ارور میده ممنون میشم راهنمایی بفرمایید تشکر
    ارور:

    Traceback (most recent call last)
    C:\Users\MNHOSE~1\AppData\Local\Temp/ipykernel_14256/448500009.py in
    53 output = net.forward(out_names)
    54
    —> 55 findObjects(output, frame)
    56
    57 cv2.imshow(“Webcam”, frame)

    C:\Users\MNHOSE~1\AppData\Local\Temp/ipykernel_14256/448500009.py in findObjects(output, img)
    38 # print(indices)
    39 for i in indices:
    —> 40 i = i[0]
    41 bbox = bboxes[i]
    42 x,y,w,h = bbox[0], bbox[1], bbox[2], bbox[3]

    IndexError: invalid index to scalar variable.

    • مصطفی آصفی

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

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

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

    error Traceback (most recent call last)
    C:\Users\MNHOSE~1\AppData\Local\Temp/ipykernel_19320/3134926664.py in
    14
    15
    —> 16 net = cv2.dnn.readNetFromDarknet(net_config, net_weights)
    17 net.setPreferableBackend(cv2.dnn.DNN_BACKEND_OPENCV)
    18 net.setPreferableTarget(cv2.dnn.DNN_TARGET_CPU)

    error: OpenCV(4.5.4) D:\a\opencv-python\opencv-python\opencv\modules\dnn\src\darknet\darknet_importer.cpp:207: error: (-212:Parsing error) Failed to parse NetParameter file: I:/poroje/data-cheshm/dd/All/amoozesh-yolo/Data/wig/yolov3_training.cfg in function ‘cv::dnn::dnn4_v20211004::readNetFromDarknet’

    • مصطفی آصفی

      سلام سلامت باشید. ببینید معمولا باید متن خطا رو دقیق بررسی و گوگل کرد. این شما رو خودکفا می کنه. این خطای شما برای مثال
      yolov3_training.cfg in function ‘cv::dnn::dnn4_v20211004::readNetFromDarknet
      داره می گه یه ایرادی توی خوندن فایل تنظیمات دارم. حالا یا فایل تنظیمات رو پیدا نمی کنه یا بر اساس تعداد کلاسی که دارین یا دستکاری که کردین یک چیزی داخل فایل تنظیمات اشتباه هست. اگه دقیقا مشابه من پیش رفته باشین احتمال اولی بیشتره. این پرسش و پاسخ (+) رو ببینید.

  44. علی حسینی طزرقی

    باسلام و تبریک بابت دوره فوق العادتون. یسوال مهم داشتم: برای شخصی سازی پروژه میخوام بدونم آیا تعداد کلاس ها تاثیری روی سرعت process سیستم موقع اجرا نه موقع learning میزاره؟واضح تر بگم برای پروژه خودم نیاز به حدودا ۱۰ تا از کلاس های دیتاست coco دارم . و بقیه کلاس هام رو باید از دیتاست های دیگه بگیرم. بنظرتون بهتره فقط تعدادی از کلاس های coco رو جداکنم و یا اصلا شدنیه یا بهتره تمام coco رو داشته یاشم و از دیتاست های دیگه کلاس های دیگه رو اضافه کنم؟ این کلاس های اضافه بعدا سرعت process رو کاهش نمیده موقع اجرا؟

    • مصطفی آصفی

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

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

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

    • مصطفی آصفی

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

  46. hoda nayebi

    سلام استاد ممنون بابت تدریس قابل فهم و خوبتون .
    من پکیج جامع رو گرفتم و همشو دیدم و برای اجراش مشکلی نداشتم. اما الان درگیر یک پروژه واقعی شدم که باید یا پردازش تصویر گاو های یک گاوداری رو تشخیص بده وبعد به هر کدام یک id بده سپس تعداد اونها رو نمایش بده و فعالیت های اونها رو به من گزارش بده و من الان در مرحله شمارش تعداد اونها موندم و هرچقدر هم طبق راه حل هایی که توی گوگل گفته شده میرم تعداد object های منو ۱ نشون میده ممنون میشم راهنمایی کنید که چجوری میشه تعداد object های یک کلاس بخصوص رو بدست آورد ؟؟
    در خصوص object tracking هم اگر یک منبع آموزشی معرفی کنید ممنون میشم

    • مصطفی آصفی

      سلام و سپاس از لطفتون. خوشحالم که در مسائل واقعی استفاده میشه و مساله جالبی هم هست.
      در مورد شمارش به کمک یولو ابزارهای جانبی مثل این مخزن object counter yolo (+) رو بررسی بفرمایید.
      در مورد ردیابی اشیا در یولو هم این فیلم YOLO v3 Object tracking with Deep SORT (+) رو توصیه می‌کنم ببینید.

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

    سلام وقت بخیر
    عذرخواهی میکنم بنده از کد شما واسه 43 تا کلاس دارم استفاده میکنم، داخل کولب هی ارور میده ممنون میشم راهنمایی کنید
    Error: l.outputs == params.inputs
    filters= in the [convolutional]-layer doesn’t correspond to classes= or mask= in [yolo]-layer
    correspond

    این ارور تو مرحله اخر Start training میده

    • مصطفی آصفی

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

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

    سلام روزتون بخیر
    File “C:\Users\Ghanbari\PycharmProjects\2-yolo_custom_object_colab-main\yolo_custom.py”, line 50, in
    blob = cv2.dnn.blobFromImage(frame, scalefactor=1/255, size=(blob_size,blob_size),mean=(0,0,0)
    cv2.error: OpenCV(4.5.4-dev) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\resize.cpp:4051:
    error: (-215:Assertion failed) !ssize.empty() in function ‘cv::resize’
    این ارور را دریافت می کنم

    • مصطفی آصفی

      سلام به شما. این خطا شاید به خاطر این باشه که فایل رو خوب نمی تونه بخونه. یا فرمت عکس مشکل داره یا مسیر دریافت فایلتون. مطمئن بشید که فایل رو مثل بنده تو مسیر مشابهی قرار دادین.

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

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

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

    File “C:\Users\Ghanbari\PycharmProjects\2-yolo_custom_object_colab-main\yolo_custom.py”, line 50, in
    blob = cv2.dnn.blobFromImage(frame, scalefactor=1/255, size=(blob_size,blob_size),mean=(0,0,0)
    cv2.error: OpenCV(4.5.4-dev) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\resize.cpp:4051:
    error: (-215:Assertion failed) !ssize.empty() in function ‘cv::resize’
    داخل کولب obj.data و obj.names را درست کردم وبعد درون پروژه در پایچرم قرار دادم:
    obj.data:
    classes = 6
    train = data/train.txt
    valid = data/test.txt
    names = data/obj.names
    backup = /My Drive/yolo3/
    —————————–
    obj.names:
    Wearing Mask
    Not Wearing Mask
    Helmet
    Not Helmet
    Safety gloves
    Not Safety gloves
    ______________________________
    و بعد از کولب پوشه cfg از yolov3_training.cfg را که خودم درست کردم دانلود کردم و درون پروژه “net_config = “cfg/yolov3_training.cfg قرار دادم:
    کد yolov3_training.cfg درون کولب:
    filter ((class=6)+5)*3
    :Change lines in yolov3.cfg file
    !sed -i ‘s/batch=1/batch=64/’ cfg/yolov3_training.cfg
    !sed -i ‘s/subdivision=1/subdivision=16/’ cfg/yolov3_training.cfg
    !sed -i ‘s/max_batches= 500200/max_batches = 6000/’ cfg/yolov3_training.cfg
    !sed -i ‘610 s@classes=80@classes=6@’ cfg/yolov3_training.cfg
    !sed -i ‘696 s@classes=80@classes=6@’ cfg/yolov3_training.cfg
    !sed -i ‘783 s@classes=80@classes=6@’ cfg/yolov3_training.cfg
    !sed -i ‘603 s@filters=255@filters=90@’ cfg/yolov3_training.cfg
    !sed -i ‘689 s@filters=255@filters=90@’ cfg/yolov3_training.cfg
    !sed -i ‘776 s@filters=255@filters=90@’ cfg/yolov3_training.cfg
    چکم کردم تغییراتش درست بود.
    ——————————————————–
    ولی وزن را این قرار دادم: “net_weights = “cfg/yolov3-tiny.weights
    مثل شما بلد نبودم نمیدونستم چه باید درست کنم :”net_weights = “cfg/yolov3_training_last.weights
    ——————————————–
    درون پایچرم نامپای و اپن سی وی پایتون بسته اش را نصب کردم
    ————————————–
    import cv2
    import numpy as np
    cap = cv2.VideoCapture(0)
    “obj_file = “obj.names
    [ ]=obj_classes
    “net_config = “cfg/yolov3_training.cfg
    “net_weights = “cfg/yolov3-tiny.weights
    blob_size = 320
    confidence_threshold = 0.5
    nms_threshold = 0.3

    :with open(obj_file, “rt”) as f
    obj_classes = f.read().rstrip(“\n”).split(“\n”)
    net = cv2.dnn.readNetFromDarknet(net_config, net_weights)
    net.setPreferableBackend(cv2.dnn.DNN_BACKEND_OPENCV)
    net.setPreferableTarget(cv2.dnn.DNN_TARGET_CPU)
    :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)
    print(indices) #
    : for i in indices
    i = i[0]
    bbox = bboxes[i]
    x,y,w,h = bbox[0], bbox[1], bbox[2], bbox[3]
    cv2.rectangle(img, (x,y), (x+w, y+h), (0,255,0), 2)
    cv2.putText(img, f'{obj_classes[class_ids[i]].upper()} {int(confidences[i] * 100)}%’,
    (x, y-10), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0,255,0), 2)
    frame = cv2.imread(‘test1.jpg’)
    blob = cv2.dnn.blobFromImage(frame, scalefactor=1/255, size=(blob_size,blob_size),mean=(0,0,0)
    ,swapRB=True,crop=False)
    net.setInput(blob)
    ()out_names = net.getUnconnectedOutLayersNames
    output = net.forward(out_names)
    findObjects(output, frame)
    cv2.imshow(“Webcam”, frame)
    cv2.waitKey(0)
    ——————————————————–
    کدهای کولبم تا الان بدون مشکل هستش

    باید برنامه ای درست کنم که فیلم افراد را بگیره پس نیاز به فیلم برداری دارم دسترسی فیلم برداری را به صورت زیر دادم:
    cap = cv2.VideoCapture(0)

    ممنون میشم راهنماییم کنید خیلی نیاز فوری دارم تا مشکلم حل بشه زمانم کم هستش با تشکر فراوان

    • مصطفی آصفی

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

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

    سلام
    متاسفانه colab داری محدودیت هست و هر چند مدت قطع می شود
    هدف من استفاده از کارت گرافیک nvidia بود
    دستوری که در پاسخ سوال قبلی فرمودین cpu برمیگردونه
    cuda هم روی سیستم نصب کردم
    طبق اطلاعات سایت nvidia مدل کارت گرافیک هم قابلیت استفاده از coda دارد
    لطفا راهنمایی بفرمایید
    با تشکر

    • مصطفی آصفی

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

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

    سلام جناب مهندس
    یکی از دوستان همین مشکل را داشته و شما این پاسخ را فرمودین:
    سلام به شما. ار بخش انتخاب Runtime گزینه Change runtime type رو انتخاب کنید. بعد از Hardware Acceleration نوع GPU رو انتخاب و ذخیره کنید.
    اما برای من جواب نداد
    اما من خودم همه مراحل را با شما پیش رفتم ابتدا این ارر را داشتم
    /bin/bash: ./darknet:
    ولی مجبور شدم سورس پروژه شما استفاده کنم که با این ارر مواجه شدم

    CUDA status Error: file: ./src/dark_cuda.c : () : line: 38 : build time: Nov 2 2021 – 22:29:22

    CUDA Error: no CUDA-capable device is detected
    Darknet error location: ./src/dark_cuda.c, check_error, line #69
    CUDA Error: no CUDA-capable device is detected: Bad file descriptor

    متشکرم

    • مصطفی آصفی

      سلام به شما. خطا داره می گه که کودا روی این دستگاه در دسترس نیست. دقت کنید راهنمایی بنده در مورد کولب بود. شما در محیط کولب دارید کار می کنید؟ اگه این طوره پس احتمالا اتصالتون به GPU گوگل قطع شده و باید دوباره یک سند تازه متصل کنید.
      اما اگه روی سیستم خودتون این خطا رو دریافت می کنید باید ببینید سیستم شما امکان پردازش GPU داره یا نه.
      device = torch.device(‘cuda’ if torch.cuda.is_available() else ‘cpu’)
      بعد این رو اگرا کنید ببینید چی براتون پرینت می کنه:
      print(device)

  52. FF_rashel (خریدار محصول)

    سلام. ممنونم از پاسخگویی و بیان شیوای مفاهیم، از تدریس زیبا تون سپاسگذاریم، واقعا عالی هست و خیلی لذت میبریم. جناب مهندس مصطفی آصفی، اگر فرصت دارید ممنون میشم در مورد یولوی نسخه 5 که با پایتورچ میباشد یه آموزش هم داشته باشید، من یولو 3 و 4 را اجرا نمودم بسیار خوب و عالی بود توضیحات شما، و کلی مطلب یادگرفته و منتظر آموزش نسخه های بعدی از یولو میباشیم.

    • مصطفی آصفی

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

  53. rozhina taghdimi (خریدار محصول)

    سلام استاد عزیز ممنونم از آموزش خوبتون خیلی فوق العاده و مفید بود و مرسی که با قیمت خیلی مناسب در اختیار ما قرار دادید
    من ۴تا سوال داشتم
    سوال ۱: برای فایل test.txt همون کدی رو بزنیم که برای train.txt زدیم ؟یعنی از glob استفاده کنیم و f.write کنیم؟
    سوال ۲: کدوم قسمت از کد به yolo میگه که از فایل لیبل ها استفاده کنه؟چون فقط اونایی که آخرش .jpg بود رو استفاده کردیم انگار
    سوال ۳:میتونیم devset هم اضافه کنیم؟
    سوال ۴: چطوری بفهمیم به بهترین حالت weights رسیدیم یعنی میتونیم نمودار f1score و نمودار هایی دیگه رو رسم کنیم برای weights بدست اومده؟

    • مصطفی آصفی

      سلام و ممنون از لطفتون. خوشحالم که آموزش براتون مفید بوده.
      در مورد سوال اولتون بله مشابه هستن. در مورد سوال ۲ همون تو درس ۱۲ که سوال ۱ هم سوال کردین تو تابع glob میشه پسوند رو به جای jpg مثلا png مشخص کرد.
      سوال سومتون رو خوب متوجه نشدم. لطفا بیشتر توضیح بدین. در مورد سوال ۴ بله مشکلی نداره. رابطه F-Score مبتنی بر دقت یا precision هست و شما می تونید فرمول نویسی کنید و از پکیج هایی مثل متپلات لایب (+) هم برای رسم نمودارهای اختصاصی بهره بگیرید. این مقاله F-Score در یولو (+) رو هم توصیه می کنم مطالعه کنید.

      پی‌نوشت: سوال هاتون نشون میده (شاید هم بنده اشتباه می کنم) که یه مقدار نیازه دوره رو با دقت بیشتری ببینید و پایه برنامه نویسی پایتون شما هم گمانم نیاز به تقویت داره. با پشتکار پیش برید انشالله کامل موضوع براتون روشن میشه.

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

    سلام . وقت بخير.من اومدم يولوتايني نسخه رو براي ماشين و پلاك تعليم دادم.مي خواهم بادوربين رزبري پاي تست كنم ولي كند اجرا مي شود راهكاري نيست سرعت پردازش را بالا برد؟سوال ديگرم از خدمت شما اين است من cuda رو نصب كردم روي سيستم من وگرافيكnvidia دارم ولي cudaبه gpuمن وصل نميشكه موقع اجرا كد خطاي زير را به من مي دهد.
    [ WARN:0] global C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-c2l3r8zm\opencv\modules\dnn\src\dnn.cpp (1451) cv::dnn::dnn4_v20210608::Net::Impl::setUpNet DNN module was not built with CUDA backend; switching to CPU

    • مصطفی آصفی

      سلام وقت شما هم بخیر. سرعت پردازش اگه از GPU استفاده کنید خیلی بهتر میشه. منتها شما بایستی OpenCV رو از اساس برای کار با GPU بیلد کنید. این خودآموز نصب OpenCV روی GPU (+) رو لطفا ببینید توضیح مفصل و خوبی داره. اگه متن خوشتون نمیاد build opencv gpu رو تو یوتیوب جستجو کنید. فیلم‌های متعددی هست که این رو گام به گام توضیح دادن.

  55. محمد

    سلام استاد
    اگه بخوایم همین آموزش شما رو با استفاده از yolo v4 انجام بدیم ، به چه شکل باید عمل کنیم؟

    • مصطفی آصفی

      سلام به شما. در جریان آموزش موقع بررسی مستندات AlexyAB در مورد نحوه تطبیق آموزش برای یولوی ۴ توضیح دادم. لطفا آموزش رو با دقت ببینید.

  56. faeze.m (خریدار محصول)

    سلام، وقت بخیر
    ببخشید امکانش هست لطفا بفرمایید دستور این قسمت گفته شده چطور نوشته میشه؟
    to make the detected bounded boxes more accurate, you can add 3 parameters ignore_thresh = .9 iou_normalizer=0.5 iou_loss=giou to each [yolo] layer and train, it will increase mAP@0.9, but decrease mAP@0.5.
    چطوری باید اینا رو اضافه کنم؟

    • مصطفی آصفی

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

  57. faeze.m (خریدار محصول)

    سلام استاد، وقت بخیر
    ببخشید من ی دیتاستی دارم که ماسک سیاه و سفیدش هست ولی برای یولو میخوام bb براش بکشم، میشه راهنماییم کنید از چه کتابخونه ای استفاده کنم

    • مصطفی آصفی

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

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

    سلام، وقت بخیر، همه چیز آموزش هاتون بی نظیر و فوق العادست!!!!!
    امکانش هست بفرمایید هر ایتریشن حدودا چقد زمان میبره؟

    • مصطفی آصفی

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

  59. مرضیه مختاری (خریدار محصول)

    سلام اقای مهندس اصفی من حقیقتا برای یولو برای پردازش ویدئو استفاده کردم ولی تاسفانه سرعت ویدئو بسار پایین هست از طرفی کودا رو هم نصب کردم و تنظیمات مربوط به دارک نت رو هم روی کودا تنظیم کردم ولی باز هم متاسفانه عمل نمیکنه

    • مصطفی آصفی

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

  60. مرضیه مختاری (خریدار محصول)

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

    • مصطفی آصفی

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

  61. آرش رضایی (خریدار محصول)

    من برای ترین همین تصاویر با گوگل تلاش کردم ولی مدت زمان باقی مانده نوشته شده ۲۲ ساعت با اینکه گوگل ۱۲ ساعت اجازه میده برای یک vm
    چطوری شما ترین کردید؟ حساب پرو داشتید؟

    https://pasteboard.co/K7LfMbYa.png

    • مصطفی آصفی

      سلام به شما. ببینید اون ذخیره وزن ها تو وان درایو برای همین براتون مفیده. شما train کنید و وقتی گوگل نشست رو منقضی کرد مجددا یه پروژه بسازید و اون دفترچه آماده رو اجرا کنید منتها این بار با آخرین وزنی که تعلیم دادین شروع کنید. باز تاکید می کنم آموزش رو با دقت ببینید. به نظرم این نکته ها رو بنده عرض کردم تو آموزش.

  62. آرش رضایی (خریدار محصول)

    سلام ممنون فقط اینکه توی سورس کد ها پوشه cfg و فایل yolov3_training_last.weights نیست
    لطفا قرار بدید چون من نتوسنم ترین کنم با گوگل

    • مصطفی آصفی

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

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

    سلام. استاد ممنون از آموزش های بسیار خوب و عالی تون.من می خوام -map رو هم هنگام آموزش ببینم.اما با خطای زیر مواجه می شم.ممنون میشم اگه راهنمایی بفرمایید.چون می خوام نمودار رو هم آخر سر ببینم.
    Error CUDA-version: 11000 (11020), cuDNN: 7.6.5, CUDNN_HALF=1, GPU count: 1CUDNN_HALF=1OpenCV version: 3.2.0Error: There is no data/test.txt file for mAP calculation!Don’t use -map flag.Or set valid=data/train.txt in your data/obj.data file.

    • مصطفی آصفی

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

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

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

    • مصطفی آصفی

      سلام به شما. از گوگل کردن غافل نشید. این لینک (+) رو برای مثال در مورد خروجی عکس از یولو مطالعه کنید.

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

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

    • مصطفی آصفی

      سلام به شما. سوالتون رو متوجه نشدم لطفا با دقت بیشتری توضیح بدین.

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

    سلام جناب آصفی عزیز
    هنگام اجرای دستور
    !./darknet detector train data/obj.data cfg/yolov3_training.cfg darknet53.conv.74 -dont_show
    پیام خطای زیر صادر میشه:
    CUDA status Error: file: ./src/dark_cuda.c : () : line: 39 : build time: May 28 2021 – 13:57:38

    CUDA Error: no CUDA-capable device is detected
    CUDA Error: no CUDA-capable device is detected: Bad file descriptor
    darknet: ./src/utils.c:331: error: Assertion `0′ failed.

    • مصطفی آصفی

      سلام به شما. ار بخش انتخاب Runtime گزینه Change runtime type رو انتخاب کنید. بعد از Hardware Acceleration نوع GPU رو انتخاب و ذخیره کنید.

  67. علیرضا خداپرسیت شیرازی (خریدار محصول)

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

    • مصطفی آصفی

      سلام به شما. این موضوع به این صورتی که از آقای ردمون مثال می زنیم در عمل با همون چیزی که تو درس 9 آموزش مقدماتی یولو (+) توضیح دادیم درمیاد. اگه شما اون آبجکت مورد نظر رو با عکس های متنوع و خوب تعریف کرده باشید عملا یولو مرزها رو به خوبی تشخیص میده و اگه مبتنی بر GPU باشه خب طبیعتا خیلی سریع تر هم مثل همون فیلم آقای ردمون موقعیت bounding box به روز میشه.

      بحث object tracking که می فرمایید بحث واکاوی حتی در سطح زیر فریمه که مشمول اون فیلم نمیشه اما به هر هر حال روش های ردیابی اشیا (+) امروز به صورت ویژه هم وجود دارن و انشالله در هم رویش هم به اون ها خواهیم پرداخت.

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

    با سلام من از این آموزش برای تشخیص اشخاص و ماشینها استفاده کردم اما در دور آول آموزش یولو مقادیر لاس بالا است 600 عکس دارم که300 تا ماشین و 300 تا فرد هستند و هر کدام لیبل جدا دارند. لطفا بفرمایید مشکل چیست؟ ضمنا در چندین بار اجرای کد فایل train.txt خالی ایجاد میشد و فعلا فقط در یک مورد فایل حاوی آدرس عکسها است
    لطفا راهنمایی

    • مصطفی آصفی

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

  69. احسان

    سلام
    ممنون از آموزش های خوبتون
    من yolo4 را در powershell
    clone می کنم و سپس وارد darknet میشم
    ولی دستور make خطا می دهد اعلام می کنه به عنوان تابع یا چیز دیگه شناسایی نشد
    ممنون

    • مصطفی آصفی

      سلام. ممنونم. برای نصب make در شل ویندوز از chocolatey -که پکیج منیجر ویژه powershell هست- و دستور پایین استفاده کنید:
      choco install make
      این روش ساده و مناسبیه.
      اگر نه باید از این نشانی نصب make فایل ستاپ مناسب رو دریافت و به صورت سیستمی نصب کنید.

  70. مهدی

    در رابطه با موردی که فرمودید من قصد دارم تصاویر رو از روی سیستم به سرور بفرستم و بعد از پردازش، اطلاعات رو در قالب جیسون دریافت کنم
    من با لاراول کار میکنم و اطلاعات عکس رو سمت سرور دریافت میکنم (به صورت binary24 )ولی برای پردازشش مشکل دارم و نمیدونم باید به چه صورت با یولو یک api اماده کنم که خروجی بتونم داشته باشم
    ممنون میشم راهنماییم کنید

  71. m

    سلام وقت بخیر
    به چه صورت میتونم yolo روی سرور اجرا کنم و خروجی پردازش رو در قالب یک json تحویل بگیرم ؟

    • مصطفی آصفی

      سلام دوست عزیز. برای مثال اگه از جنگو و پایتون استفاده کنید باید عکس رو به صورت باینری در view دریافت و بعد از پردازش کلاس مورد نظر رو در خروجی api به صورت جیسون اسال کنید.
      توصیه می کنم این آموزش Django REST رو ببینید. اگه با میاحث وب به طور کلی آشنا نیستید ابتدا این آموزش جنگو رو ببینید و بعد سراغ جنگو رست برید.

  72. Mohammad

    سلام استاد وقتتون بخیر…قبل از هرچیزی بسیار ممنونم از مطالب مفید و کاربردی … سوالی که داشتم این بود که‌ آیا برای تشخیص متن و استخراج متن از عکس میتوان از این روش ها استفاده کرد؟ ( یک سری متن های خاص trained شده)

    • مصطفی آصفی

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

  73. Sahar (خریدار محصول)

    سلام وقتتون بخیر . اول از همه ممنون از آموزش خوب و مفیدتون . من تمام مراحلی که گفتید و انجام دادم اما در مرحله ششم که انجام دادم و کد هارو کامل چک کردم فایل train را باز میکنم متاسفانه خالیه و هیچ اروری به من نمیده میخواستم ببینم مشکل از چی میتونه باشه؟ و در اخر اینکه تا این مرحله انجام نشه به من در مرحله بعدی فایل yolov3_training_last.weight رو نمیده؟

    • مصطفی آصفی

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

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

    سلام وقت بخیر ، open images خارج از دسترس هستش ، عکس های مورد نظرمون جهت آموزش رو از کجا دانلود کنیم ؟

    • مصطفی آصفی

      سلام به شما. اگه لزوما open images رو ناچار هستید استفاده کنید، از VPN بهادار خوب استفاده کنید. اگر نه نمونه کتابخونه های دیگه مثل ImageNet رو بررسی کنید. یا نهایتا باید خودتون نمونه سازی کنید. یه صبح تا ظهر می تونید کلی نمونه از گوگل برای تقریبا هر مورد پیدا کنید. افزونه هایی هم برای دریافت عکس های حجمی در مرورگرها موجود هستند که می تونن بهتون کمک کنن.
      اگر هم نمونه خاصی دارید که عکس عمومی ازش موجود نیست باید خودتون دوربین دست بگیرید.

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

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

    • مصطفی آصفی

      سلام و سپاس از لطف شما.
      در مورد اعداد فارسی، چد راه می تونید استفاده کنید:
      1- چون تعدادشون محدوده میشه یک شبکه عصبی از پایه برای تشخیص نوشت. بعد موقع تشخیص پلاک اعداد تشخیص داده شده و مختصاتشون رو بیرون کشید و به ترتیب مختصات x چید تا ارقام کامل دربیاد.
      2- می تونید از ابزارهای جانبی مثل این لینک استفاده کنید.
      3- می تونید تک تک ارقام رو مثل آبجکت ازشون عکس هایی پیدا کنید و یولو رو برای تشخیص اون ها تعلیم بدین و بعد به روشی که در مورد اول گفتم ارقام رو در محل پلاک پیدا کنید. کمی البته اجراش با پایتون به نظرم از نظر پردازشی سنگین میشه مگر اینکه موقع اجرای عملی هم GPU در کار باشه.

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

    باسلام و خسته نباشید.استادچطور امکان پذیر است در یک ویدیو(یا وب کم)موقع تشخیص شی مورد نظر یک خروجی چاپ کند که در چه زمانی شی را تشخیص داده است؟

    • مصطفی آصفی

      سلام به شما. این رو می تونید با کد پایتون پیاده کنید. این خودآموز dattime در پایتون رو بررسی کنید.

  77. zein tiz (خریدار محصول)

    سلام. ممنونم از پاسخگویی و بیان شیوا مفاهیم سپاسگذاری میکنم. از تدریس زیبا تون خیلی لذت میبریم. اگر فرصت کردید ممنون میشم در مورد کاربرد و تدریس با مثال ، مفاهیم بیشتری از هوش مصنوعی مثل one shot , few shot ، شبکه های gan ,……. هم فیلم بگذارید. من به دنبال طوفان فکری که در اخر فیلم مطرح کردید و فرمودید دنبال در اوردن مسایل جدید باشیم، دنبال کاربرد جدید هستم. میخواستم ببینم مثلا بخواهیم برای تشخیص اشیا خاص که مثلا 10 تا 20 تا30 تا نمونه بیشتر ازش نداریم و دقت بالا ازش میخواهیم در حد تشخیص مثلا فاصله دو تا نقطه کوچک روی پوسته اون شی، چکار باید بکنیم چه جوری باید کار بکنیم؟ اخه با این اوصاف بنظر می رسه یولو فقط برای تشخیص کلیت شی خوبه برای جزییات و این جور مسایل باید دنبال چیز دیگه باشم. ممنون میشم بیشتر راهنمایی بفرمایید

    • مصطفی آصفی

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

  78. zein tiz (خریدار محصول)

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

    • مصطفی آصفی

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

  79. مهدی

    سلام.من یک ساعت train را انجام میدهم،یادگیری چه مدت طول باید طول بکشد تا یادگیری بهتر باشد برای 50نمونه عکس؟من بعد از1ساعت وزن هارا دانلود کردم و به ارور زیر برخورد کردم.میشه بگید مشکل چیه؟ممنون.
    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:214: error: (-212:Parsing error) Failed to parse NetParameter file: cfg/yolov3_training_last.weights in function ‘cv::dnn::dnn4_v20200609::readNetFromDarknet’

    • مصطفی آصفی

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

  80. fatima (خریدار محصول)

    با عرض سلام و وقت بخیر
    من هنگام تست با این خطا مواجه شدم
    line 44
    cv2.putText(img, f'{obj_classes[class_ids[i]].upper()} {int(confidences[i] * 100)}%’,
    IndentationError: unexpected indent
    ممنون میشم راهنمایی بفرمایید

    • مصطفی آصفی

      سلام به شما. خطایی که دریافت می کنید از دندانه گذاری (IndentationError) هست.
      فاصله آغازین اون خط 44 کدتون رو پاک و مجدد ایجاد کنید.
      در پایتون این طور خطا زیاد پیش میاد که ناشی از یک تب یا فاصله اشتباه هست.
      یادتون باشه پایتون تفکیک بلوک های کد رو از روی تعداد تب ها انجام میده.

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

    من چندین بار این آموزش نگاه کردم ، خیلی ازتون یادگرفتم
    ممنونم ازتون

    • مصطفی آصفی

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

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

    درود استاد.ببخشید مجدد مزاحم شدم.روشی که در https://github.com/AlexeyAB/darknet#how-to-train-to-detect-your-custom-objects که در دوره ی آموزشی هم بهش اشاره کردید با https://wiki.loliot.net/docs/lang/python/libraries/yolov4/python-yolov4-about/ که با تنسور فلو 2 هست ،چه فرقی میکنه؟کدومش بهتر و بهینه تر هستش؟ البته برای اشیا اختصاصی (برای مثال تابلو های راهنمایی و رانندگی) .کمی مباحث رو قاطی کردم.ممنون میشم یه توضیحی بدید.

  83. حسین

    با عرض سلام و وقت بخیر. استاد دستور unzip من برای اکسترکت تصاویر به فایل obj ران نمیشه وخطا میده unzip: cannot find or open /mydrive/yolov3/images.zip, /mydrive/yolov3/images.zip.zip or /mydrive/yolov3/images.zip.ZIP. من در محیط ویندوز کار میکنم
    اگه راهنمایی بفرمایین ممنون میشم با تشکر

    • مصطفی آصفی

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

  84. فاطمه نجمی پوران (خریدار محصول)

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

    • مصطفی آصفی

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

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

    درود استاد.وقتتون بخیر.خیلی ممنون از آموزش های بسیار عالی تون.سال نوتون مبارک .راستش من میخوام برای پایان نامه ام از یولو ورژن 4 استفاده کنم.میدونم زحمت هستش.فقط اگه میشه سورس کد تست (آزمایش) پایتونی(مثل ورژن 3 که در آموزش گفتید) برای yolo v 4 رو به ایمیلم بفرستید.یا اگه میشه راهنمایی کنید تا من باید چه کار هایی رو باید انجام بدم تا با v4 هم بتونم همین کار رو انجام بدم.

    • مصطفی آصفی

      سلام و ممنون از لطفتون. سال نو شما هم مبارک باشه. ببینید تو درس 10 توضیح دادم که چطور با همین شیوه ای که تو آموزش هست برای یولوی نسخه 4 هم تغییر تنظیمات رو بررسی کنید.
      توضیحات این لینک رو با توجه به فرآیندی که تو فیلم توضیح دادم لطفا با دقت بخونید.

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

    با عرض سلام و وقت بخیر ممنون از مباحث مفیدتون من تو محیط colab نمیتونم از gpu استفاده کنم با پیغام زیر مواجه میشم ممنون میشم راهنمایی بفرمایید
    You cannot currently connect to a GPU due to usage limits in Colab

    • مصطفی آصفی

      سلام به شما. ممنون از لطف شما.
      ببینید تو درس 6 دقیقه های 13 و 14 توضیح دادم که استفاده رایگان از کولب محدودیت هایی داره. این خطایی که شما دریافت کردید ناشی از همین محدودیت هاست.
      اون توضیحی که دادم و لینکی که دادم رو مطالعه کنید تا بهتر بتونید استفاده خودتون رو مدیریت کنید.

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

    بله دقیقا تعداد دور ها کم بود و من ران 60 متوقف کردم، اگر براتون امکان دارد فایل weight خودتون رو که در گوگل درایو هست لینک رو لطف کنید

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

    سلام وقت بخیر
    تشکر برای آموزش عالیتون
    من کدم رو که اجرا میکنم تصویر تست 1 یا تست 2 پر از باندینگ باکس میشه انگار هزار تا چهره بدون ماسک یا با ماسک در تصویر هست
    فکر میکنم مشکل از فایل weight باشه، امکانش هست آدرسش رو قرار بدید فایل وزن رو دانلود کنم؟
    تشکر

    • مصطفی آصفی

      سلام و ممنون از لطف شما.
      مشکلتون احتمالا به دلیل تعلیم ناکافی (تعداد دور ناکافی) هست.
      نحوه دریافت تنظیمات و وزن ها رو تو درس 10 حدود دقیقه 12 معرفی و لینکش رو هم پیوست کردم.

  89. saeed (خریدار محصول)

    Traceback (most recent call last):
    File “C:\yolo_custom_object_colab-main\yolo_custom.py”, line 16, in
    net = cv2.dnn.readNetFromDarknet(net_config, net_weights)
    cv2.error: OpenCV(4.5.1) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-wvn_it83\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_v20201117::readNetFromDarknet’

    من تمام مراحل رو انجام دادم ولی هنگام اجرا با این خطا روبرو می شوم

    • مصطفی آصفی

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

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

    سلام وقتتون بخیر
    اول از همه تشکر میکنم به خاطر دوره بینظیرتون.
    یه پشنهاد داشتم: یه دوره هم توی زمینه ساخت haar cascade سفارشی رو بسازین.
    سپاس فراوان

  91. علیرضا بهزادی (خریدار محصول)

    سلام
    ممنون از آموزش خوبتون
    من بجای استقاده از yolov3_training.cfg همه کارها رو برای Yolo4 انجام دادم ولی در قسمتی که مقدار batch و subdivision و .. تغییر میدهیم باهمان دستوراتی که فرمودین ولی برای yolo4 متاسفانه مقادیر تغییر نمی کند

    • مصطفی آصفی

      سلام به شما. ببینید تنظیمات نسخه های 3 و 4 مثل شماره خط ها و … تفاوت هایی داره. شما گام ها رو مشابه همون مخزنی که در این دوره برای دریافت دارک نت بهتون معرفی کردم بردارید. اون مخزن اصلا مبنای اصلیش یولوی 4 هست. گام ها رو (که حالا معنی اون ها رو در آموزش بهتر درک کردید) مطابق همون مخزن بردارید.

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

    سلام وقتتون بخیر
    اول از همه تشکر میکنم به خاطر دوره بینظیرتون منتظر دوره های بیشتر شما توی زمینه پردازش تصویر و بینایی ماشین هستیم.
    یه مشکل داشتم وقتی میخوام که به سرور colab وصل بشم میگه نمیتونید به GPU وصل بشید. متن ارور هم اینه:
    Cannot connect to GPU backend
    You cannot currently connect to a GPU due to usage limits in Colab. Learn more
    If you are interested in priority access to GPUs and higher usage limits, you may want to check out Colab Pro.
    میتونید یه راهنمایی بفرمایید؟
    سپاس فراوان

    • مصطفی آصفی

      سلام به شما و ممنون از محبت شما. انشالله که مفید باشه.
      در مورد گوگل کولب دقت کنید که اگرچه استفاده از کولب رایگانه اما خب محدودیت هایی هم داره که در خود آموزش هم عرض کردم.
      از جمله محدودیت‌ها یکی هم اینه که تضمین نیست که همیشه GPU در دسترس باشه. خطایی که فرستادید معمولا به این دلیله. در چنین مواقعی باید کمی بعدتر دوباره اقدام کنید.
      ضمنا محدودیت هایی از نظر زمان استفاده هم دارید. داده های شما 24 ساعت برقرار هستند و به همین دلیل ما تصویرها رو در گوگل درایو گذاشتیم. بعد از گذشت این زمان شما بایستی مجدد یک پروژه بسازید که خب چون ما کدها رو در یک دفترچه ژوپیتر نوشتیم و تصویرها هم در گوگل درایو هستن، عملا خیلی دوباره کاری ندارید. پروژه تازه می سازید و دفترچه ژوپیتر رو فراخوانی و اجرا می کنید.
      وزن های تعلیم یافته هم که در گوگل درایو ذخیره میشن.

      برای آگاهی بیشتر از محدودیت های گوگل کولب به این نشانی مراجعه کنید.

  93. khalil (خریدار محصول)

    سلام. درمرحله بعد از نصب دارکنت و آموزش یولو3 یه اروری میده . couldnt open file. data/train.txt
    علتش چی می تونه باشه. چون من فایل train رو دانلود کردم. داخلش تصاویر و تصاویر لیبل شده بود.

    • مصطفی آصفی

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

  94. khalil (خریدار محصول)

    با سلام آموزش عالی بود. اما یه مشکلی در بخش خارج کردن فایل زیپ داشتم. کد رو دقیق مثل شما نوشتم. ولی ارور میداد. mkdir نمی تونه در این مسیر ایجاد کنه. و دستور ان زیپ نمی توان فایل رو از حالت زیپ خارج کنه

    • مصطفی آصفی

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

  95. امیر

    سلام وقت بخیر
    من با cpp کار میکنم و خب متاسفانه هیچ اموزشی برای yolo در cpp نیست میخواستم بدونم من اگه این دوره رو خریداری بکنم میتونم روی cpp هم پیاده کنم یا یولو فقط برای پایتون منتشر شده؟؟

    • مصطفی آصفی

      سلام به شما. بله این امکان رو دارید. اصولا شما برای تعلیم یولو خیلی وابسته به زبان نیستید. برای آزمایش یولو هست که شما مثلا به محیط OpenCV و کدهای پایتون یا سی پلاس پلاس نیاز دارید.

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

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

      – نکته دوم: این آموزش برای درک یولو یک پیشنیاز داره. اول شما باید این آموزش YOLO با پایتون و OpenCV رو ببینید که یولو رو درک کنید. تابع های OpenCV که در اون آموزش با زبان پایتون صدا زده شدن با همین نام ها از CPP هم قابل صدا کردن هستن. اصولا خوبی OpenCV همینه. اون بسته رو ببینید و گام به گام که من پیش می رم شما مراحل رو برای سی پلاس پلاس پیاده سازی کنید. مثلا من python-opencv رو نصب می کنم شما باید هدر opencv2/opencv.hpp رو به بالای کدتون اضافه کنید. نام تابع ها هم کم و بیش همینه منتها باز شما می تونید نام همون تابع ها رو با پسوند cpp گوگل کنید که از نظر نوشتن اگه کمی تغییر دارن مشکلی پیش نیاد. این دیگه میشه مهارت اپن سی وی شما. اگه بتونید مراحل آموزش رو با سی پلاس پلاس بازنویسی کنید عملا کد استفاده از یولو در OpenCV رو دارید که می تونید از اون برای آزمایش یولویی که تو این «آموزش تشخیص اشیای سفارشی» تعلیم می دید استفاده کنید.

  96. محمد

    سلام استاد خسته نباشید. مکان یابی هم گفتین با فقط تشخیص هستش

    • مصطفی آصفی

      سلام به شما. منظورتون از مکان یابی پیدا کردن محل آبجکت در عکسه؟ اگه این طوره بله به کمک یولو می تونید ولی این مطلب رو نه در این آموزش بلکه در آموزش مقدماتی یولو (+) پیش از این توضیح دادم. همون طور که در اون آموزش گفتم خروجی یولو ، شامل نوع کلاس و همین طور مختصات مرکز و عرض و ارتفاع مستطیل دربردارنده آبجکت (Bounding Box) هست، پس مکان آبجکت مشخصه.

  97. امیر حسین عزیزی

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

    • مصطفی آصفی

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

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

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

97 دیدگاه برای آموزش تشخیص اشیای اختصاصی با YOLO

  1. حمید شعبانی (خریدار محصول)

    سلام
    دوره بسیار عالی هست
    لطفا در خصوص نحوه استفاده از gpu در پایتون برای yolo و open cv هم آموزش تهیه فرمایید
    ممنون

    • مصطفی آصفی

      سلام و سپاس از بازخوردتون. به روی چشم. البته من در حال حاضر تو حوزه بینایی فعالیت نمی کنم ولی چون این موضوع دغدغه بسیاری دوستان هست تلاش می کنم از دوستان مدرسی رو برای این بحث حذب کنم.

  2. amir amiri (خریدار محصول)

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

    output = net.forward(out_names)

    error: OpenCV(4.5.1) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-kh7iq4w7\opencv\modules\dnn\src\layers\convolution_layer.cpp:380: error: (-2:Unspecified error) Number of input channels should be multiple of 3 but got 1 in function ‘cv::dnn::ConvolutionLayerImpl::getMemoryShapes’

    چطور می تونم برطرفش کنم ؟

    • مصطفی آصفی

      سلام و سپاس از محبت شما. می بخشین جوابتون دیر شد. به نظرم ساده ترین کار اینه که با استفاده از پایتون مثلا با این نمونه کد (+) تصویرها را به سه کانالی تبدیل کنید. یا گوگل کنید:‌
      convert grayscale to 3 channel python

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

    سلام وقتتون به خیر باشه، من تمام مراحل دوره رو به صورت جز به جز انجام دادم اما موردی که وجود داره اینکه زمانی که مدل رو به حالت تعلیم در میارم در اخرین سلول از نوت بوکی قراردادید زمان Train کردن مدل هی بیشتر و بیشتر میشه من تمام مراحل رو دقیقا با همون فرمولی که ذکر شده انجام دادم، فقط با این تفاوت که من نمی خواستم ماسک رو شناسایی کنم دیتاست خودم بر اساس یک شی خاص تعیین کردم، در ضمن کلاس هام درسته، اون فرمولی که برای فیلتر ها batch ها و sub batch ها و … رو رعایت کردم. اما دقیقا نمیدونم مشکل از کجاست، ممنون میشم هر چه سریعتر من رو راهنمایی بفرمایید.

    • مصطفی آصفی

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

  4. darabi (خریدار محصول)

    استاد بزرگوار ممنونم از آموزش بسیار خوبتون.
    چطور در کدمون می تونم تعدا پیکسل های داخل هر bounding box را بدست بیارم و بزرگترین bounding box را مشخص کنم و نشان دهم؟

    • مصطفی آصفی

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

  5. darabi (خریدار محصول)

    سلام استاد بزرگوار،
    ممنونم از آموزش بسیار خوبتون. من چند تا سوال دارم ممنون میشم لطف کنید و راهنمایی بفرمایید.
    استاد، من از تصاویر دوربین حرارتی استفاده می کنم. متاسفانه object detection با کدی که داریم برای این تصاویر انجام نمی شه. من از دستورات زیر هم استفاده کردم متاسفانه درست نشد.
    while True:
    success, frame = cap.read()

    # Convert the frame to grayscale
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # Apply color map for thermal visualization
    thermal = cv2.applyColorMap(gray, cv2.COLORMAP_JET)

    # Resize the frame for YOLOv3-tiny input size
    resized_frame = cv2.resize(thermal, (blob_size, blob_size))

    # Create blob from the resized frame
    blob = cv2.dnn.blobFromImage(resized_frame, scalefactor=1/255, size=(blob_size, blob_size), mean=(0, 0, 0),
    swapRB=True, crop=False)

    • مصطفی آصفی

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

  6. M

    با سلام و تشکر از آموزش مفیدتون:
    استاد اگر بخواهیم بر روی یکسری از تصاویر که حاشیه نویسی هم شده،شبکه آموزش داده شده در این درس را test کنیم و MAP خودکار محاسبه شود چه کاری باید انجام دهیم.
    تشکر

    • مصطفی آصفی

      سلام و ممنون از لطفتون خوشحالم که مفید بوده. برای محاسبه خودکار mAP همون طور که تو مستندات مخزن گیت هاب هم مشاهده می کنید باید انتهای دستور darknet (موقع تعلیم) -map رو اضافه کنید:
      در مورد تست عکس حاشیه نویسی شده لطفا سوالتون رو بیشتر توضیح بدین. حاشیه نویسی منظورتون چی هست و چه چیزی رو روی تصاویر می خواین تشخیص بدین؟

  7. sabouriniloofar12@gmail.com

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

    • مصطفی آصفی

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

  8. sabouriniloofar12@gmail.com

    سلام اقای آصفی من یه مشکل خوردم اینکه وقتی دستور اخر برای ترین داده ها رو میزنم انگار فایلم نصفه اجرا میشه و اصلا برای ترین نمیره الان 3 روزه درگیرشم و نمیدونم مشکل کجاست دقیقا تا اخر این دستور اجرا میشه:
    CUDA-version: 11080 (12000), cuDNN: 8.7.0, GPU count: 1
    OpenCV version: 4.2.0
    yolov3_training
    0 : compute_capability = 750, cudnn_half = 0, GPU: Tesla T4
    net.optimized_memory = 0
    mini_batch = 4, batch = 64, time_steps = 1, train = 1
    layer filters size/strd(dil) input output
    0 Create CUDA-stream – 0
    Create cudnn-handle 0
    conv 32 3 x 3/ 1 416 x 416 x 3 -> 416 x 416 x 32 0.299 BF
    1 conv 64 3 x 3/ 2 416 x 416 x 32 -> 208 x 208 x 64 1.595 BF
    2 conv 32 1 x 1/ 1 208 x 208 x 64 -> 208 x 208 x 32 0.177 BF
    3 conv 64 3 x 3/ 1 208 x 208 x 32 -> 208 x 208 x 64 1.595 BF
    4 Shortcut Layer: 1, wt = 0, wn = 0, outputs: 208 x 208 x 64 0.003 BF
    5 conv 128 3 x 3/ 2 208 x 208 x 64 -> 104 x 104 x 128 1.595 BF
    6 conv 64 1 x 1/ 1 104 x 104 x 128 -> 104 x 104 x 64 0.177 BF
    7 conv 128 3 x 3/ 1 104 x 104 x 64 -> 104 x 104 x 128 1.595 BF
    8 Shortcut Layer: 5, wt = 0, wn = 0, outputs: 104 x 104 x 128 0.001 BF
    9 conv 64 1 x 1/ 1 104 x 104 x 128 -> 104 x 104 x 64 0.177 BF
    10 conv 128 3 x 3/ 1 104 x 104 x 64 -> 104 x 104 x 128 1.595 BF
    11 Shortcut Layer: 8, wt = 0, wn = 0, outputs: 104 x 104 x 128 0.001 BF
    12 conv 256 3 x 3/ 2 104 x 104 x 128 -> 52 x 52 x 256 1.595 BF
    13 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    14 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    15 Shortcut Layer: 12, wt = 0, wn = 0, outputs: 52 x 52 x 256 0.001 BF
    16 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    17 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    18 Shortcut Layer: 15, wt = 0, wn = 0, outputs: 52 x 52 x 256 0.001 BF
    19 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    20 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    21 Shortcut Layer: 18, wt = 0, wn = 0, outputs: 52 x 52 x 256 0.001 BF
    22 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    23 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    24 Shortcut Layer: 21, wt = 0, wn = 0, outputs: 52 x 52 x 256 0.001 BF
    25 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    26 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    27 Shortcut Layer: 24, wt = 0, wn = 0, outputs: 52 x 52 x 256 0.001 BF
    28 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    29 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    30 Shortcut Layer: 27, wt = 0, wn = 0, outputs: 52 x 52 x 256 0.001 BF
    31 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    32 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    33 Shortcut Layer: 30, wt = 0, wn = 0, outputs: 52 x 52 x 256 0.001 BF
    34 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    35 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    36 Shortcut Layer: 33, wt = 0, wn = 0, outputs: 52 x 52 x 256 0.001 BF
    37 conv 512 3 x 3/ 2 52 x 52 x 256 -> 26 x 26 x 512 1.595 BF
    38 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    39 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    40 Shortcut Layer: 37, wt = 0, wn = 0, outputs: 26 x 26 x 512 0.000 BF
    41 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    42 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    43 Shortcut Layer: 40, wt = 0, wn = 0, outputs: 26 x 26 x 512 0.000 BF
    44 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    45 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    46 Shortcut Layer: 43, wt = 0, wn = 0, outputs: 26 x 26 x 512 0.000 BF
    47 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    48 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    49 Shortcut Layer: 46, wt = 0, wn = 0, outputs: 26 x 26 x 512 0.000 BF
    50 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    51 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    52 Shortcut Layer: 49, wt = 0, wn = 0, outputs: 26 x 26 x 512 0.000 BF
    53 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    54 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    55 Shortcut Layer: 52, wt = 0, wn = 0, outputs: 26 x 26 x 512 0.000 BF
    56 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    57 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    58 Shortcut Layer: 55, wt = 0, wn = 0, outputs: 26 x 26 x 512 0.000 BF
    59 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    60 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    61 Shortcut Layer: 58, wt = 0, wn = 0, outputs: 26 x 26 x 512 0.000 BF
    62 conv 1024 3 x 3/ 2 26 x 26 x 512 -> 13 x 13 x1024 1.595 BF
    63 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
    64 conv 1024 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BF
    65 Shortcut Layer: 62, wt = 0, wn = 0, outputs: 13 x 13 x1024 0.000 BF
    66 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
    67 conv 1024 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BF
    68 Shortcut Layer: 65, wt = 0, wn = 0, outputs: 13 x 13 x1024 0.000 BF
    69 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
    70 conv 1024 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BF
    71 Shortcut Layer: 68, wt = 0, wn = 0, outputs: 13 x 13 x1024 0.000 BF
    72 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
    73 conv 1024 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BF
    74 Shortcut Layer: 71, wt = 0, wn = 0, outputs: 13 x 13 x1024 0.000 BF
    75 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
    76 conv 1024 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BF
    77 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
    78 conv 1024 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BF
    79 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
    80 conv 1024 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BF
    81 conv 18 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 18 0.006 BF
    82 yolo
    [yolo] params: iou loss: mse (2), iou_norm: 0.75, obj_norm: 1.00, cls_norm: 1.00, delta_norm: 1.00, scale_x_y: 1.00
    83 route 79 -> 13 x 13 x 512
    84 conv 256 1 x 1/ 1 13 x 13 x 512 -> 13 x 13 x 256 0.044 BF
    85 upsample 2x 13 x 13 x 256 -> 26 x 26 x 256
    86 route 85 61 -> 26 x 26 x 768
    87 conv 256 1 x 1/ 1 26 x 26 x 768 -> 26 x 26 x 256 0.266 BF
    88 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    89 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    90 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    91 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    92 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    93 conv 18 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 18 0.012 BF
    94 yolo
    [yolo] params: iou loss: mse (2), iou_norm: 0.75, obj_norm: 1.00, cls_norm: 1.00, delta_norm: 1.00, scale_x_y: 1.00
    95 route 91 -> 26 x 26 x 256
    96 conv 128 1 x 1/ 1 26 x 26 x 256 -> 26 x 26 x 128 0.044 BF
    97 upsample 2x 26 x 26 x 128 -> 52 x 52 x 128
    98 route 97 36 -> 52 x 52 x 384
    99 conv 128 1 x 1/ 1 52 x 52 x 384 -> 52 x 52 x 128 0.266 BF
    100 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    101 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    102 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    103 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    104 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    105 conv 18 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 18 0.025 BF
    106 yolo
    [yolo] params: iou loss: mse (2), iou_norm: 0.75, obj_norm: 1.00, cls_norm: 1.00, delta_norm: 1.00, scale_x_y: 1.00
    Total BFLOPS 65.304
    avg_outputs = 516723
    Allocate additional workspace_size = 149.82 MB
    Loading weights from darknet53.conv.74…
    seen 64, trained: 0 K-images (0 Kilo-batches_64)
    Done! Loaded 75 layers from weights-file
    Learning Rate: 0.001, Momentum: 0.9, Decay: 0.0005
    Detection layer: 82 – type = 28
    Detection layer: 94 – type = 28
    Detection layer: 106 – type = 28
    Resizing, random_coef = 1.40

    608 x 608
    Create 6 permanent cpu-threads

    • مصطفی آصفی

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

  9. محمدعلی فلاحتی (خریدار محصول)

    سلام عیدتنون مبارک ببخشید یه سوال داستم برای یولو v7 به نظر شما ب ازای هر کلاس چند اپوک لازمه

  10. محمدعلی فلاحتی (خریدار محصول)

    try to allocate additional workspace_size = 149.82 MB
    CUDA allocate done!

    calculation mAP (mean average precision)…
    Detection layer: 82 – type = 28
    Detection layer: 94 – type = 28
    Detection layer: 106 – type = 28
    4
    cuDNN status Error in: file: ./src/convolutional_kernels.cu : () : line: 543 : build time: Mar 3 2023 – 19:11:45

    cuDNN Error: CUDNN_STATUS_BAD_PARAM
    Darknet error location: ./src/dark_cuda.c, cudnn_check_error, line #204
    cuDNN Error: CUDNN_STATUS_BAD_PARAM: Success
    سلام معیار Map رو گزاشتم و با این ارور مواجه شدم

    • مصطفی آصفی

      سلام وقت بخیر. بله ظاهرا یه مشکل (+) این مخزن با دو کلاس و این فلگ هست.

  11. محمدعلی فلاحتی (خریدار محصول)

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

    • مصطفی آصفی

      سلام وقت بخیر. عبارت map رو به انتهای فرمان train به صورت پایین اضافه کنید.
      !./darknet detector train custom_data/labelled_data.data cfg/yolov3_custom.cfg custom_weight/darknet53.conv.74 -dont_show -map
      به این ترتیب یک فایل chart.png تو پوشه darknet تشکیل میشه.

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

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

    • مصطفی آصفی

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

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

    سوال زیر سوال چندین نفر است که ویدئو را تهیه کرده اند و اکنون به صورت جداگانه سوال کردیم اما متاسفانه حذف می
    ردد سوال ما.
    با سلام خدمت جناب آصفی
    من به دقت آموزش رو دیدم به یک سوال برخوردم، در آموزش می فرمایید بر اساس /batch=1/batch=64 و max_batches = 500200/max_batches = 6000
    یک تعداد Iteration مشخصی با توجه به 50 نمونه انسان های با ماسک و بدون ماسک باید طی شود اما در اینجا تا 1100 هم رفت و خودم قطع کردم لطفا راهنمایی بفرمایید طبق گفته خودتون باید تعداد نمونه (50) تقسیم بر تعداد بچ (64)بشه که عددی زیر یک می شود.
    باتشکر

    • مصطفی آصفی

      سلام به شما. پایین برای دوستتون توضیح دادم.

  14. مهدی

    با سلام و تشکر از آموزش خوبتون
    با توجه به اینکه
    ‘s/batch=1/batch=64/’
    و
    ‘s/max_batches = 500200/max_batches = 6000/’
    و اینکه تعداد عکس ها 50 هست باید epoch های بسیار کمی را داشته باشیم اما در اینجا با اجرا ظاهرا تعداد نامحدود iteration داریم و من آن را تا 1000 و save شدن فایل yolov3_training_1000.weights تجربه کردم و خودم آموزش را قطع کردم لطفا این مورد را راهنمایی بفرمایید

    • مصطفی آصفی

      سلام به شما. درس ۱۰ دقیقه ۱۳ این رو توضیح دادم. نمونه های ما صرفا آموزشی هست و اونجا هم گفتم که اگه ۶۴ تا عکس بود هر بچ ما شامل همه نمونه ها بود. یا اگه ۶۴۰ تا بود هر بچ ما ۶۴ تا عکس رو در برمی گرفت پس ۱۰ تا بچ داشتیم. دقیقه ۱۳:۳۱ تاکید کردم که «اگه نمونه های ما ۶۴ تا بود رندتر بود نه؟». یعنی الان که نمونه های ما صرفا جنبه درس آموزشی دارن و ۵۰ تا نیستن با این که بچ سایز رو ۶۴ گذاشتیم ولی یک بچ داریم همون ۵۰ تا رو در بر می گیره.

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

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

    gcc -Iinclude/ -Isrc/ -DOPENCV `pkg-config –cflags opencv` -DGPU -I/usr/local/cuda-11.6/include/ -DCUDNN -Wall -Wno-unused-result -Wno-unknown-pragmas -Wfatal-errors -fPIC -Ofast -DOPENCV -DGPU -DCUDNN -c ./src/gemm.c -o obj/gemm.o
    In file included from ./src/utils.h:5:0,
    from ./src/gemm.c:2:
    include/darknet.h:11:14: fatal error: cuda_runtime.h: No such file or directory
    #include “cuda_runtime.h”
    ^~~~~~~~~~~~~~~~
    compilation terminated.
    Makefile:89: recipe for target ‘obj/gemm.o’ failed
    make: *** [obj/gemm.o] Error 1

    • مصطفی آصفی

      سلام وقت بخیر. طبق این خطا فایل CUDA_RUTIME.H رو پیدا نمی کنه. طبق این گزارش (+) باید با تضحیح نسخه CUDA تو دستور NVCC درست کار کنه که البته خودتونم پایین نوشتین نسخه رو اصلاح کردین. شاید نسخه دیگه باید استفاده کنید. این پرسش و پاسخ (+) هم بررسی و نتیجه رو اعلام کنید.

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

    سلام وقت بخیر، در حال حاضر که نسخه Cuda 11.6 روی colab نصب هست و من فایل ها آموزش را دارم اجرا می کنم در زمان make کردن به خطای زیر میرسم. لطفا راهنمایی کنید. ضمنا فایل را هم NVCC= /usr/local/cuda-11/bin/nvcc اصلاح کردم. متشکرم

    gcc -Iinclude/ -Isrc/ -DOPENCV `pkg-config –cflags opencv` -DGPU -I/usr/local/cuda/include/ -DCUDNN -Wall -Wno-unused-result -Wno-unknown-pragmas -Wfatal-errors -fPIC -Ofast -DOPENCV -DGPU -DCUDNN -c ./src/convolutional_layer.c -o obj/convolutional_layer.o
    ./src/convolutional_layer.c: In function ‘cudnn_convolutional_setup’:
    ./src/convolutional_layer.c:148:5: warning: implicit declaration of function ‘cudnnGetConvolutionForwardAlgorithm’; did you mean ‘cudnnGetConvolutionForwardAlgorithm_v7’? [-Wimplicit-function-declaration]
    cudnnGetConvolutionForwardAlgorithm(cudnn_handle(),
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    cudnnGetConvolutionForwardAlgorithm_v7
    ./src/convolutional_layer.c:153:13: error: ‘CUDNN_CONVOLUTION_FWD_SPECIFY_WORKSPACE_LIMIT’ undeclared (first use in this function); did you mean ‘CUDNN_CONVOLUTION_FWD_ALGO_DIRECT’?
    CUDNN_CONVOLUTION_FWD_SPECIFY_WORKSPACE_LIMIT,
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    CUDNN_CONVOLUTION_FWD_ALGO_DIRECT
    compilation terminated due to -Wfatal-errors.
    Makefile:89: recipe for target ‘obj/convolutional_layer.o’ failed
    make: *** [obj/convolutional_layer.o] Error 1

  17. مهدی

    با سلام و احترام:
    تشکر از آموزش مفیدتون
    در حال ساختن فایل اجرایی برای دارکنت با !make حتی با کدهای خودتان خطای زیر داده می شود تمامی فرآیند را چندین بار چک نموده اما مشکل رفع نگردید و می گویند برای CUDAهای جدید این خطا وجود دارد.تشکر
    nvcc warning : The ‘compute_35’, ‘compute_37’, ‘compute_50’, ‘sm_35’, ‘sm_37’ and ‘sm_50’ architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning

    • مصطفی آصفی

      سلام و ممنون از اطلاعتون. این البته خطا نیست اخطاره و کدتون بعد از اون باید اجرا بشه. خطای nvcc fatal که دریافت نمی کنید درسته؟ می تونید برای نادیده گرفتن این اخطار بالا کدتون از این کد که خودش هم پیشنهاد کرده استفاده کنید:
      -Wno-deprecated-gpu-targets to suppress warning

  18. محمدعلی فلاحتی (خریدار محصول)

    سلام امیدواروم حالتون خوب یاشه ی سوال داشتم این که موقع آموزش ما ده کلاس داریم و 1500 داده اما بعد از 150 مرحله colab رمش پر میشه و راه قطع میشه ؟؟؟

    • مصطفی آصفی

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

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

    عرض سلام و خسته نباشید
    ضمن تشکر از آموزش عالیتون یه سوال داشتم
    من میخوام بعد از تشخیص اشیاء اونها رو ببرم و توی عکس های جداگانه نمایش بدم همونجایی که دستور cv2.rectangle هست تصویر رو اندازه x:x+w , y:y+h میبرم ولی یه قسمت دیگه از تصویر نمایش داده میشه چطور میتونم این کار رو انجام بدم

    • مصطفی آصفی

      سلام سلامت باشید. کد این لینک (+) می تونه مفید باشه.
      برای نمونه کدهای بیشتر گوگل کنید:
      how extract object as picture yolo

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

    سلام مهندس وقتتون به خیر ممنونم که با صبر و حوصله پاسخگوی سوالات بنده بودید.
    بنده با توجه به راهنمایی های شما و تحیقی که خودم انجام دادم به این نتیجه رسیدم که سایز 608*608 تقریبا مرز خوانایی و ناخوانایی کلمات هستند. به همین دلیل train قبلی رو با همان عکس ها و همان شرایط دوباره انجام دادم ولی با blob size==608*608 نتیجه خیلی بهتر شد و از 34 نمونه تستی 31 نمونه رو عالی تشخیص داد. البته فقط با یک لیبل و اون هم فقط جدول فاکتور رو تشخیص بده آموزش رو انجام دادم. البته با blob size == 800*800 هم آموزش دادم .ولی هنوز تست ازش نگرفتم. جواب اون رو هم اینجا مینوسم ممکن هست این مطالب برای باقی دوستان مفید باشه.
    مهندس بنده به انکر باکس های یولو رو تغییر ندادم . به نظر شما تغییر بدهم برای کار ما بهتر هست؟

    • مصطفی آصفی

      سلام و سپاس از این که تجربه خودتون رو به اشتراک گذاشتین. به نظرم تنظیمات خود یولو رو تغییر ندین. وقتی همه چیز متغیر بشه کار سخت میشه. در عوض توصیه می کنم نسخه های جدید یولو رو بررسی و امتحان کنید. شما الان ساختار یولو رو می شناسید و حتی اگه دانش زبانی خوبی نداشته باشین می تونید آموزش های زبان اصلی یوتیوب رو سریع شبیه سازی و مهاجرت کنید. یولوی ۷ (YOLO 7) یا نسخه ۴ جای بررسی دارن.

  21. سعیده (خریدار محصول)

    سلام ممنون از آموزش خوبتون

    یه سوالی که داشتم اینه که من برای حدود 300 تصویر آموزش رو انجام دادم ولی مشکلی که هست اینه که در همون ایپوک اول، ترین انجام میشه و به همین دلیل yolov3_training_last.weight برای من ایجاد نمیشه چطور می تونم وزن های آموزش دیده شده را بردارم و امتحان کنم؟

    • مصطفی آصفی

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

      پی‌نوشت: در کل می خوام تاکید کنم که دست به گوگل باشین. معمولا اغلب مشکلات و خواسته های ما رو دیگران قبل ما داشتن.

  22. Daberi (خریدار محصول)

    مهندس آصفی بسیار سپاسگزارم از اینکه وقت گزاشتید و به سوالات زیاد بنده جواب دادید.
    الان یک ترین انجام دادیم و نتیجه میشه گفت خوب هست .باکسی که دور جدول میندازه توی تست از لحاظ ارتفاع عالی هست ولی متاسفانه از لحاظ عرض جدول روی محور y حدودا 10 درصد(تقریبا یک تا 1.5 سانت کمتر یا بیشتر باکس میندازه) خطا داره. چه روی نمونه هایی که باهاش ترین شده و چه روی نمونه هایی که باهاش ترین نشده.
    ما آموزش رو با عکس های معمولا بالای 1024 پیکسل انجام دادیم.ولی blob موقع آموزش 416*416 بوده ،ممکنه به این دلیل باشه؟

    • مصطفی آصفی

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

  23. Daberi (خریدار محصول)

    سلام مهندس .ممنون بابت آموزش روان و از پایه نکات رو تشریح کردید.
    الان بنده روی یک پروژه واقعی آنالیز فاکتور کار میکنم.چند تا سوال داشتم ممنون میشم راهنمایی بفرمایید.
    1 // شما فرمودید ورودی تصویر باید قابل تقسیم به 32 باشد. الان من با گوشی خودم عکس گرفتم و ابعادش شده (1841*3998 ) با ( 96 dpi و 24 bit ) الان بنده روی همین عکس لیبیل بزنم و برای train استفاده کنم بعدا برای تست و محیط واقعی که کاربر ممکن هست با هر سایزی با گوشیش عکس بگیره و برای ما بفرسته ، یولو میتونه اشیا رو به درستی تشخیص بده؟
    2 // اینکه کاربر ها با هر نوع فرمت ممکنه برای ما عکس ارسال کنند هم آیا مشکلی برای تشخیص توسط یولو ایجاد میکنه؟
    3 // مهندس جان ما الان پنج تا کلاس تعریف کردیم با توجه به اینکه ما روی فاکتور کالا کار میکنیم وهمه محتواش متن و جدول هست ،نیازی به 80 تا آبجکت خود یولو نداریم؟ یا بهتر هست از اون 80 تا هم موقع train استفاده کنیم.؟؟
    4 // جناب آصفی ما یک مجموعه دیتا 3000 هزار تایی از عکس فاکتورها آماده کردیم به نظر شما کافی هست؟زیاد نیست؟
    5 // مهندس با توجه به اینکه ما به تصاویر رنگی نیاز نداریم. بهتر هست هم موقع train و هم موقعیکه عکس ارسالی توسط کاربر رو به یولو میدهیم عکس ها را خودمان سیاه و سفید کنیم؟؟ برای آموزش و تشخیص تاثیر بهتری داره؟

    • مصطفی آصفی

      سلام سلامت باشین. در مورد سوالاتون پایین براتون توضیح میدم اما سوالاتتون نشون میده که آموزش رو با دقت ندیدین و شاید بیشتر روی اجرای کدها مشغول بودین. خیلی مهمه که مفهوم ابزاری که استفاده می کنید رو عمیق درک کنید. درک عمیق در وهله اول روشن می کنه که مناسب کار هست یا نه.
      ۱- بهتره ورودی دریافتی از کاربر رو به شکل مناسب تبدیل و بعد وارد یولو کنید. ساخت blob (+) البته این موضوع رو مدیریت می کنه اما خوب اگه نسبت ابعادی شما خیلی متفاوت باشه به هر حال اعوجاج روی دقت تاثیر می گذاره.
      ۲- فرمت رو کنترل کنید تا یک فرمت قابل ارسال باشه یا میتونید از کاربر چند نوع عکس رو دریافت کنید و پشت صحنه قبل از ورود به شبکه اون رو تبدیل کنید.
      ۳- نه دیگه نیازی نیست.
      ۴- به نظر خوبه ولی نمیشه قطعی نظر داد. باید دیتاست در برگیرنده گوناگونی حالت های یک پدیده باشه. یه وقت هست شما با گربه سروکار دارید که انواع مختلف و حالت های مختلف می تونه داشته باشه و یه وقت هست با ماسک که خیلی گوناگونی محدودتری داره.
      ۵- بله عکس GrayScale تک کانالی رو هم موقع تعلیم و هم موقع تست معیار قرار بدین و از کاربر هم که می گیرید (کاربر هر طور که بارگذاری کرد) شما پشت صحنه تبدیل کنید.

  24. رضا

    با سلام و خسته نباشید خدمت استاد عزیز، اگر بخواهیم برای آموزش مدلی جهت object detection از yolo استفاده کنیم، که این مدل 500 کلاس از اشیا رو بتونه تشخیص بده، می تونیم از colab استفاده کنیم ؟ چون با توجه به محدودیت های colab و بالا بودن زمان آموزش ممکنه به مشکل بر بخوریم. و برای کم کردن زمان آموزش به کمک transfer learning چگونه باید عمل کنیم که دقت خوبی بگیریم؟

    • مصطفی آصفی

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

  25. فولادگر (خریدار محصول)

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

    • مصطفی آصفی

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

  26. farnoosh_heidary@yahoo.com (خریدار محصول)

    سلام وقتتون بخیر
    ممنونم بابت دوره عالی،
    من دیتاستم مستطیلی بود، ولی با همون سایر ۴۱۶ یولو رو ترین کردم، اما موقع تست روی تصویر چندین باکس می افته، میخواستم بدونم علتش چیه

    • مصطفی آصفی

      سلام و ممنون از انرژی خوبتون. شاید من خوب متوجه نشدم اما اگه منظورتون اینه که روی یک شی چند تا مستطیل ترسیم میشه شاید دارید از یولو ۴ استفاده می کنید که این کار درش طبیعیه. در هر صورت می تونید موقع ترین (دستور !./darknet) این فلگ رو به انتهای دستور اضافه کنید:
      -thresh 0.5
      شبیه این
      !./darknet detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights -dont_show test.mp4 -i 0 -out_filename results.avi -thresh 0.5

  27. علی

    سلام من وقتی میخوام یولو4 رو تست کنم این ارور رو میده ، قبلا وقتی ورژن اوپن سی وی رو تغییر میدادم تغییر میکرد ولی الان با تغییر دادن ورژنم درست نمیشه ، میشه گفت بیشتر ورژن ها رو تست کردم کتوی سایت های مختلف چیزی در مورد راه حلش ننوشته.
    OpenCV(3.4.2) /io/opencv/modules/dnn/src/darknet/darknet_io.cpp:559: error: (-212:Parsing error) Unsupported activation: mish in function ‘ReadDarknetFromCfgFile’

    لطفا راهنمایی کنید

    • مصطفی آصفی

      سلام به شما. دقت کنید که یولوی ۴ روی اوپن سی وی نسخه ۴.۲ و ۴.۳ جواب نمیده. باید نسخه بالاتر یا نسخه برنچ مستر رو نصب کنید. این ایشیو (+) رو ببینید.

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

  28. ابراهیم

    سلام اقای آصفی من در بخش نصی و تنطیم دارک نت به مشکل خوردم بعد از اجرای دستور (make!) درآخر این ارور رو به من میده چکار کنم
    Makefile:92: recipe for target ‘obj/convolutional_kernels.o’ failed
    make: *** [obj/convolutional_kernels.o] Error 1

    • مصطفی آصفی

      سلام به شما. این مقاله (+) و تغییران makefile رو در اون امتحان کنید.

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

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

    سلام استاد ممنون بابت آموزش خوبتون
    یه سوال داشتم
    blob_size دقیقا چیه که تعریف شده؟ من با تغییر مقدار blob_size نتایجم متفاوت میشه و یک blob_size ثابت (مثلا 320 یا 416) برای همه عکس ها جوابدهی کاملی نداره.
    برای blob_size چه مقداری خوبه؟

    • مصطفی آصفی

      سلام به شما آقای بازیار. کم لطفی می کنید. مفهوم بلاب رو جداگانه تو درس ۷ آموزش یولو (+) که شما هم فراگیرش هستین توضیح دادم.
      بلاب در واقع ورودی شبکه عصبی رو می سازه (+). اندازه blob در واقع اندازه تصویر ورودی هست. مثلا ۳۲۰ یعنی یک عکس ۳۲۰ در ۳۲۰ پیکسل از عکس اصلی می سازیم. ورودی شبکه ما هم یک مربع ۳۲۰ در ۳۲۰ از پیکسل‌ها خواهد بود.

  30. جابر پیشدار (خریدار محصول)

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

    • مصطفی آصفی

      سلام و ممنون از لطفتون. در مورد سوال اولتون بله طبیعتا اگه پردازش سیستم با نمایش مشغول نشه سرعت کمی بالاتر می ره. در مورد دوم به طور کلی همون طور که در پایان دوره هم گفتم (شایدم دوره یولوی مقدماتی بود)، شما اگه پردازشتون مبتنی بر GPU باشه روی سیستم سرعت خیلی بالاتر میره. خود سازنده کتابخونه تو سخنرانی تد خودش از جی پی یو استفاده کرد و سال ۲۰۱۶ یک سرعت خیلی خوبی رو ما می بینیم که کارشون داره. بنا به گفته خود وبسایت یولو و آقای ردمون اگه از GPU استفاده کنید تا ۵۰۰ برابر سرعت تشخیص بالا میره.

  31. فائزه فریدونیان (خریدار محصول)

    سلام حسته نباشد ، من زمانیکه وزن هایاموزش داده خودم را میدهم به شبکه در هنگام تست این ارور را مشاهده میکنم ،ممنون میشم راهنمایی کنید
    Traceback (most recent call last):
    File “c:\Users\ParsehRayan\Desktop\yolov3\costem\yolov3.py”, line 77, in
    findobjects(output, frame)
    File “c:\Users\ParsehRayan\Desktop\yolov3\costem\yolov3.py”, line 54, in findobjects
    cv2.putText(img, f'{coco_classes[class_ids[i]].upper()}{int(confidences[i]*100)}%’,
    IndexError: list index out of range
    [ WARN:0] global C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-95hbg2jt\opencv\modules\videoio\src\cap_msmf.cpp (435) `anonymous-namespace’::SourceReaderCB::~SourceReaderCB terminating async callback

  32. علی

    سلام من وزن های یولو4 را اموزش دادم ، زمانیکه میخوام از این وزن ها در برنامه استفاده کنم این ارور میده
    OpenCV(4.1.2) /io/opencv/modules/dnn/src/darknet/darknet_io.cpp:554: error: (-212:Parsing error) Unsupported activation: mish in function ‘ReadDarknetFromCfgStream’

    لطفا راهنمایی کنید

    • مصطفی آصفی

      سلام به شما. بر اساس این لینک (+)، این نسخه اوپن سی وی رو یولوی ۴ پشتیبانی نمی کنه. از آخرین نسخه تو برنچ مستر میشه استفاده کرد.

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

  33. علی عباسیان (خریدار محصول)

    با سلام و خسته نباشید. من یک سوالی داشتم. تمامی مراحل برای شخصی سازی شبکه عصبی را انجام دادم اما مشکلی که هست موقعی که کد شروع شروع به یادگیری و اجرا میکنم(!./darknet detector train data/obj.data cfg/yolov3_training.cfg darknet53.conv.74 -dont_show ) کد اجرا میشود ام بعد از 4 ثانیه اجرای کد متوقف می شود. ممنون میشم کمک کنید.

    در ادامه خروجی ترمینال رو کپی کردم.

    CUDA-version: 11010 (11020), cuDNN: 7.6.5, GPU count: 1
    OpenCV version: 3.2.0
    yolov3_training
    0 : compute_capability = 370, cudnn_half = 0, GPU: Tesla K80
    net.optimized_memory = 0
    mini_batch = 4, batch = 64, time_steps = 1, train = 1
    layer filters size/strd(dil) input output
    0 Create CUDA-stream – 0
    Create cudnn-handle 0
    conv 32 3 x 3/ 1 416 x 416 x 3 -> 416 x 416 x 32 0.299 BF
    1 conv 64 3 x 3/ 2 416 x 416 x 32 -> 208 x 208 x 64 1.595 BF
    2 conv 32 1 x 1/ 1 208 x 208 x 64 -> 208 x 208 x 32 0.177 BF
    3 conv 64 3 x 3/ 1 208 x 208 x 32 -> 208 x 208 x 64 1.595 BF
    4 Shortcut Layer: 1, wt = 0, wn = 0, outputs: 208 x 208 x 64 0.003 BF
    5 conv 128 3 x 3/ 2 208 x 208 x 64 -> 104 x 104 x 128 1.595 BF
    6 conv 64 1 x 1/ 1 104 x 104 x 128 -> 104 x 104 x 64 0.177 BF
    7 conv 128 3 x 3/ 1 104 x 104 x 64 -> 104 x 104 x 128 1.595 BF
    8 Shortcut Layer: 5, wt = 0, wn = 0, outputs: 104 x 104 x 128 0.001 BF
    9 conv 64 1 x 1/ 1 104 x 104 x 128 -> 104 x 104 x 64 0.177 BF
    10 conv 128 3 x 3/ 1 104 x 104 x 64 -> 104 x 104 x 128 1.595 BF
    11 Shortcut Layer: 8, wt = 0, wn = 0, outputs: 104 x 104 x 128 0.001 BF
    12 conv 256 3 x 3/ 2 104 x 104 x 128 -> 52 x 52 x 256 1.595 BF
    13 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    14 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    15 Shortcut Layer: 12, wt = 0, wn = 0, outputs: 52 x 52 x 256 0.001 BF
    16 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    17 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    18 Shortcut Layer: 15, wt = 0, wn = 0, outputs: 52 x 52 x 256 0.001 BF
    19 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    20 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    21 Shortcut Layer: 18, wt = 0, wn = 0, outputs: 52 x 52 x 256 0.001 BF
    22 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    23 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    24 Shortcut Layer: 21, wt = 0, wn = 0, outputs: 52 x 52 x 256 0.001 BF
    25 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    26 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    27 Shortcut Layer: 24, wt = 0, wn = 0, outputs: 52 x 52 x 256 0.001 BF
    28 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    29 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    30 Shortcut Layer: 27, wt = 0, wn = 0, outputs: 52 x 52 x 256 0.001 BF
    31 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    32 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    33 Shortcut Layer: 30, wt = 0, wn = 0, outputs: 52 x 52 x 256 0.001 BF
    34 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    35 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    36 Shortcut Layer: 33, wt = 0, wn = 0, outputs: 52 x 52 x 256 0.001 BF
    37 conv 512 3 x 3/ 2 52 x 52 x 256 -> 26 x 26 x 512 1.595 BF
    38 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    39 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    40 Shortcut Layer: 37, wt = 0, wn = 0, outputs: 26 x 26 x 512 0.000 BF
    41 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    42 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    43 Shortcut Layer: 40, wt = 0, wn = 0, outputs: 26 x 26 x 512 0.000 BF
    44 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    45 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    46 Shortcut Layer: 43, wt = 0, wn = 0, outputs: 26 x 26 x 512 0.000 BF
    47 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    48 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    49 Shortcut Layer: 46, wt = 0, wn = 0, outputs: 26 x 26 x 512 0.000 BF
    50 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    51 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    52 Shortcut Layer: 49, wt = 0, wn = 0, outputs: 26 x 26 x 512 0.000 BF
    53 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    54 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    55 Shortcut Layer: 52, wt = 0, wn = 0, outputs: 26 x 26 x 512 0.000 BF
    56 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    57 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    58 Shortcut Layer: 55, wt = 0, wn = 0, outputs: 26 x 26 x 512 0.000 BF
    59 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    60 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    61 Shortcut Layer: 58, wt = 0, wn = 0, outputs: 26 x 26 x 512 0.000 BF
    62 conv 1024 3 x 3/ 2 26 x 26 x 512 -> 13 x 13 x1024 1.595 BF
    63 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
    64 conv 1024 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BF
    65 Shortcut Layer: 62, wt = 0, wn = 0, outputs: 13 x 13 x1024 0.000 BF
    66 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
    67 conv 1024 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BF
    68 Shortcut Layer: 65, wt = 0, wn = 0, outputs: 13 x 13 x1024 0.000 BF
    69 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
    70 conv 1024 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BF
    71 Shortcut Layer: 68, wt = 0, wn = 0, outputs: 13 x 13 x1024 0.000 BF
    72 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
    73 conv 1024 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BF
    74 Shortcut Layer: 71, wt = 0, wn = 0, outputs: 13 x 13 x1024 0.000 BF
    75 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
    76 conv 1024 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BF
    77 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
    78 conv 1024 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BF
    79 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
    80 conv 1024 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BF
    81 conv 21 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 21 0.007 BF
    82 yolo
    [yolo] params: iou loss: mse (2), iou_norm: 0.75, obj_norm: 1.00, cls_norm: 1.00, delta_norm: 1.00, scale_x_y: 1.00
    83 route 79 -> 13 x 13 x 512
    84 conv 256 1 x 1/ 1 13 x 13 x 512 -> 13 x 13 x 256 0.044 BF
    85 upsample 2x 13 x 13 x 256 -> 26 x 26 x 256
    86 route 85 61 -> 26 x 26 x 768
    87 conv 256 1 x 1/ 1 26 x 26 x 768 -> 26 x 26 x 256 0.266 BF
    88 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    89 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    90 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    91 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
    92 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
    93 conv 21 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 21 0.015 BF
    94 yolo
    [yolo] params: iou loss: mse (2), iou_norm: 0.75, obj_norm: 1.00, cls_norm: 1.00, delta_norm: 1.00, scale_x_y: 1.00
    95 route 91 -> 26 x 26 x 256
    96 conv 128 1 x 1/ 1 26 x 26 x 256 -> 26 x 26 x 128 0.044 BF
    97 upsample 2x 26 x 26 x 128 -> 52 x 52 x 128
    98 route 97 36 -> 52 x 52 x 384
    99 conv 128 1 x 1/ 1 52 x 52 x 384 -> 52 x 52 x 128 0.266 BF
    100 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    101 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    102 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    103 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
    104 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
    105 conv 21 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 21 0.029 BF
    106 yolo
    [yolo] params: iou loss: mse (2), iou_norm: 0.75, obj_norm: 1.00, cls_norm: 1.00, delta_norm: 1.00, scale_x_y: 1.00
    Total BFLOPS 65.312
    avg_outputs = 516922
    Allocate additional workspace_size = 12.46 MB
    Loading weights from darknet53.conv.74…
    seen 64, trained: 0 K-images (0 Kilo-batches_64)
    Done! Loaded 75 layers from weights-file
    Learning Rate: 0.001, Momentum: 0.9, Decay: 0.0005
    Detection layer: 82 – type = 28
    Detection layer: 94 – type = 28
    Detection layer: 106 – type = 28
    Resizing, random_coef = 1.40

    608 x 608
    Create 6 permanent cpu-threads

    • مصطفی آصفی

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

  34. علی

    با سلام خدمت شما ، من یولو4 رو مانند یولو3 تنظیم کردم و تعداد کلاس ها و فیلترهاش رو تغییر دادم ، ولی زمانیکه ترین شبکه رو شروع میکنم ، بعضی از لایه ها و ناحیه ها لاس قابل توجهی دارن میخواستم بپرسم ایا راهی برای حل این مشکل هست ؟؟ چون احساس میکنم شاید مراحل تنظیم یولو4 با یولو3 کمی فرق داشته باشه.
    لطفا راهنمایی کنید.

    مثلا نمونه پایین یکی از لایه های ، یکی از بچ هاست

    IOU: 0.646761), count: 212, class_loss = 6.767802, iou_loss = 215.732773, total_loss = 222.5

  35. علی

    با سلام ، من yolov4 رو میخواستم ترین کنم ولی این ارور رو میده ، من در محیط کولب و با gpu برنامه رو ران کردم ، دقیقا نمیدونم این ارور از کجا ناشی میشه ، توی سایت های مختلف گفته بودن با تغییر batch ، میشه مشکلش رو حل کرد ولی من اینکار رو انجام دادم ولی باز جواب نداد . لطفا راهنمایی کنید.

    37 Try to set subdivisions=64 in your cfg-file.
    CUDA status Error: file: ./src/dark_cuda.c : () : line: 492 : build time: Mar 7 2022 – 20:06:17

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

    • مصطفی آصفی

      سلام به شما. این خطا داره می گه که قدرت پردارشی شما کافی نیست. لطفا این دو مورد رو امتحان کنید و ببینید مشکل حل میشه؟
      ۱- تو تنظیمات subdivisons رو مساوی ۳۲ یا حتی ۱۶ قرار بدین
      ۲- اندازه width و height رو کوچک تر کنید. مثلا اگه ۵۱۲ در ۵۱۲ هست به ۲۵۶ تبدیل کنید.

  36. علی

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

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

    • مصطفی آصفی

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

  37. علی

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

    [yolo] params: iou loss: mse (2), iou_norm: 0.75, obj_norm: 1.00, cls_norm: 1.00, delta_norm: 1.00, scale_x_y: 1.00
    Total BFLOPS 65.355
    avg_outputs = 518116
    Allocate additional workspace_size = 12.46 MB
    Loading weights from /mydrive/yolov3/yolov3_training_last.weights…
    seen 64, trained: 505 K-images (7 Kilo-batches_64)
    Done! Loaded 107 layers from weights-file
    Learning Rate: 0.001, Momentum: 0.9, Decay: 0.0005
    Detection layer: 82 – type = 28
    Detection layer: 94 – type = 28
    Detection layer: 106 – type = 28
    Resizing, random_coef = 1.40

    608 x 608
    Create 6 permanent cpu-threads

    ایا عبارت بالا به معنی این است که فرایند ترین کامل شده و وزن ها اماده اند که در برنامه ازشون استفاده کنیم ؟؟؟

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

    • مصطفی آصفی

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

  38. Mohammad

    سلام استاد وقتتون بخیر 🙂
    یک سوال داشتم ، اینکه آیا از yolo میشه برای face recognition استفاده کرد؟ (اگر دیتاست قوی باشه دقت خوبی داره؟)
    و اینکه اصلا برای تشخیص چهره yolo مناسب است یا کتابخونه face recognition?
    ممنون میشم راهنمایی کنید 🙂
    ارادت

    • مصطفی آصفی

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

  39. سید علی موسوی فرد

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

    • مصطفی آصفی

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

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

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

    سلام
    وقت بخیر
    برای تشخیص اشیا در ویدئو باید تغییراتی روی کد داده بشه ؟
    در قسمت آخر توضیح داده شده که از همین کدها برای ویدئو هم استفاده میشه ، لطف می کنید در مورد ویدئو راهنمایی کنید.
    ممنون

    • مصطفی آصفی

      سلام به شما. ما تو آموزش مقدماتی یولو (+) روی فیلم آزمایش کردیم. اول اون آموزش رو ببینید.
      البته باید یولو برای اجرا روی فیلم با اجرای روی GPU همراه باشه که سرعت مناسب داشته باشید.

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

    سلام وقت بخیر
    قسمت آخر یعنی تست کد با استفاده از دو تصویر تست1 و تست 2 رو چطور در ادامه کدها در کولب استفاده کنم . آیاد باید تصاویر تست 1 و 2 را در گوگل درایوم بارگزاری کنم؟
    cv2 چیه؟
    همه موارد رو درست پیش اومدم ولی هنوز نتونستم تستش کنم
    امکانش هست یک راهنمایی در این مورد بکنید ممنون

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

    سلام وقت بخیر و خدا قوت،
    جسارتا مرحله اخر هرکار میکنم ارور میده ممنون میشم راهنمایی بفرمایید تشکر
    ارور:

    Traceback (most recent call last)
    C:\Users\MNHOSE~1\AppData\Local\Temp/ipykernel_14256/448500009.py in
    53 output = net.forward(out_names)
    54
    —> 55 findObjects(output, frame)
    56
    57 cv2.imshow(“Webcam”, frame)

    C:\Users\MNHOSE~1\AppData\Local\Temp/ipykernel_14256/448500009.py in findObjects(output, img)
    38 # print(indices)
    39 for i in indices:
    —> 40 i = i[0]
    41 bbox = bboxes[i]
    42 x,y,w,h = bbox[0], bbox[1], bbox[2], bbox[3]

    IndexError: invalid index to scalar variable.

    • مصطفی آصفی

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

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

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

    error Traceback (most recent call last)
    C:\Users\MNHOSE~1\AppData\Local\Temp/ipykernel_19320/3134926664.py in
    14
    15
    —> 16 net = cv2.dnn.readNetFromDarknet(net_config, net_weights)
    17 net.setPreferableBackend(cv2.dnn.DNN_BACKEND_OPENCV)
    18 net.setPreferableTarget(cv2.dnn.DNN_TARGET_CPU)

    error: OpenCV(4.5.4) D:\a\opencv-python\opencv-python\opencv\modules\dnn\src\darknet\darknet_importer.cpp:207: error: (-212:Parsing error) Failed to parse NetParameter file: I:/poroje/data-cheshm/dd/All/amoozesh-yolo/Data/wig/yolov3_training.cfg in function ‘cv::dnn::dnn4_v20211004::readNetFromDarknet’

    • مصطفی آصفی

      سلام سلامت باشید. ببینید معمولا باید متن خطا رو دقیق بررسی و گوگل کرد. این شما رو خودکفا می کنه. این خطای شما برای مثال
      yolov3_training.cfg in function ‘cv::dnn::dnn4_v20211004::readNetFromDarknet
      داره می گه یه ایرادی توی خوندن فایل تنظیمات دارم. حالا یا فایل تنظیمات رو پیدا نمی کنه یا بر اساس تعداد کلاسی که دارین یا دستکاری که کردین یک چیزی داخل فایل تنظیمات اشتباه هست. اگه دقیقا مشابه من پیش رفته باشین احتمال اولی بیشتره. این پرسش و پاسخ (+) رو ببینید.

  44. علی حسینی طزرقی

    باسلام و تبریک بابت دوره فوق العادتون. یسوال مهم داشتم: برای شخصی سازی پروژه میخوام بدونم آیا تعداد کلاس ها تاثیری روی سرعت process سیستم موقع اجرا نه موقع learning میزاره؟واضح تر بگم برای پروژه خودم نیاز به حدودا ۱۰ تا از کلاس های دیتاست coco دارم . و بقیه کلاس هام رو باید از دیتاست های دیگه بگیرم. بنظرتون بهتره فقط تعدادی از کلاس های coco رو جداکنم و یا اصلا شدنیه یا بهتره تمام coco رو داشته یاشم و از دیتاست های دیگه کلاس های دیگه رو اضافه کنم؟ این کلاس های اضافه بعدا سرعت process رو کاهش نمیده موقع اجرا؟

    • مصطفی آصفی

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

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

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

    • مصطفی آصفی

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

  46. hoda nayebi

    سلام استاد ممنون بابت تدریس قابل فهم و خوبتون .
    من پکیج جامع رو گرفتم و همشو دیدم و برای اجراش مشکلی نداشتم. اما الان درگیر یک پروژه واقعی شدم که باید یا پردازش تصویر گاو های یک گاوداری رو تشخیص بده وبعد به هر کدام یک id بده سپس تعداد اونها رو نمایش بده و فعالیت های اونها رو به من گزارش بده و من الان در مرحله شمارش تعداد اونها موندم و هرچقدر هم طبق راه حل هایی که توی گوگل گفته شده میرم تعداد object های منو ۱ نشون میده ممنون میشم راهنمایی کنید که چجوری میشه تعداد object های یک کلاس بخصوص رو بدست آورد ؟؟
    در خصوص object tracking هم اگر یک منبع آموزشی معرفی کنید ممنون میشم

    • مصطفی آصفی

      سلام و سپاس از لطفتون. خوشحالم که در مسائل واقعی استفاده میشه و مساله جالبی هم هست.
      در مورد شمارش به کمک یولو ابزارهای جانبی مثل این مخزن object counter yolo (+) رو بررسی بفرمایید.
      در مورد ردیابی اشیا در یولو هم این فیلم YOLO v3 Object tracking with Deep SORT (+) رو توصیه می‌کنم ببینید.

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

    سلام وقت بخیر
    عذرخواهی میکنم بنده از کد شما واسه 43 تا کلاس دارم استفاده میکنم، داخل کولب هی ارور میده ممنون میشم راهنمایی کنید
    Error: l.outputs == params.inputs
    filters= in the [convolutional]-layer doesn’t correspond to classes= or mask= in [yolo]-layer
    correspond

    این ارور تو مرحله اخر Start training میده

    • مصطفی آصفی

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

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

    سلام روزتون بخیر
    File “C:\Users\Ghanbari\PycharmProjects\2-yolo_custom_object_colab-main\yolo_custom.py”, line 50, in
    blob = cv2.dnn.blobFromImage(frame, scalefactor=1/255, size=(blob_size,blob_size),mean=(0,0,0)
    cv2.error: OpenCV(4.5.4-dev) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\resize.cpp:4051:
    error: (-215:Assertion failed) !ssize.empty() in function ‘cv::resize’
    این ارور را دریافت می کنم

    • مصطفی آصفی

      سلام به شما. این خطا شاید به خاطر این باشه که فایل رو خوب نمی تونه بخونه. یا فرمت عکس مشکل داره یا مسیر دریافت فایلتون. مطمئن بشید که فایل رو مثل بنده تو مسیر مشابهی قرار دادین.

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

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

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

    File “C:\Users\Ghanbari\PycharmProjects\2-yolo_custom_object_colab-main\yolo_custom.py”, line 50, in
    blob = cv2.dnn.blobFromImage(frame, scalefactor=1/255, size=(blob_size,blob_size),mean=(0,0,0)
    cv2.error: OpenCV(4.5.4-dev) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\resize.cpp:4051:
    error: (-215:Assertion failed) !ssize.empty() in function ‘cv::resize’
    داخل کولب obj.data و obj.names را درست کردم وبعد درون پروژه در پایچرم قرار دادم:
    obj.data:
    classes = 6
    train = data/train.txt
    valid = data/test.txt
    names = data/obj.names
    backup = /My Drive/yolo3/
    —————————–
    obj.names:
    Wearing Mask
    Not Wearing Mask
    Helmet
    Not Helmet
    Safety gloves
    Not Safety gloves
    ______________________________
    و بعد از کولب پوشه cfg از yolov3_training.cfg را که خودم درست کردم دانلود کردم و درون پروژه “net_config = “cfg/yolov3_training.cfg قرار دادم:
    کد yolov3_training.cfg درون کولب:
    filter ((class=6)+5)*3
    :Change lines in yolov3.cfg file
    !sed -i ‘s/batch=1/batch=64/’ cfg/yolov3_training.cfg
    !sed -i ‘s/subdivision=1/subdivision=16/’ cfg/yolov3_training.cfg
    !sed -i ‘s/max_batches= 500200/max_batches = 6000/’ cfg/yolov3_training.cfg
    !sed -i ‘610 s@classes=80@classes=6@’ cfg/yolov3_training.cfg
    !sed -i ‘696 s@classes=80@classes=6@’ cfg/yolov3_training.cfg
    !sed -i ‘783 s@classes=80@classes=6@’ cfg/yolov3_training.cfg
    !sed -i ‘603 s@filters=255@filters=90@’ cfg/yolov3_training.cfg
    !sed -i ‘689 s@filters=255@filters=90@’ cfg/yolov3_training.cfg
    !sed -i ‘776 s@filters=255@filters=90@’ cfg/yolov3_training.cfg
    چکم کردم تغییراتش درست بود.
    ——————————————————–
    ولی وزن را این قرار دادم: “net_weights = “cfg/yolov3-tiny.weights
    مثل شما بلد نبودم نمیدونستم چه باید درست کنم :”net_weights = “cfg/yolov3_training_last.weights
    ——————————————–
    درون پایچرم نامپای و اپن سی وی پایتون بسته اش را نصب کردم
    ————————————–
    import cv2
    import numpy as np
    cap = cv2.VideoCapture(0)
    “obj_file = “obj.names
    [ ]=obj_classes
    “net_config = “cfg/yolov3_training.cfg
    “net_weights = “cfg/yolov3-tiny.weights
    blob_size = 320
    confidence_threshold = 0.5
    nms_threshold = 0.3

    :with open(obj_file, “rt”) as f
    obj_classes = f.read().rstrip(“\n”).split(“\n”)
    net = cv2.dnn.readNetFromDarknet(net_config, net_weights)
    net.setPreferableBackend(cv2.dnn.DNN_BACKEND_OPENCV)
    net.setPreferableTarget(cv2.dnn.DNN_TARGET_CPU)
    :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)
    print(indices) #
    : for i in indices
    i = i[0]
    bbox = bboxes[i]
    x,y,w,h = bbox[0], bbox[1], bbox[2], bbox[3]
    cv2.rectangle(img, (x,y), (x+w, y+h), (0,255,0), 2)
    cv2.putText(img, f'{obj_classes[class_ids[i]].upper()} {int(confidences[i] * 100)}%’,
    (x, y-10), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0,255,0), 2)
    frame = cv2.imread(‘test1.jpg’)
    blob = cv2.dnn.blobFromImage(frame, scalefactor=1/255, size=(blob_size,blob_size),mean=(0,0,0)
    ,swapRB=True,crop=False)
    net.setInput(blob)
    ()out_names = net.getUnconnectedOutLayersNames
    output = net.forward(out_names)
    findObjects(output, frame)
    cv2.imshow(“Webcam”, frame)
    cv2.waitKey(0)
    ——————————————————–
    کدهای کولبم تا الان بدون مشکل هستش

    باید برنامه ای درست کنم که فیلم افراد را بگیره پس نیاز به فیلم برداری دارم دسترسی فیلم برداری را به صورت زیر دادم:
    cap = cv2.VideoCapture(0)

    ممنون میشم راهنماییم کنید خیلی نیاز فوری دارم تا مشکلم حل بشه زمانم کم هستش با تشکر فراوان

    • مصطفی آصفی

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

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

    سلام
    متاسفانه colab داری محدودیت هست و هر چند مدت قطع می شود
    هدف من استفاده از کارت گرافیک nvidia بود
    دستوری که در پاسخ سوال قبلی فرمودین cpu برمیگردونه
    cuda هم روی سیستم نصب کردم
    طبق اطلاعات سایت nvidia مدل کارت گرافیک هم قابلیت استفاده از coda دارد
    لطفا راهنمایی بفرمایید
    با تشکر

    • مصطفی آصفی

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

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

    سلام جناب مهندس
    یکی از دوستان همین مشکل را داشته و شما این پاسخ را فرمودین:
    سلام به شما. ار بخش انتخاب Runtime گزینه Change runtime type رو انتخاب کنید. بعد از Hardware Acceleration نوع GPU رو انتخاب و ذخیره کنید.
    اما برای من جواب نداد
    اما من خودم همه مراحل را با شما پیش رفتم ابتدا این ارر را داشتم
    /bin/bash: ./darknet:
    ولی مجبور شدم سورس پروژه شما استفاده کنم که با این ارر مواجه شدم

    CUDA status Error: file: ./src/dark_cuda.c : () : line: 38 : build time: Nov 2 2021 – 22:29:22

    CUDA Error: no CUDA-capable device is detected
    Darknet error location: ./src/dark_cuda.c, check_error, line #69
    CUDA Error: no CUDA-capable device is detected: Bad file descriptor

    متشکرم

    • مصطفی آصفی

      سلام به شما. خطا داره می گه که کودا روی این دستگاه در دسترس نیست. دقت کنید راهنمایی بنده در مورد کولب بود. شما در محیط کولب دارید کار می کنید؟ اگه این طوره پس احتمالا اتصالتون به GPU گوگل قطع شده و باید دوباره یک سند تازه متصل کنید.
      اما اگه روی سیستم خودتون این خطا رو دریافت می کنید باید ببینید سیستم شما امکان پردازش GPU داره یا نه.
      device = torch.device(‘cuda’ if torch.cuda.is_available() else ‘cpu’)
      بعد این رو اگرا کنید ببینید چی براتون پرینت می کنه:
      print(device)

  52. FF_rashel (خریدار محصول)

    سلام. ممنونم از پاسخگویی و بیان شیوای مفاهیم، از تدریس زیبا تون سپاسگذاریم، واقعا عالی هست و خیلی لذت میبریم. جناب مهندس مصطفی آصفی، اگر فرصت دارید ممنون میشم در مورد یولوی نسخه 5 که با پایتورچ میباشد یه آموزش هم داشته باشید، من یولو 3 و 4 را اجرا نمودم بسیار خوب و عالی بود توضیحات شما، و کلی مطلب یادگرفته و منتظر آموزش نسخه های بعدی از یولو میباشیم.

    • مصطفی آصفی

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

  53. rozhina taghdimi (خریدار محصول)

    سلام استاد عزیز ممنونم از آموزش خوبتون خیلی فوق العاده و مفید بود و مرسی که با قیمت خیلی مناسب در اختیار ما قرار دادید
    من ۴تا سوال داشتم
    سوال ۱: برای فایل test.txt همون کدی رو بزنیم که برای train.txt زدیم ؟یعنی از glob استفاده کنیم و f.write کنیم؟
    سوال ۲: کدوم قسمت از کد به yolo میگه که از فایل لیبل ها استفاده کنه؟چون فقط اونایی که آخرش .jpg بود رو استفاده کردیم انگار
    سوال ۳:میتونیم devset هم اضافه کنیم؟
    سوال ۴: چطوری بفهمیم به بهترین حالت weights رسیدیم یعنی میتونیم نمودار f1score و نمودار هایی دیگه رو رسم کنیم برای weights بدست اومده؟

    • مصطفی آصفی

      سلام و ممنون از لطفتون. خوشحالم که آموزش براتون مفید بوده.
      در مورد سوال اولتون بله مشابه هستن. در مورد سوال ۲ همون تو درس ۱۲ که سوال ۱ هم سوال کردین تو تابع glob میشه پسوند رو به جای jpg مثلا png مشخص کرد.
      سوال سومتون رو خوب متوجه نشدم. لطفا بیشتر توضیح بدین. در مورد سوال ۴ بله مشکلی نداره. رابطه F-Score مبتنی بر دقت یا precision هست و شما می تونید فرمول نویسی کنید و از پکیج هایی مثل متپلات لایب (+) هم برای رسم نمودارهای اختصاصی بهره بگیرید. این مقاله F-Score در یولو (+) رو هم توصیه می کنم مطالعه کنید.

      پی‌نوشت: سوال هاتون نشون میده (شاید هم بنده اشتباه می کنم) که یه مقدار نیازه دوره رو با دقت بیشتری ببینید و پایه برنامه نویسی پایتون شما هم گمانم نیاز به تقویت داره. با پشتکار پیش برید انشالله کامل موضوع براتون روشن میشه.

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

    سلام . وقت بخير.من اومدم يولوتايني نسخه رو براي ماشين و پلاك تعليم دادم.مي خواهم بادوربين رزبري پاي تست كنم ولي كند اجرا مي شود راهكاري نيست سرعت پردازش را بالا برد؟سوال ديگرم از خدمت شما اين است من cuda رو نصب كردم روي سيستم من وگرافيكnvidia دارم ولي cudaبه gpuمن وصل نميشكه موقع اجرا كد خطاي زير را به من مي دهد.
    [ WARN:0] global C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-c2l3r8zm\opencv\modules\dnn\src\dnn.cpp (1451) cv::dnn::dnn4_v20210608::Net::Impl::setUpNet DNN module was not built with CUDA backend; switching to CPU

    • مصطفی آصفی

      سلام وقت شما هم بخیر. سرعت پردازش اگه از GPU استفاده کنید خیلی بهتر میشه. منتها شما بایستی OpenCV رو از اساس برای کار با GPU بیلد کنید. این خودآموز نصب OpenCV روی GPU (+) رو لطفا ببینید توضیح مفصل و خوبی داره. اگه متن خوشتون نمیاد build opencv gpu رو تو یوتیوب جستجو کنید. فیلم‌های متعددی هست که این رو گام به گام توضیح دادن.

  55. محمد

    سلام استاد
    اگه بخوایم همین آموزش شما رو با استفاده از yolo v4 انجام بدیم ، به چه شکل باید عمل کنیم؟

    • مصطفی آصفی

      سلام به شما. در جریان آموزش موقع بررسی مستندات AlexyAB در مورد نحوه تطبیق آموزش برای یولوی ۴ توضیح دادم. لطفا آموزش رو با دقت ببینید.

  56. faeze.m (خریدار محصول)

    سلام، وقت بخیر
    ببخشید امکانش هست لطفا بفرمایید دستور این قسمت گفته شده چطور نوشته میشه؟
    to make the detected bounded boxes more accurate, you can add 3 parameters ignore_thresh = .9 iou_normalizer=0.5 iou_loss=giou to each [yolo] layer and train, it will increase mAP@0.9, but decrease mAP@0.5.
    چطوری باید اینا رو اضافه کنم؟

    • مصطفی آصفی

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

  57. faeze.m (خریدار محصول)

    سلام استاد، وقت بخیر
    ببخشید من ی دیتاستی دارم که ماسک سیاه و سفیدش هست ولی برای یولو میخوام bb براش بکشم، میشه راهنماییم کنید از چه کتابخونه ای استفاده کنم

    • مصطفی آصفی

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

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

    سلام، وقت بخیر، همه چیز آموزش هاتون بی نظیر و فوق العادست!!!!!
    امکانش هست بفرمایید هر ایتریشن حدودا چقد زمان میبره؟

    • مصطفی آصفی

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

  59. مرضیه مختاری (خریدار محصول)

    سلام اقای مهندس اصفی من حقیقتا برای یولو برای پردازش ویدئو استفاده کردم ولی تاسفانه سرعت ویدئو بسار پایین هست از طرفی کودا رو هم نصب کردم و تنظیمات مربوط به دارک نت رو هم روی کودا تنظیم کردم ولی باز هم متاسفانه عمل نمیکنه

    • مصطفی آصفی

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

  60. مرضیه مختاری (خریدار محصول)

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

    • مصطفی آصفی

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

  61. آرش رضایی (خریدار محصول)

    من برای ترین همین تصاویر با گوگل تلاش کردم ولی مدت زمان باقی مانده نوشته شده ۲۲ ساعت با اینکه گوگل ۱۲ ساعت اجازه میده برای یک vm
    چطوری شما ترین کردید؟ حساب پرو داشتید؟

    https://pasteboard.co/K7LfMbYa.png

    • مصطفی آصفی

      سلام به شما. ببینید اون ذخیره وزن ها تو وان درایو برای همین براتون مفیده. شما train کنید و وقتی گوگل نشست رو منقضی کرد مجددا یه پروژه بسازید و اون دفترچه آماده رو اجرا کنید منتها این بار با آخرین وزنی که تعلیم دادین شروع کنید. باز تاکید می کنم آموزش رو با دقت ببینید. به نظرم این نکته ها رو بنده عرض کردم تو آموزش.

  62. آرش رضایی (خریدار محصول)

    سلام ممنون فقط اینکه توی سورس کد ها پوشه cfg و فایل yolov3_training_last.weights نیست
    لطفا قرار بدید چون من نتوسنم ترین کنم با گوگل

    • مصطفی آصفی

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

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

    سلام. استاد ممنون از آموزش های بسیار خوب و عالی تون.من می خوام -map رو هم هنگام آموزش ببینم.اما با خطای زیر مواجه می شم.ممنون میشم اگه راهنمایی بفرمایید.چون می خوام نمودار رو هم آخر سر ببینم.
    Error CUDA-version: 11000 (11020), cuDNN: 7.6.5, CUDNN_HALF=1, GPU count: 1CUDNN_HALF=1OpenCV version: 3.2.0Error: There is no data/test.txt file for mAP calculation!Don’t use -map flag.Or set valid=data/train.txt in your data/obj.data file.

    • مصطفی آصفی

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

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

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

    • مصطفی آصفی

      سلام به شما. از گوگل کردن غافل نشید. این لینک (+) رو برای مثال در مورد خروجی عکس از یولو مطالعه کنید.

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

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

    • مصطفی آصفی

      سلام به شما. سوالتون رو متوجه نشدم لطفا با دقت بیشتری توضیح بدین.

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

    سلام جناب آصفی عزیز
    هنگام اجرای دستور
    !./darknet detector train data/obj.data cfg/yolov3_training.cfg darknet53.conv.74 -dont_show
    پیام خطای زیر صادر میشه:
    CUDA status Error: file: ./src/dark_cuda.c : () : line: 39 : build time: May 28 2021 – 13:57:38

    CUDA Error: no CUDA-capable device is detected
    CUDA Error: no CUDA-capable device is detected: Bad file descriptor
    darknet: ./src/utils.c:331: error: Assertion `0′ failed.

    • مصطفی آصفی

      سلام به شما. ار بخش انتخاب Runtime گزینه Change runtime type رو انتخاب کنید. بعد از Hardware Acceleration نوع GPU رو انتخاب و ذخیره کنید.

  67. علیرضا خداپرسیت شیرازی (خریدار محصول)

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

    • مصطفی آصفی

      سلام به شما. این موضوع به این صورتی که از آقای ردمون مثال می زنیم در عمل با همون چیزی که تو درس 9 آموزش مقدماتی یولو (+) توضیح دادیم درمیاد. اگه شما اون آبجکت مورد نظر رو با عکس های متنوع و خوب تعریف کرده باشید عملا یولو مرزها رو به خوبی تشخیص میده و اگه مبتنی بر GPU باشه خب طبیعتا خیلی سریع تر هم مثل همون فیلم آقای ردمون موقعیت bounding box به روز میشه.

      بحث object tracking که می فرمایید بحث واکاوی حتی در سطح زیر فریمه که مشمول اون فیلم نمیشه اما به هر هر حال روش های ردیابی اشیا (+) امروز به صورت ویژه هم وجود دارن و انشالله در هم رویش هم به اون ها خواهیم پرداخت.

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

    با سلام من از این آموزش برای تشخیص اشخاص و ماشینها استفاده کردم اما در دور آول آموزش یولو مقادیر لاس بالا است 600 عکس دارم که300 تا ماشین و 300 تا فرد هستند و هر کدام لیبل جدا دارند. لطفا بفرمایید مشکل چیست؟ ضمنا در چندین بار اجرای کد فایل train.txt خالی ایجاد میشد و فعلا فقط در یک مورد فایل حاوی آدرس عکسها است
    لطفا راهنمایی

    • مصطفی آصفی

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

  69. احسان

    سلام
    ممنون از آموزش های خوبتون
    من yolo4 را در powershell
    clone می کنم و سپس وارد darknet میشم
    ولی دستور make خطا می دهد اعلام می کنه به عنوان تابع یا چیز دیگه شناسایی نشد
    ممنون

    • مصطفی آصفی

      سلام. ممنونم. برای نصب make در شل ویندوز از chocolatey -که پکیج منیجر ویژه powershell هست- و دستور پایین استفاده کنید:
      choco install make
      این روش ساده و مناسبیه.
      اگر نه باید از این نشانی نصب make فایل ستاپ مناسب رو دریافت و به صورت سیستمی نصب کنید.

  70. مهدی

    در رابطه با موردی که فرمودید من قصد دارم تصاویر رو از روی سیستم به سرور بفرستم و بعد از پردازش، اطلاعات رو در قالب جیسون دریافت کنم
    من با لاراول کار میکنم و اطلاعات عکس رو سمت سرور دریافت میکنم (به صورت binary24 )ولی برای پردازشش مشکل دارم و نمیدونم باید به چه صورت با یولو یک api اماده کنم که خروجی بتونم داشته باشم
    ممنون میشم راهنماییم کنید

  71. m

    سلام وقت بخیر
    به چه صورت میتونم yolo روی سرور اجرا کنم و خروجی پردازش رو در قالب یک json تحویل بگیرم ؟

    • مصطفی آصفی

      سلام دوست عزیز. برای مثال اگه از جنگو و پایتون استفاده کنید باید عکس رو به صورت باینری در view دریافت و بعد از پردازش کلاس مورد نظر رو در خروجی api به صورت جیسون اسال کنید.
      توصیه می کنم این آموزش Django REST رو ببینید. اگه با میاحث وب به طور کلی آشنا نیستید ابتدا این آموزش جنگو رو ببینید و بعد سراغ جنگو رست برید.

  72. Mohammad

    سلام استاد وقتتون بخیر…قبل از هرچیزی بسیار ممنونم از مطالب مفید و کاربردی … سوالی که داشتم این بود که‌ آیا برای تشخیص متن و استخراج متن از عکس میتوان از این روش ها استفاده کرد؟ ( یک سری متن های خاص trained شده)

    • مصطفی آصفی

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

  73. Sahar (خریدار محصول)

    سلام وقتتون بخیر . اول از همه ممنون از آموزش خوب و مفیدتون . من تمام مراحلی که گفتید و انجام دادم اما در مرحله ششم که انجام دادم و کد هارو کامل چک کردم فایل train را باز میکنم متاسفانه خالیه و هیچ اروری به من نمیده میخواستم ببینم مشکل از چی میتونه باشه؟ و در اخر اینکه تا این مرحله انجام نشه به من در مرحله بعدی فایل yolov3_training_last.weight رو نمیده؟

    • مصطفی آصفی

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

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

    سلام وقت بخیر ، open images خارج از دسترس هستش ، عکس های مورد نظرمون جهت آموزش رو از کجا دانلود کنیم ؟

    • مصطفی آصفی

      سلام به شما. اگه لزوما open images رو ناچار هستید استفاده کنید، از VPN بهادار خوب استفاده کنید. اگر نه نمونه کتابخونه های دیگه مثل ImageNet رو بررسی کنید. یا نهایتا باید خودتون نمونه سازی کنید. یه صبح تا ظهر می تونید کلی نمونه از گوگل برای تقریبا هر مورد پیدا کنید. افزونه هایی هم برای دریافت عکس های حجمی در مرورگرها موجود هستند که می تونن بهتون کمک کنن.
      اگر هم نمونه خاصی دارید که عکس عمومی ازش موجود نیست باید خودتون دوربین دست بگیرید.

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

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

    • مصطفی آصفی

      سلام و سپاس از لطف شما.
      در مورد اعداد فارسی، چد راه می تونید استفاده کنید:
      1- چون تعدادشون محدوده میشه یک شبکه عصبی از پایه برای تشخیص نوشت. بعد موقع تشخیص پلاک اعداد تشخیص داده شده و مختصاتشون رو بیرون کشید و به ترتیب مختصات x چید تا ارقام کامل دربیاد.
      2- می تونید از ابزارهای جانبی مثل این لینک استفاده کنید.
      3- می تونید تک تک ارقام رو مثل آبجکت ازشون عکس هایی پیدا کنید و یولو رو برای تشخیص اون ها تعلیم بدین و بعد به روشی که در مورد اول گفتم ارقام رو در محل پلاک پیدا کنید. کمی البته اجراش با پایتون به نظرم از نظر پردازشی سنگین میشه مگر اینکه موقع اجرای عملی هم GPU در کار باشه.

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

    باسلام و خسته نباشید.استادچطور امکان پذیر است در یک ویدیو(یا وب کم)موقع تشخیص شی مورد نظر یک خروجی چاپ کند که در چه زمانی شی را تشخیص داده است؟

    • مصطفی آصفی

      سلام به شما. این رو می تونید با کد پایتون پیاده کنید. این خودآموز dattime در پایتون رو بررسی کنید.

  77. zein tiz (خریدار محصول)

    سلام. ممنونم از پاسخگویی و بیان شیوا مفاهیم سپاسگذاری میکنم. از تدریس زیبا تون خیلی لذت میبریم. اگر فرصت کردید ممنون میشم در مورد کاربرد و تدریس با مثال ، مفاهیم بیشتری از هوش مصنوعی مثل one shot , few shot ، شبکه های gan ,……. هم فیلم بگذارید. من به دنبال طوفان فکری که در اخر فیلم مطرح کردید و فرمودید دنبال در اوردن مسایل جدید باشیم، دنبال کاربرد جدید هستم. میخواستم ببینم مثلا بخواهیم برای تشخیص اشیا خاص که مثلا 10 تا 20 تا30 تا نمونه بیشتر ازش نداریم و دقت بالا ازش میخواهیم در حد تشخیص مثلا فاصله دو تا نقطه کوچک روی پوسته اون شی، چکار باید بکنیم چه جوری باید کار بکنیم؟ اخه با این اوصاف بنظر می رسه یولو فقط برای تشخیص کلیت شی خوبه برای جزییات و این جور مسایل باید دنبال چیز دیگه باشم. ممنون میشم بیشتر راهنمایی بفرمایید

    • مصطفی آصفی

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

  78. zein tiz (خریدار محصول)

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

    • مصطفی آصفی

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

  79. مهدی

    سلام.من یک ساعت train را انجام میدهم،یادگیری چه مدت طول باید طول بکشد تا یادگیری بهتر باشد برای 50نمونه عکس؟من بعد از1ساعت وزن هارا دانلود کردم و به ارور زیر برخورد کردم.میشه بگید مشکل چیه؟ممنون.
    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:214: error: (-212:Parsing error) Failed to parse NetParameter file: cfg/yolov3_training_last.weights in function ‘cv::dnn::dnn4_v20200609::readNetFromDarknet’

    • مصطفی آصفی

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

  80. fatima (خریدار محصول)

    با عرض سلام و وقت بخیر
    من هنگام تست با این خطا مواجه شدم
    line 44
    cv2.putText(img, f'{obj_classes[class_ids[i]].upper()} {int(confidences[i] * 100)}%’,
    IndentationError: unexpected indent
    ممنون میشم راهنمایی بفرمایید

    • مصطفی آصفی

      سلام به شما. خطایی که دریافت می کنید از دندانه گذاری (IndentationError) هست.
      فاصله آغازین اون خط 44 کدتون رو پاک و مجدد ایجاد کنید.
      در پایتون این طور خطا زیاد پیش میاد که ناشی از یک تب یا فاصله اشتباه هست.
      یادتون باشه پایتون تفکیک بلوک های کد رو از روی تعداد تب ها انجام میده.

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

    من چندین بار این آموزش نگاه کردم ، خیلی ازتون یادگرفتم
    ممنونم ازتون

    • مصطفی آصفی

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

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

    درود استاد.ببخشید مجدد مزاحم شدم.روشی که در https://github.com/AlexeyAB/darknet#how-to-train-to-detect-your-custom-objects که در دوره ی آموزشی هم بهش اشاره کردید با https://wiki.loliot.net/docs/lang/python/libraries/yolov4/python-yolov4-about/ که با تنسور فلو 2 هست ،چه فرقی میکنه؟کدومش بهتر و بهینه تر هستش؟ البته برای اشیا اختصاصی (برای مثال تابلو های راهنمایی و رانندگی) .کمی مباحث رو قاطی کردم.ممنون میشم یه توضیحی بدید.

  83. حسین

    با عرض سلام و وقت بخیر. استاد دستور unzip من برای اکسترکت تصاویر به فایل obj ران نمیشه وخطا میده unzip: cannot find or open /mydrive/yolov3/images.zip, /mydrive/yolov3/images.zip.zip or /mydrive/yolov3/images.zip.ZIP. من در محیط ویندوز کار میکنم
    اگه راهنمایی بفرمایین ممنون میشم با تشکر

    • مصطفی آصفی

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

  84. فاطمه نجمی پوران (خریدار محصول)

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

    • مصطفی آصفی

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

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

    درود استاد.وقتتون بخیر.خیلی ممنون از آموزش های بسیار عالی تون.سال نوتون مبارک .راستش من میخوام برای پایان نامه ام از یولو ورژن 4 استفاده کنم.میدونم زحمت هستش.فقط اگه میشه سورس کد تست (آزمایش) پایتونی(مثل ورژن 3 که در آموزش گفتید) برای yolo v 4 رو به ایمیلم بفرستید.یا اگه میشه راهنمایی کنید تا من باید چه کار هایی رو باید انجام بدم تا با v4 هم بتونم همین کار رو انجام بدم.

    • مصطفی آصفی

      سلام و ممنون از لطفتون. سال نو شما هم مبارک باشه. ببینید تو درس 10 توضیح دادم که چطور با همین شیوه ای که تو آموزش هست برای یولوی نسخه 4 هم تغییر تنظیمات رو بررسی کنید.
      توضیحات این لینک رو با توجه به فرآیندی که تو فیلم توضیح دادم لطفا با دقت بخونید.

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

    با عرض سلام و وقت بخیر ممنون از مباحث مفیدتون من تو محیط colab نمیتونم از gpu استفاده کنم با پیغام زیر مواجه میشم ممنون میشم راهنمایی بفرمایید
    You cannot currently connect to a GPU due to usage limits in Colab

    • مصطفی آصفی

      سلام به شما. ممنون از لطف شما.
      ببینید تو درس 6 دقیقه های 13 و 14 توضیح دادم که استفاده رایگان از کولب محدودیت هایی داره. این خطایی که شما دریافت کردید ناشی از همین محدودیت هاست.
      اون توضیحی که دادم و لینکی که دادم رو مطالعه کنید تا بهتر بتونید استفاده خودتون رو مدیریت کنید.

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

    بله دقیقا تعداد دور ها کم بود و من ران 60 متوقف کردم، اگر براتون امکان دارد فایل weight خودتون رو که در گوگل درایو هست لینک رو لطف کنید

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

    سلام وقت بخیر
    تشکر برای آموزش عالیتون
    من کدم رو که اجرا میکنم تصویر تست 1 یا تست 2 پر از باندینگ باکس میشه انگار هزار تا چهره بدون ماسک یا با ماسک در تصویر هست
    فکر میکنم مشکل از فایل weight باشه، امکانش هست آدرسش رو قرار بدید فایل وزن رو دانلود کنم؟
    تشکر

    • مصطفی آصفی

      سلام و ممنون از لطف شما.
      مشکلتون احتمالا به دلیل تعلیم ناکافی (تعداد دور ناکافی) هست.
      نحوه دریافت تنظیمات و وزن ها رو تو درس 10 حدود دقیقه 12 معرفی و لینکش رو هم پیوست کردم.

  89. saeed (خریدار محصول)

    Traceback (most recent call last):
    File “C:\yolo_custom_object_colab-main\yolo_custom.py”, line 16, in
    net = cv2.dnn.readNetFromDarknet(net_config, net_weights)
    cv2.error: OpenCV(4.5.1) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-wvn_it83\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_v20201117::readNetFromDarknet’

    من تمام مراحل رو انجام دادم ولی هنگام اجرا با این خطا روبرو می شوم

    • مصطفی آصفی

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

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

    سلام وقتتون بخیر
    اول از همه تشکر میکنم به خاطر دوره بینظیرتون.
    یه پشنهاد داشتم: یه دوره هم توی زمینه ساخت haar cascade سفارشی رو بسازین.
    سپاس فراوان

  91. علیرضا بهزادی (خریدار محصول)

    سلام
    ممنون از آموزش خوبتون
    من بجای استقاده از yolov3_training.cfg همه کارها رو برای Yolo4 انجام دادم ولی در قسمتی که مقدار batch و subdivision و .. تغییر میدهیم باهمان دستوراتی که فرمودین ولی برای yolo4 متاسفانه مقادیر تغییر نمی کند

    • مصطفی آصفی

      سلام به شما. ببینید تنظیمات نسخه های 3 و 4 مثل شماره خط ها و … تفاوت هایی داره. شما گام ها رو مشابه همون مخزنی که در این دوره برای دریافت دارک نت بهتون معرفی کردم بردارید. اون مخزن اصلا مبنای اصلیش یولوی 4 هست. گام ها رو (که حالا معنی اون ها رو در آموزش بهتر درک کردید) مطابق همون مخزن بردارید.

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

    سلام وقتتون بخیر
    اول از همه تشکر میکنم به خاطر دوره بینظیرتون منتظر دوره های بیشتر شما توی زمینه پردازش تصویر و بینایی ماشین هستیم.
    یه مشکل داشتم وقتی میخوام که به سرور colab وصل بشم میگه نمیتونید به GPU وصل بشید. متن ارور هم اینه:
    Cannot connect to GPU backend
    You cannot currently connect to a GPU due to usage limits in Colab. Learn more
    If you are interested in priority access to GPUs and higher usage limits, you may want to check out Colab Pro.
    میتونید یه راهنمایی بفرمایید؟
    سپاس فراوان

    • مصطفی آصفی

      سلام به شما و ممنون از محبت شما. انشالله که مفید باشه.
      در مورد گوگل کولب دقت کنید که اگرچه استفاده از کولب رایگانه اما خب محدودیت هایی هم داره که در خود آموزش هم عرض کردم.
      از جمله محدودیت‌ها یکی هم اینه که تضمین نیست که همیشه GPU در دسترس باشه. خطایی که فرستادید معمولا به این دلیله. در چنین مواقعی باید کمی بعدتر دوباره اقدام کنید.
      ضمنا محدودیت هایی از نظر زمان استفاده هم دارید. داده های شما 24 ساعت برقرار هستند و به همین دلیل ما تصویرها رو در گوگل درایو گذاشتیم. بعد از گذشت این زمان شما بایستی مجدد یک پروژه بسازید که خب چون ما کدها رو در یک دفترچه ژوپیتر نوشتیم و تصویرها هم در گوگل درایو هستن، عملا خیلی دوباره کاری ندارید. پروژه تازه می سازید و دفترچه ژوپیتر رو فراخوانی و اجرا می کنید.
      وزن های تعلیم یافته هم که در گوگل درایو ذخیره میشن.

      برای آگاهی بیشتر از محدودیت های گوگل کولب به این نشانی مراجعه کنید.

  93. khalil (خریدار محصول)

    سلام. درمرحله بعد از نصب دارکنت و آموزش یولو3 یه اروری میده . couldnt open file. data/train.txt
    علتش چی می تونه باشه. چون من فایل train رو دانلود کردم. داخلش تصاویر و تصاویر لیبل شده بود.

    • مصطفی آصفی

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

  94. khalil (خریدار محصول)

    با سلام آموزش عالی بود. اما یه مشکلی در بخش خارج کردن فایل زیپ داشتم. کد رو دقیق مثل شما نوشتم. ولی ارور میداد. mkdir نمی تونه در این مسیر ایجاد کنه. و دستور ان زیپ نمی توان فایل رو از حالت زیپ خارج کنه

    • مصطفی آصفی

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

  95. امیر

    سلام وقت بخیر
    من با cpp کار میکنم و خب متاسفانه هیچ اموزشی برای yolo در cpp نیست میخواستم بدونم من اگه این دوره رو خریداری بکنم میتونم روی cpp هم پیاده کنم یا یولو فقط برای پایتون منتشر شده؟؟

    • مصطفی آصفی

      سلام به شما. بله این امکان رو دارید. اصولا شما برای تعلیم یولو خیلی وابسته به زبان نیستید. برای آزمایش یولو هست که شما مثلا به محیط OpenCV و کدهای پایتون یا سی پلاس پلاس نیاز دارید.

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

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

      – نکته دوم: این آموزش برای درک یولو یک پیشنیاز داره. اول شما باید این آموزش YOLO با پایتون و OpenCV رو ببینید که یولو رو درک کنید. تابع های OpenCV که در اون آموزش با زبان پایتون صدا زده شدن با همین نام ها از CPP هم قابل صدا کردن هستن. اصولا خوبی OpenCV همینه. اون بسته رو ببینید و گام به گام که من پیش می رم شما مراحل رو برای سی پلاس پلاس پیاده سازی کنید. مثلا من python-opencv رو نصب می کنم شما باید هدر opencv2/opencv.hpp رو به بالای کدتون اضافه کنید. نام تابع ها هم کم و بیش همینه منتها باز شما می تونید نام همون تابع ها رو با پسوند cpp گوگل کنید که از نظر نوشتن اگه کمی تغییر دارن مشکلی پیش نیاد. این دیگه میشه مهارت اپن سی وی شما. اگه بتونید مراحل آموزش رو با سی پلاس پلاس بازنویسی کنید عملا کد استفاده از یولو در OpenCV رو دارید که می تونید از اون برای آزمایش یولویی که تو این «آموزش تشخیص اشیای سفارشی» تعلیم می دید استفاده کنید.

  96. محمد

    سلام استاد خسته نباشید. مکان یابی هم گفتین با فقط تشخیص هستش

    • مصطفی آصفی

      سلام به شما. منظورتون از مکان یابی پیدا کردن محل آبجکت در عکسه؟ اگه این طوره بله به کمک یولو می تونید ولی این مطلب رو نه در این آموزش بلکه در آموزش مقدماتی یولو (+) پیش از این توضیح دادم. همون طور که در اون آموزش گفتم خروجی یولو ، شامل نوع کلاس و همین طور مختصات مرکز و عرض و ارتفاع مستطیل دربردارنده آبجکت (Bounding Box) هست، پس مکان آبجکت مشخصه.

  97. امیر حسین عزیزی

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

    • مصطفی آصفی

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

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

SKU HB-OpenCv-YoloCustom Category Tags , , , ,