Ini adalah repositori resmi dengan implementasi PyTorch dari LW-DETR: Pengganti Transformer ke YOLO untuk Deteksi Waktu Nyata.
☀️ Jika Anda merasa karya ini berguna untuk penelitian Anda, silakan beri bintang pada repo kami dan kutip makalah kami! ☀️
Merilis serangkaian model deteksi real-time di LW-DETR, termasuk LW-DETR-tiny, LW-DETR-small, LW-DETR-medium, LW-DETR-large, dan LW-DETR-xlarge, yang diberi nama
Rilis serangkaian model terlatih di LW-DETR. Silakan merujuk ke Memeluk Wajah untuk mengunduh.
[2024/7/15] Kami menghadirkan OVLW-DETR, detektor kosakata terbuka yang efisien dengan performa luar biasa dan latensi rendah, yang dibangun berdasarkan LW-DETR. Ini melampaui detektor kosakata terbuka real-time yang ada pada benchmark standar Zero-Shot LVIS. Kode sumber dan model terlatih akan segera hadir, harap terus menantikannya!
1. Pendahuluan
2. Instalasi
3. Persiapan
4. Kereta api
5. Evaluasi
6. Terapkan
7. Hasil Utama
8. Referensi
9. Kutipan
LW-DETR adalah trafo deteksi ringan, yang mengungguli YOLO dalam deteksi objek waktu nyata. Arsitekturnya adalah tumpukan sederhana dari encoder ViT, proyektor, dan decoder DETR yang dangkal. LW-DETR memanfaatkan teknik-teknik canggih terkini, seperti teknik pelatihan yang efektif, misalnya, peningkatan kerugian dan pra-pelatihan, serta jendela interleaved dan perhatian global untuk mengurangi kompleksitas encoder ViT. LW-DETR meningkatkan encoder ViT dengan menggabungkan peta fitur multi-level, dan peta fitur perantara dan akhir dalam encoder ViT, membentuk peta fitur yang lebih kaya, dan memperkenalkan organisasi peta fitur jendela-utama untuk meningkatkan efisiensi komputasi perhatian yang disisipkan. LW-DETR mencapai kinerja yang unggul dibandingkan detektor real-time yang ada, misalnya YOLO dan variannya, pada COCO dan kumpulan data benchmark lainnya.
Kode ini dikembangkan dan divalidasi di bawah python=3.8.19, pytorch=1.13.0, cuda=11.6,TensorRT-8.6.1.6
. Versi yang lebih tinggi mungkin juga tersedia.
Buat lingkungan Python Anda sendiri dengan Anaconda.
conda buat -n lwdetr python=3.8.19 conda aktifkan lwdetr
Kloning repo ini.
git klon https://github.com/Atten4Vis/LW-DETR.gitcd LW-DETR
Instal PyTorch dan torchvision.
Ikuti instruksi di https://pytorch.org/get-started/locally/.
# contoh:conda install pytorch==1.13.0 torchvision==0.14.0 pytorch-cuda=11.6 -c pytorch -c nvidia
Instal paket yang diperlukan.
Untuk pelatihan dan evaluasi:
instalasi pip -r persyaratan.txt
Untuk penerapan:
Silakan merujuk ke NVIDIA untuk instruksi instalasi TensorRT
pip install -r deploy/requirements.txt
Mengkompilasi operator CUDA
model/operasi cd python setup.py build install# unit test (akan melihat semua pemeriksaan Benar)python test.pycd ../..
Untuk dataset MS COCO , silakan unduh dan ekstrak gambar kereta dan val COCO 2017 dengan anotasi dari http://cocodataset.org. Kami mengharapkan struktur direktori sebagai berikut:
COCODIR/ ├── train2017/ ├── val2017/ └── annotations/ ├── instances_train2017.json └── instances_val2017.json
Untuk kumpulan data Objects365 untuk prapelatihan, silakan unduh gambar Objects365 dengan anotasi dari https://www.objects365.org/overview.html.
Semua pos pemeriksaan dapat ditemukan di Hugging Face.
Pra-pelatihan tentang Objects365.
Melatih ViT sebelumnya.
Kami melakukan pra-latihan ViT pada kumpulan data Objects365 menggunakan metode MIM, CAE v2, berdasarkan model yang telah dilatih sebelumnya. Silakan merujuk ke tautan berikut untuk mengunduh model yang telah dilatih sebelumnya, dan memasukkannya ke dalam pretrain_weights/
.
Model | Komentar |
---|---|
caev2_tiny_300e_objects365 | model ViT yang telah dilatih sebelumnya pada objek365 untuk LW-DETR-tiny/small menggunakan CAE v2 |
caev2_tiny_300e_objects365 | model ViT yang telah dilatih sebelumnya pada objek365 untuk LW-DETR-medium/besar menggunakan CAE v2 |
caev2_tiny_300e_objects365 | model ViT yang telah dilatih sebelumnya pada objek365 untuk LW-DETR-xlarge menggunakan CAE v2 |
LW-DETR yang telah dilatih sebelumnya.
Kami melatih ulang encoder dan melatih proyektor dan decoder di Objects365 dengan cara pengawasan. Silakan merujuk ke tautan berikut untuk mengunduh model yang telah dilatih sebelumnya, dan memasukkannya ke dalam pretrain_weights/
.
Model | Komentar |
---|---|
LWDETR_tiny_30e_objects365 | model kecil LW-DETR yang telah dilatih sebelumnya pada objek365 |
LWDETR_small_30e_objects365 | model kecil LW-DETR yang telah dilatih sebelumnya pada objek365 |
LWDETR_medium_30e_objects365 | model medium LW-DETR yang telah dilatih sebelumnya pada objek365 |
LWDETR_large_30e_objects365 | model besar LW-DETR yang telah dilatih sebelumnya pada objek365 |
LWDETR_xlarge_30e_objects365 | model LW-DETR-xlarge yang telah dilatih sebelumnya pada objek365 |
Menyempurnakan COCO. Kami menyempurnakan model terlatih di COCO. Jika Anda ingin menerapkan kembali repo kami, lewati langkah ini. Jika Anda ingin mengevaluasi secara langsung model terlatih kami, silakan merujuk ke tautan berikut untuk mengunduh model yang telah disempurnakan, dan memasukkannya ke dalam output/
.
Model | Komentar |
---|---|
LWDETR_tiny_60e_coco | menyempurnakan model kecil LW-DETR pada COCO |
LWDETR_small_60e_coco | menyempurnakan model LW-DETR-kecil pada COCO |
LWDETR_medium_60e_coco | menyempurnakan model medium LW-DETR pada COCO |
LWDETR_large_60e_coco | menyempurnakan model besar LW-DETR pada COCO |
LWDETR_xlarge_60e_coco | menyempurnakan model LW-DETR-xlarge pada COCO |
Anda dapat langsung menjalankan file scripts/lwdetr_
untuk proses pelatihan pada dataset coco.
sh scripts/lwdetr_tiny_coco_train.sh /path/ke/Anda/COCODIR
sh scripts/lwdetr_small_coco_train.sh /path/to/your/COCODIR
sh scripts/lwdetr_medium_coco_train.sh /path/ke/Anda/COCODIR
sh scripts/lwdetr_large_coco_train.sh /path/ke/Anda/COCODIR
sh scripts/lwdetr_xlarge_coco_train.sh /path/ke/Anda/COCODIR
Anda dapat langsung menjalankan file scripts/lwdetr_
untuk proses evaluasi pada dataset coco. Silakan merujuk ke 3. Persiapan mengunduh serangkaian model LW-DETR.
sh scripts/lwdetr_tiny_coco_eval.sh /path/ke/Anda/COCODIR /path/ke/pos pemeriksaan Anda
sh scripts/lwdetr_small_coco_eval.sh /path/ke/Anda/COCODIR /path/ke/pos pemeriksaan Anda
sh scripts/lwdetr_medium_coco_eval.sh /path/ke/Anda/COCODIR /path/ke/pos pemeriksaan Anda
sh scripts/lwdetr_large_coco_eval.sh /path/ke/Anda/COCODIR /path/ke/pos pemeriksaan Anda
sh skrip/lwdetr_xlarge_coco_eval.sh /path/ke/COCODIR Anda /path/ke/pos pemeriksaan Anda
Anda dapat menjalankan file scripts/lwdetr_
untuk mengekspor model untuk pengembangan. Sebelum mengeksekusi, pastikan variabel lingkungan TensorRT dan cuDNN disetel dengan benar.
# ekspor skrip model ONNX/lwdetr_tiny_coco_export.sh /path/to/your/COCODIR /path/to/your/checkpoint# konversi model dari ONNX ke mesin TensorRT serta skrip wellsh/lwdetr_tiny_coco_export.sh /path/to/your/COCODIR /path /ke/pos pemeriksaan/Anda --trt
# ekspor skrip model ONNX/lwdetr_small_coco_export.sh /path/to/your/COCODIR /path/to/your/checkpoint# konversi model dari ONNX ke mesin TensorRT serta skrip wellsh/lwdetr_small_coco_export.sh /path/to/your/COCODIR /path /ke/pos pemeriksaan/Anda --trt
# ekspor skrip model ONNX/lwdetr_medium_coco_export.sh /path/to/your/COCODIR /path/to/your/checkpoint# konversi model dari ONNX ke mesin TensorRT serta skrip wellsh/lwdetr_medium_coco_export.sh /path/to/your/COCODIR /path /ke/pos pemeriksaan/Anda --trt
# ekspor skrip model ONNX/lwdetr_large_coco_export.sh /path/to/your/COCODIR /path/to/your/checkpoint# konversi model dari ONNX ke mesin TensorRT serta skrip wellsh/lwdetr_large_coco_export.sh /path/to/your/COCODIR /path /ke/pos pemeriksaan/Anda --trt
# ekspor skrip model ONNX/lwdetr_xlarge_coco_export.sh /path/to/your/COCODIR /path/to/your/checkpoint# konversi model dari ONNX ke mesin TensorRT serta skrip wellsh/lwdetr_xlarge_coco_export.sh /path/to/your/COCODIR /path /ke/pos pemeriksaan/Anda --trt
Anda dapat menggunakan alat deploy/benchmark.py
untuk menjalankan tolok ukur latensi inferensi.
# mengevaluasi dan mengukur latensi pada modelpython deploy/benchmark.py --path=/path/to/your/onnxmodel --coco_path=/path/to/your/COCODIR --run_benchmark # evaluasi dan tolok ukur latensi pada penerapan enginepython TensorRT/benchmark.py --path=/path/to/your/trtengine --coco_path=/path/to/your/COCODIR --run_benchmark
Hasil utama pada dataset coco. Kami melaporkan peta seperti yang dilaporkan dalam makalah asli, serta peta yang diperoleh dari implementasi ulang.
Metode | pelatihan awal | Param (L) | FLOP (G) | Latensi Model (ms) | Total Latensi (md) | peta | Unduh |
---|---|---|---|---|---|---|---|
LW-DETR-tiny | ✔ | 12.1 | 11.2 | 2.0 | 2.0 | 42.6 (42.9) | Link |
LW-DETR-small | ✔ | 14.6 | 16.6 | 2.9 | 2.9 | 48.0 (48.1) | Link |
LW-DETR-medium | ✔ | 28.2 | 42.8 | 5.6 | 5.6 | 52,5 (52,6) | Link |
LW-DETR-large | ✔ | 46.8 | 71.6 | 8.8 | 8.8 | 56.1 (56.1) | Link |
LW-DETR-xlarge | ✔ | 118.0 | 174.2 | 19.1 | 19.1 | 58.3 (58.3) | Link |
Proyek kami dilakukan berdasarkan makalah publik berikut dengan kode:
Grup DETR
ViTDet
DETR yang dapat dideformasi
DETR bersyarat
YOLOv8
SejajarkanDETR
CAE v2
CAE
Jika Anda merasa kode ini berguna dalam penelitian Anda, mohon pertimbangkan untuk mengutip makalah kami:
@article{chen2024lw,title={LW-DETR: Pengganti Transformer pada YOLO untuk Deteksi Waktu Nyata},author={Chen, Qiang dan Su, Xiangbo dan Zhang, Xinyu dan Wang, Jian dan Chen, Jiahui dan Shen, Yunpeng dan Han, Chuchu dan Chen, Ziliang dan Xu, Weixiang dan Li, Fanrong dan lainnya},journal={arXiv preprint arXiv:2406.03459},tahun={2024}}