المستودع الرئيسي لـ Data.gov
هذا هو المستودع الرئيسي لمنصة Data.gov. يتم استخدامه في المقام الأول لتتبع عمل الفريق، ولكن أيضًا لتخزين التعليمات البرمجية على مستوى datagov (قوالب إجراءات GitHub، والخروج، وما إلى ذلك).
إذا كنت تبحث عن وثائق لبيئات cloud.gov، فارجع إلى مستودعات التطبيقات.
إجراءات وقوالب جيثب
تمت إعادة هيكلة العديد من إجراءات GitHub لاستخدام القوالب الموجودة في هذا المستودع. يمكنك العثور على هذه القوالب هنا وأمثلة لاستدعائها في المخزون والكتالوج.
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. وهذا يعني أن كل إطار فيديو تتم معالجته في أقل من 1 مللي ثانية.
انضم إلى خادم Darknet/YOLO Discord للمساعدة والمناقشة: https://discord.gg/zSq8rtW
يمكن تشغيل إصدار وحدة المعالجة المركزية من Darknet/YOLO على أجهزة مختلفة، بما في ذلك Raspberry Pi والخوادم السحابية وcolab وأجهزة الكمبيوتر المكتبية وأجهزة الكمبيوتر المحمولة وأجهزة التدريب المتطورة. يتطلب إصدار GPU وحدة معالجة رسومات NVIDIA قادرة على تشغيل CUDA.
من المعروف أن Darknet/YOLO يعمل على أنظمة Linux وWindows وMac. يتم توفير تعليمات البناء أدناه.
نسخة دارك نت
الإصدار 0.x: أداة Darknet الأصلية التي أنشأها جوزيف ريدمون بين عامي 2013-2017.
الإصدار 1.x: مستودع Darknet الشهير الذي يحتفظ به Alexey Bochkovskiy من 2017-2021.
الإصدار 2.x ("OAK"): مستودع Darknet برعاية Hank.ai ويديره ستيفان شاريت بدءًا من عام 2023. قدم هذا الإصدار أمر إصدار.
الإصدار 2.1: الفرع الأخير من قاعدة بيانات الإصدار 2، المتوفر في الفرع v2.
الإصدار 3.x ("JAZZ"): تم إصدار أحدث مرحلة من التطوير في أكتوبر 2024.
التغييرات الرئيسية في الإصدار 3.x:
1. تمت إزالة العديد من الأوامر القديمة والتي لم يتم الحفاظ عليها.
2. تحسينات كبيرة في الأداء لكل من التدريب والاستدلال.
3. تعديل واجهة برمجة تطبيقات C القديمة؛ قد تتطلب التطبيقات التي تستخدم واجهة Darknet API الأصلية تعديلات طفيفة.
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.
تتوفر مجموعات بيانات أبسط وأوزان مدربة مسبقًا، مثل LEGO Gears وRolodex، لاختبار Darknet/YOLO. راجع الأسئلة الشائعة حول Darknet/YOLO للحصول على التفاصيل.
يمكنك تنزيل أوزان MSCOCO المدربة مسبقًا من مواقع مختلفة، بما في ذلك هذا المستودع:
YOLOv2 (نوفمبر 2016)
YOLOv2-صغيرة
YOLOv2-كامل
YOLOv3 (مايو 2018)
YOLOv3-صغيرة
YOLOv3-كامل
YOLOv4 (مايو 2020)
YOLOv4-صغيرة
YOLOv4-كامل
YOLOv7 (أغسطس 2022)
YOLOv7-صغيرة
YOLOv7-كامل
أوامر المثال:
`
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
1. اختياري: إذا كان لديك وحدة معالجة رسومات NVIDIA حديثة، فقم بتثبيت CUDA أو CUDA+cuDNN. سوف يستخدم Darknet وحدة معالجة الرسومات الخاصة بك لمعالجة الصور والفيديو بشكل أسرع.
2. احذف ملف CMakeCache.txt من دليل إنشاء Darknet الخاص بك لإجبار CMake على إعادة العثور على كافة الملفات الضرورية.
3. إعادة بناء الشبكة المظلمة.
4. قم بتثبيت CUDA (اختياري): تفضل بزيارة https://developer.nvidia.com/cuda-downloads لتنزيل CUDA وتثبيته.
5. قم بتثبيت cuDNN (اختياري): تفضل بزيارة https://developer.nvidia.com/rdp/cudnn-download أو https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#cudnn-package - نظرة عامة على تثبيت المدير لتنزيل وتثبيت cuDNN.
6. تحقق من تثبيت CUDA: تأكد من أنه يمكنك تشغيل nvcc وnvidia-smi. قد تحتاج إلى تعديل متغير PATH الخاص بك.
7. تثبيت التبعيات واستنساخ Darknet:
``باش
sudo apt-get install build-essential git libopencv-dev cmake
mkdir ~/srccd ~/src
استنساخ بوابة https://github.com/hank-ai/darknetcd darknet
بناء مكدير
بناء القرص المضغوط
`
8. تكوين CMake:
``باش
cmake -DCMAKEBUILDTYPE=إطلاق ..
`
9. بناء الشبكة المظلمة:
``باش
حزمة make -j4
`
10. تثبيت داركنت:
``باش
sudo dpkg -i darknet-VERSION.deb
`
11. اختبار التثبيت:
``باش
نسخة دارك نت
`
ملاحظات إضافية:
إذا كنت تستخدم إصدارًا أقدم من CMake، فقم بترقيته قبل تشغيل أمر cmake:
``باش
sudo apt-get purge cmake
Sudo snap install cmake --classic
`
أعد تشغيل الصدفة الخاصة بك إذا كنت تستخدم bash، أو يجب على الأسماك تحديث المسار تلقائيًا.
لإنشاء ملف تثبيت RPM بدلاً من ملف DEB، قم بتعديل الملف CM_package.cmake.
بمجرد إنشاء حزمة التثبيت، استخدم مدير الحزم الخاص بتوزيعتك لتثبيتها (على سبيل المثال، Sudo dpkg -i darknet-2.0.1-Linux.deb على الأنظمة المستندة إلى Debian).
طريقة ويندوز CMake
1. تثبيت الأدوات اللازمة:
``باش
Winget تثبيت Git.Git
تثبيت Winget Kitware.CMake
تثبيت Winget nsis.nsis
تثبيت Winget Microsoft.VisualStudio.2022.Community
`
2. تعديل تثبيت Visual Studio:
- افتح "مثبت Visual Studio".
- انقر على "تعديل".
- اختر "تطوير سطح المكتب باستخدام C++".
- انقر على "تعديل" في الزاوية اليمنى السفلية ثم "نعم".
3. افتح موجه أوامر المطور لـ VS 2022: لا تستخدم PowerShell.
4. تثبيت مايكروسوفت VCPKG:
``باش
cd c:mkdir c:srccd c:src
استنساخ بوابة https://github.com/microsoft/vcpkgcd vcpkg
bootstrap-vcpkg.bat
دمج .vcpkg.exe
تثبيت .vcpkg.exe دمج powershell.vcpkg.exe تثبيت opencv[contrib,dnn,freetype,jpeg,openmp,png,webp,world]:x64-windows
`
5. اختياري: قم بتثبيت CUDA أو CUDA+cuDNN (كما هو الحال في تعليمات Linux).
6. احذف CMakeCache.txt (كما في تعليمات Linux).
7. إعادة بناء Darknet (كما في تعليمات Linux).
8. قم بتثبيت CUDA (اختياري): تفضل بزيارة https://developer.nvidia.com/cuda-downloads لتنزيل CUDA وتثبيته.
9. قم بتثبيت cuDNN (اختياري): تفضل بزيارة https://developer.nvidia.com/rdp/cudnn-download أو https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#download-windows لتنزيل وتثبيت cuDNN.
10. تحقق من تثبيت CUDA: تأكد من أنه يمكنك تشغيل nvcc.exe. قد تحتاج إلى تعديل متغير PATH الخاص بك.
11. قم بفك ضغط ملفات cuDNN ونسخها: بمجرد التنزيل، قم بفك ضغط ونسخ مجلدات الحاوية والتضمين والليب إلى C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/[version]/. قد تحتاج إلى الكتابة فوق بعض الملفات.
12. استنساخ Darknet والبناء:
``باش
مؤتمر نزع السلاح ج: سرك
استنساخ بوابة https://github.com/hank-ai/darknet.gitcd darknet
بناء مكدير
بناء القرص المضغوط
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
`
13. انسخ ملفات CUDA DLL (اختياري): إذا واجهت أخطاء حول فقدان ملفات CUDA أو cuDNN DLL (على سبيل المثال، cublas64_12.dll)، فانسخ ملفات CUDA DLL يدويًا إلى دليل إخراج Darknet.exe:
``باش
انسخ "C: Program FilesNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll" src-cliRelease
`
(تأكد من استبدال رقم الإصدار بالرقم الذي تستخدمه.)
14. أعد تشغيل الأمر msbuild.exe لإنشاء حزمة تثبيت NSIS:
``باش
msbuild.exe /property:Platform=x64;التكوين=إصدار PACKAGE.vcxproj
`
15. اختبار التثبيت:
``باش
الإصدار C:srcDarknetbuildsrc-cliReleasedarknet.exe
`
16. قم بتشغيل معالج تثبيت NSIS: سيؤدي هذا إلى تثبيت تطبيق CLI وملفات DLL المطلوبة والمكتبات والملفات المضمنة وملفات تكوين القالب.
ملاحظات إضافية:
يقوم الأمر cmake بإنشاء ملف حل Visual Studio (Darknet.sln). يمكنك استخدام Visual Studio GUI لإنشاء المشروع بدلاً من msbuild.exe.
يمكن العثور على حزمة تثبيت NSIS (على سبيل المثال، darknet-VERSION.exe) في دليل البناء.
باستخدام دارك نت
سطر الأوامر
ما يلي ليس قائمة شاملة لجميع أوامر Darknet.
تعليمات darknet: عرض معلومات المساعدة.
إصدار Darknet: تحقق من إصدار Darknet.
أوامر التنبؤ:
الإصدار 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
`
تحديد وحدة معالجة الرسومات:
الإصدار 2:
``باش
عرض تجريبي لكاشف الشبكة المظلمة Animals.data Animals.cfg Animal_best.weights -i 1 test.mp4
`
حساب الدقة:
رسم خريطة:
``باش
خريطة كاشف الانترنت المظلم القيادة.بيانات القيادة.cfg القيادة_أفضل.الأوزان ...
`
mAP@IoU=75:
``باش
خريطة كاشف الشبكة المظلمة للحيوانات.بيانات الحيوانات.cfg Animalbest.weights -iouthresh 0.75
`
إعادة حساب المراسي:
DarkMark (مستحسن): استخدم DarkMark لتشغيل 100 عملية حسابية متتالية وتحديد أفضل نقاط الارتساء.
دارك نت:
``باش
كاشف الشبكة المظلمة calcanchors Animals.data -عدد_العناقيد 6 -العرض 320 -الارتفاع 256
`
تدريب شبكة جديدة:
استخدام DarkMark (مستحسن): استخدم DarkMark لإنشاء كافة الملفات الضرورية للتدريب.
الإعداد اليدوي:
1. قم بإنشاء مجلد جديد لمشروعك (على سبيل المثال، ~/nn/animals/).
2. انسخ ملف التكوين كقالب (على سبيل المثال، cfg/yolov4-tiny.cfg) إلى المجلد.
3. قم بإنشاء ملف نصي Animals.names يتضمن أسماء الفصول الدراسية الخاصة بك، بمعدل اسم واحد في كل سطر.
4. قم بإنشاء ملف نصي 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).
6. قم بإضافة تعليقات توضيحية إلى صورك وإنشاء ملفات تعليقات توضيحية بتنسيق .txt باستخدام DarkMark أو برامج مشابهة.
7. قم بإنشاء ملفات Animaltrain.txt وAnimalsvalid.txt، مع إدراج الصور للتدريب والتحقق من الصحة على التوالي، واحدة في كل سطر.
8. تعديل ملف التكوين:
- تعيين الدفعة = 64.
- تعديل التقسيمات حسب الحاجة.
- تعيين max_batches=8000 (أو 2000 × عدد الفئات).
- ضبط الخطوات = 6400,7200 (80% و 90% من الحد الأقصى للدفعات).
- اضبط العرض والارتفاع على أبعاد شبكتك.
- قم بتحديث الفئات بعدد الفئات الموجودة في ملف الأسماء الخاص بك.
- تحديث المرشحات في كل قسم [تلافيفي] قبل أقسام [يولو]: (عدد الفئات + 5) * 3.
9. ابدأ التدريب:
``باش
مؤتمر نزع السلاح ~/ن/الحيوانات/
كاشف الشبكة المظلمة -خريطة -dont_show تدريب الحيوانات.بيانات الحيوانات.cfg
`
نصائح تدريبية إضافية:
استخدم المعلمة --verbose للحصول على معلومات تدريب أكثر تفصيلاً:
``باش
كاشف الشبكة المظلمة -خريطة -dont_show --قطار مطول للحيوانات.بيانات الحيوانات.cfg
`
أدوات وروابط أخرى
DarkMark: إدارة مشاريع Darknet/YOLO، والتعليق على الصور، والتحقق من التعليقات التوضيحية، وإنشاء ملفات التدريب.
DarkHelp: واجهة سطر الأوامر (CLI) البديلة القوية لـ Darknet، ودعم تقسيم الصور، وتتبع الكائنات، وواجهة برمجة تطبيقات C++ للتطبيقات التجارية.
الأسئلة الشائعة حول Darknet/YOLO: مورد شامل للإجابة على الأسئلة الشائعة.
قناة Stéphane على YouTube: برامج تعليمية وأمثلة لمقاطع الفيديو على Darknet/YOLO.
خادم Darknet/YOLO Discord: منتدى مجتمعي للدعم والمناقشة.
خريطة الطريق
المهام المكتملة:
تم استبدال qsort() بـ std::sort() لتحسين الكفاءة.
تمت إزالة الوظائف المهملة مثل check_mistakes وgetchar() وsystem().
تم تحويل Darknet لاستخدام مترجم C++ (g++ على Linux وVisualStudio على Windows).
تم إصلاح مشكلات بناء Windows.
استعادة دعم بايثون.
قام ببناء مكتبة Darknet.
إعادة تمكين تسميات التنبؤ (رمز الأبجدية).
تمت إعادة تمكين نصف دعم CUDA/GPU وCUDNN وCUDNN.
تمت إزالة بنية CUDA ذات الترميز الثابت.
تحسين معلومات إصدار CUDA.
إعادة تمكين دعم AVX.
تمت إزالة الحلول القديمة وMakefile.
جعل OpenCV تبعية غير اختيارية.
تمت إزالة التبعية على مكتبة pthread القديمة.
تمت إزالة تبعية STB.
أعد كتابة CMakeLists.txt لاستخدام اكتشاف CUDA الجديد.
تمت إزالة الرمز الأبجدي القديم وحذف الصور غير الضرورية.
تمكين البنيات خارج المصدر.
تحسين إخراج رقم الإصدار.
تحسين التدريب وأداء الاستدلال.
تم تنفيذ التمرير المرجعي عند الاقتضاء.
تنظيف ملفات .hpp.
إعادة كتابة darknet.h.
تم استخدام cv::Mat ككائن C++ مناسب بدلاً من الإرسال إلى الفراغ*.
تم إصلاح التناقضات في استخدام بنية الصورة الداخلية.
تم إصلاح مشكلات البنية الخاصة بأجهزة Jetson المستندة إلى ARM (باستثناء الطرز القديمة غير المدعومة).
تم إصلاح واجهة برمجة تطبيقات Python في الإصدار 3.
الأهداف قصيرة المدى:
استبدل printf() بـ std::cout.
التحقيق في الدعم لكاميرات Zed الأقدم.
تحسين وتوحيد تحليل سطر الأوامر.
الأهداف المتوسطة المدى:
قم بإزالة كافة رموز char* واستبدلها بـ std::string.
تخلص من تحذيرات المترجم وتأكد من تناسق نمط التعليمات البرمجية.
تحسين استخدام cv::Mat على بنية صورة C المخصصة.
استبدل وظيفة القائمة القديمة بـ std::vector أو std::list.
إصلاح الدعم للصور ذات التدرج الرمادي ذات القناة الواحدة.
أضف دعمًا لصور القنوات N (على سبيل المثال، مع عمق إضافي أو قنوات حرارية).
تنظيف الكود المستمر.
الأهداف طويلة المدى:
معالجة مشكلات CUDA/CUDNN عبر جميع وحدات معالجة الرسومات.
أعد كتابة كود CUDA+cuDNN.
اكتشف الدعم لوحدات معالجة الرسومات غير التابعة لـ NVIDIA.
تنفيذ الصناديق المحيطة المدورة أو دعم "الزاوية".
أضف نقاط المفاتيح/الهياكل العظمية والخرائط الحرارية ودعم التجزئة.