กรอบการตรวจจับวัตถุ Darknet และ YOLO
โลโก้ !darknet และ hank.ai
Darknet เป็นเฟรมเวิร์กโครงข่ายประสาทเทียมแบบโอเพ่นซอร์สที่เขียนด้วยภาษา C, C++ และ CUDA YOLO (คุณดูเพียงครั้งเดียว) คือระบบตรวจจับวัตถุแบบเรียลไทม์ที่ล้ำสมัย ซึ่งทำงานภายในกรอบงาน Darknet
อ่านวิธีที่ Hank.ai ช่วยเหลือชุมชน Darknet/YOLO: https://darknetcv.ai/
ประกาศ Darknet V3 "Jazz": https://darknetcv.ai/
เยี่ยมชมเว็บไซต์ Darknet/YOLO: https://github.com/hank-ai/darknet
ตรวจสอบคำถามที่พบบ่อยของ Darknet/YOLO: https://darknetcv.ai/faq
เข้าร่วมเซิร์ฟเวอร์ Darknet/YOLO Discord: https://discord.gg/zSq8rtW
เอกสาร
1. เอกสาร YOLOv7: https://arxiv.org/abs/2207.02670
2. กระดาษปรับขนาด-YOLOv4: https://arxiv.org/abs/2102.05226
3. บทความ YOLOv4: https://arxiv.org/abs/2004.10934
4. กระดาษ YOLOv3: https://pjreddie.com/media/files/papers/YOLOv3.pdf
ข้อมูลทั่วไป
เฟรมเวิร์ก 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. เขียนขั้นตอนการสร้างใหม่สำหรับกระบวนการสร้าง CMake แบบรวมบนทั้ง Windows และ Linux
2. การแปลง codebase เพื่อใช้คอมไพเลอร์ C++
3. ปรับปรุงการแสดงภาพ Chart.png ในระหว่างการฝึกอบรม
4. การใช้การแก้ไขข้อบกพร่องและการเพิ่มประสิทธิภาพ โดยเน้นที่การลดเวลาการฝึกอบรมเป็นหลัก
สาขาสุดท้ายของ codebase นี้คือเวอร์ชัน 2.1 ในสาขา v2
การพัฒนาระยะต่อไปเริ่มต้นในกลางปี 2024 และเปิดตัวในเดือนตุลาคม 2024 ขณะนี้คำสั่ง version ส่งคืน 3.x "JAZZ"
คุณสามารถชำระเงินสาขา v2 ก่อนหน้าได้ตลอดเวลา หากคุณต้องการเรียกใช้คำสั่งใดคำสั่งหนึ่งเหล่านี้ แจ้งให้เราทราบเพื่อให้เราตรวจสอบการเพิ่มคำสั่งที่หายไปกลับเข้าไปได้
การเปลี่ยนแปลงที่สำคัญใน Darknet V3 "JAZZ" ได้แก่:
1. การลบคำสั่งเก่าและคำสั่งที่ไม่ได้รับการดูแลออกจำนวนมาก
2. การใช้การปรับปรุงประสิทธิภาพจำนวนมากสำหรับทั้งการฝึกอบรมและการอนุมาน
3. การแก้ไข 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
บทช่วยสอนการสร้าง Darknet สำหรับ Linux
ทางเลือก: หากคุณมี NVIDIA GPU ที่ทันสมัย คุณสามารถติดตั้ง CUDA หรือ CUDA+cuDNN ได้ ณ จุดนี้ หากติดตั้งแล้ว Darknet จะใช้ GPU ของคุณเพื่อเพิ่มความเร็วในการประมวลผลภาพ (และวิดีโอ)
คุณต้องลบไฟล์ CMakeCache.txt ออกจากไดเรกทอรีบิลด์ Darknet ของคุณเพื่อบังคับให้ CMake ค้นหาไฟล์ที่จำเป็นทั้งหมดอีกครั้ง อย่าลืมสร้าง Darknet ขึ้นมาใหม่
Darknet สามารถทำงานได้โดยไม่ต้องใช้มัน แต่หากคุณต้องการฝึกเครือข่ายแบบกำหนดเอง จำเป็นต้องมี CUDA หรือ CUDA+cuDNN
1. ติดตั้ง CUDA: ไปที่ https://developer.nvidia.com/cuda-downloads เพื่อดาวน์โหลดและติดตั้ง CUDA
2. ติดตั้ง cuDNN: ไปที่ https://developer.nvidia.com/rdp/cudnn-download หรือ https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#cudnn-package-manager- ภาพรวมการติดตั้งเพื่อดาวน์โหลดและติดตั้ง 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
โคลนคอมไพล์ https://github.com/hank-ai/darknet
ซีดีดาร์กเน็ต
สร้าง mkdir
สร้างซีดี
cmake -DCMAKEBUILDTYPE=ปล่อย ..
ทำแพ็คเกจ -j4
sudo dpkg -i darknet-VERSION.deb
-
หากคุณใช้ CMake เวอร์ชันเก่า คุณจะต้องอัปเกรด CMake ก่อนจึงจะสามารถเรียกใช้คำสั่ง cmake ด้านบนได้ การอัพเกรด CMake บน Ubuntu สามารถทำได้ด้วยคำสั่งต่อไปนี้:
`ทุบตี
sudo apt-get ล้าง cmake
sudo snap ติดตั้ง cmake --classic
-
หากใช้ bash เป็นเชลล์คำสั่ง คุณจะต้องรีสตาร์ทเชลล์ ณ จุดนี้ หากใช้ปลาควรเลือกเส้นทางใหม่ทันที
ผู้ใช้ขั้นสูง:
หากคุณต้องการสร้างไฟล์การติดตั้ง RPM แทนไฟล์ DEB โปรดดูบรรทัดที่เกี่ยวข้องใน CM_package.cmake ก่อนที่จะรันแพ็คเกจ make -j4 คุณจะต้องแก้ไขสองบรรทัดนี้:
`เอาล่ะ
SET (CPACKGENERATOR "DEB")# SET (CPACKGENERATOR "RPM")
-
สำหรับ distros เช่น Centos และ OpenSUSE คุณจะต้องสลับสองบรรทัดนั้นใน CM_package.cmake เป็น:
`เอาล่ะ
ชุด (CPACK_GENERATOR "DEB")
ชุด (CPACK_GENERATOR "รอบต่อนาที")
-
หากต้องการติดตั้งแพ็คเกจการติดตั้งเมื่อสร้างเสร็จแล้ว ให้ใช้ตัวจัดการแพ็คเกจตามปกติสำหรับการแจกจ่ายของคุณ ตัวอย่างเช่น บนระบบที่ใช้ Debian เช่น Ubuntu:
`ทุบตี
sudo dpkg -i darknet-2.0.1-Linux.deb
-
การติดตั้งแพ็คเกจ .deb จะคัดลอกไฟล์ต่อไปนี้:
1. /usr/bin/darknet เป็น Darknet ที่ปฏิบัติการได้ตามปกติ เรียกใช้เวอร์ชัน darknet จาก CLI เพื่อยืนยันว่าติดตั้งอย่างถูกต้อง
2. /usr/include/darknet.h คือ Darknet API สำหรับนักพัฒนา C, C++ และ Python
3. /usr/include/darknet_version.h มีข้อมูลเวอร์ชันสำหรับนักพัฒนา
4. /usr/lib/libdarknet.so เป็นไลบรารีสำหรับลิงก์สำหรับนักพัฒนา C, C++ และ Python
5. /opt/darknet/cfg/... เป็นที่จัดเก็บเทมเพลต .cfg ทั้งหมด
ตอนนี้คุณทำเสร็จแล้ว! Darknet ถูกสร้างและติดตั้งลงใน /usr/bin/ เรียกใช้สิ่งนี้เพื่อทดสอบ: เวอร์ชัน darknet
หากคุณไม่มี /usr/bin/darknet นั่นหมายความว่าคุณไม่ได้ติดตั้ง คุณแค่สร้างมันขึ้นมาเท่านั้น! ตรวจสอบให้แน่ใจว่าคุณติดตั้งไฟล์ .deb หรือ .rpm ตามที่อธิบายไว้ข้างต้น
วิธี Windows CMake
คำแนะนำเหล่านี้ถือเป็นการติดตั้ง Windows 11 22H2 ใหม่
1. ติดตั้งสิ่งที่จำเป็นต้องมี: เปิดหน้าต่างพรอมต์คำสั่ง cmd.exe ปกติแล้วรันคำสั่งต่อไปนี้:
`ทุบตี
winget ติดตั้ง Git.Git
winget ติดตั้ง Kitware.CMake
ติดตั้ง winget nsis.nsis
winget ติดตั้ง Microsoft.VisualStudio.2022.Community
-
2. กำหนดค่า Visual Studio: เราจำเป็นต้องแก้ไขการติดตั้ง Visual Studio เพื่อรวมการรองรับแอปพลิเคชัน C ++:
* คลิกที่เมนู "Windows Start" และเรียกใช้ "Visual Studio Installer"
* คลิกที่ "แก้ไข"
* เลือก "การพัฒนาเดสก์ท็อปด้วย C++"
* คลิกที่ "แก้ไข" ที่มุมขวาล่าง จากนั้นคลิกที่ "ใช่"
3. เปิด Developer Command Prompt: เมื่อดาวน์โหลดและติดตั้งทุกอย่างแล้ว ให้คลิกที่เมนู "Windows Start" อีกครั้ง และเลือก "Developer Command Prompt for VS 2022" อย่าใช้ PowerShell สำหรับขั้นตอนเหล่านี้ คุณจะประสบปัญหา!
ผู้ใช้ขั้นสูง:
แทนที่จะเรียกใช้ Developer Command Prompt คุณสามารถใช้พรอมต์คำสั่งปกติหรือ ssh ลงในอุปกรณ์และเรียกใช้ "Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat" ด้วยตนเอง
4. ติดตั้ง VCPKG: เมื่อคุณมี Developer Command Prompt ทำงานตามที่อธิบายไว้ข้างต้น (ไม่ใช่ PowerShell!) ให้รันคำสั่งต่อไปนี้เพื่อติดตั้ง Microsoft 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
-
อดทนในขั้นตอนสุดท้ายนี้เนื่องจากการวิ่งอาจใช้เวลานาน มันจำเป็นต้องดาวน์โหลดและสร้างสิ่งต่าง ๆ มากมาย
ผู้ใช้ขั้นสูง:
โปรดทราบว่ามีโมดูลเสริมอื่นๆ มากมายที่คุณอาจต้องการเพิ่มเมื่อสร้าง OpenCV เรียกใช้ .vcpkg.exe ค้นหา opencv เพื่อดูรายการทั้งหมด
ทางเลือก: หากคุณมี NVIDIA GPU ที่ทันสมัย คุณสามารถติดตั้ง CUDA หรือ CUDA+cuDNN ได้ ณ จุดนี้ หากติดตั้งแล้ว Darknet จะใช้ GPU ของคุณเพื่อเพิ่มความเร็วในการประมวลผลภาพ (และวิดีโอ)
คุณต้องลบไฟล์ CMakeCache.txt ออกจากไดเรกทอรีบิลด์ Darknet ของคุณเพื่อบังคับให้ CMake ค้นหาไฟล์ที่จำเป็นทั้งหมดอีกครั้ง อย่าลืมสร้าง Darknet ขึ้นมาใหม่
Darknet สามารถทำงานได้โดยไม่ต้องใช้มัน แต่หากคุณต้องการฝึกเครือข่ายแบบกำหนดเอง จำเป็นต้องมี CUDA หรือ CUDA+cuDNN
1. ติดตั้ง CUDA: ไปที่ https://developer.nvidia.com/cuda-downloads เพื่อดาวน์โหลดและติดตั้ง CUDA
2. ติดตั้ง cuDNN: ไปที่ 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 รวม และไดเร็กทอรี lib ลงใน C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/[version]/. คุณอาจต้องเขียนทับไฟล์บางไฟล์
หากคุณติดตั้ง CUDA หรือ CUDA+cuDNN ในภายหลัง หรือคุณอัพเกรดเป็นซอฟต์แวร์ NVIDIA เวอร์ชันใหม่กว่า:
ต้องติดตั้ง CUDA หลังจาก Visual Studio หากคุณอัปเกรด Visual Studio อย่าลืมติดตั้ง CUDA อีกครั้ง
5. โคลนและสร้าง Darknet: เมื่อขั้นตอนก่อนหน้านี้ทั้งหมดเสร็จสิ้นเรียบร้อยแล้ว คุณจะต้องโคลน Darknet และสร้างมันขึ้นมา ในระหว่างขั้นตอนนี้ เรายังต้องบอก CMake ด้วยว่า vcpkg อยู่ที่ไหน เพื่อให้สามารถค้นหา OpenCV และการขึ้นต่อกันอื่นๆ ได้:
`ทุบตี
ซีดี 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 ให้คัดลอกไฟล์ 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 จะ:
1. สร้างไดเร็กทอรีชื่อ Darknet เช่น C:Program FilesDarknet
2. ติดตั้งแอปพลิเคชัน CLI, darknet.exe และแอปตัวอย่างอื่นๆ
3. ติดตั้งไฟล์ .dll ของบริษัทอื่นที่จำเป็น เช่น ไฟล์จาก OpenCV
4. ติดตั้งไฟล์ Darknet .dll, .lib และ .h ที่จำเป็นเพื่อใช้ darknet.dll จากแอปพลิเคชันอื่น
5. ติดตั้งไฟล์เทมเพลต .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 ที่เกี่ยวข้อง คุณสามารถฝึกเครือข่ายของคุณเองได้ (แนะนำเป็นอย่างยิ่ง!) หรือดาวน์โหลดโครงข่ายประสาทเทียมที่ใครบางคนได้ฝึกฝนและเปิดให้ใช้งานได้ฟรีบนอินเทอร์เน็ต ตัวอย่างของชุดข้อมูลที่ได้รับการฝึกอบรมล่วงหน้า ได้แก่:
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:
`ทุบตี
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.weights dog.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. เจสัน:
* 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 เฉพาะ:
* V2:
`ทุบตี
การสาธิตเครื่องตรวจจับ 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 เนื่องจากจะทำงาน 100 ครั้งติดต่อกัน และเลือกจุดยึดที่ดีที่สุดจากทั้งหมดที่คำนวณไว้ แต่ถ้าคุณต้องการรันเวอร์ชันเก่าใน Darknet:
`ทุบตี
เครื่องตรวจจับ darknet calcanchors Animals.data -numof_clusters 6 - กว้าง 320 - สูง 256
-
13. ฝึกอบรมเครือข่ายใหม่:
`ทุบตี
เครื่องตรวจจับ 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: สร้างไฟล์ข้อความanimals.namesในโฟลเดอร์เดียวกับที่คุณวางไฟล์การกำหนดค่า สำหรับตัวอย่างนี้ ตอนนี้เรามี ~/nn/animals/animals.names
4. แก้ไขไฟล์animals.names: แก้ไขไฟล์animals.namesด้วยโปรแกรมแก้ไขข้อความของคุณ รายชื่อชั้นเรียนที่คุณต้องการใช้ คุณต้องมี 1 รายการต่อบรรทัด โดยไม่มีบรรทัดว่างและไม่มีความคิดเห็น สำหรับตัวอย่างนี้ ไฟล์ .names จะมี 4 บรรทัดพอดี:
-
สุนัข
แมว
นก
ม้า
-
5. สร้างไฟล์animals.data: สร้างไฟล์ข้อความ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 ของคุณ: แก้ไขไฟล์ .cfg ของคุณด้วยโปรแกรมแก้ไขข้อความ
* ตรวจสอบให้แน่ใจว่าชุด = 64
* หมายเหตุเขตการปกครอง ขึ้นอยู่กับขนาดเครือข่ายและจำนวนหน่วยความจำที่มีอยู่ใน GPU ของคุณ คุณอาจต้องเพิ่มการแบ่งย่อย ความคุ้มค่าที่สุดที่จะใช้คือ 1 ดังนั้นให้เริ่มจากสิ่งนั้นเลย ดูคำถามที่พบบ่อยของ Darknet/YOLO หาก 1 ไม่ได้ผลสำหรับคุณ
หมายเหตุ maxbatches=..... ค่าที่ดีที่จะใช้เมื่อเริ่มต้นคือ 2,000 x จำนวนคลาส สำหรับตัวอย่างนี้ เรามีสัตว์ 4 ตัว ดังนั้น 4 2000 = 8000 หมายความว่าเราจะใช้ maxbatches=8000
* หมายเหตุขั้นตอน=..... ควรตั้งค่าเป็น 80% และ 90% ของ maxbatches สำหรับตัวอย่างนี้ เราจะใช้ขั้นตอน = 6400,7200 เนื่องจากตั้งค่า maxbatches เป็น 8000
* หมายเหตุ width=... และ height=..... นี่คือขนาดเครือข่าย คำถามที่พบบ่อยเกี่ยวกับ Darknet/YOLO อธิบายวิธีคำนวณขนาดที่ดีที่สุดที่จะใช้
* ค้นหาอินสแตนซ์ทั้งหมดของบรรทัด class=... และแก้ไขด้วยจำนวนคลาสในไฟล์ .names ของคุณ สำหรับตัวอย่างนี้ เราจะใช้ class=4
ค้นหาอินสแตนซ์ทั้งหมดของบรรทัด filter=... ในส่วน [convolutional] ก่อนแต่ละส่วน [yolo] ค่าที่จะใช้คือ (numberofclasses + 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: https://github.com/hank-ai/darkmark
สำหรับ CLI ทางเลือกที่มีประสิทธิภาพสำหรับ Darknet หากต้องการใช้การจัดเรียงรูปภาพ สำหรับการติดตามวัตถุในวิดีโอของคุณ หรือสำหรับ C++ API ที่มีประสิทธิภาพซึ่งสามารถนำไปใช้ในแอปพลิเคชันเชิงพาณิชย์ได้อย่างง่ายดาย โปรดดู DarkHelp: https://github.com/hank-ai/ ความช่วยเหลือด้านมืด
ดูว่าคำถามที่พบบ่อยของ Darknet/YOLO สามารถช่วยตอบคำถามของคุณได้หรือไม่: https://darknetcv.ai/faq
ดูบทแนะนำและวิดีโอตัวอย่างมากมายในช่อง YouTube ของ Stéphane: https://www.youtube.com/channel/UC79J2v8b3hL7Z238mQ6dJ8w
หากคุณมีคำถามหรือต้องการสนทนากับผู้ใช้ Darknet/YOLO คนอื่นๆ เข้าร่วมเซิร์ฟเวอร์ Discord ของ Darknet/YOLO: https://discord.gg/zSq8rtW
แผนการทำงาน
อัปเดตล่าสุด 30-10-2024:
สมบูรณ์
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. ลบโค้ด "ตัวอักษร" เก่า และลบรูปภาพมากกว่า 700 รูปในข้อมูล/ป้ายกำกับ
20. สร้างนอก-