detect.py 뜯어보기

detect.py는 학습된 weight값(.pt파일)을 기반으로 객체를 탐지하는 코드이다.
실시간으로 웹캠을 통해 객체 탐지도 가능하고, 이미지 혹은 이미 촬영된 영상 등도 detect의 대상으로 삼을 수 있다.

기본적으로 detect.py를 구동하는 방법은 아래와 같다.
터미널을 켜준 뒤

1
2
3

python detect.py경로명/detect.py

detect를 할 때에는 여러 가지 옵션값을 줄 수 있다.

1
2
3

python detect.py경로명/detect.py --옵션1 옵션1입력값 --옵션2 옵션2입력값 ...

옵션명 설명 입력값
–weights 미리 학습된 weight값(.pt)을 줄 수 있다. –weights ./runs/train/exp3/weight/best.pt
–source detect 할 대상 데이터. 영상 혹은 이미지 등 –source 0 : 웹캠
–source img.jpg : 이미지
–source vid.mp4 : 영상
–source screen: 스크린샷(???)
–source path/ : 디텍토리(???)
–source list.txt : 이미지 리스트(경로)
–source list.streams : 스트림(???)
–source 유튜브경로 : 유튜브 영상
–source rtsp://~~ : rtsp, rtmp, http 스트림
–data 객체 idx와 객체명을 정의한 yaml 파일 지정 가능 –data ./data/test_yaml.yaml
–imgsz 이미지 사이즈. 기본 640. –img 혹은 –img-size 로도 설정 가능(???) –imgsz 300
–conf-thres 신뢰 임계값. 특정 percentage 이상 신뢰도를 보여야 해당 객체로 인지하도록 한다. –conf-thres 0.8
–iou-thres 근접 혹은 겹치게 검출된 두 객체가 동일한 객체인지를 판단하는 임계값. 값이 낮아지면 동일한 객체로 인식할 확률이 높다. –iou-thres 0.5
–max-det 대상 자료에서 검출할 객체의 최대 갯수 –max-det 1 : 한 프레임에서 최대 1개만 검출
–device 어떤 처리장치로 inference를 진행할지 지정 –device 0 : 0번 처리장치(아마 CPU)로 검출
–view-img    
–save-txt 검출된 로그값(객체idx와 bounding-box 좌표)를 txt 파일로 저장 –save-txt
–save-conf 신뢰도를 추출하여 저장. 위 로그값 txt 파일에 함께 저장된다. –save-conf
–save-crop 검출된 객체 부분을 잘라서 이미지로 저장 –save-crop
–nosave 검출 결과를 영상 혹은 이미지로 저장하지 않음(save-txt 와 별개) –nosave
–classes 검출할 객체를 지정함 –classes 0 : 0번 객체만 검출함
–classes 1 : 1번 객체만 검출함
–classes 0 1 2 : 0, 1, 2번 객체를 검출함
–agnostic-nms    
–augment    
–visualize (이미지source에만 가능) 감지된 객체와 함께 출력 이미지를 저장함  
–update 기존 pre-trained weight에 새로운 객체를 학습시키는 옵션. 즉 ‘미세조정’ –update
–project    
–name run의 이름을 지정 –name test_first
–exist-ok    
–line-thickness bounding-box 테두리 두께 조정 (픽셀 단위) –line-thickness 50
–hide-labels bounding-box의 제목(객체명)을 출력하지 않음 –hide-labels
–hide-conf 객체 검출 신뢰도율을 출력하지 않음 –hide-conf
–half    
–dnn    
–vid-stride video frame-rate stride  

옵션값에 대한 내용은 detect.py의 parse_opt 메서드 정의 부분에서도 볼 수 있다.