กรอบการตรวจจับวัตถุ Darknet และ YOLO
Darknet เป็นเฟรมเวิร์กโครงข่ายประสาทเทียมแบบโอเพ่นซอร์สที่เขียนด้วยภาษา C, C++ และ CUDA
YOLO (You Only Look Once) เป็นระบบตรวจจับวัตถุแบบเรียลไทม์ที่ล้ำสมัย ซึ่งทำงานในกรอบ Darknet
อ่านวิธีที่ Hank.ai ช่วยเหลือชุมชน Darknet/YOLO
ประกาศ Darknet V3 "Jazz"
ดูเว็บไซต์ Darknet/YOLO
โปรดอ่านคำถามที่พบบ่อยของ Darknet/YOLO
เข้าร่วมเซิร์ฟเวอร์ Discord ของ Darknet/YOLO
เอกสาร
1. กระดาษ YOLOv7
2. กระดาษปรับขนาด-YOLOv4
3. กระดาษ YOLOv4
4. กระดาษ YOLOv3
ข้อมูลทั่วไป
เฟรมเวิร์ก Darknet/YOLO ยังคงเร็วและแม่นยำมากกว่าเฟรมเวิร์กและเวอร์ชันอื่นๆ ของ YOLO
เฟรมเวิร์กนี้เป็นทั้งฟรีและโอเพ่นซอร์สโดยสมบูรณ์ คุณสามารถรวม Darknet/YOLO เข้ากับโปรเจ็กต์และผลิตภัณฑ์ที่มีอยู่ รวมถึงโปรเจ็กต์เชิงพาณิชย์ โดยไม่ต้องมีใบอนุญาตหรือจ่ายค่าธรรมเนียม
Darknet V3 ("Jazz") ที่เปิดตัวในเดือนตุลาคม 2024 สามารถรันวิดีโอชุดข้อมูล LEGO ได้อย่างแม่นยำที่สูงถึง 1,000 FPS เมื่อใช้ NVIDIA RTX 3090 GPU ซึ่งหมายความว่าแต่ละเฟรมวิดีโอจะถูกอ่าน ปรับขนาด และประมวลผลโดย Darknet/YOLO ใน 1 มิลลิวินาทีหรือ น้อย.
โปรดเข้าร่วมเซิร์ฟเวอร์ Darknet/YOLO Discord หากคุณต้องการความช่วยเหลือหรือต้องการหารือเกี่ยวกับ Darknet/YOLO: https://discord.gg/zSq8rtW
Darknet/YOLO เวอร์ชัน CPU สามารถทำงานบนอุปกรณ์ง่ายๆ เช่น Raspberry Pi, เซิร์ฟเวอร์คลาวด์และ colab, เดสก์ท็อป, แล็ปท็อป และอุปกรณ์ฝึกอบรมระดับไฮเอนด์ Darknet/YOLO เวอร์ชัน GPU ต้องใช้ GPU ที่รองรับ CUDA จาก NVIDIA
Darknet/YOLO เป็นที่รู้จักว่าทำงานบน Linux, Windows และ Mac ดูคำแนะนำการสร้างด้านล่าง
เวอร์ชันดาร์กเน็ต
เครื่องมือ Darknet ดั้งเดิมที่เขียนโดย Joseph Redmon ในปี 2556-2560 ไม่มีหมายเลขเวอร์ชัน เราพิจารณาเวอร์ชันนี้ 0.x
repo Darknet ยอดนิยมถัดไปที่ดูแลโดย Alexey Bochkovskiy ระหว่างปี 2560-2564 ยังไม่มีหมายเลขเวอร์ชันเช่นกัน เราพิจารณาเวอร์ชัน 1.x นี้
repo Darknet ที่สนับสนุนโดย Hank.ai และดูแลโดย Stéphane Charette ซึ่งเริ่มในปี 2023 เป็นรุ่นแรกที่มีคำสั่งเวอร์ชัน ตั้งแต่ปี 2023 จนถึงปลายปี 2024 ส่งคืนเวอร์ชัน 2.x "OAK"
เป้าหมายคือการพยายามทำลายฟังก์ชันการทำงานที่มีอยู่ให้เหลือเพียงเล็กน้อยในขณะที่ทำความคุ้นเคยกับโค้ดเบส
การเปลี่ยนแปลงที่สำคัญในเวอร์ชันนี้ได้แก่:
1. เขียนขั้นตอนการสร้างใหม่เพื่อให้มี 1 วิธีที่เป็นหนึ่งเดียวในการสร้างโดยใช้ CMake บนทั้ง Windows และ Linux
2. แปลง codebase เพื่อใช้คอมไพเลอร์ C++
3. ปรับปรุง Chart.png ขณะฝึกอบรม
4. การแก้ไขข้อบกพร่องและการเพิ่มประสิทธิภาพที่เกี่ยวข้องกับประสิทธิภาพ ซึ่งส่วนใหญ่เกี่ยวข้องกับการลดเวลาที่ใช้ในการฝึกอบรมเครือข่าย
สาขาสุดท้ายของ codebase นี้คือเวอร์ชัน 2.1 ในสาขา v2
การพัฒนาระยะต่อไปเริ่มต้นในกลางปี 2024 และเปิดตัวในเดือนตุลาคม 2024 ขณะนี้คำสั่ง version ส่งคืน 3.x "JAZZ"
คุณสามารถชำระเงินสาขา v2 ก่อนหน้าได้ตลอดเวลา หากคุณต้องการรันคำสั่งใดคำสั่งหนึ่งเหล่านี้ แจ้งให้เราทราบเพื่อให้เราตรวจสอบการเพิ่มคำสั่งที่หายไปกลับเข้าไปได้
การเปลี่ยนแปลงที่สำคัญในเวอร์ชันนี้ได้แก่:
1. ลบคำสั่งเก่าและคำสั่งที่ไม่ได้รับการดูแลออกจำนวนมาก
2. การปรับปรุงประสิทธิภาพหลายอย่าง ทั้งในขณะฝึกอบรมและระหว่างการอนุมาน
3. Legacy C API ได้รับการแก้ไข แอปพลิเคชันที่ใช้ Darknet API ดั้งเดิมจะต้องมีการแก้ไขเล็กน้อย: https://darknetcv.ai/api/api.html
4. Darknet V3 C และ C++ API ใหม่: https://darknetcv.ai/api/api.html
5. แอพใหม่และโค้ดตัวอย่างใน src-examples: https://darknetcv.ai/api/files.html
MSCOCO ตุ้มน้ำหนักที่ผ่านการฝึกอบรมล่วงหน้า
YOLO เวอร์ชันยอดนิยมหลายเวอร์ชันได้รับการฝึกอบรมล่วงหน้าเพื่อความสะดวกในชุดข้อมูล MSCOCO ชุดข้อมูลนี้มี 80 คลาส ซึ่งสามารถดูได้ในไฟล์ข้อความ cfg/coco.names
มีชุดข้อมูลที่เรียบง่ายกว่าและตุ้มน้ำหนักที่ได้รับการฝึกล่วงหน้าอื่นๆ หลายชุดสำหรับการทดสอบ Darknet/YOLO เช่น LEGO Gears และ Rolodex ดูคำถามที่พบบ่อยของ Darknet/YOLO สำหรับรายละเอียด
ตุ้มน้ำหนักที่ฝึกล่วงหน้าของ MSCOCO สามารถดาวน์โหลดได้จากหลายตำแหน่ง และยังสามารถดาวน์โหลดได้จากที่เก็บนี้อีกด้วย:
1. YOLOv2 พฤศจิกายน 2559
- YOLOv2-จิ๋ว
- YOLOv2-เต็ม
2. YOLOv3 พฤษภาคม 2018
- YOLOv3-จิ๋ว
- YOLOv3-เต็ม
3. YOLOv4 พฤษภาคม 2020
- YOLOv4-จิ๋ว
- YOLOv4-เต็ม
4. 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 เช่นเดียวกับที่คุณไม่จำเป็นต้องเป็นช่างเครื่องก็ขับรถได้
ระวังหากคุณกำลังติดตามบทช่วยสอนเก่าที่มีขั้นตอนการสร้างที่ซับซ้อนมากขึ้น หรือขั้นตอนการสร้างที่ไม่ตรงกับสิ่งที่อยู่ใน readme นี้ ขั้นตอนการสร้างใหม่ตามที่อธิบายไว้ด้านล่างเริ่มต้นในเดือนสิงหาคม 2023
นักพัฒนาซอฟต์แวร์ควรไปที่ https://darknetcv.ai/ เพื่อรับข้อมูลเกี่ยวกับภายในของเฟรมเวิร์กการตรวจจับวัตถุ Darknet/YOLO
Google Colab
วิธีการของ Google Colab เหมือนกับวิธีการของ Linux มีสมุดบันทึก Jupyter หลายเครื่องที่แสดงวิธีทำงานบางอย่าง เช่น การฝึกอบรมเครือข่ายใหม่
ดูสมุดบันทึกในไดเรกทอรีย่อย colab และ/หรือทำตามคำแนะนำของ Linux ด้านล่าง
วิธีการลินุกซ์ CMake
1. ติดตั้งแพ็คเกจที่จำเป็น:
`ทุบตี
sudo apt-get ติดตั้ง build-essential git libopencv-dev cmake
-
2. โคลนพื้นที่เก็บข้อมูล Darknet:
`ทุบตี
mkdir ~/srccd ~/src
git clone https://github.com/hank-ai/darknetcd darknet
-
3. สร้างไดเร็กทอรี build และรัน CMake:
`ทุบตี
mkdir buildcd สร้าง
cmake -DCMAKEBUILDTYPE=ปล่อย ..
-
4. สร้าง Darknet:
`ทุบตี
ทำ -j4
-
5. จัดทำแพ็คเกจและติดตั้ง Darknet:
`ทุบตี
บรรจุุภัณฑ์
sudo dpkg -i darknet-VERSION.deb
-
6. ตรวจสอบการติดตั้ง:
`ทุบตี
เวอร์ชันดาร์กเน็ต
-
วิธี Windows CMake
1. ติดตั้งแพ็คเกจที่จำเป็น:
`ทุบตี
ติดตั้ง winget Git.Git ติดตั้ง winget Kitware.CMake ติดตั้ง winget nsis.nsis ติดตั้ง winget Microsoft.VisualStudio.2022.Community
-
2. แก้ไขการติดตั้ง Visual Studio:
- คลิกที่เมนู "Windows Start" และเรียกใช้ "Visual Studio Installer"
- คลิกที่แก้ไข
- เลือกการพัฒนาเดสก์ท็อปด้วย C++
- คลิก Modify ที่มุมขวาล่าง จากนั้นคลิก ใช่
3. เปิดพรอมต์คำสั่งสำหรับนักพัฒนาสำหรับ VS 2022:
- คลิกที่เมนู "Windows Start" และเลือก Developer Command Prompt สำหรับ VS 2022 อย่าใช้ PowerShell สำหรับขั้นตอนเหล่านี้
4. ติดตั้ง Microsoft VCPKG:
`ทุบตี
ซีดี 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 [contrib, dnn, freetype, jpeg, openmp,png, webp, world]:x64-windows
-
5. พื้นที่เก็บข้อมูล Clone Darknet:
`ทุบตี
ซีดี c:src
โคลนคอมไพล์ https://github.com/hank-ai/darknet.gitcd darknet
-
6. สร้างไดเร็กทอรี build และรัน CMake:
`ทุบตี
mkdir buildcd สร้าง
cmake -DCMAKEBUILDTYPE=Release -DCMAKETOOLCHAINFILE=C:/src/vcpkg/scripts/buildsystems/vcpkg.cmake ..
-
7. สร้าง Darknet:
`ทุบตี
msbuild.exe /property:Platform=x64;Configuration=Release /target:Build -maxCpuCount -verbosity:normal -detailedSummary darknet.sln
-
8. สร้างแพ็คเกจการติดตั้ง NSIS:
`ทุบตี
msbuild.exe /property:Platform=x64;Configuration=Release PACKAGE.vcxproj
-
9. เรียกใช้วิซาร์ดการติดตั้ง NSIS:
- เปิดไฟล์ darknet-VERSION.exe ในไดเร็กทอรี build ตัวอย่างเช่น: darknet-2.0.31-win64.exe
10. ตรวจสอบการติดตั้ง:
`ทุบตี
C: เวอร์ชันโปรแกรม FilesDarknetbindarknet.exe
-
การใช้ดาร์กเน็ต
คลีไอ
ต่อไปนี้ไม่ใช่รายการคำสั่งทั้งหมดที่ Darknet รองรับ
นอกจาก Darknet CLI แล้ว ยังมี CLI ของโปรเจ็กต์ DarkHelp ซึ่งมอบ CLI ทางเลือกให้กับ Darknet/YOLO DarkHelp CLI ยังมีคุณสมบัติขั้นสูงหลายประการที่ไม่สามารถใช้งานได้โดยตรงใน Darknet คุณสามารถใช้ทั้ง Darknet CLI และ DarkHelp CLI ร่วมกันได้ โดยไม่ได้แยกจากกัน
สำหรับคำสั่งส่วนใหญ่ที่แสดงด้านล่าง คุณจะต้องมีไฟล์ .weights พร้อมด้วยไฟล์ .names และ .cfg ที่เกี่ยวข้อง คุณสามารถฝึกเครือข่ายของคุณเองได้ (แนะนำเป็นอย่างยิ่ง!) หรือดาวน์โหลดโครงข่ายประสาทเทียมที่ใครบางคนได้ฝึกฝนและเปิดให้ใช้งานได้ฟรีบนอินเทอร์เน็ต ตัวอย่างของชุดข้อมูลที่ได้รับการฝึกอบรมล่วงหน้า ได้แก่:
1. LEGO Gears (ค้นหาวัตถุในภาพ)
2. Rolodex (ค้นหาข้อความในรูปภาพ)
3. MSCOCO (การตรวจจับวัตถุมาตรฐาน 80 คลาส)
คำสั่งให้รันได้แก่:
1. แสดงรายการคำสั่งและตัวเลือกที่เป็นไปได้ในการรัน:
`ทุบตี
ความช่วยเหลือจาก Darknet
-
2. ตรวจสอบเวอร์ชั่น:
`ทุบตี
เวอร์ชันดาร์กเน็ต
-
3. ทำนายโดยใช้รูปภาพ:
- V2:
`ทุบตี
การทดสอบเครื่องตรวจจับ darknet cars.data cars.cfg cars_best.weights image1.jpg
-
- V3:
`ทุบตี
darknet02displayภาพที่มีคำอธิบายประกอบcars.cfg image1.jpg
-
- ความช่วยเหลือด้านมืด:
`ทุบตี
DarkHelp cars.cfg cars.cfg cars_best.weights image1.jpg
-
4. พิกัดเอาต์พุต:
- V2:
`ทุบตี
การทดสอบเครื่องตรวจจับ darknetanimals.dataanimals.cfganimalbest.weights -extoutput dog.jpg
-
- V3:
`ทุบตี
darknet01inference_images สัตว์ dog.jpg
-
- ความช่วยเหลือด้านมืด:
`ทุบตี
DarkHelp --jsonanimals.cfganimals.namesanimals_best.weights dog.jpg
-
5. การทำงานกับวิดีโอ:
- V2:
`ทุบตี
การสาธิตเครื่องตรวจจับ darknetanimals.dataanimals.cfganimalbest.weights -extoutput test.mp4
-
- V3:
`ทุบตี
darknet03display_videosanimals.cfg test.mp4
-
- ความช่วยเหลือด้านมืด:
`ทุบตี
DarkHelp Animals.cfganimals.namesanimals_best.weights test.mp4
-
6. การอ่านจากเว็บแคม:
- V2:
`ทุบตี
การสาธิตเครื่องตรวจจับ darknetanimals.dataanimals.cfganimals_best.weights -c 0
-
- V3:
`ทุบตี
darknet08display_webcam สัตว์
-
7. บันทึกผลลัพธ์ลงในวิดีโอ:
- V2:
`ทุบตี
การสาธิตเครื่องตรวจจับ darknetanimals.dataanimals.cfganimalbest.weights test.mp4 -outfilename res.avi
-
- V3:
`ทุบตี
darknet05กระบวนการวิดีโอแบบมัลติเธรดanimals.cfganimals.namesanimals_best.weights test.mp4
-
- ความช่วยเหลือด้านมืด:
`ทุบตี
DarkHelp Animals.cfganimals.namesanimals_best.weights test.mp4
-
8. เจสัน:
- V2:
`ทุบตี
การสาธิตเครื่องตรวจจับ darknet Animals.data Animals.cfg Animalsbest.weights test50.mp4 -jsonport 8070 -mjpegport 8090 -extoutput
-
- V3:
`ทุบตี
darknet06imagestojson สัตว์ image1.jpg
-
- ความช่วยเหลือด้านมืด:
`ทุบตี
DarkHelp --jsonanimals.namesanimals.cfganimals_best.weights image1.jpg
-
9. ทำงานบน GPU เฉพาะ:
`ทุบตี
การสาธิตเครื่องตรวจจับ darknetanimals.dataanimals.cfganimals_best.weights -i 1 test.mp4
-
10. วิธีตรวจสอบความถูกต้องของโครงข่ายประสาทเทียม:
`ทุบตี
แผนที่เครื่องตรวจจับ 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
-
11. ในการตรวจสอบความแม่นยำ mAP@IoU=75:
`ทุบตี
แผนที่เครื่องตรวจจับ darknet Animals.data Animals.cfg Animalsbest.weights -iouthresh 0.75
-
12. การคำนวณจุดยึดใหม่:
- ทำได้ดีที่สุดใน DarkMark
- ใน Darknet ให้ใช้:
`ทุบตี
เครื่องตรวจจับ darknet calcanchors Animals.data -numof_clusters 6 - กว้าง 320 - สูง 256
-
13. ฝึกอบรมเครือข่ายใหม่:
`ทุบตี
ซีดี ~/nn/สัตว์/
เครื่องตรวจจับ darknet -map -dont_show รถไฟanimals.dataanimals.cfg
-
การฝึกอบรม
ลิงก์ด่วนไปยังส่วนที่เกี่ยวข้องของคำถามที่พบบ่อยเกี่ยวกับ Darknet/YOLO:
1. ฉันควรตั้งค่าไฟล์และไดเร็กทอรีของฉันอย่างไร?
2. ฉันควรใช้ไฟล์กำหนดค่าใด
3. ฉันควรใช้คำสั่งใดในการฝึกเครือข่ายของตัวเอง?
วิธีที่ง่ายที่สุดในการใส่คำอธิบายประกอบและฝึกฝนคือการใช้ DarkMark เพื่อสร้างไฟล์ Darknet ที่จำเป็นทั้งหมด นี่เป็นวิธีที่แนะนำในการฝึกโครงข่ายประสาทเทียมใหม่อย่างแน่นอน
หากคุณต้องการตั้งค่าไฟล์ต่างๆ ด้วยตนเองเพื่อฝึกเครือข่ายที่กำหนดเอง:
1. สร้างโฟลเดอร์ใหม่สำหรับโครงการของคุณ:
- สำหรับตัวอย่างนี้ โครงข่ายประสาทเทียมจะถูกสร้างขึ้นเพื่อตรวจจับสัตว์ ดังนั้นไดเร็กทอรีต่อไปนี้จะถูกสร้างขึ้น: ~/nn/animals/
2. คัดลอกไฟล์การกำหนดค่า Darknet เป็นเทมเพลต:
- ตัวอย่างเช่น คัดลอก cfg/yolov4-tiny.cfg ไปยังโฟลเดอร์โปรเจ็กต์ ตอนนี้คุณจะมี ~/nn/animals/animals.cfg
3. สร้างไฟล์ข้อความanimals.names:
- ไฟล์นี้จะมีรายการคลาสที่คุณต้องการตรวจจับ หนึ่งรายการต่อบรรทัด ตัวอย่างเช่น:
-
สุนัข
แมว
นก
ม้า
-
4. สร้างไฟล์ข้อความanimals.data:
- ไฟล์นี้ระบุเส้นทางไปยังข้อมูลการฝึกอบรมและการตรวจสอบ ตลอดจนชื่อและไดเร็กทอรีสำรอง ตัวอย่างเช่น:
-
คลาส=4
train=/home/username/nn/animals/animals_train.txt
valid=/home/username/nn/animals/animals_valid.txt
ชื่อ=/home/ชื่อผู้ใช้/nn/animals/animals.names
backup=/home/username/nn/animals
-
5. สร้างโฟลเดอร์สำหรับรูปภาพและคำอธิบายประกอบของคุณ:
- ตัวอย่างเช่น อาจเป็น ~/nn/animals/dataset รูปภาพแต่ละรูปจะต้องมีไฟล์ .txt ที่เกี่ยวข้องซึ่งอธิบายคำอธิบายประกอบสำหรับรูปภาพนั้น รูปแบบของไฟล์คำอธิบายประกอบ .txt มีความเฉพาะเจาะจงมาก คุณไม่สามารถสร้างไฟล์เหล่านี้ด้วยตนเองได้ เนื่องจากคำอธิบายประกอบแต่ละรายการจำเป็นต้องมีพิกัดที่แน่นอนสำหรับคำอธิบายประกอบ ดู DarkMark หรือซอฟต์แวร์อื่นที่คล้ายคลึงกันเพื่อใส่คำอธิบายประกอบภาพของคุณ รูปแบบคำอธิบายประกอบ YOLO มีอธิบายอยู่ใน Darknet/YOLO FAQ
6. สร้างไฟล์ข้อความ "train" และ "valid":
- ไฟล์ข้อความทั้งสองนี้จำเป็นต้องแสดงรายการรูปภาพทั้งหมดที่ Darknet ต้องใช้ในการฝึกอบรมและเพื่อตรวจสอบความถูกต้องเมื่อคำนวณ mAP% หนึ่งภาพต่อบรรทัด เส้นทางและชื่อไฟล์อาจเป็นแบบสัมพัทธ์หรือแบบสัมบูรณ์
7. แก้ไขไฟล์ .cfg ของคุณ:
- ชุด: ตั้งค่าเป็น 64
- เขตการปกครอง: เริ่มต้นด้วย 1 ดูคำถามที่พบบ่อยเกี่ยวกับ Darknet/YOLO หากคุณต้องการปรับเปลี่ยนตามความพร้อมของหน่วยความจำ
- maxbatches: ค่าเริ่มต้นที่ดีคือ 2,000 numberof_classes ในตัวอย่างนี้ เรามีสัตว์ 4 ตัว ดังนั้น 4 2000 = 8000
- ขั้นตอน: ตั้งค่าเป็น 80% และ 90% ของ maxbatches สำหรับตัวอย่างนี้ เราจะใช้ขั้นตอน = 6400,7200 เนื่องจากตั้งค่า maxbatches เป็น 8000
- ความกว้างและความสูง: นี่คือขนาดเครือข่าย คำถามที่พบบ่อยเกี่ยวกับ Darknet/YOLO อธิบายวิธีคำนวณขนาดที่ดีที่สุดที่จะใช้
- คลาส: แก้ไขบรรทัดนี้ด้วยจำนวนคลาสในไฟล์ .names ของคุณ สำหรับตัวอย่างนี้ เราจะใช้ class=4
- ตัวกรอง: ในส่วน [convolutional] ก่อนแต่ละส่วน [yolo] ให้แก้ไขตัวกรอง=... ด้วยค่า (numberofclasses + 5) * 3 สำหรับตัวอย่างนี้ เราจะใช้ตัวกรอง=27
8. เริ่มการฝึก:
`ทุบตี
ซีดี ~/nn/สัตว์/
เครื่องตรวจจับ darknet -map -dont_show รถไฟanimals.dataanimals.cfg
-
จงอดทน ตุ้มน้ำหนักที่ดีที่สุดจะถูกบันทึกเป็นanimals_best.weights สามารถติดตามความคืบหน้าของการฝึกอบรมได้โดยการดูไฟล์ Chart.png ดูคำถามที่พบบ่อยของ Darknet/YOLO สำหรับพารามิเตอร์เพิ่มเติมที่คุณอาจต้องการใช้เมื่อฝึกเครือข่ายใหม่
หากคุณต้องการดูรายละเอียดเพิ่มเติมระหว่างการฝึก ให้เพิ่มพารามิเตอร์ --verbose ตัวอย่างเช่น:
`ทุบตี
เครื่องตรวจจับ darknet -map -dont_show --verbose รถไฟanimals.dataanimals.cfg
-
เครื่องมือและลิงค์อื่นๆ
1. DarkMark: เพื่อจัดการโปรเจ็กต์ Darknet/YOLO ของคุณ ใส่คำอธิบายประกอบรูปภาพ ตรวจสอบคำอธิบายประกอบของคุณ และสร้างไฟล์ที่จำเป็นเพื่อฝึกฝนกับ Darknet
2. DarkHelp: สำหรับ CLI ทางเลือกที่แข็งแกร่งไปจนถึง Darknet เพื่อใช้การจัดเรียงรูปภาพ สำหรับการติดตามวัตถุในวิดีโอของคุณ หรือสำหรับ C++ API ที่แข็งแกร่งที่สามารถนำมาใช้ในแอปพลิเคชันเชิงพาณิชย์ได้อย่างง่ายดาย
3. คำถามที่พบบ่อยเกี่ยวกับ Darknet/YOLO: เพื่อช่วยตอบคำถามของคุณ
4. ช่อง YouTube ของ Stéphane: สำหรับวิดีโอแนะนำและตัวอย่าง
5. เซิร์ฟเวอร์ความไม่ลงรอยกันของ Darknet/YOLO: เพื่อสนทนากับผู้ใช้ Darknet/YOLO คนอื่นๆ และขอการสนับสนุน
แผนการทำงาน
อัปเดตล่าสุด 30-10-2024:
สมบูรณ์
1. สลับ qsort() เป็น std::sort() ที่ใช้ระหว่างการฝึกอบรม
2. กำจัด check_mistakes, getchar() และ system()
3. แปลง Darknet เพื่อใช้คอมไพเลอร์ C++
4. แก้ไขบิลด์ Windows
5. แก้ไขการรองรับ Python
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 ให้เป็นโมฆะ* แต่ใช้เป็นวัตถุ C++ ที่เหมาะสม
28. แก้ไขหรือให้สอดคล้องในการใช้งานโครงสร้างภาพภายใน
29. แก้ไขบิลด์สำหรับอุปกรณ์ Jetson ที่ใช้ ARM
30. อุปกรณ์ Jetson Orin ใหม่กำลังทำงานอยู่
31. แก้ไข Python API ใน V3
เป้าหมายระยะสั้น
1. สลับ printf() เป็น std::cout
2. ดูการสนับสนุนกล้อง zed เก่า
3. การแยกวิเคราะห์บรรทัดคำสั่งที่ดีขึ้นและสม่ำเสมอยิ่งขึ้น
เป้าหมายระยะกลาง
1. ลบโค้ด char* ทั้งหมดออก และแทนที่ด้วย std::string
2. อย่าซ่อนคำเตือนและล้างคำเตือนของคอมไพเลอร์
3. ใช้ cv::Mat ดีกว่าแทนโครงสร้างรูปภาพที่กำหนดเองใน C
4. แทนที่ฟังก์ชันรายการเก่าด้วย std::vector หรือ std::list
5. แก้ไขการรองรับภาพโทนสีเทา 1 แชนเนล
6. เพิ่มการรองรับรูปภาพ N-channel โดยที่ N > 3
7. การล้างโค้ดอย่างต่อเนื่อง
เป้าหมายระยะยาว
1. แก้ไขปัญหา CUDA/CUDNN กับ GPU ทั้งหมด
2. เขียนโค้ด CUDA+cuDNN อีกครั้ง
3. ดูการเพิ่มการรองรับ GPU ที่ไม่ใช่ NVIDIA
4. กล่องขอบเขตแบบหมุนหรือส่วนรองรับ "มุม" บางประเภท
5. จุดสำคัญ/โครงกระดูก
6. แผนที่ความร้อน
7. การแบ่งส่วน