กรอบการตรวจจับวัตถุ Darknet และ YOLO
Darknet เป็นเฟรมเวิร์กโครงข่ายประสาทเทียมแบบโอเพ่นซอร์สที่เขียนด้วยภาษา C, C++ และ CUDA
YOLO (คุณดูเพียงครั้งเดียว) เป็นระบบตรวจจับวัตถุแบบเรียลไทม์ที่ล้ำสมัยที่ทำงานภายในกรอบงาน Darknet
เรียนรู้ว่า Hank.ai เพิ่มศักยภาพให้กับชุมชน Darknet/YOLO ได้อย่างไร!
ประกาศ Darknet V3 "Jazz"
เยี่ยมชมเว็บไซต์ Darknet/YOLO
สำรวจคำถามที่พบบ่อยเกี่ยวกับ Darknet/YOLO
เข้าร่วมเซิร์ฟเวอร์ Discord ของ Darknet/YOLO
เอกสาร
1. กระดาษ YOLOv7: ลิงก์ไปยังกระดาษ
2. Paper Scaled-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 เพื่อรับการสนับสนุนและการสนทนา: 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
พื้นที่เก็บข้อมูล Darknet ที่ได้รับความนิยมในเวลาต่อมาซึ่งดูแลโดย Alexey Bochkovskiy ในช่วงปี 2560-2564 ก็ขาดหมายเลขเวอร์ชันเช่นกัน เราพิจารณาเวอร์ชัน 1.x นี้
พื้นที่เก็บข้อมูล Darknet ซึ่งสนับสนุนโดย Hank.ai และดูแลโดย Stéphane Charette เริ่มต้นในปี 2023 ได้เปิดตัวคำสั่งเวอร์ชันเป็นครั้งแรก ตั้งแต่ปี 2023 จนถึงปลายปี 2024 ส่งคืนเวอร์ชัน 2.x "OAK"
ทีมพัฒนามุ่งเน้นไปที่การลดการหยุดชะงักของฟังก์ชันการทำงานที่มีอยู่ให้เหลือน้อยที่สุด ในขณะเดียวกันก็ทำความคุ้นเคยกับโค้ดเบส
การเปลี่ยนแปลงสำคัญที่ดำเนินการในช่วงเวลานี้ ได้แก่:
1. กระบวนการสร้างแบบครบวงจร: ขั้นตอนการสร้างที่เขียนใหม่เพื่อปรับปรุงกระบวนการโดยใช้ CMake สำหรับทั้ง Windows และ Linux
2. การแปลง C++: โค้ดเบสถูกแปลงเพื่อใช้คอมไพเลอร์ C++
3. การปรับปรุงแผนภูมิ: การแสดงภาพ Chart.png ได้รับการปรับปรุงในระหว่างการฝึกอบรม
4. การแก้ไขข้อบกพร่องและการเพิ่มประสิทธิภาพ: มีการนำการแก้ไขข้อบกพร่องจำนวนมากและการเพิ่มประสิทธิภาพที่เกี่ยวข้องกับประสิทธิภาพมาใช้ โดยเน้นไปที่การลดเวลาการฝึกอบรมเป็นหลัก
สาขาสุดท้ายของโค้ดเบสนี้คือเวอร์ชัน 2.1 ซึ่งอยู่ในสาขา v2
ขั้นตอนการพัฒนาถัดไปเริ่มในกลางปี 2024 และสิ้นสุดด้วยการเปิดตัวเวอร์ชัน 3.x "JAZZ" ในเดือนตุลาคม 2024 ขณะนี้คำสั่ง version ส่งคืน 3.x
คุณสามารถเปลี่ยนกลับเป็นสาขา v2 ก่อนหน้าได้ตลอดเวลา หากคุณต้องการดำเนินการคำสั่งเฉพาะจากเวอร์ชันนั้น โปรดแจ้งให้ทีมพัฒนาทราบหากคุณพบคำสั่งที่ขาดหายไป และพวกเขาจะตรวจสอบการเพิ่มคำสั่งเหล่านั้นกลับ
การเปลี่ยนแปลงที่สำคัญในเวอร์ชัน 3.x "JAZZ":
1. การลบคำสั่ง: คำสั่งที่ล้าสมัยและไม่รองรับจำนวนมากถูกลบออก
2. การเพิ่มประสิทธิภาพ: มีการปรับใช้การเพิ่มประสิทธิภาพจำนวนมากสำหรับทั้งการฝึกอบรมและการอนุมาน
3. การปรับเปลี่ยน API: C API เดิมได้รับการปรับเปลี่ยน แอปพลิเคชันที่ใช้ Darknet API ดั้งเดิมอาจต้องมีการปรับเปลี่ยนเล็กน้อย https://darknetcv.ai/api/api.html
4. API C/C++ ใหม่: 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
นอกจาก MSCOCO แล้ว ยังมีชุดข้อมูลที่เรียบง่ายกว่าและตุ้มน้ำหนักที่ผ่านการฝึกอบรมมาแล้วสำหรับการทดสอบ Darknet/YOLO เช่น LEGO Gears และ Rolodex ดูคำถามที่พบบ่อยของ Darknet/YOLO สำหรับรายละเอียดเพิ่มเติม
สามารถดาวน์โหลดตุ้มน้ำหนักล่วงหน้าของ MSCOCO ได้จากแหล่งต่างๆ รวมถึงที่เก็บข้อมูลนี้:
YOLOv2 (พฤศจิกายน 2559)
yolov2-tiny.weights
yolov2-full.น้ำหนัก
YOLOv3 (พฤษภาคม 2018)
yolov3-tiny.weights
yolov3-full.น้ำหนัก
YOLOv4 (พฤษภาคม 2020)
yolov4-tiny.weights
yolov4-full.น้ำหนัก
YOLOv7 (สิงหาคม 2022)
yolov7-tiny.weights
yolov7-full.น้ำหนัก
ตุ้มน้ำหนักที่ได้รับการฝึกล่วงหน้าของ 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 เพื่อสร้างไฟล์โปรเจ็กต์ที่จำเป็น
การสร้าง Darknet/YOLO ไม่จำเป็นต้องมีความรู้เกี่ยวกับ C++ เปรียบเสมือนการขับรถโดยไม่มีช่างเครื่อง
Google Colab
คำแนะนำของ Google Colab จะจำลองคำสั่งสำหรับ Linux มีสมุดบันทึก Jupyter หลายเครื่องเพื่อสาธิตงานเฉพาะ เช่น การฝึกอบรมเครือข่ายใหม่
สำรวจสมุดบันทึกในไดเรกทอรีย่อย colab หรือทำตามคำแนะนำของ Linux ด้านล่าง
วิธีการลินุกซ์ CMake
บทช่วยสอนการสร้าง Darknet สำหรับ Linux
1. ข้อกำหนดเบื้องต้น: ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งแพ็คเกจต่อไปนี้:
`ทุบตี
sudo apt-get ติดตั้ง build-essential git libopencv-dev cmake
-
2. Clone Darknet: โคลนพื้นที่เก็บข้อมูล Darknet:
`ทุบตี
mkdir ~/srccd ~/src
โคลนคอมไพล์ https://github.com/hank-ai/darknet
ซีดีดาร์กเน็ต
-
3. สร้าง Build Directory: สร้างไดเร็กทอรี build:
`ทุบตี
สร้าง mkdir
สร้างซีดี
-
4. กำหนดค่าด้วย CMake: เรียกใช้ CMake เพื่อกำหนดค่าบิลด์:
`ทุบตี
cmake -DCMAKEBUILDTYPE=ปล่อย ..
-
5. สร้าง: สร้างโครงการ:
`ทุบตี
ทำ -j4
-
6. แพ็คเกจ: สร้างแพ็คเกจ Debian:
`ทุบตี
ทำแพ็คเกจ
-
7. ติดตั้ง: ติดตั้งแพ็คเกจ:
`ทุบตี
sudo dpkg -i darknet-VERSION.deb
-
ทางเลือก: CUDA/cuDNN สำหรับการเร่งความเร็ว GPU
1. ติดตั้ง CUDA: หากคุณมี NVIDIA GPU ที่ทันสมัย คุณสามารถติดตั้ง CUDA สำหรับการเร่งความเร็ว GPU ได้ ดาวน์โหลดและติดตั้ง CUDA จาก https://developer.nvidia.com/cuda-downloads
2. ติดตั้ง cuDNN: ดาวน์โหลดและติดตั้ง cuDNN จาก https://developer.nvidia.com/rdp/cudnn-download หรือ https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#cudnn- ภาพรวมการติดตั้งตัวจัดการแพ็คเกจ
3. ตรวจสอบการติดตั้ง CUDA: ตรวจสอบให้แน่ใจว่าคุณสามารถเรียกใช้ nvcc และ nvidia-smi ได้หลังจากติดตั้ง CUDA คุณอาจต้องปรับตัวแปร PATH ของคุณ
4. การกำหนดค่า CMake (หากติดตั้ง CUDA หลังจาก CMake): หากคุณติดตั้ง CUDA หรือ CUDA+cuDNN หลังจากกำหนดค่า CMake คุณจะต้องลบไฟล์ CMakeCache.txt ในไดเร็กทอรีบิลด์ Darknet เพื่อบังคับให้ CMake ค้นหาไฟล์ที่จำเป็นอีกครั้ง จากนั้นรัน CMake อีกครั้งและสร้าง Darknet ใหม่
ผู้ใช้ขั้นสูง
แพ็คเกจ RPM: หากต้องการสร้างไฟล์การติดตั้ง RPM แทนไฟล์ DEB ให้แก้ไขบรรทัดต่อไปนี้ใน CM_package.cmake:
`เอาล่ะ
# SET (CPACK_GENERATOR "DEB")
ชุด (CPACK_GENERATOR "รอบต่อนาที")
-
การแจกแจงเช่น Centos และ OpenSUSE: สำหรับการแจกแจงเช่น Centos และ OpenSUSE ให้เปลี่ยนบรรทัดใน CM_package.cmake เป็น:
`เอาล่ะ
# SET (CPACK_GENERATOR "DEB")
ชุด (CPACK_GENERATOR "รอบต่อนาที")
-
แพ็คเกจการติดตั้ง: หากต้องการติดตั้งแพ็คเกจหลังการสร้าง ให้ใช้ตัวจัดการแพ็คเกจของการแจกจ่ายของคุณ ตัวอย่างเช่น บนระบบที่ใช้ Debian เช่น Ubuntu ให้ใช้ sudo dpkg -i darknet-2.0.1-Linux.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 ทั้งหมด
วิธี Windows CMake
สร้างบทช่วยสอนสำหรับ Windows (สมมติว่าติดตั้ง Windows 11 22H2 ใหม่)
1. ติดตั้งสิ่งที่จำเป็นต้องมี: ติดตั้งส่วนประกอบที่จำเป็นโดยใช้ winget:
`ทุบตี
winget ติดตั้ง Git.Git
winget ติดตั้ง Kitware.CMake
ติดตั้ง winget nsis.nsis
winget ติดตั้ง Microsoft.VisualStudio.2022.Community
-
2. ติดตั้งการสนับสนุน Visual Studio C++: แก้ไขการติดตั้ง Visual Studio เพื่อรวมการสนับสนุน C++:
* เปิดเมนู "Windows Start" และเรียกใช้ "Visual Studio Installer"
* คลิกที่ "แก้ไข"
* เลือก "การพัฒนาเดสก์ท็อปด้วย C++"
* คลิกที่ "แก้ไข" ที่มุมขวาล่าง จากนั้นคลิก "ใช่"
3. พรอมต์คำสั่งสำหรับนักพัฒนา: เปิด "พรอมต์คำสั่งสำหรับนักพัฒนาสำหรับ VS 2022" จากเมนู "เริ่มของ Windows" อย่าใช้ PowerShell สำหรับขั้นตอนเหล่านี้!
4. ติดตั้ง Microsoft VCPKG: ติดตั้ง VCPKG เพื่อสร้าง OpenCV:
`ทุบตี
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/cuDNN สำหรับการเร่งความเร็ว GPU: ทำตามขั้นตอนเดียวกับที่อธิบายไว้ในส่วน Linux
6. Clone Darknet: โคลนพื้นที่เก็บข้อมูล Darknet:
`ทุบตี
ซีดี c:src
โคลนคอมไพล์ https://github.com/hank-ai/darknet.git
ซีดีดาร์กเน็ต
สร้าง mkdir
สร้างซีดี
-
7. กำหนดค่าด้วย CMake: กำหนดค่าบิลด์โดยใช้ CMake:
`ทุบตี
cmake -DCMAKEBUILDTYPE=Release -DCMAKETOOLCHAINFILE=C:/src/vcpkg/scripts/buildsystems/vcpkg.cmake ..
-
8. สร้างด้วย msbuild: สร้างโปรเจ็กต์โดยใช้ msbuild:
`ทุบตี
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 DLLs หายไป
หากคุณพบข้อผิดพลาดเกี่ยวกับ CUDA หรือ cuDNN DLLs ที่หายไป (เช่น cublas64_12.dll) ให้คัดลอกไฟล์ CUDA .dll ไปยังไดเร็กทอรีเอาต์พุตเดียวกันกับ darknet.exe ด้วยตนเอง ตัวอย่างเช่น:
`ทุบตี
คัดลอก "C: Program FilesNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll" src-cliRelease
-
* อย่าลืมปรับคำสั่งตามเวอร์ชัน CUDA ของคุณ
รันคำสั่ง msbuild.exe อีกครั้งหลังจากคัดลอก DLLs
ผู้ใช้ขั้นสูง
โซลูชัน Visual Studio: CMake สร้างไฟล์โซลูชัน Visual Studio (Darknet.sln) นักพัฒนาซอฟต์แวร์ที่ต้องการใช้ Visual Studio GUI สามารถโหลดโครงการ Darknet ภายใน Visual Studio แทนที่จะใช้บรรทัดคำสั่ง
การตรวจสอบและการติดตั้ง
การตรวจสอบ: เรียกใช้คำสั่งต่อไปนี้เพื่อตรวจสอบว่า Darknet ถูกสร้างขึ้นอย่างถูกต้องหรือไม่:
`ทุบตี
เวอร์ชัน C:srcDarknetbuildsrc-cliReleasedarknet.exe
-
การติดตั้ง: เรียกใช้วิซาร์ดการติดตั้ง NSIS ที่สร้างขึ้นในขั้นตอนสุดท้ายเพื่อติดตั้ง Darknet, ไลบรารี, รวมไฟล์ และ DLL ที่จำเป็นอย่างถูกต้อง ค้นหาไฟล์ darknet-VERSION.exe ในไดเร็กทอรี build ตัวอย่างเช่น: darknet-2.0.31-win64.exe
ติดตั้งไฟล์สำคัญ:
C:Program FilesDarknetbin/darknet.exe: แอปพลิเคชัน Darknet CLI
C:Program FilesDarknet/bin: ประกอบด้วยแอปพลิเคชันตัวอย่างอื่นๆ
C:Program FilesDarknet: รวมไฟล์ .dll ของบริษัทอื่นที่จำเป็น (OpenCV), ไฟล์ Darknet .dll, .lib และ .h และไฟล์เทมเพลต .cfg
การใช้ดาร์กเน็ต
คลีไอ
รายการต่อไปนี้ไม่ใช่คำสั่งทั้งหมดที่ Darknet รองรับ
นอกเหนือจาก Darknet CLI แล้ว ให้พิจารณาโครงการ DarkHelp CLI ซึ่งมี CLI ทางเลือกพร้อมคุณสมบัติขั้นสูงหลายประการที่ไม่มีให้ใช้งานโดยตรงใน Darknet คุณสามารถใช้ CLI ทั้งสองพร้อมกันได้
ข้อกำหนดเบื้องต้นที่สำคัญ:
สำหรับคำสั่งส่วนใหญ่ คุณต้องมีไฟล์ .weights พร้อมด้วยไฟล์ .names และ .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 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. เอาต์พุต JSON:
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 เฉพาะ:
V2:
`ทุบตี
การสาธิตเครื่องตรวจจับ darknetanimals.dataanimals.cfganimals_best.weights -i 1 test.mp4
-
10. การประเมินความแม่นยำ:
แผนที่:
`ทุบตี
แผนที่เครื่องตรวจจับ darknet การขับรถ.ข้อมูลการขับรถ.cfg Driving_best.weights ...
-
mAP@IoU=75:
`ทุบตี
แผนที่เครื่องตรวจจับ darknet Animals.data Animals.cfg Animalsbest.weights -iouthresh 0.75
-
11. การคำนวณสมอ:
DarkMark: ใช้ DarkMark เพื่อคำนวณจุดยึดใหม่เพื่อประสิทธิภาพสูงสุด
Darknet (วิธีที่เก่ากว่า):
`ทุบตี
เครื่องตรวจจับ darknet calcanchors Animals.data -numof_clusters 6 - กว้าง 320 - สูง 256
-
12. การฝึกอบรมเครือข่ายใหม่:
DarkMark (แนะนำ): ใช้ DarkMark สำหรับคำอธิบายประกอบและการฝึกอบรม
การตั้งค่าด้วยตนเอง:
1. การสร้างไดเรกทอรี: สร้างโฟลเดอร์สำหรับโครงการของคุณ (เช่น ~/nn/animals/)
2. ไฟล์การกำหนดค่า: คัดลอกไฟล์การกำหนดค่า Darknet เป็นเทมเพลต (เช่น cfg/yolov4-tiny.cfg)
3. ไฟล์ .names: สร้างไฟล์ข้อความ .names ที่แสดงคลาสของคุณ (เช่น ~/nn/animals/animals.names)
4. ไฟล์ .data: สร้างไฟล์ข้อความ .data ในโฟลเดอร์เดียวกับไฟล์กำหนดค่า (เช่น ~/nn/animals/animals.data)
5. โฟลเดอร์ชุดข้อมูล: สร้างโฟลเดอร์สำหรับรูปภาพและคำอธิบายประกอบของคุณ (เช่น ~/nn/animals/dataset)
6. คำอธิบายประกอบ .txt: สร้างไฟล์ .txt สำหรับแต่ละภาพ โดยมีพิกัดคำอธิบายประกอบ ใช้ DarkMark หรือเครื่องมือคำอธิบายประกอบอื่นๆ
7. ไฟล์ train/valid: สร้างไฟล์animaltrain.txtและanimalvalid.txtที่แสดงรายการภาพการฝึกและการตรวจสอบของคุณ
8. แก้ไขไฟล์ .cfg: ปรับไฟล์การกำหนดค่าตามชุดข้อมูลของคุณ
* ชุดชุด=64.
* ปรับการแบ่งย่อยตามหน่วยความจำ GPU ของคุณ
ตั้งค่า max_batches เป็นจำนวน 2,000 คลาส
* ตั้งค่าขั้นตอนเป็น 80% และ 90% ของ max_batches
* ปรับความกว้างและความสูงตามขนาดเครือข่าย
* ตั้งค่า class=... เป็นจำนวนคลาสในไฟล์ .names ของคุณ
ปรับตัวกรอง=... ในส่วน [convolutional] ก่อนแต่ละส่วน [yolo] เป็น (numberofclasses + 5) 3.
9. การฝึกอบรม: เริ่มการฝึกอบรม:
`ทุบตี
ซีดี ~/nn/สัตว์/
เครื่องตรวจจับ darknet -map -dont_show รถไฟanimals.dataanimals.cfg
-
* น้ำหนักที่ดีที่สุดจะถูกบันทึกเป็นanimals_best.weights
* ดูไฟล์ chart.png เพื่อติดตามความคืบหน้าของการฝึกอบรม
เครื่องมือและลิงค์อื่นๆ
ทรัพยากรที่สำคัญ:
DarkMark: สำหรับการจัดการโปรเจ็กต์ Darknet/YOLO การใส่คำอธิบายประกอบรูปภาพ การตรวจสอบคำอธิบายประกอบ และสร้างไฟล์การฝึกอบรม
DarkHelp: CLI ทางเลือกที่แข็งแกร่งสำหรับ Darknet พร้อมฟีเจอร์ต่างๆ เช่น การจัดเรียงรูปภาพ การติดตามวัตถุในวิดีโอ และ C++ API ที่แข็งแกร่งซึ่งเหมาะสำหรับแอปพลิเคชันเชิงพาณิชย์
คำถามที่พบบ่อยเกี่ยวกับ Darknet/YOLO: ค้นหาคำตอบสำหรับคำถามและวิธีแก้ปัญหาทั่วไป
ช่อง YouTube ของ Stephane: สำรวจบทแนะนำและวิดีโอตัวอย่าง
เซิร์ฟเวอร์ Discord ของ Darknet/YOLO: เชื่อมต่อกับผู้ใช้ Darknet/YOLO คนอื่นๆ เพื่อรับการสนับสนุนและการสนทนา
แผนการทำงาน
อัปเดตล่าสุด 2024-10-30:
งานที่เสร็จสมบูรณ์:
1. แทนที่ qsort() ด้วย std::sort() ในส่วนการฝึกอบรมที่เกี่ยวข้อง
2. ลบ check_mistakes, getchar() และ system() ออก
3. แปลง Darknet เพื่อใช้คอมไพเลอร์ C++ (g++ บน Linux, VisualStudio บน Windows)
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. ลบรหัส "ตัวอักษร" เก่าและลบรูปภาพในข้อมูล/ป้ายกำกับ
20. เปิดใช้งานการสร้างนอกแหล่งที่มา
21. เอาต์พุตหมายเลขเวอร์ชันที่ได้รับการปรับปรุง
22. การเพิ่มประสิทธิภาพการทำงานที่เกี่ยวข้องกับการฝึกอบรม (ต่อเนื่อง)
23. การเพิ่มประสิทธิภาพการทำงานที่เกี่ยวข้องกับการอนุมาน (ต่อเนื่อง)
24. ดำเนินการผ่านการอ้างอิงตามความเหมาะสม
25. ทำความสะอาดไฟล์ .hpp
26. เขียน darknet.h ใหม่
27. กำจัดการร่าย cv::Mat to void* โดยใช้เป็นวัตถุ C++ ที่เหมาะสม
28. ปรับปรุงความสอดคล้องในการใช้โครงสร้างภาพภายใน
29. แก้ไขการสร้างสำหรับอุปกรณ์ Jetson ที่ใช้ ARM
30. แก้ไข 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. การแบ่งส่วน