เข้าใจได้
Ansible เป็นระบบไอทีอัตโนมัติที่เรียบง่ายอย่างน่าทึ่ง โดยจัดการการจัดการการกำหนดค่า การปรับใช้แอปพลิเคชัน การจัดเตรียมระบบคลาวด์ การดำเนินการงานเฉพาะกิจ ระบบอัตโนมัติของเครือข่าย และการประสานหลายโหนดได้อย่างเชี่ยวชาญ Ansible ช่วยให้คุณสามารถดำเนินการเปลี่ยนแปลงที่ซับซ้อนได้อย่างง่ายดาย เช่น การอัปเดตแบบต่อเนื่องเป็นศูนย์ด้วยโหลดบาลานเซอร์ เจาะลึกถึงความสามารถของ Ansible บนเว็บไซต์อย่างเป็นทางการ
หลักการออกแบบ
1. ใช้ Ansible
คุณสามารถติดตั้ง Ansible เวอร์ชันที่วางจำหน่ายได้อย่างราบรื่นโดยใช้ pip หรือตัวจัดการแพ็คเกจที่คุณต้องการ ศึกษาคู่มือการติดตั้งโดยละเอียดของเราเพื่อดูคำแนะนำที่ครอบคลุมบนแพลตฟอร์มต่างๆ
2. เพิ่มศักยภาพให้กับผู้ใช้และนักพัฒนาระดับสูง
สำหรับผู้ใช้และนักพัฒนาขั้นสูง สาขาการพัฒนาจะให้การเข้าถึงคุณสมบัติและการแก้ไขล่าสุด แม้ว่าโดยทั่วไปจะมีเสถียรภาพ แต่สิ่งสำคัญคือต้องรับทราบถึงศักยภาพในการทำลายการเปลี่ยนแปลงเมื่อใช้สาขานี้ เราขอแนะนำเป็นอย่างยิ่งให้มีส่วนร่วมกับชุมชน Ansible หากคุณเลือกที่จะทำงานกับสาขาการพัฒนา
การสื่อสาร
เข้าร่วมฟอรัม Ansible ที่มีชีวิตชีวาเพื่อมีส่วนร่วมกับชุมชน ขอความช่วยเหลือ และถามคำถาม สำหรับช่องทางการสื่อสารเพิ่มเติม โปรดอ่านคำแนะนำเฉพาะของเราเกี่ยวกับการเชื่อมต่อกับชุมชน Ansible
มีส่วนร่วมใน Ansible
แนวทางการเข้ารหัส
เราจัดทำแนวทางการเขียนโค้ดของเราอย่างพิถีพิถันในคู่มือนักพัฒนา เราขอแนะนำให้คุณตรวจสอบหัวข้อต่อไปนี้:
1. ข้อมูลสาขา
2. แผนงาน
จากผลตอบรับอันมีค่าจากทีมและชุมชน แผนงานเริ่มต้นจะถูกเผยแพร่สำหรับเวอร์ชันหลักหรือเวอร์ชันรองแต่ละเวอร์ชัน (เช่น 2.7, 2.8) หน้า Ansible Roadmap สรุปแผนของเราและเป็นช่องทางในการมีอิทธิพลต่อทิศทางของเรา
ผู้เขียน
Ansible เดิมคิดโดย Michael DeHaan และได้รับประโยชน์จากการมีส่วนร่วมของผู้ใช้มากกว่า 5,000 ราย (และเพิ่มขึ้นเรื่อยๆ) ขอบคุณทุกคนที่มีส่วนร่วม!
Ansible ได้รับการสนับสนุนอย่างภาคภูมิใจจาก Red Hat, Inc.
ใบอนุญาต
GNU General Public License v3.0 หรือใหม่กว่า โปรดดูที่การคัดลอกสำหรับข้อความลิขสิทธิ์ฉบับสมบูรณ์
กรอบการตรวจจับวัตถุ Darknet และ YOLO
โลโก้ !darknet และ hank.ai
Darknet เป็นเฟรมเวิร์กโครงข่ายประสาทเทียมแบบโอเพ่นซอร์สที่พัฒนาขึ้นในภาษา C, C++ และ CUDA
YOLO (คุณดูเพียงครั้งเดียว) เป็นระบบตรวจจับวัตถุแบบเรียลไทม์ที่ล้ำหน้าซึ่งทำงานภายในกรอบงาน Darknet
ค้นพบว่า Hank.ai มีส่วนสนับสนุนชุมชน Darknet/YOLO อย่างไร: https://darknetcv.ai/
สำรวจเว็บไซต์ทางการของ Darknet/YOLO: https://pjreddie.com/darknet/
ศึกษาคำถามที่พบบ่อยเกี่ยวกับ Darknet/YOLO ที่ครอบคลุม: https://pjreddie.com/darknet/yolo/
เข้าร่วมเซิร์ฟเวอร์ Darknet/YOLO Discord ที่ใช้งานอยู่: https://discord.gg/zSq8rtW
เอกสาร
1. เอกสาร YOLOv7: https://arxiv.org/abs/2207.02696
2. กระดาษปรับขนาด-YOLOv4: https://arxiv.org/abs/2102.12074
3. เอกสาร YOLOv4: https://arxiv.org/abs/2004.10934
4. เอกสาร YOLOv3: https://arxiv.org/abs/1804.02769
ข้อมูลทั่วไป
เฟรมเวิร์ก Darknet/YOLO ยังคงมีประสิทธิภาพเหนือกว่าเฟรมเวิร์กและเวอร์ชันอื่นๆ ของ YOLO ทั้งในด้านความเร็วและความแม่นยำ
อิสรภาพที่สมบูรณ์และลักษณะโอเพ่นซอร์สทำให้คุณสามารถรวม Darknet/YOLO เข้ากับโปรเจ็กต์และผลิตภัณฑ์ที่มีอยู่ได้อย่างราบรื่น รวมถึงโปรเจ็กต์เชิงพาณิชย์ โดยไม่มีข้อจำกัดด้านใบอนุญาตหรือค่าธรรมเนียม
Darknet V3 ("Jazz") เปิดตัวในเดือนตุลาคม 2024 แสดงให้เห็นถึงความสามารถโดยการประมวลผลวิดีโอชุดข้อมูล LEGO ที่ 1000 FPS ที่น่าประทับใจ เมื่อใช้ NVIDIA RTX 3090 GPU ซึ่งเท่ากับเวลาประมวลผล 1 มิลลิวินาทีหรือน้อยกว่าสำหรับแต่ละเฟรมวิดีโอ ซึ่งแสดงให้เห็นประสิทธิภาพที่ยอดเยี่ยม
หากต้องการความช่วยเหลือหรือการสนทนาที่เกี่ยวข้องกับ Darknet/YOLO โปรดเข้าร่วมเซิร์ฟเวอร์ Discord เฉพาะ: https://discord.gg/zSq8rtW
Darknet/YOLO เวอร์ชัน CPU สามารถปรับให้เข้ากับอุปกรณ์ต่างๆ ได้ รวมถึง Raspberry Pi, เซิร์ฟเวอร์คลาวด์และ colab, เดสก์ท็อป, แล็ปท็อป และอุปกรณ์ฝึกอบรมระดับไฮเอนด์ Darknet/YOLO เวอร์ชัน GPU จำเป็นต้องมี GPU ที่รองรับ CUDA จาก NVIDIA
Darknet/YOLO ได้รับการตรวจสอบแล้วว่าทำงานได้อย่างราบรื่นบนระบบปฏิบัติการ Linux, Windows และ Mac ดูคำแนะนำในการสร้างด้านล่างนี้
เวอร์ชันดาร์กเน็ต
เครื่องมือ Darknet ดั้งเดิมที่พัฒนาโดย Joseph Redmon ระหว่างปี 2013 ถึง 2017 ไม่มีหมายเลขเวอร์ชัน เราถือว่านี่เป็นเวอร์ชัน 0.x
พื้นที่เก็บข้อมูล Darknet ที่ได้รับความนิยมในเวลาต่อมา ซึ่งดูแลโดย Alexey Bochkovskiy ตั้งแต่ปี 2017 ถึง 2021 ก็ยังไม่มีหมายเลขเวอร์ชันเช่นกัน เราจัดหมวดหมู่นี้เป็นเวอร์ชัน 1.x
พื้นที่เก็บข้อมูล Darknet ซึ่งสนับสนุนโดย Hank.ai และจัดการโดย Stéphane Charette เริ่มต้นในปี 2023 ได้แนะนำคำสั่งเวอร์ชันเป็นครั้งแรก ตั้งแต่ปี 2023 จนถึงปลายปี 2024 ส่งคืนเวอร์ชัน 2.x "OAK"
เป้าหมายการพัฒนามีศูนย์กลางอยู่ที่การลดการหยุดชะงักของฟังก์ชันการทำงานที่มีอยู่ให้เหลือน้อยที่สุด ในขณะเดียวกันก็ทำความคุ้นเคยกับโค้ดเบส
การปรับปรุงที่สำคัญในเวอร์ชัน 2.x:
1. กระบวนการสร้างแบบรวม: เขียนขั้นตอนการสร้างใหม่สำหรับแนวทางแบบรวมโดยใช้ CMake บนทั้ง Windows และ Linux
2. การเปลี่ยนผ่าน C++: แปลงโค้ดเบสเพื่อใช้ประโยชน์จากคอมไพเลอร์ C++
3. การแสดงภาพการฝึกอบรมที่ได้รับการปรับปรุง: ปรับปรุงการแสดงภาพ Chart.png ในระหว่างการฝึกอบรม
4. การเพิ่มประสิทธิภาพประสิทธิภาพ: แก้ไขข้อบกพร่องและดำเนินการเพิ่มประสิทธิภาพที่เกี่ยวข้องกับประสิทธิภาพ โดยเน้นไปที่การลดเวลาการฝึกอบรมเป็นหลัก
เวอร์ชัน 2.1 แสดงถึงสาขาสุดท้ายของโค้ดเบสนี้ ซึ่งมีอยู่ในสาขา v2
การพัฒนาขั้นต่อไปเริ่มขึ้นในกลางปี 2024 และสิ้นสุดในการเปิดตัวเวอร์ชัน 3.x "JAZZ" ในเดือนตุลาคม 2024
คุณยังคงมีตัวเลือกในการตรวจสอบสาขา v2 ก่อนหน้า หากคุณต้องการเข้าถึงคำสั่งเฉพาะจากเวอร์ชันนั้น หากคุณพบคำสั่งที่ขาดหายไป โปรดแจ้งให้เราทราบเพื่อทำการตรวจสอบและอาจรวมเข้าด้วยกันอีกครั้ง
การเปลี่ยนแปลงที่สำคัญในเวอร์ชัน 3.x:
1. การตัดคำสั่ง: ลบคำสั่งที่ล้าสมัยและไม่ได้รับการดูแลจำนวนมากออก
2. ประสิทธิภาพที่เพิ่มขึ้น: ดำเนินการเพิ่มประสิทธิภาพอย่างกว้างขวาง ทั้งในระหว่างการฝึกอบรมและการอนุมาน
3. การปรับเปลี่ยน API: C API ดั้งเดิมได้รับการปรับเปลี่ยน แอปพลิเคชันที่ใช้ Darknet API ดั้งเดิมจำเป็นต้องมีการปรับเปลี่ยนเล็กน้อย โปรดดูคำแนะนำในเอกสารที่อัปเดต: https://darknetcv.ai/api/api.html
4. บทนำ API ใหม่: เปิดตัว 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 ได้จากสถานที่ต่างๆ รวมถึงที่เก็บข้อมูลนี้:
YOLOv2 (พฤศจิกายน 2559):
yolov2-เล็ก
yolov2-เต็ม
YOLOv3 (พฤษภาคม 2018):
yolov3-จิ๋ว
yolov3-เต็ม
YOLOv4 (พฤษภาคม 2020):
yolov4-จิ๋ว
yolov4-เต็ม
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 เพื่อสร้างไฟล์โปรเจ็กต์ที่จำเป็น
การสร้าง Darknet/YOLO ไม่จำเป็นต้องมีความเชี่ยวชาญด้าน C++ เหมือนกับการขับรถ คุณไม่จำเป็นต้องเป็นช่างก็ใช้งานได้
นักพัฒนาซอฟต์แวร์ควรไปที่ https://darknetcv.ai/ เพื่อดูข้อมูลเชิงลึกเกี่ยวกับการทำงานภายในของเฟรมเวิร์กการตรวจจับวัตถุ Darknet/YOLO
Google Colab
วิธีการของ Google Colab จะเหมือนกับวิธีการของ Linux สมุดบันทึก Jupyter หลายเครื่องสาธิตงานเฉพาะ เช่น การฝึกอบรมเครือข่ายใหม่
สำรวจสมุดบันทึกภายในไดเรกทอรีย่อย colab หรือทำตามคำแนะนำของ Linux ด้านล่าง
วิธีการลินุกซ์ CMake
1. ซอฟต์แวร์ที่จำเป็น:
สิ่งจำเป็นสำหรับการสร้าง: sudo apt-get install build-essential git libopencv-dev cmake
2. การโคลนพื้นที่เก็บข้อมูล:
สร้างไดเร็กทอรีต้นทาง: mkdir ~/srccd ~/src
โคลนพื้นที่เก็บข้อมูล: git clone https://github.com/hank-ai/darknetcd darknet
3. สร้างไดเรกทอรี:
สร้างไดเร็กทอรี build: mkdir buildcd build
4. การกำหนดค่า CMake:
กำหนดค่า CMake: cmake -DCMAKEBUILDTYPE=Release ..
5. สร้าง Darknet:
สร้าง: make -j4
6. การติดตั้งแพ็คเกจ:
สร้างแพ็คเกจ: แพ็คเกจ
ติดตั้งแพ็คเกจ: sudo dpkg -i darknet-VERSION.deb
ทางเลือก: การติดตั้ง CUDA หรือ CUDA+cuDNN
สำหรับการประมวลผลภาพและวิดีโอแบบเร่งความเร็ว คุณสามารถเลือกติดตั้ง CUDA หรือ CUDA+cuDNN ได้
การติดตั้ง CUDA:
ไปที่ https://developer.nvidia.com/cuda-downloads เพื่อดาวน์โหลดและติดตั้ง CUDA
การติดตั้ง cuDNN:
ไปที่ 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:
ลบไฟล์ CMakeCache.txt ออกจากไดเรกทอรีบิลด์ Darknet ของคุณเพื่อบังคับให้ CMake ค้นหาไฟล์ที่จำเป็นอีกครั้ง
สร้าง Darknet ขึ้นมาใหม่
อัปเกรดเวอร์ชัน CMake (หากจำเป็น):
ล้าง CMake ที่มีอยู่: sudo apt-get ล้าง cmake
ติดตั้ง CMake ล่าสุด: sudo snap install cmake --classic
รีสตาร์ทเชลล์ของคุณ (ทุบตี) หรือตรวจสอบให้แน่ใจว่ารู้จักเส้นทางใหม่ (ปลา)
ผู้ใช้ขั้นสูง:
หากต้องการสร้างไฟล์การติดตั้ง RPM แทน DEB ให้แก้ไขบรรทัดที่เกี่ยวข้องใน CM_package.cmake ก่อนที่จะรันแพ็คเกจ make -j4 ให้ปรับบรรทัดต่อไปนี้:
`เอาล่ะ
ชุด (CPACK_GENERATOR "DEB")
ชุด (CPACK_GENERATOR "รอบต่อนาที")
-
สำหรับการแจกแจงเช่น CentOS และ OpenSUSE ให้แก้ไขบรรทัดเหล่านี้:
`เอาล่ะ
ชุด (CPACK_GENERATOR "DEB")
ชุด (CPACK_GENERATOR "รอบต่อนาที")
-
เมื่อสร้างแพ็คเกจการติดตั้งแล้ว ให้ติดตั้งโดยใช้ตัวจัดการแพ็คเกจของการแจกจ่ายของคุณ ตัวอย่างเช่น บนระบบที่ใช้ Debian เช่น Ubuntu:
`ทุบตี
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 สร้างและติดตั้งใน /usr/bin/ สำเร็จแล้ว หากต้องการตรวจสอบ ให้เรียกใช้เวอร์ชัน Darknet
วิธี Windows CMake
1. ข้อกำหนดเบื้องต้น:
ติดตั้งสิ่งต่อไปนี้โดยใช้ Winget:
- Git: winget ติดตั้ง Git.Git
- CMake: winget ติดตั้ง Kitware.CMake
- NSIS: ติดตั้ง winget nsis.nsis
- ชุมชน Visual Studio 2022: winget ติดตั้ง Microsoft.VisualStudio.2022.Community
2. การกำหนดค่า Visual Studio:
เปิด "Visual Studio Installer" จากเมนูเริ่มของ Windows
คลิก "แก้ไข"
เลือก "การพัฒนาเดสก์ท็อปด้วย C ++"
คลิก "แก้ไข" ที่มุมขวาล่าง จากนั้นคลิก "ใช่"
3. พรอมต์คำสั่งสำหรับนักพัฒนา:
เปิดเมนู "Windows Start" และเลือก "Developer Command Prompt for VS 2022" อย่าใช้ PowerShell สำหรับขั้นตอนเหล่านี้
4. การติดตั้ง Microsoft VCPKG (สำหรับ OpenCV):
ไปที่ C:: cd c:
สร้างไดเร็กทอรี src: mkdir c:src
โคลน VCPKG: cd c:src git clone https://github.com/microsoft/vcpkg
Bootstrap VCPKG: cd vcpkg bootstrap-vcpkg.bat
รวม VCPKG: .vcpkg.exe รวมการติดตั้ง
ติดตั้ง OpenCV (รวมถึงการขึ้นต่อกัน): .vcpkg.exe ติดตั้ง opencv[contrib,dnn,freetype,jpeg,openmp,png,webp,world]:x64-windows
5. ตัวเลือกเสริม: การติดตั้ง CUDA หรือ CUDA+cuDNN (Windows)
สำหรับการประมวลผลภาพและวิดีโอแบบเร่งความเร็ว คุณสามารถเลือกติดตั้ง CUDA หรือ CUDA+cuDNN ได้
การติดตั้ง CUDA:
ไปที่ https://developer.nvidia.com/cuda-downloads เพื่อดาวน์โหลดและติดตั้ง CUDA
การติดตั้ง cuDNN:
ไปที่ https://developer.nvidia.com/rdp/cudnn-download หรือ https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#download-windows เพื่อดาวน์โหลดและติดตั้ง cuDNN
การติดตั้งหลัง CUDA:
ตรวจสอบให้แน่ใจว่าคุณสามารถรัน nvcc.exe ได้ คุณอาจต้องแก้ไขตัวแปร PATH ของคุณ
แตกไฟล์ cuDNN ที่ดาวน์โหลดมา และคัดลอก bin, include และไดเร็กทอรี lib ลงใน C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/[version]/ คุณอาจต้องเขียนทับไฟล์บางไฟล์
การอัพเกรด CUDA หรือ CUDA+cuDNN:
ต้องติดตั้ง CUDA หลังจาก Visual Studio ติดตั้ง CUDA ใหม่หากคุณอัพเกรด Visual Studio
6. การโคลนและสร้าง Darknet:
นำทางไปยังไดเร็กทอรีต้นทางของคุณ: cd c:src
โคลนพื้นที่เก็บข้อมูล: git clone https://github.com/hank-ai/darknet.git
สร้างไดเร็กทอรี build: cd darknetmkdir build
กำหนดค่า CMake ด้วย VCPKG: cd build 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
สร้างแพ็คเกจการติดตั้ง NSIS: msbuild.exe /property:Platform=x64;Configuration=Release PACKAGE.vcxproj
7. การจัดการ CUDA/cuDNN DLL ที่หายไป:
หากคุณพบข้อผิดพลาดเกี่ยวกับ CUDA หรือ cuDNN DLLs ที่หายไป (เช่น cublas64_12.dll) ให้คัดลอกไฟล์ CUDA .dll ที่เกี่ยวข้องไปยังไดเร็กทอรีเอาต์พุตเดียวกันกับ Darknet.exe ด้วยตนเอง ตัวอย่างเช่น:
`ทุบตี
คัดลอก "C: Program FilesNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll" src-cliRelease
-
ปรับหมายเลขเวอร์ชันในคำสั่งให้ตรงกับการติดตั้งของคุณ
รันคำสั่ง msbuild.exe อีกครั้งเพื่อสร้างแพ็คเกจการติดตั้ง NSIS
ผู้ใช้ขั้นสูง:
คำสั่ง cmake สร้างไฟล์โซลูชัน Visual Studio (Darknet.sln) หากคุณต้องการ Visual Studio GUI คุณสามารถโหลดโครงการ Darknet ใน Visual Studio แทนการใช้เครื่องมือบรรทัดคำสั่ง
การตรวจสอบหลังการสร้าง:
ตรวจสอบว่ามี C:srcDarknetbuildsrc-cliReleasedarknet.exe อยู่ เรียกใช้เวอร์ชัน C:srcDarknetbuildsrc-cliReleasedarknet.exe เพื่อยืนยัน
การติดตั้ง:
เรียกใช้วิซาร์ดการติดตั้ง NSIS (เช่น darknet-VERSION.exe ในไดเร็กทอรี build) เพื่อติดตั้ง Darknet, ไลบรารี, รวมไฟล์ และ DLL ที่จำเป็น
การตรวจสอบหลังการติดตั้ง:
ตรวจสอบว่ามี C:/Program Files/darknet/bin/darknet.exe อยู่ เรียกใช้เวอร์ชัน C:/Program Files/darknet/bindarknet.exe เพื่อยืนยัน
การใช้ดาร์กเน็ต
คลีไอ
รายการนี้ไม่รวมคำสั่ง Darknet ทั้งหมด
นอกเหนือจาก Darknet CLI แล้ว ให้พิจารณาใช้ CLI ของโปรเจ็กต์ DarkHelp ซึ่งมีอินเทอร์เฟซทางเลือกและขั้นสูงกว่า CLI ทั้งสองสามารถใช้ร่วมกันได้
สำหรับคำสั่งส่วนใหญ่ คุณจะต้องมีไฟล์ .weights พร้อมด้วยไฟล์ .names และ .cfg ที่เกี่ยวข้อง คุณสามารถฝึกอบรมเครือข่ายของคุณเองหรือดาวน์โหลดเครือข่ายที่ได้รับการฝึกอบรมมาแล้ว
ชุดข้อมูลที่ได้รับการฝึกอบรมล่วงหน้า:
LEGO Gears: การตรวจจับวัตถุในภาพ
Rolodex: การตรวจจับข้อความในภาพ
MSCOCO: การตรวจจับวัตถุมาตรฐาน 80 คลาส
คำสั่ง CLI ทั่วไป:
1. วิธีใช้: ความช่วยเหลือจาก darknet
2. เวอร์ชัน: เวอร์ชัน darknet
3. การทำนายภาพ (V2):
การทดสอบเครื่องตรวจจับ darknet cars.data cars.cfg cars_best.weights image1.jpg
4. การทำนายภาพ (V3):
darknet02displayภาพที่มีคำอธิบายประกอบcars.cfg image1.jpg
5. การทำนายภาพ (DarkHelp):
DarkHelp cars.cfg cars.cfg cars_best.weights image1.jpg
6. พิกัดเอาต์พุต (V2):
การทดสอบเครื่องตรวจจับ darknetanimals.dataanimals.cfganimalbest.weights -extoutput dog.jpg
7. พิกัดเอาต์พุต (V3):
darknet01inference_images สัตว์ dog.jpg
8. พิกัดเอาต์พุต (DarkHelp):
DarkHelp --jsonanimals.cfganimals.namesanimals_best.weights dog.jpg
9. การประมวลผลวิดีโอ (V2):
การสาธิตเครื่องตรวจจับ darknetanimals.dataanimals.cfganimalbest.weights -extoutput test.mp4
10. การประมวลผลวิดีโอ (V3):
darknet03display_videosanimals.cfg test.mp4
11. การประมวลผลวิดีโอ (DarkHelp):
DarkHelp Animals.cfganimals.namesanimals_best.weights test.mp4
12. การประมวลผลเว็บแคม (V2):
การสาธิตเครื่องตรวจจับ darknetanimals.dataanimals.cfganimals_best.weights -c 0
13. การประมวลผลเว็บแคม (V3):
darknet08display_webcam สัตว์
14. การบันทึกวิดีโอ (V2):
การสาธิตเครื่องตรวจจับ darknetanimals.dataanimals.cfganimalbest.weights test.mp4 -outfilename res.avi
15. การบันทึกวิดีโอ (V3):
darknet05กระบวนการวิดีโอแบบมัลติเธรดanimals.cfganimals.namesanimals_best.weights test.mp4
16. การบันทึกวิดีโอ (DarkHelp):
DarkHelp Animals.cfganimals.namesanimals_best.weights test.mp4
17. เอาต์พุต JSON (V2):
การสาธิตเครื่องตรวจจับ darknet Animals.data Animals.cfg Animalsbest.weights test50.mp4 -jsonport 8070 -mjpegport 8090 -extoutput
18. เอาต์พุต JSON (V3):
darknet06imagestojson สัตว์ image1.jpg
19. เอาต์พุต JSON (DarkHelp):
DarkHelp --jsonanimals.namesanimals.cfganimals_best.weights image1.jpg
20. การเลือก GPU (V2):
การสาธิตเครื่องตรวจจับ darknetanimals.dataanimals.cfganimals_best.weights -i 1 test.mp4
21. การตรวจสอบความถูกต้องของเครือข่าย:
แผนที่เครื่องตรวจจับ darknet การขับรถ.ข้อมูลการขับรถ.cfg Driving_best.weights ...
22. การตรวจสอบความแม่นยำ (mAP@IoU=75):
แผนที่เครื่องตรวจจับ darknet Animals.data Animals.cfg Animalsbest.weights -iouthresh 0.75
23. การคำนวณ Anchor ใหม่ (แนะนำ DarkMark):
เครื่องตรวจจับ darknet calcanchors Animals.data -numof_clusters 6 - กว้าง 320 - สูง 256
24. การฝึกอบรมเครือข่ายใหม่:
เครื่องตรวจจับ darknet -map -dont_show รถไฟanimals.dataanimals.cfg (ดูหัวข้อการฝึกอบรมด้านล่าง)
การฝึกอบรม
ลิงก์ด่วนไปยังส่วนที่เกี่ยวข้องของคำถามที่พบบ่อยเกี่ยวกับ Darknet/YOLO:
การตั้งค่า: https://pjreddie.com/darknet/yolo/
การเลือกไฟล์การกำหนดค่า: https://pjreddie.com/darknet/yolo/
คำสั่งการฝึกอบรม: https://pjreddie.com/darknet/yolo/
แนวทางที่มีประสิทธิภาพมากที่สุดในการใส่คำอธิบายประกอบและการฝึกอบรมคือการใช้ DarkMark นี่เป็นวิธีที่แนะนำสำหรับการฝึกโครงข่ายประสาทเทียมใหม่
การตั้งค่าการฝึกอบรมด้วยตนเอง:
1. สร้างโฟลเดอร์โปรเจ็กต์: ตัวอย่างเช่น ~/nn/animals/
2. คัดลอกเทมเพลตการกำหนดค่า:
เลือกไฟล์การกำหนดค่า (เช่น 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 ที่เกี่ยวข้องซึ่งกำหนดคำอธิบายประกอบ
คุณไม่สามารถสร้างไฟล์ .txt เหล่านี้ด้วยตนเองได้ DarkMark หรือเครื่องมือที่คล้ายกันจำเป็นในการใส่คำอธิบายประกอบรูปภาพของคุณและสร้างไฟล์เหล่านี้
โปรดดูคำถามที่พบบ่อยของ Darknet/YOLO สำหรับรูปแบบคำอธิบายประกอบ YOLO
6. สร้างไฟล์animaltrain.txtและanimalvalid.txt:
สร้างไฟล์ข้อความเหล่านี้ตามที่ระบุไว้ในไฟล์ Animals.data
ไฟล์เหล่านี้แสดงรายการรูปภาพทั้งหมดที่จะใช้สำหรับการฝึกอบรมและการตรวจสอบตามลำดับ
หนึ่งภาพต่อบรรทัด โดยใช้เส้นทางแบบสัมพัทธ์หรือแบบสัมบูรณ์
7. แก้ไขไฟล์การกำหนดค่า (animals.cfg):
ชุดงาน: ชุดชุด = 64
เขตการปกครอง: เริ่มต้นด้วยเขตการปกครอง=1. ปรับตามความจำเป็นตามขนาดเครือข่ายและหน่วยความจำ GPU
Max Batches: ค่าเริ่มต้นที่ดีคือ maxbatches=2000 * numberofclasses ในตัวอย่างนี้ maxbatches=8000 (สัตว์ 4 ตัว)
ขั้นตอน: ตั้งค่าเป็น 80% และ 90% ของ max_batches ในตัวอย่างนี้ ขั้นตอน=6400,7200
ความกว้างและความสูง: กำหนดขนาดเครือข่าย โปรดดูคำแนะนำจากคำถามที่พบบ่อยของ Darknet/YOLO
คลาส: ตั้งค่า class=... ให้ตรงกับจำนวนคลาสในไฟล์ .names ของคุณ (4 ในตัวอย่างนี้)
ตัวกรอง: ในแต่ละเลเยอร์แบบหมุนวนก่อนเลเยอร์ yolo ให้ตั้งค่าตัวกรอง=... เป็น (จำนวนคลาส + 5) * 3 ในตัวอย่างนี้ ตัวกรอง=27
8. เริ่มการฝึกอบรม:
นำทางไปยังโฟลเดอร์โปรเจ็กต์ของคุณ: cd ~/nn/animals/
เริ่มการฝึกอบรม: เครื่องตรวจจับ darknet -map -dont_show รถไฟanimals.dataanimals.cfg
จงอดทน ตุ้มน้ำหนักที่ดีที่สุดจะถูกบันทึกเป็นanimals_best.weights
ติดตามความคืบหน้าของการฝึกอบรมโดยการดูไฟล์ Chart.png
ศึกษาคำถามที่พบบ่อยของ Darknet/YOLO เพื่อดูพารามิเตอร์การฝึกอบรมเพิ่มเติม
สำหรับผลลัพธ์การฝึกโดยละเอียดเพิ่มเติม ให้เพิ่มแฟล็ก --verbose:
`ทุบตี
เครื่องตรวจจับ darknet -map -dont_show --verbose รถไฟanimals.dataanimals.cfg
-
เครื่องมือและลิงค์อื่นๆ
DarkMark: สำหรับการจัดการโปรเจ็กต์ Darknet/YOLO การใส่คำอธิบายประกอบรูปภาพ การตรวจสอบคำอธิบายประกอบ และสร้างไฟล์การฝึกอบรม https://darknetcv.ai/darkmark/
DarkHelp: สำหรับ CLI ทางเลือกที่มีประสิทธิภาพไปจนถึง Darknet การเรียงภาพ การติดตามวัตถุ และ C++ API ที่เป็นมิตรต่อเชิงพาณิชย์ https://darknetcv.ai/darkhelp/
คำถามที่พบบ่อยเกี่ยวกับ Darknet/YOLO: สำหรับคำตอบสำหรับคำถามทั่วไป https://pjreddie.com/darknet/yolo/
ช่อง YouTube ของ Stephane: สำหรับบทแนะนำและวิดีโอตัวอย่าง https://www.youtube.com/@stephane-charette
เซิร์ฟเวอร์ Discord ของ Darknet/YOLO: สำหรับคำถามสนับสนุนและการสนทนาในชุมชน https://discord.gg/zSq8rtW
แผนการทำงาน
อัปเดตล่าสุด: 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 Orin ใหม่ใช้งานได้
แก้ไขปัญหา Python API ใน V3 แล้ว
เป้าหมายระยะสั้น
สลับ 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
ใช้กล่องขอบเขตแบบหมุนหรือส่วนรองรับมุม
แนะนำประเด็นสำคัญ/โครงกระดูก
เพิ่มการรองรับแผนที่ความร้อน (อยู่ระหว่างดำเนินการ)
รวมการแบ่งส่วน