إطار عمل Darknet للكشف عن الكائنات وYOLO
شعارات darknet وhank.ai
Darknet هو إطار عمل للشبكة العصبية مفتوح المصدر مكتوب بلغات C وC++ وCUDA.
YOLO (أنت تنظر مرة واحدة فقط) هو نظام متطور للكشف عن الكائنات في الوقت الفعلي والذي يعمل ضمن إطار عمل Darknet.
اقرأ كيف تساعد Hank.ai مجتمع Darknet/YOLO: https://hank.ai/
الإعلان عن Darknet V3 "Jazz": https://darknetcv.ai/
يرجى قراءة الأسئلة الشائعة حول Darknet/YOLO: https://darknetcv.ai/faq/
انضم إلى خادم Darknet/YOLO Discord: https://discord.gg/zSq8rtW
أوراق
1. ورقة YOLOv7: https://arxiv.org/abs/2207.02670
2. مقياس الورق-YOLOv4: https://arxiv.org/abs/2103.05293
3. ورقة YOLOv4: https://arxiv.org/abs/2004.10934
4. ورقة YOLOv3: https://pjreddie.com/media/files/papers/YOLOv3.pdf
معلومات عامة
لا يزال إطار عمل Darknet/YOLO أسرع وأكثر دقة من أطر العمل والإصدارات الأخرى من YOLO.
هذا الإطار مجاني بالكامل ومفتوح المصدر. يمكنك دمج Darknet/YOLO في المشاريع والمنتجات الحالية، بما في ذلك المشاريع التجارية، بدون ترخيص أو دفع رسوم.
يمكن لـ Darknet V3 ("Jazz")، الذي تم إصداره في أكتوبر 2024، تشغيل مقاطع فيديو مجموعة بيانات LEGO بدقة تصل إلى 1000 إطارًا في الثانية عند استخدام وحدة معالجة الرسومات NVIDIA RTX 3090. وهذا يعني أنه تتم قراءة كل إطار فيديو وتغيير حجمه ومعالجته بواسطة Darknet/YOLO في 1 مللي ثانية أو أقل.
يمكن تشغيل إصدار وحدة المعالجة المركزية من Darknet/YOLO على أجهزة بسيطة مثل Raspberry Pi والخوادم السحابية وcolab وأجهزة الكمبيوتر المكتبية وأجهزة الكمبيوتر المحمولة وأجهزة التدريب المتطورة. يتطلب إصدار GPU من Darknet/YOLO وحدة معالجة رسومات قادرة على CUDA من NVIDIA.
من المعروف أن Darknet/YOLO يعمل على أنظمة Linux وWindows وMac. انظر تعليمات البناء أدناه.
نسخة دارك نت
1. الإصدار 0.x: أداة Darknet الأصلية التي كتبها جوزيف ريدمون في 2013-2017.
2. الإصدار 1.x: نسخة Darknet الشهيرة التالية التي يحتفظ بها Alexey Bochkovskiy بين 2017-2021.
3. الإصدار 2.x "OAK": مستودع Darknet برعاية Hank.ai ويديره Stéphane Charette بدءًا من عام 2023. وكان الإصدار الأول الذي يحتوي على أمر إصدار. أحدث هذا الإصدار التغييرات التالية:
- إعادة كتابة خطوات الإنشاء لنهج CMake الموحد على كل من نظامي التشغيل Windows وLinux.
- تحويل قاعدة التعليمات البرمجية لاستخدام مترجم C++.
- تعزيز إنشاء Chart.png أثناء التدريب.
- إصلاحات الأخطاء وتحسينات الأداء المتعلقة بوقت التدريب.
4. الإصدار 2.1: الفرع الأخير من قاعدة التعليمات البرمجية 2.x، الموجود في الفرع v2.
5. الإصدار 3.x "JAZZ": المرحلة التالية من التطوير، سيتم إصدارها في أكتوبر 2024.
- إزالة العديد من الأوامر القديمة والتي لم تتم صيانتها.
- تنفيذ تحسينات الأداء للتدريب والاستدلال.
- تعديل واجهة برمجة تطبيقات C القديمة. ستحتاج التطبيقات التي تستخدم واجهة Darknet API الأصلية إلى تعديلات طفيفة. 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 المدربة مسبقًا من عدة مواقع مختلفة، بما في ذلك هذا المستودع:
YOLOv2 (نوفمبر 2016):
yolov2-tiny.weights
yolov2-full.weights
YOLOv3 (مايو 2018):
yolov3-tiny.weights
yolov3-full.weights
YOLOv4 (مايو 2020):
yolov4-tiny.weights
yolov4-full.weights
YOLOv7 (أغسطس 2022):
yolov7-tiny.weights
yolov7-full.weights
يتم توفير أوزان 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، تمامًا كما لا تحتاج إلى أن تكون ميكانيكيًا لقيادة السيارة.
جوجل كولاب
تعليمات Google Colab هي نفس تعليمات Linux. تتوفر العديد من دفاتر ملاحظات Jupyter التي توضح كيفية تنفيذ مهام مختلفة، مثل تدريب شبكة جديدة.
راجع دفاتر الملاحظات في الدليل الفرعي colab، أو اتبع تعليمات Linux أدناه.
طريقة لينكس CMake
البرنامج التعليمي لبناء Darknet لنظام التشغيل Linux
1. اختياري: إذا كان لديك وحدة معالجة رسومات NVIDIA حديثة، فيمكنك تثبيت إما CUDA أو CUDA+cuDNN في هذه المرحلة. إذا تم تثبيته، فسوف يستخدم Darknet وحدة معالجة الرسومات (GPU) الخاصة بك لتسريع معالجة الصور (والفيديو).
2. تثبيت الحزم اللازمة:
``باش
sudo apt-get install build-essential git libopencv-dev cmake
`
3. استنساخ مستودع Darknet:
``باش
mkdir ~/srccd ~/src
استنساخ بوابة https://github.com/hank-ai/darknet
`
4. إنشاء دليل البناء:
``باش
مؤتمر نزع السلاح داركنت
بناء مكدير
بناء القرص المضغوط
`
5. إنشاء ملفات مشروع CMake:
``باش
cmake -DCMAKEBUILDTYPE=إطلاق ..
`
هام: يجب عليك حذف ملف CMakeCache.txt من دليل إنشاء Darknet الخاص بك لإجبار CMake على إعادة العثور على كافة الملفات الضرورية.
6. بناء الشبكة المظلمة:
``باش
حزمة make -j4
`
7. تثبيت حزمة Darknet:
``باش
sudo dpkg -i darknet-VERSION.deb
`
تثبيت CUDA وcuDNN (اختياري)
يمكن تشغيل Darknet بدون CUDA، ولكن إذا كنت تريد تدريب شبكة مخصصة، فيلزم توفر إما CUDA أو CUDA+cuDNN.
1. تثبيت كودا:
- تفضل بزيارة https://developer.nvidia.com/cuda-downloads لتنزيل CUDA وتثبيته.
- تأكد من إمكانية تشغيل nvcc و nvidia-smi. قد تحتاج إلى تعديل متغير PATH الخاص بك.
2. تثبيت cuDNN:
- قم بزيارة https://developer.nvidia.com/rdp/cudnn-download أو https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#cudnn-package-manager-installation-overview إلى قم بتنزيل وتثبيت cuDNN.
ترقية CUDA أو cuDNN
إذا قمت بتثبيت CUDA أو CUDA+cuDNN في وقت لاحق، أو الترقية إلى إصدار أحدث من برنامج NVIDIA:
1. إعادة بناء الشبكة المظلمة:
- احذف ملف CMakeCache.txt من دليل إنشاء Darknet الخاص بك.
- قم بتشغيل cmake وأصدر الأوامر مرة أخرى.
المستخدمون المتقدمون
لإنشاء ملف تثبيت RPM بدلاً من ملف DEB، قم بتحرير الأسطر ذات الصلة في CM_package.cmake قبل تشغيل حزمة make -j4.
`كماكي
# مجموعة (CPACK_GENERATOR "DEB")
مجموعة (CPACK_GENERATOR "RPM")
`
لتثبيت حزمة التثبيت بمجرد الانتهاء من بنائها، استخدم مدير الحزم المعتاد للتوزيع الخاص بك. على سبيل المثال، في الأنظمة المستندة إلى Debian مثل Ubuntu:
``باش
sudo dpkg -i darknet-2.0.1-Linux.deb
`
اختبار التثبيت
بعد التثبيت يجب أن يكون لديك الملفات التالية:
/usr/bin/darknet: برنامج 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.
قم بتشغيل الأمر التالي لاختبار التثبيت:
``باش
نسخة دارك نت
`
طريقة ويندوز CMake
البرنامج التعليمي لبناء Darknet لنظام التشغيل Windows
1. تثبيت البرامج المطلوبة:
- افتح نافذة موجه أوامر cmd.exe عادية وقم بتشغيل الأوامر التالية:
``باش
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 لهذه الخطوات!
- قم بتشغيل الأوامر التالية:
``باش
مؤتمر نزع السلاح ج:
مكدير ج: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
`
هام: كن صبورًا في هذه الخطوة الأخيرة حيث قد يستغرق تشغيلها وقتًا طويلاً. يحتاج إلى تنزيل وبناء أشياء كثيرة.
4. اختياري: تثبيت CUDA وcuDNN
- إذا كان لديك وحدة معالجة رسومات NVIDIA حديثة، فيمكنك تثبيت إما CUDA أو CUDA+cuDNN في هذه المرحلة. إذا تم تثبيته، فسوف يستخدم Darknet وحدة معالجة الرسومات (GPU) الخاصة بك لتسريع معالجة الصور (والفيديو).
- يجب عليك حذف ملف CMakeCache.txt من دليل إنشاء Darknet الخاص بك لإجبار CMake على إعادة العثور على كافة الملفات الضرورية.
- تذكر إعادة بناء Darknet.
5. تثبيت كودا:
- تفضل بزيارة https://developer.nvidia.com/cuda-downloads لتنزيل CUDA وتثبيته.
- تأكد من أنه يمكنك تشغيل nvcc.exe وnvidia-smi.exe. قد تحتاج إلى تعديل متغير PATH الخاص بك.
6. تثبيت cuDNN:
- قم بزيارة https://developer.nvidia.com/rdp/cudnn-download أو https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#download-windows لتنزيل وتثبيت cuDNN.
- بمجرد تنزيل cuDNN، قم بفك ضغط دلائل الحاوية والتضمين والليب ونسخها إلى C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/[version]/. قد تحتاج إلى الكتابة فوق بعض الملفات.
7. استنساخ مستودع Darknet وبناءه:
``باش
مؤتمر نزع السلاح ج: سرك
استنساخ بوابة 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
`
8. انسخ ملفات CUDA DLL (اختياري):
- إذا تلقيت خطأً بشأن بعض ملفات CUDA أو cuDNN DLL المفقودة، مثل cublas64_12.dll، فانسخ ملفات CUDA .dll يدويًا إلى نفس دليل الإخراج مثل darknet.exe. على سبيل المثال:
``باش
انسخ "C: Program FilesNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll" src-cliRelease
`
9. أعد تشغيل msbuild.exe لإنشاء حزمة تثبيت NSIS:
``باش
msbuild.exe /property:Platform=x64;التكوين=إصدار PACKAGE.vcxproj
`
المستخدمون المتقدمون
بدلاً من تشغيل موجه أوامر المطور، يمكنك استخدام موجه أوامر عادي أو ssh في الجهاز وتشغيل Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat يدويًا.
يمكنك إضافة العديد من الوحدات الاختيارية الأخرى عند إنشاء OpenCV. قم بتشغيل .vcpkg.exe للبحث في opencv لرؤية القائمة الكاملة.
إخراج الأمر cmake هو ملف حل Visual Studio عادي، Darknet.sln. يمكنك تجاهل سطر الأوامر وتحميل مشروع Darknet في Visual Studio إذا كنت مطور برامج يستخدم واجهة المستخدم الرسومية 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.
قم بتشغيل الأمر التالي لاختبار التثبيت بعد تشغيل معالج NSIS:
``باش
C: إصدار ملفات البرنامجDarknetbindarknet.exe
`
باستخدام دارك نت
سطر الأوامر
ما يلي ليس قائمة كاملة بجميع الأوامر التي يدعمها Darknet.
بالإضافة إلى واجهة سطر الأوامر الخاصة بـ Darknet، لاحظ واجهة سطر الأوامر لمشروع DarkHelp، والتي توفر واجهة سطر أوامر بديلة لـ Darknet/YOLO. يحتوي DarkHelp CLI أيضًا على العديد من الميزات المتقدمة التي لا تتوفر مباشرة في Darknet. يمكنك استخدام كل من Darknet CLI وDarkHelp CLI معًا؛ فهي ليست حصرية بشكل متبادل.
بالنسبة لمعظم الأوامر الموضحة أدناه، ستحتاج إلى ملف .weights مع ملفات .names و.cfg المقابلة. يمكنك إما تدريب شبكتك الخاصة (نوصي بشدة!) أو تنزيل شبكة عصبية قام شخص ما بتدريبها بالفعل وإتاحتها مجانًا على الإنترنت. تتضمن أمثلة مجموعات البيانات المدربة مسبقًا ما يلي:
LEGO Gears (العثور على الأشياء في الصورة)
Rolodex (البحث عن نص في صورة)
MSCOCO (الكشف القياسي عن الكائنات من فئة 80)
أوامر للتشغيل
1. احصل على المساعدة:
``باش
مساعدة على الانترنت المظلم
`
2. التحقق من الإصدار:
``باش
نسخة دارك نت
`
3. توقع باستخدام الصورة:
- الإصدار الثاني:
``باش
اختبار كاشف الانترنت المظلم 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
`
4. إحداثيات الإخراج:
- الإصدار الثاني:
``باش
اختبار كاشف الشبكة المظلمة للحيوانات. بيانات Animals.cfg Animalbest.weights -extoutput dog.jpg
`
- الإصدار 3:
``باش
darknet01inference_images حيوانات dog.jpg
`
- مساعدة الظلام:
``باش
DarkHelp --json Animals.cfg Animals.names Animal_best.weights dog.jpg
`
5. العمل مع مقاطع الفيديو:
- الإصدار الثاني:
``باش
عرض توضيحي لكاشف الشبكة المظلمة للحيوانات.بيانات الحيوانات.cfg Animalbest.weights -extoutput test.mp4
`
- الإصدار 3:
``باش
darknet03display_videos Animals.cfg test.mp4
`
- مساعدة الظلام:
``باش
DarkHelp Animals.cfg Animals.names Animal_best.weights test.mp4
`
6. القراءة من كاميرا الويب:
- الإصدار الثاني:
``باش
عرض تجريبي لكاشف الشبكة المظلمة Animals.data Animals.cfg Animal_best.weights -c 0
`
- الإصدار 3:
``باش
حيوانات darknet08display_webcam
`
7. حفظ النتائج إلى الفيديو:
- الإصدار الثاني:
``باش
عرض تجريبي للكشف عن darknet للحيوانات.بيانات الحيوانات.cfg Animalbest.weights test.mp4 -outfilename res.avi
`
- الإصدار 3:
``باش
darknet05processvideosحيوانات متعددة الخيوط.cfg حيوانات.أسماء الحيوانات_أفضل.اختبار الأوزان.mp4
`
- مساعدة الظلام:
``باش
DarkHelp Animals.cfg Animals.names Animal_best.weights test.mp4
`
8. إخراج JSON:
- الإصدار الثاني:
``باش
عرض توضيحي لكاشف الشبكة المظلمة للحيوانات.بيانات الحيوانات.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
`
9. التشغيل على وحدة معالجة رسومات محددة:
- الإصدار الثاني:
``باش
عرض تجريبي لكاشف الشبكة المظلمة Animals.data Animals.cfg Animal_best.weights -i 1 test.mp4
`
10. التحقق من دقة الشبكة العصبية:
``باش
خريطة كاشف الانترنت المظلم القيادة.بيانات القيادة.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
`
11. التحقق من الدقة mAP@IoU=75:
``باش
خريطة كاشف Darknet للحيوانات.بيانات الحيوانات.cfg Animalbest.weights -iouthresh 0.75
`
12. إعادة حساب المراسي:
- DarkMark: من الأفضل إعادة حساب نقاط الارتساء في DarkMark، حيث يتم تشغيله 100 مرة متتالية ويختار أفضل نقاط الارتساء من بين جميع المراسي المحسوبة.
- Darknet: إذا كنت تريد استخدام الطريقة القديمة في Darknet:
``باش
كاشف الشبكة المظلمة calcanchors Animals.data -عدد_العناقيد 6 -العرض 320 -الارتفاع 256
`
13. تدريب شبكة جديدة:
``باش
مؤتمر نزع السلاح ~/ن/الحيوانات/
كاشف الشبكة المظلمة -خريطة -dont_show تدريب الحيوانات.بيانات الحيوانات.cfg
`
تمرين
روابط سريعة للأقسام ذات الصلة من الأسئلة الشائعة حول Darknet/YOLO
1. كيف أقوم بإعداد الملفات والأدلة الخاصة بي؟
2. ما هو ملف التكوين الذي يجب أن أستخدمه؟
3. ما الأمر الذي يجب أن أستخدمه عند تدريب شبكتي الخاصة؟
استخدام DarkMark للتعليقات التوضيحية والتدريب (مستحسن)
إن أبسط طريقة للتعليق والتدريب هي باستخدام DarkMark، الذي يقوم بإنشاء جميع ملفات Darknet الضرورية. يوصى بهذا بشدة لتدريب شبكة عصبية جديدة.
إعداد الملفات يدويًا لتدريب شبكة مخصصة
إذا كنت تفضل الإعداد اليدوي، فاتبع الخطوات التالية:
1. إنشاء مجلد جديد:
- إنشاء مجلد جديد لتخزين ملفات التدريب الخاصة بك. على سبيل المثال، يمكنك إنشاء ~/nn/animals/ لتدريب الشبكة على اكتشاف الحيوانات.
2. انسخ قالب ملف التكوين:
- انسخ أحد ملفات تكوين Darknet من cfg/ كقالب. على سبيل المثال، يمكنك استخدام cfg/yolov4-tiny.cfg. ضع هذا في المجلد الذي قمت بإنشائه. الآن يجب أن يكون لديك ~/nn/animals/animals.cfg.
3. قم بإنشاء ملف Animals.names:
- قم بإنشاء ملف نصي يسمى Animals.names في نفس المجلد مثل ملف التكوين.
4. قم بتحرير ملف أسماء الحيوانات:
- قم بإدراج الفئات التي تريد اكتشافها، إدخال واحد في كل سطر، بدون أسطر أو تعليقات فارغة. على سبيل المثال:
`
كلب
قطة
طائر
حصان
`
5. قم بإنشاء ملف Animals.data:
- قم بإنشاء ملف نصي يسمى Animals.data في نفس المجلد.
- على سبيل المثال، يمكن أن يحتوي ملف Animals.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.
7. التعليق على الصور:
- تحتاج كل صورة إلى ملف .txt مطابق مع التعليقات التوضيحية. تنسيق ملفات .txt هذه محدد ويتطلب الإحداثيات الدقيقة للتعليقات التوضيحية. استخدم DarkMark أو برنامج مشابه لإضافة تعليقات توضيحية إلى صورك.
8. قم بإنشاء ملف Animaltrain.txt و ملف Animalvalid.txt:
- تسرد هذه الملفات النصية الصور المستخدمة للتدريب والتحقق من الصحة، على التوالي. يجب أن تكون كل صورة على سطر منفصل، مع مسارات نسبية أو مطلقة.
9. تعديل ملف التكوين:
- افتح ملف Animal.cfg باستخدام محرر النصوص وقم بإجراء التعديلات التالية:
- الدفعة=64: تأكد من ضبط هذه القيمة.
- التقسيمات الفرعية: أفضل قيمة للاستخدام هي 1. قد تحتاج إلى زيادة هذه القيمة اعتمادًا على ذاكرة وحدة معالجة الرسومات وأبعاد الشبكة.
- maxbatches: اضبط هذا على قيمة معقولة، عادةً ما تكون 2000 ضعف عدد الفئات. في هذا المثال، استخدم maxbatches=8000 (4 فئات * 2000).
- الخطوات: اضبط هذه على 80% و90% من الدفعات القصوى. في هذا المثال، استخدم الخطوات=6400,7200 (نظرًا لأن الحد الأقصى=8000).
- العرض والارتفاع: اضبطهما على أبعاد الشبكة المطلوبة. راجع الأسئلة الشائعة حول Darknet/YOLO للحصول على إرشادات حول اختيار الحجم الأفضل.
- الفئات: ابحث عن كافة مثيلات هذا السطر وقم بتعديله ليطابق عدد الفئات في ملف .names الخاص بك (في هذا المثال، الفئات = 4).
- المرشحات: ابحث عن جميع مثيلات هذا السطر في الأقسام [التلافيفية] قبل كل قسم [yolo]. القيمة المطلوب استخدامها هي (numberofclasses + 5) 3. في هذا المثال، استخدم عوامل التصفية=27 (4 + 5 3).
10. ابدأ التدريب:
``باش
مؤتمر نزع السلاح ~/ن/الحيوانات/
كاشف الشبكة المظلمة -خريطة -dont_show تدريب الحيوانات.بيانات الحيوانات.cfg
`
11. مراقبة تقدم التدريب:
- كن صبوراً! سيتم حفظ أفضل الأوزان باسم Animal_best.weights.
- يمكنك مراقبة سير التدريب من خلال عرض ملف Chart.png.
- راجع الأسئلة الشائعة حول Darknet/YOLO للحصول على معلمات إضافية قد ترغب في استخدامها أثناء التدريب.
12. إضافة الإسهاب إلى مخرجات التدريب:
``باش
كاشف الشبكة المظلمة -خريطة -dont_show --قطار مطول للحيوانات.بيانات الحيوانات.cfg
`
أدوات وروابط أخرى
DarkMark: لإدارة مشاريع Darknet/YOLO، والتعليق على الصور، والتحقق من التعليقات التوضيحية، وإنشاء ملفات للتدريب على Darknet.
DarkHelp: للحصول على واجهة سطر أوامر بديلة قوية لـ Darknet، باستخدام تقسيم الصور وتتبع الكائنات في مقاطع الفيديو وواجهة برمجة تطبيقات C++ قوية يمكن استخدامها في التطبيقات التجارية.
الأسئلة الشائعة حول Darknet/YOLO: https://darknetcv.ai/faq/
قناة ستيفان على اليوتيوب: https://www.youtube.com/channel/UCYQ2k0L3X0c56l9gE2r1RQ
Darknet/YOLO Discord Server: https://discord.gg/zSq8rtW
خريطة الطريق
آخر تحديث 2024-10-30:
مكتمل
تم تبديل qsort() بـ std::sort() حيث يتم استخدامها أثناء التدريب (تظل بعض منها غامضة).
تمت إزالة check_mistakes وgetchar() وsystem().
تم تحويل Darknet لاستخدام مترجم C++ (g++ على Linux، وVisualStudio على Windows).
بناء ويندوز ثابت.
دعم بايثون ثابت.
مكتبة Darknet المبنية.
إعادة تمكين التصنيفات على التنبؤات (رمز "الأبجدية").
إعادة تمكين رمز 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).
- اجهزة جيتسون اورين الجديدة شغالة .
تم إصلاح واجهة برمجة تطبيقات Python في الإصدار 3.
تحسين الدعم لبيثون. (هل يريد أي من مطوري Python المساعدة في هذا؟)
الأهداف قصيرة المدى
قم بتبديل printf() بـ std::cout (قيد التقدم).
انظر إلى دعم كاميرا ZED القديمة.
تحسين وإجراء تحليل سطر الأوامر بشكل متسق (قيد التقدم).
أهداف منتصف المدة
قم بإزالة كافة رموز char* واستبدلها بـ std::string.
لا تخفي التحذيرات وقم بتنظيف تحذيرات المترجم (قيد التقدم).
تحسين استخدام cv::Mat بدلاً من بنية الصورة المخصصة في لغة C (قيد التقدم).
استبدل وظيفة القائمة القديمة بـ std::vector أو std::list.
إصلاح الدعم للصور ذات التدرج الرمادي ذات القناة الواحدة.
أضف دعمًا لصور قناة N حيث N > 3 (على سبيل المثال، الصور ذات العمق الإضافي أو القناة الحرارية).
تنظيف التعليمات البرمجية المستمر (قيد التقدم).
الأهداف طويلة المدى
إصلاح مشكلات CUDA/CUNN مع جميع وحدات معالجة الرسومات.
أعد كتابة كود CUDA+cuDNN.
فكر في إضافة دعم لوحدات معالجة الرسومات غير التابعة لـ NVIDIA.
صناديق محيطة تم تدويرها، أو نوع من دعم "الزاوية".
النقاط الرئيسية / الهياكل العظمية.
الخرائط الحرارية (قيد التنفيذ).
التقسيم.