กรอบการตรวจจับวัตถุ Darknet และ YOLO
เครื่องมือแก้ไข Downcodes จะทำให้คุณมีความเข้าใจในเชิงลึกเกี่ยวกับ Darknet ซึ่งเป็นเฟรมเวิร์กโครงข่ายประสาทเทียมแบบโอเพ่นซอร์สที่เขียนด้วยภาษา C, C++ และ CUDA และระบบตรวจจับเป้าหมายแบบเรียลไทม์ขั้นสูง YOLO (คุณดูเพียงครั้งเดียว) ที่ทำงานบนเฟรมเวิร์ก Darknet .
เฟรมเวิร์ก Darknet/YOLO นั้นเร็วกว่าและแม่นยำกว่าเฟรมเวิร์กอื่นและเวอร์ชัน YOLO เฟรมเวิร์กนี้เป็นโอเพ่นซอร์สฟรีโดยสมบูรณ์ คุณสามารถรวม Darknet/YOLO เข้ากับโปรเจ็กต์และผลิตภัณฑ์ที่มีอยู่ รวมถึงโปรเจ็กต์เชิงพาณิชย์ โดยไม่ต้องมีใบอนุญาตหรือค่าธรรมเนียม
Darknet V3 ("Jazz") เปิดตัวในเดือนตุลาคม 2024 สามารถเรียกใช้วิดีโอชุดข้อมูล LEGO ได้อย่างแม่นยำที่สูงถึง 1,000 FPS เมื่อใช้ NVIDIA RTX 3090 GPU ซึ่งหมายความว่าแต่ละเฟรมวิดีโอใช้เวลา 1 มิลลิวินาทีหรือน้อยกว่านั้น อ่าน ปรับขนาด และประมวลผลภายในโดย Darknet/ โยโล
หากคุณต้องการความช่วยเหลือหรือต้องการหารือเกี่ยวกับ Darknet/YOLO โปรดเข้าร่วมเซิร์ฟเวอร์ Discord ของ Darknet/YOLO: https://discord.gg/zSq8rtW
Darknet/YOLO เวอร์ชัน CPU สามารถทำงานบนอุปกรณ์ง่ายๆ เช่น Raspberry Pi, คลาวด์และเซิร์ฟเวอร์การทำงานร่วมกัน เดสก์ท็อป แล็ปท็อป และอุปกรณ์การฝึกอบรมระดับไฮเอนด์ Darknet/YOLO เวอร์ชัน GPU ต้องการ GPU ที่รองรับ CUDA ของ NVIDIA
Darknet/YOLO เป็นที่รู้จักว่าทำงานบน Linux, Windows และ Mac โปรดดูคำแนะนำในการสร้างด้านล่าง
เครื่องมือ Darknet ดั้งเดิมที่เขียนโดย Joseph Redmon ในปี 2556-2560 ไม่มีหมายเลขเวอร์ชัน เราคิดว่านี่คือเวอร์ชัน 0.x
ไลบรารี Darknet ยอดนิยมถัดไปที่ดูแลโดย Alexey Bochkovskiy ในช่วงปี 2560-2564 ยังไม่มีหมายเลขเวอร์ชันเช่นกัน เราเชื่อว่านี่คือเวอร์ชัน 1.x
เริ่มตั้งแต่ปี 2023 ห้องสมุด Darknet ที่สนับสนุนโดย Hank.ai และดูแลโดย Stéphane Charette เป็นห้องสมุดแห่งแรกที่มีคำสั่งเวอร์ชัน ตั้งแต่ปี 2023 ถึงสิ้นปี 2024 จะกลับมาเป็นเวอร์ชัน 2.x "OAK"
เป้าหมายคือการทำความคุ้นเคยกับฐานโค้ดในขณะที่ลดการหยุดชะงักของฟังก์ชันการทำงานที่มีอยู่ให้เหลือน้อยที่สุด
เขียนขั้นตอนการสร้างใหม่เพื่อให้เรามี 1 วิธีที่เป็นหนึ่งเดียวในการสร้างโดยใช้ CMake บน Windows และ Linux
แปลงฐานโค้ดเพื่อใช้คอมไพเลอร์ C++
Chart.png ระหว่างการฝึกอบรมขั้นสูง
การแก้ไขข้อบกพร่องและการเพิ่มประสิทธิภาพที่เกี่ยวข้องกับประสิทธิภาพ ซึ่งส่วนใหญ่เกี่ยวข้องกับการลดเวลาที่ต้องใช้ในการฝึกอบรมเครือข่าย
สาขาสุดท้ายของ codebase นี้คือเวอร์ชัน 2.1 ในสาขา v2
การพัฒนาระยะต่อไปจะเริ่มในกลางปี 2024 และจะเปิดตัวในเดือนตุลาคม 2024 คำสั่ง version ส่งคืน 3.x "JAZZ"
หากคุณต้องการรันคำสั่งใดคำสั่งหนึ่งเหล่านี้ คุณสามารถชำระเงินสาขา v2 ก่อนหน้าได้ตลอดเวลา โปรดแจ้งให้เราทราบ เพื่อให้เราตรวจสอบการเพิ่มคำสั่งที่ขาดหายไปกลับเข้าไปได้
ลบคำสั่งเก่าและคำสั่งที่ไม่ได้รับการดูแลออกจำนวนมาก
ในระหว่างการฝึกอบรมและการอนุมาน มีการปรับปรุงประสิทธิภาพหลายอย่าง
การเปลี่ยนแปลง C API ดั้งเดิม แอปพลิเคชันที่ใช้ Darknet API ดั้งเดิมจำเป็นต้องมีการแก้ไขเล็กน้อย: https://darknetcv.ai/api/api.html
Darknet V3 C และ C++ API ใหม่: https://darknetcv.ai/api/api.html
แอปพลิเคชันใหม่และโค้ดตัวอย่างใน src-examples: https://darknetcv.ai/api/files.html
เพื่อความสะดวก YOLO เวอร์ชันยอดนิยมหลายเวอร์ชันได้รับการฝึกอบรมล่วงหน้าในชุดข้อมูล MSCOCO ชุดข้อมูลนี้มี 80 หมวดหมู่และสามารถดูได้ในไฟล์ข้อความ cfg/coco.names
มีชุดข้อมูลที่เรียบง่ายกว่าและตุ้มน้ำหนักที่ได้รับการฝึกล่วงหน้าอื่นๆ หลายชุดสำหรับการทดสอบ Darknet/YOLO เช่น LEGO Gears และ Rolodex ดูคำถามที่พบบ่อยของ Darknet/YOLO สำหรับรายละเอียด
สามารถดาวน์โหลดตุ้มน้ำหนักที่ฝึกล่วงหน้าของ MSCOCO ได้จากสถานที่ต่างๆ มากมาย และยังสามารถดาวน์โหลดได้จากพื้นที่เก็บข้อมูลนี้ด้วย:
YOLOv2 พฤศจิกายน 2559
*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 วิดีโอ 1.avi
-
โปรดทราบว่าควรฝึกอบรมเครือข่ายของตนเอง MSCOCO มักจะใช้เพื่อยืนยันว่าทุกอย่างทำงานได้อย่างถูกต้อง
วิธีการสร้างต่างๆ ที่ให้ไว้ในอดีต (ก่อนปี 2023) ได้ถูกรวมเข้าเป็นโซลูชันแบบครบวงจร Darknet ต้องการ C++17 หรือสูงกว่า OpenCV และใช้ CMake เพื่อสร้างไฟล์โปรเจ็กต์ที่จำเป็น
คุณไม่จำเป็นต้องรู้ C++ เพื่อสร้าง ติดตั้ง หรือรัน Darknet/YOLO เช่นเดียวกับที่คุณไม่จำเป็นต้องเป็นช่างเครื่องก็ขับรถได้
คำแนะนำสำหรับ Google Colab จะเหมือนกับคำแนะนำสำหรับ Linux มีสมุดบันทึก Jupyter จำนวนมากที่แสดงวิธีการทำงานบางอย่าง เช่น การฝึกอบรมเครือข่ายใหม่
โปรดตรวจสอบสมุดบันทึกในไดเรกทอรีย่อย colab หรือทำตามคำแนะนำของ Linux ด้านล่าง
บทช่วยสอนการสร้าง Darknet บน Linux
ทางเลือก: หากคุณมี NVIDIA GPU ที่ทันสมัย คุณสามารถติดตั้ง CUDA หรือ CUDA+cuDNN ได้ในขณะนี้ หากติดตั้งแล้ว Darknet จะใช้ GPU ของคุณเพื่อเร่งการประมวลผลภาพ (และวิดีโอ)
คุณต้องลบไฟล์ CMakeCache.txt ออกจากไดเร็กทอรี Darknet build เพื่อบังคับให้ 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 ติดตั้ง build-essential git libopencv-dev cmake
mkdir ~/srccd ~/src
git clone 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 cmakesudo snap ติดตั้ง cmake --classic
-
หากคุณใช้ bash เป็นเชลล์คำสั่ง คุณจะต้องรีสตาร์ทเชลล์ ณ จุดนี้ หากใช้ปลาควรเลือกเส้นทางใหม่ทันที
ผู้ใช้ขั้นสูง:
หากคุณต้องการสร้างไฟล์การติดตั้ง RPM แทนไฟล์ DEB โปรดดูบรรทัดที่เกี่ยวข้องใน CM_package.cmake ก่อนที่จะรันแพ็คเกจ make -j4 คุณต้องแก้ไขสองบรรทัดนี้ก่อน:
-
SET (CPACKGENERATOR "DEB")# SET (CPACKGENERATOR "RPM")
-
สำหรับการแจกแจงเช่น Centos และ OpenSUSE คุณต้องสลับสองบรรทัดนี้ใน CM_package.cmake เป็น:
-
SET (CPACKGENERATOR "DEB") SET (CPACKGENERATOR "RPM")
-
หลังจากสร้างแพ็คเกจการติดตั้งแล้ว คุณสามารถใช้ตัวจัดการแพ็คเกจทั่วไปของการแจกจ่ายเพื่อติดตั้งได้ ตัวอย่างเช่น บนระบบที่ใช้ Debian เช่น Ubuntu:
-
sudo dpkg -i darknet-2.0.1-Linux.deb
-
การติดตั้งแพ็คเกจ .deb จะคัดลอกไฟล์ต่อไปนี้:
/usr/bin/darknet เป็นไฟล์ปฏิบัติการ Darknet ที่ใช้กันทั่วไป เรียกใช้เวอร์ชัน darknet จาก CLI เพื่อยืนยันว่าติดตั้งอย่างถูกต้อง
/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 ตามที่อธิบายไว้ข้างต้น
คำแนะนำเหล่านี้ถือเป็นการติดตั้ง Windows 11 22H2 ใหม่ทั้งหมด
เปิดหน้าต่างพร้อมท์คำสั่ง cmd.exe ปกติ และเรียกใช้คำสั่งต่อไปนี้:
-
winget ติดตั้ง Git.Git
winget ติดตั้ง Kitware.CMake
ติดตั้ง winget nsis.nsis
winget ติดตั้ง Microsoft.VisualStudio.2022.Community
-
ณ จุดนี้ เราจำเป็นต้องแก้ไขการติดตั้ง Visual Studio เพื่อรวมการรองรับแอปพลิเคชัน C++:
1. คลิกเมนู "Windows Start" และเรียกใช้ "Visual Studio Installer"
2. คลิกแก้ไข
3. เลือกการพัฒนาเดสก์ท็อปโดยใช้ C++
4. คลิกแก้ไขที่มุมขวาล่าง จากนั้นคลิกใช่
หลังจากดาวน์โหลดและติดตั้งทุกอย่างแล้ว ให้คลิกที่เมนู "Windows Start" อีกครั้ง และเลือก Developer Command Prompt สำหรับ VS 2022 อย่าใช้ PowerShell สำหรับขั้นตอนเหล่านี้ คุณจะประสบปัญหา!
ผู้ใช้ขั้นสูง:
แทนที่จะเรียกใช้พรอมต์คำสั่งของนักพัฒนา คุณยังสามารถใช้พรอมต์คำสั่งปกติหรือ ssh ไปยังอุปกรณ์และเรียกใช้ "Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat" ด้วยตนเองได้
หลังจากเรียกใช้พรอมต์คำสั่งสำหรับนักพัฒนาด้านบน (ไม่ใช่ PowerShell!) ให้รันคำสั่งต่อไปนี้เพื่อติดตั้ง Microsoft VCPKG ซึ่งจะใช้ในการสร้าง OpenCV:
-
CDC:
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 GPU ที่ทันสมัย คุณสามารถติดตั้ง CUDA หรือ CUDA+cuDNN ได้ในขณะนี้ หากติดตั้งแล้ว Darknet จะใช้ GPU ของคุณเพื่อเร่งการประมวลผลภาพ (และวิดีโอ)
คุณต้องลบไฟล์ CMakeCache.txt ออกจากไดเร็กทอรี Darknet build เพื่อบังคับให้ 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, include และไดเร็กทอรี lib ไปยัง C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/[version]/. คุณอาจต้องเขียนทับไฟล์บางไฟล์
หากคุณติดตั้ง CUDA หรือ CUDA+cuDNN ในภายหลัง หรืออัปเกรดเป็นซอฟต์แวร์ NVIDIA เวอร์ชันใหม่กว่า:
ต้องติดตั้ง CUDA หลังจาก Visual Studio หากคุณอัปเกรด Visual Studio อย่าลืมติดตั้ง CUDA ใหม่
หลังจากขั้นตอนก่อนหน้าทั้งหมดเสร็จสมบูรณ์ คุณจะต้องโคลน Darknet และสร้างมันขึ้นมา ในขั้นตอนนี้ เรายังต้องบอก CMake ด้วยว่า vcpkg อยู่ที่ไหน เพื่อให้สามารถค้นหา OpenCV และการอ้างอิงอื่นๆ ได้:
-
ซีดี c:src
โคลนคอมไพล์ https://github.com/hank-ai/darknet.gitcd darknet
mkdir 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;Configuration=Release 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;Configuration=Release 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 ในไดเร็กทอรี build ตัวอย่างเช่น:
-
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 CLI แล้ว ยังมี CLI ของโปรเจ็กต์ DarkHelp ซึ่งให้ CLI ที่แตกต่างจาก Darknet/YOLO DarkHelp CLI ยังมีคุณสมบัติขั้นสูงหลายประการที่ไม่มีให้บริการโดยตรงใน Darknet คุณสามารถใช้ทั้ง Darknet CLI และ DarkHelp CLI ได้ โดยไม่ได้แยกจากกัน
สำหรับคำสั่งส่วนใหญ่ที่แสดงด้านล่าง คุณจะต้องมีไฟล์ .weights และไฟล์ .names และ .cfg ที่เกี่ยวข้อง คุณสามารถฝึกเครือข่ายด้วยตัวเอง (ขอแนะนำอย่างยิ่ง!) หรือดาวน์โหลดเครือข่ายที่ผู้อื่นฝึกฝนและหาได้ฟรีบนอินเทอร์เน็ต ตัวอย่างของชุดข้อมูลก่อนการฝึกอบรมได้แก่:
LEGO Gears (ค้นหาวัตถุในภาพ)
Rolodex (ค้นหาข้อความในภาพ)
MSCOCO (การตรวจจับเป้าหมายหมวดหมู่มาตรฐาน 80)
คำสั่งที่สามารถรันได้ได้แก่:
แสดงรายการคำสั่งและตัวเลือกบางอย่างที่สามารถรันได้:
-
ความช่วยเหลือจาก Darknet
-
ตรวจสอบเวอร์ชั่น:
-
เวอร์ชันดาร์กเน็ต
-
ใช้รูปภาพเพื่อทำนาย:
-
V2: การทดสอบเครื่องตรวจจับ darknet 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: การทดสอบเครื่องตรวจจับ darknetanimals.dataanimals.cfganimalbest.weights -extoutput dog.jpg
V3: darknet01inference_images สัตว์ dog.jpg
DarkHelp: DarkHelp --jsonanimals.cfganimals.namesanimals_best.weights dog.jpg
-
ใช้วิดีโอ:
-
V2: การสาธิตเครื่องตรวจจับ darknetanimals.dataanimals.cfganimalbest.weights -extoutput test.mp4
V3: darknet03display_videosanimals.cfg test.mp4
DarkHelp: DarkHelpanimals.cfganimals.namesanimals_best.weights test.mp4
-
อ่านจากเว็บแคม:
-
V2: การสาธิตเครื่องตรวจจับ darknetanimals.dataanimals.cfganimals_best.weights -c 0
V3: สัตว์ darknet08display_webcam
-
บันทึกผลลัพธ์ลงในวิดีโอ:
-
V2: การสาธิตเครื่องตรวจจับ darknetanimals.dataanimals.cfganimalbest.weights test.mp4 -outfilename res.avi
V3: darknet05processvideosmultithreadedanimals.cfganimals.namesanimals_best.weights test.mp4
DarkHelp: DarkHelpanimals.cfganimals.namesanimals_best.weights test.mp4
-
เจสัน:
-
V2: การสาธิตเครื่องตรวจจับ darknetanimals.dataanimals.cfganimalbest.weights test50.mp4 -jsonport 8070 -mjpegport 8090 -extoutput
V3: darknet06imagestojson สัตว์ image1.jpg
DarkHelp: DarkHelp --jsonanimals.namesanimals.cfganimals_best.weights image1.jpg
-
ทำงานบน GPU เฉพาะ:
-
V2: การสาธิตเครื่องตรวจจับ darknetanimals.dataanimals.cfganimals_best.weights -i 1 test.mp4
-
ตรวจสอบความถูกต้องของโครงข่ายประสาทเทียม:
-
แผนที่เครื่องตรวจจับ darknet การขับรถ.ข้อมูลการขับรถ.cfg Driving_best.weights ...
ชื่อรหัส 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 Animals.data Animals.cfg Animalsbest.weights -iouthresh 0.75
-
การคำนวณจุดยึดใหม่ทำได้ดีที่สุดใน DarkMark เนื่องจากทำงาน 100 ครั้งติดต่อกัน และเลือกจุดยึดที่ดีที่สุดจากจุดยึดที่คำนวณทั้งหมด อย่างไรก็ตาม หากคุณต้องการใช้งานเวอร์ชันเก่าใน Darknet ให้ใช้คำสั่งต่อไปนี้:
-
เครื่องตรวจจับ darknet calcanchors Animals.data -numof_clusters 6 - กว้าง 320 - สูง 256
-
ฝึกอบรมเครือข่ายใหม่:
-
เครื่องตรวจจับ darknet -map -dont_show รถไฟanimals.dataanimals.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. ใช้โปรแกรมแก้ไขข้อความเพื่อแก้ไขไฟล์animals.names ระบุหมวดหมู่ที่คุณต้องการใช้ คุณต้องมีหนึ่งรายการต่อบรรทัด ไม่มีบรรทัดว่าง และไม่มีความคิดเห็น สำหรับตัวอย่างนี้ ไฟล์ .names จะมี 4 บรรทัดพอดี:
-
สุนัข
แมว
นก
ม้า
-
5. สร้างไฟล์ข้อความanimals.dataในโฟลเดอร์เดียวกัน สำหรับตัวอย่างนี้ ไฟล์ .data จะประกอบด้วย:
-
ชั้นเรียน = 4
รถไฟ = /home/username/nn/animals/animals_train.txt
valid = /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 FAQ
7. สร้างไฟล์ข้อความ "train" และ "valid" ที่มีชื่ออยู่ในไฟล์ .data ไฟล์ข้อความทั้งสองนี้จำเป็นต้องแยกรายการรูปภาพทั้งหมดที่ Darknet ต้องใช้สำหรับการฝึกอบรมและการตรวจสอบความถูกต้องเพื่อคำนวณ mAP% มีหนึ่งภาพต่อแถว เส้นทางและชื่อไฟล์อาจเป็นแบบสัมพัทธ์หรือแบบสัมบูรณ์ก็ได้
8. ใช้โปรแกรมแก้ไขข้อความเพื่อแก้ไขไฟล์ .cfg ของคุณ
* ตรวจสอบให้แน่ใจว่าชุด = 64
* ให้ความสนใจกับเขตการปกครอง ขึ้นอยู่กับขนาดเครือข่ายและจำนวนหน่วยความจำที่มีอยู่ใน GPU คุณอาจต้องเพิ่มการแบ่งย่อย ค่าที่เหมาะสมที่สุดคือ 1 ดังนั้นให้เริ่มด้วย 1 หากคุณไม่สามารถใช้ 1 โปรดดูคำถามที่พบบ่อยของ Darknet/YOLO
โปรดทราบว่าค่าที่เหมาะสมที่สุดสำหรับ maxbatches=.... เพื่อเริ่มต้นด้วยคือ 2,000 เท่าของจำนวนคลาส สำหรับตัวอย่างนี้ เรามีสัตว์ 4 ตัว ดังนั้น 4 2000 = 8000 ซึ่งหมายความว่าเราจะใช้ maxbatches=8000
* หมายเหตุขั้นตอน=.... ควรตั้งค่าเป็น 80% และ 90% ของ maxbatches สำหรับตัวอย่างนี้ เราจะใช้ขั้นตอน = 6400,7200 เนื่องจากตั้งค่า maxbatches เป็น 8000
* โปรดทราบว่า width=... และ height=.... นี่คือขนาดเครือข่าย คำถามที่พบบ่อยเกี่ยวกับ Darknet/YOLO อธิบายวิธีคำนวณขนาดที่เหมาะสมที่สุดที่จะใช้
* ค้นหาบรรทัด class=... ในส่วน [convolutional] และแก้ไขก่อนแต่ละส่วน [yolo] เพื่อรวมจำนวนคลาสจากไฟล์ .names สำหรับตัวอย่างนี้ เราจะใช้ class=4
ค้นหาบรรทัดตัวกรอง=... ในส่วน [convolutional] ก่อนแต่ละส่วน [yolo] ค่าที่ใช้คือ (จำนวนหมวด + 5) 3. ซึ่งหมายความว่าสำหรับตัวอย่างนี้ (4 + 5) * 3 = 27 ดังนั้นเราจึงใช้ตัวกรอง=27 ในบรรทัดที่เหมาะสม
9. เริ่มการฝึก! รันคำสั่งต่อไปนี้:
-
ซีดี ~/nn/สัตว์/
เครื่องตรวจจับ darknet -map -dont_show รถไฟanimals.dataanimals.cfg
-
จงอดทน ตุ้มน้ำหนักที่ดีที่สุดจะถูกบันทึกเป็นanimals_best.weights และติดตามความคืบหน้าของการอบรมได้จากไฟล์ Chart.png ดูคำถามที่พบบ่อยของ Darknet/YOLO สำหรับพารามิเตอร์เพิ่มเติมที่คุณอาจต้องการใช้เมื่อฝึกเครือข่ายใหม่
หากคุณต้องการดูรายละเอียดเพิ่มเติมระหว่างการฝึก ให้เพิ่มพารามิเตอร์ --verbose ตัวอย่างเช่น:
-
เครื่องตรวจจับ darknet -map -dont_show --verbose รถไฟanimals.dataanimals.cfg
-
ในการจัดการโปรเจ็กต์ Darknet/YOLO ของคุณ ใส่คำอธิบายประกอบรูปภาพ ตรวจสอบคำอธิบายประกอบของคุณ และสร้างไฟล์ที่จำเป็นสำหรับการฝึกอบรมกับ Darknet โปรดดู DarkMark
หากต้องการรับ CLI ทางเลือก Darknet อันทรงพลัง ให้ใช้การจัดเรียงรูปภาพ ติดตามวัตถุในวิดีโอของคุณ หรือใช้ C++ API อันทรงพลังที่สามารถใช้งานได้ง่ายในแอปพลิเคชันเชิงพาณิชย์ ดู DarkHelp
โปรดตรวจสอบคำถามที่พบบ่อยของ Darknet/YOLO เพื่อดูว่าสามารถช่วยตอบคำถามของคุณได้หรือไม่
ดูบทแนะนำและวิดีโอตัวอย่างมากมายในช่อง YouTube ของ Stéphane
หากคุณมีคำถามหรือต้องการสนทนากับผู้ใช้ Darknet/YOLO คนอื่นๆ โปรดเข้าร่วมเซิร์ฟเวอร์ Darknet/YOLO Discord
อัปเดตล่าสุด: 30-10-2024
แทนที่ qsort() ที่ใช้ระหว่างการฝึกด้วย std::sort() (ยังมีอันอื่นที่ไม่ค่อยมีใครรู้จักอยู่)
กำจัด check_mistakes, getchar() และ system()
แปลง Darknet เพื่อใช้คอมไพเลอร์ C++ (g++ บน Linux, Visual Studio บน Windows)
แก้ไขการสร้าง Windows
แก้ไขการสนับสนุน Python
สร้างไลบรารี Darknet
เปิดใช้งานป้ายกำกับที่คาดเดาอีกครั้ง (รหัส "ตัวอักษร")
เปิดใช้งานรหัส 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 เก่า
การแยกวิเคราะห์บรรทัดคำสั่งที่ดีขึ้นและสม่ำเสมอยิ่งขึ้น (อยู่ระหว่างดำเนินการ)
ลบรหัสอักขระทั้งหมดและแทนที่ด้วย std::string
อย่าซ่อนคำเตือนและล้างคำเตือนของคอมไพเลอร์ (อยู่ระหว่างดำเนินการ)
ควรใช้ cv::Mat แทนโครงสร้างรูปภาพที่กำหนดเองใน C (อยู่ระหว่างดำเนินการ)
แทนที่ฟังก์ชันรายการเก่าด้วย std::vector หรือ std::list
แก้ไขการรองรับภาพระดับสีเทา 1 แชนเนล
เพิ่มการรองรับภาพ N-channel โดยที่ N > 3 (เช่น รูปภาพที่มีความลึกเป็นพิเศษหรือช่องระบายความร้อน)
การล้างโค้ดอย่างต่อเนื่อง (อยู่ระหว่างดำเนินการ)
แก้ไขปัญหา CUDA/CUDNN สำหรับ GPU ทั้งหมด
เขียนโค้ด CUDA+cuDNN ใหม่
พิจารณาเพิ่มการรองรับ GPU ที่ไม่ใช่ NVIDIA
กล่องขอบเขตแบบหมุนหรือการรองรับ "มุม" บางชนิด
ประเด็นสำคัญ/โครงกระดูก
แผนที่ความร้อน (อยู่ระหว่างดำเนินการ)
การแบ่งส่วน