這是 LW-DETR 的 PyTorch 實現的官方儲存庫:用於即時檢測的 YOLO 的變壓器替代品。
☀️ 如果您發現這項工作對您的研究有用,請為我們的儲存庫加註星標並引用我們的論文! ☀️
在LW-DETR中發布一系列即時檢測模型,包括LW-DETR-tiny、LW-DETR-small、LW-DETR-medium、LW-DETR-large和LW-DETR-xlarge,命名為
在LW-DETR中發布一系列預訓練模型。請參考抱臉下載。
[2024/7/15] 我們推出了 OVLW-DETR,這是一種基於 LW-DETR 構建的高效開放詞彙檢測器,具有出色的性能和低延遲。它在標準零樣本 LVIS 基準上超越了現有的即時開放詞彙偵測器。原始碼和預訓練模型即將推出,敬請期待!
一、簡介
2. 安裝
3. 準備工作
4. 火車
5. 評估
6. 部署
七、主要結果
8. 參考文獻
9. 引文
LW-DETR 是一種輕量級檢測變壓器,在即時目標檢測方面優於 YOLO。該架構是 ViT 編碼器、投影機和淺層 DETR 解碼器的簡單堆疊。 LW-DETR 利用最新的先進技術,例如訓練有效的技術,例如改進的損失和預訓練,以及用於降低 ViT 編碼器複雜性的交錯視窗和全局注意力。 LW-DETR透過聚合多層特徵圖以及ViT編碼器中的中間和最終特徵圖來改進ViT編碼器,形成更豐富的特徵圖,並引入視窗主特徵圖組織以提高交錯注意力計算的效率。 LW-DETR 在 COCO 和其他基準資料集上比現有的即時偵測器(例如 YOLO 及其變體)實現了卓越的效能。
程式碼是在python=3.8.19, pytorch=1.13.0, cuda=11.6,TensorRT-8.6.1.6
下開發和驗證的。也可能提供更高版本。
使用 Anaconda 建立您自己的 Python 環境。
conda 創建-n lwdetr python=3.8.19 conda 啟動 lwdetr
克隆這個倉庫。
git 克隆 https://github.com/Atten4Vis/LW-DETR.gitcd LW-DETR
安裝 PyTorch 和 torchvision。
請按照 https://pytorch.org/get-started/locally/ 上的說明進行操作。
# 範例:conda install pytorch==1.13.0 torchvision==0.14.0 pytorch-cuda=11.6 -c pytorch -c nvidia
安裝所需的軟體包。
用於培訓和評估:
pip install -r 要求.txt
對於部署:
TensorRT的安裝說明請參考NVIDIA
pip install -r 部署/requirements.txt
編譯 CUDA 運算符
CD 型號/操作 python setup.py build install# 單元測試(應該看到所有檢查都是 True)python test.pycd ../..
對於MS COCO資料集,請從 http://cocodataset.org 下載並提取帶有註釋的 COCO 2017 訓練和驗證影像。我們期望目錄結構如下:
COCODIR/ ├── train2017/ ├── val2017/ └── annotations/ ├── instances_train2017.json └── instances_val2017.json
對於用於預訓練的Objects365資料集,請從 https://www.objects365.org/overview.html 下載帶有註解的 Objects365 映像。
所有關卡都可以在抱臉中找到。
在 Objects365 上進行預訓練。
預訓練 ViT。
我們基於預訓練模型,使用 MIM 方法 CAE v2 在資料集 Objects365 上預先訓練 ViT。請參考以下連結下載預訓練模型,並將其放入pretrain_weights/
中。
模型 | 評論 |
---|---|
caev2_tiny_300e_objects365 | 使用 CAE v2 在objects365 上為 LW-DETR-tiny/small 預訓練 ViT 模型 |
caev2_tiny_300e_objects365 | 使用 CAE v2 在objects365 上針對 LW-DETR-中/大型預訓練 ViT 模型 |
caev2_tiny_300e_objects365 | 使用 CAE v2 在objects365 上為 LW-DETR-xlarge 預訓練 ViT 模型 |
預訓練的 LW-DETR。
我們以監督方式在 Objects365 上重新訓練編碼器並訓練投影機和解碼器。請參考以下連結下載預訓練模型,並將其放入pretrain_weights/
中。
模型 | 評論 |
---|---|
LWDETR_tiny_30e_objects365 | 在物件上預先訓練的 LW-DETR-tiny 模型365 |
LWDETR_small_30e_objects365 | 在物件上預訓練的 LW-DETR-小模型365 |
LWDETR_medium_30e_objects365 | 在物件上預訓練的 LW-DETR-medium 模型365 |
LWDETR_large_30e_objects365 | 在物件上預訓練的 LW-DETR-large 模型365 |
LWDETR_xlarge_30e_objects365 | 在物件上預訓練的 LW-DETR-xlarge 模型365 |
對 COCO 進行微調。我們在 COCO 上微調預訓練模型。如果您想重新實作我們的儲存庫,請跳過此步驟。如果您想直接評估我們訓練好的模型,請參考以下連結下載微調後的模型,並將其放入output/
中。
模型 | 評論 |
---|---|
LWDETR_tiny_60e_coco | COCO 上微調的 LW-DETR-tiny 模型 |
LWDETR_small_60e_coco | COCO 上微調的 LW-DETR-小模型 |
LWDETR_medium_60e_coco | COCO 上微調的 LW-DETR-medium 模型 |
LWDETR_large_60e_coco | COCO 上微調的 LW-DETR-large 模型 |
LWDETR_xlarge_60e_coco | COCO 上微調的 LW-DETR-xlarge 模型 |
您可以直接執行scripts/lwdetr_
檔案在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_
檔案來對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_
檔案來匯出模型以供開發。執行前,請確保TensorRT和cuDNN環境變數設定正確。
# 匯出 ONNX modelsh script/lwdetr_tiny_coco_export.sh /path/to/your/COCODIR /path/to/your/checkpoint# 將模型從 ONNX 轉換為 TensorRT 引擎 wellsh script/lwdetr_tiny_coco_exportysh/pathD. /到/你的/檢查點--trt
# 匯出 ONNX modelsh script/lwdetr_small_coco_export.sh /path/to/your/COCODIR /path/to/your/checkpoint# 將模型從 ONNX 轉換為 TensorRT 引擎 wellsh script/lwdetr_small_coco_export/sh/pathD. /到/你的/檢查點--trt
# 匯出 ONNX modelsh 腳本/lwdetr_medium_coco_export.sh /path/to/your/COCODIR /path/to/your/checkpoint# 將模型從 ONNX 轉換為 TensorRT 引擎 wellsh 腳本/lwdetr_medium_coco_exportsh /pathd/pathium_medium_coco_exportsh /path. /到/你的/檢查點--trt
# 匯出ONNX modelsh script/lwdetr_large_coco_export.sh /path/to/your/COCODIR /path/to/your/checkpoint# 將模型從ONNX 轉換為TensorRT 引擎以及sh script/lwdetr_large_co_exportm/pathco_export. path /到/你的/檢查點--trt
# 匯出 ONNX modelsh script/lwdetr_xlarge_coco_export.sh /path/to/your/COCODIR /path/to/your/checkpoint# 將模型從 ONNX 轉換為 TensorRT 引擎 wellsh script/lwdetr_arge_coco_export/shm/pathD。 /到/你的/檢查點--trt
您可以使用deploy/benchmark.py
工具來執行推理延遲的基準測試。
# 評估 onnx 模型上的延遲並對其進行基準測試python deploy/benchmark.py --path=/path/to/your/onnxmodel --coco_path=/path/to/your/COCODIR --run_benchmark # 評估 TensorRT 引擎上的延遲並對其進行基準測試python deploy/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) | 關聯 |
我們的專案是基於以下公開論文和程式碼進行的:
德特集團
維生素D
可變形DETR
有條件DETR
YOLOv8
對齊DETR
電腦輔助工程 v2
電腦輔助工程
如果您發現此程式碼對您的研究有用,請考慮引用我們的論文:
@article{chen2024lw,title={LW-DETR:用於即時檢測的 YOLO 的 Transformer 替代品},author={Chen, Qiang and Su, Xianangbo and Zhang, Xinyu and Wang,jian and Chen, Jiahui and Shen, Yunpangbo and Zhang, Xinyu and Wang,jian and Chen, Jiahui and Shen, Yunpeng以及韓、楚楚和陳、子良和徐、偉祥和李、繁榮等},journal={arXiv 預印本arXiv:2406.03459},year={2024}}