إطار عمل Darknet للكشف عن الكائنات وYOLO
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، مما يعني أنه يتم التقاط كل إطار فيديو بواسطة Darknet في 1 مللي ثانية أو أقل. .
إذا كنت بحاجة إلى مساعدة أو تريد مناقشة Darknet/YOLO، يرجى الانضمام إلى خادم Darknet/YOLO Discord: https://discord.gg/zSq8rtW
يمكن تشغيل إصدار وحدة المعالجة المركزية من Darknet/YOLO على أجهزة بسيطة مثل Raspberry Pi والخوادم السحابية والتعاونية وأجهزة الكمبيوتر المكتبية وأجهزة الكمبيوتر المحمولة ومعدات التدريب المتطورة. يتطلب إصدار 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".
الهدف هو محاولة كسر الوظائف الحالية بأقل قدر ممكن مع التعرف على قاعدة التعليمات البرمجية.
1. أعد كتابة خطوات الإنشاء حتى يكون لدينا طريقة موحدة للبناء على نظامي التشغيل Windows وLinux باستخدام CMake.
2. قم بتحويل قاعدة التعليمات البرمجية لاستخدام مترجم C++.
3. تحسين Chart.png أثناء التدريب.
4. إصلاحات الأخطاء والتحسينات المتعلقة بالأداء، والتي تتعلق بشكل أساسي بتقليل الوقت اللازم لتدريب الشبكة.
الفرع الأخير من قاعدة التعليمات البرمجية هو الإصدار 2.1 في الفرع v2.
تبدأ المرحلة التالية من التطوير في منتصف عام 2024 وسيتم إصدارها في أكتوبر 2024. يقوم أمر الإصدار الآن بإرجاع 3.x "JAZZ".
يمكنك دائمًا التحقق من فرع v2 السابق إذا كنت بحاجة إلى تشغيل الأمر التالي. يرجى إعلامنا حتى نتمكن من التحقيق في إضافة أي أوامر مفقودة.
1. تمت إزالة العديد من الأوامر القديمة والتي لم يتم الحفاظ عليها.
2. العديد من تحسينات الأداء، بما في ذلك عمليات التدريب والاستدلال.
3. تم تعديل واجهة برمجة تطبيقات C التقليدية؛ وستحتاج التطبيقات التي تستخدم واجهة برمجة تطبيقات Darknet الأصلية إلى إجراء تعديلات طفيفة: https://darknetcv.ai/api/api.html
4. واجهة برمجة تطبيقات Darknet V3 C وC++ الجديدة: https://darknetcv.ai/api/api.html
5. التطبيقات الجديدة ونموذج التعليمات البرمجية في أمثلة src: https://darknetcv.ai/api/files.html
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، تمامًا مثلما لا تحتاج إلى أن تكون ميكانيكيًا لقيادة السيارة.
جوجل كولاب
تعليمات 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 git clone https://github.com/hank-ai/darknetcd darknet mkdir buildcd build cmake -DCMAKEBUILDTYPE=Release .. make -j4 package 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 إلى:
``باش
مجموعة (CPACKGENERATOR "DEB") مجموعة (CPACKGENERATOR "RPM")
`
لتثبيت حزمة التثبيت، بمجرد إنشائها، استخدم مدير الحزم المعتاد للتوزيع الخاص بك. على سبيل المثال، في نظام يستند إلى دبيان مثل Ubuntu:
``باش
sudo dpkg -i darknet-2.0.1-Linux.deb
`
سيؤدي تثبيت حزمة .deb إلى نسخ الملفات التالية:
1. /usr/bin/darknet هو ملف Darknet المعتاد القابل للتنفيذ. قم بتشغيل إصدار darknet من واجهة سطر الأوامر (CLI) للتأكد من تثبيته بشكل صحيح.
2. /usr/include/darknet.h هو Darknet API لمطوري C وC++ وPython.
3. يحتوي /usr/include/darknet_version.h على معلومات الإصدار للمطورين.
4. /usr/lib/libdarknet.so هي مكتبة لمطوري C وC++ وPython.
5. /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++:
1. انقر فوق قائمة "ابدأ" في نظام التشغيل Windows وقم بتشغيل برنامج إعداد Visual Studio.
2. انقر فوق تحرير.
3. اختر تطوير سطح المكتب باستخدام C++.
4. انقر فوق "تحرير" في الزاوية اليمنى السفلية، ثم انقر فوق "نعم".
بمجرد تنزيل كل شيء وتثبيته، انقر فوق قائمة ابدأ في Windows مرة أخرى وحدد Developer Command Prompt for VS 2022. لا تستخدم PowerShell لتنفيذ هذه الخطوات، فسوف تواجه مشكلات!
المستخدمين المتقدمين:
بدلاً من تشغيل موجه أوامر المطور، يمكنك استخدام موجه أوامر عادي أو تسجيل الدخول إلى الجهاز باستخدام ssh وتشغيل "Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat" يدويًا.
بمجرد تشغيل موجه أوامر المطور كما هو موضح أعلاه (وليس PowerShell!)، قم بتشغيل الأمر التالي لتثبيت Microsoft VCPKG ثم استخدمه لإنشاء OpenCV:
``باش
cd c:mkdir c:srccd c:src git clone https://github.com/microsoft/vcpkgcd vcpkg bootstrap-vcpkg.bat .vcpkg.exe دمج تثبيت .vcpkg.exe دمج powershell.vcpkg.exe تثبيت opencv[مساهمة،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 والتبعيات الأخرى:
``باش
cd c:src git clone https://github.com/hank-ai/darknet.gitcd darknetmkdir buildcd build cmake -DCMAKEBUILDTYPE=Release -DCMAKETOOLCHAINFILE=C:/src/vcpkg/scripts/buildsystems/vcpkg.cmake .. msbuild. إملف تنفيذى / الخاصية: النظام الأساسي = x64؛ التكوين = الإصدار / الهدف: البناء -maxCpuCount - اللفظ: عادي -detailedSummary darknet.sln msbuild.exe / الخاصية: النظام الأساسي = 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 إلى:
1. قم بإنشاء دليل باسم Darknet، على سبيل المثال C:Program FilesDarknet.
2. قم بتثبيت تطبيق CLI وdarknet.exe ونماذج التطبيقات الأخرى.
3. قم بتثبيت ملفات .dll المطلوبة من جهة خارجية، مثل تلك الموجودة في OpenCV.
4. قم بتثبيت ملفات Darknet .dll و.lib و.h الضرورية لاستخدام darknet.dll من تطبيق آخر.
5. قم بتثبيت ملف القالب .cfg.
لقد انتهيت الآن! بعد اكتمال معالج التثبيت، سيتم تثبيت Darknet في C:Program FilesDarknet. قم بتشغيل الأمر التالي للاختبار: إصدار C:Program FilesDarknetbindarknet.exe.
إذا لم يكن لديك C:/Program Files/darknet/bin/darknet.exe، فأنت لم تقم بتثبيته، بل قمت بإنشائه فقط! تأكد من إكمال كل لوحة من معالج تثبيت NSIS كما هو موضح في الخطوات السابقة.
باستخدام دارك نت
سطر الأوامر
ما يلي ليس قائمة كاملة بجميع الأوامر التي يدعمها Darknet.
بالإضافة إلى واجهة سطر الأوامر الخاصة بـ Darknet، يرجى ملاحظة واجهة سطر الأوامر لمشروع DarkHelp، والتي توفر بديلاً لـ Darknet/YOLO CLI. يحتوي DarkHelp CLI أيضًا على العديد من الميزات المتقدمة غير المتوفرة مباشرة في Darknet. يمكنك استخدام Darknet CLI وDarkHelp CLI معًا، فهما لا يستبعد أحدهما الآخر.
بالنسبة لمعظم الأوامر الموضحة أدناه، تحتاج إلى ملف .weights مع ملفات .names و.cfg المقابلة. يمكنك إما تدريب شبكتك الخاصة (نوصي بشدة!) أو تنزيل شبكة عصبية من الإنترنت تم تدريبها من قبل آخرين وهي متاحة مجانًا. تتضمن أمثلة مجموعات بيانات ما قبل التدريب ما يلي:
1. LEGO Gears (البحث عن الأشياء في الصور)
2. Rolodex (ابحث عن النص في الصورة)
3. 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 Animal_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 Animal_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
`
التشغيل على وحدة معالجة رسومات محددة:
الإصدار 2:
``باش
عرض تجريبي لكاشف الشبكة المظلمة Animals.data Animals.cfg Animal_best.weights -i 1 test.mp4
`
للتحقق من دقة الشبكة العصبية:
``باش
خريطة كاشف darknet القيادة. بيانات القيادة.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
`
من الأفضل إجراء إعادة حساب نقاط الربط في DarkMark حيث سيتم تشغيلها 100 مرة متتالية واختيار أفضل نقطة ربط من جميع نقاط الربط المحسوبة. ولكن إذا كنت تريد تشغيل إصدار أقدم في Darknet، فقم بما يلي:
``باش
كاشف الشبكة المظلمة calcanchors Animals.data -عدد_العناقيد 6 -العرض 320 -الارتفاع 256
`
تدريب شبكة جديدة:
``باش
كاشف الشبكة المظلمة -map -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
القطار = /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 الخاص بك.
-تأكد من الدفعة=64.
- الاهتمام بالأقسام. اعتمادًا على حجم الشبكة وحجم الذاكرة المتوفرة على وحدة معالجة الرسومات، قد تحتاج إلى زيادة التقسيمات الفرعية. القيمة المثالية هي 1، لذا ابدأ بها. إذا لم يناسبك الخيار 1، فراجع الأسئلة الشائعة حول Darknet/YOLO.
- ملاحظة maxbatches=.... عند البدء، القيمة الجيدة هي 2000 لعدد الفئات. في هذا المثال لدينا 4 حيوانات، إذن 42000 = 8000. هذا يعني أننا سنستخدم maxbatches=8000.
- ملاحظة الخطوات=.... يجب ضبط هذا على 80% و90% من الدفعات القصوى. في هذا المثال، سوف نستخدم الخطوات=6400,7200 حيث تم تعيين maxbatches على 8000.
- لاحظ أن العرض=... والارتفاع=.... هذه أبعاد الشبكة. تشرح الأسئلة الشائعة لـ Darknet/YOLO كيفية حساب الحجم الأمثل للاستخدام.
- في كل قسم [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
31. هناك حاجة إلى دعم أفضل لبايثون (هل يريد أي من مطوري بايثون المساعدة؟)
أهداف قصيرة المدى
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. سبليت