Darknet Object Detection Framework وYOLO
شعارات darknet وhank.ai
Darknet هو إطار عمل للشبكة العصبية مفتوح المصدر مكتوب بشكل أساسي بلغة C و CUDA.
YOLO (أنت تنظر مرة واحدة فقط) هو نظام للكشف عن الأشياء في الوقت الفعلي ويعمل ضمن إطار عمل Darknet.
اقرأ كيف تساعد Hank.ai مجتمع Darknet/YOLO
الإعلان عن Darknet V3 "الجاز"
راجع موقع الويب Darknet/YOLO
يرجى قراءة الأسئلة الشائعة حول Darknet/YOLO
انضم إلى خادم الفتنة Darknet/YOLO
أوراق
1. ورقة YOLOv7
2. مقياس الورق-YOLOv4
3. ورقة YOLOv4
4. ورقة YOLOv3
معلومات عامة
لا يزال إطار عمل Darknet/YOLO أسرع وأكثر دقة من أطر العمل والإصدارات الأخرى من YOLO.
هذا الإطار مجاني بالكامل ومفتوح المصدر. يمكنك دمج Darknet/YOLO في المشاريع والمنتجات الحالية، بما في ذلك المشاريع التجارية، دون ترخيص أو دفع.
يمكن لـ Darknet V3 ("Jazz")، الذي تم إصداره في أكتوبر 2024، معالجة مقاطع فيديو مجموعة بيانات LEGO بدقة تصل إلى 1000 إطارًا في الثانية عند استخدام وحدة معالجة الرسومات NVIDIA RTX 3090. وهذا يعني أنه تتم قراءة كل إطار فيديو وتغيير حجمه ومعالجته بواسطة Darknet/YOLO في 1 مللي ثانية أو أقل.
انضم إلى خادم 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".
كان الهدف هو محاولة كسر أقل قدر ممكن من الوظائف الحالية مع التعرف على قاعدة التعليمات البرمجية.
تتضمن التغييرات الرئيسية في Darknet 2.x ما يلي:
أعد كتابة خطوات الإنشاء للبنية الموحدة المستندة إلى CMake على نظامي التشغيل Windows وLinux.
تم تحويل قاعدة التعليمات البرمجية لاستخدام برنامج التحويل البرمجي C++.
تم تحسين تصور Chart.png أثناء التدريب.
إصلاحات الأخطاء وتحسينات الأداء، والتي تركز بشكل أساسي على تقليل وقت التدريب.
الفرع الأخير من قاعدة التعليمات البرمجية هذه هو الإصدار 2.1 في الفرع v2.
بدأت المرحلة التالية من التطوير في منتصف عام 2024 وتم إصدارها في أكتوبر 2024. يُرجع أمر الإصدار الآن 3.x "JAZZ".
يمكنك دائمًا إجراء فحص لفرع v2 السابق إذا كنت بحاجة إلى تشغيل أحد هذه الأوامر. أخبرنا إذا واجهت أي أوامر مفقودة.
تتضمن التغييرات الرئيسية في Darknet 3.x ما يلي:
إزالة العديد من الأوامر القديمة والتي لم يتم الحفاظ عليها.
تحسينات كبيرة في الأداء لكل من التدريب والاستدلال.
تعديل واجهة برمجة تطبيقات 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
أوزان MSCOCO المدربة مسبقًا
تم تدريب العديد من الإصدارات الشائعة من 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
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
1. قم بتثبيت الحزم الضرورية:
``باش
sudo apt-get install build-essential git libopencv-dev cmake
`
2. استنساخ مستودع Darknet:
``باش
مكدير ~/src
مؤتمر نزع السلاح ~/src
استنساخ بوابة https://github.com/hank-ai/darknet
مؤتمر نزع السلاح داركنت
`
3. قم بإنشاء دليل بناء وتشغيل CMake:
``باش
بناء مكدير
بناء القرص المضغوط
cmake -DCMAKEBUILDTYPE=إطلاق ..
`
4. بناء الشبكة المظلمة:
``باش
جعل -j4
`
5. اختياري: تثبيت CUDA أو CUDA+cuDNN
إذا كان لديك وحدة معالجة رسومات NVIDIA حديثة، فيمكنك تثبيت إما CUDA أو CUDA+cuDNN. سيسمح هذا لـ Darknet باستخدام وحدة معالجة الرسومات الخاصة بك لمعالجة الصور والفيديو بشكل أسرع.
- قم بتنزيل وتثبيت CUDA من https://developer.nvidia.com/cuda-downloads.
- قم بتنزيل وتثبيت cuDNN من https://developer.nvidia.com/rdp/cudnn-download أو https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#cudnn-package-manager- نظرة عامة على التثبيت.
هام: إذا قمت بتثبيت CUDA أو CUDA+cuDNN بعد إنشاء Darknet، فيجب عليك حذف ملف CMakeCache.txt في دليل البناء الخاص بك وإعادة تشغيل cmake للتأكد من أن CMake يمكنه العثور على الملفات الضرورية.
ملاحظة: يمكن تشغيل Darknet بدون CUDA، ولكن إذا كنت تريد تدريب شبكة مخصصة، فيلزم توفر إما CUDA أو CUDA+cuDNN.
6. حزمة وتثبيت Darknet:
``باش
اصنع الحزمة
sudo dpkg -i darknet-VERSION.deb
`
هام: إذا كنت تستخدم إصدارًا أقدم من CMake، فقد تحتاج إلى ترقيته قبل تشغيل الأمر cmake. قم بترقية CMake على Ubuntu باستخدام:
``باش
sudo apt-get purge cmake
Sudo snap install cmake --classic
`
المستخدمين المتقدمين:
- إذا كنت تريد إنشاء ملف تثبيت RPM بدلاً من ملف DEB، فقم بتحرير السطرين التاليين في CM_package.cmake قبل تشغيل make package:
`كماكي
# مجموعة (CPACK_GENERATOR "DEB")
مجموعة (CPACK_GENERATOR "RPM")
`
- لتثبيت حزمة التثبيت بمجرد الانتهاء من بنائها، استخدم مدير الحزم الخاص بالتوزيع. على سبيل المثال، في الأنظمة المستندة إلى Debian مثل Ubuntu:
``باش
sudo dpkg -i darknet-2.0.1-Linux.deb
`
- سيؤدي تثبيت الحزمة .deb إلى نسخ الملفات التالية:
- /usr/bin/darknet: برنامج Darknet القابل للتنفيذ.
- /usr/include/darknet.h: واجهة برمجة تطبيقات Darknet لمطوري C وC++ وPython.
- /usr/include/darknet_version.h: يحتوي على معلومات الإصدار للمطورين.
- /usr/lib/libdarknet.so: المكتبة التي سيتم الارتباط بها لمطوري C وC++ وPython.
- /opt/darknet/cfg/...: موقع جميع قوالب .cfg.
- لقد انتهيت الآن! تم إنشاء Darknet وتثبيته في /usr/bin/. قم بتشغيل إصدار darknet من واجهة سطر الأوامر (CLI) لتأكيد التثبيت.
طريقة ويندوز CMake
تفترض هذه التعليمات تثبيتًا جديدًا لنظام التشغيل Windows 11 22H2.
1. قم بتثبيت البرامج المطلوبة:
`بوويرشيل
Winget تثبيت Git.Git
تثبيت Winget Kitware.CMake
تثبيت Winget nsis.nsis
تثبيت Winget Microsoft.VisualStudio.2022.Community
`
2. تعديل تثبيت Visual Studio:
- افتح قائمة "ابدأ في Windows" وقم بتشغيل "Visual Studio Installer".
- انقر على "تعديل".
- اختر "تطوير سطح المكتب باستخدام C++".
- انقر على "تعديل" في الزاوية اليمنى السفلية ثم "نعم".
3. تثبيت مايكروسوفت VCPKG:
- افتح قائمة "ابدأ في Windows" وحدد "موجه أوامر المطور لـ VS 2022". لا تستخدم PowerShell لهذه الخطوات.
- المستخدمون المتقدمون: بدلاً من تشغيل موجه أوامر المطور، يمكنك استخدام موجه أوامر عادي أو ssh في الجهاز وتشغيل Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat يدويًا.
- قم بتشغيل الأوامر التالية:
`بوويرشيل
القرص ج:
مكدير ج:src
القرص المضغوط ج:src
استنساخ بوابة https://github.com/microsoft/vcpkg
cd vcpkg
bootstrap-vcpkg.bat
.vcpkg.exe دمج التثبيت
.vcpkg.exe يدمج بوويرشيل
.vcpkg.exe تثبيت opencv[contrib,dnn,freetype,jpeg,openmp,png,webp,world]:x64-windows
`
- كن صبورًا خلال هذه الخطوة الأخيرة حيث قد يستغرق تشغيلها وقتًا طويلاً. يحتاج إلى تنزيل وبناء أشياء كثيرة.
- المستخدمون المتقدمون: لاحظ أن هناك العديد من الوحدات الاختيارية الأخرى التي قد ترغب في إضافتها عند إنشاء OpenCV. قم بتشغيل .vcpkg.exe للبحث في opencv لرؤية القائمة الكاملة.
4. اختياري: قم بتثبيت CUDA أو CUDA+cuDNN
إذا كان لديك وحدة معالجة رسومات NVIDIA حديثة، فيمكنك تثبيت إما CUDA أو CUDA+cuDNN. سيسمح هذا لـ Darknet باستخدام وحدة معالجة الرسومات الخاصة بك لمعالجة الصور والفيديو بشكل أسرع.
- قم بتنزيل وتثبيت CUDA من https://developer.nvidia.com/cuda-downloads.
- قم بتنزيل وتثبيت cuDNN من https://developer.nvidia.com/rdp/cudnn-download أو https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#download-windows.
هام: إذا قمت بتثبيت CUDA أو CUDA+cuDNN بعد إنشاء Darknet، فيجب عليك حذف ملف CMakeCache.txt في دليل البناء الخاص بك وإعادة تشغيل cmake للتأكد من أن CMake يمكنه العثور على الملفات الضرورية.
ملاحظة: يمكن تشغيل Darknet بدون CUDA، ولكن إذا كنت تريد تدريب شبكة مخصصة، فيلزم توفر إما CUDA أو CUDA+cuDNN.
5. استنساخ Darknet وإنشائه:
`بوويرشيل
القرص المضغوط ج:src
استنساخ بوابة 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: يجب تثبيت CUDA بعد Visual Studio. إذا قمت بترقية Visual Studio، تذكر إعادة تثبيت CUDA.
- ملفات DLL المفقودة: إذا واجهت أخطاء حول فقدان ملفات CUDA أو cuDNN DLLs (على سبيل المثال، cublas64_12.dll)، فانسخ ملفات CUDA .dll يدويًا إلى نفس دليل الإخراج مثل darknet.exe. على سبيل المثال:
`بوويرشيل
انسخ "C:Program FilesNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll" src-cliRelease
`
(هذا مثال؛ تحقق من إصدار CUDA الذي تقوم بتشغيله واضبط المسار وفقًا لذلك.)
- أعد تشغيل msbuild.exe: بعد نسخ ملفات .dll، أعد تشغيل الأمر 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.
6. تثبيت داركنت:
- قم بتشغيل معالج تثبيت 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.
باستخدام دارك نت
سطر الأوامر
ما يلي ليس قائمة كاملة بجميع الأوامر التي يدعمها Darknet.
بالإضافة إلى واجهة سطر الأوامر الخاصة بـ Darknet، فكر أيضًا في واجهة سطر الأوامر لمشروع DarkHelp، والتي تقدم واجهة سطر أوامر بديلة لـ Darknet/YOLO مع ميزات متقدمة غير متوفرة مباشرة في Darknet. يمكنك استخدام كل من Darknet CLI وDarkHelp CLI معًا.
بالنسبة لمعظم الأوامر أدناه، ستحتاج إلى ملف .weights بالإضافة إلى ملفات .names و.cfg المقابلة. يمكنك إما تدريب شبكتك الخاصة (موصى به بشدة!) أو تنزيل شبكة مدربة مسبقًا من الإنترنت. تتضمن أمثلة مجموعات البيانات المدربة مسبقًا ما يلي:
LEGO Gears (للعثور على الأشياء في الصورة)
Rolodex (للبحث عن نص في صورة)
MSCOCO (الكشف القياسي عن الكائنات من فئة 80)
أوامر التشغيل:
احصل على المساعدة:
``باش
مساعدة على الانترنت المظلم
`
التحقق من الإصدار:
``باش
نسخة دارك نت
`
التنبؤ باستخدام الصورة:
الإصدار 2:
``باش
اختبار كاشف الانترنت المظلم Cars.data Cars.cfg Cars_best.weights image1.jpg
`
الإصدار 3:
``باش
darknet02displayannotatedimages cars.cfg image1.jpg
`
مساعدة داكنة:
``باش
DarkHelp Cars.cfg Cars.cfg Cars_best.weights image1.jpg
`
إحداثيات الإخراج:
الإصدار 2:
``باش
اختبار كاشف الشبكة المظلمة للحيوانات. بيانات Animals.cfg Animalbest.weights -extoutput dog.jpg
`
الإصدار 3:
``باش
darknet01inference_images حيوانات dog.jpg
`
مساعدة داكنة:
``باش
DarkHelp --json Animals.cfg Animals.names Animal_best.weights dog.jpg
`
العمل مع مقاطع الفيديو:
الإصدار 2:
``باش
عرض توضيحي لكاشف الشبكة المظلمة للحيوانات.بيانات الحيوانات.cfg Animalbest.weights -extoutput test.mp4
`
الإصدار 3:
``باش
darknet03display_videos Animals.cfg test.mp4
`
مساعدة داكنة:
``باش
DarkHelp Animals.cfg Animals.names Animals_best.weights test.mp4
`
القراءة من كاميرا الويب:
الإصدار 2:
``باش
عرض تجريبي لكاشف الشبكة المظلمة Animals.data Animals.cfg Animal_best.weights -c 0
`
الإصدار 3:
``باش
حيوانات darknet08display_webcam
`
حفظ النتائج إلى الفيديو:
الإصدار 2:
``باش
عرض تجريبي للكشف عن darknet للحيوانات.بيانات الحيوانات.cfg Animalbest.weights test.mp4 -outfilename res.avi
`
الإصدار 3:
``باش
darknet05processvideosحيوانات متعددة الخيوط.cfg حيوانات.أسماء الحيوانات_أفضل.اختبار الأوزان.mp4
`
مساعدة داكنة:
``باش
DarkHelp Animals.cfg Animals.names Animals_best.weights test.mp4
`
إخراج جسون:
الإصدار 2:
``باش
عرض توضيحي لكاشف الشبكة المظلمة للحيوانات.بيانات الحيوانات.cfg Animalbest.weights test50.mp4 -jsonport 8070 -mjpegport 8090 -extoutput
`
الإصدار 3:
``باش
darknet06imagestojson الحيوانات image1.jpg
`
مساعدة داكنة:
``باش
DarkHelp --json Animals.names Animals.cfg Animal_best.weights image1.jpg
`
يعمل على GPU محدد:
الإصدار 2:
``باش
عرض تجريبي لكاشف الشبكة المظلمة Animals.data Animals.cfg Animal_best.weights -i 1 test.mp4
`
التحقق من دقة الشبكة العصبية:
``باش
خريطة كاشف الانترنت المظلم القيادة.بيانات القيادة.cfg القيادة_أفضل.الأوزان ...
`
مثال الإخراج:
`
اسم المعرف AvgPrecision TP FN FP TN الدقة معدل الخطأ الدقة استدعاء الخصوصية 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.11 50 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.593 0 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:
``باش
خريطة كاشف الشبكة المظلمة للحيوانات.بيانات الحيوانات.cfg Animalbest.weights -iouthresh 0.75
`
إعادة حساب المراسي:
من الأفضل إعادة حساب نقاط الارتساء في DarkMark، حيث يتم تشغيله 100 مرة متتالية ويختار أفضل نقاط الارتساء. ومع ذلك، إذا كنت تريد استخدام الإصدار الأقدم في Darknet:
``باش
كاشف الشبكة المظلمة calcanchors Animals.data -عدد_العناقيد 6 -العرض 320 -الارتفاع 256
`
تدريب شبكة جديدة:
``باش
كاشف الشبكة المظلمة -خريطة -dont_show تدريب الحيوانات.بيانات الحيوانات.cfg
`
(انظر أيضًا قسم التدريب أدناه)
تمرين
روابط سريعة للأقسام ذات الصلة من الأسئلة الشائعة حول Darknet/YOLO:
كيف أقوم بإعداد الملفات والأدلة الخاصة بي؟
ما هو ملف التكوين الذي يجب أن أستخدمه؟
ما الأمر الذي يجب أن أستخدمه عند تدريب شبكتي الخاصة؟
إن أبسط طريقة للتعليق والتدريب هي باستخدام DarkMark، الذي يقوم بإنشاء جميع ملفات Darknet الضرورية. هذه هي الطريقة الموصى بها لتدريب شبكة عصبية جديدة.
إذا كنت تفضل إعداد الملفات المختلفة يدويًا لتدريب شبكة مخصصة:
1. قم بإنشاء مجلد جديد:
- اختر مجلدًا لتخزين ملفاتك. في هذا المثال، سنقوم بإنشاء شبكة عصبية لاكتشاف الحيوانات، وبالتالي سيكون الدليل ~/nn/animals/.
2. انسخ ملف تكوين Darknet:
- انسخ ملف تكوين Darknet كقالب. على سبيل المثال، استخدم cfg/yolov4-tiny.cfg. ضع هذا في المجلد الذي قمت بإنشائه. الآن، يجب أن يكون لديك ~/nn/animals/animals.cfg.
3. قم بإنشاء ملف نصي Animals.names:
- قم بإنشاء ملف نصي Animals.names في نفس المجلد مثل ملف التكوين. لديك الآن ~/nn/animals/animals.names.
4. قم بتحرير ملف أسماء الحيوانات:
- قم بتحرير ملف أسماء الحيوانات باستخدام محرر النصوص. قم بإدراج الفئات التي تريد اكتشافها، مع إدخال واحد بالضبط في كل سطر، بدون أسطر فارغة، وبدون تعليقات. في هذا المثال، سيحتوي الملف .names على أربعة أسطر:
`
كلب
قطة
طائر
حصان
`
5. قم بإنشاء ملف نصي Animals.data:
- قم بإنشاء ملف نصي 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
`
6. قم بإنشاء مجلد للصور والشروح:
- إنشاء مجلد لتخزين الصور والشروح الخاصة بك. على سبيل المثال، قد يكون هذا ~/nn/animals/dataset.
- ستحتاج كل صورة إلى ملف .txt مطابق يصف التعليقات التوضيحية لتلك الصورة. تنسيق ملفات التعليقات التوضيحية .txt محدد للغاية. لا يمكنك إنشائها يدويًا، حيث أن كل تعليق توضيحي يتطلب الإحداثيات الدقيقة. استخدم DarkMark أو برنامج مشابه لإضافة تعليقات توضيحية إلى صورك. تم توضيح تنسيق التعليقات التوضيحية YOLO في الأسئلة الشائعة حول Darknet/YOLO.
7. قم بإنشاء ملفات نصية "قطار" و"صالحة":
- قم بإنشاء الملفات النصية "القطار" و"الصالحة" المذكورة في ملف البيانات.
- يجب أن يدرج هذان الملفان النصيان جميع الصور التي سيستخدمها Darknet للتدريب والتحقق من الصحة (لحساب نسبة mAP).
- يجب أن يحتوي كل سطر على مسار صورة واسم ملف واحد بالضبط. يمكنك استخدام المسارات النسبية أو المطلقة.
8. تعديل ملف .cfg:
- استخدم محرر النصوص لتعديل ملف .cfg الخاص بك:
-تأكد من الدفعة=64.
- التقسيمات الفرعية: اعتمادًا على أبعاد الشبكة وذاكرة وحدة معالجة الرسومات، قد تحتاج إلى ضبط التقسيمات الفرعية. ابدأ بالأقسام الفرعية = 1 وارجع إلى الأسئلة الشائعة حول Darknet/YOLO إذا لم تنجح.
- Maxbatches: قم بتعيين قيمة بداية جيدة لـ maxbatches إلى 2000 ضعف عدد الفئات. في هذا المثال، لدينا 4 حيوانات، لذا فإن max_batches=8000.
- الخطوات: اضبط الخطوات على 80% و90% من الحد الأقصى لعدد الدفعات. في هذه الحالة، سنستخدم الخطوات=6400,7200.
- العرض والارتفاع: هذه هي أبعاد الشبكة. تشرح الأسئلة الشائعة لـ Darknet/YOLO كيفية حساب الحجم الأفضل.
- الفئات: ابحث عن كافة مثيلات الفئات=... وقم بتحديثها بعدد الفئات في ملف الأسماء الخاص بك. في هذا المثال، سنستخدم الفئات=4.
- المرشحات: ابحث عن جميع مثيلات المرشحات=... في الأقسام [التلافيفية] قبل كل قسم [yolo]. القيمة المستخدمة هي (numberofclasses + 5) 3. في هذا المثال، (4 + 5) 3 = 27. لذا، سنستخدم مرشحات = 27 على الأسطر المناسبة.
9. ابدأ التدريب:
- انتقل إلى الدليل ~/nn/animals/:
``باش
مؤتمر نزع السلاح ~/ن/الحيوانات/
`
- قم بتشغيل الأمر التالي لبدء التدريب:
``باش
كاشف الشبكة المظلمة -خريطة -dont_show تدريب الحيوانات.بيانات الحيوانات.cfg
`
- كن صبوراً. سيتم حفظ أفضل الأوزان باسم Animal_best.weights. يمكنك تتبع التقدم المحرز في التدريب من خلال مراقبة ملف Chart.png. ارجع إلى الأسئلة الشائعة حول Darknet/YOLO للحصول على معلمات إضافية قد ترغب في استخدامها أثناء التدريب.
- إذا كنت تريد المزيد من المعلومات التفصيلية عن التدريب، أضف المعلمة --verbose:
``باش
كاشف الشبكة المظلمة -خريطة -dont_show --قطار مطول للحيوانات.بيانات الحيوانات.cfg
`
أدوات وروابط أخرى
DarkMark: لإدارة مشاريع Darknet/YOLO الخاصة بك، والتعليق على الصور، والتحقق من التعليقات التوضيحية، وإنشاء ملفات للتدريب على Darknet.
DarkHelp: للحصول على واجهة سطر أوامر بديلة قوية لـ Darknet، باستخدام تقسيم الصور وتتبع الكائنات في مقاطع الفيديو وواجهة برمجة تطبيقات C++ قوية مناسبة للتطبيقات التجارية.
الأسئلة الشائعة حول Darknet/YOLO: مورد شامل للإجابة على أسئلتك.
قناة Stéphane على YouTube: العديد من البرامج التعليمية ومقاطع الفيديو النموذجية.
خادم Darknet/YOLO Discord: انضم إلى المجتمع للحصول على الدعم والمناقشات.
خريطة الطريق
آخر تحديث 2024-10-30:
مكتمل:
تم تبديل qsort() بـ std::sort() أثناء التدريب (لا تزال هناك بعض العناصر الغامضة الأخرى).
تمت إزالة check_mistakes وgetchar() وsystem().
تم تحويل Darknet لاستخدام مترجم C++ (g++ على Linux وVisualStudio على Windows).
تم إصلاح بناء Windows.
دعم بايثون ثابت.
أنشأ مكتبة دارك نت.
إعادة تمكين التصنيفات على التنبؤات (رمز "الأبجدية").
إعادة تمكين رمز CUDA/GPU.
إعادة تمكين CUDNN.
إعادة تمكين نصف CUDNN.
تمت إزالة بنية CUDA ذات الترميز الثابت.
تحسين معلومات إصدار CUDA.
إعادة تمكين AVX.
تمت إزالة الحلول القديمة وMakefile.
جعل OpenCV غير اختياري.
تمت إزالة التبعية على مكتبة pthread القديمة.
تمت إزالة STB.
أعد كتابة CMakeLists.txt لاستخدام اكتشاف CUDA الجديد.
تمت إزالة رمز "الأبجدية" القديم وحذف أكثر من 700 صورة في البيانات/التسميات.
تمكين البنيات خارج المصدر.
تحسين إخراج رقم الإصدار.
تم تنفيذ تحسينات الأداء المتعلقة بالتدريب (مستمر).
تم تنفيذ تحسينات الأداء المتعلقة بالاستدلال (مستمر).
يستخدم التمرير المرجعي حيثما أمكن ذلك.
تنظيف ملفات .hpp.
إعادة كتابة darknet.h.
تم تجنب إرسال cv::Mat إلى void*، واستخدامه ككائن C++ مناسب.
تم إصلاح أو تحسين الاتساق في استخدام بنية الصورة الداخلية.
تم إصلاح الإصدارات لأجهزة Jetson المستندة إلى ARM. (من غير المرجح أن يتم إصلاح أجهزة Jetson الأصلية نظرًا لأنها لم تعد مدعومة من قبل NVIDIA - لا يوجد مترجم C++ 17. أجهزة Jetson Orin الجديدة تعمل).
تم إصلاح واجهة برمجة تطبيقات Python في الإصدار 3.
تحسين الدعم لبيثون. (هل هناك أي من مطوري بايثون على استعداد للمساعدة في هذا؟)
أهداف قصيرة المدى
استبدل printf() بـ std::cout (قيد التقدم).
التحقيق في الدعم لكاميرات Zed القديمة.
تحسين وجعل تحليل سطر الأوامر أكثر اتساقًا (قيد التقدم).
أهداف منتصف المدة
قم بإزالة كافة رموز char* واستبدلها بـ std::string.
تجنب إخفاء التحذيرات وتنظيف تحذيرات المترجم (قيد التقدم).
تحسين استخدام cv::Mat بدلاً من بنية الصورة المخصصة في لغة C (قيد التقدم).
استبدل وظيفة القائمة القديمة بـ std::vector أو std::list.
إصلاح الدعم للصور ذات التدرج الرمادي ذات القناة الواحدة.
أضف دعمًا لصور قناة N حيث N > 3 (على سبيل المثال، الصور ذات العمق الإضافي أو القنوات الحرارية).
متابعة عملية التنظيف المستمرة للتعليمات البرمجية (قيد التقدم).
أهداف طويلة المدى
إصلاح مشكلات CUDA/CUNN مع جميع وحدات معالجة الرسومات.
أعد كتابة كود CUDA+cuDNN.
فكر في إضافة دعم لوحدات معالجة الرسومات غير التابعة لـ NVIDIA.
قم بإضافة مربعات محيطة تم تدويرها أو دعم "الزاوية".
تنفيذ النقاط الرئيسية/الهياكل العظمية.
إضافة خرائط الحرارة (قيد التنفيذ).
تنفيذ التجزئة.