แกตลิ่ง
Gatling คืออะไร?
Gatling เป็นเครื่องมือทดสอบโหลดโอเพ่นซอร์สที่ทรงพลังซึ่งออกแบบมาเพื่อประสิทธิภาพและความน่าเชื่อถือ โดยนำเสนอโซลูชันที่ครอบคลุมสำหรับการจำลองพฤติกรรมผู้ใช้จริงและการวัดประสิทธิภาพของแอปพลิเคชันของคุณภายใต้ความเครียด
แรงจูงใจ
Gatling ช่วยให้คุณ:
1. ทำความเข้าใจขีดจำกัดของแอปพลิเคชันของคุณ: ระบุปัญหาคอขวดและปัญหาด้านประสิทธิภาพก่อนที่จะส่งผลกระทบต่อผู้ใช้ของคุณ
2. ปรับปรุงประสบการณ์ผู้ใช้: ตรวจสอบให้แน่ใจว่าแอปพลิเคชันของคุณสามารถรองรับปริมาณการใช้งานสูงสุดและให้ประสิทธิภาพที่ราบรื่นสำหรับผู้ใช้ทุกคน
3. รับข้อมูลเชิงลึกอันมีค่า: วิเคราะห์ผลการทดสอบเพื่อเพิ่มประสิทธิภาพ ความสามารถในการปรับขนาด และความน่าเชื่อถือของแอปพลิเคชันของคุณ
คำถามช่วยเหลือ?
หากต้องการความช่วยเหลือและการสนับสนุน คุณสามารถ:
1. ศึกษาเอกสารประกอบอย่างเป็นทางการ: สำรวจบทแนะนำโดยละเอียด คำแนะนำ และการอ้างอิง API
2. เข้าร่วมฟอรัมชุมชน Gatling: เชื่อมต่อกับผู้ใช้รายอื่น แบ่งปันประสบการณ์ และขอคำแนะนำ
3. รายงานปัญหา: หากคุณพบจุดบกพร่อง ให้แจ้งปัญหาในพื้นที่เก็บข้อมูล Gatling GitHub อย่างเป็นทางการ
พันธมิตร
Gatling ร่วมมือกับพันธมิตรหลายรายเพื่อมอบโซลูชันการทดสอบโหลดที่ครอบคลุม สำรวจระบบนิเวศของคู่ค้าสำหรับการบูรณาการเฉพาะทางและบริการสนับสนุน
กรอบการตรวจจับวัตถุ Darknet และ YOLO
Darknet เป็นเฟรมเวิร์กโครงข่ายประสาทเทียมแบบโอเพ่นซอร์สที่เขียนด้วยภาษา C, C++ และ CUDA ซึ่งมีชื่อเสียงในด้านความเร็วและประสิทธิภาพ
YOLO (คุณดูเพียงครั้งเดียว) เป็นระบบตรวจจับวัตถุแบบเรียลไทม์ที่ล้ำสมัยที่ผสานรวมกับกรอบงาน Darknet ได้อย่างราบรื่น
สำรวจระบบนิเวศ Darknet/YOLO:
1. การมีส่วนร่วมของ Hank.ai: ค้นพบว่า Hank.ai มีส่วนร่วมอย่างแข็งขันต่อชุมชน Darknet/YOLO อย่างไร
2. เว็บไซต์อย่างเป็นทางการ: เข้าถึงข้อมูล ทรัพยากร และข่าวสารล่าสุดบนเว็บไซต์ Darknet/YOLO
3. คำถามที่พบบ่อยที่ครอบคลุม: ค้นหาคำตอบสำหรับคำถามที่พบบ่อยเกี่ยวกับ Darknet/YOLO
4. เข้าร่วมเซิร์ฟเวอร์ Discord: เชื่อมต่อกับผู้ที่ชื่นชอบ Darknet/YOLO คนอื่นๆ หารือเกี่ยวกับแนวคิด และรับการสนับสนุน
เอกสาร
1. YOLOv7: สำรวจความก้าวหน้าล่าสุดใน YOLOv7
2. Scaled-YOLOv4: เจาะลึกสถาปัตยกรรม Scaled-YOLOv4 และการปรับปรุงประสิทธิภาพ
3. YOLOv4: ทำความเข้าใจคุณสมบัติหลักและนวัตกรรมของ YOLOv4
4. YOLOv3: เรียนรู้เกี่ยวกับต้นกำเนิดของ YOLO และหลักการพื้นฐานของ YOLOv3
ข้อมูลทั่วไป
เฟรมเวิร์ก Darknet/YOLO มีประสิทธิภาพเหนือกว่าเฟรมเวิร์กอื่นๆ และเวอร์ชัน YOLO อย่างต่อเนื่องทั้งในด้านความเร็วและความแม่นยำ
เป็นซอฟต์แวร์โอเพ่นซอร์สฟรีทั้งหมด ช่วยให้คุณสามารถรวมเข้ากับโครงการและผลิตภัณฑ์ของคุณได้โดยไม่มีข้อจำกัดด้านสิทธิ์การใช้งาน
Darknet V3 "Jazz" ที่เปิดตัวในเดือนตุลาคม 2024 มีประสิทธิภาพที่โดดเด่น โดยประมวลผลวิดีโอชุดข้อมูล LEGO ที่สูงถึง 1,000 FPS โดยใช้ NVIDIA RTX 3090 GPU
เวอร์ชันดาร์กเน็ต
1. เวอร์ชัน 0.x: เครื่องมือ Darknet ดั้งเดิมที่พัฒนาโดย Joseph Redmon ตั้งแต่ปี 2013-2017
2. เวอร์ชัน 1.x: พื้นที่เก็บข้อมูล Darknet ยอดนิยมที่ดูแลโดย Alexey Bochkovskiy ระหว่างปี 2017-2021
3. เวอร์ชัน 2.x "OAK": พื้นที่เก็บข้อมูล Darknet ที่สนับสนุนโดย Hank.ai และดูแลโดย Stéphane Charette เริ่มตั้งแต่ปี 2023 โดยเปิดตัวการกำหนดหมายเลขเวอร์ชันและนำมาซึ่งการปรับปรุงที่สำคัญ ได้แก่:
- กระบวนการสร้างแบบครบวงจรโดยใช้ CMake สำหรับ Windows และ Linux
- การแปลง Codebase เป็นคอมไพเลอร์ C++
- ปรับปรุงการแสดงภาพ Chart.png ระหว่างการฝึก
- แก้ไขข้อบกพร่องและเพิ่มประสิทธิภาพการทำงาน
4. เวอร์ชัน 2.1: เวอร์ชันสุดท้ายของเวอร์ชัน 2.x มีให้ใช้งานในเวอร์ชัน 2.1
5. เวอร์ชัน 3.x "JAZZ": เวอร์ชันล่าสุดที่ออกในเดือนตุลาคม 2024 ประกอบด้วย:
- ลบคำสั่งแบบเดิมและคำสั่งที่ไม่ได้รับการดูแลออก
- การเพิ่มประสิทธิภาพการทำงานอย่างกว้างขวางสำหรับทั้งการฝึกอบรมและการอนุมาน
- แก้ไข API C ดั้งเดิม
- Darknet V3 C และ C++ API ใหม่
- ขยายโค้ดตัวอย่างและแอปพลิเคชันในตัวอย่าง src
MSCOCO ตุ้มน้ำหนักที่ผ่านการฝึกอบรมล่วงหน้า
YOLO เวอร์ชันยอดนิยมหลายเวอร์ชันได้รับการฝึกอบรมล่วงหน้าในชุดข้อมูล MSCOCO โดยมีคลาสอ็อบเจ็กต์ 80 คลาสที่แสดงอยู่ในไฟล์ cfg/coco.names
มีชุดข้อมูลอื่นๆ และตุ้มน้ำหนักที่ได้รับการฝึกล่วงหน้าสำหรับการทดสอบ ได้แก่:
เลโก้เกียร์
โรโลเด็กซ์
ดาวน์โหลดตุ้มน้ำหนักที่ผ่านการฝึกอบรม MSCOCO จากสถานที่ต่างๆ รวมถึงที่เก็บข้อมูลนี้:
- เวอร์ชั่น | จิ๋ว | เต็ม |
-
- YOLOv2 (พฤศจิกายน 2559) | yolov2-tiny.weights | yolov2-full.weights |
- YOLOv3 (พฤษภาคม 2018) | yolov3-tiny.weights | yolov3-full.weights |
- YOLOv4 (พฤษภาคม 2020) | yolov4-tiny.weights | yolov4-full.weights |
- YOLOv7 (สิงหาคม 2022) | yolov7-tiny.weights | yolov7-full.weights |
ตัวอย่างการใช้ตุ้มน้ำหนักที่ผ่านการฝึกอบรม MSCOCO:
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 มีไว้เพื่อการทดสอบเป็นหลัก
อาคาร
Darknet ต้องการ C++17 หรือใหม่กว่า OpenCV และใช้ CMake สำหรับการสร้างระบบอัตโนมัติ
หมายเหตุสำคัญ: คำแนะนำเหล่านี้ได้รับการอัปเดตสำหรับการสร้าง Darknet หลังเดือนสิงหาคม 2023 หากคุณประสบปัญหาในการปฏิบัติตามบทช่วยสอนแบบเก่า โปรดดูขั้นตอนการสร้างล่าสุดที่ README นี้
Google Colab
ทำตามคำแนะนำของ Linux ด้านล่าง สำรวจสมุดบันทึก Jupyter ในไดเรกทอรีย่อย colab สำหรับงานเฉพาะ เช่น การฝึกอบรม
วิธีการลินุกซ์ CMake
1. ติดตั้งการพึ่งพาที่จำเป็น:
- sudo apt-get ติดตั้ง build-essential git libopencv-dev cmake
2. โคลนพื้นที่เก็บข้อมูล Darknet:
- mkdir ~/srccd ~/src git clone https://github.com/hank-ai/darknet
3. สร้างไดเร็กทอรีบิลด์:
- ซีดี darknet mkdir buildcd build
4. กำหนดค่าและสร้าง Darknet:
- cmake -DCMAKEBUILDTYPE=ปล่อย ..
- สร้างแพ็คเกจ -j4
5. ติดตั้งแพ็คเกจ .deb:
- sudo dpkg -i darknet-VERSION.deb
6. ตรวจสอบการติดตั้ง:
- เวอร์ชันดาร์กเน็ต
ทางเลือก: ติดตั้ง CUDA หรือ CUDA+cuDNN สำหรับการเร่งความเร็ว GPU:
1. ดาวน์โหลดและติดตั้ง CUDA:
- https://developer.nvidia.com/cuda-downloads
2. ดาวน์โหลดและติดตั้ง cuDNN:
- https://developer.nvidia.com/rdp/cudnn-download
- https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#cudnn-package-manager-installation-overview
3. ตรวจสอบการติดตั้ง CUDA:
- เอ็นวีซีซี
- nvidia-smi
4. สร้าง Darknet ใหม่:
- cmake -DCMAKEBUILDTYPE=ปล่อย ..
- สร้างแพ็คเกจ -j4
5. ติดตั้งแพ็คเกจ .deb ที่อัพเดต:
- sudo dpkg -i darknet-VERSION.deb
วิธี Windows CMake
1. ติดตั้งการพึ่งพาที่จำเป็น:
- winget ติดตั้ง Git.Git
- ติดตั้ง winget Kitware.CMake
- ติดตั้ง winget nsis.nsis
- winget ติดตั้ง Microsoft.VisualStudio.2022.Community
2. แก้ไขการติดตั้ง Visual Studio:
- เปิด "ตัวติดตั้ง Visual Studio"
- เลือก "แก้ไข"
- เลือก "การพัฒนาเดสก์ท็อปด้วย C++"
- คลิก "แก้ไข" และ "ใช่"
3. ติดตั้ง Microsoft VCPKG:
- เปิดพรอมต์คำสั่งสำหรับนักพัฒนาสำหรับ VS 2022 (ไม่ใช่ PowerShell)
- 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
4. โคลนพื้นที่เก็บข้อมูล Darknet:
- ซีดี c:src git clone https://github.com/hank-ai/darknet.gitcd darknet
5. สร้างไดเร็กทอรีบิลด์:
- mkdir buildcd สร้าง
6. กำหนดค่าและสร้าง Darknet:
- 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
7. คัดลอก CUDA DLLs หากจำเป็น:
- หากคุณพบข้อผิดพลาด CUDA DLL ที่หายไป ให้คัดลอกไปยังไดเร็กทอรีเอาต์พุต:
- คัดลอก "C: Program FilesNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll" src-cliRelease
8. รัน msbuild อีกครั้งเพื่อสร้างแพ็คเกจการติดตั้ง NSIS:
- msbuild.exe /property:Platform=x64;Configuration=Release PACKAGE.vcxproj
9. เรียกใช้วิซาร์ดการติดตั้ง NSIS:
- darknet-VERSION.exe
10. ตรวจสอบการติดตั้ง:
- เวอร์ชัน C:Program FilesDarknetbindarknet.exe
ทางเลือก: ติดตั้ง CUDA หรือ CUDA+cuDNN สำหรับการเร่งความเร็ว GPU:
1. ดาวน์โหลดและติดตั้ง CUDA:
- https://developer.nvidia.com/cuda-downloads
2. ดาวน์โหลดและติดตั้ง cuDNN:
- https://developer.nvidia.com/rdp/cudnn-download
- https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#download-windows
3. แตกไฟล์ cuDNN และคัดลอกไดเร็กทอรี:
- C:/ไฟล์โปรแกรม/ชุดเครื่องมือคอมพิวเตอร์ NVIDIA GPU/CUDA/[เวอร์ชัน]
4. สร้าง Darknet ใหม่:
- ทำซ้ำขั้นตอนที่ 6-8 หลังจากติดตั้ง CUDA
การใช้ดาร์กเน็ต
คลีไอ
คำสั่ง:
ความช่วยเหลือจาก Darknet
เวอร์ชันดาร์กเน็ต
การทำนายภาพ:
V2: การทดสอบเครื่องตรวจจับ darknet cars.data cars.cfg cars_best.weights image1.jpg
V3: darknet02displayannotatedimages cars.cfg image1.jpg
DarkHelp: DarkHelp cars.cfg 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
เอาต์พุต JSON:
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 การขับรถ.ข้อมูลการขับรถ.cfg Driving_best.weights ...
แผนที่เครื่องตรวจจับ darknet Animals.data Animals.cfg Animalsbest.weights -iouthresh 0.75
จุดยึด:
เครื่องตรวจจับ darknet calcanchors Animals.data -numof_clusters 6 - กว้าง 320 - สูง 256
การฝึกอบรม
DarkMark: ใช้ DarkMark สำหรับคำอธิบายประกอบและการฝึกอบรม เป็นแนวทางที่แนะนำสำหรับการฝึกโครงข่ายประสาทเทียมใหม่
การตั้งค่าด้วยตนเอง:
1. สร้างไดเร็กทอรีโปรเจ็กต์: ตัวอย่างเช่น ~/nn/animals/
2. คัดลอกไฟล์การกำหนดค่า: cfg/yolov4-tiny.cfg
3. สร้างไฟล์animals.names: แสดงรายการคลาส (หนึ่งรายการต่อบรรทัด) เช่น:
- สุนัข
- แมว
- นก
- ม้า
4. สร้างไฟล์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. สร้างโฟลเดอร์ชุดข้อมูล: จัดเก็บรูปภาพและไฟล์คำอธิบายประกอบที่เกี่ยวข้อง (.txt) ในรูปแบบ YOLO
6. สร้างanimaltrain.txt และanimalvalid.txt: แสดงรายการรูปภาพสำหรับการฝึกอบรมและการตรวจสอบ
7. แก้ไขanimals.cfg:
- แบทช์ = 64
- เขตการปกครอง = 1
- max_batches = 8000 (4 คลาส * 2000)
- ขั้นตอน = 6400,7200
- กว้าง = ...
- ส่วนสูง = ...
- ชั้นเรียน = 4
- อัปเดตค่าตัวกรอง (เช่น (4 + 5) * 3 = 27)
8. เริ่มการฝึก: cd ~/nn/animals/ darknet detector -map -dont_show train Animals.data Animals.cfg
พารามิเตอร์การฝึกอบรม:
--verbose สำหรับเอาต์พุตโดยละเอียด
เครื่องมือและลิงค์อื่นๆ
DarkMark: การจัดการโครงการ คำอธิบายประกอบรูปภาพ และการสร้างไฟล์สำหรับ Darknet
DarkHelp: CLI ทางเลือก การจัดเรียงรูปภาพ การติดตามวัตถุ และ C++ API ที่แข็งแกร่ง
คำถามที่พบบ่อยเกี่ยวกับ Darknet/YOLO: แหล่งข้อมูลมากมายสำหรับคำถามทั่วไป
ช่อง YouTube ของ Stephane: บทแนะนำและวิดีโอตัวอย่าง
เซิร์ฟเวอร์ Darknet/YOLO Discord: การสนับสนุนและการสนทนาของชุมชน
แผนการทำงาน
สมบูรณ์:
std::sort() สำหรับ qsort() ระหว่างการฝึกอบรม
การลบ check_mistakes, getchar() และ system()
รองรับคอมไพเลอร์ C++ (g++ บน Linux, VisualStudio บน Windows)
แก้ไขการสร้าง Windows
แก้ไขการสนับสนุน Python
สร้างไลบรารี Darknet
ป้ายกำกับการทำนาย (รหัส "ตัวอักษร")
เปิดใช้งานรหัส CUDA/GPU อีกครั้ง
CUDNN เปิดใช้งานอีกครั้ง
CUDNN เปิดใช้งานอีกครั้งครึ่งหนึ่ง
สถาปัตยกรรม CUDA แบบไม่ฮาร์ดโค้ด
ปรับปรุงข้อมูลเวอร์ชัน CUDA
AVX เปิดใช้งานอีกครั้ง
การลบโซลูชันเก่าและ Makefile
OpenCV เป็นการพึ่งพาที่ไม่บังคับ
การลบการพึ่งพาไลบรารี pthread เก่า
การกำจัดโรคติดต่อทางเพศสัมพันธ์
CMakeLists.txt เขียนใหม่สำหรับการตรวจหา CUDA ใหม่
การลบรหัส "ตัวอักษร" และรูปภาพข้อมูล/ป้ายกำกับ
บิลด์นอกแหล่งที่มา
เอาต์พุตหมายเลขเวอร์ชันที่ได้รับการปรับปรุง
การเพิ่มประสิทธิภาพสำหรับการฝึกอบรมและการอนุมาน
ผ่านการอ้างอิงหากเป็นไปได้
ทำความสะอาดไฟล์ .hpp
เขียนใหม่ darknet.h
cv::การใช้ Mat แทนการแคสต์แบบ void*
แก้ไขการใช้โครงสร้างรูปภาพภายใน
สร้างการแก้ไขสำหรับอุปกรณ์ Jetson ที่ใช้ ARM
แก้ไข Python API ใน V3
เป้าหมายระยะสั้น:
มาตรฐาน::cout สำหรับ printf()
รองรับกล้อง Zed
ปรับปรุงการแยกวิเคราะห์บรรทัดคำสั่ง
เป้าหมายระยะกลาง:
ลบรหัส char* แทน std::string
การล้างคำเตือนคอมไพเลอร์
ปรับปรุงการใช้ cv::Mat
แทนที่ฟังก์ชันรายการเก่าด้วย std::vector หรือ std::list
รองรับภาพโทนสีเทา 1 แชนเนล
รองรับภาพ N-channel (N > 3)
การล้างโค้ดอย่างต่อเนื่อง
เป้าหมายระยะยาว:
การแก้ไข CUDA/CUDNN สำหรับ GPU ทั้งหมด
เขียนโค้ด CUDA+cuDNN ใหม่
รองรับ GPU ที่ไม่ใช่ NVIDIA
กล่องขอบเขตแบบหมุนและการรองรับมุม
จุดสำคัญและโครงกระดูก
แผนที่ความร้อน
การแบ่งส่วน