RF-DETR: 실시간 시각적 객체 감지를 위한 오픈 소스 모델

최신 AI 리소스5개월 전에 게시 됨 AI 공유 서클
1.8K 00

일반 소개

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

RF-DETR:实时视觉对象检测开源模型

 

기능 목록

  • 실시간 객체 감지: 짧은 지연 시간으로 이미지나 동영상 속 객체를 빠르게 인식합니다.
  • 사용자 지정 데이터 세트 교육: 자체 데이터로 모델을 튜닝할 수 있도록 지원합니다.
  • 엣지 디바이스에서 실행: 가볍고 리소스가 제한된 디바이스에 적합한 모델입니다.
  • 해상도 조정 가능: 사용자는 검사 속도와 정확도의 균형을 맞출 수 있습니다.
  • 사전 학습된 모델 지원: COCO 데이터 세트를 기반으로 사전 학습된 가중치를 제공합니다.
  • 비디오 스트림 처리: 실시간으로 비디오를 분석하고 결과를 출력할 수 있습니다.
  • ONNX 내보내기: 간편한 크로스 플랫폼 배포를 위해 ONNX 형식으로의 변환을 지원합니다.
  • 멀티 GPU 트레이닝: 여러 개의 그래픽 카드를 사용하여 트레이닝 과정을 가속화할 수 있습니다.

 

도움말 사용

RF-DETR의 사용은 설치, 추론, 훈련의 세 부분으로 나뉩니다. 다음은 빠르게 시작하는 데 도움이 되는 자세한 단계입니다.

설치 프로세스

  1. 환경 준비
    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
      

      그러면 자동으로 설치됩니다. numpysupervision 및 기타 필요한 라이브러리.

  2. 설치 확인
    다음 코드를 실행합니다:

    from rfdetr import RFDETRBase
    print("安装成功")

오류가 보고되지 않으면 설치가 완료된 것입니다.

추론 연산

RF-DETR은 이미지 또는 동영상을 직접 감지할 수 있도록 사전 학습된 COCO 데이터 세트 모델과 함께 제공됩니다.

  1. 이미지 감지
    • 샘플 코드:
      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)
      
    • 이 코드는 이미지에서 객체를 감지하고 경계 상자 및 신뢰 수준에 레이블을 지정한 다음 결과를 표시합니다.
  2. 비디오 감지
    • 먼저, 설치 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()
      
    • 이렇게 하면 동영상에서 프레임 단위로 객체를 감지하여 실시간으로 표시합니다.
  3. 해상도 조정
    • 해상도는 초기화 시 설정할 수 있습니다(56의 배수여야 함):
      model = RFDETRBase(resolution=560)
      
    • 해상도가 높을수록 정확도는 향상되지만 속도가 느려집니다.

사용자 지정 모델 교육

RF-DETR은 자체 데이터 세트를 사용하여 미세 조정을 지원하지만 데이터 세트는 다음을 포함하는 COCO 형식이어야 합니다. trainvalid 노래로 응답 test 세 개의 하위 디렉터리.

  1. 데이터 집합 준비하기
    • 카탈로그 구조 예시:
      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")
      
  2. 교육 시작
    • 샘플 코드:
      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=1T4 GPU batch_size=4, grad_accum_steps=4.
  3. 멀티 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 를 사용하여 총 배치 크기를 안정적으로 유지합니다.
  4. 교육 결과 로드
    • 훈련 후 일반 웨이트와 EMA 웨이트(더 안정적)의 두 가지 웨이트 파일이 생성됩니다. 로드 방법:
      model = RFDETRBase(pretrain_weights="./output/model_ema.pt")
      detections = model.predict("image.jpg")
      

ONNX 내보내기

  • 다른 플랫폼에 쉽게 배포할 수 있도록 ONNX 형식으로 내보내세요:
    from rfdetr import RFDETRBase
    model = RFDETRBase()
    model.export()
    
  • 내보낸 파일은 output 엣지 디바이스에 대한 최적의 추론을 위한 카탈로그.

 

애플리케이션 시나리오

  1. 자동 운전
    RF-DETR은 도로 위의 차량과 보행자를 실시간으로 감지합니다. 지연 시간이 짧고 정확도가 높아 임베디드 시스템에 적합합니다.
  2. 산업 품질 관리
    RF-DETR은 공장 조립 라인에서 부품 결함을 신속하게 식별합니다. 이 모델은 가볍고 장비에서 직접 실행할 수 있습니다.
  3. 비디오 감시
    RF-DETR은 감시 영상을 처리하여 비정상적인 물체나 동작을 실시간으로 감지합니다. 비디오 스트리밍을 지원하며 연중무휴 24시간 보안에 적합합니다.

 

QA

  1. 어떤 데이터 세트 형식이 지원되나요?
    COCO 형식만 지원됩니다. 데이터 집합에는 다음이 포함되어야 합니다. trainvalid 노래로 응답 test 하위 디렉터리에 각각 해당하는 _annotations.coco.json 문서화.
  2. Roboflow API 키는 어떻게 받나요?
    https://app.roboflow.com 에 로그인하여 계정 설정에서 API 키를 찾아 복사한 후 환경 변수에 설정합니다. ROBOFLOW_API_KEY.
  3. 교육은 얼마나 걸리나요?
    하드웨어 및 데이터 세트 크기에 따라 다릅니다. T4 GPU에서는 10에포크에 몇 시간이 걸릴 수 있습니다. 더 작은 데이터 세트는 CPU에서 실행할 수 있지만 속도가 느립니다.
© 저작권 정책
AiPPT

관련 문서

댓글 없음

댓글에 참여하려면 로그인해야 합니다!
지금 로그인
없음
댓글 없음...