이번 시간에는 Mask-RCNN 영역 분할에 대해서 알아본다.
영역 분할이란?
- 객체의 바운딩 박스뿐만 아니라 픽셀 단위 클래스 분류까지 > 객체의 윤곽 구분
- Semantic segmentation : 하나의 클래스는 모두 같은 레이블
- Instance segmentation : 객체 단위 다른 레이블
Mask - RCNN 이란?
- 대표적인 객체 영역 분할 딥러닝 알고리즘 ( He et. al., 2017 )
- Faster R-CNN ( object detection ) + FCN ( segmentic segmentation )
Faster R-CNN이라는 기법을 이용해서 객체단위로 검출하여 ( YOLO, SSD 보다 이전에 나온 객체 검출 기법 )
바운딩박스로 잘라내고 해당 바운딩박스를 이용해서 FCN을 동작 시킨다.
Mask-RCNN 모델 & 설정 파일 다운로드
- 모델파일
http://download.tensorflow.org/models/object_detection/mask_rcnn_inception_v2_coco_2018_01_28.tar.gz
- 설정파일
https://github.com/opencv/opencv_extra/blob/master/testdata/dnn/mask_rcnn_inception_v2_coco_2018_01_28.pbtxt
- 클래스 이름 파일
> coco_90.names
그리고 다운로드 받아진 파일들 ( frozen_inference_graph.pb , mask_rcnn_inception_v2_coco_2018_01_28.pbtxt ) 을 실행폴더 내부에 저장
coco_90.names 는 원래 80개의 클래스를 갖고 있는데 YOLO와 내용은 같지만
2017년버전은 80개의 클래스명 중 중간중간에 빈칸이 들어가있다.
Mask-RCNN 입력
- Size : 임의의 크기 ( auto resize )
YOLO나 SSD에서는 학습된 영상의 크기를 입력영상의 크기로 주게되는데 RCNN 같은 경우는 네트워크안에서
알아서 크기를 Resize 시켜준다.
- Scale : 1 ( 1~255 )
- Mean : [ 0,0,0 ]
- RGB : true
Mask-RCNN 출력
- 2개의 출력 레이어 사용
> 'detection_out_final' - boxes : boxes.shape = ( 1,1,100,7 ) ( - , -, 최대검출개수, 클래스정보or바운딩박스정보)
> 'detection_masks' - masks : masks.shape = ( 100, 90, 15, 15 ) ( 최대검출개수, 검출개수, width, height)
'Program > OPEN_CV' 카테고리의 다른 글
OPENCV 왜곡보정 (0) | 2024.10.29 |
---|---|
[Open CV] 객체추척과 모션벡터 _ OpenCV 트래커 (0) | 2022.07.04 |
[Open CV] 객체추척과 모션벡터 _ 밀집 옵티컬플로우 (0) | 2022.07.03 |
[Open CV] 객체추척과 모션벡터 _ 카나데옵티컬플로우 (0) | 2022.07.02 |
[Open CV] 객체추척과 모션벡터 _ 캠시프트 알고리즘 (0) | 2022.06.30 |