연관된 포스트 : 서론을 보고 오십시오.
컴퓨터 환경 세팅
TOD API 를 쓰기 위해서 먼저 컴퓨터 환경 세팅을 해야한다. API를 쓸 때 코드를 내가 안 짜는 것이지 API 내부적으로는 딥러닝 모델을 돌리는 것이기 때문에 기본적인 딥러닝 컴퓨터 환경 세팅을 진행해주면 된다.
- Python, CuDNN, CUDA, Tensorflow 설치하기 : GPU 모델에 호환되는 cudnn, cuda 버전을 구글링해서 확인하고 깔기
환경 세팅과 관련해서는 내가 포스팅을 아직 덜 했으니 다음의 블로그(1, 2)들 참고해서 깔길 추천한다.
- 그 당시 학교 서버 컴퓨터에 내가 깔았던 버전들 공유(OS는 Windows 10)
python : 3.7.3
cuda : release 10.1, V10.1.168
cudnn : 7.6.3
tensorflow-gpu 1.13.1
사실 API를 쓸 때(2019.7) 그 당시에 최신 tensorflow-gpu 버전이랑 호환이 안되서 downgrade해서 설치했었다. 이 환경에서 실행을 하면 매번 코드를 실행할 때마다 텐서플로우 버전 때문에 곧 deprecated 된다며 경고가 엄청 많이 뜨는데 일단 돌아는 간다.
Tensorflow Object Detection API 설치와 기본적인 사용방법
사실 내가 API 쓰는 기본적인 방법 자체를 설명하기엔 너무 좋은 자료가 있어서 그냥 이 부분은 링크로 대체한다.
- API 사용 방법과 관련한 아주 좋은 자료(사실 나도 이거에서 변형해서 씀)
step-by-step으로 설명되어 있어서 따라하기만 해도 아주 쉽게 할 수 있다. 어떤 친절하신 분이 한국어로 번역해서 똑같이 따라하기 쉽게 포스팅 해두셨다. 영어버전에서 사용한 코드는 여기서 확인하면 된다.
Project Overview
영상에서 동물을 detection하고 추가로 그 행동을 분류하는 task를 수행하기 위해 다음의 과정을 진행했다.
1) Train / Test 이미지를 나눈 후 LabelImg로 labeling하기
2) Annotation .xml 파일을 tfrecord 파일로 변환하기
generate_tfrecord.py 파일의 class_text_to_int() 함수를 사용하는 클래스에 맞게 수정하기
3) pre-trained model 준비 : 기존에 pre-trained model의 압축파일과 해당 모델의 config 파일 다운로드
(1) tar.gz로 압축된 모델은 압축풀기 : pre-trained weight과 graph가 저장되어 있음
(2) 모델의 config 파일은 다운로드 받은 후 수정
필수적으로 수정해야 할 것 : num_classes, label_map_path, input data, output data path, fine_tune checkpoint 수정
** config 파일에는 학습 과정과 관련한 정보가 모두 들어가 있다. 크게 model, train_config, train_input_reader, eval_config, eval_input_reader로 이루어져 있는데 여기에서 필수적으로 수정해야하는 것 외에 learning rate, optimizer, step size, image resize 비율, augmentation 방법, 그 외 모델 정보 등 다양한 것을 수정할 수 있다.
** API에서는 한 번 batch 돈 것을 하나의 step으로 정의하며, 여기에 step size를 곱한 후 전체 이미지 개수로 나누면 epoch 수를 구할 수 있다.(ex) 전체 500개 이미지, batch size 5, step size 20000이라면 5*20000/500 = total 200 epochs)
** faster_rcnn_inception_v2_pets.config의 default batch size는 1인데, 이를 다른 값으로 수정 시 에러가 발생한다. 이는 config 파일 내의 keep_aspect_ratio_resizer에서 이미지 사이즈를 dynamic하게 설정하기 때문에 batching이 되지 않는다. batch size를 수정하려 한다면 config 파일에서 keep_aspect_ratio_resizer 대신 fixed_shape_resizer를 사용하면 된다.
4) 3)에서 label_map_path에 입력한 파일(object-detection.pbtxt)을 열어 label을 필요한 클래스로 수정
5) Train 코드 실행(legacy/train.py)
6) 학습한 모델 inference graph 생성
7) Evaluation 코드 실행(legacy/eval.py), detection 결과 visualization하기(test.py)
'컴퓨터 사이언스 > 딥러닝' 카테고리의 다른 글
딥러닝 개발환경 세팅할 때마다 찾아보기 귀찮은 명령어 모음(feat. version 확인) (0) | 2020.06.03 |
---|---|
[딥러닝 뉴비의 좌충우돌 일기] Tensorflow Object Detection API로 동물의 행동 분류하기 - 본론 2 : 프로젝트에 API 적용하기 (0) | 2020.06.03 |
[딥러닝 뉴비의 좌충우돌 일기] Tensorflow Object Detection API로 동물의 행동 분류하기 - 서론 : What and Why? (0) | 2020.06.03 |
[딥러닝 뉴비의 좌충우돌 일기] 개발환경 셋팅하기(introduction) (0) | 2019.09.04 |
8주 동안의 회사 인턴 참가 후기 (0) | 2019.08.10 |
댓글