กรอบการตรวจจับวัตถุ Darknet และ YOLO
Downcodes小编 อัปเดตรายการตัวติดตาม BitTorrent สาธารณะ
รายการ
รายการเหล่านี้อัปเดตอัตโนมัติทุกวัน อัปเดตล่าสุด 2024/10/31:
คุณประสบปัญหา DNS หรือไม่? รายการเหล่านี้มีตัวติดตามเดียวกัน แต่มีที่อยู่ IP แทนที่จะเป็นโดเมน:
หมายเหตุ
มีส่วนช่วย
ติดต่อ
งอซัง [@] hotmail [.es]
เครื่องมือของบุคคลที่สาม
เครื่องมือออนไลน์ของบุคคลที่สาม
ตัวอย่าง:
ใบอนุญาต Apache-2.0
สารบัญ
กรอบการตรวจจับวัตถุ Darknet และ YOLO
เอกสาร
ข้อมูลทั่วไป
เวอร์ชันดาร์กเน็ต
MSCOCO ตุ้มน้ำหนักที่ผ่านการฝึกอบรมล่วงหน้า
อาคาร
Google Colab
วิธีการลินุกซ์ CMake
วิธี Windows CMake
การใช้ดาร์กเน็ต
คลีไอ
การฝึกอบรม
เครื่องมือและลิงค์อื่นๆ
แผนการทำงาน
เป้าหมายระยะสั้น
เป้าหมายระยะกลาง
เป้าหมายระยะยาว
กรอบการตรวจจับวัตถุ Darknet และ YOLO
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 หากคุณต้องการความช่วยเหลือหรือต้องการสนทนาเกี่ยวกับ Darknet/YOLO: https://discord.gg/zSq8rtW
Darknet/YOLO เวอร์ชัน CPU ทำงานบนอุปกรณ์หลากหลาย รวมถึง Raspberry Pi, เซิร์ฟเวอร์คลาวด์และ Colab, เดสก์ท็อป, แล็ปท็อป และอุปกรณ์ฝึกอบรมระดับไฮเอนด์ เวอร์ชัน GPU จำเป็นต้องมี NVIDIA GPU ที่รองรับ CUDA
Darknet/YOLO เป็นที่รู้กันว่าเข้ากันได้กับ Linux, Windows และ Mac ดูคำแนะนำในการสร้างด้านล่างสำหรับรายละเอียด
เวอร์ชันดาร์กเน็ต
เครื่องมือ Darknet ดั้งเดิมที่พัฒนาโดย Joseph Redmon ระหว่างปี 2013 ถึง 2017 ไม่มีหมายเลขเวอร์ชัน เราพิจารณาเวอร์ชันนี้ 0.x
พื้นที่เก็บข้อมูล Darknet ที่ได้รับความนิยมในเวลาต่อมาซึ่งดูแลโดย Alexey Bochkovskiy ตั้งแต่ปี 2560 ถึง 2564 ยังไม่มีหมายเลขเวอร์ชันเช่นกัน เราพิจารณาเวอร์ชัน 1.x นี้
พื้นที่เก็บข้อมูล Darknet ที่สนับสนุนโดย Hank.ai และดูแลโดย Stéphane Charette ตั้งแต่ปี 2023 เป็นพื้นที่แรกที่มีคำสั่งเวอร์ชัน โดยส่งคืนเวอร์ชัน 2.x "OAK" ตั้งแต่ปี 2023 จนถึงปลายปี 2024
จุดมุ่งหมายหลักคือเพื่อลดการหยุดชะงักของฟังก์ชันการทำงานที่มีอยู่ให้เหลือน้อยที่สุดในขณะที่ทำความคุ้นเคยกับโค้ดเบส
การเปลี่ยนแปลงที่สำคัญ:
Unified Build: ขั้นตอนการสร้างที่เขียนใหม่เพื่อสร้างวิธีการเดียวที่สอดคล้องกันโดยใช้ CMake สำหรับทั้ง Windows และ Linux
การโยกย้าย C++: แปลงโค้ดเบสเพื่อใช้คอมไพเลอร์ C++
แผนภูมิที่ได้รับการปรับปรุง: ปรับปรุงการแสดงภาพ Chart.png ระหว่างการฝึก
การแก้ไขข้อบกพร่องและการเพิ่มประสิทธิภาพ: แก้ไขข้อบกพร่องจำนวนมากและดำเนินการเพิ่มประสิทธิภาพการทำงาน โดยเน้นที่การลดเวลาการฝึกอบรมเป็นหลัก
สาขาสุดท้ายของโค้ดเบสนี้คือเวอร์ชัน 2.1 ซึ่งอยู่ในสาขา v2
การพัฒนาขั้นต่อไปเริ่มขึ้นในกลางปี 2024 และสิ้นสุดด้วยการเปิดตัวเวอร์ชัน 3.x "JAZZ" ในเดือนตุลาคม 2024
การปรับปรุงที่สำคัญของ Darknet V3 ("Jazz"):
ประสิทธิภาพ: การเพิ่มประสิทธิภาพประสิทธิภาพที่สำคัญระหว่างการฝึกอบรมและการอนุมาน
การเปลี่ยนแปลง API: แก้ไข C API ดั้งเดิม แอปพลิเคชันที่ใช้ Darknet API ดั้งเดิมจะต้องมีการปรับเปลี่ยนเล็กน้อย ดู: https://darknetcv.ai/api/api.html
API ใหม่: เปิดตัว Darknet V3 C และ C++ API ใหม่: https://darknetcv.ai/api/api.html
ตัวอย่างที่อัปเดต: เพิ่มแอปพลิเคชันใหม่และโค้ดตัวอย่างภายในไดเร็กทอรี src-examples: https://darknetcv.ai/api/files.html
คุณสามารถเปลี่ยนกลับเป็นสาขา v2 ก่อนหน้าได้ตลอดเวลา หากคุณต้องการดำเนินการคำสั่งเฉพาะ โปรดแจ้งให้เราทราบหากคุณพบคำสั่งที่ขาดหายไป เพื่อให้เราสามารถสำรวจการรวมคำสั่งเหล่านั้นกลับเข้าไปได้
การลบคีย์ Darknet V3 ("Jazz"):
คำสั่งที่ล้าสมัย: ลบคำสั่งที่ล้าสมัยและไม่ได้รับการดูแลจำนวนมากออก
MSCOCO ตุ้มน้ำหนักที่ผ่านการฝึกอบรมล่วงหน้า
เพื่อความสะดวก YOLO เวอร์ชันยอดนิยมหลายเวอร์ชันได้รับการฝึกอบรมล่วงหน้าเกี่ยวกับชุดข้อมูล MSCOCO ชุดข้อมูลนี้ประกอบด้วย 80 คลาส ซึ่งสามารถพบได้ในไฟล์ข้อความ cfg/coco.names
นอกเหนือจาก MSCOCO แล้ว ยังมีชุดข้อมูลที่เรียบง่ายกว่าและตุ้มน้ำหนักที่ได้รับการฝึกล่วงหน้าอื่นๆ อีกมากมายสำหรับการทดสอบ Darknet/YOLO เช่น LEGO Gears และ Rolodex ตรวจสอบคำถามที่พบบ่อยของ Darknet/YOLO เพื่อดูรายละเอียด
สามารถดาวน์โหลดตุ้มน้ำหนักที่ได้รับการฝึกล่วงหน้าของ MSCOCO ได้จากหลายแหล่ง รวมถึงที่เก็บข้อมูลนี้:
YOLOv2 พฤศจิกายน 2559:
YOLOv2-จิ๋ว
YOLOv2-เต็ม
YOLOv3 พฤษภาคม 2018:
YOLOv3-จิ๋ว
YOLOv3-เต็ม
YOLOv4 พฤษภาคม 2020:
YOLOv4-จิ๋ว
YOLOv4-เต็ม
YOLOv7 สิงหาคม 2565:
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 เช่นเดียวกับที่คุณไม่จำเป็นต้องเป็นช่างเครื่องในการขับรถ
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 เวอร์ชันใหม่กว่า:
อัปเกรด CMake: หากเวอร์ชัน CMake ของคุณล้าสมัย ให้อัปเกรดโดยใช้คำสั่งต่อไปนี้:
`ทุบตี
sudo apt-get ล้าง cmake
sudo snap ติดตั้ง cmake --classic
-
รีสตาร์ทเชลล์: หากใช้ bash เป็นเชลล์คำสั่งของคุณ ให้รีสตาร์ทเชลล์ของคุณ หากใช้ปลาเส้นทางควรได้รับการอัปเดตโดยอัตโนมัติ
การสร้าง Darknet:
`ทุบตี
sudo apt-get ติดตั้ง build-essential git libopencv-dev cmake
mkdir ~/srccd ~/src
git clone https://github.com/hank-ai/darknetcd darknet
mkdir buildcd สร้าง
cmake -DCMAKEBUILDTYPE=ปล่อย ..
ทำ -j4
บรรจุุภัณฑ์
sudo dpkg -i darknet-VERSION.deb
-
ผู้ใช้ขั้นสูง:
การติดตั้ง RPM: หากต้องการสร้างไฟล์การติดตั้ง RPM แทนไฟล์ DEB ให้แก้ไขบรรทัดที่เกี่ยวข้องใน CM_package.cmake ก่อนที่จะดำเนินการแพ็คเกจ make -j4 ให้แก้ไขบรรทัดเหล่านี้:
`เอาล่ะ
SET (CPACKGENERATOR "DEB")# SET (CPACKGENERATOR "RPM")
-
สำหรับการแจกแจงเช่น CentOS และ OpenSUSE ให้ปรับบรรทัดเป็น:
`เอาล่ะ
ชุด (CPACK_GENERATOR "DEB")
ชุด (CPACK_GENERATOR "รอบต่อนาที")
-
แพ็คเกจการติดตั้ง: ติดตั้งแพ็คเกจหลังจากสร้างเสร็จแล้วโดยใช้ตัวจัดการแพ็คเกจของการแจกจ่ายของคุณ สำหรับระบบที่ใช้ Debian (เช่น Ubuntu):
`ทุบตี
sudo dpkg -i darknet-2.0.1-Linux.deb
-
การติดตั้งแพ็คเกจ .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 ทั้งหมด
ยินดีด้วย! Darknet ถูกสร้างและติดตั้งใน /usr/bin/ เรียกใช้เวอร์ชัน darknet เพื่อตรวจสอบ
หากคุณไม่มี /usr/bin/darknet แสดงว่าคุณสร้าง 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. พร้อมรับคำสั่งสำหรับนักพัฒนา: หลังจากการติดตั้งเสร็จสิ้น คลิกเมนู "Windows Start" และเลือก "Developer Command Prompt สำหรับ VS 2022" อย่าใช้ PowerShell สำหรับขั้นตอนเหล่านี้ เนื่องจากอาจทำให้เกิดปัญหาได้!
ผู้ใช้ขั้นสูง:
แทนที่จะใช้พรอมต์คำสั่งสำหรับนักพัฒนา คุณสามารถเลือกรับพรอมต์คำสั่งปกติหรือเชื่อมต่อผ่าน SSH และดำเนินการ "Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat" ด้วยตนเอง
4. ติดตั้ง Microsoft 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
ไปที่ 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 อีกครั้ง
5. โคลนและสร้าง Darknet: เมื่อขั้นตอนก่อนหน้าเสร็จสมบูรณ์ ให้โคลน Darknet และสร้างมันขึ้นมา ในระหว่างขั้นตอนนี้ ให้ระบุตำแหน่ง VCPKG สำหรับ CMake เพื่อค้นหา 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 จะ:
สร้างไดเร็กทอรีชื่อ Darknet เช่น C:Program FilesDarknet
ติดตั้งแอปพลิเคชัน CLI (darknet.exe) และแอปตัวอย่างอื่นๆ
ติดตั้งไฟล์ .dll ของบริษัทอื่นที่จำเป็น เช่น ไฟล์จาก OpenCV
ติดตั้งไฟล์ Darknet .dll, .lib และ .h ที่จำเป็นสำหรับการใช้ darknet.dll จากแอปพลิเคชันอื่น
ติดตั้งไฟล์เทมเพลต .cfg
ตอนนี้คุณทำเสร็จแล้ว! หลังจากวิซาร์ดการติดตั้งเสร็จสิ้น Darknet จะถูกติดตั้งใน C:Program FilesDarknet ทดสอบโดยการรัน: เวอร์ชัน C:Program FilesDarknetbindarknet.exe
หากไม่มี C:/Program Files/darknet/bin/darknet.exe แสดงว่า Darknet ถูกสร้างขึ้นมาเท่านั้น ไม่ได้ติดตั้ง ตรวจสอบให้แน่ใจว่าคุณทำแต่ละพาเนลของวิซาร์ดการติดตั้ง NSIS จากขั้นตอนก่อนหน้าแล้ว
การใช้ดาร์กเน็ต
คลีไอ
ต่อไปนี้ไม่ใช่รายการคำสั่งทั้งหมดที่รองรับโดย Darknet
นอกจาก Darknet CLI แล้ว อย่าลืมโครงการ DarkHelp CLI ซึ่งเสนอ CLI ทางเลือกให้กับ Darknet/YOLO DarkHelp CLI มีคุณสมบัติขั้นสูงมากมายที่ไม่สามารถเข้าถึงได้โดยตรงใน Darknet คุณสามารถใช้ทั้ง Darknet CLI และ DarkHelp CLI ได้พร้อมกัน พวกเขาไม่ได้แยกจากกัน
สำหรับคำสั่งส่วนใหญ่ด้านล่าง คุณจะต้องมีไฟล์ .weights พร้อมด้วยไฟล์ .names และ .cfg ที่เกี่ยวข้อง คุณสามารถฝึกเครือข่ายของคุณเองได้ (แนะนำเป็นอย่างยิ่ง!) หรือดาวน์โหลดโครงข่ายประสาทเทียมที่ได้รับการฝึกล่วงหน้าซึ่งมีคนเปิดให้ใช้งานออนไลน์ได้ฟรี ชุดข้อมูลที่ได้รับการฝึกอบรมล่วงหน้าบางชุดประกอบด้วย:
LEGO Gears (การตรวจจับวัตถุในภาพ)
Rolodex (การตรวจจับข้อความในภาพ)
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.weights dog.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 การขับรถ.ข้อมูลการขับรถ.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
-
การฝึกอบรมเครือข่ายใหม่:
`ทุบตี
ซีดี ~/nn/สัตว์/
เครื่องตรวจจับ darknet -map -dont_show รถไฟanimals.dataanimals.cfg
-
(ดูส่วนการฝึกอบรมด้านล่างสำหรับรายละเอียดเพิ่มเติม)
การฝึกอบรม
ลิงก์ด่วนไปยังส่วนที่เกี่ยวข้องของคำถามที่พบบ่อยเกี่ยวกับ Darknet/YOLO:
การตั้งค่าไฟล์และไดเร็กทอรี: ฉันควรตั้งค่าไฟล์และไดเร็กทอรีของฉันอย่างไร?
ไฟล์การกำหนดค่า: ฉันควรใช้ไฟล์การกำหนดค่าใด
Training Command: ฉันควรใช้คำสั่งใดในการฝึกเครือข่ายของตัวเอง?
วิธีที่ง่ายที่สุดในการใส่คำอธิบายประกอบและฝึกฝนคือการใช้ DarkMark มันทำให้กระบวนการสร้างไฟล์ Darknet ที่จำเป็นทั้งหมดง่ายขึ้น แนะนำให้ใช้ DarkMark อย่างยิ่งในการฝึกโครงข่ายประสาทเทียมใหม่
หากคุณต้องการตั้งค่าไฟล์ด้วยตนเองสำหรับการฝึกอบรมเครือข่ายแบบกำหนดเอง:
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โดยใช้โปรแกรมแก้ไขข้อความของคุณ รายชื่อคลาสที่คุณตั้งใจจะใช้ แต่ละชั้นเรียนควรใช้บรรทัดแยกกัน โดยไม่มีบรรทัดว่างหรือความคิดเห็น ในตัวอย่างนี้ ไฟล์ .names จะมีสี่บรรทัด:
-
สุนัข
แมว
นก
ม้า
-
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": สร้างไฟล์ข้อความ "train" และ "valid" ที่กล่าวถึงในไฟล์ .data ไฟล์ทั้งสองนี้จำเป็นต้องแสดงรายการรูปภาพทั้งหมดที่ Darknet จะใช้สำหรับการฝึกฝนและการตรวจสอบแยกกันเมื่อคำนวณ mAP% รวมหนึ่งภาพต่อบรรทัด เส้นทางและชื่อไฟล์อาจเป็นแบบสัมพัทธ์หรือแบบสัมบูรณ์ก็ได้
8. แก้ไขไฟล์ .cfg: ใช้โปรแกรมแก้ไขข้อความเพื่อแก้ไขไฟล์ .cfg ของคุณ
ตรวจสอบให้แน่ใจว่าชุด = 64
สังเกตเขตการปกครอง ขึ้นอยู่กับขนาดเครือข่ายและความจุหน่วยความจำ GPU ของคุณ คุณอาจต้องเพิ่มการแบ่งย่อย ค่าในอุดมคติคือ 1 ดังนั้นให้เริ่มด้วยค่านั้น ดูคำถามที่พบบ่อยของ Darknet/YOLO หาก 1 ไม่ได้ผลสำหรับคุณ
ให้ความสนใจกับ maxbatches=..... ค่าเริ่มต้นที่ดีคือ 2,000 เท่าของจำนวนคลาส ในตัวอย่างนี้ เรามีสัตว์ 4 ตัว ดังนั้น 4 * 2000 = 8000 ซึ่งหมายถึง maxbatches=8000
หมายเหตุขั้นตอน=..... ตั้งค่านี้เป็น 80% และ 90% ของ maxbatches ในตัวอย่างนี้ เมื่อตั้งค่า maxbatches เป็น 8000 เราจะใช้ขั้นตอน = 6400,7200
สังเกต 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
สำหรับ 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 to void* และใช้เป็นวัตถุ C++ ที่เหมาะสม
28. แก้ไขหรือรับประกันความสอดคล้องในการใช้โครงสร้างภาพภายใน
29. แก้ไขการสร้างสำหรับอุปกรณ์ Jetson ที่ใช้ ARM
30. อุปกรณ์ Jetson ดั้งเดิมไม่น่าจะได้รับการแก้ไขเนื่องจาก NVIDIA ไม่รองรับอีกต่อไป (ไม่มีคอมไพเลอร์ C ++ 17)
31. อุปกรณ์ Jetson Orin ใหม่ใช้งานได้
32. แก้ไข 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. ดำเนินการแบ่งส่วน