ระบบสอบถามคะแนนสากลแบบปรับตัวอัจฉริยะของ Asp+Csv
วันนี้ บรรณาธิการของ Downcodes จะแนะนำระบบสืบค้นที่พัฒนาและเผยแพร่โดยใช้ ASP เพื่อสืบค้นข้อมูลในรูปแบบ CSV อย่างชาญฉลาด ปรับให้เข้ากับระบบสืบค้นคะแนนสากลอย่างชาญฉลาด
ซอฟต์แวร์นี้เรียบง่ายมาก แต่เป็นระบบสืบค้นคะแนนที่หลากหลายและสะดวกสบายมาก ซึ่งสามารถใช้เพื่อสืบค้นตารางข้อมูลเดี่ยวและสองมิติของ Excel เกือบทั้งหมด
วัตถุประสงค์
ระบบนี้เหมาะสำหรับการสอบถามที่แม่นยำต่างๆ เช่น เกรด ค่าจ้าง ค่าสาธารณูปโภค ฯลฯ ที่มีการแก้ไขไม่บ่อยและมีการรักษาความลับต่ำ สถานการณ์การใช้งานเฉพาะมีดังนี้:
1. ระบบสืบค้นคะแนน: ใช้ได้กับทุกโรงเรียน, สถาบันการศึกษา, การสอบสถาบันของรัฐ ฯลฯ
2. ระบบสอบถามเงินเดือน : ใช้ได้กับทุกโรงเรียน, สถาบันการศึกษา, การสอบสถาบันของรัฐ ฯลฯ
3. ระบบสอบถามค่าธรรมเนียมทรัพย์สิน: ใช้ได้กับทุกองค์กร โรงเรียน และทุกหน่วยงาน
4. ระบบสอบถามบิลค่าสาธารณูปโภค เหมาะสำหรับชุมชน บริษัทอสังหาริมทรัพย์ หอพักมหาวิทยาลัย ฯลฯ
5. ระบบสืบค้นอื่นๆ: เช่น สืบค้นตำแหน่งชั้นเรียน, สืบค้นการรับเข้าเรียน, สืบค้นใบรับรอง และระบบสืบค้นอื่น ๆ ที่มีการแก้ไขเล็กน้อย
คุณสมบัติและข้อดี
1. ความเก่งกาจสูง: สามารถใช้กับตารางสองมิติเกือบทั้งหมดและสามารถตอบสนองความต้องการส่วนใหญ่ของคุณได้
2. ง่ายและสะดวก: โค้ดมีขนาดเล็กและเรียบง่าย และสามารถแก้ไขได้อย่างรวดเร็วเพื่อให้เหมาะกับสถานการณ์ต่างๆ เช่น การสืบค้นร่วมแบบหลายตาราง
3. ยืดหยุ่นและใช้งานง่าย: เพียงแก้ไขพารามิเตอร์สองสามตัวเพื่อปรับแต่งแบบสอบถาม
4. การใช้งานด่วน: การโพสต์คะแนนสามารถแก้ไขได้ภายในสองถึงสามนาทีอย่างเร็วที่สุด
ข้อจำกัด
1. ไม่เหมาะสำหรับการแก้ไขบ่อยครั้ง: โดยทั่วไปผลลัพธ์ ค่าจ้าง ค่าน้ำ และค่าไฟฟ้า ฯลฯ จะออกในคราวเดียวโดยไม่มีการแก้ไขระบบนี้ไม่เหมาะสำหรับสถานการณ์ที่มีการแก้ไขบ่อยครั้ง
2. เหมาะสำหรับตารางสองมิติเท่านั้น: โดยทั่วไปแล้ว ฐานข้อมูลจะใช้โครงสร้างสองมิติ โดยมีส่วนหัวอยู่ในแถวแรกและแถวแรก และหลังจากนั้นจะมีหนึ่งข้อมูลต่อแถว
3. การควบคุมจำนวนบันทึกในฐานข้อมูลเดียวที่แนะนำ: ระบบนี้ไม่จำกัดจำนวนบันทึกในฐานข้อมูลเดียว แต่แนะนำให้ควบคุมจำนวนบันทึกในฐานข้อมูลเดียวภายใน 30,000 และฐานข้อมูลสามารถ ถูกแบ่งออกเป็นฐานข้อมูลโดยไม่กระทบต่อกัน
4. สูตร รูปภาพ URL ฯลฯ ยังไม่รองรับในขณะนี้: ระบบนี้ไม่รองรับสูตร รูปภาพ URL ฯลฯ ในขณะนี้
คำแนะนำการใช้งาน
สามารถใช้งานได้โดยตรงโดยการอัพโหลดผ่าน FTP ขอแนะนำให้อัพโหลดโดยตรงเพื่อการทดสอบแบบสอบถามก่อน
การเข้าถึงส่วนหน้า: http://website/directory/ (อัปโหลดเพื่อใช้โดยตรงโดยไม่รองรับฐานข้อมูล mysql ฯลฯ )
จากนั้นใช้ notepad++ เพื่อเปิด inc/conn.Asp เพื่อดูความสัมพันธ์ที่สอดคล้องกันระหว่างพารามิเตอร์และหน้าเว็บ จากนั้นเปิดฐานข้อมูลในตัวเริ่มต้นเพื่อเปรียบเทียบผลลัพธ์การสืบค้นและดูความสัมพันธ์ที่เกี่ยวข้อง
ขั้นตอนการใช้งาน
สำหรับรายละเอียด โปรดดูไฟล์รูปแบบ html ในแพ็กเกจที่บีบอัด
ตัวอย่าง
ต่อไปนี้ใช้ Darknet Object Detection Framework และ YOLO เป็นตัวอย่างเพื่อแสดงวิธีใช้องค์ประกอบแท็กชื่อเรื่องของ Markdown และการปรับเค้าโครงบางอย่างเพื่อให้การแสดงข้อมูลเรียบร้อยและสะดวกยิ่งขึ้นสำหรับผู้ใช้ในการอ่าน:
กรอบการตรวจจับวัตถุ Darknet และ YOLO
โลโก้ !darknet และ hank.ai
Darknet เป็นเฟรมเวิร์กโครงข่ายประสาทเทียมแบบโอเพ่นซอร์สที่เขียนด้วยภาษา C, C++ และ CUDA
YOLO (คุณดูเพียงครั้งเดียว) คือระบบตรวจจับวัตถุแบบเรียลไทม์ที่ล้ำสมัยที่ทำงานในกรอบงาน Darknet
เอกสาร
กระดาษ YOLOv7
กระดาษปรับขนาด-YOLOv4
กระดาษ YOLOv4
กระดาษ YOLOv3
ข้อมูลทั่วไป
เฟรมเวิร์ก Darknet/YOLO ยังคงเร็วกว่าและแม่นยำกว่าเฟรมเวิร์กอื่นๆ และเวอร์ชัน YOLO
เฟรมเวิร์กนั้นฟรีและโอเพ่นซอร์สโดยสมบูรณ์ คุณสามารถใช้ Darknet/YOLO ในโปรเจ็กต์และผลิตภัณฑ์ที่มีอยู่ รวมถึงผลิตภัณฑ์เชิงพาณิชย์ โดยไม่ต้องมีใบอนุญาตหรือค่าธรรมเนียม
Darknet V3 ("Jazz") ซึ่งเปิดตัวในเดือนตุลาคม 2024 สามารถรันวิดีโอชุดข้อมูล LEGO ได้อย่างแม่นยำที่สูงถึง 1000 FPS เมื่อใช้ NVIDIA RTX 3090 GPU ซึ่งหมายความว่าแต่ละเฟรมวิดีโอจะใช้เวลา 1 มิลลิวินาทีหรือน้อยกว่าในการอ่าน ปรับขนาด และประมวลผลโดย Darknet /YOLO ในไม่กี่วินาที
หากคุณต้องการความช่วยเหลือหรือต้องการหารือเกี่ยวกับ Darknet/YOLO โปรดเข้าร่วมเซิร์ฟเวอร์ Discord ของ Darknet/YOLO: https://discord.gg/zSq8rtW
Darknet/YOLO เวอร์ชัน CPU สามารถทำงานบนอุปกรณ์ง่ายๆ เช่น Raspberry Pi, เซิร์ฟเวอร์คลาวด์และ colab, เดสก์ท็อป, แล็ปท็อป และอุปกรณ์การฝึกอบรมระดับไฮเอนด์ 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"
เป้าหมายคือการทำความคุ้นเคยกับฐานโค้ดในขณะที่พยายามทำลายฟังก์ชันการทำงานที่มีอยู่ให้น้อยที่สุดเท่าที่จะเป็นไปได้
เขียนขั้นตอนการสร้างใหม่เพื่อให้เรามีแนวทางที่เป็นหนึ่งเดียวในการสร้างบน Windows และ Linux โดยใช้ CMake
แปลงฐานโค้ดเพื่อใช้คอมไพเลอร์ C++
ปรับปรุง Chart.png ระหว่างการฝึกอบรม
การแก้ไขข้อบกพร่องและการเพิ่มประสิทธิภาพที่เกี่ยวข้องกับประสิทธิภาพ ซึ่งส่วนใหญ่เกี่ยวข้องกับการลดเวลาที่ต้องใช้ในการฝึกอบรมเครือข่าย
สาขาสุดท้ายของฐานโค้ดนี้คือเวอร์ชัน 2.1 ในสาขา v2
การพัฒนาระยะต่อไปจะเริ่มในกลางปี 2024 และจะเปิดตัวในเดือนตุลาคม 2024 คำสั่ง version ส่งคืน 3.x "JAZZ"
หากคุณต้องการรันคำสั่งใดคำสั่งหนึ่งเหล่านี้ คุณสามารถชำระเงินสาขา v2 ก่อนหน้าได้ตลอดเวลา หากคุณต้องการความช่วยเหลือ โปรดแจ้งให้เราทราบ เพื่อให้เราตรวจสอบการเพิ่มคำสั่งที่ขาดหายไปได้
ลบคำสั่งเก่าและคำสั่งที่ไม่ได้รับการดูแลออกจำนวนมาก
มีการปรับปรุงประสิทธิภาพหลายอย่าง รวมถึงในระหว่างการฝึกอบรมและการอนุมาน
C API เก่าได้รับการแก้ไขแล้ว แอปพลิเคชันที่ใช้ Darknet API ดั้งเดิมจะต้องมีการแก้ไขเล็กน้อย: https://darknetcv.ai/api/api.html
Darknet V3 C และ C++ API ใหม่: https://darknetcv.ai/api/api.html
แอปพลิเคชันใหม่และโค้ดตัวอย่างใน src-examples: https://darknetcv.ai/api/files.html
MSCOCO ตุ้มน้ำหนักที่ผ่านการฝึกอบรมล่วงหน้า
เพื่อความสะดวก ชุดข้อมูล 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 เพื่อสร้างไฟล์โปรเจ็กต์ที่จำเป็น
คุณไม่จำเป็นต้องรู้ C++ เพื่อสร้าง ติดตั้ง หรือรัน Darknet/YOLO เช่นเดียวกับที่คุณไม่จำเป็นต้องเป็นช่างเครื่องก็ขับรถได้
Google Colab
คำแนะนำสำหรับ Google Colab จะเหมือนกับคำแนะนำสำหรับ Linux มีสมุดบันทึก Jupyter หลายเครื่องที่แสดงวิธีดำเนินการบางอย่าง เช่น การฝึกอบรมเครือข่ายใหม่
ดูสมุดบันทึกในไดเรกทอรีย่อย colab หรือทำตามคำแนะนำของ Linux ด้านล่าง
วิธีการลินุกซ์ CMake
ทางเลือก: หากคุณมี 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#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 สร้าง
cmake -DCMAKEBUILDTYPE=ปล่อย ..
ทำ -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 จะคัดลอกไฟล์ต่อไปนี้:
/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 นั่นหมายความว่าคุณไม่ได้ติดตั้ง คุณเพิ่งสร้างมันขึ้นมา! ตรวจสอบให้แน่ใจว่าคุณติดตั้งไฟล์ .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 ++:
* คลิกเมนู "Windows Start" และเรียกใช้ "Visual Studio Installer"
* คลิกแก้ไข
* เลือกการพัฒนาเดสก์ท็อปด้วย C++
* คลิกแก้ไขที่มุมขวาล่าง จากนั้นคลิกใช่
เมื่อดาวน์โหลดและติดตั้งทุกอย่างแล้ว ให้คลิกที่เมนู "Windows Start" อีกครั้ง และเลือก Developer Command Prompt สำหรับ VS 2022 อย่าใช้ PowerShell เพื่อทำตามขั้นตอนเหล่านี้ คุณจะประสบปัญหา!
ผู้ใช้ขั้นสูง:
แทนที่จะเรียกใช้ Developer Command Prompt คุณสามารถใช้พรอมต์คำสั่งปกติหรือ ssh ลงในอุปกรณ์และเรียกใช้ "Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat" ด้วยตนเอง
เมื่อคุณทำตามคำแนะนำด้านบนแล้วเรียกใช้พรอมต์คำสั่งสำหรับนักพัฒนา (ไม่ใช่ PowerShell!) ให้รันคำสั่งต่อไปนี้เพื่อติดตั้ง Microsoft VCPKG ซึ่งจะใช้ในการสร้าง OpenCV:
-
ซีดี c:mkdir c:srccd c:src
โคลนคอมไพล์ 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 ของคุณเพื่อบังคับให้ 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 และการอ้างอิงอื่นๆ ได้:
-
ซีดี c:src
โคลนคอมไพล์ 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 ตามที่อธิบายไว้ในขั้นตอนก่อนหน้า
การใช้ดาร์กเน็ต
คลีไอ
ต่อไปนี้ไม่ใช่รายการคำสั่งทั้งหมดที่ Darknet รองรับ
นอกจาก Darknet CLI แล้ว ยังมี CLI ของโปรเจ็กต์ DarkHelp ซึ่งมอบ 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: 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
-
เจสัน:
-
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 ...
ชื่อรหัส 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:
* ฉันจะตั้งค่าไฟล์และไดเร็กทอรีของฉันได้อย่างไร?
* ฉันควรใช้โปรไฟล์ใด?
* ฉันควรใช้คำสั่งใดในการฝึกเครือข่ายของตัวเอง?
ใช้ 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=…. ในตอนแรก ค่าที่ดีคือ 2,000 เท่าของจำนวนหมวดหมู่ ในตัวอย่างนี้ เรามีสัตว์ 4 ตัว ดังนั้น 4 2000 = 8000 ซึ่งหมายความว่าเราจะใช้ maxbatches=8000
* หมายเหตุขั้นตอน=..... ควรตั้งค่าเป็น 80% และ 90% ของ maxbatches ในตัวอย่างนี้ เราจะใช้ขั้นตอน = 6400,7200 เนื่องจาก maxbatches ถูกตั้งค่าเป็น 8000
* คำนึงถึงความกว้าง=... และความสูง=..... นี่คือมิติเครือข่าย คำถามที่พบบ่อยเกี่ยวกับ Darknet/YOLO อธิบายวิธีคำนวณขนาดที่เหมาะสมที่สุดที่จะใช้
* ค้นหาอินสแตนซ์ทั้งหมดที่มีบรรทัด class=... และแก้ไขด้วยจำนวนคลาสในไฟล์ .names ของคุณ ในตัวอย่างนี้เราจะใช้ class=4
ในส่วน [convolutional] ก่อนแต่ละส่วน [yolo] ให้ค้นหาอินสแตนซ์ทั้งหมดที่มีบรรทัด filter=... ค่าที่ใช้คือ (จำนวนหมวด + 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
สมบูรณ์
แทนที่ qsort() ที่ใช้ระหว่างการฝึกอบรมด้วย std::sort() (ยังมีบางอันที่ไม่ค่อยพบบ่อยนัก)
ลบ check_mistakes, getchar() และ system()
แปลง Darknet เพื่อใช้คอมไพเลอร์ C++ (g++ บน Linux, Visual Studio บน 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
* เนื่องจาก NVIDIA ไม่รองรับอุปกรณ์ Jetson ดั้งเดิมอีกต่อไป จึงไม่น่าจะได้รับการแก้ไข (ไม่มีคอมไพเลอร์ 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
กล่องขอบเขตแบบหมุนหรือการรองรับ "มุม" บางรูปแบบ
ประเด็นสำคัญ/โครงกระดูก
แผนที่ความร้อน (อยู่ระหว่างดำเนินการ)
การแบ่งส่วน
ในตัวอย่าง มีการใช้องค์ประกอบแท็กชื่อ Markdown และเนื้อหาบางส่วนได้รับการเสริม ขัดเกลา และปรับเปลี่ยนการเรียงพิมพ์ตามตรรกะ ตัวอย่างเช่น การเพิ่มหมายเลขซีเรียลของจีน การซีเรียลไลซ์ตัวเลขอารบิก การขึ้นบรรทัดใหม่ และการจัดรูปแบบอื่นๆ สามารถทำให้ข้อมูลแสดงเป็นระเบียบมากขึ้น และช่วยให้ผู้ใช้ตรวจสอบได้สะดวกยิ่งขึ้น
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับทุกคน!