YOLOv7 PlatoBlockchain 데이터 인텔리전스를 사용한 Python의 실시간 객체 감지 추론. 수직 검색. 일체 포함.

YOLOv7을 사용한 Python의 실시간 객체 감지 추론

개요

물체 감지는 컴퓨터 비전의 넓은 분야이며 "야생에서" 컴퓨터 비전의 더 중요한 응용 프로그램 중 하나입니다.

객체 감지는 이미지 분류만큼 표준화되지 않았습니다. 새로운 개발의 대부분은 일반적으로 대규모 라이브러리 및 프레임워크가 아닌 개별 연구원, 유지 관리자 및 개발자가 수행하기 때문입니다. TensorFlow나 PyTorch와 같은 프레임워크에 필요한 유틸리티 스크립트를 패키징하고 지금까지 개발을 안내한 API 지침을 유지하는 것은 어렵습니다.

이로 인해 객체 감지가 이미지 분류보다 다소 더 복잡하고 일반적으로 더 장황하고(항상 그런 것은 아님) 접근하기 어렵습니다.

대중에게 다행스럽게도 Ultralytics는 다른 연구 개발 팀이 YOLOv5과 같은 최신 버전으로 확장한 YOLOv7를 중심으로 간단하고 매우 강력하며 아름다운 객체 감지 API를 개발했습니다.

이 짧은 가이드에서는 최첨단 YOLOv7을 사용하여 Python에서 객체 감지를 수행합니다.

YOLO 풍경과 YOLOv7

YOLO (너는 한 번만 본다) 방법론이자 객체 감지를 위해 구축된 모델 제품군입니다. 2015년에 시작된 이래로 YOLOv1, YOLOv2(YOLO9000) 및 YOLOv3은 같은 저자에 의해 제안되었으며 딥 러닝 커뮤니티는 오픈 소스 발전을 계속해 왔습니다.

울트라리틱스의 YOLOv5 는 PyTorch에서 YOLO를 대규모로 구현하여 그 어느 때보다 접근성을 높였지만 YOLOv5가 이러한 기반을 얻게 된 주된 이유는 YOLOvXNUMX를 중심으로 구축된 아름답고 간단하고 강력한 API이기도 합니다. 이 프로젝트는 불필요한 세부 사항을 추상화하면서 사용자 정의 가능성, 거의 모든 사용 가능한 내보내기 형식을 허용하고 전체 프로젝트를 최대한 효율적이고 최적으로 만드는 놀라운 방법을 사용합니다.

YOLOv5는 여전히 객체 감지 모델을 구축하는 주요 프로젝트이며 YOLO 방법을 발전시키는 것을 목표로 하는 많은 리포지토리는 YOLOv5를 기준으로 시작하고 유사한 API를 제공합니다(또는 단순히 프로젝트를 분기하여 그 위에 구축). 의 경우가 그러하다 YOLOR (당신은 오직 하나의 표현을 배웁니다) 및 YOLOR(동일 작성자) 위에 구축된 YOLOv7입니다. YOLOv7은 YOLO 방법론의 최신 발전 사항이며 가장 주목할 만한 것은 YOLOv7이 이전 YOLO 모델에서 표준이 아니었던 경계 상자 회귀 외에 키포인트(골격)를 출력하고 인스턴스 분할을 수행할 수 있는 새로운 모델 헤드를 제공한다는 것입니다.

이를 통해 인스턴스 분할 및 키포인트 감지가 그 어느 때보다 빨라졌습니다!

또한 YOLOv7은 감소된 매개변수 수와 더 높은 계산 효율성으로 인해 이전 모델보다 더 빠르고 더 높은 정확도로 수행합니다.

YOLOv7 PlatoBlockchain 데이터 인텔리전스를 사용한 Python의 실시간 객체 감지 추론. 수직 검색. 일체 포함.

모델 자체는 추론 비용을 증가시키지 않으면서 정확도를 높인 "공짜 가방"이라고 불리는 교육 측면의 최적화와 아키텍처 변경을 통해 생성되었습니다.

YOLOv7 설치

