실습을 해보자!
실습 6 : tensorflow hub - objection Detection
Image 모델에서 obect_detection의 Faster RCNN을 사용
tensorflow는 4차원 영상이 되어야함.
(1, im_height, im_width, 3) 으로 reshape해야함.
batch_size, height, width, channel
다양한 object detection 모델의 이름과 주소가 있음.
Faster R-CNN resnet 50 모델을 사용하고자 함.
테스트에 사용하고자 하는 영상들의 주소
object Detection api를 설치해야만 밑의 라이브러리와 메소드를 쓸 수가 있다.
우리가 사용하는 모델은 mscoco데이터셋에서 학습이 되어있음. mscoco는 80개의 클래스를 가지고 있는 데이터셋.
가 클래스에 대한 레이블이 들어가 있는 pdtxt 경로를 저장
모델의 이름을 model_display_name에 저장하고 model_handle에 모델 주소를 할당한다.
model_handle을 사용해서 모델을 로드해준다.
hub_model을 사용해서 object detection을 해줌.
테스트할 데이터를 선택해준다. betle or Dogs or ....
horizontally를 선택하면 영상을 수평으로 뒤집어줌
hub_model을 사용해서 결과를 도출.
results 변수는 dict형 변수
dict형 변수인 result를 numpy array값으로 바꿔준다. = result
그럼 결과로
numpy의 형식으로 들어가야지만 visulize하기 편해서.
이 의미들은
- num_detections : 한 영상에서 몇 개의 object가 있는지의 갯수
- detection_boxes : [N,4]의 2차원 배열을 가지는데 4는 [ymin,xmin,ymax,xmax]를 가짐.
- detection_classes : [N] 클래스에 해당되는 넘버가 들어가 있음
- detection_scores : [N] 얼마나 큰 확률을 가진 클래스인지
- raw_detection_boxes : NMS를 수행하기 전에 박스들 [1,M,4]
- raw_detection_scores : [1,M,90] mx90인 행렬인데 90은 클래스 갯수들.
가장 확률이 높은 클래스에 1 나머지는 0이 있음, 원래 coco dataset은 80개의 클래스를 가지고 있으나 1개는 background 클래스이고 나머지 9개는 예비로 비워둔 클래스들 - detection_anchor_indices : NMS를 한 후 살아남은 anchor box의 인덱스
- detection_multiclass_scores :
vis_utils.visualize_boxs_and~~~함수가 visualize를 해준다.
image_np_with_detections[0]은 현재 4차원인 영상을 3차원으로 바꿔준다. 앞에 batch_size를 없애줌. 가로x세로x채널만 남는다.
이 밑에는 교수님이 추가로 넣은 코드.
드라이브를 마운트 시켜서 클라우드에 올라와 있는 데이터를 불러옴.
각 프레임마다 이미지로 만들어서 draw_img_frame에 넣어줌.
입력으로 들어갈 땐 박스가 없는 영상이 결과값으론 박스가 생성된다.
시간이 좀 걸리는데 detection하는 부분이 시간이 걸린게 아니라 input과 output 저장하는데 시간이 걸린것임.
60개까지만 우선 잘름.
실습 6-2 OpenCV 웹캠
이번 실습은 local에 해보셨음.
jupyter notebook으로 실행
cap =cv2.VideoCapture(0)으로 웹캠으로부터 캡처할 준비를 끝낸다.
이건 실습 6에서 비디오 파일을 읽었던 적이 있는데 그때도 같은 videocaputer를 썼는데 인수로 비디오 경로를 줬었음.
비디오 path를 주면 비디오 파일을 frame당 하나씩 읽어주고 인자로 0을 주면 내장된 웹캠으로부터 캡처할 수 있게 해줌.
가로 길이를 720 세로를 1080으로 설정
cap.read()로 캡처된 영상을 읽어온다.
cap.release()로 메모리를 반환한다.
코덱을 지정했음(저번 실습에서 보면 이 videosWriter함수에 대한 것이 나와있음) - https://lucian-blog.tistory.com/12
'AI > vision' 카테고리의 다른 글
Semantic Segmentation - FCN/PSPNet (0) | 2021.08.09 |
---|---|
Yolo_v3, CustomYolo_v3, 로컬에서 yolo webcam 실습 (0) | 2021.08.09 |
SSD(Single Shot Detector) (0) | 2021.08.08 |
Object localization, OpenCV 이미지 실습 (0) | 2021.08.06 |
Object Detection, Faster RCNN (0) | 2021.08.06 |
댓글