HmacManager
ملخص
يقدم لك محرر Downcodes HmacManager، وهي أداة مصادقة HMAC لتطبيقات ASP.NET Core، مما يوفر تكاملًا سلسًا وأمانًا قويًا لتطبيقاتك.
سمات
مصادقة HMAC: يوفر HmacManager مصادقة HMAC، مما يتيح لك إضافة طبقة مصادقة آمنة إلى ASP.NET Core API.
التكوين السهل: من خلال خيارات التكوين البسيطة، يمكنك دمج مصادقة HMAC بسرعة في تطبيقاتك.
خيارات التخصيص: يوفر HmacManager خيارات التخصيص بحيث يمكنك تهيئتها وفقًا لاحتياجاتك.
الأمان المحسّن: تعمل مصادقة HMAC على تحسين أمان واجهة برمجة التطبيقات (API) الخاصة بك عن طريق استخدام خوارزمية تجزئة HMAC لمصادقة الطلبات.
تثبيت
HmacManager متاح على NuGet.
``باش
الدوت نت إضافة حزمة HmacManager
`
موارد
مزيد من القراءة: الوثائق الرسمية
نموذج التعليمات البرمجية: مستودع جيثب
Darknet Object Detection Framework وYOLO
شعارات darknet وhank.ai
Darknet هو إطار شبكة عصبية مفتوح المصدر مكتوب بلغات C وC++ وCUDA.
YOLO (أنت تنظر مرة واحدة فقط) هو نظام متقدم للكشف عن الأهداف في الوقت الفعلي يعمل في إطار عمل Darknet.
1. الأوراق
YOLOv7: رابط ورقي
تحجيم-YOLOv4: رابط ورقي
YOLOv4: رابط ورقي
YOLOv3: رابط الورق
2. معلومات عامة
يستمر إطار عمل Darknet/YOLO في التفوق على أطر العمل الأخرى وإصدارات YOLO من حيث السرعة والدقة.
الإطار مجاني بالكامل ومفتوح المصدر. يمكنك دمج Darknet/YOLO في المشاريع والمنتجات الحالية، بما في ذلك المنتجات التجارية، دون ترخيص أو رسوم.
يمكن لـ Darknet V3 ("Jazz")، الذي تم إصداره في أكتوبر 2024، تشغيل فيديو مجموعة بيانات LEGO بدقة تصل إلى 1000 إطار في الثانية عند استخدام وحدة معالجة الرسوميات NVIDIA RTX 3090، مما يعني أن كل إطار فيديو يستغرق 1 مللي ثانية أو أقل للقراءة وتغيير الحجم والمعالجة بواسطة Darknet / يولو في ثوان.
انضم إلى خادم Darknet/YOLO Discord: https://discord.gg/zSq8rtW
يمكن تشغيل إصدار وحدة المعالجة المركزية من Darknet/YOLO على أجهزة بسيطة مثل Raspberry Pi والخوادم السحابية وخوادم Colab وأجهزة الكمبيوتر المكتبية وأجهزة الكمبيوتر المحمولة ومعدات التدريب المتطورة. يتطلب إصدار GPU من Darknet/YOLO وحدة معالجة رسومات مع دعم NVIDIA CUDA.
من المعروف أن Darknet/YOLO يعمل بشكل جيد على Linux وWindows وMac. انظر تعليمات البناء أدناه.
3. نسخة دارك نت
الإصدار 0.x: أداة Darknet الأصلية التي كتبها جوزيف ريدمون في 2013-2017 ليس لها رقم إصدار.
الإصدار 1.x: مستودع Darknet الشهير التالي الذي يحتفظ به Alexey Bochkovskiy بين 2017-2021 لا يحتوي أيضًا على رقم إصدار.
الإصدار 2.x ("OAK"): مستودع Darknet الذي ترعاه Hank.ai ويديره Stéphane Charette اعتبارًا من عام 2023 هو أول مستودع يحتوي على أمر إصدار. ومن عام 2023 إلى نهاية عام 2024، يعود إلى الإصدار 2.x "OAK".
الإصدار 3.x ("JAZZ"): تبدأ المرحلة التالية من التطوير في منتصف عام 2024، مع الإصدار في أكتوبر 2024. يقوم أمر الإصدار الآن بإرجاع 3.x "JAZZ".
4. أوزان ما قبل التدريب MSCOCO
للراحة، تم تدريب العديد من الإصدارات الشائعة من YOLO مسبقًا على مجموعة بيانات MSCOCO. تحتوي مجموعة البيانات هذه على 80 فئة ويمكن رؤيتها في الملف النصي cfg/coco.names.
هناك مجموعات بيانات أخرى أبسط وأوزان مدربة مسبقًا متاحة لاختبار 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 المقابلة في دليل 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 للتأكيد على أن كل شيء على ما يرام.
5. بناء
تم دمج طرق البناء المختلفة من الماضي (ما قبل 2023) في حل موحد. يتطلب Darknet C++ 17 أو أعلى، وOpenCV، واستخدام CMake لإنشاء ملفات المشروع الضرورية.
لا تحتاج إلى معرفة لغة C++ لإنشاء أو تثبيت أو تشغيل Darknet/YOLO، تمامًا كما لا تحتاج إلى أن تكون ميكانيكيًا لقيادة السيارة.
5.1 جوجل كولاب
تعليمات Google Colab هي نفس تعليمات Linux. تعرض العديد من دفاتر ملاحظات Jupyter كيفية تنفيذ مهام معينة، مثل تدريب شبكة جديدة.
راجع دفتر الملاحظات في الدليل الفرعي colab، أو اتبع تعليمات Linux أدناه.
5.2 طريقة لينكس CMake
البرنامج التعليمي لبناء Darknet على نظام Linux
``باش
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
`
5.3 طريقة Windows CMake
تفترض هذه التعليمات تثبيتًا جديدًا لنظام التشغيل Windows 11 22H2.
``باش
تثبيت Winget Git.Git تثبيت Winget Kitware.CMake تثبيت Winget nsis.nsis تثبيت Winget Microsoft.VisualStudio.2022.Community
`
نحتاج بعد ذلك إلى تعديل تثبيت Visual Studio ليشمل دعم تطبيقات C++:
* انقر فوق قائمة "ابدأ" في Windows وقم بتشغيل Visual Studio Installer.
* انقر على "تحرير".
* اختر "تطوير سطح المكتب باستخدام C++".
* انقر على "تحرير" في الزاوية اليمنى السفلى، ثم انقر على "نعم".
بعد تنزيل كل شيء وتثبيته، انقر فوق قائمة "ابدأ في 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#cudnn-package-manager-installation-overview للتنزيل وتثبيت 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 إلى:
* قم بإنشاء دليل باسم 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، فأنت لم تقم بتثبيته، بل قمت بإنشائه فقط! تأكد من تصفح كل لوحة من معالج تثبيت NSIS في الخطوة السابقة.
6. استخدم داركنت
6.1 كلي
ما يلي ليس قائمة كاملة بجميع الأوامر التي يدعمها Darknet.
بالإضافة إلى Darknet CLI، لاحظ أيضًا Darknet project CLI، والذي يوفر بديلاً لـ Darknet/YOLO CLI. يحتوي DarkHelp CLI أيضًا على بعض التحسينات غير الموجودة في Darknet. يمكنك استخدام Darknet CLI وDarkHelp CLI معًا، فهما لا يستبعد أحدهما الآخر.
بالنسبة لمعظم الأوامر الموضحة أدناه، ستحتاج إلى ملف .weights مع ملفات .names و.cfg المقابلة. يمكنك تدريب الشبكة بنفسك (نوصي بشدة!)، أو يمكنك تنزيل الشبكات العصبية التي تم تدريبها من قبل آخرين وهي متاحة مجانًا على الإنترنت. تتضمن أمثلة مجموعات بيانات ما قبل التدريب ما يلي:
* LEGO Gears (البحث عن الأشياء في الصور)
* Rolodex (البحث عن النص في الصورة)
* MSCOCO (معيار الكشف عن الأهداف من فئة 80 فئة)
تتضمن أوامر التشغيل ما يلي:
* اذكر بعض الأوامر والخيارات الممكنة التي يمكن تشغيلها:
``باش
مساعدة على الانترنت المظلم
`
* التحقق من الإصدار:
``باش
نسخة دارك نت
`
* استخدم الصور للتنبؤ:
``باش
V2: اختبار كاشف الشبكة المظلمة cars.data Cars.cfg Cars_best.weights image1.jpg
V3: darknet02displayannotatedimages Cars.cfg image1.jpg
DarkHelp: DarkHelp Cars.cfg Cars_best.weights image1.jpg
`
* إحداثيات الإخراج:
``باش
V2: اختبار كاشف الشبكة المظلمة Animals.data Animals.cfg Animalbest.weights -extoutput dog.jpg
V3: darknet01inference_images حيوانات dog.jpg
DarkHelp: DarkHelp --json Animals.cfg Animals.names Animal_best.weights dog.jpg
`
*استخدام الفيديو:
``باش
V2: العرض التوضيحي لكاشف الشبكة المظلمة للحيوانات.بيانات الحيوانات.cfg Animalbest.weights -extoutput test.mp4
V3: darknet03display_videos Animals.cfg test.mp4
DarkHelp: DarkHelp Animals.cfg Animals.names Animal_best.weights test.mp4
`
* القراءة من كاميرا الويب:
``باش
V2: العرض التوضيحي لكاشف الشبكة المظلمة Animals.data Animals.cfg Animal_best.weights -c 0
V3: حيوانات darknet08display_webcam
`
* حفظ النتائج على الفيديو:
``باش
V2: العرض التوضيحي لكاشف الشبكة المظلمة للحيوانات.بيانات الحيوانات.cfg Animalbest.weights test.mp4 -outfilename res.avi
V3: darknet05processvideosmultithreaded Animals.cfg للحيوانات.أسماء الحيوانات_أفضل.اختبار الأوزان.mp4
DarkHelp: DarkHelp Animals.cfg Animals.names Animal_best.weights test.mp4
`
*جسون:
``باش
V2: العرض التوضيحي لكاشف الشبكة المظلمة للحيوانات.بيانات الحيوانات.cfg Animalbest.weights test50.mp4 -jsonport 8070 -mjpegport 8090 -extoutput
V3: darknet06imagestojson الحيوانات image1.jpg
DarkHelp: DarkHelp --json Animals.names Animals.cfg Animal_best.weights image1.jpg
`
* تشغيل على وحدات معالجة الرسومات محددة:
``باش
V2: العرض التوضيحي لكاشف الشبكة المظلمة 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:
``باش
خريطة كاشف الشبكة المظلمة للحيوانات.بيانات الحيوانات.cfg Animalbest.weights -iouthresh 0.75
`
* من الأفضل إجراء إعادة حساب نقاط الربط في DarkMark حيث سيتم تشغيلها 100 مرة متتالية واختيار أفضل نقطة ربط من جميع نقاط الربط المحسوبة. ومع ذلك، إذا كنت تريد تشغيل إصدار أقدم في Darknet:
``باش
كاشف الشبكة المظلمة calcanchors Animals.data -عدد_العناقيد 6 -العرض 320 -الارتفاع 256
`
* تدريب الشبكة الجديدة:
``باش
cd ~/nn/animals/ darknet Detector -map -dont_show قطار الحيوانات.بيانات الحيوانات.cfg
`
6.2 التدريب
روابط سريعة للأجزاء ذات الصلة من الأسئلة الشائعة حول Darknet/YOLO:
* كيف أقوم بإعداد الملفات والأدلة الخاصة بي؟
* ما هو الملف الشخصي الذي يجب أن أستخدمه؟
* ما الأمر الذي يجب أن أستخدمه عند تدريب شبكتي الخاصة؟
قم بإنشاء جميع ملفات Darknet الضرورية باستخدام DarkMark، وهي الطريقة الأسهل للتعليق والتدريب. هذه بالتأكيد هي الطريقة الموصى بها لتدريب الشبكات العصبية الجديدة.
إذا كنت ترغب في إعداد الملفات المختلفة يدويًا لتدريب شبكة مخصصة:
* إنشاء مجلد جديد لتخزين الملفات. في هذا المثال، سيتم إنشاء شبكة عصبية لاكتشاف الحيوانات، لذلك سيتم إنشاء الدليل التالي: ~/nn/animals/.
* انسخ أحد ملفات تكوين Darknet التي تريد استخدامها كقالب. على سبيل المثال، راجع cfg/yolov4-tiny.cfg. ضعه في المجلد الذي قمت بإنشائه. في هذا المثال، لدينا الآن ~/nn/animals/animals.cfg.
* قم بإنشاء ملف نصي Animals.names في نفس المجلد الذي وضعت فيه ملف التكوين. في هذا المثال، لدينا الآن ~/nn/animals/animals.names.
* استخدم محرر النصوص لتحرير ملف أسماء الحيوانات. قم بإدراج الفئات التي تريد استخدامها. أنت بحاجة إلى إدخال واحد بالضبط في كل سطر، بدون أسطر فارغة أو تعليقات. في هذا المثال، سيحتوي ملف .names على 4 أسطر بالضبط:
`
كلب
قطة
طائر
حصان
`
* قم بإنشاء ملف نصي 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
`
* إنشاء مجلد لتخزين الصور والشروح الخاصة بك. على سبيل المثال، قد يكون هذا ~/nn/animals/dataset. تتطلب كل صورة ملف .txt مطابق يصف التعليقات التوضيحية لتلك الصورة. تنسيق ملفات التعليق .txt محدد للغاية. لا يمكنك إنشاء هذه الملفات يدويًا لأن كل تعليق توضيحي يجب أن يحتوي على الإحداثيات الدقيقة للتعليق التوضيحي. راجع DarkMark أو أي برنامج آخر مشابه لإضافة تعليقات توضيحية إلى صورك. تم توضيح تنسيق التعليقات التوضيحية YOLO في الأسئلة الشائعة حول Darknet/YOLO.
* إنشاء ملفات نصية "قطار" و"صالحة" مسماة في ملف البيانات. يحتاج هذان الملفان النصيان إلى إدراج جميع الصور التي يجب أن يستخدمها Darknet للتدريب والتحقق من صحتها عند حساب نسبة mAP% بشكل منفصل. صورة واحدة بالضبط لكل صف. يمكن أن تكون المسارات وأسماء الملفات نسبية أو مطلقة.
* استخدم محرر النصوص لتعديل ملف .cfg الخاص بك.
* تأكد من الدفعة = 64.
*الانتباه إلى الأقسام الفرعية. اعتمادًا على حجم الشبكة وحجم الذاكرة المتوفرة على وحدة معالجة الرسومات، قد تحتاج إلى زيادة التقسيمات الفرعية. أفضل قيمة للاستخدام هي 1، لذا ابدأ بذلك. إذا لم تتمكن من استخدام 1، فيرجى الاطلاع على الأسئلة الشائعة حول Darknet/YOLO.
لاحظ أن maxbatches =…. القيمة الجيدة للبدء بها هي 2000 ضعف عدد الفئات. في هذا المثال لدينا 4 حيوانات، إذن 42000 = 8000. هذا يعني أننا سنستخدم maxbatches=8000.
*ملاحظة الخطوات=..... يجب ضبط هذا على 80% و90% من الدفعات القصوى. في هذا المثال، سوف نستخدم الخطوات=6400,7200 حيث تم تعيين maxbatches على 8000.
*ملاحظة العرض=... والارتفاع=..... هذه هي أبعاد الشبكة. تشرح الأسئلة الشائعة لـ Darknet/YOLO كيفية حساب الحجم الأمثل للاستخدام.
* البحث عن كافة مثيلات خطوط class=... وتعديلها بعدد الفئات في ملف .names. في هذا المثال سوف نستخدم الفئات = 4.
يبحث عن مثيلات جميع عوامل التصفية=... الأسطر في القسم [التلافيفي] قبل كل قسم [yolo]. القيمة المراد استخدامها هي (عدد الفئات + 5) 3. وهذا يعني أنه في هذا المثال، (4 + 5) * 3 = 27. ولذلك، سوف نستخدم عوامل التصفية = 27 على السطر المقابل.
* ابدأ التدريب! قم بتشغيل الأمر التالي:
``باش
cd ~/nn/animals/ darknet Detector -map -dont_show قطار الحيوانات.بيانات الحيوانات.cfg
`
* انتظر من فضلك. سيتم حفظ أفضل الأوزان باسم Animal_best.weights. ويمكنك ملاحظة تقدم التدريب من خلال عرض ملف Chart.png. راجع الأسئلة الشائعة حول Darknet/YOLO للحصول على معلمات إضافية قد ترغب في استخدامها عند تدريب شبكة جديدة.
* إذا كنت تريد رؤية المزيد من التفاصيل أثناء التدريب، أضف المعلمة --verbose. على سبيل المثال:
``باش
كاشف الشبكة المظلمة -خريطة -dont_show --قطار مطول للحيوانات.بيانات الحيوانات.cfg
`
7. أدوات وروابط أخرى
لإدارة مشروع Darknet/YOLO الخاص بك، وإضافة تعليقات توضيحية إلى الصور، والتحقق من صحة التعليقات التوضيحية، وإنشاء الملفات الضرورية للتدريب باستخدام Darknet، راجع DarkMark.
للحصول على بديل قوي لـ Darknet CLI، أو لاستخدام تجانب الصور، أو تتبع الكائنات في الفيديو، أو للحصول على واجهة برمجة تطبيقات C++ قوية يمكن استخدامها بسهولة في التطبيقات التجارية، راجع DarkHelp.
يرجى الاطلاع على الأسئلة الشائعة الخاصة بـ Darknet/YOLO للمساعدة في الإجابة على أسئلتك.
اطلع على العديد من البرامج التعليمية وأمثلة مقاطع الفيديو على قناة Stéphane على YouTube.
إذا كانت لديك أسئلة حول الدعم أو ترغب في الدردشة مع مستخدمي Darknet/YOLO الآخرين، فيرجى الانضمام إلى خادم Darknet/YOLO Discord.
8. خريطة الطريق
آخر تحديث بتاريخ 2024-10-30:
* مكتمل
* تم استبدال qsort() بـ std::sort() أثناء التدريب (لا تزال بعض التعليمات البرمجية الغامضة الأخرى موجودة)
* تخلص من check_mistakes و getchar() و system()
* تحويل Darknet لاستخدام مترجم C++ (g++ على Linux، VisualStudio على Windows)
* إصلاح بناء الويندوز
* إصلاح دعم بايثون
* بناء مكتبة داركنت
* إعادة تمكين التسميات في التنبؤات (رمز "الأبجدية")
* إعادة تمكين رمز CUDA/GPU
* إعادة تمكين CUDNN
* إعادة تمكين نصف CUDNN
* لا تقم بترميز بنية CUDA
* معلومات أفضل عن إصدار CUDA
* إعادة تمكين AVX
* إزالة الحل القديم وMakefile
* جعل OpenCV غير اختياري
* إزالة التبعية على مكتبة pthread القديمة
*حذف STB
* أعد كتابة CMakeLists.txt لاستخدام اكتشاف CUDA الجديد
* تمت إزالة رمز "الأبجدية" القديم وحذف أكثر من 700 صورة في البيانات/التسميات
* بناء كود المصدر الخارجي
* لديه إخراج رقم الإصدار أفضل
* تحسين الأداء المتعلق بالتدريب (مهمة مستمرة)
* تحسين الأداء المتعلق بالاستدلال (مهمة مستمرة)
* استخدم مراجع التمرير حسب القيمة كلما أمكن ذلك
* تنظيف ملفات hpp
* إعادة كتابة darknet.h
لا تقم بإلقاء cv::Mat لإفراغه، استخدمه ككائن C++ مناسب
* إصلاح أو الحفاظ على الاستخدام المتسق لهياكل الصور الداخلية
* إصلاح بناء جهاز Jetson ذو معمارية ARM
*من غير المرجح أن يتم إصلاح أجهزة Jetson الأصلية لأنها لم تعد مدعومة من قبل NVIDIA (لا يوجد مترجم C++ 17)
* جهاز Jetson Orin الجديد قيد التشغيل الآن
* إصلاح Python API في V3
* هل تحتاج إلى دعم أفضل لـ Python (هل يرغب أي من مطوري Python في المساعدة؟)
* أهداف قصيرة المدى
* استبدل printf() بـ std::cout (العمل قيد التقدم)
* تحقق من دعم كاميرا Zed القديمة
* تحليل سطر الأوامر أفضل وأكثر اتساقًا (العمل قيد التقدم)
* الأهداف المتوسطة المدى
قم بإزالة جميع رموز char واستبدلها بـ std::string
* عدم إخفاء التحذيرات وتنظيف تحذيرات المترجم (العمل قيد التقدم)
* استخدام أفضل لـ cv::Mat بدلاً من هياكل الصور المخصصة في لغة C (العمل قيد التقدم)
* استبدل وظيفة القائمة القديمة بـ std::vector أو std::list
* دعم ثابت للصور ذات التدرج الرمادي ذات القناة الواحدة
* إضافة دعم لصور قناة N حيث N > 3 (مثل الصور ذات العمق الإضافي أو القنوات الساخنة)
* التنظيف المستمر للكود (قيد التنفيذ)
* أهداف طويلة المدى
* إصلاح مشكلات CUDA/CUDNN على جميع وحدات معالجة الرسومات
* إعادة كتابة كود CUDA + cuDNN
* فكر في إضافة دعم لوحدات معالجة الرسومات غير التابعة لـ NVIDIA
* تدوير المربع المحيط، أو شكل من أشكال دعم "الزاوية".
* النقاط الرئيسية / الهيكل العظمي
* خريطة الحرارة (جاري العمل)
* ينقسم