YOLOv7을 설치하고 사용하는 것은 GitHub 리포지토리를 로컬 머신에 다운로드하고 함께 제공되는 스크립트를 실행하는 것으로 요약됩니다.

참고 : 불행히도 작성 시점에서 YOLOv7은 일반적으로 로드되는 YOLOv5와 같은 깨끗한 프로그래밍 방식 API를 제공하지 않습니다. torch.hub(), GitHub 저장소를 전달합니다. 이것은 작동해야 하지만 현재 실패하고 있는 기능으로 보입니다. 해결되면 가이드를 업데이트하거나 프로그래밍 방식 API에 새 가이드를 게시하겠습니다. 지금은 저장소에서 제공되는 추론 스크립트에 중점을 둘 것입니다.

그럼에도 불구하고 비디오, 이미지 등을 실시간으로 감지하고 결과를 쉽게 저장할 수 있습니다. 이 프로젝트는 광범위한 문서가 있는 YOLOv5와 동일한 규칙을 따르므로 YOLOv5 저장소에서 더 많은 틈새 질문에 대한 답변을 찾을 수 있습니다.

저장소를 다운로드하고 몇 가지 추론을 수행해 보겠습니다.

! git clone https://github.com/WongKinYiu/yolov7.git

이렇게하면 yolov7 프로젝트가 있는 현재 작업 디렉토리의 디렉토리. 해당 디렉토리로 이동하여 파일을 살펴보겠습니다.

%cd yolov7
!ls
/Users/macbookpro/jup/yolov7
LICENSE.md       detect.py        models           tools
README.md        export.py        paper            train.py
cfg              figure           requirements.txt train_aux.py
data             hubconf.py       scripts          utils
deploy           inference        test.py          runs

참고 : Google Colab 노트북에서 마법을 실행해야 합니다. %cd 디렉토리를 변경하려는 각 셀의 명령 yolov7, 다음 셀은 원래 작업 디렉토리로 돌아갑니다. 로컬 Jupyter 노트북에서 디렉터리 변경 일단 계속 유지하므로 명령을 여러 번 다시 실행할 필요가 없습니다.

XNUMXD덴탈의 detect.py 탐지를 실행하고 결과를 아래에 저장하는 추론 스크립트입니다. runs/detect/video_name, 여기서 video_name 전화하는 동안 detect.py 스크립트. export.py ONNX, TFLite 등과 같은 다양한 형식으로 모델을 내보냅니다. train.py 사용자 지정 YOLOv7 감지기를 훈련하는 데 사용할 수 있습니다(다른 가이드의 주제). test.py 검출기를 테스트하는 데 사용할 수 있습니다(가중치 파일에서 로드됨).

여러 추가 디렉토리에 구성(cfg), 예시 데이터(inference), 모델 구성 및 COCO 구성에 대한 데이터(data), 기타

YOLOv7 크기

YOLO 기반 모델은 확장성이 좋으며 일반적으로 더 작고 덜 정확한 모델과 더 크고 더 정확한 모델로 내보내집니다. 그런 다음 각각 더 약한 장치 또는 더 강한 장치에 배포됩니다.

YOLOv7은 여러 크기를 제공하며 MS COCO에 대해 벤치마킹했습니다.

모범 사례, 업계에서 인정하는 표준 및 포함된 치트 시트가 포함된 Git 학습에 대한 실습 가이드를 확인하십시오. 인터넷 검색 Git 명령을 중지하고 실제로 배움 이것!

모델 테스트 크기 APtest AP50 테스트 AP75 테스트 배치 1fps 배치 32 평균 시간
OLO 로브 7 640 51.4% 69.7% 55.9% 161의 FPS 2.8 MS
YOLOv7-X 640 53.1% 71.2% 57.8% 114의 FPS 4.3 MS
YOLOv7-W6 1280 54.9% 72.6% 60.1% 84의 FPS 7.6 MS
YOLOv7-E6 1280 56.0% 73.5% 61.2% 56의 FPS 12.3 MS
YOLOv7-D6 1280 56.6% 74.0% 61.8% 44의 FPS 15.0 MS
YOLOv7-E6E 1280 56.8% 74.4% 62.1% 36의 FPS 18.7 MS

