إطار عمل Darknet للكشف عن الكائنات وYOLO
شعارات Darknet وHank.ai
Darknet هو إطار شبكة عصبية مفتوح المصدر مكتوب بلغات C وC++ وCUDA. YOLO (أنت تنظر مرة واحدة فقط) هو نظام متطور للكشف عن الكائنات في الوقت الفعلي والذي يعمل ضمن إطار عمل Darknet.
اكتشف كيف يدعم Hank.ai مجتمع Darknet/YOLO
استكشف موقع 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. يُترجم هذا إلى معالجة 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. للحصول على تعليمات مفصلة، راجع أقسام البناء أدناه.
نسخة دارك نت
1. الإصدار 0.x: يشير هذا إلى أداة Darknet الأصلية التي طورها جوزيف ريدمون في الفترة من 2013 إلى 2017، والتي كانت تفتقر إلى رقم الإصدار.
2. الإصدار 1.x: يشمل هذا مستودع Darknet الشهير الذي يحتفظ به Alexey Bochkovskiy بين عامي 2017 و2021، وبدون رقم إصدار رسمي أيضًا.
3. الإصدار 2.x "OAK": تم تقديم هذا الإصدار في عام 2023، برعاية Hank.ai ويديره ستيفان شاريت. كانت هذه هي المرة الأولى التي يتضمن فيها مستودع Darknet أمر إصدار.
- كان الهدف هو تقليل الاضطرابات في الوظائف الحالية مع التعرف على قاعدة التعليمات البرمجية.
- التغييرات الرئيسية شملت:
- نظام بناء CMake الموحد لنظامي التشغيل Windows وLinux
- تحويل قاعدة التعليمات البرمجية إلى مترجم C ++
- تحسين Chart.png أثناء التدريب
- إصلاحات الأخطاء وتحسينات الأداء، خاصة لتقليل وقت التدريب
- الفرع الأخير من قاعدة التعليمات البرمجية هذه كان الإصدار 2.1 في الفرع v2.
4. الإصدار 3.x "JAZZ": بدأت هذه المرحلة من التطوير في منتصف عام 2024 وتم إطلاقها في أكتوبر 2024. يُرجع أمر الإصدار الآن 3.x.
- التغييرات في هذا الإصدار تشمل:
- إزالة العديد من الأوامر القديمة وغير المدعومة.
- تحسينات شاملة في الأداء لكل من التدريب والاستدلال.
- تعديلات على واجهة برمجة تطبيقات C القديمة، والتي تتطلب تعديلات طفيفة للتطبيقات التي تستخدم واجهة برمجة تطبيقات Darknet الأصلية. يمكن العثور على الوثائق المحدثة لـ Darknet V3 C وC++ API على https://darknetcv.ai/api/api.html.
- مقدمة للتطبيقات الجديدة ونموذج التعليمات البرمجية في دليل أمثلة src، الذي يمكن الوصول إليه على https://darknetcv.ai/api/files.html.
ملاحظة: من أجل التوافق، يمكنك دائمًا الوصول إلى فرع v2 السابق إذا كنت بحاجة إلى تنفيذ أي من تلك الأوامر المحددة. يرجى التواصل معنا إذا واجهت أي أوامر مفقودة، وسنقوم بالتحقيق في إعادة دمجها.
أوزان MSCOCO المدربة مسبقًا
للراحة، تم تدريب العديد من إصدارات YOLO الشائعة مسبقًا على مجموعة بيانات MSCOCO. تحتوي مجموعة البيانات هذه على 80 فئة، والتي يمكن عرضها في الملف النصي cfg/coco.names.
بخلاف MSCOCO، يمكنك العثور على أوزان أخرى مدربة مسبقًا ومجموعات بيانات أبسط لاختبار Darknet/YOLO، مثل LEGO Gears وRolodex. يمكن العثور على معلومات تفصيلية في الأسئلة الشائعة حول Darknet/YOLO.
يمكن الوصول إلى أوزان MSCOCO المدربة مسبقًا من مواقع مختلفة، بما في ذلك داخل هذا المستودع:
1. YOLOv2 (نوفمبر 2016)
- yolov2-tiny.weights
- yolov2-full.weights
2. YOLOv3 (مايو 2018)
- yolov3-tiny.weights
- yolov3-full.weights
3. YOLOv4 (مايو 2020)
- yolov4-tiny.weights
- yolov4-full.weights
4. 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 بشكل أساسي للتحقق من التشغيل الصحيح لـ Darknet/YOLO.
مبنى
تم تبسيط طرق البناء المختلفة المستخدمة في الماضي (قبل عام 2023) في حل موحد. يتطلب Darknet الإصدار 17 من لغة C++ أو الإصدار الأحدث، OpenCV، ويستخدم CMake لإنشاء ملفات المشروع.
تذكر أن إنشاء Darknet/YOLO وتثبيته وتشغيله لا يتطلب معرفة بلغة C++. إنه يشبه قيادة السيارة دون أن تكون ميكانيكيًا.
الرجاء ملاحظة: إذا كنت تشير إلى برامج تعليمية قديمة تحتوي على خطوات إنشاء أكثر تعقيدًا أو تلك التي لا تتوافق مع هذا الملف التمهيدي، فتابع بحذر. تم تقديم تعليمات البناء الجديدة الموضحة أدناه في أغسطس 2023.
للحصول على رؤى حول الأعمال الداخلية لإطار عمل اكتشاف الكائنات Darknet/YOLO، ننصح مطوري البرامج بزيارة https://darknetcv.ai/.
جوجل كولاب
تعليمات Google Colab مطابقة لتعليمات Linux. تتوفر العديد من دفاتر ملاحظات Jupyter، والتي توضح كيفية تنفيذ مهام محددة مثل تدريب شبكة جديدة.
استكشف دفاتر الملاحظات ضمن الدليل الفرعي colab، أو اتبع تعليمات Linux المتوفرة أدناه.
طريقة لينكس CMake
البرنامج التعليمي لبناء Darknet لنظام التشغيل Linux
1. تثبيت التبعيات:
``باش
sudo apt-get install build-essential git libopencv-dev cmake
`
2. استنساخ مستودع Darknet:
``باش
mkdir ~/srccd ~/src
استنساخ بوابة https://github.com/hank-ai/darknet
مؤتمر نزع السلاح داركنت
`
3. إنشاء دليل البناء:
``باش
بناء mkdir buildcd
`
4. التكوين باستخدام CMake:
``باش
cmake -DCMAKEBUILDTYPE=إطلاق ..
`
5. بناء الشبكة المظلمة:
``باش
جعل -j4
`
6. الحزمة والتثبيت:
``باش
طَرد
sudo dpkg -i darknet-VERSION.deb
`
اختياري: تثبيت CUDA وcuDNN
لتسريع معالجة الصور والفيديو، يمكنك اختياريًا تثبيت إما CUDA أو CUDA+cuDNN. سيعمل Darknet على الاستفادة من وحدة معالجة الرسومات (GPU) الخاصة بك إذا كانت متوفرة.
1. تثبيت كودا:
- قم بتنزيل وتثبيت CUDA من https://developer.nvidia.com/cuda-downloads.
- تأكد من أنه يمكنك تنفيذ nvcc و nvidia-smi. قد تحتاج إلى تعديل متغير PATH الخاص بك.
2. تثبيت cuDNN:
- قم بتنزيل وتثبيت cuDNN من https://developer.nvidia.com/rdp/cudnn-download أو https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#cudnn-package-manager- نظرة عامة على التثبيت.
إذا قمت بتثبيت CUDA أو CUDA+cuDNN بعد الإعداد الأولي أو ترقية برنامج NVIDIA:
1. حذف CMakeCache.txt:
- قم بإزالة ملف CMakeCache.txt من دليل إنشاء Darknet الخاص بك لإجبار CMake على إعادة اكتشاف كافة التبعيات.
2. إعادة بناء الشبكة المظلمة:
- كرر cmake وقم بالخطوات المذكورة أعلاه.
ملاحظة: تفترض هذه التعليمات Ubuntu 22.04، ولكن يمكن تكييفها لتوزيعات أخرى.
المستخدمون المتقدمون:
لإنشاء ملف تثبيت RPM بدلاً من ملف DEB، قم بتعديل الأسطر ذات الصلة في CM_package.cmake. قبل تشغيل حزمة make -j4، قم بتحديث هذين السطرين:
`كماكي
مجموعة (CPACK_GENERATOR "DEB")
مجموعة (CPACK_GENERATOR "RPM")
`
بالنسبة للتوزيعات مثل Centos وOpenSUSE، اضبط الخطوط على:
`كماكي
مجموعة (CPACK_GENERATOR "DEB")
مجموعة (CPACK_GENERATOR "RPM")
`
بعد البناء، قم بتثبيت الحزمة باستخدام مدير الحزم الخاص بالتوزيع الخاص بك. على سبيل المثال، في الأنظمة المستندة إلى دبيان:
``باش
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.
التأكيد: قم بتشغيل إصدار darknet في جهازك الطرفي لتأكيد تثبيت Darknet بنجاح.
طريقة ويندوز CMake
تعليمات إنشاء Windows (بافتراض 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. افتح موجه أوامر المطور:
- افتح قائمة "ابدأ في Windows" وحدد "موجه أوامر المطور لـ VS 2022". لا تستخدم PowerShell لهذه الخطوات.
4. تثبيت مايكروسوفت VCPKG:
``باش
مؤتمر نزع السلاح ج:
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
`
5. اختياري: تثبيت CUDA وcuDNN:
- قم بتثبيت إما CUDA أو CUDA+cuDNN لتسريع GPU.
- اتبع نفس الخطوات كما في تعليمات Linux.
6. استنساخ 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
`
إذا واجهت أخطاء بشأن فقدان ملفات CUDA أو cuDNN DLLs (على سبيل المثال، cublas64_12.dll):
1. انسخ ملفات CUDA DLL:
- انسخ ملفات CUDA .dll يدويًا إلى نفس دليل الإخراج مثل Darknet.exe. على سبيل المثال:
``باش
انسخ "C: Program FilesNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll" src-cliRelease
`
2. أعد تشغيل msbuild.exe:
- قم بتنفيذ الأمر msbuild.exe الأخير مرة أخرى لإنشاء حزمة تثبيت NSIS.
المستخدمون المتقدمون:
بدلاً من موجه أوامر المطور، يمكنك استخدام موجه الأوامر العادي أو SSH وتشغيل "Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat".
يقوم الأمر cmake بإنشاء ملف حل Visual Studio (Darknet.sln). إذا كنت تفضل استخدام Visual Studio GUI، فقم بتحميل المشروع بدلاً من الاعتماد على أدوات سطر الأوامر.
التأكيد: قم بتشغيل الإصدار C:srcDarknetbuildsrc-cliReleasedarknet.exe للتحقق من التثبيت.
التثبيت باستخدام معالج NSIS:
قم بتنفيذ معالج تثبيت NSIS الموجود في دليل البناء (على سبيل المثال، darknet-VERSION.exe). هذا سوف:
- إنشاء دليل Darknet (على سبيل المثال، C:Program FilesDarknet).
- قم بتثبيت تطبيق CLI وdarknet.exe ونماذج التطبيقات الأخرى.
- قم بتثبيت ملفات .dll الضرورية التابعة لجهات خارجية (على سبيل المثال، من OpenCV).
- قم بتثبيت ملفات Darknet .dll و.lib و.h لاستخدامها في التطبيقات الأخرى.
- تثبيت ملفات القالب .cfg.
التأكيد: بعد التثبيت، قم بتشغيل إصدار C:Program FilesDarknetbindarknet.exe للتأكد من أن Darknet جاهز.
باستخدام دارك نت
سطر الأوامر
فيما يلي قائمة جزئية بالأوامر التي يدعمها Darknet.
بالإضافة إلى واجهة سطر الأوامر الخاصة بـ Darknet، فكر في واجهة سطر الأوامر لمشروع DarkHelp، التي تقدم واجهة سطر أوامر بديلة مع ميزات متقدمة غير متوفرة مباشرة في Darknet. يمكنك استخدام كلا CLIs معًا.
بالنسبة لمعظم الأوامر، ستحتاج إلى ملف .weights بالإضافة إلى ملفات .names و.cfg المقابلة له. يمكنك إما تدريب شبكتك الخاصة (موصى به بشدة) أو تنزيل الشبكات المدربة مسبقًا والمتوفرة مجانًا عبر الإنترنت. تشمل الأمثلة ما يلي:
LEGO Gears (الكشف عن الأشياء في الصور)
Rolodex (الكشف عن النص في الصور)
MSCOCO (الكشف القياسي عن الكائنات من فئة 80)
أوامر Darknet CLI الشائعة:
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. اختيار GPU:
- الإصدار الثاني:
``باش
عرض تجريبي لكاشف الشبكة المظلمة Animals.data Animals.cfg Animal_best.weights -i 1 test.mp4
`
10. تقييم دقة الشبكة:
- حساب الخريطة:
``باش
خريطة كاشف الانترنت المظلم القيادة.بيانات القيادة.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.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
`
- حساب المراسي:
``باش
كاشف الشبكة المظلمة calcanchors Animals.data -عدد_العناقيد 6 -العرض 320 -الارتفاع 256
`
11. تدريب شبكة جديدة:
``باش
كاشف الشبكة المظلمة -خريطة -dont_show تدريب الحيوانات.بيانات الحيوانات.cfg
`
تمرين
الروابط الأساسية للأسئلة الشائعة حول Darknet/YOLO:
إعداد الملفات والدلائل
اختيار ملف التكوين الصحيح
تدريب أمر شبكة مخصص
للحصول على تعليقات توضيحية وتدريب سلس، يعمل DarkMark على تبسيط العملية عن طريق إنشاء جميع ملفات Darknet الضرورية تلقائيًا. يوصى بشدة باستخدام DarkMark لتدريب شبكة عصبية جديدة.
إعداد التدريب اليدوي:
1. إنشاء دليل المشروع:
- على سبيل المثال، قم بإنشاء دليل باسم ~/nn/animals/ لاكتشاف الحيوانات.
2. انسخ ملف التكوين:
- انسخ ملف تكوين Darknet المناسب كقالب (على سبيل المثال، cfg/yolov4-tiny.cfg) إلى دليل المشروع الخاص بك. يؤدي هذا إلى إنشاء ~/nn/animals/animals.cfg.
3. إنشاء ملف أسماء الحيوانات:
- قم بإنشاء ملف نصي باسم Animals.names في نفس الدليل.
- قم بإدراج الفئات التي تريدها، واحدة في كل سطر، دون أسطر أو تعليقات فارغة. على سبيل المثال:
`
كلب
قطة
طائر
حصان
`
4. إنشاء ملف Animals.data:
- قم بإنشاء ملف نصي باسم Animals.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
`
5. إنشاء دليل مجموعة البيانات:
- قم بإنشاء دليل (على سبيل المثال، ~/nn/animals/dataset) لتخزين الصور والتعليقات التوضيحية. تتطلب كل صورة ملف .txt مطابق يحدد التعليقات التوضيحية الخاصة بها. التنسيق محدد ولا يمكن إنشاؤه يدويًا. استخدم DarkMark أو برنامج مشابه لإضافة تعليقات توضيحية إلى الصور. تم شرح تنسيق التعليقات التوضيحية YOLO في الأسئلة الشائعة حول Darknet/YOLO.
6. إنشاء ملفات التدريب والتحقق من الصحة:
- قم بإنشاء الملفات Animaltrain.txt وAnimalsvalid.txt المذكورة في ملف البيانات. تسرد هذه الملفات جميع الصور للتدريب والتحقق من الصحة، على التوالي، صورة واحدة في كل سطر. يمكن أن تكون المسارات نسبية أو مطلقة.
7. تكوين ملف .cfg:
- افتح ملف .cfg باستخدام محرر النصوص.
- التأكد من الدفعة=64.
- ضبط التقسيمات الفرعية بناءً على أبعاد الشبكة وذاكرة وحدة معالجة الرسومات. ابدأ بالأقسام الفرعية = 1. ارجع إلى الأسئلة الشائعة حول Darknet/YOLO لمعرفة القيم البديلة.
- اضبط max_batches على 2000 * عدد الفئات (على سبيل المثال، 8000 لأربعة فئات).
- اضبط الخطوات على 80% و90% من الدفعات القصوى (على سبيل المثال، 6400,7200 للدفعات القصوى = 8000).
- قم بتكوين العرض والارتفاع (أبعاد الشبكة) باستخدام الإرشادات الواردة في الأسئلة الشائعة الخاصة بـ Darknet/YOLO.
- استبدل الفئات=... بعدد الفئات من ملف الأسماء الخاص بك (على سبيل المثال، الفئات=4).
- تعديل عوامل التصفية=... في القسم [التلافيفي] قبل كل قسم [yolo]. استخدم الصيغة (numberofclasses + 5) * 3 (على سبيل المثال، المرشحات = 27 لـ 4 فئات).
8. ابدأ التدريب:
- انتقل إلى دليل مشروعك:
``باش
مؤتمر نزع السلاح ~/ن/الحيوانات/
`
- تشغيل أمر التدريب:
``باش
كاشف الشبكة المظلمة -خريطة -dont_show تدريب الحيوانات.بيانات الحيوانات.cfg
`
9. مراقبة التقدم:
- سيتم حفظ أفضل الأوزان باسم Animal_best.weights.
- تتبع تقدم التدريب من خلال عرض ملف Chart.png.
- راجع الأسئلة الشائعة حول Darknet/YOLO للحصول على معلمات تدريب إضافية.
10. التدريب المطول:
- للحصول على مخرجات أكثر تفصيلاً أثناء التدريب، قم بتضمين المعلمة --verbose :
``باش
كاشف الشبكة المظلمة -خريطة -dont_show --قطار مطول للحيوانات.بيانات الحيوانات.cfg
`
أدوات وروابط أخرى
DarkMark: لإدارة مشاريع Darknet/YOLO، والتعليق على الصور، والتحقق من التعليقات التوضيحية، وإنشاء ملفات التدريب.
DarkHelp: يوفر واجهة سطر أوامر (CLI) بديلة قوية لـ Darknet، وتجانب الصور، وتتبع الكائنات في مقاطع الفيديو، وواجهة برمجة تطبيقات C++ شاملة للتطبيقات التجارية.
الأسئلة الشائعة حول Darknet/YOLO: مورد قيم للإجابة على أسئلتك.
قناة Stéphane على YouTube: العديد من البرامج التعليمية وأمثلة مقاطع الفيديو.
Darknet/YOLO Discord Server: انضم إلى المجتمع للحصول على الدعم والمناقشات.
خريطة الطريق
آخر تحديث: 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 الأصلية غير المدعومة).
أجهزة Jetson Orin فعالة.
تم إصلاح واجهة برمجة تطبيقات Python في الإصدار 3.
دعم Python المحسن (البحث عن مطوري Python للمساهمة).
الأهداف قصيرة المدى:
استبدل printf() بـ std::cout (قيد التقدم).
قم بإعادة النظر في دعم كاميرات Zed القديمة.
تحسين وضمان الاتساق في تحليل سطر الأوامر (قيد التقدم).
الأهداف المتوسطة المدى:
قم بإزالة جميع أكواد char* واستبدلها بـ std::string.
إظهار التحذيرات ومعالجة تحذيرات المترجم (قيد التقدم).
تحسين استخدام cv::Mat بدلاً من بنية صورة C المخصصة (قيد التقدم).
استبدل وظيفة القائمة القديمة بـ std::vector أو std::list.
إصلاح الدعم للصور ذات التدرج الرمادي ذات القناة الواحدة.
إضافة دعم لصور قناة N (N > 3).
متابعة عملية التنظيف المستمرة للتعليمات البرمجية (قيد التقدم).
الأهداف طويلة المدى:
حل مشكلات CUDA/CUDNN عبر جميع وحدات معالجة الرسومات.
أعد كتابة كود CUDA + cuDNN.
اكتشف الدعم لوحدات معالجة الرسومات غير التابعة لـ NVIDIA.
تنفيذ الصناديق المحيطة المدورة أو دعم "الزاوية".
إضافة نقاط المفاتيح / الهياكل العظمية.
تنفيذ الخرائط الحرارية (قيد التنفيذ).
تقديم وظيفة التجزئة.