이것은 LW-DETR: 실시간 감지를 위한 YOLO에 대한 변환기 대체의 PyTorch 구현이 포함된 공식 저장소입니다.
☀️ 이 작업이 귀하의 연구에 유용하다고 생각되면 저희 저장소에 별표를 표시하고 논문을 인용해 주세요! ☀️
LW-DETR-tiny, LW-DETR-small, LW-DETR-medium, LW-DETR-large 및 LW-DETR-xlarge를 포함하여 <LWDETR_*size_60e_coco라는 이름의 LW-DETR에서 일련의 실시간 감지 모델을 출시합니다. .pth>. 다운로드하려면 포옹 얼굴을 참조하세요.
LW-DETR에서 일련의 사전 훈련된 모델을 출시합니다. 다운로드하려면 포옹 얼굴을 참조하세요.
[2024/7/15] LW-DETR을 기반으로 뛰어난 성능과 낮은 대기 시간을 갖춘 효율적인 개방형 어휘 탐지기 OVLW-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은 COCO 및 기타 벤치마크 데이터 세트에서 YOLO 및 그 변형과 같은 기존 실시간 탐지기보다 우수한 성능을 달성합니다.
코드는 python=3.8.19, pytorch=1.13.0, cuda=11.6,TensorRT-8.6.1.6
에서 개발되고 검증되었습니다. 더 높은 버전도 사용할 수 있습니다.
Anaconda로 나만의 Python 환경을 만들어보세요.
conda create -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 install pytorch==1.13.0 torchvision==0.14.0 pytorch-cuda=11.6 -c pytorch -c nvidia
필수 패키지를 설치합니다.
교육 및 평가:
pip 설치 -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 train 및 val 이미지를 다운로드하고 추출하세요. 디렉토리 구조는 다음과 같을 것으로 예상됩니다.
COCODIR/ ├── train2017/ ├── val2017/ └── annotations/ ├── instances_train2017.json └── instances_val2017.json
사전 학습을 위한 Objects365 데이터세트의 경우 https://www.objects365.org/overview.html에서 주석이 포함된 Objects365 이미지를 다운로드하세요.
모든 체크포인트는 Hugging Face에서 확인할 수 있습니다.
Objects365에 대한 사전 훈련.
ViT를 사전 훈련했습니다.
사전 훈련된 모델을 기반으로 하는 MIM 방법인 CAE v2를 사용하여 Objects365 데이터세트에서 ViT를 사전 훈련합니다. 사전 학습된 모델을 다운로드하고 pretrain_weights/
에 넣으려면 다음 링크를 참조하세요.
모델 | 논평 |
---|---|
caev2_tiny_300e_objects365 | CAE v2를 사용하여 LW-DETR-초소형/소형용 object365에서 사전 훈련된 ViT 모델 |
caev2_tiny_300e_objects365 | CAE v2를 사용하여 LW-DETR-중형/대형에 대해 object365에서 사전 훈련된 ViT 모델 |
caev2_tiny_300e_objects365 | CAE v2를 사용하여 LW-DETR-xlarge에 대해 object365에서 사전 훈련된 ViT 모델 |
사전 훈련된 LW-DETR.
우리는 감독 방식으로 Objects365에서 인코더를 재교육하고 프로젝터와 디코더를 교육합니다. 사전 학습된 모델을 다운로드하고 pretrain_weights/
에 넣으려면 다음 링크를 참조하세요.
모델 | 논평 |
---|---|
LWDETR_tiny_30e_objects365 | Object365에 대해 사전 훈련된 LW-DETR-작은 모델 |
LWDETR_small_30e_objects365 | 객체에 대한 사전 훈련된 LW-DETR 소형 모델365 |
LWDETR_medium_30e_objects365 | Object365에 대해 사전 훈련된 LW-DETR-중형 모델 |
LWDETR_large_30e_objects365 | 객체에 대한 사전 훈련된 LW-DETR 대형 모델365 |
LWDETR_xlarge_30e_objects365 | Object365에 대해 사전 훈련된 LW-DETR-xlarge 모델 |
COCO의 미세 조정. COCO에서 사전 훈련된 모델을 미세 조정합니다. 리포지토리를 다시 구현하려면 이 단계를 건너뛰세요. 훈련된 모델을 직접 평가하려면 다음 링크를 참조하여 미세 조정된 모델을 다운로드하고 output/
에 입력하세요.
모델 | 논평 |
---|---|
LWDETR_tiny_60e_coco | COCO의 미세 조정된 LW-DETR-작은 모델 |
LWDETR_small_60e_coco | COCO의 미세 조정된 LW-DETR-소형 모델 |
LWDETR_medium_60e_coco | COCO의 미세 조정된 LW-DETR-중형 모델 |
LWDETR_large_60e_coco | COCO의 미세 조정된 LW-DETR-대형 모델 |
LWDETR_xlarge_60e_coco | COCO의 미세 조정된 LW-DETR-xlarge 모델 |
Coco 데이터 세트에 대한 학습 프로세스를 위해 scripts/lwdetr_<model_size>_coco_train.sh
파일을 직접 실행할 수 있습니다.
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
Coco 데이터 세트에 대한 평가 프로세스를 위해 scripts/lwdetr_<model_size>_coco_eval.sh
파일을 직접 실행할 수 있습니다. 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 모델 내보내기 scripts/lwdetr_tiny_coco_export.sh /path/to/your/COCODIR /path/to/your/checkpoint# 모델을 ONNX에서 TensorRT 엔진으로 Wellsh scripts/lwdetr_tiny_coco_export.sh /path/to/your/COCODIR /path로 변환 /to/your/checkpoint --trt
# ONNX 모델 내보내기 scripts/lwdetr_small_coco_export.sh /path/to/your/COCODIR /path/to/your/checkpoint# 모델을 ONNX에서 TensorRT 엔진으로 Wellsh scripts/lwdetr_small_coco_export.sh /path/to/your/COCODIR /path로 변환 /to/your/checkpoint --trt
# ONNX 모델 내보내기 scripts/lwdetr_medium_coco_export.sh /path/to/your/COCODIR /path/to/your/checkpoint# 모델을 ONNX에서 TensorRT 엔진으로 Wellsh scripts/lwdetr_medium_coco_export.sh /path/to/your/COCODIR /path로 변환 /to/your/checkpoint --trt
# ONNX 모델 내보내기 scripts/lwdetr_large_coco_export.sh /path/to/your/COCODIR /path/to/your/checkpoint# 모델을 ONNX에서 TensorRT 엔진으로 Wellsh scripts/lwdetr_large_coco_export.sh /path/to/your/COCODIR /path로 변환 /to/your/checkpoint --trt
# ONNX 모델 내보내기 scripts/lwdetr_xlarge_coco_export.sh /path/to/your/COCODIR /path/to/your/checkpoint# 모델을 ONNX에서 TensorRT 엔진으로 Wellsh scripts/lwdetr_xlarge_coco_export.sh /path/to/your/COCODIR /path로 변환 /to/your/checkpoint --trt
deploy/benchmark.py
도구를 사용하여 추론 지연 시간 벤치마크를 실행할 수 있습니다.
# onnx 모델의 대기 시간을 평가하고 벤치마크합니다python 배포/benchmark.py --path=/path/to/your/onnxmodel --coco_path=/path/to/your/COCODIR --run_benchmark # TensorRT 엔진의 대기 시간을 평가하고 벤치마크합니다python 배포/benchmark.py --path=/path/to/your/trtengine --coco_path=/path/to/your/COCODIR --run_benchmark
Coco 데이터 세트의 주요 결과. 우리는 원본 논문에 보고된 mAP와 재구현을 통해 얻은 mAP를 보고합니다.
방법 | 사전 훈련 | 매개변수(M) | 플롭(G) | 모델 지연 시간(ms) | 총 지연 시간(ms) | 지도 | 다운로드 |
---|---|---|---|---|---|---|---|
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) | 링크 |
우리 프로젝트는 코드가 포함된 다음 공개 문서를 기반으로 수행됩니다.
그룹 DETR
ViTDet
변형 가능한 DETR
조건부 DETR
YOLOv8
정렬DETR
CAE v2
CAE
이 코드가 연구에 유용하다고 생각되면 다음 논문을 인용해 주시기 바랍니다.
@article{chen2024lw,title={LW-DETR: 실시간 감지를 위한 YOLO의 변환기 대체},author={Chen, Qiang 및 Su, Xiangbo 및 Zhang, Xinyu 및 Wang, Jian 및 Chen, Jiahui 및 Shen, Yunpeng 및 Han, Chuchu 및 Chen, Ziliang 및 Xu, Weixiang 및 Li, Fanrong 및 기타},journal={arXiv 사전 인쇄 arXiv:2406.03459},연도={2024}}