กรอบการตรวจจับวัตถุ Darknet และ YOLO
!โลโก้ Darknet และ Hank.ai
Darknet เป็นเฟรมเวิร์กโครงข่ายประสาทเทียมแบบโอเพ่นซอร์สที่เขียนด้วยภาษา C, C++ และ CUDA YOLO (คุณดูเพียงครั้งเดียว) เป็นระบบตรวจจับวัตถุแบบเรียลไทม์ที่ล้ำสมัยที่ทำงานภายในกรอบงาน Darknet
ค้นพบว่า Hank.ai สนับสนุนชุมชน Darknet/YOLO อย่างไร
สำรวจเว็บไซต์ทางการของ Darknet/YOLO
ปรึกษาคำถามที่พบบ่อยเกี่ยวกับ Darknet/YOLO ที่ครอบคลุม
เข้าร่วมเซิร์ฟเวอร์ Darknet/YOLO Discord ที่มีชีวิตชีวา
เอกสาร
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 ที่มีชีวิตชีวาที่ https://discord.gg/zSq8rtW เพื่อขอความช่วยเหลือ พูดคุย และเชื่อมต่อกับเพื่อนผู้ใช้
Darknet/YOLO เวอร์ชัน CPU สามารถทำงานบนอุปกรณ์ที่หลากหลาย รวมถึง Raspberry Pi, เซิร์ฟเวอร์คลาวด์และ colab, เดสก์ท็อป, แล็ปท็อป และอุปกรณ์ฝึกอบรมระดับไฮเอนด์ Darknet/YOLO เวอร์ชัน GPU จำเป็นต้องมี GPU ที่รองรับ CUDA จาก NVIDIA
เป็นที่รู้กันว่า Darknet/YOLO ทำงานได้อย่างราบรื่นบน Linux, Windows และ Mac สำหรับคำแนะนำโดยละเอียด โปรดดูส่วนอาคารด้านล่าง
เวอร์ชันดาร์กเน็ต
1. เวอร์ชัน 0.x: หมายถึงเครื่องมือ Darknet ดั้งเดิมที่พัฒนาโดย Joseph Redmon ระหว่างปี 2013-2017 ซึ่งไม่มีหมายเลขเวอร์ชัน
2. เวอร์ชัน 1.x: ครอบคลุมพื้นที่เก็บข้อมูล Darknet ยอดนิยมที่ดูแลโดย Alexey Bochkovskiy ระหว่างปี 2017-2021 โดยไม่มีหมายเลขเวอร์ชันอย่างเป็นทางการด้วย
3. เวอร์ชัน 2.x "OAK": เวอร์ชันนี้เปิดตัวในปี 2023 สนับสนุนโดย Hank.ai และดูแลโดย Stéphane Charette นับเป็นครั้งแรกที่พื้นที่เก็บข้อมูล Darknet รวมคำสั่งเวอร์ชันไว้
- เป้าหมายคือเพื่อลดการหยุดชะงักของฟังก์ชันการทำงานที่มีอยู่ให้เหลือน้อยที่สุดในขณะที่ทำความคุ้นเคยกับโค้ดเบส
- การเปลี่ยนแปลงที่สำคัญได้แก่:
- ระบบสร้าง CMake แบบครบวงจรสำหรับ Windows และ Linux
- การแปลง Codebase เป็นคอมไพเลอร์ C++
- ปรับปรุง Chart.png ระหว่างการฝึกอบรม
- แก้ไขข้อบกพร่องและเพิ่มประสิทธิภาพ โดยเฉพาะการลดเวลาการฝึกอบรม
- สาขาสุดท้ายของ codebase นี้คือเวอร์ชัน 2.1 ในสาขา v2
4. เวอร์ชัน 3.x "JAZZ": ระยะการพัฒนานี้เริ่มในกลางปี 2024 และเปิดตัวในเดือนตุลาคม 2024 ขณะนี้คำสั่งเวอร์ชันส่งคืน 3.x
- การเปลี่ยนแปลงในเวอร์ชันนี้ได้แก่:
- ลบคำสั่งที่ล้าสมัยและไม่รองรับหลายคำสั่ง
- การเพิ่มประสิทธิภาพการทำงานที่ครอบคลุมสำหรับทั้งการฝึกอบรมและการอนุมาน
- การแก้ไข C API ดั้งเดิม โดยต้องมีการปรับเปลี่ยนเล็กน้อยสำหรับแอปพลิเคชันที่ใช้ Darknet API ดั้งเดิม เอกสารที่อัปเดตสำหรับ Darknet V3 C และ C++ API สามารถดูได้ที่ https://darknetcv.ai/api/api.html
- การแนะนำแอปพลิเคชันใหม่และโค้ดตัวอย่างในไดเร็กทอรี src-examples ซึ่งเข้าถึงได้ที่ https://darknetcv.ai/api/files.html
หมายเหตุ: เพื่อความเข้ากันได้ คุณสามารถเข้าถึงสาขา v2 ก่อนหน้าได้ตลอดเวลา หากคุณต้องการดำเนินการคำสั่งเฉพาะเหล่านั้น โปรดติดต่อเราหากคุณพบคำสั่งที่ขาดหายไป และเราจะตรวจสอบการคืนสู่สภาพเดิม
MSCOCO ตุ้มน้ำหนักที่ผ่านการฝึกอบรมล่วงหน้า
เพื่อความสะดวก ชุดข้อมูล MSCOCO เวอร์ชันยอดนิยมหลายเวอร์ชันได้รับการฝึกอบรมล่วงหน้า ชุดข้อมูลนี้มี 80 คลาส ซึ่งสามารถดูได้ในไฟล์ข้อความ cfg/coco.names
นอกเหนือจาก MSCOCO แล้ว คุณสามารถค้นหาตุ้มน้ำหนักที่ได้รับการฝึกล่วงหน้าอื่นๆ และชุดข้อมูลที่ง่ายกว่าสำหรับการทดสอบ Darknet/YOLO เช่น LEGO Gears และ Rolodex ข้อมูลโดยละเอียดสามารถพบได้ในคำถามที่พบบ่อยของ Darknet/YOLO
ตุ้มน้ำหนักที่ผ่านการฝึกอบรม MSCOCO สามารถเข้าถึงได้จากสถานที่ต่างๆ รวมถึงภายในพื้นที่เก็บข้อมูลนี้:
1. YOLOv2 (พฤศจิกายน 2559)
- yolov2-tiny.weights
- yolov2-full.weights
2. YOLOv3 (พฤษภาคม 2018)
- yolov3-tiny.weights
- yolov3-full.weights
3. YOLOv4 (พฤษภาคม 2020)
- yolov4-tiny.weights
- yolov4-full.weights
4. YOLOv7 (สิงหาคม 2022)
- yolov7-tiny.weights
- yolov7-full.weights
ตุ้มน้ำหนักที่ได้รับการฝึกล่วงหน้าของ 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 ใช้สำหรับตรวจสอบการทำงานที่ถูกต้องของ Darknet/YOLO เป็นหลัก
อาคาร
วิธีการสร้างต่างๆ ที่ใช้ในอดีต (ก่อนปี 2023) ได้รับการปรับปรุงให้กลายเป็นโซลูชันแบบครบวงจร Darknet ต้องการ C++17 หรือใหม่กว่า OpenCV และใช้ CMake สำหรับการสร้างไฟล์โปรเจ็กต์
โปรดจำไว้ว่า การสร้าง ติดตั้ง และใช้งาน Darknet/YOLO ไม่จำเป็นต้องมีความรู้ C++ ก็เหมือนกับการขับรถโดยไม่ต้องเป็นช่าง
โปรดทราบ: หากคุณกำลังอ้างถึงบทช่วยสอนแบบเก่าที่มีขั้นตอนการสร้างที่ซับซ้อนมากขึ้น หรือที่ไม่สอดคล้องกับ readme นี้ ให้ดำเนินการด้วยความระมัดระวัง คำแนะนำในการสร้างใหม่ด้านล่างนี้ถูกนำมาใช้ในเดือนสิงหาคม 2023
สำหรับข้อมูลเชิงลึกเกี่ยวกับการทำงานภายในของเฟรมเวิร์กการตรวจจับวัตถุ Darknet/YOLO นักพัฒนาซอฟต์แวร์ควรไปที่ https://darknetcv.ai/
Google Colab
คำแนะนำของ Google Colab เหมือนกับคำแนะนำของ Linux มีสมุดบันทึก Jupyter หลายรุ่น ซึ่งสาธิตวิธีการทำงานเฉพาะ เช่น การฝึกอบรมเครือข่ายใหม่
สำรวจสมุดบันทึกภายในไดเรกทอรีย่อย colab หรือทำตามคำแนะนำของ Linux ด้านล่าง
วิธีการลินุกซ์ CMake
บทช่วยสอนการสร้าง Darknet สำหรับ Linux
1. ติดตั้งการพึ่งพา:
`ทุบตี
sudo apt-get ติดตั้ง build-essential git libopencv-dev cmake
-
2. พื้นที่เก็บข้อมูล Clone Darknet:
`ทุบตี
mkdir ~/srccd ~/src
โคลนคอมไพล์ https://github.com/hank-ai/darknet
ซีดีดาร์กเน็ต
-
3. สร้างไดเร็กทอรีบิวด์:
`ทุบตี
mkdir buildcd สร้าง
-
4. กำหนดค่าโดยใช้ CMake:
`ทุบตี
cmake -DCMAKEBUILDTYPE=ปล่อย ..
-
5. สร้าง Darknet:
`ทุบตี
ทำ -j4
-
6. แพ็คเกจและติดตั้ง:
`ทุบตี
บรรจุุภัณฑ์
sudo dpkg -i darknet-VERSION.deb
-
ทางเลือก: การติดตั้ง CUDA และ cuDNN
สำหรับการประมวลผลภาพและวิดีโอแบบเร่งความเร็ว คุณสามารถเลือกติดตั้ง CUDA หรือ CUDA+cuDNN ได้ Darknet จะใช้ประโยชน์จาก GPU ของคุณหากมี
1. ติดตั้ง CUDA:
- ดาวน์โหลดและติดตั้ง CUDA จาก https://developer.nvidia.com/cuda-downloads
- ตรวจสอบให้แน่ใจว่าคุณสามารถรัน nvcc และ nvidia-smi ได้ คุณอาจต้องแก้ไขตัวแปร PATH ของคุณ
2. ติดตั้ง cuDNN:
- ดาวน์โหลดและติดตั้ง cuDNN จาก https://developer.nvidia.com/rdp/cudnn-download หรือ https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#cudnn-package-manager- ภาพรวมการติดตั้ง
หากคุณติดตั้ง CUDA หรือ CUDA+cuDNN หลังจากการตั้งค่าครั้งแรกหรืออัพเกรดซอฟต์แวร์ NVIDIA:
1. ลบ CMakeCache.txt:
- ลบไฟล์ CMakeCache.txt ออกจากไดเร็กทอรี Darknet build ของคุณเพื่อบังคับให้ CMake ค้นหาการอ้างอิงทั้งหมดอีกครั้ง
2. สร้าง Darknet ใหม่:
- ทำซ้ำ cmake และทำตามขั้นตอนข้างต้น
หมายเหตุ: คำแนะนำเหล่านี้ใช้กับ Ubuntu 22.04 แต่สามารถปรับใช้กับการแจกแจงแบบอื่นได้
ผู้ใช้ขั้นสูง:
หากต้องการสร้างไฟล์การติดตั้ง RPM แทนไฟล์ DEB ให้แก้ไขบรรทัดที่เกี่ยวข้องใน CM_package.cmake ก่อนที่จะรันแพ็คเกจ make -j4 ให้อัพเดตสองบรรทัดนี้:
`เอาล่ะ
ชุด (CPACK_GENERATOR "DEB")
ชุด (CPACK_GENERATOR "รอบต่อนาที")
-
สำหรับการแจกแจงเช่น Centos และ OpenSUSE ให้ปรับบรรทัดเป็น:
`เอาล่ะ
ชุด (CPACK_GENERATOR "DEB")
ชุด (CPACK_GENERATOR "รอบต่อนาที")
-
หลังจากสร้างแล้ว ให้ติดตั้งแพ็คเกจโดยใช้ตัวจัดการแพ็คเกจของการแจกจ่ายของคุณ ตัวอย่างเช่น บนระบบที่ใช้ Debian:
`ทุบตี
sudo dpkg -i darknet-2.0.1-Linux.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 ในเทอร์มินัลของคุณเพื่อยืนยันการติดตั้ง Darknet สำเร็จ
วิธี Windows CMake
คำแนะนำในการสร้าง Windows (ถือว่า Windows 11 22H2)
1. ติดตั้งการพึ่งพา:
`ทุบตี
winget ติดตั้ง Git.Git
winget ติดตั้ง Kitware.CMake
ติดตั้ง winget nsis.nsis
winget ติดตั้ง Microsoft.VisualStudio.2022.Community
-
2. แก้ไขการติดตั้ง Visual Studio:
- เปิดเมนู "Windows Start" และเรียกใช้ "Visual Studio Installer"
- คลิกที่ "แก้ไข"
- เลือก "การพัฒนาเดสก์ท็อปด้วย C++"
- คลิก "แก้ไข" ที่มุมขวาล่าง จากนั้นคลิก "ใช่"
3. เปิดพรอมต์คำสั่งสำหรับนักพัฒนา:
- เปิดเมนู "Windows Start" และเลือก "Developer Command Prompt for VS 2022" อย่าใช้ PowerShell สำหรับขั้นตอนเหล่านี้
4. ติดตั้ง Microsoft VCPKG:
`ทุบตี
CDC:
mkdir c:srccd 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:
- ติดตั้ง CUDA หรือ CUDA+cuDNN เพื่อการเร่งความเร็ว GPU
- ทำตามขั้นตอนเดียวกับคำแนะนำของ Linux
6. โคลน Darknet และ Build:
`ทุบตี
ซีดี 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
-
หากคุณพบข้อผิดพลาดเกี่ยวกับ CUDA หรือ cuDNN DLLs หายไป (เช่น cublas64_12.dll):
1. คัดลอก CUDA DLLs:
- คัดลอกไฟล์ CUDA .dll ด้วยตนเองไปยังไดเร็กทอรีเอาต์พุตเดียวกันกับ Darknet.exe ตัวอย่างเช่น:
`ทุบตี
คัดลอก "C: Program FilesNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll" src-cliRelease
-
2. รัน msbuild.exe อีกครั้ง:
- ดำเนินการคำสั่ง msbuild.exe สุดท้ายอีกครั้งเพื่อสร้างแพ็คเกจการติดตั้ง NSIS
ผู้ใช้ขั้นสูง:
แทนที่จะใช้พรอมต์คำสั่งสำหรับนักพัฒนา คุณสามารถใช้พรอมต์คำสั่งปกติหรือ SSH และเรียกใช้ "Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat"
คำสั่ง cmake สร้างไฟล์โซลูชัน Visual Studio (Darknet.sln) หากคุณต้องการใช้ Visual Studio GUI ให้โหลดโครงการแทนที่จะใช้เครื่องมือบรรทัดคำสั่ง
การยืนยัน: เรียกใช้เวอร์ชัน C:srcDarknetbuildsrc-cliReleasedarknet.exe เพื่อตรวจสอบการติดตั้ง
ติดตั้งโดยใช้ตัวช่วยสร้าง NSIS:
ดำเนินการตัวช่วยสร้างการติดตั้ง NSIS ที่พบในไดเร็กทอรี build (เช่น darknet-VERSION.exe) สิ่งนี้จะ:
- สร้างไดเร็กทอรี Darknet (เช่น C:Program FilesDarknet)
- ติดตั้งแอปพลิเคชัน CLI, darknet.exe และแอปตัวอย่างอื่นๆ
- ติดตั้งไฟล์ .dll ของบริษัทอื่นที่จำเป็น (เช่น จาก OpenCV)
- ติดตั้งไฟล์ Darknet .dll, .lib และ .h เพื่อใช้ในแอปพลิเคชันอื่น
- ติดตั้งไฟล์เทมเพลต .cfg
การยืนยัน: หลังการติดตั้ง ให้รันเวอร์ชัน C:Program FilesDarknetbindarknet.exe เพื่อยืนยันว่า Darknet พร้อมใช้งาน
การใช้ดาร์กเน็ต
คลีไอ
ต่อไปนี้เป็นรายการคำสั่งบางส่วนที่ Darknet รองรับ
นอกเหนือจาก Darknet CLI แล้ว ให้พิจารณา CLI ของโครงการ DarkHelp ซึ่งนำเสนอ CLI ทางเลือกพร้อมคุณสมบัติขั้นสูงที่ไม่มีให้ใช้งานโดยตรงใน Darknet คุณสามารถใช้ CLI ทั้งสองร่วมกันได้
สำหรับคำสั่งส่วนใหญ่ คุณจะต้องมีไฟล์ .weights พร้อมด้วยไฟล์ .names และ .cfg ที่เกี่ยวข้อง คุณสามารถฝึกอบรมเครือข่ายของคุณเองได้ (แนะนำอย่างยิ่ง) หรือดาวน์โหลดเครือข่ายที่ได้รับการฝึกอบรมล่วงหน้าทางออนไลน์ได้อย่างอิสระ ตัวอย่างได้แก่:
LEGO Gears (การตรวจจับวัตถุในภาพ)
Rolodex (การตรวจจับข้อความในภาพ)
MSCOCO (การตรวจจับวัตถุมาตรฐาน 80 คลาส)
คำสั่ง Darknet CLI ทั่วไป:
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. การประเมินความแม่นยำของเครือข่าย:
- คำนวณ mAP:
`ทุบตี
แผนที่เครื่องตรวจจับ 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
-
- คำนวณจุดยึด:
`ทุบตี
เครื่องตรวจจับ darknet calcanchors Animals.data -numof_clusters 6 - กว้าง 320 - สูง 256
-
11. ฝึกอบรมเครือข่ายใหม่:
`ทุบตี
เครื่องตรวจจับ darknet -map -dont_show รถไฟanimals.dataanimals.cfg
-
การฝึกอบรม
ลิงก์สำคัญไปยังคำถามที่พบบ่อยของ Darknet/YOLO:
การตั้งค่าไฟล์และไดเร็กทอรี
การเลือกไฟล์การกำหนดค่าที่เหมาะสม
การฝึกอบรมคำสั่งเครือข่ายแบบกำหนดเอง
สำหรับคำอธิบายประกอบและการฝึกอบรมที่ราบรื่น DarkMark ช่วยลดความซับซ้อนของกระบวนการโดยการสร้างไฟล์ Darknet ที่จำเป็นทั้งหมดโดยอัตโนมัติ แนะนำให้ใช้ DarkMark เพื่อฝึกฝนโครงข่ายประสาทเทียมใหม่
การตั้งค่าการฝึกอบรมด้วยตนเอง:
1. สร้างไดเรกทอรีโครงการ:
- ตัวอย่างเช่น สร้างไดเร็กทอรีชื่อ ~/nn/animals/ เพื่อตรวจจับสัตว์
2. คัดลอกไฟล์การกำหนดค่า:
- คัดลอกไฟล์การกำหนดค่า Darknet ที่เหมาะสมเป็นเทมเพลต (เช่น cfg/yolov4-tiny.cfg) ลงในไดเรกทอรีโครงการของคุณ สิ่งนี้จะสร้าง ~/nn/animals/animals.cfg
3. สร้างไฟล์animals.names:
- สร้างไฟล์ข้อความชื่อanimals.nameในไดเร็กทอรีเดียวกัน
- ระบุชั้นเรียนที่คุณต้องการ หนึ่งรายการต่อบรรทัด โดยไม่มีบรรทัดว่างหรือความคิดเห็น ตัวอย่างเช่น:
-
สุนัข
แมว
นก
ม้า
-
4. สร้างไฟล์ Animals.data:
- สร้างไฟล์ข้อความชื่อ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) เพื่อจัดเก็บรูปภาพและคำอธิบายประกอบ รูปภาพแต่ละรูปต้องมีไฟล์ .txt ที่เกี่ยวข้องซึ่งกำหนดคำอธิบายประกอบ รูปแบบเป็นแบบเฉพาะเจาะจงและไม่สามารถสร้างด้วยตนเองได้ ใช้ DarkMark หรือซอฟต์แวร์ที่คล้ายกันเพื่อใส่คำอธิบายประกอบรูปภาพ รูปแบบคำอธิบายประกอบ YOLO ได้รับการอธิบายในคำถามที่พบบ่อยของ Darknet/YOLO
6. สร้างไฟล์การฝึกอบรมและการตรวจสอบความถูกต้อง:
- สร้างไฟล์animaltrain.txtและanimalvalid.txtที่กล่าวถึงในไฟล์ .data ไฟล์เหล่านี้แสดงรายการรูปภาพทั้งหมดสำหรับการฝึกอบรมและการตรวจสอบ ตามลำดับ หนึ่งภาพต่อบรรทัด เส้นทางอาจเป็นแบบสัมพัทธ์หรือแบบสัมบูรณ์ก็ได้
7. กำหนดค่าไฟล์ .cfg:
- เปิดไฟล์ .cfg ของคุณด้วยโปรแกรมแก้ไขข้อความ
- ตรวจสอบให้แน่ใจว่าแบทช์=64
- ปรับการแบ่งเขตตามขนาดเครือข่ายและหน่วยความจำ GPU เริ่มต้นด้วยการแบ่งเขต = 1 โปรดดูคำถามที่พบบ่อยของ Darknet/YOLO สำหรับค่าทางเลือก
- ตั้งค่า max_batches เป็น 2000 * จำนวนคลาส (เช่น 8000 สำหรับ 4 คลาส)
- กำหนดขั้นตอนเป็น 80% และ 90% ของ maxbatches (เช่น 6400,7200 สำหรับ maxbatches=8000)
- กำหนดค่าความกว้างและความสูง (ขนาดเครือข่าย) โดยใช้แนวทางจากคำถามที่พบบ่อยของ Darknet/YOLO
- แทนที่ class=... ด้วยจำนวนคลาสจากไฟล์ .names ของคุณ (เช่น class=4)
- แก้ไขตัวกรอง=... ในส่วน [convolutional] ก่อนแต่ละส่วน [yolo] ใช้สูตร (จำนวนคลาส + 5) * 3 (เช่น ตัวกรอง=27 สำหรับ 4 คลาส)
8. เริ่มการฝึกอบรม:
- นำทางไปยังไดเร็กทอรีโครงการของคุณ:
`ทุบตี
ซีดี ~/nn/สัตว์/
-
- รันคำสั่งการฝึกอบรม:
`ทุบตี
เครื่องตรวจจับ darknet -map -dont_show รถไฟanimals.dataanimals.cfg
-
9. ติดตามความคืบหน้า:
- น้ำหนักที่ดีที่สุดจะถูกบันทึกเป็นanimals_best.weights
- ติดตามความคืบหน้าการฝึกอบรมโดยการดูไฟล์ Chart.png
- ดูคำถามที่พบบ่อยของ Darknet/YOLO สำหรับพารามิเตอร์การฝึกอบรมเพิ่มเติม
10. การฝึกอบรมแบบละเอียด:
- สำหรับผลลัพธ์ที่มีรายละเอียดเพิ่มเติมระหว่างการฝึก ให้รวมพารามิเตอร์ --verbose:
`ทุบตี
เครื่องตรวจจับ darknet -map -dont_show --verbose รถไฟanimals.dataanimals.cfg
-
เครื่องมือและลิงค์อื่นๆ
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
เปิดใช้งานการรองรับ 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 (ยกเว้นรุ่น Jetson ดั้งเดิมที่ไม่รองรับ)
อุปกรณ์ Jetson Orin ใช้งานได้
แก้ไข Python API ใน V3
การสนับสนุน Python ที่ได้รับการปรับปรุง (มองหานักพัฒนา Python เพื่อมีส่วนร่วม)
เป้าหมายระยะสั้น:
แทนที่ printf() ด้วย std::cout (กำลังดำเนินการ)
กลับมารองรับกล้อง Zed รุ่นเก่าอีกครั้ง
ปรับปรุงและรับรองความสอดคล้องในการแยกวิเคราะห์บรรทัดคำสั่ง (อยู่ระหว่างดำเนินการ)
เป้าหมายระยะกลาง:
ลบโค้ด char* ทั้งหมดออกแล้วแทนที่ด้วย std::string
ยกเลิกการซ่อนคำเตือนและที่อยู่คำเตือนของคอมไพเลอร์ (อยู่ระหว่างดำเนินการ)
ปรับการใช้งาน cv::Mat ให้เหมาะสมแทนโครงสร้างอิมเมจ C ที่กำหนดเอง (อยู่ระหว่างดำเนินการ)
แทนที่ฟังก์ชันรายการเก่าด้วย std::vector หรือ std::list
แก้ไขการรองรับภาพระดับสีเทา 1 แชนเนล
เพิ่มการรองรับภาพ N-channel (N > 3)
ดำเนินการล้างโค้ดอย่างต่อเนื่อง (อยู่ระหว่างดำเนินการ)
เป้าหมายระยะยาว:
แก้ไขปัญหา CUDA/CUDNN ใน GPU ทั้งหมด
เขียนโค้ด CUDA+cuDNN ใหม่
สำรวจการรองรับ GPU ที่ไม่ใช่ NVIDIA
ใช้กล่องขอบเขตแบบหมุนหรือส่วนรองรับ "มุม"
เพิ่มประเด็นสำคัญ/โครงกระดูก
ใช้แผนที่ความร้อน (อยู่ระหว่างดำเนินการ)
แนะนำฟังก์ชันการแบ่งส่วน