일반 소개
RF-DETR은 Roboflow 팀에서 개발한 오픈 소스 객체 감지 모델입니다. 이 모델은 다음을 기반으로 합니다. 트랜스포머 아키텍처의 핵심 기능은 실시간 효율성입니다. 이 모델은 Microsoft COCO 데이터 세트에서 60개 이상의 AP를 최초로 실시간으로 감지하고, RF100-VL 벤치마크 테스트에서도 뛰어난 성능을 발휘하여 광범위한 실제 시나리오에 적응합니다. RF-DETR-base(2,900만 개의 파라미터)와 RF-DETR-large(1억 2,800만 개의 파라미터)의 두 가지 버전으로 제공됩니다. 이 모델은 크기가 작아 에지 디바이스 배포에 적합합니다. 코드와 사전 학습된 가중치는 Apache 2.0 라이선스에 따라 라이선스가 부여되며 커뮤니티에서 무료로 사용할 수 있도록 개방되어 있습니다. 사용자는 GitHub에서 리소스에 액세스하여 쉽게 교육하거나 배포할 수 있습니다.

기능 목록
- 실시간 객체 감지: 짧은 지연 시간으로 이미지나 동영상 속 객체를 빠르게 인식합니다.
- 사용자 지정 데이터 세트 교육: 자체 데이터로 모델을 튜닝할 수 있도록 지원합니다.
- 엣지 디바이스에서 실행: 가볍고 리소스가 제한된 디바이스에 적합한 모델입니다.
- 해상도 조정 가능: 사용자는 검사 속도와 정확도의 균형을 맞출 수 있습니다.
- 사전 학습된 모델 지원: COCO 데이터 세트를 기반으로 사전 학습된 가중치를 제공합니다.
- 비디오 스트림 처리: 실시간으로 비디오를 분석하고 결과를 출력할 수 있습니다.
- ONNX 내보내기: 간편한 크로스 플랫폼 배포를 위해 ONNX 형식으로의 변환을 지원합니다.
- 멀티 GPU 트레이닝: 여러 개의 그래픽 카드를 사용하여 트레이닝 과정을 가속화할 수 있습니다.
도움말 사용
RF-DETR의 사용은 설치, 추론, 훈련의 세 부분으로 나뉩니다. 다음은 빠르게 시작하는 데 도움이 되는 자세한 단계입니다.
설치 프로세스
- 환경 준비
Python 3.9 이상 및 PyTorch 1.13.0 이상이 필요합니다. GPU를 사용하는 경우nvidia-smi
드라이브를 확인합니다.- PyTorch를 설치합니다:
pip install torch>=1.13.0 torchvision>=0.14.0
- 코드를 다운로드합니다:
git clone https://github.com/roboflow/rf-detr.git cd rf-detr
- 종속성을 설치합니다:
pip install rfdetr
그러면 자동으로 설치됩니다.
numpy
및supervision
및 기타 필요한 라이브러리.
- PyTorch를 설치합니다:
- 설치 확인
다음 코드를 실행합니다:from rfdetr import RFDETRBase print("安装成功")
오류가 보고되지 않으면 설치가 완료된 것입니다.
추론 연산
RF-DETR은 이미지 또는 동영상을 직접 감지할 수 있도록 사전 학습된 COCO 데이터 세트 모델과 함께 제공됩니다.
- 이미지 감지
- 샘플 코드:
import io import requests from PIL import Image from rfdetr import RFDETRBase import supervision as sv model = RFDETRBase() url = "https://media.roboflow.com/notebooks/examples/dog-2.jpeg" image = Image.open(io.BytesIO(requests.get(url).content)) detections = model.predict(image, threshold=0.5) labels = [f"{class_id} {confidence:.2f}" for class_id, confidence in zip(detections.class_id, detections.confidence)] annotated_image = image.copy() annotated_image = sv.BoxAnnotator().annotate(annotated_image, detections) annotated_image = sv.LabelAnnotator().annotate(annotated_image, detections, labels) sv.plot_image(annotated_image)
- 이 코드는 이미지에서 객체를 감지하고 경계 상자 및 신뢰 수준에 레이블을 지정한 다음 결과를 표시합니다.
- 샘플 코드:
- 비디오 감지
- 먼저, 설치
opencv-python
::pip install opencv-python
- 샘플 코드:
import cv2 from rfdetr import RFDETRBase import supervision as sv model = RFDETRBase() cap = cv2.VideoCapture("video.mp4") # 替换为你的视频路径 while cap.isOpened(): ret, frame = cap.read() if not ret: break image = Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)) detections = model.predict(image, threshold=0.5) annotated_frame = sv.BoxAnnotator().annotate(frame, detections) cv2.imshow("RF-DETR Detection", annotated_frame) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows()
- 이렇게 하면 동영상에서 프레임 단위로 객체를 감지하여 실시간으로 표시합니다.
- 먼저, 설치
- 해상도 조정
- 해상도는 초기화 시 설정할 수 있습니다(56의 배수여야 함):
model = RFDETRBase(resolution=560)
- 해상도가 높을수록 정확도는 향상되지만 속도가 느려집니다.
- 해상도는 초기화 시 설정할 수 있습니다(56의 배수여야 함):
사용자 지정 모델 교육
RF-DETR은 자체 데이터 세트를 사용하여 미세 조정을 지원하지만 데이터 세트는 다음을 포함하는 COCO 형식이어야 합니다. train
및valid
노래로 응답 test
세 개의 하위 디렉터리.
- 데이터 집합 준비하기
- 카탈로그 구조 예시:
dataset/ ├── train/ │ ├── _annotations.coco.json │ ├── image1.jpg │ └── image2.jpg ├── valid/ │ ├── _annotations.coco.json │ ├── image1.jpg │ └── image2.jpg └── test/ ├── _annotations.coco.json ├── image1.jpg └── image2.jpg
- COCO 형식의 데이터 세트는 Roboflow 플랫폼을 사용하여 생성할 수 있습니다:
from roboflow import Roboflow rf = Roboflow(api_key="你的API密钥") project = rf.workspace("rf-100-vl").project("mahjong-vtacs-mexax-m4vyu-sjtd") dataset = project.version(2).download("coco")
- 카탈로그 구조 예시:
- 교육 시작
- 샘플 코드:
from rfdetr import RFDETRBase model = RFDETRBase() model.train(dataset_dir="./mahjong-vtacs-mexax-m4vyu-sjtd-2", epochs=10, batch_size=4, grad_accum_steps=4, lr=1e-4)
- 교육의 경우 권장되는 총 배치 크기(
batch_size * grad_accum_steps
예를 들어, A100 GPU는batch_size=16, grad_accum_steps=1
T4 GPUbatch_size=4, grad_accum_steps=4
.
- 샘플 코드:
- 멀티 GPU 교육
- 설정
main.py
문서화:from rfdetr import RFDETRBase model = RFDETRBase() model.train(dataset_dir="./dataset", epochs=10, batch_size=4, grad_accum_steps=4, lr=1e-4)
- 터미널에서 실행됩니다:
python -m torch.distributed.launch --nproc_per_node=8 --use_env main.py
- 최고 사령관(군)
8
사용 중인 GPU 수로 바꿉니다. 조정 사항에 유의하세요.batch_size
를 사용하여 총 배치 크기를 안정적으로 유지합니다.
- 설정
- 교육 결과 로드
- 훈련 후 일반 웨이트와 EMA 웨이트(더 안정적)의 두 가지 웨이트 파일이 생성됩니다. 로드 방법:
model = RFDETRBase(pretrain_weights="./output/model_ema.pt") detections = model.predict("image.jpg")
- 훈련 후 일반 웨이트와 EMA 웨이트(더 안정적)의 두 가지 웨이트 파일이 생성됩니다. 로드 방법:
ONNX 내보내기
- 다른 플랫폼에 쉽게 배포할 수 있도록 ONNX 형식으로 내보내세요:
from rfdetr import RFDETRBase model = RFDETRBase() model.export()
- 내보낸 파일은
output
엣지 디바이스에 대한 최적의 추론을 위한 카탈로그.
애플리케이션 시나리오
- 자동 운전
RF-DETR은 도로 위의 차량과 보행자를 실시간으로 감지합니다. 지연 시간이 짧고 정확도가 높아 임베디드 시스템에 적합합니다. - 산업 품질 관리
RF-DETR은 공장 조립 라인에서 부품 결함을 신속하게 식별합니다. 이 모델은 가볍고 장비에서 직접 실행할 수 있습니다. - 비디오 감시
RF-DETR은 감시 영상을 처리하여 비정상적인 물체나 동작을 실시간으로 감지합니다. 비디오 스트리밍을 지원하며 연중무휴 24시간 보안에 적합합니다.
QA
- 어떤 데이터 세트 형식이 지원되나요?
COCO 형식만 지원됩니다. 데이터 집합에는 다음이 포함되어야 합니다.train
및valid
노래로 응답test
하위 디렉터리에 각각 해당하는_annotations.coco.json
문서화. - Roboflow API 키는 어떻게 받나요?
https://app.roboflow.com 에 로그인하여 계정 설정에서 API 키를 찾아 복사한 후 환경 변수에 설정합니다.ROBOFLOW_API_KEY
. - 교육은 얼마나 걸리나요?
하드웨어 및 데이터 세트 크기에 따라 다릅니다. T4 GPU에서는 10에포크에 몇 시간이 걸릴 수 있습니다. 더 작은 데이터 세트는 CPU에서 실행할 수 있지만 속도가 느립니다.
© 저작권 정책
이 글은 저작권이 있으며 무단으로 복제해서는 안 됩니다.
관련 문서
댓글 없음...