HmacManager
สรุป
เครื่องมือแก้ไข Downcodes นำเสนอ HmacManager ซึ่งเป็นเครื่องมือตรวจสอบสิทธิ์ HMAC สำหรับแอปพลิเคชัน ASP.NET Core ที่ให้การบูรณาการที่ราบรื่นและการรักษาความปลอดภัยที่แข็งแกร่งสำหรับแอปพลิเคชันของคุณ
คุณสมบัติ
การตรวจสอบสิทธิ์ HMAC: HmacManager ให้การตรวจสอบสิทธิ์ HMAC ซึ่งช่วยให้คุณสามารถเพิ่มชั้นการตรวจสอบความถูกต้องที่ปลอดภัยให้กับ ASP.NET Core API ของคุณได้
การกำหนดค่าที่ง่ายดาย: ด้วยตัวเลือกการกำหนดค่าที่ง่ายดาย คุณสามารถรวมการรับรองความถูกต้อง HMAC ในแอปพลิเคชันของคุณได้อย่างรวดเร็ว
ตัวเลือกการปรับแต่ง: HmacManager มีตัวเลือกการปรับแต่งเพื่อให้คุณสามารถกำหนดค่าได้ตามความต้องการของคุณ
การรักษาความปลอดภัยขั้นสูง: การตรวจสอบสิทธิ์ HMAC ช่วยเพิ่มความปลอดภัยของ API ของคุณโดยใช้อัลกอริธึมการแฮชของ HMAC เพื่อตรวจสอบสิทธิ์คำขอ
การติดตั้ง
HmacManager พร้อมใช้งานบน NuGet
`ทุบตี
dotnet เพิ่มแพ็คเกจ HmacManager
-
ทรัพยากร
อ่านเพิ่มเติม: เอกสารอย่างเป็นทางการ
โค้ดตัวอย่าง: พื้นที่เก็บข้อมูล GitHub
กรอบการตรวจจับวัตถุ Darknet และ YOLO
โลโก้ !darknet และ hank.ai
Darknet เป็นเฟรมเวิร์กโครงข่ายประสาทเทียมแบบโอเพ่นซอร์สที่เขียนด้วยภาษา C, C++ และ CUDA
YOLO (คุณดูเพียงครั้งเดียว) เป็นระบบตรวจจับเป้าหมายแบบเรียลไทม์ขั้นสูงที่ทำงานในกรอบงาน Darknet
1. เอกสาร
YOLOv7: ลิงค์กระดาษ
Scaled-YOLOv4: ลิงก์กระดาษ
YOLOv4: ลิงค์กระดาษ
YOLOv3: ลิงค์กระดาษ
2. ข้อมูลทั่วไป
เฟรมเวิร์ก Darknet/YOLO ยังคงมีประสิทธิภาพเหนือกว่าเฟรมเวิร์กอื่นๆ และเวอร์ชัน YOLO ในด้านความเร็วและความแม่นยำ
เฟรมเวิร์กนั้นฟรีและโอเพ่นซอร์สโดยสมบูรณ์ คุณสามารถรวม Darknet/YOLO เข้ากับโปรเจ็กต์และผลิตภัณฑ์ที่มีอยู่ รวมถึงผลิตภัณฑ์เชิงพาณิชย์ โดยไม่ต้องมีใบอนุญาตหรือค่าธรรมเนียม
Darknet V3 ("Jazz") ซึ่งเปิดตัวในเดือนตุลาคม 2024 สามารถรันวิดีโอชุดข้อมูล LEGO ได้อย่างแม่นยำที่สูงถึง 1000 FPS เมื่อใช้ NVIDIA RTX 3090 GPU ซึ่งหมายความว่าแต่ละเฟรมวิดีโอจะใช้เวลา 1 มิลลิวินาทีหรือน้อยกว่าในการอ่าน ปรับขนาด และประมวลผลโดย Darknet /YOLO ในไม่กี่วินาที
เข้าร่วมเซิร์ฟเวอร์ Darknet/YOLO Discord: https://discord.gg/zSq8rtW
Darknet/YOLO เวอร์ชัน CPU สามารถทำงานบนอุปกรณ์ง่ายๆ เช่น Raspberry Pi, เซิร์ฟเวอร์คลาวด์, เซิร์ฟเวอร์ Colab, เดสก์ท็อป, แล็ปท็อป และอุปกรณ์การฝึกอบรมระดับไฮเอนด์ Darknet/YOLO เวอร์ชัน GPU ต้องใช้ GPU ที่รองรับ NVIDIA CUDA
เป็นที่รู้กันว่า Darknet/YOLO ทำงานได้ดีบน Linux, Windows และ Mac ดูคำแนะนำในการสร้างด้านล่าง
3. เวอร์ชันดาร์กเน็ต
เวอร์ชัน 0.x: เครื่องมือ Darknet ดั้งเดิมที่เขียนโดย Joseph Redmon ในปี 2556-2560 ไม่มีหมายเลขเวอร์ชัน
เวอร์ชัน 1.x: พื้นที่เก็บข้อมูล Darknet ยอดนิยมถัดไปที่ดูแลโดย Alexey Bochkovskiy ระหว่างปี 2560-2564 ยังไม่มีหมายเลขเวอร์ชันเช่นกัน
เวอร์ชัน 2.x ("OAK"): พื้นที่เก็บข้อมูล Darknet ที่สนับสนุนโดย Hank.ai และดูแลโดย Stéphane Charette ตั้งแต่ปี 2023 เป็นพื้นที่แรกที่มีคำสั่งเวอร์ชัน ตั้งแต่ปี 2023 ถึงสิ้นปี 2024 จะกลับมาเป็นเวอร์ชัน 2.x "OAK"
เวอร์ชัน 3.x (“JAZZ”): การพัฒนาระยะถัดไปที่เริ่มในช่วงกลางปี 2024 และจะเปิดตัวในเดือนตุลาคม 2024 คำสั่ง version ส่งคืน 3.x "JAZZ"
4. ตุ้มน้ำหนักก่อนการฝึก 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 ที่เกี่ยวข้องจะอยู่ในไดเร็กทอรี 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. เอวี
-
โปรดทราบว่าควรฝึกอบรมเครือข่ายของตนเอง MSCOCO มักใช้เพื่อยืนยันว่าทุกอย่างเรียบร้อยดี
5. สร้าง
วิธีการสร้างต่างๆ ในอดีต (ก่อนปี 2023) ได้ถูกรวมเข้าเป็นโซลูชันแบบครบวงจร Darknet ต้องการ C++17 หรือสูงกว่า, OpenCV และใช้ CMake เพื่อสร้างไฟล์โปรเจ็กต์ที่จำเป็น
คุณไม่จำเป็นต้องรู้ C++ เพื่อสร้าง ติดตั้ง หรือรัน Darknet/YOLO เช่นเดียวกับที่คุณไม่จำเป็นต้องเป็นช่างเครื่องก็ขับรถได้
5.1 Google Colab
คำแนะนำของ Google Colab เหมือนกับคำแนะนำของ Linux สมุดบันทึก Jupyter หลายเครื่องแสดงวิธีดำเนินการบางอย่าง เช่น การฝึกอบรมเครือข่ายใหม่
ดูสมุดบันทึกในไดเรกทอรีย่อย colab หรือทำตามคำแนะนำของ Linux ด้านล่าง
5.2 วิธีลินุกซ์ CMake
บทช่วยสอนการสร้าง Darknet บน Linux
`ทุบตี
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
-
5.3 วิธี Windows CMake
คำแนะนำเหล่านี้ถือเป็นการติดตั้ง Windows 11 22H2 ใหม่
`ทุบตี
ติดตั้ง winget Git.Git ติดตั้ง winget Kitware.CMake ติดตั้ง winget nsis.nsis ติดตั้ง winget Microsoft.VisualStudio.2022.Community
-
จากนั้นเราจำเป็นต้องแก้ไขการติดตั้ง Visual Studio เพื่อรวมการรองรับแอปพลิเคชัน C ++:
* คลิกเมนู Windows Start และเรียกใช้ Visual Studio Installer
* คลิก "แก้ไข"
* เลือก "การพัฒนาเดสก์ท็อปโดยใช้ C++"
* คลิก "แก้ไข" ที่มุมขวาล่าง จากนั้นคลิก "ใช่"
หลังจากดาวน์โหลดและติดตั้งทุกอย่างแล้ว ให้คลิกที่เมนู "Windows Start" อีกครั้งและเลือก "Developer Command Prompt for 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,ชนิดฟรี,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#cudnn-package-manager-installation-overview เพื่อดาวน์โหลด และติดตั้ง cuDNN
หลังจากติดตั้ง CUDA แล้ว ตรวจสอบให้แน่ใจว่าคุณสามารถเรียกใช้ nvcc.exe และ nvidia-smi.exe ได้ คุณอาจต้องแก้ไขตัวแปร PATH
หลังจากดาวน์โหลด cuDNN แล้ว ให้แตกไฟล์และคัดลอก bin, include และไดเร็กทอรี 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 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 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 จะ:
* สร้างไดเร็กทอรีชื่อ 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 แสดงว่าคุณไม่ได้ติดตั้ง คุณเพิ่งสร้างมันขึ้นมา! ตรวจสอบให้แน่ใจว่าคุณเรียกดูแต่ละแผงของตัวช่วยสร้างการติดตั้ง NSIS ในขั้นตอนก่อนหน้า
6. ใช้ Darknet
6.1 คลีไอ
ต่อไปนี้ไม่ใช่รายการคำสั่งทั้งหมดที่ Darknet รองรับ
นอกจาก Darknet CLI แล้ว ยังมีโครงการ DarkHelp CLI ซึ่งเป็นทางเลือกแทน Darknet/YOLO CLI 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: darknet02displayannotatedimages cars.cfg image1.jpg
DarkHelp: DarkHelp cars.cfg cars_best.weights image1.jpg
-
* พิกัดขาออก:
`ทุบตี
V2: การทดสอบเครื่องตรวจจับ darknetanimals.dataanimals.cfganimalbest.weights -extoutput dog.jpg
V3: darknet01inference_images สัตว์ dog.jpg
DarkHelp: DarkHelp --jsonanimals.cfganimals.namesanimals_best.weights dog.jpg
-
*ใช้วิดีโอ:
`ทุบตี
V2: การสาธิตเครื่องตรวจจับ darknetanimals.dataanimals.cfganimalbest.weights -extoutput test.mp4
V3: darknet03display_videosanimals.cfg test.mp4
DarkHelp: DarkHelpanimals.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: darknet05processvideosmultithreadedanimals.cfganimals.namesanimals_best.weights test.mp4
DarkHelp: DarkHelpanimals.cfganimals.namesanimals_best.weights test.mp4
-
*เจสัน:
`ทุบตี
V2: การสาธิตเครื่องตรวจจับ darknetanimals.dataanimals.cfganimalbest.weights test50.mp4 -jsonport 8070 -mjpegport 8090 -extoutput
V3: darknet06imagestojson สัตว์ image1.jpg
DarkHelp: 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.11 50 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.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 5 10 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 light 94.1033 3449 2 17 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
-
* ฝึกอบรมเครือข่ายใหม่:
`ทุบตี
cd ~/nn/animals/ darknet detector -map -dont_show รถไฟanimals.dataanimals.cfg
-
6.2 การฝึกอบรม
ลิงก์ด่วนไปยังส่วนที่เกี่ยวข้องของคำถามที่พบบ่อยเกี่ยวกับ Darknet/YOLO:
* ฉันควรตั้งค่าไฟล์และไดเร็กทอรีของฉันอย่างไร?
* ฉันควรใช้โปรไฟล์ใด?
* ฉันควรใช้คำสั่งใดในการฝึกเครือข่ายของตัวเอง?
สร้างไฟล์ Darknet ที่จำเป็นทั้งหมดโดยใช้ DarkMark ซึ่งเป็นวิธีที่ง่ายที่สุดในการใส่คำอธิบายประกอบและฝึกฝน นี่เป็นวิธีที่แนะนำในการฝึกโครงข่ายประสาทเทียมใหม่อย่างแน่นอน
หากคุณต้องการตั้งค่าไฟล์ต่างๆ ด้วยตนเองเพื่อฝึกเครือข่ายที่กำหนดเอง:
* สร้างโฟลเดอร์ใหม่เพื่อจัดเก็บไฟล์ สำหรับตัวอย่างนี้ โครงข่ายประสาทเทียมจะถูกสร้างขึ้นเพื่อตรวจจับสัตว์ ดังนั้นไดเร็กทอรีต่อไปนี้จะถูกสร้างขึ้น: ~/nn/animals/
* คัดลอกไฟล์การกำหนดค่า Darknet หนึ่งไฟล์ที่คุณต้องการใช้เป็นเทมเพลต ตัวอย่างเช่น ดูที่ cfg/yolov4-tiny.cfg วางไว้ในโฟลเดอร์ที่คุณสร้างขึ้น สำหรับตัวอย่างนี้ ตอนนี้เรามี ~/nn/animals/animals.cfg
* สร้างไฟล์ข้อความanimals.namesในโฟลเดอร์เดียวกับที่คุณวางไฟล์การกำหนดค่า สำหรับตัวอย่างนี้ ตอนนี้เรามี ~/nn/animals/animals.names
* ใช้โปรแกรมแก้ไขข้อความเพื่อแก้ไขไฟล์animals.names ระบุหมวดหมู่ที่คุณต้องการใช้ คุณต้องมีหนึ่งรายการต่อบรรทัด ไม่มีบรรทัดว่าง และไม่มีความคิดเห็น สำหรับตัวอย่างนี้ ไฟล์ .names จะมี 4 บรรทัดพอดี:
-
สุนัข
แมว
นก
ม้า
-
* สร้างไฟล์ข้อความ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
-
* สร้างโฟลเดอร์เพื่อจัดเก็บรูปภาพและคำอธิบายประกอบของคุณ ตัวอย่างเช่น อาจเป็น ~/nn/animals/dataset รูปภาพแต่ละรูปต้องมีไฟล์ .txt ที่เกี่ยวข้องซึ่งอธิบายคำอธิบายประกอบสำหรับรูปภาพนั้น รูปแบบของไฟล์ความคิดเห็น .txt มีความเฉพาะเจาะจงมาก คุณไม่สามารถสร้างไฟล์เหล่านี้ด้วยตนเองได้ เนื่องจากคำอธิบายประกอบแต่ละรายการจำเป็นต้องมีพิกัดที่แม่นยำของคำอธิบายประกอบ ดู DarkMark หรือซอฟต์แวร์อื่นที่คล้ายคลึงกันเพื่อใส่คำอธิบายประกอบภาพของคุณ รูปแบบคำอธิบายประกอบ YOLO มีอธิบายอยู่ใน Darknet/YOLO FAQ
* สร้างไฟล์ข้อความ "train" และ "valid" ที่มีชื่ออยู่ในไฟล์ .data ไฟล์ข้อความทั้งสองนี้จำเป็นต้องแยกรายการรูปภาพทั้งหมดที่ Darknet ต้องใช้เพื่อฝึกและตรวจสอบเมื่อคำนวณ mAP% หนึ่งภาพต่อแถว เส้นทางและชื่อไฟล์อาจเป็นแบบสัมพัทธ์หรือแบบสัมบูรณ์ก็ได้
* ใช้โปรแกรมแก้ไขข้อความเพื่อแก้ไขไฟล์ .cfg ของคุณ
* ตรวจสอบให้แน่ใจว่าชุด = 64
* ให้ความสนใจกับเขตการปกครอง ขึ้นอยู่กับขนาดเครือข่ายและจำนวนหน่วยความจำที่มีอยู่ใน GPU คุณอาจต้องเพิ่มการแบ่งย่อย ค่าที่ดีที่สุดที่จะใช้คือ 1 ดังนั้นให้เริ่มจากสิ่งนั้นเลย หากคุณไม่สามารถใช้ 1 โปรดดูคำถามที่พบบ่อยของ Darknet/YOLO
โปรดทราบว่า maxbatches=…. ค่าที่ดีในการเริ่มต้นคือ 2,000 เท่าของจำนวนหมวดหมู่ สำหรับตัวอย่างนี้ เรามีสัตว์ 4 ตัว ดังนั้น 4 2000 = 8000 ซึ่งหมายความว่าเราจะใช้ maxbatches=8000
* หมายเหตุขั้นตอน=..... ควรตั้งค่าเป็น 80% และ 90% ของ maxbatches สำหรับตัวอย่างนี้ เราจะใช้ขั้นตอน = 6400,7200 เนื่องจากตั้งค่า maxbatches เป็น 8000
* หมายเหตุ ความกว้าง=... และความสูง=..... นี่คือมิติเครือข่าย คำถามที่พบบ่อยเกี่ยวกับ Darknet/YOLO อธิบายวิธีคำนวณขนาดที่เหมาะสมที่สุดที่จะใช้
* ค้นหาอินสแตนซ์ทั้งหมดของบรรทัด class=... และแก้ไขด้วยจำนวนคลาสในไฟล์ .names สำหรับตัวอย่างนี้ เราจะใช้ class=4
ค้นหาอินสแตนซ์ของตัวกรองทั้งหมด=... บรรทัดในส่วน [convolutional] ก่อนแต่ละส่วน [yolo] ค่าที่ใช้คือ (จำนวนหมวด + 5) 3. ซึ่งหมายความว่าสำหรับตัวอย่างนี้ (4 + 5) * 3 = 27 ดังนั้น เราจะใช้ตัวกรอง=27 ในบรรทัดที่เกี่ยวข้อง
* เริ่มการฝึกอบรม! รันคำสั่งต่อไปนี้:
`ทุบตี
cd ~/nn/animals/ darknet detector -map -dont_show รถไฟanimals.dataanimals.cfg
-
* โปรดรอ. ตุ้มน้ำหนักที่ดีที่สุดจะถูกบันทึกเป็นanimals_best.weights และติดตามความคืบหน้าของการอบรมได้จากไฟล์ Chart.png ดูคำถามที่พบบ่อยของ Darknet/YOLO สำหรับพารามิเตอร์เพิ่มเติมที่คุณอาจต้องการใช้เมื่อฝึกเครือข่ายใหม่
* หากคุณต้องการดูรายละเอียดเพิ่มเติมระหว่างการฝึก ให้เพิ่มพารามิเตอร์ --verbose ตัวอย่างเช่น:
`ทุบตี
เครื่องตรวจจับ darknet -map -dont_show --verbose รถไฟanimals.dataanimals.cfg
-
7. เครื่องมือและลิงค์อื่นๆ
ในการจัดการโปรเจ็กต์ Darknet/YOLO ของคุณ ใส่คำอธิบายประกอบรูปภาพ ตรวจสอบคำอธิบายประกอบของคุณ และสร้างไฟล์ที่จำเป็นสำหรับการฝึกอบรมกับ Darknet โปรดดู DarkMark
สำหรับทางเลือกอันทรงพลังแทน Darknet CLI การใช้การจัดเรียงรูปภาพ การติดตามวัตถุในวิดีโอ หรือการรับ C++ API อันทรงพลังที่สามารถนำไปใช้งานได้อย่างง่ายดายในแอปพลิเคชันเชิงพาณิชย์ โปรดดู DarkHelp
โปรดดูคำถามที่พบบ่อยของ Darknet/YOLO เพื่อขอความช่วยเหลือในการตอบคำถามของคุณ
ลองดูบทแนะนำและวิดีโอตัวอย่างมากมายในช่อง YouTube ของ Stéphane
หากคุณมีคำถามหรือต้องการสนทนากับผู้ใช้ Darknet/YOLO คนอื่นๆ โปรดเข้าร่วมเซิร์ฟเวอร์ Darknet/YOLO Discord
8. แผนงาน
อัปเดตล่าสุดเมื่อ 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 ดั้งเดิมไม่น่าจะได้รับการแก้ไขเนื่องจากไม่รองรับโดย NVIDIA อีกต่อไป (ไม่มีคอมไพเลอร์ C ++ 17)
* อุปกรณ์ Jetson Orin ใหม่กำลังทำงานอยู่
* แก้ไข Python API ใน V3
* ต้องการการสนับสนุน Python ที่ดีกว่า (นักพัฒนา Python คนไหนต้องการความช่วยเหลือ?)
* เป้าหมายระยะสั้น
* แทนที่ printf() ด้วย std::cout (อยู่ระหว่างดำเนินการ)
* ตรวจสอบการสนับสนุนกล้อง zed เก่า
* การแยกวิเคราะห์บรรทัดคำสั่งที่ดีขึ้นและสอดคล้องกันมากขึ้น (อยู่ระหว่างดำเนินการ)
* เป้าหมายระยะกลาง
ลบรหัสอักขระทั้งหมดและแทนที่ด้วย std::string
* อย่าซ่อนคำเตือนและล้างคำเตือนของคอมไพเลอร์ (อยู่ระหว่างดำเนินการ)
* ใช้ cv::Mat ดีกว่าแทนโครงสร้างรูปภาพที่กำหนดเองใน C (อยู่ระหว่างดำเนินการ)
* แทนที่ฟังก์ชันรายการเก่าด้วย std::vector หรือ std::list
* แก้ไขการรองรับภาพระดับสีเทา 1 แชนเนล
* เพิ่มการรองรับรูปภาพ N-channel โดยที่ N > 3 (เช่น รูปภาพที่มีความลึกเป็นพิเศษหรือช่องยอดนิยม)
* การล้างโค้ดอย่างต่อเนื่อง (อยู่ระหว่างดำเนินการ)
* เป้าหมายระยะยาว
* แก้ไขปัญหา CUDA/CUDNN บน GPU ทั้งหมด
* เขียนโค้ด CUDA+cuDNN ใหม่
* พิจารณาเพิ่มการรองรับ GPU ที่ไม่ใช่ NVIDIA
* กล่องขอบเขตแบบหมุน หรือการรองรับ "มุม" บางรูปแบบ
*ประเด็นสำคัญ/โครงกระดูก
* Heatmap (อยู่ระหว่างดำเนินการ)
* แยก