Darknet Object Detection Framework وYOLO
Downcodes小编قائمة محدثة لتتبعات BitTorrent العامة
القوائم
يتم تحديث هذه القوائم تلقائيا كل يوم. آخر تحديث 2024/10/31:
هل تواجه مشاكل DNS؟ تحتوي هذه القوائم على نفس أدوات التتبع ولكن مع عناوين IP بدلاً من النطاقات:
ملحوظات
يساهم
اتصال
نجوسانج [@] هوتميل [.es]
أدوات الطرف الثالث
أدوات الطرف الثالث عبر الإنترنت
مثال:
ترخيص أباتشي-2.0
جدول المحتويات
Darknet Object Detection Framework وYOLO
أوراق
معلومات عامة
نسخة دارك نت
أوزان MSCOCO المدربة مسبقًا
مبنى
جوجل كولاب
طريقة لينكس CMake
طريقة ويندوز CMake
باستخدام دارك نت
سطر الأوامر
تمرين
أدوات وروابط أخرى
خريطة الطريق
أهداف قصيرة المدى
أهداف منتصف المدة
أهداف طويلة المدى
Darknet Object Detection Framework وYOLO
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 إذا كنت بحاجة إلى مساعدة أو ترغب في مناقشة Darknet/YOLO: https://discord.gg/zSq8rtW
يعمل إصدار وحدة المعالجة المركزية من Darknet/YOLO على أجهزة مختلفة، بما في ذلك Raspberry Pi والخوادم السحابية وColab وأجهزة الكمبيوتر المكتبية وأجهزة الكمبيوتر المحمولة وأجهزة التدريب المتطورة. يتطلب إصدار GPU وحدة معالجة رسومات NVIDIA قادرة على CUDA.
من المعروف أن Darknet/YOLO متوافق مع Linux وWindows وMac. راجع تعليمات البناء أدناه للحصول على التفاصيل.
نسخة دارك نت
وكانت أداة Darknet الأصلية التي طورها جوزيف ريدمون بين عامي 2013 و2017 تفتقر إلى رقم الإصدار. نحن نعتبر هذا الإصدار 0.x.
مستودع Darknet الشهير اللاحق، الذي يحتفظ به Alexey Bochkovskiy من 2017 إلى 2021، لم يكن لديه أيضًا رقم إصدار. نحن نعتبر هذا الإصدار 1.x.
كان مستودع Darknet الذي ترعاه Hank.ai ويديره Stéphane Charette منذ عام 2023 هو أول مستودع يتضمن أمر الإصدار. أعادت الإصدار 2.x "OAK" من عام 2023 حتى أواخر عام 2024.
كان الهدف الأساسي هو تقليل تعطيل الوظائف الحالية مع التعرف على قاعدة التعليمات البرمجية.
التغييرات الرئيسية:
البناء الموحد: إعادة كتابة خطوات البناء لإنشاء طريقة واحدة ومتسقة باستخدام CMake لكل من Windows وLinux.
ترحيل C++: تحويل قاعدة التعليمات البرمجية لاستخدام مترجم C++.
الرسم البياني المحسّن: تم تحسين تصور Chart.png أثناء التدريب.
إصلاحات الأخطاء والتحسينات: تمت معالجة العديد من الأخطاء وتنفيذ تحسينات الأداء، مع التركيز في المقام الأول على تقليل وقت التدريب.
الفرع الأخير من قاعدة التعليمات البرمجية هذه هو الإصدار 2.1، الموجود في الفرع v2.
بدأت المرحلة التالية من التطوير في منتصف عام 2024 وبلغت ذروتها بإصدار الإصدار 3.x "JAZZ" في أكتوبر 2024.
Darknet V3 ("Jazz") التحسينات الرئيسية:
الأداء: تحسينات كبيرة في الأداء أثناء التدريب والاستدلال.
تغييرات واجهة برمجة التطبيقات: تم تعديل واجهة برمجة تطبيقات 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 السابق إذا كنت بحاجة إلى تنفيذ أوامر محددة. يرجى إبلاغنا إذا واجهت أي أوامر مفقودة حتى نتمكن من استكشاف إمكانية دمجها مرة أخرى.
عمليات الإزالة الرئيسية لـ Darknet V3 ("Jazz"):
الأوامر القديمة: تمت إزالة العديد من الأوامر القديمة والتي لم تتم صيانتها.
أوزان MSCOCO المدربة مسبقًا
للراحة، تم تدريب العديد من الإصدارات الشائعة من YOLO مسبقًا على مجموعة بيانات MSCOCO. تشمل مجموعة البيانات هذه 80 فئة، والتي يمكن العثور عليها في الملف النصي cfg/coco.names.
بخلاف MSCOCO، تتوفر العديد من مجموعات البيانات الأبسط والأوزان المدربة مسبقًا لاختبار 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، تمامًا كما لا تحتاج إلى أن تكون ميكانيكيًا لقيادة السيارة.
جوجل كولاب
تعكس تعليمات Google Colab تعليمات Linux. تعرض العديد من دفاتر ملاحظات Jupyter مهامًا مختلفة، مثل تدريب شبكة جديدة.
استكشف دفاتر الملاحظات في الدليل الفرعي colab أو اتبع تعليمات Linux المتوفرة أدناه.
طريقة لينكس CMake
البرنامج التعليمي لبناء Darknet لنظام التشغيل Linux
اختياري: إذا كان لديك وحدة معالجة رسومات NVIDIA حديثة، فقم بتثبيت إما CUDA أو CUDA+cuDNN في هذه المرحلة. إذا تم تثبيته، فسوف يستفيد Darknet من وحدة معالجة الرسومات لديك لتسريع معالجة الصور (والفيديو).
يجب عليك حذف ملف CMakeCache.txt من دليل إنشاء Darknet الخاص بك لإجبار CMake على إعادة اكتشاف كافة الملفات المطلوبة.
تذكر إعادة بناء Darknet.
يمكن أن يعمل Darknet بدونها، ولكن CUDA أو CUDA+cuDNN ضروريان إذا كنت تنوي تدريب شبكة مخصصة.
1. قم بتثبيت CUDA: قم بزيارة 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#cudnn-package-manager- نظرة عامة على التثبيت لتنزيل وتثبيت cuDNN.
بعد تثبيت CUDA، تأكد من أنه يمكنك تنفيذ nvcc وnvidia-smi. قد تحتاج إلى تعديل متغير PATH الخاص بك.
إذا قمت بتثبيت CUDA أو CUDA+cuDNN لاحقًا، أو إذا قمت بالترقية إلى إصدار أحدث من برنامج NVIDIA:
ترقية CMake: إذا كان إصدار CMake لديك قديمًا، فقم بترقيته باستخدام الأوامر التالية:
``باش
sudo apt-get purge cmake
Sudo snap install cmake --classic
`
إعادة تشغيل Shell: إذا كنت تستخدم bash كصدفة أوامر، فأعد تشغيل الصدفة. في حالة استخدام السمك، يجب تحديث المسار تلقائيًا.
بناء الشبكة المظلمة:
``باش
sudo apt-get install build-essential git libopencv-dev cmake
mkdir ~/srccd ~/src
استنساخ بوابة https://github.com/hank-ai/darknetcd darknet
بناء mkdir buildcd
cmake -DCMAKEBUILDTYPE=إطلاق ..
جعل -j4
طَرد
sudo dpkg -i darknet-VERSION.deb
`
المستخدمون المتقدمون:
تثبيت RPM: لإنشاء ملف تثبيت RPM بدلاً من ملف DEB، قم بتعديل الأسطر ذات الصلة في CM_package.cmake. قبل تنفيذ حزمة make -j4، قم بتحرير هذه السطور:
`كماكي
مجموعة (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 القياسي القابل للتنفيذ. قم بتشغيل إصدار 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، فقد قمت ببناء Darknet فقط، ولم تقم بتثبيته. تأكد من تثبيت ملف .deb أو .rpm كما هو موضح أعلاه.
طريقة ويندوز CMake
تفترض هذه التعليمات تثبيتًا جديدًا لنظام التشغيل Windows 11 22H2.
1. تثبيت المتطلبات الأساسية: افتح موجه أوامر cmd.exe القياسي وقم بتنفيذ هذه الأوامر:
``باش
Winget تثبيت Git.Git
تثبيت Winget Kitware.CMake
تثبيت Winget nsis.nsis
تثبيت Winget Microsoft.VisualStudio.2022.Community
`
2. تعديل Visual Studio: قم بتكوين Visual Studio لدعم تطبيقات C++:
انقر على قائمة "ابدأ في Windows" وقم بتشغيل "Visual Studio Installer".
حدد "تعديل".
اختر "تطوير سطح المكتب باستخدام C++".
انقر فوق "تعديل" في الزاوية اليمنى السفلية، ثم انقر فوق "نعم".
3. موجه أوامر المطور: بعد اكتمال التثبيت، انقر فوق قائمة "ابدأ في Windows" وحدد "موجه أوامر المطور لـ VS 2022". لا تستخدم PowerShell في هذه الخطوات، لأنها قد تسبب مشاكل!
المستخدمون المتقدمون:
بدلاً من استخدام موجه أوامر المطور، يمكنك اختيار موجه أوامر عادي أو الاتصال عبر SSH وتنفيذ "Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat" يدويًا.
4. تثبيت Microsoft VCPKG: قم بتنفيذ الأوامر التالية في موجه أوامر المطور (وليس PowerShell) لتثبيت Microsoft VCPKG، والذي سيتم استخدامه لإنشاء OpenCV:
``باش
مؤتمر نزع السلاح ج:
مكدير ج: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
`
كن صبورًا أثناء الخطوة الأخيرة حيث قد يستغرق إكمالها وقتًا طويلاً. أنها تنطوي على تحميل وبناء العديد من المكونات.
المستخدمون المتقدمون:
لاحظ أن هناك العديد من الوحدات الاختيارية التي يمكنك تضمينها عند إنشاء 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، قم بفك ضغط دلائل الحاوية والتضمين والليب ونسخها إلى C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/[version]/. قد تحتاج إلى الكتابة فوق بعض الملفات.
إذا قمت بتثبيت CUDA أو CUDA+cuDNN في وقت لاحق، أو قمت بالترقية إلى إصدار أحدث من برنامج NVIDIA:
يجب تثبيت CUDA بعد Visual Studio. إذا قمت بترقية Visual Studio، تذكر إعادة تثبيت CUDA.
5. استنساخ وبناء Darknet: بمجرد الانتهاء من الخطوات السابقة بنجاح، قم باستنساخ Darknet وإنشائه. خلال هذه الخطوة، حدد موقع VCPKG لـ CMake لتحديد موقع OpenCV والتبعيات الأخرى:
``باش
مؤتمر نزع السلاح ج: سرك
استنساخ بوابة 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)، فانسخ ملفات 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 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 مفقودًا، فهذا يعني أن Darknet تم إنشاؤه فقط، ولم يتم تثبيته. تأكد من إكمال كل لوحة من معالج تثبيت NSIS من الخطوة السابقة.
باستخدام دارك نت
سطر الأوامر
ما يلي ليس قائمة شاملة لجميع الأوامر التي يدعمها Darknet.
بالإضافة إلى واجهة سطر الأوامر الخاصة بـ Darknet، تذكر واجهة سطر الأوامر لمشروع DarkHelp، والتي تقدم واجهة سطر أوامر بديلة لـ Darknet/YOLO. يتضمن DarkHelp CLI العديد من الميزات المتقدمة التي لا يمكن الوصول إليها مباشرة في 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 الدقة 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
`
للتحقق من الدقة 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 الضرورية. يوصى بشدة باستخدام DarkMark لتدريب الشبكات العصبية الجديدة.
إذا كنت تفضل الإعداد اليدوي للملفات للتدريب المخصص على الشبكة:
1. إنشاء مجلد: قم بإنشاء مجلد جديد لتخزين الملفات. في هذا المثال، سنقوم بإنشاء شبكة عصبية لاكتشاف الحيوانات؛ لذلك، يتم إنشاء الدليل التالي: ~/nn/animals/.
2. نسخ ملف التكوين: انسخ ملف تكوين Darknet الذي ترغب في استخدامه كقالب. على سبيل المثال، راجع cfg/yolov4-tiny.cfg. ضعه في المجلد الذي تم إنشاؤه. في هذا المثال، لدينا الآن ~/nn/animals/animals.cfg.
3. إنشاء أسماء الحيوانات: قم بإنشاء ملف نصي باسم أسماء الحيوانات في نفس المجلد مثل ملف التكوين. يحتوي هذا المثال الآن على ~/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=..... قيمة البداية الجيدة هي 2000 ضعف عدد الفئات. في هذا المثال، لدينا 4 حيوانات، لذا 4 * 2000 = 8000، مما يعني أن الحد الأقصى للدفعات = 8000.
لاحظ الخطوات=..... اضبط هذا على 80% و90% من الدفعات القصوى. في هذا المثال، مع تعيين maxbatches على 8000، سنستخدم الخطوات=6400,7200.
لاحظ العرض=... والارتفاع=..... هذه هي أبعاد الشبكة. تشرح الأسئلة الشائعة لـ Darknet/YOLO كيفية تحديد الحجم الأفضل.
ابحث عن كافة تكرارات السطرclasses=... وقم بتعديله بعدد الفئات في ملف .names الخاص بك. في هذا المثال، سنستخدم الفئات=4.
ابحث عن كافة تكرارات مرشحات الخط=... في القسم [التلافيفي] الذي يسبق كل قسم [yolo]. يجب أن تكون القيمة (numberofclasses + 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، وVisualStudio على Windows).
4. تم إصلاح بناء Windows.
5. دعم بايثون ثابت.
6. بناء مكتبة Darknet.
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.
30. من غير المرجح أن يتم إصلاح أجهزة Jetson الأصلية نظرًا لأن NVIDIA لم تعد تدعمها (لا يوجد مترجم C++ 17).
31. أجهزة Jetson Orin الجديدة تعمل بكامل طاقتها.
32. تم إصلاح واجهة برمجة تطبيقات Python في الإصدار 3.
الأهداف قصيرة المدى:
1. استبدل printf() بـ std::cout (قيد التقدم).
2. قم بإعادة النظر في دعم كاميرا Zed القديمة.
3. تحسين وتعزيز اتساق تحليل سطر الأوامر (قيد التقدم).
الأهداف المتوسطة المدى:
1. قم بإزالة كافة رموز char* واستبدلها بـ std::string.
2. إزالة التحذيرات المخفية وتنظيف تحذيرات المترجم (قيد التقدم).
3. استخدام أفضل للسيرة الذاتية::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. تنفيذ التجزئة.