إطار عمل Darknet للكشف عن الكائنات وYOLO
شعارات darknet وhank.ai
Darknet هو إطار شبكة عصبية مفتوح المصدر مكتوب بلغات C وC++ وCUDA.
YOLO (أنت تنظر مرة واحدة فقط) هو نظام متطور للكشف عن الكائنات في الوقت الفعلي والذي يعمل ضمن إطار عمل Darknet.
اقرأ كيف تساعد Hank.ai مجتمع Darknet/YOLO
الإعلان عن Darknet V3 "الجاز"
قم بزيارة موقع Darknet/YOLO
يرجى قراءة الأسئلة الشائعة حول Darknet/YOLO
انضم إلى خادم Darknet/YOLO Discord
أوراق
1. ورقة YOLOv7
2. مقياس الورق-YOLOv4
3. ورقة YOLOv4
4. ورقة YOLOv3
معلومات عامة
يعد إطار عمل Darknet/YOLO أسرع وأكثر دقة من أطر العمل الأخرى وإصدارات YOLO.
الإطار مجاني بالكامل ومفتوح المصدر. يمكنك دمج Darknet/YOLO في المشاريع والمنتجات الحالية، بما في ذلك المنتجات التجارية، دون ترخيص أو رسوم.
يمكن لـ Darknet V3 ("Jazz")، الذي تم إصداره في أكتوبر 2024، تشغيل مقاطع فيديو مجموعة بيانات LEGO بدقة تصل إلى 1000 إطارًا في الثانية عند استخدام وحدة معالجة الرسوميات NVIDIA RTX 3090، مما يعني أنه يمكن معالجة كل إطار فيديو في 1 مللي ثانية أو قراءته وتغيير حجمه ومعالجته بواسطة Darknet. /YOLO في وقت أقل.
إذا كنت بحاجة إلى مساعدة أو تريد مناقشة Darknet/YOLO، يرجى الانضمام إلى خادم Darknet/YOLO Discord: 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، هو أول مستودع يحتوي على أمر إصدار. ومن عام 2023 إلى نهاية عام 2024، يعود إلى الإصدار 2.x "OAK".
الهدف هو كسر الوظائف الحالية بأقل قدر ممكن مع التعرف على قاعدة التعليمات البرمجية.
أعد كتابة خطوات الإنشاء حتى يكون لدينا طريقة موحدة للبناء على نظامي التشغيل Windows وLinux باستخدام CMake.
تحويل قاعدة التعليمات البرمجية لاستخدام مترجم C++.
تحسين Chart.png أثناء التدريب.
إصلاحات الأخطاء والتحسينات المتعلقة بالأداء، والتي تتعلق بشكل أساسي بتقليل الوقت اللازم لتدريب الشبكة.
الفرع الأخير من قاعدة التعليمات البرمجية هذه هو الإصدار 2.1 في الفرع v2.
تبدأ المرحلة التالية من التطوير في منتصف عام 2024 وسيتم إصدارها في أكتوبر 2024. يقوم أمر الإصدار الآن بإرجاع 3.x "JAZZ".
تمت إزالة العديد من الأوامر القديمة والتي لم تتم صيانتها.
العديد من تحسينات الأداء، سواء في وقت التدريب أو في وقت الاستدلال.
تم تعديل واجهة برمجة تطبيقات C التقليدية؛ وتتطلب التطبيقات التي تستخدم واجهة برمجة تطبيقات Darknet الأصلية تعديلات طفيفة: https://darknetcv.ai/api/api.html
واجهة برمجة تطبيقات Darknet V3 C وC++ الجديدة: https://darknetcv.ai/api/api.html
تطبيقات جديدة ونموذج التعليمات البرمجية في أمثلة src: https://darknetcv.ai/api/files.html
إذا كنت بحاجة إلى تشغيل أحد هذه الأوامر، فيمكنك دائمًا التحقق من فرع v2 السابق. يرجى إعلامنا حتى نتمكن من التحقيق في إضافة أي أوامر مفقودة.
MSCOCO الأوزان المدربة مسبقا
للراحة، تم تدريب العديد من الإصدارات الشائعة من YOLO مسبقًا على مجموعة بيانات MSCOCO. تحتوي مجموعة البيانات هذه على 80 فئة ويمكن رؤيتها في الملف النصي cfg/coco.names.
هناك العديد من مجموعات البيانات الأبسط والأوزان المدربة مسبقًا المتاحة لاختبار Darknet/YOLO، مثل LEGO Gears وRolodex. لمزيد من المعلومات، راجع الأسئلة الشائعة حول Darknet/YOLO.
يمكن تنزيل أوزان MSCOCO المدربة مسبقًا من عدد من المواقع المختلفة أو من هذا المستودع:
1. YOLOv2، نوفمبر 2016
* YOLOv2-صغيرة
*YOLOv2-كامل
2. YOLOv3، مايو 2018
* YOLOv3-صغيرة
*YOLOv3-كامل
3. YOLOv4، مايو 2020
* YOLOv4-صغيرة
*YOLOv4-كامل
4. 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
darknet02displayannotatedimages coco.names yolov4-tiny.cfg yolov4-tiny.weights image1.jpg
darknet03display_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 أدناه.
طريقة لينكس CMake
البرنامج التعليمي لبناء Darknet لنظام التشغيل Linux
اختياري: إذا كان لديك وحدة معالجة رسومات NVIDIA حديثة، فيمكنك تثبيت CUDA أو CUDA+cuDNN في الوقت الحالي. إذا تم تثبيته، فسوف يستخدم Darknet وحدة معالجة الرسومات (GPU) الخاصة بك لتسريع معالجة الصور (والفيديو).
يجب عليك حذف ملف CMakeCache.txt من دليل إنشاء 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/darknet
مؤتمر نزع السلاح داركنت
بناء مكدير
بناء القرص المضغوط
cmake -DCMAKEBUILDTYPE=إطلاق ..
حزمة make -j4
sudo dpkg -i darknet-VERSION.deb
`
إذا كنت تستخدم إصدارًا أقدم من CMake، فستحتاج إلى ترقية CMake قبل تشغيل أمر cmake أعلاه. يمكن ترقية CMake على Ubuntu باستخدام الأمر التالي:
``باش
sudo apt-get purge cmake
Sudo snap install cmake --classic
`
إذا كنت تستخدم bash كصدفة أوامر، فستحتاج إلى إعادة تشغيل الصدفة الخاصة بك في هذه المرحلة. إذا كنت تستخدم السمكة فيجب أن تلتقط المسار الجديد على الفور.
المستخدمين المتقدمين:
إذا كنت تريد إنشاء ملف تثبيت RPM بدلاً من ملف DEB، فراجع الأسطر ذات الصلة في CM_package.cmake. قبل تشغيل حزمة make -j4، عليك تعديل هذين السطرين:
`كماكي
مجموعة (CPACKGENERATOR "DEB")# مجموعة (CPACKGENERATOR "RPM")
`
بالنسبة للتوزيعات مثل Centos وOpenSUSE، تحتاج إلى تبديل هذين الخطين في CM_package.cmake إلى:
`كماكي
مجموعة (CPACK_GENERATOR "DEB")
مجموعة (CPACK_GENERATOR "RPM")
`
لتثبيت حزمة، استخدم مدير الحزم المعتاد للتوزيع الخاص بك. على سبيل المثال، في نظام يستند إلى دبيان مثل Ubuntu:
``باش
sudo dpkg -i darknet-2.0.1-Linux.deb
`
سيؤدي تثبيت حزمة .deb إلى نسخ الملفات التالية:
/usr/bin/darknet هو برنامج Darknet المعتاد القابل للتنفيذ. قم بتشغيل إصدار darknet من واجهة سطر الأوامر (CLI) للتأكد من تثبيته بشكل صحيح.
/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.
إذا لم يكن لديك /usr/bin/darknet، فأنت لم تقم بتثبيته، بل قمت بإنشائه للتو! الرجاء التأكد من تثبيت ملف .deb أو .rpm كما هو موضح أعلاه.
طرق Windows CMake
تفترض هذه التعليمات تثبيتًا جديدًا لنظام التشغيل 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
انقر فوق "تحرير"
حدد "تطوير سطح المكتب باستخدام C++"
انقر على "تحرير" في الزاوية اليمنى السفلى، ثم انقر على "نعم"
بمجرد تنزيل كل شيء وتثبيته، انقر فوق قائمة ابدأ في Windows مرة أخرى وحدد Developer Command Prompt for Visual Studio 2022. لا تستخدم PowerShell في هذه الخطوات، فسوف تواجه مشاكل!
المستخدمين المتقدمين:
بدلاً من تشغيل موجه أوامر المطور، يمكنك تسجيل الدخول إلى الجهاز باستخدام موجه الأوامر العادي أو ssh وتشغيل "Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat" يدويًا.
بمجرد تشغيل موجه أوامر المطور كما هو مذكور أعلاه (وليس PowerShell!)، قم بتشغيل الأمر التالي لتثبيت Microsoft VCPKG، والذي سيتم استخدامه لإنشاء OpenCV:
``باش
مؤتمر نزع السلاح ج:
mkdir c:srccd c:src
استنساخ بوابة https://github.com/microsoft/vcpkg
cd vcpkg
bootstrap-vcpkg.bat
.vcpkg.exe دمج التثبيت
.vcpkg.exe دمج powershell.vcpkg.exe تثبيت opencv[contrib,dnn,freetype,jpeg,openmp,png,webp,world]:x64-windows
`
يرجى التحلي بالصبر مع هذه الخطوة الأخيرة حيث قد يستغرق تشغيلها وقتًا طويلاً. يتطلب الكثير من التنزيل والبناء.
المستخدمين المتقدمين:
لاحظ أن هناك العديد من الوحدات الاختيارية الأخرى التي قد ترغب في إضافتها عند إنشاء OpenCV. قم بتشغيل .vcpkg.exe للبحث في opencv لرؤية القائمة الكاملة.
اختياري: إذا كان لديك وحدة معالجة رسومات NVIDIA حديثة، فيمكنك تثبيت CUDA أو CUDA+cuDNN في الوقت الحالي. إذا تم تثبيته، فسوف يستخدم Darknet وحدة معالجة الرسومات (GPU) الخاصة بك لتسريع معالجة الصور (والفيديو).
يجب عليك حذف ملف CMakeCache.txt من دليل إنشاء 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، قم بفك ضغط مجلدات bin والتضمين وlib ونسخها إلى C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/[version]/. قد تحتاج إلى الكتابة فوق بعض الملفات.
إذا قمت بتثبيت CUDA أو CUDA+cuDNN في وقت لاحق، أو إذا قمت بالترقية إلى إصدار أحدث من برنامج NVIDIA:
يجب تثبيت CUDA بعد Visual Studio. إذا قمت بترقية Visual Studio، تذكر إعادة تثبيت CUDA.
بمجرد الانتهاء من جميع الخطوات السابقة بنجاح، ستحتاج إلى استنساخ Darknet وإنشائه. في هذه الخطوة نحتاج أيضًا إلى إخبار CMake بمكان وجود vcpkg حتى يتمكن من العثور على OpenCV والتبعيات الأخرى:
``باش
مؤتمر نزع السلاح ج: سرك
استنساخ بوابة https://github.com/hank-ai/darknet.git
مؤتمر نزع السلاح داركنت
بناء مكدير
بناء القرص المضغوط
cmake -DCMAKEBUILDTYPE=Release -DCMAKETOOLCHAINFILE=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 بانتظام بدلاً من msbuild.exe لإنشاء المشاريع، فيمكنك تجاهل سطر الأوامر وتحميل مشروع Darknet في Visual Studio.
يجب أن يكون لديك الآن هذا الملف جاهزًا للتشغيل: C:srcDarknetbuildsrc-cliReleasedarknet.exe. قم بتشغيل الأمر التالي للاختبار: إصدار C:srcDarknetbuildsrc-cliReleasedarknet.exe.
لتثبيت Darknet والمكتبات والملفات وملفات DLL الضرورية بشكل صحيح، قم بتشغيل معالج تثبيت NSIS المضمن في الخطوة الأخيرة. راجع الملف darknet-VERSION.exe في دليل البناء. على سبيل المثال:
``باش
darknet-2.0.31-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.
إذا لم يكن لديك C:/Program Files/darknet/bin/darknet.exe، فأنت لم تقم بتثبيته، بل قمت بإنشائه فقط! يرجى التأكد من إكمال كل لوحة من معالج تثبيت NSIS في الخطوات السابقة.
باستخدام دارك نت
سطر الأوامر
ما يلي ليس قائمة كاملة بجميع الأوامر التي يدعمها Darknet.
بالإضافة إلى واجهة سطر الأوامر الخاصة بـ Darknet، لاحظ أيضًا واجهة سطر الأوامر لمشروع DarkHelp، والتي توفر واجهة سطر الأوامر البديلة لـ Darknet/YOLO. يحتوي DarkHelp CLI أيضًا على العديد من الميزات المتقدمة غير المتوفرة مباشرة في Darknet. يمكنك استخدام Darknet CLI وDarkHelp CLI معًا، فهما لا يستبعد أحدهما الآخر.
بالنسبة لمعظم الأوامر الموضحة أدناه، ستحتاج إلى ملف .weights وملفات .names و.cfg المقابلة له. يمكنك تدريب شبكتك الخاصة (نوصي بشدة!) أو تنزيل الشبكات التي قام الآخرون بتدريبها وإتاحتها للإنترنت مجانًا. تتضمن أمثلة مجموعات بيانات ما قبل التدريب ما يلي:
1. LEGO Gears (البحث عن الأشياء في الصور)
2. Rolodex (ابحث عن النص في الصورة)
3. MSCOCO (معيار اكتشاف الأهداف من فئة 80 فئة)
تتضمن الأوامر القابلة للتشغيل ما يلي:
قم بإدراج بعض الأوامر والخيارات التي يمكن تشغيلها:
``باش
مساعدة على الانترنت المظلم
`
التحقق من الإصدار:
``باش
نسخة دارك نت
`
استخدم التنبؤ بالصورة:
V2: اختبار كاشف الشبكة المظلمة cars.data Cars.cfg Cars_best.weights image1.jpg
V3: darknet02displayannotatedimages Cars.cfg image1.jpg
DarkHelp: DarkHelp Cars.cfg Cars.cfg Cars_best.weights image1.jpg
إحداثيات الإخراج:
V2: اختبار كاشف الشبكة المظلمة Animals.data Animals.cfg Animalbest.weights -extoutput dog.jpg
V3: darknet01inference_images حيوانات dog.jpg
DarkHelp: DarkHelp --json Animals.cfg Animals.names Animal_best.weights dog.jpg
معالجة الفيديو:
V2: العرض التوضيحي لكاشف الشبكة المظلمة للحيوانات.بيانات الحيوانات.cfg Animalbest.weights -extoutput test.mp4
V3: darknet03display_videos Animals.cfg test.mp4
DarkHelp: DarkHelp Animals.cfg Animals.names Animal_best.weights test.mp4
القراءة من كاميرا الويب:
V2: العرض التوضيحي لكاشف الشبكة المظلمة Animals.data Animals.cfg Animal_best.weights -c 0
V3: حيوانات darknet08display_webcam
حفظ النتائج بالفيديو:
V2: العرض التوضيحي لكاشف الشبكة المظلمة للحيوانات.بيانات الحيوانات.cfg Animalbest.weights test.mp4 -outfilename res.avi
V3: darknet05processvideosmultithreaded Animals.cfg للحيوانات.أسماء الحيوانات_أفضل.اختبار الأوزان.mp4
DarkHelp: DarkHelp Animals.cfg Animals.names Animal_best.weights test.mp4
جسون:
V2: العرض التوضيحي لكاشف الشبكة المظلمة للحيوانات.بيانات الحيوانات.cfg Animalbest.weights test50.mp4 -jsonport 8070 -mjpegport 8090 -extoutput
V3: darknet06imagestojson الحيوانات image1.jpg
DarkHelp: DarkHelp --json Animals.names Animals.cfg Animal_best.weights image1.jpg
التشغيل على وحدة معالجة رسومات محددة:
V2: العرض التوضيحي لكاشف الشبكة المظلمة Animals.data Animals.cfg Animal_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 للحيوانات.بيانات الحيوانات.cfg Animalbest.weights -iouthresh 0.75
`
من الأفضل إجراء إعادة حساب نقاط الربط في DarkMark حيث سيتم تشغيلها 100 مرة متتالية واختيار أفضل نقطة ربط من جميع نقاط الربط المحسوبة. ومع ذلك، إذا كنت تريد تشغيل إصدار أقدم في Darknet:
``باش
كاشف الشبكة المظلمة calcanchors Animals.data -عدد_العناقيد 6 -العرض 320 -الارتفاع 256
`
تدريب شبكة جديدة:
``باش
كاشف الشبكة المظلمة -خريطة -dont_show تدريب الحيوانات.بيانات الحيوانات.cfg
`
(انظر أيضًا قسم التدريب أدناه)
يدرب
روابط سريعة للأقسام ذات الصلة في الأسئلة الشائعة حول Darknet/YOLO:
1. كيف يمكنني إعداد الملفات والأدلة الخاصة بي؟
2. ما هو الملف الشخصي الذي يجب أن أستخدمه؟
3. ما هو الأمر الذي يجب أن أستخدمه عند تدريب شبكتي الخاصة؟
يعد استخدام DarkMark لإنشاء جميع ملفات Darknet الضرورية هو أسهل طريقة للتعليق والتدريب. هذه بالتأكيد هي الطريقة الموصى بها لتدريب الشبكات العصبية الجديدة.
إذا كنت ترغب في إعداد الملفات المختلفة يدويًا لتدريب شبكة مخصصة:
1. قم بإنشاء مجلد جديد لتخزين الملفات. في هذا المثال، ستقوم بإنشاء شبكة عصبية تكتشف الحيوانات، لذا قم بإنشاء الدليل التالي: ~/nn/animals/.
2. انسخ أحد ملفات تكوين Darknet التي تريد استخدامها كقالب. على سبيل المثال، راجع cfg/yolov4-tiny.cfg. ضعه في المجلد الذي قمت بإنشائه. في هذا المثال، لدينا الآن ~/nn/animals/animals.cfg.
3. قم بإنشاء ملف نصي Animals.names في نفس المجلد الذي وضعت فيه ملف التكوين. في هذا المثال، لدينا الآن ~/nn/animals/animals.names.
4. استخدم محرر النصوص لتحرير ملف أسماء الحيوانات. قم بإدراج الفئات التي تريد استخدامها. يجب أن يكون لديك إدخال واحد بالضبط في كل سطر، بدون أسطر فارغة، بدون تعليقات. في هذا المثال، سيحتوي ملف .names على 4 أسطر بالضبط:
`
كلب
قطة
طائر
حصان
`
5. قم بإنشاء ملف نصي Animals.data في نفس المجلد. في هذا المثال، سيحتوي ملف .data على:
`
الطبقات = 4
Train=/home/username/nn/animals/animals_train.txt
valid=/home/username/nn/animals/animals_valid.txt
names=/home/username/nn/animals/animals.names
Backup=/home/username/nn/animals
`
6. قم بإنشاء مجلد لتخزين الصور والتعليقات التوضيحية. على سبيل المثال، قد يكون هذا ~/nn/animals/dataset. تتطلب كل صورة ملف .txt مطابق يصف التعليقات التوضيحية لتلك الصورة. تنسيق ملفات التعليق .txt محدد للغاية. لا يمكنك إنشاء هذه الملفات يدويًا لأن كل تعليق توضيحي يجب أن يحتوي على الإحداثيات الدقيقة للتعليق التوضيحي. راجع DarkMark أو أي برنامج آخر مشابه لإضافة تعليقات توضيحية إلى صورك. تم توضيح تنسيق التعليقات التوضيحية YOLO في الأسئلة الشائعة حول Darknet/YOLO.
7. قم بإنشاء ملفات نصية "تدريبية" و"صالحة" مسماة في ملف البيانات. يحتاج هذان الملفان النصيان إلى إدراج جميع الصور التي يجب أن يستخدمها Darknet للتدريب والتحقق من الصحة، على التوالي، للتحقق من الصحة عند حساب نسبة mAP. هناك صورة واحدة بالضبط في كل صف. يمكن أن تكون المسارات وأسماء الملفات نسبية أو مطلقة.
8. استخدم محرر النصوص لتعديل ملف .cfg الخاص بك.
* تأكد من الدفعة = 64.
*الانتباه إلى الأقسام الفرعية. اعتمادًا على حجم الشبكة وحجم الذاكرة المتوفرة على وحدة معالجة الرسومات، قد تحتاج إلى زيادة التقسيمات الفرعية. أفضل قيمة للاستخدام هي 1، لذا ابدأ بذلك. إذا لم تتمكن من استخدام 1، فيرجى الاطلاع على الأسئلة الشائعة حول Darknet/YOLO.
لاحظ أن maxbatches=.... عند البدء، القيمة الأمثل للاستخدام هي عدد الفئات 2000. في هذا المثال لدينا 4 حيوانات، إذن 4 * 2000 = 8000. هذا يعني أننا سنستخدم maxbatches=8000.
* ملاحظة الخطوات=.... يجب ضبط هذا على 80% و90% من الدُفعات القصوى. في هذا المثال، سوف نستخدم الخطوات=6400,7200 لأنه تم ضبط maxbatches على 8000.
* لاحظ أن العرض=... والارتفاع=.... هذه أبعاد الشبكة. تشرح الأسئلة الشائعة لـ Darknet/YOLO كيفية حساب الحجم الأمثل للاستخدام.
* ابحث عن كافة المثيلات التي تحتوي على السطر class=... وقم بتعديلها بعدد الفئات في ملف .names. في هذا المثال سوف نستخدم الفئات = 4.
في القسم [التلافيفي] قبل كل قسم [yolo]، ابحث عن جميع المثيلات التي تحتوي على مرشحات الخط=... . القيمة المراد استخدامها هي (عدد الفئات + 5) 3. وهذا يعني أنه في هذا المثال، (4 + 5) * 3 = 27. ولذلك، سوف نستخدم مرشحات = 27 للصفوف المناسبة.
9. ابدأ التدريب! قم بتشغيل الأمر التالي:
``باش
مؤتمر نزع السلاح ~/ن/الحيوانات/
كاشف الشبكة المظلمة -خريطة -dont_show تدريب الحيوانات.بيانات الحيوانات.cfg
`
انتظر من فضلك. سيتم حفظ أفضل الأوزان باسم Animal_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-10-30
مكتمل
1. استبدل qsort() المستخدم أثناء التدريب بـ std::sort() (لا تزال بعض العناصر الغريبة الأخرى موجودة)
2. تخلص من check_mistakes وgetchar() وsystem()
3. تحويل Darknet لاستخدام مترجم C++ (g++ على Linux، وVisual Studio على Windows)
4. إصلاح بناء Windows
5. إصلاح دعم بايثون
6. بناء مكتبة داركنت
7. إعادة تمكين التصنيفات في التنبؤات (رمز "الأبجدية")
8. أعد تمكين كود CUDA/GPU
9. أعد تمكين CUDNN
10. أعد تمكين نصف CUDNN
11. لا تقم بترميز بنية CUDA
12. معلومات أفضل عن إصدار CUDA
13. أعد تمكين AVX
14. احذف الحل القديم وMakefile
15. اجعل OpenCV غير اختياري
16. قم بإزالة التبعية من مكتبة pthread القديمة
17. حذف STB
18. أعد كتابة CMakeLists.txt لاستخدام أدوات CUDA الجديدة
19. قم بإزالة الكود "الأبجدي" القديم وحذف أكثر من 700 صورة في البيانات/التسميات
20. البناء خارج المصدر
21. الحصول على رقم إصدار أفضل
22. تحسين الأداء المتعلق بالتدريب (المهام المستمرة)
23. تحسين الأداء المتعلق بالاستدلال (المهام المستمرة)
24. استخدم التمرير المرجعي كلما أمكن ذلك
25. تنظيف ملفات hpp
26. إعادة كتابة darknet.h
27. لا تقم بتحويل cv::Mat إلى void*، وبدلاً من ذلك استخدمه ككائن C++ مناسب
28. إصلاح أو الاستفادة من بنيات الصورة الداخلية بشكل متسق
29. إصلاح البنية لأجهزة Jetson المعتمدة على ARM
*من غير المرجح أن يتم إصلاح أجهزة Jetson الأصلية لأنها لم تعد مدعومة من قبل NVIDIA (لا يوجد مترجم C++ 17)
* جهاز جيتسون اورين الجديد شغال
30. إصلاح Python API في الإصدار 3
* هل تحتاج إلى دعم أفضل لـ Python (هل هناك أي مطورين لـ Python يريدون المساعدة في هذا؟)
أهداف قصيرة المدى
1. استبدل printf() بـ std::cout (العمل قيد التقدم)
2. تحقق من دعم كاميرا Zed القديمة
3. تحليل سطر الأوامر أفضل وأكثر اتساقًا (العمل قيد التقدم)
أهداف منتصف المدة
1. قم بإزالة كافة رموز char* واستبدلها بـ std::string
2. لا تخفي التحذيرات وقم بتنظيف تحذيرات المترجم (قيد التقدم)
3. استخدام أفضل لـ cv::Mat بدلاً من هياكل الصور المخصصة في لغة C (العمل قيد التقدم)
4. استبدل وظيفة القائمة القديمة بـ std::vector أو std::list
5. إصلاح دعم الصور ذات التدرج الرمادي ذات القناة الواحدة
6. إضافة دعم لصور قناة N حيث N > 3 (مثل الصور ذات العمق الإضافي أو القنوات الحرارية)
7. التنظيف المستمر للكود (مستمر)
أهداف طويلة المدى
1. إصلاح مشكلات CUDA/CUDNN على جميع وحدات معالجة الرسومات
2. أعد كتابة كود CUDA+cuDNN
3. فكر في إضافة دعم لوحدات معالجة الرسومات غير التابعة لـ NVIDIA
4. مربع محيطي مستدير، أو نوع من دعم "الزاوية".
5. النقاط الرئيسية/الهيكل العظمي
6. الخريطة الحرارية (مستمرة)
7. سبليت