MMdetection_demo_정리_faster rcnn

lena_log·2022년 10월 15일
0

mmdetection과 친해지기 위해서 그리고 내가 알고 진행한건지 파악하기 위해서 블로그로 남겨두려고 한다.

현재, 노트북은 딥러닝 모델을 돌릴 수 있는 gpu가 아니라서 코렙에서 진행했다.
코렙으로 초기 개발환경 세팅(사실 크게 세팅할 것도 없이 코드 복붙만 해주면 되지만)하면 20분은 가볍게 넘긴다.

개발환경 세팅

  • 코렙 cuda, gcc 버전 확인
!nvcc -V
!gcc --version


cuda 버전을 보면 11.2이고, gcc는 7.5.0이다.
확인한 cuda 버전과 torch 버전 잘 맞춰서 다운 받아야한다.
*수정 필요

# install dependencies: (use cu111 because colab has CUDA 11.1)
!pip install torch==1.9.0+cu111 torchvision==0.10.0+cu111 -f https://download.pytorch.org/whl/torch_stable.html

mmdetection 수동설치

  1. mmcv-full 설치
    공식 문서에는 컴퓨터 비전 연구할때, 사용하는 라이브러리라고 하는데 잘 와닿지 않는다..정보를 더 찾아봐도 이해하기 쉽게 안나오는데 cuda operators를 사용하기 위해 다운받는다라고 생각하기로 했다.
    mmcv-full과 mmcv가 있는데 full이 좀더 포괄적이며 cuda operators를 사용한다고 하고, 그래서 빌드할때 시간이 오래 걸린다고 한다.
pip install mmcv-full
  1. mmdet 설치
    mmdetection 설치하기, 추론할 때 api 사용하기 위해서 설치해준다.
pip install mmdet
  1. mmdetection 깃 클론, mmdetection 파일로 들어가서 requirements/build.txt 설치
cd mmdetection
pip install -r requirements/build.txt
  1. checkpoints 파일 만들고 모델(가중치 파일)다운 받기
mkdir checkpoints
!wget ./mmdetection/checkpoints/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth  http://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco/faster_rcnn

demo파일에 있는대로 faster_rcnn을 가져왔다. 내가 쓰고 싶은 모델은 swin transformer인데 이모델도 데모했을때 문제없음을 확인했다.

어느정도 세팅된 거 같으면 다시한번 버전들 확인하기

from mmcv import collect_env
collect_env()


몰랐는데 코렙 gpu 꽤 좋은거였다..무료로 쓸수 있음에 감사합니다
쿠다 사용가능하고 쿠다, 토치 버전 맞췄으니 확인 끝


faster rcnn demo

이제는 faster rcnn 모델 데모하려고 한다.

# 필요한 모듈 로드하기, 순서대로 init_detector함수, inference_detector함수, show_result_pyplot함수 불러오기
from mmdet.apis import init_detector, inference_detector, show_result_pyplot

# config_file은 컨피그를 사용하고 디텍터를 초기화하기 위해 사용, 파일명에 coco가 들어가는데 코코 클래스를 디폴트로 가져옴
config_file = '/content/mmdetection/configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py'

# checkpoint_file은 체크포인트 파일(가중치 파일)을 로드하기위해서 사용
checkpoint_file = '/content/mmdetection/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth'

# init_detector함수에서 가중치 파일
model = init_detector(config_file, checkpoint_file, device='cuda:0')

# 추론에 사용할 이미지가 뭔지 확인
import cv2
import matplotlib.pyplot as plt
img = '/content/mmdetection/demo/demo.jpg'

# rgb로 바꿔주기, opencv 버전 4.0부터는 컬러 안바꿔도 된다고 했던거 같음
img_arr  = cv2.cvtColor(cv2.imread(img), cv2.COLOR_BGR2RGB)
plt.figure(figsize=(12, 12))
plt.imshow(img_arr)

# model 즉, 디텍터를 가지고 이미지 추론하고 결과를 보여줌
results = inference_detector(model, img)
show_result_pyplot(model, img, results)

작은 사이즈들 잘 맞추는 것 같긴함
내가 하려는건 isntance segmentation이기 때문에 인스턴스 세그 모델 써야겠다.

github: https://github.com/hyesukim1/mmdetection_study/blob/main/mmdetection_faster_rcnn_demo.ipynb

profile
안녕하세요. 기억보다 기록을 믿는 레나입니다!

0개의 댓글