กรอบการตรวจจับวัตถุ Darknet และ YOLO
โลโก้ !darknet และ hank.ai
Darknet เป็นเฟรมเวิร์กโครงข่ายประสาทเทียมแบบโอเพ่นซอร์สที่เขียนด้วยภาษา C, C++ และ CUDA โดยเป็นรากฐานอันทรงพลังสำหรับการพัฒนาและปรับใช้โมเดลการตรวจจับวัตถุ
YOLO (คุณดูเพียงครั้งเดียว) เป็นระบบตรวจจับวัตถุแบบเรียลไทม์ที่ล้ำสมัยซึ่งสร้างขึ้นบนเฟรมเวิร์ก Darknet มีความรวดเร็วและแม่นยำเป็นเลิศ ทำให้เป็นตัวเลือกยอดนิยมสำหรับการใช้งานต่างๆ
ต้องการเรียนรู้เพิ่มเติมว่า Hank.ai มีส่วนช่วยเหลือชุมชน Darknet/YOLO อย่างไร
สำรวจเว็บไซต์ทางการของ Darknet/YOLO:
เจาะลึกคำถามที่พบบ่อยเกี่ยวกับ Darknet/YOLO ที่ครอบคลุม:
เข้าร่วมชุมชน Darknet/YOLO Discord ที่มีชีวิตชีวา:
เอกสาร
YOLOv7: ลิงก์ไปยังกระดาษ
Scaled-YOLOv4: ลิงก์ไปยังกระดาษ
YOLOv4: ลิงก์ไปยังกระดาษ
YOLOv3: ลิงก์ไปยังกระดาษ
ข้อมูลทั่วไป
เฟรมเวิร์ก Darknet/YOLO ยังคงเป็นผู้นำในการตรวจจับวัตถุ โดยนำเสนอทั้งความได้เปรียบด้านความเร็วและความแม่นยำเหนือเฟรมเวิร์กอื่นๆ และเวอร์ชัน YOLO อย่างต่อเนื่อง
คุณสมบัติที่สำคัญ:
1. โอเพ่นซอร์สและฟรี: เฟรมเวิร์กนี้เป็นฟรีและเป็นโอเพ่นซอร์สทั้งหมด ช่วยให้คุณสามารถรวมเข้ากับโปรเจ็กต์ของคุณได้อย่างราบรื่นโดยไม่มีข้อจำกัดด้านลิขสิทธิ์
2. ประสิทธิภาพสูง: Darknet V3 ("Jazz") เปิดตัวในเดือนตุลาคม 2567 บรรลุประสิทธิภาพที่น่าประทับใจ โดยสูงถึง 1,000 FPS สำหรับชุดข้อมูล LEGO โดยใช้ NVIDIA RTX 3090 GPU
3. การปรับใช้ที่หลากหลาย: Darknet/YOLO เข้ากันได้กับอุปกรณ์หลากหลาย ตั้งแต่ Raspberry Pi และเซิร์ฟเวอร์คลาวด์ ไปจนถึงเดสก์ท็อปและอุปกรณ์ฝึกอบรมระดับไฮเอนด์
4. การสนับสนุนข้ามแพลตฟอร์ม: เป็นที่รู้กันว่าทำงานได้อย่างไร้ที่ติบนระบบปฏิบัติการ Linux, Windows และ Mac
ต้องการความช่วยเหลือหรือต้องการหารือเกี่ยวกับ Darknet/YOLO? เข้าร่วมชุมชนที่มีชีวิตชีวาบน Discord:
เวอร์ชันดาร์กเน็ต
วิวัฒนาการของ Darknet สามารถติดตามได้จากเวอร์ชัน:
1. เวอร์ชัน 0.x (2013-2017): เครื่องมือ Darknet ดั้งเดิมที่พัฒนาโดย Joseph Redmon ไม่มีหมายเลขเวอร์ชันที่เป็นทางการ
2. เวอร์ชัน 1.x (2017-2021): เวอร์ชันนี้ดูแลโดย Alexey Bochkovskiy และยังขาดหมายเลขเวอร์ชันด้วย
3. เวอร์ชัน 2.x "OAK" (2023): พื้นที่เก็บข้อมูล Darknet ซึ่งสนับสนุนโดย Hank.ai และดูแลโดย Stéphane Charette ได้แนะนำคำสั่งเวอร์ชัน เวอร์ชันนี้มีการปรับปรุงที่สำคัญ ได้แก่:
* ขั้นตอนการสร้างแบบรวมโดยใช้ CMake สำหรับทั้ง Windows และ Linux
* การแปลงเป็นคอมไพเลอร์ C++
* การแสดงภาพ Chart.png ที่ปรับปรุงแล้วในระหว่างการฝึกอบรม
* แก้ไขข้อผิดพลาดและเพิ่มประสิทธิภาพการทำงานเพื่อประสิทธิภาพการฝึกอบรม
4. เวอร์ชัน 2.1: สาขาสุดท้ายของโค้ดเบส v2
5. เวอร์ชัน 3.x "JAZZ" (ตุลาคม 2024): เปิดตัวรุ่นล่าสุด:
* การเพิ่มประสิทธิภาพสำหรับทั้งการฝึกอบรมและการอนุมาน
* C API ดั้งเดิมที่ได้รับการปรับเปลี่ยนต้องมีการปรับเปลี่ยนเล็กน้อยสำหรับแอปพลิเคชันที่ใช้ Darknet API ดั้งเดิม
* Darknet V3 C และ C++ API ใหม่
* แอปใหม่และโค้ดตัวอย่างในไดเร็กทอรี src-examples
เพื่อความเข้ากันได้กับเวอร์ชันเก่า ยังคงสามารถเข้าถึงสาขา v2 ได้ หากคุณต้องการใช้คำสั่งเฉพาะจากเวอร์ชันก่อนหน้า โปรดแจ้งให้เราทราบ แล้วเราจะลองเพิ่มคำสั่งเหล่านั้นกลับ
MSCOCO ตุ้มน้ำหนักที่ผ่านการฝึกอบรมล่วงหน้า
YOLO เวอร์ชันยอดนิยมหลายเวอร์ชันได้รับการฝึกอบรมล่วงหน้าในชุดข้อมูล MSCOCO ซึ่งเป็นจุดเริ่มต้นที่สะดวกสำหรับการทดลองกับเฟรมเวิร์ก MSCOCO มี 80 คลาส ซึ่งแสดงอยู่ในไฟล์ cfg/coco.names
ตุ้มน้ำหนักที่ผ่านการฝึกอบรมมาแล้ว:
YOLOv2 (พฤศจิกายน 2559):
* yolov2-tiny.weights
* yolov2-full.weights
YOLOv3 (พฤษภาคม 2018):
* yolov3-tiny.weights
* yolov3-full.weights
YOLOv4 (พฤษภาคม 2020):
* yolov4-tiny.weights
* yolov4-full.weights
YOLOv7 (สิงหาคม 2022):
* yolov7-tiny.weights
* yolov7-full.weights
ข้อควรจำ: แม้ว่าตุ้มน้ำหนักที่ได้รับการฝึกล่วงหน้าเหล่านี้จะมีประโยชน์สำหรับการสาธิต แต่การฝึกเครือข่ายของคุณเองสำหรับโซลูชันที่ปรับแต่งมานั้นจำเป็นอย่างยิ่ง MSCOCO ใช้เพื่อตรวจสอบว่าการตั้งค่าของคุณทำงานอย่างถูกต้องเป็นหลัก
ตัวอย่างคำสั่งที่ใช้ตุ้มน้ำหนักที่ผ่านการฝึกมาแล้ว:
`ทุบตี
แสดงภาพที่มีคำอธิบายประกอบ
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 CLI
DarkHelp coco.names yolov4-tiny.cfg yolov4-tiny.weights image1.jpg
DarkHelp coco.names yolov4-tiny.cfg yolov4-tiny.weights วิดีโอ 1.avi
-
อาคาร
Darknet ใช้ประโยชน์จาก CMake เพื่อปรับปรุงกระบวนการสร้างสำหรับทั้ง Windows และ Linux ต้องใช้ C++17 หรือคอมไพเลอร์รุ่นใหม่ ร่วมกับ OpenCV
คำแนะนำในการสร้างเป็นอันหนึ่งอันเดียวกัน โดยแทนที่วิธีการเก่าและซับซ้อนมากขึ้น
หมายเหตุ: หากคุณประสบปัญหากับบทช่วยสอนเก่าหรือขั้นตอนการสร้างที่ไม่สอดคล้องกับคู่มือนี้ โปรดดูคำแนะนำล่าสุดที่ให้ไว้ที่นี่
นักพัฒนาซอฟต์แวร์ควรไปที่ https://darknetcv.ai/ เพื่อดูข้อมูลเชิงลึกเกี่ยวกับการทำงานภายในของเฟรมเวิร์ก Darknet/YOLO
Google Colab
วิธีการของ Google Colab จะเหมือนกับวิธีการของ Linux
สำรวจสมุดบันทึกในไดเรกทอรีย่อย colab หรือทำตามคำแนะนำของ Linux ด้านล่าง
วิธีการลินุกซ์ CMake
1. ติดตั้งแพ็คเกจที่จำเป็น:
`ทุบตี
sudo apt-get ติดตั้ง build-essential git libopencv-dev cmake
-
2. โคลนพื้นที่เก็บข้อมูล Darknet:
`ทุบตี
mkdir ~/src
ซีดี ~/src
โคลนคอมไพล์ https://github.com/hank-ai/darknet
ซีดีดาร์กเน็ต
สร้าง mkdir
สร้างซีดี
-
3. กำหนดค่า CMake:
`ทุบตี
cmake -DCMAKEBUILDTYPE=ปล่อย ..
-
4. สร้าง Darknet:
`ทุบตี
ทำ -j4
-
5. แพ็คเกจ Darknet:
`ทุบตี
บรรจุุภัณฑ์
sudo dpkg -i darknet-VERSION.deb
-
ทางเลือก: CUDA หรือ CUDA+cuDNN สำหรับการเร่งความเร็ว GPU
ไปที่ 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:
ลบไฟล์ CMakeCache.txt ในไดเรกทอรีบิลด์ Darknet ของคุณเพื่อบังคับให้ CMake ค้นหาการอ้างอิงอีกครั้ง
สร้าง Darknet ขึ้นมาใหม่
วิธีอัปเกรด CMake บน Ubuntu:
`ทุบตี
sudo apt-get ล้าง cmake
sudo snap ติดตั้ง cmake --classic
-
ผู้ใช้ขั้นสูง:
หากต้องการสร้างไฟล์การติดตั้ง RPM แทนไฟล์ DEB ให้แก้ไข CPACKGENERATOR ใน CMpackage.cmake เป็น "RPM"
สำหรับ Centos และ OpenSUSE ให้เปลี่ยน CPACK_GENERATOR เป็น "RPM"
หลังจากสร้างแพ็คเกจการติดตั้งแล้ว ให้ใช้ตัวจัดการแพ็คเกจที่เหมาะสมเพื่อติดตั้ง
การยืนยัน:
เรียกใช้เวอร์ชัน darknet จากบรรทัดคำสั่งเพื่อยืนยันการติดตั้ง
วิธี Windows 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. ติดตั้ง Microsoft VCPKG:
`ทุบตี
CDC:
mkdir c:src
ซีดี c:src
โคลนคอมไพล์ https://github.com/microsoft/vcpkg
ซีดี 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 สำหรับการเร่งความเร็ว GPU
* ติดตั้ง CUDA ตามคำแนะนำที่ https://developer.nvidia.com/cuda-downloads
* ติดตั้ง cuDNN โดยใช้คำแนะนำที่ https://developer.nvidia.com/rdp/cudnn-download หรือ https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#download-windows
หลังการติดตั้ง ตรวจสอบให้แน่ใจว่าสามารถเข้าถึง nvcc.exe และ nvidia-smi.exe ได้ คุณอาจต้องแก้ไขตัวแปร PATH ของคุณ
หากคุณติดตั้ง CUDA หรือ CUDA+cuDNN ในภายหลังหรืออัพเกรดซอฟต์แวร์ NVIDIA:
* ตรวจสอบให้แน่ใจว่าติดตั้ง CUDA หลังจาก Visual Studio
* ติดตั้ง CUDA ใหม่หากอัปเกรด Visual Studio แล้ว
6. โคลน Darknet และสร้างมันขึ้นมา:
`ทุบตี
ซีดี c:src
โคลนคอมไพล์ https://github.com/hank-ai/darknet.git
ซีดีดาร์กเน็ต
สร้าง mkdir
สร้างซีดี
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
-
7. คัดลอก CUDA DLLs (หากจำเป็น):
* หากคุณได้รับข้อผิดพลาดเกี่ยวกับ CUDA หรือ cuDNN DLLs ที่หายไป ให้คัดลอกไฟล์เหล่านั้นลงในไดเร็กทอรีเอาต์พุต Darknet ด้วยตนเอง ตัวอย่างเช่น:
`ทุบตี
คัดลอก "C: Program FilesNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll" src-cliRelease
-
8. รันคำสั่ง msbuild.exe อีกครั้งเพื่อสร้างแพ็คเกจการติดตั้ง NSIS:
`ทุบตี
msbuild.exe /property:Platform=x64;Configuration=Release PACKAGE.vcxproj
-
ผู้ใช้ขั้นสูง:
คุณสามารถใช้ไฟล์โซลูชัน Darknet.sln ที่สร้างโดย CMake ภายใน Visual Studio GUI แทนเครื่องมือบรรทัดคำสั่ง
การยืนยัน:
เรียกใช้เวอร์ชัน C:srcDarknetbuildsrc-cliReleasedarknet.exe เพื่อยืนยันการติดตั้ง
หากต้องการติดตั้ง Darknet ให้รันวิซาร์ดการติดตั้ง NSIS:
ค้นหาไฟล์ darknet-VERSION.exe ในไดเร็กทอรี build
เรียกใช้วิซาร์ดการติดตั้งเพื่อติดตั้งแอปพลิเคชัน CLI ไลบรารี รวมไฟล์ และ DLL ที่จำเป็น
การใช้ดาร์กเน็ต
คลีไอ
หมายเหตุ: คำสั่งต่อไปนี้ไม่ได้ครอบคลุมทั้งหมด
นอกเหนือจาก Darknet CLI แล้ว ให้พิจารณาใช้ CLI ของโปรเจ็กต์ DarkHelp ซึ่งมีฟังก์ชันทางเลือกและคุณสมบัติขั้นสูง
คำสั่งส่วนใหญ่ต้องการไฟล์ .weights พร้อมด้วยไฟล์ .name และ .cfg ที่เกี่ยวข้อง คุณสามารถฝึกอบรมเครือข่ายของคุณเองหรือดาวน์โหลดโมเดลที่ได้รับการฝึกอบรมล่วงหน้าจากอินเทอร์เน็ต ตัวอย่างได้แก่:
LEGO Gears: การตรวจจับวัตถุในภาพ
Rolodex: การตรวจจับข้อความในภาพ
MSCOCO: การตรวจจับวัตถุมาตรฐาน 80 คลาส
คำสั่ง:
1. ความช่วยเหลือ:
`ทุบตี
ความช่วยเหลือจาก Darknet
-
2. เวอร์ชัน:
`ทุบตี
เวอร์ชันดาร์กเน็ต
-
3. การทำนายโดยใช้รูปภาพ:
* V2:
`ทุบตี
การทดสอบเครื่องตรวจจับ darknet cars.data cars.cfg cars_best.weights image1.jpg
-
* V3:
`ทุบตี
darknet02displayภาพที่มีคำอธิบายประกอบcars.cfg image1.jpg
-
* DarkHelp:
`ทุบตี
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:
`ทุบตี
DarkHelp --jsonanimals.cfganimals.namesanimals_best.weightsdog.jpg
-
5. การทำงานกับวิดีโอ:
* V2:
`ทุบตี
การสาธิตเครื่องตรวจจับ darknetanimals.dataanimals.cfganimalbest.weights -extoutput test.mp4
-
* V3:
`ทุบตี
darknet03display_videosanimals.cfg test.mp4
-
* DarkHelp:
`ทุบตี
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:
`ทุบตี
DarkHelp Animals.cfganimals.namesanimals_best.weights test.mp4
-
8. เอาต์พุต JSON:
* V2:
`ทุบตี
การสาธิตเครื่องตรวจจับ darknet Animals.data Animals.cfg Animalsbest.weights test50.mp4 -jsonport 8070 -mjpegport 8090 -extoutput
-
* V3:
`ทุบตี
darknet06imagestojson สัตว์ image1.jpg
-
* DarkHelp:
`ทุบตี
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 ...
-
11. การคำนวณ mAP@IoU=75:
`ทุบตี
แผนที่เครื่องตรวจจับ darknet Animals.data Animals.cfg Animalsbest.weights -iouthresh 0.75
-
12. การคำนวณจุดยึดใหม่:
`ทุบตี
เครื่องตรวจจับ darknet calcanchors Animals.data -numof_clusters 6 - กว้าง 320 - สูง 256
-
13. การฝึกอบรมเครือข่ายใหม่:
`ทุบตี
เครื่องตรวจจับ darknet -map -dont_show รถไฟanimals.dataanimals.cfg
-
การฝึกอบรม
สำหรับคำอธิบายประกอบและการฝึกอบรมที่เรียบง่าย ให้ใช้ DarkMark เป็นแนวทางที่แนะนำสำหรับการสร้างโครงข่ายประสาทเทียมใหม่
การตั้งค่าการฝึกด้วยตนเอง (หากต้องการ):
1. สร้างโฟลเดอร์โครงการ:
* ตัวอย่างเช่น ~/nn/animals/ สำหรับการตรวจจับสัตว์
2. คัดลอกไฟล์การกำหนดค่า Darknet เป็นเทมเพลต:
* ตัวอย่างเช่น cfg/yolov4-tiny.cfg
3. สร้างไฟล์ข้อความanimals.names:
* ระบุแต่ละชั้นเรียน บรรทัดละ 1 รายการ โดยไม่ต้องเว้นบรรทัดหรือแสดงความคิดเห็น ตัวอย่าง:
-
สุนัข
แมว
นก
ม้า
-
4. สร้างไฟล์ข้อความanimals.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
-
5. สร้างโฟลเดอร์สำหรับรูปภาพและคำอธิบายประกอบ (เช่น ~/nn/animals/dataset)
* ใส่คำอธิบายประกอบภาพโดยใช้ DarkMark หรือซอฟต์แวร์ที่คล้ายกัน รูปแบบคำอธิบายประกอบ YOLO มีระบุไว้ในคำถามที่พบบ่อยของ Darknet/YOLO
6. สร้างanimaltrain.txt และanimalvalid.txt:
* แสดงรายการรูปภาพทั้งหมดที่ใช้สำหรับการฝึกอบรมและการตรวจสอบ หนึ่งภาพต่อบรรทัด
7. แก้ไขไฟล์ .cfg:
* ชุดชุด=64.
* ปรับการแบ่งย่อยตามขนาดเครือข่ายและหน่วยความจำ GPU ของคุณ เริ่มต้นด้วยการแบ่งเขต = 1
* ตั้งค่า max_batches เป็น 2,000 เท่าของจำนวนคลาส (เช่น 8,000 สำหรับ 4 คลาส)
* ตั้งค่าขั้นตอนเป็น 80% และ 90% ของ max_batches
* ปรับความกว้างและความสูงให้ตรงกับขนาดเครือข่ายที่คุณต้องการ
* แก้ไขคลาสเพื่อแสดงจำนวนคลาสในไฟล์ .names ของคุณ
อัปเดตตัวกรองในส่วน [convolutional] ก่อนแต่ละส่วน [yolo]: (numberofclasses + 5) 3.
8. เริ่มการฝึก:
`ทุบตี
ซีดี ~/nn/สัตว์/
เครื่องตรวจจับ darknet -map -dont_show รถไฟanimals.dataanimals.cfg
-
สำหรับรายละเอียดการฝึกอบรมเพิ่มเติมและพารามิเตอร์ขั้นสูง โปรดดูคำถามที่พบบ่อยของ Darknet/YOLO
เครื่องมือและลิงค์อื่นๆ
DarkMark: จัดการโปรเจ็กต์ Darknet/YOLO ใส่คำอธิบายประกอบรูปภาพ ตรวจสอบคำอธิบายประกอบ และสร้างไฟล์การฝึกอบรม
DarkHelp: มอบ CLI ทางเลือกสำหรับ Darknet ช่วยให้สามารถเรียงภาพ การติดตามวัตถุ และ C++ API ที่แข็งแกร่งสำหรับแอปพลิเคชันเชิงพาณิชย์
คำถามที่พบบ่อยเกี่ยวกับ Darknet/YOLO: แหล่งข้อมูลที่ครอบคลุมสำหรับการตอบคำถามของคุณ
ช่อง YouTube ของ Stéphane: เข้าถึงบทช่วยสอนและวิดีโอตัวอย่างมากมาย
Darknet/YOLO Discord Server: เชื่อมต่อกับผู้ใช้รายอื่นเพื่อรับการสนับสนุนและการสนทนา
แผนการทำงาน
อัปเดตล่าสุด 30-10-2024:
สมบูรณ์:
แทนที่ qsort() ด้วย std::sort() ในกรณีที่เกี่ยวข้องระหว่างการฝึกอบรม
ลบ check_mistakes, getchar() และ system() แล้ว
แปลง Darknet เพื่อใช้คอมไพเลอร์ C++ (g++ บน Linux, VisualStudio บน Windows)
แก้ไขการสร้าง Windows
เปิดใช้งานป้ายกำกับในการคาดเดาอีกครั้ง (รหัส "ตัวอักษร")
เปิดใช้งานรหัส CUDA/GPU, CUDNN และ CUDNN อีกครั้ง
ลบสถาปัตยกรรม CUDA แบบฮาร์ดโค้ดออก
ปรับปรุงข้อมูลเวอร์ชัน CUDA
เปิดใช้งาน AVX อีกครั้ง
ลบโซลูชันเก่าและ Makefiles
ทำให้ OpenCV เป็นการพึ่งพาที่ไม่เป็นทางเลือก
ลบการพึ่งพาไลบรารี pthread เก่าออก
ลบ STB แล้ว
เขียน CMakeLists.txt ใหม่เพื่อปรับปรุงการตรวจจับ CUDA
ลบรหัส "ตัวอักษร" เก่าและรูปภาพที่เกี่ยวข้องออก
ดำเนินการสร้างนอกแหล่งที่มา
เอาต์พุตหมายเลขเวอร์ชันที่ได้รับการปรับปรุง
การเพิ่มประสิทธิภาพระหว่างการฝึกอบรม (ต่อเนื่อง)
การเพิ่มประสิทธิภาพการทำงานระหว่างการอนุมาน (ต่อเนื่อง)
ใช้การอ้างอิงผ่านเมื่อเป็นไปได้
ทำความสะอาดไฟล์ .hpp
เขียน darknet.h ใหม่อีกครั้ง
กำจัดการหล่อ cv::Mat ให้เป็นโมฆะและใช้เป็นวัตถุ C ++
แก้ไขความไม่สอดคล้องกันในโครงสร้างภาพภายใน
โครงสร้างคงที่สำหรับอุปกรณ์ Jetson ที่ใช้ ARM (อุปกรณ์ Jetson Orin ใหม่ใช้งานได้)
แก้ไข Python API ใน V3
เป้าหมายระยะสั้น:
แทนที่ 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
ใช้กล่องขอบเขตแบบหมุนหรือส่วนรองรับ "มุม"
เพิ่มประเด็นสำคัญ/โครงกระดูก
แนะนำแผนที่ความร้อน (กำลังดำเนินการ)
สำรวจการแบ่งส่วน
คอยติดตามการอัปเดตและการสนับสนุนกรอบงาน Darknet/YOLO!