Darknet Object Detection Framework وYOLO
Darknet هو إطار شبكة عصبية مفتوح المصدر تم تصميمه باستخدام C وC++ وCUDA. إنه بمثابة الأساس لنظام YOLO (أنت تنظر مرة واحدة فقط)، وهو نظام متطور للكشف عن الأشياء في الوقت الفعلي يشتهر بسرعته ودقته.
اقرأ عن كيفية قيام Hank.ai بتعزيز مجتمع Darknet/YOLO: [رابط إلى مدونة Hank.ai]
استكشف موقع Darknet/YOLO الرسمي: [رابط إلى موقع Darknet]
تعمق في الأسئلة الشائعة الشاملة عن Darknet/YOLO: [رابط إلى الأسئلة الشائعة]
تفاعل مع مجتمع Darknet/YOLO النابض بالحياة على Discord: [رابط إلى خادم Discord]
أوراق
1. YOLOv7: [رابط إلى الورقة]
2. Scaled-YOLOv4: [رابط إلى الورقة]
3. YOLOv4: [رابط إلى الورقة]
4. YOLOv3: [رابط إلى الورقة]
معلومات عامة
يستمر إطار عمل Darknet/YOLO في السيطرة على أطر العمل الأخرى وإصدارات YOLO من حيث السرعة والدقة. تسمح طبيعتها مفتوحة المصدر والتحرر الكامل من رسوم الترخيص بالتكامل السلس في المشاريع الحالية والمنتجات التجارية.
يحقق Darknet V3 ("Jazz")، الذي تم إصداره في أكتوبر 2024، أداءً رائعًا، حيث يعالج مقاطع فيديو مجموعة بيانات LEGO بمعدل مذهل يبلغ 1000 إطارًا في الثانية باستخدام وحدة معالجة الرسومات NVIDIA RTX 3090. يُترجم هذا إلى وقت معالجة أقل من 1 مللي ثانية لكل إطار فيديو.
انضم إلى خادم Darknet/YOLO Discord النشط على [رابط إلى خادم Discord] للحصول على الدعم والمناقشات والتعلم التعاوني.
يقدم Darknet/YOLO خدماته لمجموعة واسعة من الأجهزة، بدءًا من Raspberry Pi وحتى منصات التدريب المتطورة، التي تدعم كلاً من إصدارات وحدة المعالجة المركزية (CPU) ووحدة معالجة الرسومات (GPU). يتطلب إصدار GPU وحدة معالجة رسومات قادرة على CUDA من NVIDIA.
يتميز Darknet/YOLO بالتوافق مع أنظمة التشغيل Linux وWindows وMac. ابحث عن تعليمات البناء التفصيلية أدناه.
نسخة دارك نت
وكانت أداة Darknet الأصلية، التي طورها جوزيف ريدمون بين عامي 2013 و2017، تفتقر إلى رقم الإصدار. نقوم بتعيين هذا الإصدار كـ 0.x.
واصل Alexey Bochkovskiy الحفاظ على مستودع Darknet الشهير من عام 2017 إلى عام 2021، مرة أخرى بدون رقم إصدار. نشير إلى هذا بالإصدار 1.x.
قدّم مستودع Darknet، الذي يرعاه Hank.ai ويديره ستيفان شاريت منذ عام 2023، أمر "الإصدار". بين عام 2023 وأواخر عام 2024، أعادت الإصدار 2.x "OAK".
كانت أهداف التطوير هي تقليل تعطيل الوظائف الحالية مع التعرف على قاعدة التعليمات البرمجية. تشمل التحسينات الرئيسية ما يلي:
عملية بناء موحدة: إعادة كتابة خطوات البناء لعملية بناء متسقة قائمة على CMake على كل من نظامي التشغيل Windows وLinux.
قاعدة تعليمات C++: تحويل قاعدة التعليمات البرمجية للاستفادة من برنامج التحويل البرمجي C++.
مخطط تدريب محسّن: تحسين تصور Chart.png أثناء التدريب.
إصلاحات الأخطاء والتحسينات: التحسينات المتعلقة بالأداء، مع التركيز على تقليل وقت التدريب.
الفرع الأخير من قاعدة التعليمات البرمجية هذه هو الإصدار 2.1، الموجود في الفرع "v2".
بدأت المرحلة التالية من التطوير في منتصف عام 2024 وبلغت ذروتها في إصدار أكتوبر 2024 للإصدار 3.x "JAZZ".
يمكنك دائمًا الوصول إلى فرع "v2" السابق لتنفيذ الأوامر من تلك الإصدارات. يرجى إبلاغنا إذا واجهت أي أوامر مفقودة، وسوف نقوم بالتحقيق في إعادة دمجها.
تشمل التغييرات المهمة في Darknet V3 ما يلي:
إزالة الأوامر: إزالة الأوامر القديمة وقليلة الاستخدام.
تحسينات الأداء: تحسينات لكل من أداء التدريب والاستدلال.
تعديل واجهة برمجة التطبيقات القديمة: تعديل واجهة برمجة تطبيقات C القديمة؛ قد تتطلب التطبيقات التي تستخدم واجهة Darknet API الأصلية تعديلات طفيفة.
واجهة برمجة تطبيقات C/C++ الجديدة: مقدمة لواجهة برمجة تطبيقات Darknet V3 C وC++ الجديدة.
نموذج التعليمات البرمجية المحدث: تضمين التطبيقات الجديدة ونموذج التعليمات البرمجية في دليل "أمثلة src".
للحصول على معلومات تفصيلية حول واجهة برمجة التطبيقات الجديدة: [رابط إلى وثائق Darknet V3 API]
استكشف نموذج التعليمات البرمجية المحدث: [رابط إلى ملفات Darknet V3 API]
أوزان MSCOCO المدربة مسبقًا
تم تدريب العديد من إصدارات YOLO الشائعة مسبقًا من أجل الراحة على مجموعة بيانات MSCOCO. تشمل مجموعة البيانات هذه 80 فئة، يمكن التعرف عليها بسهولة في الملف النصي "cfg/coco.names".
بخلاف MSCOCO، توفر Darknet/YOLO أوزانًا مدربة مسبقًا لمجموعات بيانات أبسط مثل LEGO Gears وRolodex، مما يسمح لك بتجربة سيناريوهات مختلفة. ارجع إلى الأسئلة الشائعة حول Darknet/YOLO للحصول على تفاصيل شاملة.
يمكن الوصول إلى أوزان MSCOCO المدربة مسبقًا من مصادر متعددة، بما في ذلك هذا المستودع:
YOLOv2 (نوفمبر 2016):
YOLOv2-tiny: [رابط إلى الأوزان]
YOLOv2-كامل: [رابط إلى الأوزان]
YOLOv3 (مايو 2018):
YOLOv3-tiny: [رابط إلى الأوزان]
YOLOv3-كامل: [رابط إلى الأوزان]
YOLOv4 (مايو 2020):
YOLOv4-tiny: [رابط إلى الأوزان]
YOLOv4-كامل: [رابط إلى الأوزان]
YOLOv7 (أغسطس 2022):
YOLOv7-tiny: [رابط إلى الأوزان]
YOLOv7-كامل: [رابط إلى الأوزان]
هذه الأوزان المدربة مسبقًا مخصصة في المقام الأول لأغراض العرض التوضيحي. توجد ملفات .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 على الإصدار C++ 17 أو الإصدار الأحدث، OpenCV، ويستخدم CMake لإنشاء ملفات المشروع الضرورية.
لا يتطلب إنشاء وتركيب وتشغيل Darknet/YOLO خبرة C++، على غرار قيادة السيارة دون أن تكون ميكانيكيًا.
جوجل كولاب
تعليمات Google Colab مطابقة لتعليمات Linux. تعرض العديد من دفاتر ملاحظات Jupyter مهامًا مختلفة، مثل تدريب شبكة جديدة.
استكشف دفاتر الملاحظات في الدليل الفرعي "colab" أو اتبع تعليمات Linux أدناه.
طريقة لينكس CMake
البرنامج التعليمي لبناء Darknet لنظام التشغيل Linux
اختياري: إذا كان لديك وحدة معالجة رسومات NVIDIA حديثة، فيمكنك تثبيت إما CUDA أو CUDA+cuDNN في هذه المرحلة. إذا تم تثبيته، فسوف يستخدم Darknet وحدة معالجة الرسومات (GPU) الخاصة بك لتسريع معالجة الصور (والفيديو).
يجب عليك حذف ملف CMakeCache.txt من دليل إنشاء Darknet الخاص بك لإجبار CMake على إعادة العثور على كافة الملفات الضرورية.
تذكر إعادة بناء Darknet.
يمكن تشغيل Darknet بدونه، ولكن إذا كنت ترغب في تدريب شبكة مخصصة، فيلزم توفر إما CUDA أو CUDA+cuDNN.
1. تثبيت المتطلبات الأساسية:
``باش
sudo apt-get install build-essential git libopencv-dev cmake
`
2. استنساخ مستودع Darknet:
``باش
mkdir ~/srccd ~/src
استنساخ بوابة https://github.com/hank-ai/darknetcd darknet
`
3. إنشاء دليل البناء:
``باش
بناء mkdir buildcd
`
4. تكوين CMake:
``باش
cmake -DCMAKEBUILDTYPE=إطلاق ..
`
5. بناء الشبكة المظلمة:
``باش
جعل -j4
`
6. باقة داركنت:
``باش
طَرد
`
7. تثبيت الحزمة:
``باش
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 package"، اضبط هذه السطور:
`كماكي
مجموعة (CPACKGENERATOR "DEB")# مجموعة (CPACKGENERATOR "RPM")
`
بالنسبة لتوزيعات مثل Centos وOpenSUSE، قم بتعديل هذه الأسطر كما يلي:
`كماكي
مجموعة (CPACK_GENERATOR "DEB")
مجموعة (CPACK_GENERATOR "RPM")
`
قم بتثبيت الحزمة المضمنة باستخدام مدير الحزم الخاص بالتوزيع الخاص بك. بالنسبة للأنظمة المستندة إلى Debian مثل Ubuntu:
``باش
sudo dpkg -i darknet-2.0.1-Linux.deb
`
سيقوم تثبيت الحزمة .deb بنسخ الملفات التالية:
/usr/bin/darknet: الشبكة المظلمة الرئيسية القابلة للتنفيذ. قم بتشغيل "إصدار darknet" من واجهة سطر الأوامر (CLI) لتأكيد نجاح التثبيت.
/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" للتحقق من التثبيت.
إذا لم يكن لديك /usr/bin/darknet، فهذا يعني أنك قمت بإنشائه فقط، ولم تقم بتثبيته. تأكد من تثبيت ملف .deb أو .rpm كما هو موضح أعلاه.
طريقة ويندوز CMake
تفترض هذه التعليمات تثبيتًا جديدًا لنظام التشغيل Windows 11 22H2.
1. تثبيت المتطلبات الأساسية باستخدام Winget:
``باش
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" وحدد "Developer Command Prompt for VS 2022". لا تستخدم PowerShell في هذه الخطوات، فقد يتسبب ذلك في حدوث مشكلات!
- المستخدمون المتقدمون: بدلاً من استخدام موجه أوامر المطور، يمكنك تشغيل موجه أوامر عادي أو ssh في الجهاز وتنفيذ "Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat" يدويًا.
4. قم بتثبيت OpenCV باستخدام VCPKG:
``باش
مؤتمر نزع السلاح ج:
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 للبحث في opencv لرؤية القائمة الكاملة.
اختياري: إذا كان لديك وحدة معالجة رسومات NVIDIA حديثة، فيمكنك تثبيت إما CUDA أو CUDA+cuDNN في هذه المرحلة. إذا تم تثبيته، فسوف يستخدم Darknet وحدة معالجة الرسومات (GPU) الخاصة بك لتسريع معالجة الصور (والفيديو).
يجب عليك حذف ملف CMakeCache.txt من دليل إنشاء Darknet الخاص بك لإجبار CMake على إعادة العثور على كافة الملفات الضرورية.
تذكر إعادة بناء Darknet.
يمكن تشغيل Darknet بدونه، ولكن إذا كنت ترغب في تدريب شبكة مخصصة، فيلزم توفر إما CUDA أو CUDA+cuDNN.
1. تثبيت كودا:
تفضل بزيارة https://developer.nvidia.com/cuda-downloads لتنزيل CUDA وتثبيته.
2. تثبيت cuDNN:
قم بزيارة https://developer.nvidia.com/rdp/cudnn-download أو https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#download-windows لتنزيل وتثبيت cuDNN.
3. التحقق من تثبيت CUDA:
بعد تثبيت CUDA، تأكد من أنه يمكنك تشغيل nvcc.exe وnvidia-smi.exe. قد تحتاج إلى ضبط متغير PATH الخاص بك.
4. دمج cuDNN:
قم بفك ضغط أرشيف cuDNN الذي تم تنزيله وانسخ الدلائل "bin" و"include" و"lib" إلى C:Program FilesNVIDIA GPU Computing ToolkitCUDA[version]. قد تحتاج إلى الكتابة فوق الملفات الموجودة.
5. تثبيت CUDA بعد Visual Studio:
- يجب تثبيت CUDA بعد Visual Studio. إذا قمت بترقية Visual Studio، تذكر إعادة تثبيت CUDA.
6. استنساخ Darknet والبناء:
``باش
مؤتمر نزع السلاح ج: سرك
استنساخ بوابة https://github.com/hank-ai/darknet.gitcd darknet
بناء mkdir buildcd
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
`
7. التعامل مع ملفات CUDA/cuDNN DLL المفقودة:
- إذا واجهت أخطاء بشأن فقدان ملفات CUDA أو cuDNN DLLs (على سبيل المثال، cublas64_12.dll)، فانسخ ملفات CUDA .dll ذات الصلة يدويًا إلى نفس الدليل مثل darknet.exe. على سبيل المثال:
``باش
انسخ "C:Program FilesNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll" src-cliRelease
`
(هذا مثال. تحقق من إصدار CUDA الخاص بك وقم بتنفيذ الأمر المناسب.)
- أعد تشغيل الأمر msbuild.exe الأخير لإنشاء حزمة تثبيت NSIS.
المستخدمين المتقدمين:
إخراج الأمر cmake هو ملف حل Visual Studio عادي (Darknet.sln). إذا كنت تفضل استخدام Visual Studio GUI بدلاً من 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. يتضمن العديد من الميزات المتقدمة غير المتوفرة مباشرة في 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 القيادة_أفضل.الأوزان ...
`
- سيعرض هذا الأمر متوسط الدقة (AP) لكل فئة في مجموعة البيانات.
mAP@IoU=75:
``باش
خريطة كاشف الشبكة المظلمة للحيوانات.بيانات الحيوانات.cfg Animalbest.weights -iouthresh 0.75
`
- يحسب هذا الأمر mAP عند عتبة IoU البالغة 0.75.
حساب المراسي:
أفضل ممارسة لإعادة حساب نقاط الارتساء هي استخدام DarkMark، حيث يقوم بتشغيل 100 عملية حسابية متتالية ويحدد نقاط الارتساء المثالية. ومع ذلك، يمكنك استخدام طريقة Darknet الأقدم:
``باش
كاشف الشبكة المظلمة calcanchors Animals.data -عدد_العناقيد 6 -العرض 320 -الارتفاع 256
`
تدريب شبكة جديدة:
التدريب الأساسي:
``باش
كاشف الشبكة المظلمة -خريطة -dont_show تدريب الحيوانات.بيانات الحيوانات.cfg
`
- سيتم حفظ أفضل الأوزان باسم Animal_best.weights، وسيكون التقدم في التدريب مرئيًا في Chart.png.
التدريب المطول:
``باش
كاشف الشبكة المظلمة -خريطة -dont_show --قطار مطول للحيوانات.بيانات الحيوانات.cfg
`
- يوفر هذا الأمر معلومات أكثر تفصيلاً أثناء التدريب.
تمرين
روابط سريعة للأقسام ذات الصلة من الأسئلة الشائعة حول Darknet/YOLO:
إعداد الملف والدليل: [رابط إلى قسم الأسئلة الشائعة]
اختيار ملف التكوين الصحيح: [رابط إلى قسم الأسئلة الشائعة]
أمر التدريب: [رابط إلى قسم الأسئلة الشائعة]
الطريقة الأكثر مباشرة للتعليق والتدريب هي استخدام DarkMark لإنشاء جميع ملفات Darknet الضرورية. هذا هو الأسلوب الموصى به لتدريب شبكة عصبية جديدة.
إعداد التدريب اليدوي:
1. إنشاء مجلد: قم بإنشاء مجلد جديد لتخزين ملفات التدريب الخاصة بك. على سبيل المثال، ~/nn/animals/.
2. انسخ ملف التكوين: انسخ ملف تكوين Darknet كقالب (على سبيل المثال، cfg/yolov4-tiny.cfg) إلى المجلد الخاص بك. لديك الآن ~/nn/animals/animals.cfg.
3. قم بإنشاء ملف .names: قم بإنشاء ملف نصي Animals.names في نفس المجلد.
- قم بتحرير الملف لسرد الفئات التي تريد الكشف عنها. يجب أن يكون كل فصل في سطر منفصل بدون أسطر أو تعليقات فارغة. على سبيل المثال:
`
كلب
قطة
طائر
حصان
`
4. إنشاء ملف .data: قم بإنشاء ملف نصي 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
`
5. قم بإنشاء مجلد الصور والتعليقات التوضيحية: قم بإنشاء مجلد (على سبيل المثال، ~/nn/animals/dataset) لتخزين الصور والتعليقات التوضيحية.
- تتطلب كل صورة ملف .txt مطابق يحتوي على تعليقات توضيحية. تنسيق التعليق التوضيحي محدد؛ ولا يمكن إنشاؤه يدويًا. استخدم DarkMark أو برنامج مشابه لإضافة تعليقات توضيحية إلى الصور.
- تم شرح تنسيق التعليقات التوضيحية YOLO في الأسئلة الشائعة حول Darknet/YOLO.
6. قم بإنشاء ملفات "القطار" و"الصالحة": قم بإنشاء الملفات النصية "القطار" و"الصالحة" المذكورة في ملف البيانات.
- تسرد هذه الملفات الصور المستخدمة للتدريب والتحقق من الصحة، على التوالي. يجب أن تكون كل صورة على سطر منفصل. يمكنك استخدام المسارات النسبية أو المطلقة.
7. تعديل ملف التكوين:
- افتح ملف .cfg باستخدام محرر النصوص وقم بإجراء التعديلات التالية:
- الدفعة=64: هذه القيمة جيدة عادةً.
- التقسيمات: ابدأ بالتقسيمات = 1. قد تحتاج إلى زيادة هذه القيمة اعتمادًا على ذاكرة وحدة معالجة الرسومات الخاصة بك وأبعاد الشبكة. راجع الأسئلة الشائعة حول Darknet/YOLO للحصول على إرشادات.
- maxbatches: اضبط هذا على 2000 * عدد الفئات. على سبيل المثال، مع 4 فئات، الحد الأقصى = 8000.
- الخطوات: اضبط هذا على 80% و90% من الدفعات القصوى. على سبيل المثال، مع الحد الأقصى للدفعات = 8000، الخطوات = 6400,7200.
- العرض والارتفاع: هذه هي أبعاد الشبكة. راجع الأسئلة الشائعة حول Darknet/YOLO للحصول على نصائح بشأن حساب الأبعاد.
- الفئات: قم بتغيير سطر الفئات=... ليطابق عدد الفئات في ملف .names الخاص بك (في هذا المثال، الفئات=4).
- عوامل التصفية: قم بتعديل سطر المرشحات=... في كل قسم [تلافيفي] قبل كل قسم [يولو]. يتم حساب القيمة كـ (numberofclasses + 5) * 3. على سبيل المثال، مع 4 فئات، تكون المرشحات = 27.
8. ابدأ التدريب:
``باش
مؤتمر نزع السلاح ~/ن/الحيوانات/
كاشف الشبكة المظلمة -خريطة -dont_show تدريب الحيوانات.بيانات الحيوانات.cfg
`
- التدريب قد يستغرق بعض الوقت. سيتم حفظ أفضل الأوزان باسم Animal_best.weights. يظهر تقدم التدريب في ملف Chart.png. ارجع إلى الأسئلة الشائعة حول Darknet/YOLO للحصول على معلمات تدريب إضافية.
- إذا كنت تريد المزيد من المعلومات التفصيلية عن التدريب، أضف المعلمة --verbose:
``باش
كاشف الشبكة المظلمة -خريطة -dont_show --قطار مطول للحيوانات.بيانات الحيوانات.cfg
`
أدوات وروابط أخرى
DarkMark: تساعد هذه الأداة في إدارة مشاريع Darknet/YOLO الخاصة بك، والتعليق على الصور، والتحقق من التعليقات التوضيحية، وإنشاء الملفات اللازمة لتدريب Darknet.
DarkHelp: واجهة سطر الأوامر (CLI) البديلة القوية لـ Darknet التي توفر ميزات مثل تقسيم الصور وتتبع الكائنات في مقاطع الفيديو وواجهة برمجة تطبيقات C++ قوية للتطبيقات التجارية.
الأسئلة الشائعة حول Darknet/YOLO: مورد قيم للإجابة على أسئلتك حول Darknet/YOLO.
قناة Stéphane على YouTube: ابحث عن العديد من البرامج التعليمية وأمثلة مقاطع الفيديو.
خادم Darknet/YOLO Discord: انضم إلى الخادم لطرح أسئلة الدعم والتواصل مع مستخدمي Darknet/YOLO الآخرين.
خريطة الطريق
آخر تحديث: 2024-10-30
مكتمل
مبادلة qsort(): تم استبدال qsort() بـ std::sort() في الأجزاء ذات الصلة من قاعدة التعليمات البرمجية. (لا تزال بعض المثيلات المتبقية تستخدم qsort())
إزالة الوظائف القديمة: تمت إزالة check_mistakes وgetchar() وsystem().
قاعدة بيانات C++: تم تحويل Darknet لاستخدام مترجم C++ (g++ على Linux، وVisualStudio على Windows).
بناء Windows: عملية بناء Windows الثابتة.
دعم بايثون: تكامل بايثون ثابت.
مكتبة Darknet: تم إنشاء مكتبة Darknet.
تسميات التنبؤ: إعادة تمكين التصنيفات على التنبؤات (رمز "الأبجدية").
رمز CUDA/GPU: إعادة تمكين وظيفة CUDA/GPU.
CUDNN: إعادة تمكين دعم CUDNN.
نصف CUDNN: إعادة تمكين دعم CUDNN بنصف الدقة.
بنية CUDA: تمت إزالة الترميز الثابت لبنية CUDA.
معلومات إصدار CUDA: معلومات إصدار CUDA محسنة.
AVX: إعادة تمكين دعم AVX.
تمت إزالة الملفات القديمة: تمت إزالة الحلول القديمة وMakefile.
تبعية OpenCV: جعل OpenCV تبعية مطلوبة.
مكتبة pthread: تمت إزالة الاعتماد على مكتبة pthread القديمة.
STB: إزالة تبعية STB.
CMakeLists.txt: إعادة كتابة CMakeLists.txt لاستخدام طريقة الكشف CUDA الجديدة.
إزالة الملفات القديمة: تمت إزالة رمز "الأبجدية" القديم وحذف أكثر من 700 صورة في البيانات/التسميات.
الإنشاء خارج المصدر: تمكين الإنشاءات خارج المصدر.
رقم الإصدار: تحسين إخراج رقم الإصدار.
أداء التدريب: تحسين الأداء للتدريب (مهمة مستمرة).
أداء الاستدلال: تحسينات الأداء للاستدلال (مهمة مستمرة).
التمرير حسب المرجع: يتم استخدام التمرير حسب المرجع حيثما أمكن ذلك لتحسين الكفاءة.
تنظيف التعليمات البرمجية: تنظيف ملفات .hpp.
إعادة كتابة darknet.h: تم تحديث ملف رأس Darknet API.
استخدام cv::Mat: يستخدم cv::Mat ككائن C++ مناسب بدلاً من إرساله إلى الفراغ*.
بنية الصورة: تم إصلاح التناقضات والمشكلات المتعلقة ببنية الصورة الداخلية.
دعم Jetson: تم إصلاح الإصدارات الثابتة لأجهزة Jetson المستندة إلى ARM.
- من غير المرجح أن يتم إصلاح أجهزة Jetson الأقدم بسبب توقف دعم NVIDIA (لا يوجد مترجم C++ 17).
- اجهزة جيتسون اورين الجديدة شغالة .
Python API في V3: تم إصلاح Python API في Darknet V3.
أهداف قصيرة المدى
مبادلة printf(): استبدل printf() بـ std::cout (قيد التقدم).
دعم كاميرا Zed: قم بإعادة النظر في دعم كاميرا Zed وتحسينه.
تحليل سطر الأوامر: تنفيذ تحليل سطر أوامر أكثر قوة واتساقًا (قيد التنفيذ).
أهداف منتصف المدة
إزالة كود char: قم بإزالة كل كود char واستبدله بـ std::string.
تحذيرات المترجم: لا تقم بإخفاء التحذيرات ومعالجة تحذيرات المترجم (قيد التقدم).
استخدام cv::Mat: تحسين استخدام cv::Mat بدلاً من بنية الصورة المخصصة في C (قيد التقدم).
وظيفة القائمة: استبدل وظيفة القائمة القديمة بـ std::vector أو std::list.
دعم الصور ذات التدرج الرمادي: إصلاح الدعم للصور ذات التدرج الرمادي ذات القناة الواحدة.
دعم صورة قناة N: أضف دعمًا للصور التي تحتوي على أكثر من 3 قنوات (على سبيل المثال، قنوات العمق أو القنوات الحرارية).
التنظيف المستمر للتعليمات البرمجية: تابع التنظيف المستمر للتعليمات البرمجية (قيد التقدم).
أهداف طويلة المدى
مشكلات CUDA/CUDNN: معالجة مشكلات توافق CUDA/CUDNN عبر وحدات معالجة الرسومات المختلفة.
إعادة كتابة كود CUDA/CUDNN: أعد كتابة كود CUDA/CUDNN لتحسين الأداء والتوافق.
دعم وحدات معالجة الرسومات غير التابعة لـ NVIDIA: التحقق من دعم وحدات معالجة الرسومات غير التابعة لـ NVIDIA.
المربعات المحيطة التي تم تدويرها: تنفيذ الدعم للمربعات المحيطة التي تم تدويرها أو معلومات الزاوية.
النقاط الرئيسية/الهياكل العظمية: إضافة دعم لنقاط المفاتيح والهياكل العظمية.
الخرائط الحرارية: تنفيذ دعم الخريطة الحرارية (قيد التنفيذ).
التقسيم: إضافة دعم للتجزئة.