إطار عمل Darknet للكشف عن الكائنات وYOLO
أوراق
معلومات عامة
نسخة دارك نت
أوزان MSCOCO المدربة مسبقًا
مبنى
جوجل كولاب
طريقة لينكس CMake
طريقة ويندوز CMake
باستخدام دارك نت
سطر الأوامر
تمرين
أدوات وروابط أخرى
خريطة الطريق
أهداف قصيرة المدى
أهداف منتصف المدة
أهداف طويلة المدى
Darknet هو إطار شبكة عصبية مفتوح المصدر مكتوب بلغات C وC++ وCUDA.
YOLO (أنت تنظر مرة واحدة فقط) هو نظام متطور للكشف عن الكائنات في الوقت الفعلي، والذي يعمل في إطار عمل Darknet.
اقرأ كيف تساعد Hank.ai مجتمع Darknet/YOLO
الإعلان عن Darknet V3 "الجاز"
راجع موقع الويب Darknet/YOLO
يرجى قراءة الأسئلة الشائعة حول Darknet/YOLO
انضم إلى خادم الفتنة Darknet/YOLO
الورق YOLOv7
مقياس الورق-YOLOv4
الورق YOLOv4
ورقة YOLOv3
لا يزال إطار عمل Darknet/YOLO أسرع وأكثر دقة من أطر العمل والإصدارات الأخرى من YOLO.
هذا الإطار مجاني تمامًا ومفتوح المصدر . يمكنك دمج Darknet/YOLO في المشاريع والمنتجات الحالية - بما في ذلك المشاريع التجارية - دون ترخيص أو دفع رسوم.
يمكن لـ Darknet V3 ("Jazz") الذي تم إصداره في أكتوبر 2024 تشغيل مقاطع فيديو مجموعة بيانات LEGO بدقة تصل إلى 1000 إطارًا في الثانية عند استخدام وحدة معالجة الرسوميات NVIDIA RTX 3090، مما يعني أنه تتم قراءة كل إطار فيديو وتغيير حجمه ومعالجته بواسطة Darknet/YOLO في 1 مللي ثانية أو أقل.
يرجى الانضمام إلى خادم Darknet/YOLO Discord إذا كنت بحاجة إلى مساعدة أو إذا كنت تريد مناقشة Darknet/YOLO: https://discord.gg/zSq8rtW
يمكن تشغيل إصدار وحدة المعالجة المركزية من Darknet/YOLO على أجهزة بسيطة مثل Raspberry Pi والخوادم السحابية وcolab وأجهزة الكمبيوتر المكتبية وأجهزة الكمبيوتر المحمولة وأجهزة التدريب المتطورة. يتطلب إصدار GPU من Darknet/YOLO وحدة معالجة رسومات قادرة على CUDA من NVIDIA.
من المعروف أن Darknet/YOLO يعمل على أنظمة Linux وWindows وMac. انظر تعليمات البناء أدناه.
لم يكن لأداة Darknet الأصلية التي كتبها جوزيف ريدمون في 2013-2017 رقم إصدار. نحن نعتبر هذا الإصدار 0.x.
كما أن نسخة Darknet الشهيرة التالية التي يحتفظ بها Alexey Bochkovskiy بين 2017-2021 لم يكن لها رقم إصدار. نحن نعتبر هذا الإصدار 1.x.
كان مستودع Darknet الذي ترعاه Hank.ai ويديره Stéphane Charette بدءًا من عام 2023 هو الأول الذي يحتوي على أمر version
. من عام 2023 حتى أواخر عام 2024، تم إرجاع الإصدار 2.x "OAK".
كان الهدف هو محاولة كسر أقل قدر ممكن من الوظائف الحالية مع التعرف على قاعدة التعليمات البرمجية.
أعد كتابة خطوات البناء حتى يكون لدينا طريقة واحدة موحدة للبناء باستخدام CMake على كل من نظامي التشغيل Windows وLinux.
تم تحويل قاعدة التعليمات البرمجية لاستخدام برنامج التحويل البرمجي C++.
تحسين Chart.png أثناء التدريب.
إصلاحات الأخطاء والتحسينات المتعلقة بالأداء، والتي تتعلق في الغالب بتقليل الوقت المستغرق لتدريب الشبكة.
الفرع الأخير من قاعدة التعليمات البرمجية هذا هو الإصدار 2.1 في الفرع v2
.
بدأت المرحلة التالية من التطوير في منتصف عام 2024 وتم إصدارها في أكتوبر 2024. يُرجع أمر version
الآن 3.x "JAZZ".
يمكنك دائمًا إجراء فحص لفرع v2
السابق إذا كنت بحاجة إلى تشغيل أحد هذه الأوامر. أخبرنا حتى نتمكن من التحقيق في إضافة أي أوامر مفقودة.
تمت إزالة العديد من الأوامر القديمة والتي لم تتم صيانتها.
العديد من تحسينات الأداء، سواء أثناء التدريب أو أثناء الاستدلال.
تم تعديل واجهة برمجة تطبيقات Legacy C؛ ستحتاج التطبيقات التي تستخدم واجهة برمجة تطبيقات Darknet الأصلية إلى تعديلات طفيفة: https://darknetcv.ai/api/api.html
واجهة برمجة تطبيقات Darknet V3 C وC++ الجديدة: https://darknetcv.ai/api/api.html
تطبيقات جديدة ونموذج التعليمات البرمجية في src-examples
: https://darknetcv.ai/api/files.html
تم تدريب العديد من الإصدارات الشائعة من YOLO مسبقًا لتوفير الراحة على مجموعة بيانات MSCOCO. تحتوي مجموعة البيانات هذه على 80 فئة، والتي يمكن رؤيتها في الملف النصي cfg/coco.names
.
هناك العديد من مجموعات البيانات الأبسط والأوزان المدربة مسبقًا المتاحة لاختبار Darknet/YOLO، مثل LEGO Gears وRolodex. راجع الأسئلة الشائعة حول Darknet/YOLO للحصول على التفاصيل.
يمكن تنزيل أوزان MSCOCO المدربة مسبقًا من عدة مواقع مختلفة، وهي متاحة أيضًا للتنزيل من هذا الريبو:
YOLOv2، نوفمبر 2016
YOLOv2-صغيرة
YOLOv2-كامل
YOLOv3، مايو 2018
YOLOv3-صغيرة
YOLOv3-كامل
YOLOv4، مايو 2020
YOLOv4-صغيرة
YOLOv4-كامل
YOLOv7، أغسطس 2022
YOLOv7-صغيرة
YOLOv7-كامل
يتم توفير أوزان MSCOCO المدربة مسبقًا للأغراض التجريبية فقط. توجد ملفات .cfg
و .names
المقابلة لـ MSCOCO في دليل cfg. أوامر المثال:
wget --no-clobber https://github.com/hank-ai/darknet/releases/download/v2.0/yolov4-tiny.weights darknet_02_display_annotated_images coco.names yolov4-tiny.cfg yolov4-tiny.weights image1.jpg darknet_03_display_videos coco.names yolov4-tiny.cfg yolov4-tiny.weights video1.avi DarkHelp coco.names yolov4-tiny.cfg yolov4-tiny.weights image1.jpg DarkHelp coco.names yolov4-tiny.cfg yolov4-tiny.weights video1.avi
لاحظ أنه من المتوقع من الأشخاص تدريب شبكاتهم الخاصة. يُستخدم MSCOCO عادةً للتأكد من أن كل شيء يعمل بشكل صحيح.
تم دمج طرق البناء المختلفة المتوفرة في الماضي (ما قبل 2023) معًا في حل واحد موحد. يتطلب Darknet الإصدار 17 من لغة C++ أو الإصدار الأحدث، OpenCV، ويستخدم CMake لإنشاء ملفات المشروع الضرورية.
لا تحتاج إلى معرفة لغة C++ لإنشاء أو تثبيت أو تشغيل Darknet/YOLO، بنفس الطريقة التي لا تحتاج فيها إلى أن تكون ميكانيكيًا لقيادة السيارة.
جوجل كولاب
لينكس
ويندوز
احذر إذا كنت تتبع برامج تعليمية قديمة تحتوي على خطوات إنشاء أكثر تعقيدًا، أو تقوم بإنشاء خطوات لا تتطابق مع ما هو موجود في هذا الملف التمهيدي. بدأت خطوات البناء الجديدة كما هو موضح أدناه في أغسطس 2023.
ننصح مطوري البرامج بزيارة https://darknetcv.ai/ للحصول على معلومات حول الأجزاء الداخلية لإطار عمل الكشف عن الكائنات Darknet/YOLO.
تعليمات Google Colab هي نفس تعليمات Linux. تتوفر العديد من دفاتر ملاحظات Jupyter التي توضح كيفية القيام بمهام معينة، مثل تدريب شبكة جديدة.
راجع دفاتر الملاحظات في الدليل الفرعي colab
، و/أو اتبع تعليمات Linux أدناه.
اختياري: إذا كان لديك وحدة معالجة رسومات NVIDIA حديثة، فيمكنك تثبيت إما CUDA أو CUDA+cuDNN في هذه المرحلة. إذا تم تثبيته، فسوف يستخدم Darknet وحدة معالجة الرسومات (GPU) الخاصة بك لتسريع معالجة الصور (والفيديو).
يجب عليك حذف ملف CMakeCache.txt
من دليل build
Darknet الخاص بك لإجبار CMake على إعادة العثور على كافة الملفات الضرورية.
تذكر إعادة بناء Darknet.
يمكن تشغيل Darknet بدونه، ولكن إذا كنت ترغب في تدريب شبكة مخصصة، فيلزم توفر إما CUDA أو CUDA+cuDNN.
تفضل بزيارة https://developer.nvidia.com/cuda-downloads لتنزيل CUDA وتثبيته.
تفضل بزيارة https://developer.nvidia.com/rdp/cudnn-download أو https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#cudnn-package-manager-installation-overview للتنزيل وتثبيت cuDNN.
بمجرد تثبيت CUDA تأكد من أنه يمكنك تشغيل nvcc
و nvidia-smi
. قد تضطر إلى تعديل متغير PATH
الخاص بك.
إذا قمت بتثبيت CUDA أو CUDA+cuDNN في وقت لاحق، أو قمت بالترقية إلى إصدار أحدث من برنامج NVIDIA:
تفترض هذه التعليمات (ولكنها لا تتطلب!) وجود نظام يعمل بنظام التشغيل Ubuntu 22.04. قم بالتكيف حسب الضرورة إذا كنت تستخدم توزيعًا مختلفًا.
sudo apt-get install build-essential git libopencv-dev cmake mkdir ~/srccd ~/src استنساخ بوابة https://github.com/hank-ai/darknetcd darknet بناء mkdir buildcd cmake -DCMAKE_BUILD_TYPE=إطلاق .. حزمة make -j4 sudo dpkg -i darknet-<INSERT-VERSION-YOU-BUILT-HERE>.deb
إذا كنت تستخدم إصدارًا أقدم من CMake ، فستحتاج إلى ترقية CMake قبل أن تتمكن من تشغيل أمر cmake
أعلاه. يمكن ترقية CMake على Ubuntu باستخدام الأوامر التالية:
sudo apt-get purge cmake Sudo snap install cmake --classic
إذا كنت تستخدم bash
كصدفة أوامر، فستحتاج إلى إعادة تشغيل الصدفة الخاصة بك في هذه المرحلة. في حالة استخدام fish
، يجب أن تلتقط المسار الجديد على الفور.
المستخدمين المتقدمين:
إذا كنت تريد إنشاء ملف تثبيت RPM بدلاً من ملف DEB، فراجع الأسطر ذات الصلة في
CM_package.cmake
. قبل تشغيلmake -j4 package
ستحتاج إلى تعديل هذين السطرين:
مجموعة (CPACK_GENERATOR "DEB")# مجموعة (CPACK_GENERATOR "RPM")
بالنسبة للتوزيعات مثل Centos وOpenSUSE، ستحتاج إلى تبديل هذين الخطين في
CM_package.cmake
لتكون:
# مجموعة (CPACK_GENERATOR "DEB") مجموعة (CPACK_GENERATOR "RPM")
لتثبيت حزمة التثبيت بمجرد الانتهاء من بنائها، استخدم مدير الحزم المعتاد للتوزيع الخاص بك. على سبيل المثال، في الأنظمة المستندة إلى Debian مثل Ubuntu:
sudo dpkg -i darknet-2.0.1-Linux.deb
سيؤدي تثبيت حزمة .deb
إلى نسخ الملفات التالية:
/usr/bin/darknet
هو برنامج Darknet المعتاد القابل للتنفيذ. قم بتشغيل darknet version
من واجهة سطر الأوامر للتأكد من تثبيته بشكل صحيح.
/usr/include/darknet.h
هو Darknet API لمطوري C وC++ وPython.
يحتوي /usr/include/darknet_version.h
على معلومات الإصدار للمطورين.
/usr/lib/libdarknet.so
هي المكتبة التي يمكن الارتباط بها لمطوري C وC++ وPython.
/opt/darknet/cfg/...
هو المكان الذي يتم فيه تخزين كافة قوالب .cfg
.
لقد انتهيت الآن! تم إنشاء Darknet وتثبيته في /usr/bin/
. قم بتشغيل هذا للاختبار: darknet version
.
إذا لم يكن لديك
/usr/bin/darknet
فهذا يعني أنك لم تقم بتثبيته، بل قمت بإنشائه فقط! تأكد من تثبيت ملف.deb
أو.rpm
كما هو موضح أعلاه.
تفترض هذه التعليمات تثبيتًا جديدًا لنظام التشغيل Windows 11 22H2.
افتح نافذة موجه أوامر cmd.exe
عادية وقم بتشغيل الأوامر التالية:
Winget تثبيت Git.Git تثبيت Winget Kitware.CMake تثبيت Winget nsis.nsis تثبيت Winget Microsoft.VisualStudio.2022.Community
في هذه المرحلة نحتاج إلى تعديل تثبيت Visual Studio ليشمل دعم تطبيقات C++:
انقر فوق قائمة "ابدأ في Windows" وقم بتشغيل "Visual Studio Installer"
انقر على Modify
حدد Desktop Development With C++
انقر فوق Modify
في الزاوية اليمنى السفلية، ثم انقر فوق Yes
بمجرد تنزيل كل شيء وتثبيته، انقر فوق قائمة "ابدأ في Windows" مرة أخرى وحدد Developer Command Prompt for VS 2022
. لا تستخدم PowerShell في هذه الخطوات، فسوف تواجه مشاكل!
المستخدمين المتقدمين:
بدلاً من تشغيل
Developer Command Prompt
، يمكنك استخدام موجه أوامر عادي أو ssh في الجهاز وتشغيل"Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat"
يدويًا.
يرتكب الكثير من الأشخاص نفس الخطأ ويعتقدون أنه يمكنهم تخطي الخطوة السابقة. من فضلك لا تخطي هذه الخطوة! لا تستخدم موجه الأوامر العادي ولا PowerShell! أعد قراءة الخطوات المذكورة أعلاه لمعرفة نوع النافذة التي يجب أن تستخدمها. في أي وقت تريد فيه استخدام Visual Studio من موجه الأوامر لتجميع تعليمات برمجية C++، يجب عليك استخدام موجه أوامر مطور Visual Studio كما هو موضح أعلاه.
بمجرد تشغيل موجه أوامر المطور كما هو موضح أعلاه، قم بتشغيل الأوامر التالية لتثبيت Microsoft VCPKG، والذي سيتم استخدامه بعد ذلك لإنشاء OpenCV:
cd c:mkdir c:srccd c:src استنساخ بوابة https://github.com/microsoft/vcpkgcd vcpkg bootstrap-vcpkg.bat .vcpkg.exe دمج التثبيت .vcpkg.exe دمج بوويرشيل.vcpkg.exe تثبيت opencv[contrib,dnn,freetype,jpeg,openmp,png,webp,world]:x64-windows
كن صبورًا في هذه الخطوة الأخيرة حيث قد يستغرق تشغيلها وقتًا طويلاً. يحتاج إلى تنزيل وبناء أشياء كثيرة.
المستخدمين المتقدمين:
لاحظ أن هناك العديد من الوحدات الاختيارية الأخرى التي قد ترغب في إضافتها عند إنشاء OpenCV. قم بتشغيل
.vcpkg.exe search opencv
لرؤية القائمة الكاملة.
اختياري: إذا كان لديك وحدة معالجة رسومات NVIDIA حديثة، فيمكنك تثبيت إما CUDA أو CUDA+cuDNN في هذه المرحلة. إذا تم تثبيته، فسوف يستخدم Darknet وحدة معالجة الرسومات (GPU) الخاصة بك لتسريع معالجة الصور (والفيديو).
يجب عليك حذف ملف CMakeCache.txt
من دليل build
Darknet الخاص بك لإجبار CMake على إعادة العثور على كافة الملفات الضرورية.
تذكر إعادة بناء Darknet.
يمكن تشغيل Darknet بدونه، ولكن إذا كنت ترغب في تدريب شبكة مخصصة، فيلزم توفر إما CUDA أو CUDA+cuDNN.
تفضل بزيارة https://developer.nvidia.com/cuda-downloads لتنزيل CUDA وتثبيته.
قم بزيارة https://developer.nvidia.com/rdp/cudnn-download أو https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#download-windows لتنزيل وتثبيت cuDNN.
بمجرد تثبيت CUDA تأكد من أنه يمكنك تشغيل nvcc.exe
و nvidia-smi.exe
. قد تضطر إلى تعديل متغير PATH
الخاص بك.
بمجرد تنزيل cuDNN، قم بفك ضغط دلائل الحاوية والتضمين والليب ونسخها إلى C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/[version]/
. قد تحتاج إلى الكتابة فوق بعض الملفات.
إذا قمت بتثبيت CUDA أو CUDA+cuDNN في وقت لاحق، أو قمت بالترقية إلى إصدار أحدث من برنامج NVIDIA:
يجب تثبيت CUDA بعد Visual Studio. إذا قمت بترقية Visual Studio، تذكر إعادة تثبيت CUDA.
بمجرد الانتهاء من جميع الخطوات السابقة بنجاح، ستحتاج إلى استنساخ Darknet وإنشائه. خلال هذه الخطوة، نحتاج أيضًا إلى إخبار CMake بمكان وجود vcpkg حتى يتمكن من العثور على OpenCV والتبعيات الأخرى:
القرص المضغوط ج:src استنساخ بوابة https://github.com/hank-ai/darknet.gitcd darknetmkdir buildcd بناء cmake -DCMAKE_BUILD_TYPE=الإصدار -DCMAKE_TOOLCHAIN_FILE=C:/src/vcpkg/scripts/buildsystems/vcpkg.cmake .. msbuild.exe /property:Platform=x64;Configuration=Release /target:Build -maxCpuCount -verbosity:normal -detailedSummary darknet.sln msbuild.exe /property:Platform=x64;التكوين=إصدار PACKAGE.vcxproj
إذا حصلت على خطأ بشأن بعض ملفات CUDA أو cuDNN DLL المفقودة مثل cublas64_12.dll
، فقم بنسخ ملفات CUDA .dll
يدويًا إلى نفس دليل الإخراج مثل Darknet.exe
. على سبيل المثال:
انسخ "C:Program FilesNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll" src-cliRelease
(هذا مثال! تحقق للتأكد من الإصدار الذي تقوم بتشغيله، وقم بتشغيل الأمر المناسب لما قمت بتثبيته.)
بمجرد نسخ الملفات، أعد تشغيل الأمر msbuild.exe
الأخير لإنشاء حزمة تثبيت NSIS:
msbuild.exe /property:Platform=x64;التكوين=إصدار PACKAGE.vcxproj
المستخدمين المتقدمين:
لاحظ أن إخراج الأمر
cmake
هو ملف حل Visual Studio عادي،Darknet.sln
. إذا كنت مطور برامج يستخدم واجهة المستخدم الرسومية Visual Studio GUI بانتظام بدلاً منmsbuild.exe
لإنشاء المشاريع، فيمكنك تجاهل سطر الأوامر وتحميل مشروع Darknet في Visual Studio.
يجب أن يكون لديك الآن هذا الملف الذي يمكنك تشغيله: C:srcDarknetbuildsrc-cliReleasedarknet.exe
. قم بتشغيل هذا للاختبار: C:srcDarknetbuildsrc-cliReleasedarknet.exe --version
.
لتثبيت Darknet بشكل صحيح، والمكتبات وملفات التضمين وملفات DLL الضرورية، قم بتشغيل معالج تثبيت NSIS الذي تم إنشاؤه في الخطوة الأخيرة. راجع الملف darknet-<INSERT-VERSION-YOU-BUILT-HERE>-win64.exe
في دليل build
. على سبيل المثال:
darknet-<INSERT-VERSION-YOU-BUILT-HERE>-win64.exe
سيؤدي تثبيت حزمة تثبيت NSIS إلى:
قم بإنشاء دليل يسمى Darknet
، مثل C:Program FilesDarknet
.
قم بتثبيت تطبيق CLI و darknet.exe
ونماذج التطبيقات الأخرى.
قم بتثبيت ملفات .dll
المطلوبة من جهات خارجية، مثل تلك الموجودة في OpenCV.
قم بتثبيت ملفات Darknet .dll
و .lib
و .h
الضرورية لاستخدام darknet.dll
من تطبيق آخر.
قم بتثبيت ملفات القالب .cfg
.
لقد انتهيت الآن! بمجرد انتهاء معالج التثبيت، سيتم تثبيت Darknet في C:Program FilesDarknet
. قم بتشغيل هذا لاختبار: C:Program FilesDarknetbindarknet.exe version
.
إذا لم يكن لديك
C:/Program Files/darknet/bin/darknet.exe
فهذا يعني أنك لم تقم بتثبيته، بل قمت بإنشائه فقط! تأكد من مراجعة كل لوحة من معالج تثبيت NSIS في الخطوة السابقة.
ما يلي ليس القائمة الكاملة لجميع الأوامر التي يدعمها Darknet.
بالإضافة إلى واجهة سطر الأوامر الخاصة بـ Darknet، لاحظ أيضًا واجهة سطر الأوامر لمشروع DarkHelp والتي توفر واجهة سطر أوامر بديلة لـ Darknet/YOLO. يحتوي DarkHelp CLI أيضًا على العديد من الميزات المتقدمة التي لا تتوفر مباشرة في Darknet. يمكنك استخدام كل من Darknet CLI وDarkHelp CLI معًا، فهما لا يستبعد أحدهما الآخر.
بالنسبة لمعظم الأوامر الموضحة أدناه، ستحتاج إلى ملف .weights
مع ملفات .names
و .cfg
المقابلة. يمكنك إما تدريب شبكتك الخاصة (نوصي بشدة!) أو تنزيل شبكة عصبية قام شخص ما بتدريبها بالفعل وإتاحتها مجانًا على الإنترنت. تتضمن أمثلة مجموعات البيانات المدربة مسبقًا ما يلي:
LEGO Gears (العثور على كائنات في صورة ما)
Rolodex (البحث عن نص في صورة)
MSCOCO (الكشف القياسي عن الكائنات من فئة 80)
تتضمن أوامر التشغيل ما يلي:
قم بإدراج بعض الأوامر والخيارات الممكنة للتشغيل:
darknet help
التحقق من الإصدار:
darknet version
التنبؤ باستخدام الصورة:
V2: darknet detector test cars.data cars.cfg cars_best.weights image1.jpg
V3: darknet_02_display_annotated_images cars.cfg image1.jpg
DarkHelp: DarkHelp cars.cfg cars.cfg cars_best.weights image1.jpg
إحداثيات الإخراج:
V2: darknet detector test animals.data animals.cfg animals_best.weights -ext_output dog.jpg
V3: darknet_01_inference_images animals dog.jpg
DarkHelp: DarkHelp --json animals.cfg animals.names animals_best.weights dog.jpg
العمل مع مقاطع الفيديو:
V2: darknet detector demo animals.data animals.cfg animals_best.weights -ext_output test.mp4
V3: darknet_03_display_videos animals.cfg test.mp4
DarkHelp: DarkHelp animals.cfg animals.names animals_best.weights test.mp4
القراءة من كاميرا الويب:
V2: darknet detector demo animals.data animals.cfg animals_best.weights -c 0
V3: darknet_08_display_webcam animals
حفظ النتائج إلى الفيديو:
V2: darknet detector demo animals.data animals.cfg animals_best.weights test.mp4 -out_filename res.avi
V3: darknet_05_process_videos_multithreaded animals.cfg animals.names animals_best.weights test.mp4
DarkHelp: DarkHelp animals.cfg animals.names animals_best.weights test.mp4
جسون:
V2: darknet detector demo animals.data animals.cfg animals_best.weights test50.mp4 -json_port 8070 -mjpeg_port 8090 -ext_output
V3: darknet_06_images_to_json animals image1.jpg
DarkHelp: DarkHelp --json animals.names animals.cfg animals_best.weights image1.jpg
يعمل على GPU محدد:
V2: darknet detector demo animals.data animals.cfg animals_best.weights -i 1 test.mp4
للتحقق من دقة الشبكة العصبية:
خريطة كاشف الشبكة المظلمة القيادة.بيانات القيادة.cfg القيادة_أفضل.أوزان ... اسم المعرف AvgPrecision TP FN FP TN الدقة ErrorRate الدقة استدعاء الخصوصية FalsePosRate -- ---- ------------ ------ ------ ------ ------ -------- --------- --------- ------ ----------- ------------ 0 مركبة 91.2495 32648 3903 5826 65129 0.9095 0.0905 0.8486 0.8932 0.9179 0.0821 1 دراجة نارية 80.4499 2936 513 569 5393 0.8850 0.1150 0.8377 0.8513 0.9046 0.0954 2 دراجة 89.0912 570 124 104 3548 0.9475 0.0525 0.8457 0.8213 0.9715 0.0285 3 أشخاص 76.7937 7072 1727 2574 27523 0.8894 0.1106 0.7332 0.8037 0.9145 0.0855 4 مركبات عديدة 64.3089 1068 509 733 11288 0.9087 0.0913 0.5930 0.6772 0.9390 0.0610 5 الضوء الأخضر 86.8118 1969 239 510 4116 0.8904 0.1096 0.7943 0.8918 0.8898 0.1102 6 الضوء الأصفر 82.0390 126 38 30 1239 0.9525 0.0475 0.8077 0.7683 0.9764 0.0236 7 الضوء الأحمر 94.1033 3449 217 451 4643 0.9237 0.0763 0.8844 0.9408 0.9115 0.0885
للتحقق من الدقة mAP@IoU=75:
darknet detector map animals.data animals.cfg animals_best.weights -iou_thresh 0.75
من الأفضل إجراء إعادة حساب نقاط الارتساء في DarkMark، حيث سيتم تشغيلها 100 مرة متتالية واختيار أفضل نقاط الارتساء من جميع تلك التي تم حسابها. ولكن إذا كنت تريد تشغيل الإصدار القديم في Darknet:
كاشف الشبكة المظلمة calc_anchors Animals.data -عدد_العناقيد 6 -العرض 320 -الارتفاع 256
تدريب شبكة جديدة:
darknet detector -map -dont_show train animals.data animals.cfg
(انظر أيضًا قسم التدريب أدناه)
روابط سريعة للأقسام ذات الصلة من الأسئلة الشائعة حول Darknet/YOLO:
كيف أقوم بإعداد الملفات والأدلة الخاصة بي؟
ما هو ملف التكوين الذي يجب أن أستخدمه؟
ما الأمر الذي يجب أن أستخدمه عند تدريب شبكتي الخاصة؟
إن أبسط طريقة للتعليق والتدريب هي استخدام DarkMark لإنشاء جميع ملفات Darknet الضرورية. هذه بالتأكيد هي الطريقة الموصى بها لتدريب شبكة عصبية جديدة.
إذا كنت تفضل إعداد الملفات المتنوعة يدويًا لتدريب شبكة مخصصة:
قم بإنشاء مجلد جديد حيث سيتم تخزين الملفات. في هذا المثال، سيتم إنشاء شبكة عصبية لاكتشاف الحيوانات، لذلك يتم إنشاء الدليل التالي: ~/nn/animals/
.
انسخ أحد ملفات تكوين Darknet التي ترغب في استخدامها كقالب. على سبيل المثال، راجع cfg/yolov4-tiny.cfg
. ضع هذا في المجلد الذي قمت بإنشائه. في هذا المثال، لدينا الآن ~/nn/animals/animals.cfg
.
قم بإنشاء ملف نصي animals.names
في نفس المجلد الذي وضعت فيه ملف التكوين. في هذا المثال، لدينا الآن ~/nn/animals/animals.names
.
قم بتحرير ملف animals.names
باستخدام محرر النصوص الخاص بك. قم بإدراج الفئات التي تريد استخدامها. يجب أن يكون لديك إدخال واحد بالضبط في كل سطر، بدون أسطر فارغة أو تعليقات. في هذا المثال، سيحتوي ملف .names
على 4 أسطر بالضبط:
كلب قطة طائر حصان
قم بإنشاء ملف نصي animals.data
في نفس المجلد. في هذا المثال، سيحتوي ملف .data
على:
الفصول = 4 القطار = /home/username/nn/animals/animals_train.txt صالح = /home/username/nn/animals/animals_valid.txt الأسماء = /home/username/nn/animals/animals.names النسخ الاحتياطي = /home/username/nn/animals
قم بإنشاء مجلد حيث يمكنك تخزين الصور والتعليقات التوضيحية. على سبيل المثال، يمكن أن يكون ~/nn/animals/dataset
. ستحتاج كل صورة إلى ملف .txt
متطابق يصف التعليقات التوضيحية لتلك الصورة. تنسيق ملفات التعليقات التوضيحية .txt
محدد للغاية. لا يمكنك إنشاء هذه الملفات يدويًا نظرًا لأن كل تعليق توضيحي يجب أن يحتوي على الإحداثيات الدقيقة للتعليق التوضيحي. راجع DarkMark أو أي برنامج آخر مشابه لإضافة تعليقات توضيحية إلى صورك. تم توضيح تنسيق التعليقات التوضيحية YOLO في الأسئلة الشائعة حول Darknet/YOLO.
قم بإنشاء الملفات النصية "القطار" و"الصالحة" المذكورة في ملف .data
. يحتاج هذان الملفان النصيان إلى إدراج كل الصور بشكل فردي والتي يجب أن يستخدمها Darknet للتدريب والتحقق من الصحة عند حساب نسبة mAP%. صورة واحدة بالضبط في كل سطر. قد يكون المسار وأسماء الملفات نسبية أو مطلقة.
قم بتعديل ملف .cfg
الخاص بك باستخدام محرر النصوص.
تأكد من أن batch=64
.
لاحظ التقسيمات الفرعية. اعتمادًا على أبعاد الشبكة وحجم الذاكرة المتوفرة على وحدة معالجة الرسومات الخاصة بك، قد تحتاج إلى زيادة التقسيمات الفرعية. أفضل قيمة للاستخدام هي 1
لذا ابدأ بذلك. راجع الأسئلة الشائعة حول Darknet/YOLO إذا لم يناسبك 1
.
لاحظ max_batches=...
. القيمة الجيدة التي يجب استخدامها عند البدء هي 2000 × عدد الفئات. في هذا المثال، لدينا 4 حيوانات، لذا 4 * 2000 = 8000. وهذا يعني أننا سنستخدم max_batches=8000
.
ملاحظة steps=...
. يجب ضبط هذا على 80% و 90% من max_batches
. في هذا المثال، سنستخدم steps=6400,7200
حيث تم ضبط max_batches
على 8000.
لاحظ width=...
height=...
. هذه هي أبعاد الشبكة. تشرح الأسئلة الشائعة لـ Darknet/YOLO كيفية حساب الحجم الأفضل للاستخدام.
ابحث عن كافة مثيلات السطر classes=...
وقم بتعديله بعدد الفئات في ملف .names
الخاص بك. في هذا المثال، سنستخدم classes=4
.
ابحث عن كافة مثيلات filters=...
في القسم [convolutional]
قبل كل قسم [yolo]
. القيمة المطلوب استخدامها هي (number_of_classes + 5) * 3. وهذا يعني في هذا المثال، (4 + 5) * 3 = 27. لذلك سنستخدم filters=27
على الأسطر المناسبة.
ابدأ التدريب! قم بتشغيل الأوامر التالية:
مؤتمر نزع السلاح ~/ن/الحيوانات/ كاشف الشبكة المظلمة -خريطة -dont_show تدريب الحيوانات.بيانات الحيوانات.cfg
كن صبوراً. سيتم حفظ أفضل الأوزان باسم animals_best.weights
. ويمكن ملاحظة تقدم التدريب من خلال عرض ملف chart.png
. راجع الأسئلة الشائعة حول Darknet/YOLO للحصول على معلمات إضافية قد ترغب في استخدامها عند تدريب شبكة جديدة.
إذا كنت تريد رؤية المزيد من التفاصيل أثناء التدريب، أضف المعلمة --verbose
. على سبيل المثال:
كاشف الشبكة المظلمة -خريطة -dont_show --قطار مطول للحيوانات.بيانات الحيوانات.cfg
لإدارة مشاريع Darknet/YOLO الخاصة بك، وإضافة تعليقات توضيحية إلى الصور، والتحقق من التعليقات التوضيحية، وإنشاء الملفات الضرورية للتدريب مع Darknet، راجع DarkMark.
للحصول على واجهة سطر أوامر (CLI) بديلة قوية لـ Darknet، أو لاستخدام تجانب الصور، أو لتتبع الكائنات في مقاطع الفيديو الخاصة بك، أو للحصول على واجهة برمجة تطبيقات C++ قوية يمكن استخدامها بسهولة في التطبيقات التجارية، راجع DarkHelp.
تعرف على ما إذا كانت الأسئلة الشائعة حول Darknet/YOLO يمكنها المساعدة في الإجابة على أسئلتك.
شاهد العديد من مقاطع الفيديو التعليمية والأمثلة على قناة Stéphane على YouTube
إذا كان لديك سؤال دعم أو تريد الدردشة مع مستخدمي Darknet/YOLO الآخرين، انضم إلى خادم Darknet/YOLO discord.
آخر تحديث 2024-11-02:
قم بتبديل qsort() لـ std::sort() حيث يتم استخدامها أثناء التدريب (تظل بعض العناصر الغامضة الأخرى)
تخلص من check_mistakes و getchar() و system()
تحويل Darknet لاستخدام مترجم C++ (g++ على Linux، VisualStudio على Windows)
إصلاح بناء ويندوز
إصلاح دعم بايثون
بناء مكتبة داركنت
إعادة تمكين التصنيفات على التنبؤات (رمز "الأبجدية")
أعد تمكين رمز CUDA/GPU
أعد تمكين CUDNN
إعادة تمكين نصف CUDNN
لا تقم بترميز بنية CUDA
معلومات إصدار CUDA أفضل
إعادة تمكين AVX
إزالة الحلول القديمة وMakefile
جعل OpenCV غير اختياري
إزالة التبعية على مكتبة pthread القديمة
إزالة STB
أعد كتابة CMakeLists.txt لاستخدام اكتشاف CUDA الجديد
قم بإزالة الكود "الأبجدي" القديم، واحذف أكثر من 700 صورة في البيانات/التسميات
بناء خارج المصدر
الحصول على إخراج رقم الإصدار أفضل
تحسينات الأداء المتعلقة بالتدريب (مهمة مستمرة)
تحسينات الأداء المتعلقة بالاستدلال (مهمة مستمرة)
المرور حسب المرجع حيثما أمكن ذلك
تنظيف ملفات hpp
إعادة كتابة darknet.h
لا تقم بإلقاء cv::Mat
إلى void*
ولكن استخدمه ككائن C++ مناسب
أصلح أو كن متسقًا في كيفية استخدام بنية image
الداخلية
إصلاح البنية لأجهزة Jetson المستندة إلى ARM
أجهزة Jetson الأصلية (من غير المحتمل إصلاحها نظرًا لأنها لم تعد مدعومة بواسطة NVIDIA ولا تحتوي على مترجم C++ 17)
أجهزة Jetson Orin الجديدة تعمل
إصلاح Python API في V3
هناك حاجة إلى دعم أفضل لـ Python (هل يرغب أي من مطوري Python في المساعدة في هذا؟)
مبادلة printf() لـ std::cout (قيد التقدم)
انظر إلى دعم كاميرا Zed القديمة
تحليل سطر الأوامر أفضل وأكثر اتساقًا (قيد التقدم)
قم بإزالة كافة رموز char*
واستبدلها بـ std::string
لا تخفي التحذيرات وتنظف تحذيرات المترجم (قيد التقدم)
استخدام أفضل لـ cv::Mat
بدلاً من بنية image
المخصصة في C (قيد التقدم)
استبدل وظيفة list
القديمة بـ std::vector
أو std::list
إصلاح الدعم للصور ذات التدرج الرمادي ذات القناة الواحدة
إضافة دعم لصور قناة N حيث N > 3 (على سبيل المثال، الصور ذات العمق الإضافي أو القناة الحرارية)
تنظيف الكود المستمر (قيد التقدم)
إصلاح مشكلات CUDA/CUDNN مع جميع وحدات معالجة الرسومات
أعد كتابة كود CUDA + cuDNN
النظر في إضافة دعم لوحدات معالجة الرسومات غير التابعة لـ NVIDIA
الصناديق المحيطة المدورة، أو نوع من دعم "الزاوية".
النقاط الرئيسية / الهياكل العظمية
خرائط الحرارة (قيد التنفيذ)
التجزئة