When will you grow up?

Custom Dataset으로 Retinanet 학습하기 본문

02. Study/Keras

Custom Dataset으로 Retinanet 학습하기

미카이 2020. 2. 12. 00:08

https://github.com/fizyr/keras-retinanet

 

fizyr/keras-retinanet

Keras implementation of RetinaNet object detection. - fizyr/keras-retinanet

github.com

위 깃허브를 참고하였으며, Window10 / Anaconda 환경을 이용하였으며 cuda 9버전 기준이다. 또한 우분투환경에서도 잘 동작한다. ~_~

 

0. 만약 Anaconda 환경이 안깔려있으면 클릭, gpu버전을 셋팅한다. (제 그래픽 카드는 1080ti로 테스트 하였다)

 

1. Github에 들어가서 코드를 다운받는다.

 

2. anaconda 명령 프롬프트를 열어 가상화를 만들어준다. ex) conda create -n retinanet python=3.6   -> conda activate retinanet

 

3. keras-retinanet-master 프로젝트 파일로 이동 후 ex) cd C:\Users\mekai\Project\keras-retinanet-master

   python setup.py install 명령어를 통해 설치한다.

 

4. tf1.14 및 keras 2.24 버전 설치 ex) conda install tensorflow-gpu=1.14 / conda install keras=2.2.4

 

 

5. 위까지 설치가 잘 완료되었으면, 학습용 데이터셋을 만들어야한다.

총 2가지 (Annotation format, Class Mapping format) 파일이 필요한데 둘 다 확장자는 .csv 파일이다. 기본적인 학습용으로 만들어보기에, 자동차(아반떼, k3)를 검출을 해보자.

 

fig1

Annotation format은 fig1 처럼 각 이미지의 경로와 x1,y1,x2,y2가 필요하며, 전체적으로는

Annotation format 형식 : (img path, x1, y1, x2, y2, class_name) 으로 csv가 저장되어야 한다. 

annotation.csv

Classmapping format은 annotation에 class_name을 숫자로 mapping 시켜준 csv 파일이다.

Classmapping format 형식 : (class_name, number)

classmapping.csv

 

6. 이제 학습을 해보자!

train_data 폴더를 하나 만들어서 그 안에, data(.jpg/.png) 및 (annotation,classmapping).csv 파일을 넣어뒀다.

python keras_retinanet/bin/train.py --gpu=0 --epochs=10 --steps=1000 --workers=0 csv train_data/annotation.csv train_data/classmapping.csv

위 명령어를 입력하면 학습이 진행된다.

혹시나 ModuleNotFoundError: No module named 'keras_retinanet.utils.compute_overlap' 라는 오류가 발생한다면, python setup.py build_ext --inplace 명령어를 통해 해결할 수 있다. 

 

7. 테스트 및 평가

테스트및 평가를 위해서는 학습된 모델을 convert해서 inference model로 바꿔줘야 한다.

python keras_retinanet/bin/convert_model.py ../snapshots/resnet50_csv_02.h5 ../snapshots/resnet50_csv_10_infer.h5

마지막으로 저장된 모델을 불러서 평가하면 끝~!

 

 

 

혹여나... 라벨툴을 알아보고 싶으면 클릭

'02. Study > Keras' 카테고리의 다른 글

Tensorflow & Keras 버전확인  (0) 2020.04.02
keras model 저장 및 callback  (0) 2019.08.07
model name exchange  (0) 2018.03.22
fit_generator with multiple inputs  (0) 2018.03.22
Keras Visualization  (0) 2018.03.17
Comments