นี่คือพื้นที่เก็บข้อมูล อย่างเป็นทางการ ที่ใช้ PyTorch ของ LW-DETR: การเปลี่ยนหม้อแปลงเป็น YOLO สำหรับการตรวจจับแบบเรียลไทม์
☀️ หากคุณพบว่างานนี้มีประโยชน์สำหรับการวิจัยของคุณ โปรดติดดาว repo ของเราและอ้างอิงรายงานของเรา!
เปิดตัวซีรีส์การตรวจจับแบบเรียลไทม์ใน LW-DETR รวมถึง LW-DETR-tiny, LW-DETR-small, LW-DETR-medium, LW-DETR-large และ LW-DETR-xlarge ในชื่อ <LWDETR_*size_60e_coco .pth>. โปรดดูที่ Hugging Face เพื่อดาวน์โหลด
เผยแพร่ชุดโมเดลที่ได้รับการฝึกล่วงหน้าใน LW-DETR โปรดดูที่ Hugging Face เพื่อดาวน์โหลด
[7/2024/15] เรานำเสนอ OVLW-DETR เครื่องมือตรวจสอบคำศัพท์แบบเปิดที่มีประสิทธิภาพพร้อมประสิทธิภาพที่โดดเด่นและเวลาแฝงต่ำ สร้างจาก LW-DETR เหนือกว่าตัวตรวจจับคำศัพท์แบบเปิดแบบเรียลไทม์ที่มีอยู่ในเกณฑ์มาตรฐาน Zero-Shot LVIS ซอร์สโค้ดและโมเดลก่อนการฝึกอบรมจะมาในเร็วๆ นี้ โปรดคอยติดตาม!
1. บทนำ
2. การติดตั้ง
3. การเตรียมการ
4. รถไฟ
5. ประเมินผล
6. ปรับใช้
7. ผลลัพธ์หลัก
8. ข้อมูลอ้างอิง
9. การอ้างอิง
LW-DETR เป็นหม้อแปลงตรวจจับน้ำหนักเบา ซึ่งมีประสิทธิภาพเหนือกว่า YOLO สำหรับการตรวจจับวัตถุแบบเรียลไทม์ สถาปัตยกรรมนี้เป็นการรวมตัวเข้ารหัส ViT, โปรเจ็กเตอร์ และตัวถอดรหัส DETR แบบตื้นเข้าด้วยกัน LW-DETR ใช้ประโยชน์จากเทคนิคขั้นสูงล่าสุด เช่น เทคนิคที่มีประสิทธิภาพในการฝึกอบรม เช่น การสูญเสียและการฝึกล่วงหน้าที่ดีขึ้น และหน้าต่างแบบแทรกและความสนใจทั่วโลกเพื่อลดความซับซ้อนของตัวเข้ารหัส ViT LW-DETR ปรับปรุงตัวเข้ารหัส ViT โดยการรวมแผนผังคุณลักษณะหลายระดับ และแผนผังคุณลักษณะขั้นกลางและขั้นสุดท้ายในตัวเข้ารหัส ViT ซึ่งสร้างแผนผังคุณลักษณะที่สมบูรณ์ยิ่งขึ้น และแนะนำการจัดวางแผนผังคุณลักษณะหลักของหน้าต่างเพื่อปรับปรุงประสิทธิภาพของการคำนวณความสนใจแบบสอดแทรก LW-DETR บรรลุประสิทธิภาพที่เหนือกว่าเครื่องตรวจจับแบบเรียลไทม์ที่มีอยู่ เช่น YOLO และตัวแปร บน COCO และชุดข้อมูลการวัดประสิทธิภาพอื่นๆ
รหัสได้รับการพัฒนาและตรวจสอบภายใต้ python=3.8.19, pytorch=1.13.0, cuda=11.6,TensorRT-8.6.1.6
เวอร์ชันที่สูงกว่าอาจมีให้เช่นกัน
สร้างสภาพแวดล้อม Python ของคุณเองด้วย Anaconda
conda สร้าง -n lwdetr python=3.8.19 conda เปิดใช้งาน lwdetr
โคลนที่เก็บนี้
โคลนคอมไพล์ https://github.com/Atten4Vis/LW-DETR.gitcd LW-DETR
ติดตั้ง PyTorch และ torchvision
ทำตามคำแนะนำบน https://pytorch.org/get-started/locally/
# ตัวอย่าง:conda ติดตั้ง pytorch==1.13.0 torchvision==0.14.0 pytorch-cuda=11.6 -c pytorch -c nvidia
ติดตั้งแพ็คเกจที่จำเป็น
สำหรับการฝึกอบรมและการประเมินผล:
pip ติดตั้ง -r ข้อกำหนด.txt
สำหรับการปรับใช้:
โปรดดู NVIDIA สำหรับคำแนะนำในการติดตั้ง TensorRT
pip install -r ปรับใช้/requirements.txt
รวบรวมตัวดำเนินการ CUDA
โมเดลซีดี/ปฏิบัติการ python setup.py build install# unit test (ควรเห็นว่าการตรวจสอบทั้งหมดเป็น True) python test.pycd ../..
สำหรับชุดข้อมูล MS COCO โปรดดาวน์โหลดและแยกรูปภาพรถไฟและรูปภาพของ COCO 2017 พร้อมคำอธิบายประกอบจาก http://cocodataset.org เราคาดว่าโครงสร้างไดเร็กทอรีจะเป็นดังนี้:
COCODIR/ ├── train2017/ ├── val2017/ └── annotations/ ├── instances_train2017.json └── instances_val2017.json
สำหรับชุดข้อมูล Objects365 สำหรับการฝึกล่วงหน้า โปรดดาวน์โหลดรูปภาพ Objects365 พร้อมคำอธิบายประกอบจาก https://www.objects365.org/overview.html
ด่านทั้งหมดสามารถพบได้ใน Hugging Face
การฝึกอบรมเบื้องต้นเกี่ยวกับ Objects365
อบรม ViT ล่วงหน้า
เราฝึก ViT ล่วงหน้าบนชุดข้อมูล Objects365 โดยใช้วิธี MIM, CAE v2 โดยอิงตามโมเดลที่ได้รับการฝึกล่วงหน้า โปรดดูลิงก์ต่อไปนี้เพื่อดาวน์โหลดโมเดลที่ได้รับการฝึกอบรม และใส่ลงใน pretrain_weights/
แบบอย่าง | ความคิดเห็น |
---|---|
caev2_tiny_300e_objects365 | แบบจำลอง ViT ที่ได้รับการฝึกล่วงหน้าบน object365 สำหรับ LW-DETR-tiny/small โดยใช้ CAE v2 |
caev2_tiny_300e_objects365 | แบบจำลอง ViT ที่ได้รับการฝึกล่วงหน้าบน object365 สำหรับ LW-DETR-ขนาดกลาง/ใหญ่ โดยใช้ CAE v2 |
caev2_tiny_300e_objects365 | โมเดล ViT ที่ฝึกไว้ล่วงหน้าบน object365 สำหรับ LW-DETR-xlarge โดยใช้ CAE v2 |
LW-DETR ที่ผ่านการฝึกอบรมมาแล้ว
เราฝึกอบรมตัวเข้ารหัสใหม่และฝึกอบรมโปรเจ็กเตอร์และตัวถอดรหัสบน Objects365 ในลักษณะการควบคุมดูแล โปรดดูลิงก์ต่อไปนี้เพื่อดาวน์โหลดโมเดลที่ได้รับการฝึกอบรม และใส่ลงใน pretrain_weights/
แบบอย่าง | ความคิดเห็น |
---|---|
LWDETR_tiny_30e_objects365 | โมเดล LW-DETR ขนาดเล็กที่ฝึกไว้ล่วงหน้าบน object365 |
LWDETR_small_30e_objects365 | LW-DETR-โมเดลขนาดเล็กที่ฝึกไว้ล่วงหน้าบน object365 |
LWDETR_medium_30e_objects365 | โมเดลขนาดกลาง LW-DETR ที่ผ่านการฝึกอบรมมาแล้วบน object365 |
LWDETR_large_30e_objects365 | โมเดลขนาดใหญ่ LW-DETR ที่ผ่านการฝึกอบรมมาแล้วบน object365 |
LWDETR_xlarge_30e_objects365 | โมเดล LW-DETR-xlarge ที่ได้รับการฝึกล่วงหน้าบน object365 |
การปรับแต่ง COCO เราปรับแต่งโมเดลที่ได้รับการฝึกล่วงหน้าบน COCO หากคุณต้องการใช้ repo ของเราอีกครั้ง โปรดข้ามขั้นตอนนี้ หากคุณต้องการประเมินโมเดลที่ผ่านการฝึกอบรมของเราโดยตรง โปรดดูลิงก์ต่อไปนี้เพื่อดาวน์โหลดโมเดลที่ได้รับการปรับแต่ง และนำไปไว้ใน output/
แบบอย่าง | ความคิดเห็น |
---|---|
LWDETR_tiny_60e_coco | LW-DETR-โมเดลจิ๋วที่ได้รับการปรับแต่งอย่างละเอียดบน COCO |
LWDETR_small_60e_coco | LW-DETR-รุ่นเล็กที่ได้รับการปรับแต่งอย่างละเอียดบน COCO |
LWDETR_medium_60e_coco | LW-DETR-รุ่นกลางที่ได้รับการปรับแต่งอย่างละเอียดบน COCO |
LWDETR_large_60e_coco | LW-DETR-รุ่นใหญ่ที่ได้รับการปรับแต่งอย่างละเอียดบน COCO |
LWDETR_xlarge_60e_coco | รุ่น LW-DETR-xlarge ที่ได้รับการปรับแต่งอย่างละเอียดบน COCO |
คุณสามารถเรียกใช้ไฟล์ scripts/lwdetr_<model_size>_coco_train.sh
ได้โดยตรงสำหรับกระบวนการฝึกอบรมบนชุดข้อมูล coco
สคริปต์ sh/lwdetr_tiny_coco_train.sh /path/to/your/COCODIR
สคริปต์ sh/lwdetr_small_coco_train.sh /path/to/your/COCODIR
สคริปต์ sh/lwdetr_medium_coco_train.sh /path/to/your/COCODIR
สคริปต์ sh/lwdetr_large_coco_train.sh /path/to/your/COCODIR
สคริปต์ sh/lwdetr_xlarge_coco_train.sh /path/to/your/COCODIR
คุณสามารถรันไฟล์ scripts/lwdetr_<model_size>_coco_eval.sh
ได้โดยตรงสำหรับกระบวนการประเมินผลบนชุดข้อมูล coco โปรดดูที่ 3. การเตรียมดาวน์โหลดซีรีส์ของรุ่น LW-DETR
sh สคริปต์/lwdetr_tiny_coco_eval.sh /path/to/your/COCODIR /path/to/your/checkpoint
sh สคริปต์/lwdetr_small_coco_eval.sh /path/to/your/COCODIR /path/to/your/checkpoint
sh สคริปต์/lwdetr_medium_coco_eval.sh /path/to/your/COCODIR /path/to/your/checkpoint
sh สคริปต์/lwdetr_large_coco_eval.sh /path/to/your/COCODIR /path/to/your/checkpoint
sh สคริปต์/lwdetr_xlarge_coco_eval.sh /path/to/your/COCODIR /path/to/your/checkpoint
คุณสามารถรันไฟล์ scripts/lwdetr_<model_size>_coco_export.sh
เพื่อเอ็กซ์พอร์ตโมเดลเพื่อการพัฒนา ก่อนดำเนินการ โปรดตรวจสอบให้แน่ใจว่าตัวแปรสภาพแวดล้อม TensorRT และ cuDNN ได้รับการตั้งค่าอย่างถูกต้อง
# ส่งออกสคริปต์โมเดล ONNX/lwdetr_tiny_coco_export.sh /path/to/your/COCODIR /path/to/your/checkpoint# แปลงโมเดลจาก ONNX เป็นเอ็นจิ้น TensorRT เป็นสคริปต์ wellsh/lwdetr_tiny_coco_export.sh /path/to/your/COCODIR /path /to/your/checkpoint --trt
# ส่งออกสคริปต์โมเดล ONNX/lwdetr_small_coco_export.sh /path/to/your/COCODIR /path/to/your/checkpoint# แปลงโมเดลจาก ONNX เป็นเอ็นจิ้น TensorRT เป็นสคริปต์ wellsh/lwdetr_small_coco_export.sh /path/to/your/COCODIR /path /to/your/checkpoint --trt
# ส่งออกสคริปต์โมเดล ONNX/lwdetr_medium_coco_export.sh /path/to/your/COCODIR /path/to/your/checkpoint# แปลงโมเดลจาก ONNX เป็นเอ็นจิ้น TensorRT เป็นสคริปต์ wellsh/lwdetr_medium_coco_export.sh /path/to/your/COCODIR /path /to/your/checkpoint --trt
# ส่งออกสคริปต์โมเดล ONNX/lwdetr_large_coco_export.sh /path/to/your/COCODIR /path/to/your/checkpoint# แปลงโมเดลจาก ONNX เป็นเอ็นจิ้น TensorRT เป็นสคริปต์ wellsh/lwdetr_large_coco_export.sh /path/to/your/COCODIR /path /to/your/checkpoint --trt
# ส่งออกสคริปต์โมเดล ONNX/lwdetr_xlarge_coco_export.sh /path/to/your/COCODIR /path/to/your/checkpoint# แปลงโมเดลจาก ONNX เป็นเอ็นจิ้น TensorRT เป็นสคริปต์ wellsh/lwdetr_xlarge_coco_export.sh /path/to/your/COCODIR /path /to/your/checkpoint --trt
คุณสามารถใช้เครื่องมือ deploy/benchmark.py
เพื่อรันการวัดประสิทธิภาพเวลาแฝงของการอนุมาน
# ประเมินและเปรียบเทียบเวลาแฝงบน onnx modelpython ปรับใช้/benchmark.py --path=/path/to/your/onnxmodel --coco_path=/path/to/your/COCODIR --run_benchmark # ประเมินและเปรียบเทียบเวลาแฝงบน TensorRT enginepython ปรับใช้/benchmark.py --path=/path/to/your/trtengine --coco_path=/path/to/your/COCODIR --run_benchmark
ผลลัพธ์หลักบนชุดข้อมูล coco เรารายงาน mAP ตามที่รายงานในรายงานต้นฉบับ รวมถึง mAP ที่ได้รับจากการนำกลับมาใช้ใหม่
วิธี | การฝึกอบรมล่วงหน้า | พารามิเตอร์ (M) | ฟลอปส์ (G) | เวลาแฝงของโมเดล (มิลลิวินาที) | เวลาแฝงทั้งหมด (มิลลิวินาที) | แผนที่ | ดาวน์โหลด |
---|---|---|---|---|---|---|---|
LW-DETR-tiny | 12.1 | 11.2 | 2.0 | 2.0 | 42.6 (42.9) | ลิงค์ | |
LW-DETR-small | 14.6 | 16.6 | 2.9 | 2.9 | 48.0 (48.1) | ลิงค์ | |
LW-DETR-medium | 28.2 | 42.8 | 5.6 | 5.6 | 52.5 (52.6) | ลิงค์ | |
LW-DETR-large | 46.8 | 71.6 | 8.8 | 8.8 | 56.1 (56.1) | ลิงค์ | |
LW-DETR-xlarge | 118.0 | 174.2 | 19.1 | 19.1 | 58.3 (58.3) | ลิงค์ |
โครงการของเราดำเนินการตามเอกสารสาธารณะต่อไปนี้พร้อมรหัส:
กลุ่มดีทีอาร์
ViTDet
DETR ที่เปลี่ยนรูปได้
DETR แบบมีเงื่อนไข
โยโลฟ8
จัดแนว DETR
ซีเออี v2
ซีเออี
หากคุณพบว่าโค้ดนี้มีประโยชน์ในการวิจัยของคุณ โปรดพิจารณาอ้างอิงเอกสารของเรา:
@article{chen2024lw,title={LW-DETR: A Transformer Replacement to YOLO for Real-Time Detection},ผู้เขียน={Chen, Qiang และ Su, Xiangbo และ Zhang, Xinyu และ Wang, Jian และ Chen, Jiahui และ Shen, Yunpeng และ Han, Chuchu และ Chen, Ziliang และ Xu, Weixiang และ Li, Fanrong และคนอื่นๆ},journal={arXiv preprint arXiv:2406.03459},ปี={2024}}