Asp+Csv نظام الاستعلام عن النتيجة العالمية الذكية والتكيفية
اليوم، سيقدم لك محرر Downcodes نظام استعلام تم تطويره ونشره استنادًا إلى ASP للاستعلام عن البيانات بتنسيق csv. يتكيف Asp+Csv بذكاء مع نظام الاستعلام عن النتائج العالمي.
هذا البرنامج بسيط للغاية ولكنه نظام استعلام عن النتائج متعدد الاستخدامات ومريح للغاية ويمكن استخدامه للاستعلام عن جميع جداول بيانات Excel الفردية والثنائية الأبعاد تقريبًا.
غاية
هذا النظام مناسب لمختلف الاستفسارات الدقيقة مثل الدرجات والأجور وفواتير الخدمات العقارية وما إلى ذلك والتي يتم تعديلها بشكل غير متكرر وتتميز بسرية منخفضة. سيناريوهات الاستخدام المحددة هي كما يلي:
1. نظام الاستعلام عن الدرجات: ينطبق على كل مدرسة، مؤسسة تعليمية، امتحان مؤسسة عامة، إلخ.
2. نظام الاستعلام عن الراتب: ينطبق على كل مدرسة، مؤسسة تعليمية، امتحان مؤسسة عامة، الخ.
3. نظام الاستعلام عن رسوم الملكية: ينطبق على كل مؤسسة ومدرسة وجميع الوحدات.
4. نظام الاستعلام عن فاتورة الخدمات: مناسب للمجتمعات وشركات العقارات والمساكن الجامعية وما إلى ذلك.
5. أنظمة الاستعلام الأخرى: مثل الاستعلام عن تحديد المستوى والاستعلام عن القبول والاستعلام عن الشهادات وغيرها من أنظمة الاستعلام مع تعديلات قليلة.
الميزات والمزايا
1. تعدد الاستخدامات: يمكن استخدامه في جميع الجداول ثنائية الأبعاد تقريبًا ويمكن أن يلبي معظم احتياجاتك.
2. بسيط ومريح: الكود صغير وبسيط ويمكن تعديله بسرعة ليناسب سيناريوهات مختلفة مثل الاستعلام المشترك متعدد الجداول.
3. مرن وسهل الاستخدام: ما عليك سوى تعديل بعض المعلمات لتخصيص الاستعلام.
4. الاستخدام السريع: يمكن حل مسألة نشر النتيجة خلال دقيقتين إلى ثلاث دقائق في أسرع وقت.
القيود
1. غير مناسب للتعديلات المتكررة: عادة ما يتم إصدار النتائج والأجور وفواتير المياه والكهرباء وما إلى ذلك في وقت واحد دون تعديل. هذا النظام غير مناسب للسيناريوهات التي تتكرر فيها التعديلات.
2. مناسب فقط للجداول ثنائية الأبعاد: بشكل عام، تعتمد قواعد البيانات بنية ثنائية الأبعاد، مع وجود رؤوس في الصف الأول والصفوف، وبيانات واحدة لكل صف بعد ذلك. لا يدعم هذا النظام حاليًا البيانات الموجودة في الهياكل الأخرى.
3. التحكم الموصى به في عدد السجلات في قاعدة البيانات الواحدة: هذا النظام لا يحد من عدد السجلات في قاعدة البيانات الواحدة، ولكن يوصى بالتحكم في عدد السجلات في قاعدة البيانات الواحدة في حدود 30000، ويمكن لقواعد البيانات يمكن تقسيمها إلى قواعد بيانات دون التأثير على بعضها البعض.
4. الصيغ والصور وعناوين URL وما إلى ذلك غير مدعومة في الوقت الحالي: لا يدعم هذا النظام الصيغ والصور وعناوين URL وما إلى ذلك في الوقت الحالي.
اقتراحات الاستخدام
يمكن استخدامه مباشرة عن طريق التحميل عبر FTP. يوصى بالتحميل مباشرة لاختبار الاستعلام أولاً.
الوصول إلى الواجهة الأمامية: http://website/directory/ (تحميل للاستخدام المباشر دون دعم قاعدة بيانات mysql، وما إلى ذلك)
ثم استخدم المفكرة ++ لفتح inc/conn.Asp لعرض العلاقة المقابلة بين المعلمات وصفحات الويب، ثم افتح قاعدة البيانات الافتراضية المدمجة لمقارنة نتائج الاستعلام وعرض العلاقة المقابلة.
خطوات الاستخدام
للحصول على التفاصيل، راجع ملف تنسيق html الموجود في الحزمة المضغوطة.
مثال
ما يلي يأخذ Darknet Object Detection Framework وYOLO كمثال لإظهار كيفية استخدام عنصر علامة عنوان Markdown وبعض تعديلات التخطيط لجعل عرض المعلومات أكثر دقة وأكثر ملاءمة للمستخدمين للقراءة:
Darknet Object Detection Framework وYOLO
شعارات darknet وhank.ai
Darknet هو إطار شبكة عصبية مفتوح المصدر مكتوب بلغات C وC++ وCUDA.
YOLO (أنت تنظر مرة واحدة فقط) هو نظام متطور للكشف عن الكائنات في الوقت الفعلي ويعمل في إطار عمل Darknet.
أوراق
الورق YOLOv7
مقياس الورق-YOLOv4
الورق YOLOv4
ورقة YOLOv3
معلومات عامة
لا يزال إطار عمل Darknet/YOLO أسرع وأكثر دقة من أطر العمل الأخرى وإصدارات YOLO.
الإطار مجاني بالكامل ومفتوح المصدر. يمكنك استخدام Darknet/YOLO في المشاريع والمنتجات الحالية، بما في ذلك المنتجات التجارية، دون ترخيص أو رسوم.
يمكن لـ Darknet V3 ("Jazz")، الذي تم إصداره في أكتوبر 2024، تشغيل فيديو مجموعة بيانات LEGO بدقة تصل إلى 1000 إطار في الثانية عند استخدام وحدة معالجة الرسوميات NVIDIA RTX 3090، مما يعني أن كل إطار فيديو يستغرق 1 مللي ثانية أو أقل للقراءة وتغيير الحجم والمعالجة بواسطة Darknet / يولو في ثوان.
إذا كنت بحاجة إلى مساعدة أو تريد مناقشة Darknet/YOLO، يرجى الانضمام إلى خادم Darknet/YOLO Discord: https://discord.gg/zSq8rtW
يمكن تشغيل إصدار وحدة المعالجة المركزية من Darknet/YOLO على أجهزة بسيطة مثل Raspberry Pi والخوادم السحابية وcolab وأجهزة الكمبيوتر المكتبية وأجهزة الكمبيوتر المحمولة ومعدات التدريب المتطورة. يتطلب إصدار 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".
الهدف هو التعرف على قاعدة التعليمات البرمجية أثناء محاولة كسر أقل قدر ممكن من الوظائف الموجودة.
أعد كتابة خطوات البناء حتى يكون لدينا نهج موحد للبناء على نظامي التشغيل Windows وLinux باستخدام CMake.
تحويل قاعدة التعليمات البرمجية لاستخدام مترجم C++.
تحسين Chart.png أثناء التدريب.
إصلاحات الأخطاء والتحسينات المتعلقة بالأداء، والتي تتعلق بشكل أساسي بتقليل الوقت اللازم لتدريب الشبكة.
الفرع الأخير من قاعدة التعليمات البرمجية هذه هو الإصدار 2.1 في الفرع v2.
تبدأ المرحلة التالية من التطوير في منتصف عام 2024، على أن يتم إصدارها في أكتوبر 2024. يقوم أمر الإصدار الآن بإرجاع 3.x "JAZZ".
إذا كنت بحاجة إلى تشغيل أحد هذه الأوامر، فيمكنك دائمًا مراجعة فرع v2 السابق. إذا كنت بحاجة إلى مساعدة، فيرجى إخبارنا بذلك حتى نتمكن من التحقيق في إضافة أي أوامر مفقودة.
تمت إزالة العديد من الأوامر القديمة والتي لم تتم صيانتها.
تم إجراء العديد من تحسينات الأداء، بما في ذلك أثناء التدريب والاستدلال.
تم تعديل واجهة برمجة تطبيقات C القديمة؛ وستتطلب التطبيقات التي تستخدم واجهة برمجة تطبيقات Darknet الأصلية تعديلات طفيفة: https://darknetcv.ai/api/api.html
واجهة برمجة تطبيقات Darknet V3 C وC++ الجديدة: https://darknetcv.ai/api/api.html
تطبيقات جديدة ونموذج التعليمات البرمجية في أمثلة src: https://darknetcv.ai/api/files.html
أوزان 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 المقابلة لـ 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
اختياري: إذا كان لديك وحدة معالجة رسومات 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
استنساخ بوابة https://github.com/hank-ai/darknetcd darknet
بناء mkdir buildcd
cmake -DCMAKEBUILDTYPE=إطلاق ..
جعل -j4
طَرد
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 إلى نسخ الملفات التالية:
/usr/bin/darknet هو برنامج Darknet المعتاد القابل للتنفيذ. قم بتشغيل إصدار darknet من واجهة سطر الأوامر للتأكد من تثبيته بشكل صحيح.
/usr/include/darknet.h هو Darknet API لمطوري 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، فهذا يعني أنك لم تقم بتثبيته، بل قمت بإنشائه للتو! تأكد من تثبيت ملف .deb أو .rpm كما هو موضح أعلاه.
طريقة ويندوز CMake
تفترض هذه الإرشادات أن لديك تثبيتًا نظيفًا لنظام التشغيل Windows 11 22H2.
افتح نافذة موجه أوامر cmd.exe عادية وقم بتشغيل الأمر التالي:
`
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
استنساخ بوابة 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
`
يرجى التحلي بالصبر مع هذه الخطوة الأخيرة حيث قد يستغرق تشغيلها وقتًا طويلاً. يتطلب تنزيل وبناء الكثير من الأشياء.
المستخدمين المتقدمين:
لاحظ أن هناك العديد من الوحدات الاختيارية الأخرى التي قد ترغب في إضافتها عند إنشاء 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.
بمجرد الانتهاء من جميع الخطوات السابقة بنجاح، ستحتاج إلى استنساخ Darknet وإنشائه. في هذه الخطوة نحتاج أيضًا إلى إخبار CMake بمكان وجود vcpkg حتى يتمكن من العثور على OpenCV والتبعيات الأخرى:
`
مؤتمر نزع السلاح ج: سرك
استنساخ بوابة https://github.com/hank-ai/darknet.gitcd darknetmkdir buildcd بناء
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 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 كما هو موضح في الخطوة السابقة.
باستخدام دارك نت
سطر الأوامر
ما يلي ليس قائمة كاملة بجميع الأوامر التي يدعمها Darknet.
بالإضافة إلى واجهة سطر الأوامر الخاصة بـ Darknet، لاحظ أيضًا واجهة سطر الأوامر لمشروع DarkHelp، والتي توفر واجهة سطر أوامر بديلة لـ Darknet/YOLO. يحتوي 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.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
`
التشغيل على GPU محدد:
`
V2: العرض التوضيحي لكاشف الشبكة المظلمة 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
`
تدريب شبكة جديدة:
`
كاشف الشبكة المظلمة -map -dont_show تدريب الحيوانات.بيانات الحيوانات.cfg (انظر أيضًا قسم التدريب أدناه)
`
تمرين
رابط سريع إلى القسم ذي الصلة من الأسئلة الشائعة حول Darknet/YOLO:
* كيف أقوم بإعداد الملفات والأدلة الخاصة بي؟
* ما هو الملف الشخصي الذي يجب أن أستخدمه؟
* ما هي الأوامر التي يجب أن أستخدمها عند تدريب شبكتي الخاصة؟
استخدم 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 كيفية حساب الحجم الأمثل للاستخدام.
* ابحث عن كافة المثيلات التي تحتوي على السطر Classes=... وقم بتعديلها بعدد الفئات الموجودة في ملف .names الخاص بك. في هذا المثال سوف نستخدم الفئات = 4.
في القسم [التلافيفي] قبل كل قسم [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
مكتمل
تم استبدال qsort() المستخدم أثناء التدريب بـ std::sort() (لا تزال بعض العناصر الأخرى الأقل شيوعًا موجودة)
إزالة check_mistakes و getchar() و system()
تحويل Darknet لاستخدام مترجم C++ (g++ على Linux، Visual Studio على Windows)
إصلاح بناء ويندوز
إصلاح دعم بايثون
بناء مكتبة دارك نت
إعادة تمكين التصنيفات في التنبؤات (رمز "الأبجدية")
أعد تمكين رمز CUDA/GPU
أعد تمكين CUDNN
أعد تمكين نصف CUDNN
لا تقم بترميز بنية CUDA
معلومات إصدار CUDA أفضل
أعد تمكين AVX
إزالة الحل القديم وMakefile
جعل OpenCV غير اختياري
إزالة التبعية على مكتبة pthread القديمة
حذف STB
أعد كتابة CMakeLists.txt لاستخدام اكتشاف CUDA الجديد
تمت إزالة رمز "الأبجدية" القديم وحذف أكثر من 700 صورة في البيانات/التسميات
بناء ما هو أبعد من كود المصدر
لديه إخراج رقم الإصدار أفضل
تحسينات الأداء المتعلقة بالتدريب (المهام المستمرة)
تحسينات الأداء المتعلقة بالاستدلال (المهام المستمرة)
استخدم المراجع حسب القيمة كلما أمكن ذلك
تنظيف ملفات hpp
إعادة كتابة darknet.h
لا تقم بإلقاء cv::Mat إلى الفراغ، وبدلاً من ذلك استخدمه ككائن C++ مناسب
إصلاح أو الحفاظ على استخدام بنيات الصور الداخلية باستمرار
إصلاح البنية لأجهزة Jetson المستندة إلى ARM
* نظرًا لأن NVIDIA لم تعد تدعم أجهزة Jetson الأصلية، فمن غير المرجح أن يتم إصلاحها (لا يوجد مترجم 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
مربع محيط مستدير، أو شكل من أشكال دعم "الزاوية".
النقاط الرئيسية/الهيكل العظمي
خريطة الحرارة (جاري العمل)
التجزئة
في المثال، يتم استخدام عنصر علامة العنوان Markdown، ويتم استكمال بعض المحتوى منطقيًا وصقله وتعديل التنضيد. على سبيل المثال، يمكن أن تؤدي إضافة الأرقام التسلسلية الصينية والأرقام التسلسلية العربية وفواصل الأسطر والتنسيقات الأخرى إلى جعل عرض المعلومات أكثر تنظيمًا وجعلها أكثر ملاءمة للمستخدمين للتحقق منها.
آمل أن تكون هذه المقالة مفيدة للجميع!