[Mask R-CNN] Python을 이용한 Mask RCNN (2) - Cam & Video
앞에서 고정이미지에 대한 Mask R-CNN을 해보았는데,
이번에는 Cam으로 받아들인 영상과 동영상에 대하여 Mask R-CNN을 실행해보았다.
유투브에서는 파이참을 쓰는걸로 보이나, 아직 파이참을 잘 다루지 못하여
Jupyter notebook을 이용하여 실행가능하도록 소스코드를 수정하였다.
본 포스팅은 저번 포스팅에서 작성한 아나콘다 환경을 이어서 사용하므로 기본적인 설치 방법은 아래 링크에서 확인할 수 있다.
2019/01/05 - [Laboratory/인공지능] - Python/Tensorflow/Keras를 이용한 Mask RCNN (1)
* 파이썬 초보라 이것저것 시도하다가 되는걸 올렸기때문에 더 좋은 방법을 알고계신다면 피드백 환영합니다 :)!
◇◇◇
1. Mask R-CNN for Cam
- Cam을 이용하여 구동시켜보는 Mask R-CNN
- youtube : https://www.youtube.com/watch?v=lLM8oAsi32g
1-1. Mask_RCNN series download
- Cam을 이용한 예제는 git clone을 이용하여 Mask-RCNN-series.git을 다운받아야 한다.
1-2. Create New file
- 이전에 만들어둔 MaskRCNN 가상환경에 진입하여 jupyter notebook을 실행시킨다.
- 이전에 만든 가상환경 폴더로 진입
· Activate MaskRCNN
· cd MaskRCNN폴더경로
- Jupyter notebook 실행
· Jupyter notebook
- Demo.ipynb 파일이 저장되어있는 samples 폴더로 진입하여 New를 누르고 Python 3을 클릭
1-3. 소스코드 수정
- 수정을 위해 기존에 받은 visualize_cv.py 파일을 열어 소스코드를 확인한다.
- 경로가 다르면 적색 박스 내 코드에서 오류가 발생하므로 해당 부분을 수정해야 한다.
- 확인 후, jupyter notebook에서 만든 새 파일에 Visualize_cv.py 소스코드를 옮겨 적는다.
- 오류를 확인하기위해 demo파일과 맞춰보며 부분마다 나눠서 붙여넣었다.
* 기존 demo파일과 비교하며 경로 설정, 모듈 임포트 부분을 수정하면 편리하다.
* 코드 정리를 위해 Import 모듈 부분을 첫 라인으로 아래 그림과 같이 옮겼다.
- ROOT_DIR의 경로를 수정하여 mrcnn과 coco를 import할 수 있게 아래 라인을 추가한다.
- 이 과정이 없으면 다음 줄 CocoConfig에서 오류가 발생한다.
ROOT_DIR = os.path.abspath("../") #최상위 경로로 경로 지정 sys.path.append(ROOT_DIR) from mrcnn import utils #utils.py가 있는 폴더 mrcnn 지정 import mrcnn.model as modellib #model.py가 있는 폴더 mrcnn을 import #coco.py가 저장된 경로 지정 sys.path.append(os.path.join(ROOT_DIR, "samples/coco/")) import coco #ROOT_DIR = os.getcwd() #주석처리 |
<기존 소스코드(좌) → 수정한 소스코드(우)>
- 그 뒤의 소스는 demo 파일과도 변동사항이 없으므로 그대로 붙여넣는다.
- cv2.VideoCapture 함수를 이용하여 캠으로 받아들인 후 masking된 영상을 출력한다.
- 마지막 라인까지 실행이 끝나면 아래와 같은 별도의 창이 뜨면서 결과를 확인할 수 있다.
프라이버시 문제로 모자이크처리를 했으나 원래는 제대로 나옵니다.
◇◇◇
2. Mask R-CNN for Video
- 비디오 영상에서 인식하는 Mask R-CNN
- youtube : https://www.youtube.com/watch?v=GvOBXrQjQxw&t=73s
2-1. Mask_RCNN series download(1-1과정과 동일)
- git clone을 이용하여 Mask-RCNN-series.git을 다운받는다.
- 본 절에서는 process_video.py 소스코드와 visualize_cv2.py를 import하므로
demo 파일이 있는 samples 폴더 안에 visualize_cv2.py를 넣고,
process_video.py는 에디트 프로그램으로 열어둔다.
2-2. Create New File(1-2 과정과 동일)
- Demo.ipynb 파일이 저장되어있는 samples 폴더로 진입하여 New를 누르고 Python 3을 클릭
2-3. 소스코드 수정
- process_video 코드를 수정하기 전에 import해야하는 visualize_cv.py 파일을 수정해야한다.
- Mask_RCNN/samples/폴더에 저장한 visualize_cv.py 파일을 열어 아래와 같이 수정한다.
* 1-3과 수정 형태 동일
ROOT_DIR = os.path.abspath("../") #최상위 경로로 경로 지정 sys.path.append(ROOT_DIR) from mrcnn import utils #utils.py가 있는 폴더 mrcnn 지정 import mrcnn.model as modellib #model.py가 있는 폴더 mrcnn을 import #coco.py가 저장된 경로 지정 sys.path.append(os.path.join(ROOT_DIR, "samples/coco/")) import coco #ROOT_DIR = os.getcwd() #주석처리 |
- process_video.py 코드를 새 파일에 옮겨적는다.
- 'videofile.mp4'라는 동영상을 불러와서 labeling&masking 후 'videofile_masked.avi'로 변환해준다.
- 결과는 아래와 같이 영상으로도, 저장된 동영상 파일로도 확인이 가능하다.
* youtube에 있는 레이싱 영상을 녹화하여 구동해본 결과 영상입니다.
(출처 : https://www.youtube.com/watch?v=eSAVhH0T3Ls&t=58s)
※ 수정한 파일 첨부