일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- object detection
- Windows 10
- install
- download
- dataset
- urllib
- error
- colaboratory
- ubuntu
- raspberry pi
- YouTube 8M
- ppc64le
- python
- keras
- TensorFlow
- Anaconda
- pyTorch
- CUDA
- FIle
- Deep Learning
- dlib
- 딥러닝
- shakeratos
- linux
- gpu memory
- Jupyter notebook
- windows
- colab
- python3
- face_recognition
- Today
- Total
Shakerato
딥러닝 객체인식 네트워크 retinanet 내 데이터셋으로 학습하는 방법 본문
참고: https://github.com/fizyr/keras-retinanet
1. 실행 환경 구축
1.1. Anaconda (python=3.6) 개발 환경 생성
conda create -n myenv python=3.6
1.2. Anaconda 개발 환경 활성화 (윈도우)
activate myenv
1.3. 관리자 권한으로 cmd 실행
1.4. python setup.py install
1.5. pip install Keras==2.2.4
2. 학습할 데이터셋 만들기
2.1. 학습할 이미지 준비하기
2.2. 학습할 이미지에 있는 인식할 객체의 Bounding Box 위치 알아내기
2.3. 모든 학습할 이미지를 특정 폴더에 path/to/image.jpg 모두 저장
2.4. Annotations format 파일 만들기
path/to/image.jpg,x1,y1,x2,y2,class_name 순으로 CSV파일 만들기
2.5. Class mapping format 파일 만들기
class_name,id 순으로 CSV파일 만들기
2.6. 내 학습 데이터 체크 (스페이스바로 다음 이미지 넘어가기)
python keras_retinanet/bin/debug.py csv mydataset_annoation.CSV mydataset_classmapping.CSV
3. 학습하기
3.1. 학습 시작
python keras_retinanet/bin/train.py csv mydataset_annoation.CSV mydataset_classmapping.CSV
3.2. 학습 epoch, step 조절
python keras_retinanet/bin/train.py --gpu=0 --epochs=2 --steps=1000 --workers=0 csv mydataset_annoation.CSV mydataset_classmapping.CSV
3.3. training model을 inference model로 바꾸기
python keras_retinanet/bin/convert_model.py snapshots/resnet50_csv_01.h5 snapshots/mymodel.h5
4. 테스트하기
4.1. examples/ResNet50RetinaNet.ipynb를 jupyter로 오픈하거나 .py로 컨버팅하여 실행
(아래 url의 예제 코드를 복사하여 .py 파일을 만들면 됨)
https://github.com/fizyr/keras-retinanet/blob/master/examples/ResNet50RetinaNet.ipynb
(.py로 실행할때는 아래 코드 주석처리)
#%matplotlib inline
#%load_ext autoreload
#%autoreload 2
4.2. 적절한 경로를 지정하고, class 개수에 맞게 labels_to_names 딕셔너리를 바꾸기
4.3. read_image_bgr('테스트할 이미지 경로')와 같이 수정 하여 코드 실행
4. 평가하기(evaluation)
python keras_retinanet/bin/evaluate.py csv [어노테이션csv파일] [class맵핑csv파일] 학습된모델(.h5)
python keras_retinanet/bin/evaluate.py csv mydataset_annoation.CSV mydataset_classmapping.CSV snapshots/mymodel.h5
(에러) No module named 'keras_retinanet.utils.compute_overlap'
(해결법) python setup.py build_ext --inplace
(에러) TypeError: can't pickle generator objects (multiprocessing 문제)
(해결법) python keras_retinanet/bin/train.py --workers=0 csv mydataset_annoation.CSV mydataset_classmapping.CSV
(예제) 내데이터셋 준비 (아이유, 손흥민), 이미지 사이즈는 크게 중요하지 않은 듯
(예제) 인물의 얼굴 위치 바운딩박스(Bounding Box)를 어노테이션함
(윈도우 그림판으로 사진을 열면 왼쪽하단에 픽셀 좌표 나옴)
(예제) 인식결과
'Research' 카테고리의 다른 글
convert *.mat data file to json file (0) | 2019.02.14 |
---|---|
Theano (using GPU) install in Windows 10 (0) | 2019.02.07 |
GPU devices checking tips for Deep Learning (Be careful!) (0) | 2019.01.16 |
Counting files with extension in linux (0) | 2019.01.13 |
pytorch "RuntimeError: ~ inplace operation" for CUDA (0) | 2019.01.05 |