모델이 실행될 것으로 기대하는 기본 하드웨어와 필요한 정확도에 따라 둘 중에서 선택할 수 있습니다. 가장 작은 모델은 V160에서 크기 640의 이미지에서 100FPS 이상을 기록합니다! 보다 일반적인 소비자 GPU에서도 만족스러운 실시간 성능을 기대할 수 있습니다.

YOLOv7을 사용한 영상 추론

를 생성 inference-data 감지하려는 이미지 및/또는 비디오를 저장할 폴더입니다. 동일한 디렉토리에 있다고 가정하면 다음을 사용하여 탐지 스크립트를 실행할 수 있습니다.

! python3 detect.py --source inference-data/busy_street.mp4 --weights yolov7.pt --name video_1 --view-img

그러면 실시간 진행 상황 및 추론을 프레임별로 볼 수 있을 뿐만 아니라 표준 출력 파이프에 상태를 출력할 수 있는 Qt 기반 비디오가 데스크탑에 표시됩니다.

Namespace(weights=['yolov7.pt'], source='inference-data/busy_street.mp4', img_size=640, conf_thres=0.25, iou_thres=0.45, device='', view_img=True, save_txt=False, save_conf=False, nosave=False, classes=None, agnostic_nms=False, augment=False, update=False, project='runs/detect', name='video_1', exist_ok=False, no_trace=False)
YOLOR 🚀 v0.1-112-g55b90e1 torch 1.12.1 CPU

Downloading https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7.pt to yolov7.pt...
100%|██████████████████████████████████████| 72.1M/72.1M [00:18<00:00, 4.02MB/s]

Fusing layers... 
RepConv.fuse_repvgg_block
RepConv.fuse_repvgg_block
RepConv.fuse_repvgg_block
Model Summary: 306 layers, 36905341 parameters, 6652669 gradients
 Convert model to Traced-model... 
 traced_script_module saved! 
 model is traced! 
 
video 1/1 (1/402) /Users/macbookpro/jup/yolov7/inference-data/busy_street.mp4: 24 persons, 1 bicycle, 8 cars, 3 traffic lights, 2 backpacks, 2 handbags, Done. (1071.6ms) Inference, (2.4ms) NMS
video 1/1 (2/402) /Users/macbookpro/jup/yolov7/inference-data/busy_street.mp4: 24 persons, 1 bicycle, 8 cars, 3 traffic lights, 2 backpacks, 2 handbags, Done. (1070.8ms) Inference, (1.3ms) NMS

프로젝트는 CPU 기반 시스템에서 느리게 실행되며(예: 위의 출력에서 ​​추론 단계당 1000ms, Intel 기반 2017 MacBook Pro에서 실행됨) GPU 기반 시스템에서는 훨씬 더 빠릅니다(~5ms/프레임에 가까움). V100). 이와 같은 CPU 기반 시스템에서도 yolov7-tiny.pt ~에서 달렸다 172ms/frame, 실시간과는 거리가 멀지만 CPU에서 이러한 작업을 처리하는 데 여전히 매우 적합합니다.

실행이 완료되면 아래에서 결과 비디오를 찾을 수 있습니다. runs/video_1 (우리가 제공한 이름 detect.py 통화)로 저장됨 .mp4:

YOLOv7 PlatoBlockchain 데이터 인텔리전스를 사용한 Python의 실시간 객체 감지 추론. 수직 검색. 일체 포함.

이미지에 대한 추론

이미지에 대한 추론은 동일한 프로세스로 요약됩니다. 즉, 파일 시스템의 이미지에 대한 URL을 제공하고 detect.py:

! python3 detect.py --source inference-data/desk.jpg --weights yolov7.pt

참고 : 글을 쓰는 시점에서 출력은 레이블을 이미지 크기로 조정하지 않습니다. --img SIZE. 즉, 큰 이미지에는 매우 얇은 경계 상자 선과 작은 레이블이 있습니다.

YOLOv7 PlatoBlockchain 데이터 인텔리전스를 사용한 Python의 실시간 객체 감지 추론. 수직 검색. 일체 포함.

결론

