กรอบการตรวจจับวัตถุ Darknet และ YOLO
Darknet เป็นเฟรมเวิร์กโครงข่ายประสาทเทียมแบบโอเพ่นซอร์สที่เขียนด้วยภาษา C, C++ และ CUDA YOLO (You Only Look Once) เป็นระบบตรวจจับเป้าหมายแบบเรียลไทม์ที่ล้ำสมัยที่ทำงานในกรอบ Darknet
อ่านวิธีที่ Hank.ai ช่วยเหลือชุมชน Darknet/YOLO
ประกาศ Darknet V3 "Jazz"
ตรวจสอบเว็บไซต์ Darknet/YOLO
โปรดอ่านคำถามที่พบบ่อยของ Darknet/YOLO
เข้าร่วมเซิร์ฟเวอร์ Darknet/YOLO Discord
เอกสาร
1. กระดาษ YOLOv7
2. กระดาษปรับขนาด-YOLOv4
3. กระดาษ YOLOv4
4. กระดาษ YOLOv3
ข้อมูลทั่วไป
เฟรมเวิร์ก Darknet/YOLO ยังคงเร็วกว่าและแม่นยำกว่าเฟรมเวิร์กอื่นๆ และเวอร์ชัน YOLO
เฟรมเวิร์กนี้เป็นโอเพ่นซอร์สฟรีโดยสมบูรณ์ คุณสามารถรวม Darknet/YOLO เข้ากับโปรเจ็กต์และผลิตภัณฑ์ที่มีอยู่ รวมถึงผลิตภัณฑ์เชิงพาณิชย์ โดยไม่ต้องมีใบอนุญาตหรือค่าธรรมเนียม
Darknet V3 ("Jazz") เปิดตัวในเดือนตุลาคม 2567 สามารถรันวิดีโอชุดข้อมูล LEGO ได้อย่างแม่นยำที่สูงถึง 1,000 FPS โดยใช้ NVIDIA RTX 3090 GPU ซึ่งหมายความว่า Darknet แต่ละเฟรมวิดีโอจะถูกบันทึกใน 1 มิลลิวินาทีหรือน้อยกว่า /YOLO อ่าน ปรับขนาด และประมวลผล .
หากคุณต้องการความช่วยเหลือหรือต้องการหารือเกี่ยวกับ Darknet/YOLO โปรดเข้าร่วมเซิร์ฟเวอร์ Discord ของ Darknet/YOLO: https://discord.gg/zSq8rtW
Darknet/YOLO เวอร์ชัน CPU สามารถทำงานบนอุปกรณ์ง่ายๆ เช่น Raspberry Pi, คลาวด์และเซิร์ฟเวอร์การทำงานร่วมกัน เดสก์ท็อป แล็ปท็อป และอุปกรณ์การฝึกอบรมระดับไฮเอนด์ 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. เขียนขั้นตอนการสร้างใหม่เพื่อให้เรามีวิธีการสร้างบน Windows และ Linux แบบครบวงจรโดยใช้ CMake
2. แปลงฐานโค้ดเพื่อใช้คอมไพเลอร์ C++
3. ปรับปรุง Chart.png ระหว่างการฝึกอบรม
4. การแก้ไขข้อบกพร่องและการเพิ่มประสิทธิภาพที่เกี่ยวข้องกับประสิทธิภาพ ซึ่งส่วนใหญ่เกี่ยวข้องกับการลดเวลาที่ต้องใช้ในการฝึกอบรมเครือข่าย
สาขาสุดท้ายของฐานโค้ดคือเวอร์ชัน 2.1 ในสาขา v2
การพัฒนาระยะต่อไปจะเริ่มในกลางปี 2567 และจะเปิดตัวในเดือนตุลาคม 2567 คำสั่ง version ส่งคืน 3.x "JAZZ"
คุณสามารถชำระเงินสาขา v2 ก่อนหน้าได้ตลอดเวลาหากคุณต้องการรันคำสั่งต่อไปนี้ โปรดแจ้งให้เราทราบ เพื่อให้เราตรวจสอบการเพิ่มคำสั่งที่ขาดหายไปได้
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 video1.avi
-
โปรดทราบว่าควรฝึกอบรมเครือข่ายของตนเอง MSCOCO มักใช้เพื่อยืนยันว่าทุกอย่างเรียบร้อยดี
สร้าง
วิธีการสร้างต่างๆ ในอดีต (ก่อนปี 2023) ได้ถูกรวมเข้าเป็นโซลูชันแบบครบวงจร Darknet ต้องการ C++17 หรือสูงกว่า, OpenCV และใช้ CMake เพื่อสร้างไฟล์โปรเจ็กต์ที่จำเป็น
คุณไม่จำเป็นต้องรู้ C++ เพื่อสร้าง ติดตั้ง หรือรัน Darknet/YOLO เช่นเดียวกับที่คุณไม่จำเป็นต้องเป็นช่างเครื่องก็ขับรถได้
Google Colab
คำแนะนำของ Google Colab เหมือนกับคำแนะนำของ Linux มีสมุดบันทึก Jupyter หลายเครื่องที่แสดงวิธีดำเนินการบางอย่าง เช่น การฝึกอบรมเครือข่ายใหม่
ดูสมุดบันทึกในไดเรกทอรีย่อย colab หรือทำตามคำแนะนำของ Linux ด้านล่าง
วิธีการลินุกซ์ CMake
บทช่วยสอนการสร้าง Darknet สำหรับ Linux
ทางเลือก: หากคุณมี NVIDIA GPU ที่ทันสมัย คุณสามารถติดตั้ง CUDA หรือ CUDA+cuDNN ได้ในขณะนี้ หากติดตั้งแล้ว Darknet จะใช้ GPU ของคุณเพื่อเร่งการประมวลผลภาพ (และวิดีโอ)
คุณต้องลบไฟล์ CMakeCache.txt ในไดเร็กทอรี Darknet build เพื่อบังคับให้ CMake ค้นหาไฟล์ที่จำเป็นทั้งหมดอีกครั้ง
อย่าลืมสร้าง Darknet ใหม่
Darknet สามารถรันได้โดยไม่ต้องใช้มัน แต่ถ้าคุณต้องการฝึกเครือข่ายแบบกำหนดเอง คุณต้องมี CUDA หรือ CUDA+cuDNN
ไปที่ 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 เวอร์ชันใหม่ ให้ทำดังต่อไปนี้:
คำแนะนำเหล่านี้ถือว่า (แต่ไม่จำเป็นต้องใช้!) ระบบที่ใช้ Ubuntu 22.04 หากใช้การกระจายแบบอื่น ให้ปรับเปลี่ยนตามความจำเป็น
`ทุบตี
sudo apt-get ติดตั้ง build-essential git libopencv-dev cmake mkdir ~/srccd ~/src git clone https://github.com/hank-ai/darknetcd darknet mkdir buildcd build cmake -DCMAKEBUILDTYPE=Release .. make -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")
-
สำหรับการแจกแจงเช่น Centos และ OpenSUSE คุณต้องเปลี่ยนสองบรรทัดนี้ใน CM_package.cmake เป็น:
`ทุบตี
SET (CPACKGENERATOR "DEB") SET (CPACKGENERATOR "RPM")
-
หากต้องการติดตั้งแพ็คเกจการติดตั้ง เมื่อสร้างเสร็จแล้ว ให้ใช้ตัวจัดการแพ็คเกจปกติของการแจกจ่ายของคุณ ตัวอย่างเช่น บนระบบที่ใช้ 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 ใหม่
เปิดหน้าต่างพรอมต์คำสั่ง cmd.exe ปกติแล้วเรียกใช้คำสั่งต่อไปนี้:
`ทุบตี
ติดตั้ง winget Git.Git ติดตั้ง winget Kitware.CMake ติดตั้ง winget nsis.nsis ติดตั้ง winget Microsoft.VisualStudio.2022.Community
-
ณ จุดนี้ เราจำเป็นต้องแก้ไขการติดตั้ง Visual Studio เพื่อรวมการรองรับแอปพลิเคชัน C++:
1. คลิกเมนูเริ่มของ Windows และเรียกใช้การตั้งค่า Visual Studio
2. คลิกแก้ไข
3. เลือกการพัฒนาเดสก์ท็อปโดยใช้ C++
4. คลิก "แก้ไข" ที่มุมขวาล่าง จากนั้นคลิก "ใช่"
เมื่อดาวน์โหลดและติดตั้งทุกอย่างแล้ว ให้คลิกที่เมนู Windows Start อีกครั้ง และเลือก Developer Command Prompt สำหรับ VS 2022 อย่าใช้ PowerShell เพื่อทำตามขั้นตอนเหล่านี้ คุณจะประสบปัญหา!
ผู้ใช้ขั้นสูง:
แทนที่จะเรียกใช้พรอมต์คำสั่งของนักพัฒนา คุณสามารถใช้พรอมต์คำสั่งปกติหรือเข้าสู่ระบบอุปกรณ์โดยใช้ ssh และเรียกใช้ "Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat" ด้วยตนเอง
เมื่อคุณมีพรอมต์คำสั่งสำหรับนักพัฒนาที่ทำงานตามที่อธิบายไว้ข้างต้น (ไม่ใช่ PowerShell!) ให้รันคำสั่งต่อไปนี้เพื่อติดตั้ง Microsoft VCPKG จากนั้นใช้เพื่อสร้าง OpenCV:
`ทุบตี
cd 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
-
อดทนกับขั้นตอนสุดท้ายนี้เนื่องจากอาจใช้เวลานานในการรัน มันต้องมีการดาวน์โหลดและสร้างสิ่งต่าง ๆ มากมาย
ผู้ใช้ขั้นสูง:
โปรดทราบว่ามีโมดูลเสริมอื่นๆ มากมายที่คุณอาจต้องการเพิ่มเมื่อสร้าง OpenCV เรียกใช้ .vcpkg.exe ค้นหา opencv เพื่อดูรายการทั้งหมด
ทางเลือก: หากคุณมี NVIDIA GPU ที่ทันสมัย คุณสามารถติดตั้ง CUDA หรือ CUDA+cuDNN ได้ในขณะนี้ หากติดตั้งแล้ว Darknet จะใช้ GPU ของคุณเพื่อเร่งการประมวลผลภาพ (และวิดีโอ)
คุณต้องลบไฟล์ CMakeCache.txt ในไดเร็กทอรี Darknet build เพื่อบังคับให้ CMake ค้นหาไฟล์ที่จำเป็นทั้งหมดอีกครั้ง
อย่าลืมสร้าง Darknet ใหม่
Darknet สามารถรันได้โดยไม่ต้องใช้มัน แต่ถ้าคุณต้องการฝึกเครือข่ายแบบกำหนดเอง คุณต้องมี CUDA หรือ CUDA+cuDNN
ไปที่ https://developer.nvidia.com/cuda-downloads เพื่อดาวน์โหลดและติดตั้ง CUDA
ไปที่ 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 ใหม่
เมื่อขั้นตอนก่อนหน้าทั้งหมดเสร็จสมบูรณ์ คุณจะต้องโคลน Darknet และสร้างมันขึ้นมา ในขั้นตอนนี้ เรายังต้องบอก CMake ด้วยว่า vcpkg อยู่ที่ไหน เพื่อให้สามารถค้นหา OpenCV และการอ้างอิงอื่นๆ ได้:
`ทุบตี
cd c:src git clone https://github.com/hank-ai/darknet.gitcd darknetmkdir buildcd build cmake -DCMAKEBUILDTYPE=Release -DCMAKETOOLCHAINFILE=C:/src/vcpkg/scripts/buildsystems/vcpkg.cmake .. msbuild อดีต /property:Platform=x64;Configuration=Release /target:Build -maxCpuCount -verbosity:normal -detailedSummary darknet.sln msbuild.exe /property:Platform=x64;Configuration=Release PACKAGE.vcxproj
-
หากคุณได้รับข้อผิดพลาดเกี่ยวกับ CUDA หรือ cuDNN DLL ที่หายไป (เช่น 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 ซึ่งเป็นทางเลือกแทน Darknet/YOLO CLI DarkHelp CLI ยังมีคุณสมบัติขั้นสูงหลายประการที่ไม่มีให้บริการโดยตรงใน Darknet คุณสามารถใช้ Darknet CLI และ DarkHelp CLI ร่วมกันได้ โดยไม่ได้แยกจากกัน
สำหรับคำสั่งส่วนใหญ่ที่แสดงด้านล่าง คุณต้องมีไฟล์ .weights พร้อมด้วยไฟล์ .names และ .cfg ที่เกี่ยวข้อง คุณสามารถฝึกเครือข่ายของคุณเองได้ (ขอแนะนำอย่างยิ่ง!) หรือดาวน์โหลดโครงข่ายประสาทเทียมจากอินเทอร์เน็ตที่ได้รับการฝึกอบรมจากผู้อื่นและให้บริการฟรี ตัวอย่างของชุดข้อมูลก่อนการฝึกอบรมได้แก่:
1. LEGO Gears (ค้นหาวัตถุในภาพ)
2. Rolodex (ค้นหาข้อความในภาพ)
3. MSCOCO (การตรวจจับเป้าหมายหมวดหมู่มาตรฐาน 80)
คำสั่งให้รันได้แก่:
แสดงรายการคำสั่งและตัวเลือกบางอย่างที่อาจเรียกใช้:
`ทุบตี
ความช่วยเหลือจาก Darknet
-
ตรวจสอบเวอร์ชั่น:
`ทุบตี
เวอร์ชันดาร์กเน็ต
-
ใช้รูปภาพเพื่อทำนาย:
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
-
พิกัดขาออก:
V2:
`ทุบตี
การทดสอบเครื่องตรวจจับ darknetanimals.dataanimals.cfganimalbest.weights -extoutput dog.jpg
-
V3:
`ทุบตี
darknet01inference_images สัตว์ dog.jpg
-
ความช่วยเหลือด้านมืด:
`ทุบตี
DarkHelp --jsonanimals.cfganimals.namesanimals_best.weightsdog.jpg
-
ใช้วิดีโอ:
V2:
`ทุบตี
การสาธิตเครื่องตรวจจับ darknetanimals.dataanimals.cfganimalbest.weights -extoutput test.mp4
-
V3:
`ทุบตี
darknet03display_videosanimals.cfg test.mp4
-
ความช่วยเหลือด้านมืด:
`ทุบตี
DarkHelp Animals.cfganimals.namesanimals_best.weights test.mp4
-
อ่านจากเว็บแคม:
V2:
`ทุบตี
การสาธิตเครื่องตรวจจับ darknetanimals.dataanimals.cfganimals_best.weights -c 0
-
V3:
`ทุบตี
darknet08display_webcam สัตว์
-
บันทึกผลลัพธ์ลงในวิดีโอ:
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
-
เจสัน:
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
-
ทำงานบน GPU เฉพาะ:
V2:
`ทุบตี
การสาธิตเครื่องตรวจจับ darknetanimals.dataanimals.cfganimals_best.weights -i 1 test.mp4
-
วิธีตรวจสอบความถูกต้องของโครงข่ายประสาทเทียม:
`ทุบตี
แผนที่เครื่องตรวจจับ darknet Driving.data Driving.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
-
การคำนวณจุดยึดใหม่ทำได้ดีที่สุดใน DarkMark เนื่องจากจะทำงาน 100 ครั้งติดต่อกัน และเลือกจุดยึดที่ดีที่สุดจากจุดยึดที่คำนวณทั้งหมด แต่ถ้าคุณต้องการใช้งานเวอร์ชันเก่าใน Darknet ให้ทำดังต่อไปนี้:
`ทุบตี
เครื่องตรวจจับ darknet calcanchors Animals.data -numof_clusters 6 - กว้าง 320 - สูง 256
-
ฝึกอบรมเครือข่ายใหม่:
`ทุบตี
เครื่องตรวจจับ 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ในโฟลเดอร์เดียวกับที่คุณวางไฟล์การกำหนดค่า สำหรับตัวอย่างนี้ ตอนนี้เรามี ~/nn/animals/animals.names
4. ใช้โปรแกรมแก้ไขข้อความเพื่อแก้ไขไฟล์animals.names ระบุหมวดหมู่ที่คุณต้องการใช้ คุณต้องมีหนึ่งรายการต่อบรรทัด ไม่มีบรรทัดว่าง และไม่มีความคิดเห็น สำหรับตัวอย่างนี้ ไฟล์ .names จะมี 4 บรรทัดพอดี:
-
สุนัข
แมว
นก
ม้า
-
5. สร้างไฟล์ข้อความ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 ของคุณ
- ตรวจสอบให้แน่ใจว่าชุด = 64
- ให้ความสนใจกับการแบ่งเขต ขึ้นอยู่กับขนาดเครือข่ายและจำนวนหน่วยความจำที่มีอยู่ใน GPU คุณอาจต้องเพิ่มการแบ่งย่อย ค่าที่เหมาะสมที่สุดคือ 1 ดังนั้นให้เริ่มเลย หาก 1 ไม่ได้ผลสำหรับคุณ โปรดดูคำถามที่พบบ่อยของ Darknet/YOLO
- หมายเหตุ maxbatches=.... เมื่อเริ่มต้น มูลค่าที่ดีคือ 2000 สำหรับจำนวนหมวดหมู่ สำหรับตัวอย่างนี้ เรามีสัตว์ 4 ตัว ดังนั้น 4 2000 = 8000 ซึ่งหมายความว่าเราจะใช้ maxbatches=8000
- หมายเหตุขั้นตอน=.... ควรตั้งค่าเป็น 80% และ 90% ของ maxbatches สำหรับตัวอย่างนี้ เราจะใช้ขั้นตอน = 6400,7200 เนื่องจากตั้งค่า maxbatches เป็น 8000
- โปรดทราบว่า width=... และ height=.... เหล่านี้เป็นขนาดเครือข่าย คำถามที่พบบ่อยเกี่ยวกับ Darknet/YOLO อธิบายวิธีคำนวณขนาดที่เหมาะสมที่สุดที่จะใช้
- ในแต่ละส่วน [yolo] ที่อยู่ก่อนหน้าส่วน [convolutional] ให้ค้นหาอินสแตนซ์ทั้งหมดของตัวกรอง=... บรรทัด ค่าที่ใช้คือ (จำนวนหมวด + 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
สำหรับ CLI ทางเลือก Darknet อันทรงพลังสำหรับการต่อภาพ การติดตามวัตถุในวิดีโอ หรือ C++ API อันทรงพลังที่สามารถใช้งานได้ง่ายในแอปพลิเคชันเชิงพาณิชย์ โปรดดู DarkHelp
ลองอ่านคำถามที่พบบ่อยของ Darknet/YOLO เพื่อดูว่าสามารถช่วยตอบคำถามของคุณได้หรือไม่
ลองดูบทแนะนำและวิดีโอตัวอย่างมากมายในช่อง YouTube ของ Stéphane
หากคุณมีคำถามหรือต้องการสนทนากับผู้ใช้ Darknet/YOLO คนอื่นๆ โปรดเข้าร่วมเซิร์ฟเวอร์ Darknet/YOLO Discord
แผนงาน
อัปเดตล่าสุด: 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. การสร้างนอกเหนือจากซอร์สโค้ด
21. มีเอาต์พุตหมายเลขเวอร์ชันที่ดีกว่า
22. การเพิ่มประสิทธิภาพการทำงานที่เกี่ยวข้องกับการฝึกอบรม (งานที่กำลังดำเนินอยู่)
23. การเพิ่มประสิทธิภาพการทำงานที่เกี่ยวข้องกับการอนุมาน (งานที่กำลังดำเนินอยู่)
24. ใช้การอ้างอิงตามค่าทุกครั้งที่เป็นไปได้
25. ทำความสะอาดไฟล์ .hpp
26. เขียน darknet.h ใหม่
27. อย่าแปลง cv::Mat เป็น void* แต่ให้ใช้เป็นอ็อบเจ็กต์ C++ ที่ถูกต้องแทน
28. แก้ไขหรือคงโครงสร้างภาพภายในที่ใช้อย่างสม่ำเสมอ
29. แก้ไขการสร้างสำหรับอุปกรณ์ Jetson ที่ใช้ ARM
- อุปกรณ์ Jetson ดั้งเดิมไม่น่าจะได้รับการแก้ไขเนื่องจาก NVIDIA ไม่รองรับอีกต่อไป (ไม่มีคอมไพเลอร์ C ++ 17)
- อุปกรณ์ Jetson Orin ใหม่ทำงานอยู่
30. แก้ไข Python API ใน V3
31. ต้องการการสนับสนุน Python ที่ดีกว่า (นักพัฒนา Python คนใดต้องการความช่วยเหลือ?)
เป้าหมายระยะสั้น
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. แยก