이 짧은 가이드에서 – 우리는 YOLOR를 기반으로 구축된 YOLO 제품군의 최신 발전인 YOLOv7에 대해 간략히 살펴보았습니다. 로컬 머신에 리포지토리를 설치하고 비디오 및 이미지에 대해 사전 훈련된 네트워크를 사용하여 객체 감지 추론 스크립트를 실행하는 방법을 살펴보았습니다.

추가 가이드에서는 키포인트 감지 및 인스턴스 분할을 다룰 것입니다.

더 나아가기 – 컴퓨터 비전을 위한 실용적인 딥 러닝

당신의 호기심 많은 성격이 당신을 더 멀리 가고 싶게 만드나요? 다음을 확인하는 것이 좋습니다. 코스: “파이썬을 이용한 컴퓨터 비전을 위한 실용적인 딥러닝”.

YOLOv7 PlatoBlockchain 데이터 인텔리전스를 사용한 Python의 실시간 객체 감지 추론. 수직 검색. 일체 포함.

또 다른 컴퓨터 비전 과정?

우리는 MNIST 숫자나 MNIST 패션의 분류를 하지 않을 것입니다. 그들은 오래전에 자신의 역할을 다했습니다. 고급 블랙박스 아키텍처가 성능 부담을 짊어지게 하기 전에 너무 많은 학습 리소스가 기본 데이터 세트와 기본 아키텍처에 집중하고 있습니다.

우리는 집중하고 싶다 신비화, 실용적인 사항, 이해, 직관실제 프로젝트. 배우고 싶다 방법 당신은 변화를 만들 수 있습니다? 우리는 뇌가 이미지를 처리하는 방식부터 유방암에 대한 연구 수준의 딥 러닝 분류기를 작성하고 "환각"하는 딥 러닝 네트워크에 이르기까지, 실제 작업을 통해 원리와 이론을 가르치고, 컴퓨터 비전을 해결하기 위해 딥러닝을 적용하는 전문가가 되기 위한 노하우와 도구.

안에 무엇입니까?

  • 비전의 첫 번째 원칙과 컴퓨터가 "보는" 방법을 가르칠 수 있는 방법
  • 컴퓨터 비전의 다양한 작업 및 응용
  • 작업을 더 쉽게 만들어줄 무역 도구
  • 컴퓨터 비전용 데이터세트 찾기, 생성 및 활용
  • 컨볼루션 신경망의 이론과 응용
  • 데이터 세트의 도메인 이동, 동시 발생 및 기타 편향 처리
  • Transfer Learning 및 다른 사람의 교육 시간 및 계산 리소스를 귀하의 이익을 위해 활용
  • 최첨단 유방암 분류기 구축 및 교육
  • 주류 아이디어에 건강한 회의론을 적용하고 널리 채택된 기술의 의미를 이해하는 방법
  • t-SNE 및 PCA를 사용하여 ConvNet의 "개념 공간" 시각화
  • 기업이 더 나은 결과를 얻기 위해 컴퓨터 비전 기술을 사용하는 방법에 대한 사례 연구
  • 적절한 모델 평가, 잠재 공간 시각화 및 모델의 관심 식별
  • 도메인 연구 수행, 자체 데이터 세트 처리 및 모델 테스트 설정
  • 최첨단 아키텍처, 아이디어의 진행, 독창적인 요소 및 구현 방법
  • KerasCV – 최첨단 파이프라인 및 모델 생성을 위한 WIP 라이브러리
  • 논문을 구문 분석하고 읽고 직접 구현하는 방법
  • 용도에 따른 모델 선택
  • 엔드 투 엔드 머신 러닝 파이프라인 만들기
  • Faster R-CNN, RetinaNets, SSD 및 YOLO를 통한 물체 감지에 대한 풍경 및 직관
  • 인스턴스 및 시맨틱 분할
  • YOLOv5를 사용한 실시간 객체 인식
  • YOLOv5 객체 감지기 훈련
  • KerasNLP(업계 최강의 WIP 라이브러리)를 사용하여 Transformers 작업
  • Transformer를 ConvNet과 통합하여 이미지 캡션 생성
  • Deepdream
  • 컴퓨터 비전을 위한 딥 러닝 모델 최적화

타임 스탬프 :

더보기 스택카부스