본문 바로가기

Deep Learning/TF Object Detection API

2.2. Mask R-CNN을 Retrain 시켜보자 create_tf_record.py를 통해 TFRecord 파일을 만들었으니 이제 Retrain 하는 방법에 대해 알아볼 차례다. Retrain 방법에 대해 구글링해본 사람이라면 한 번쯤은 이런 생각을 해본 적 있지 않을까 싶다. (뭐.. 나만 삐뚫어진 걸 수도 있지만..ㅎㅎ) '뭐야, 이게 무슨 API야? 사용성이 너무 떨어지는데?' 그래서 기존에 알려진 방식보다 더 사용성을 높여 보려고 이것 저것 추가해서 작성해봤다. 순서는 다음과 같다.[pretrained_model 폴더]에 mask_rcnn_resnet101_coco_2018_01_28 모델 다운로드 모델은 detection_model_zoo에서 다운받으면 된다. [model_configs 폴더] 생성 후 ./object_detection/sam.. 더보기
2.1. Custom Dataset으로 TFRecord 파일 만들기 Tensorflow Object Detection API를 사용해서 모델 재학습을 하려면 TFRecord 형태의 input data를 만들어줘야 한다. TFRecord는 "Tensorflow 전용 학습 데이터 저장 형태" 정도로 알아두면 될 것 같다. 제대로 알아보지는 않았지만 Tensorflow로 설계한 모델 학습에 TFRecord를 사용하면 학습 속도가 개선되는 장점이 있다고 한다. 자세하게 알고 싶다면 여기1와 여기2에 들어가서 관련 설명을 읽어보면 될 것 같다. 그리고 이미지를 byte 단위로 읽고 쓰는 법에 대해 모르는 경우라면, [Python] - 이미지 읽는 방법 / cv.imdecode( ), io.BytesIO( ) 을 읽으면 도움이 될 거다. 이제 본격적으로 Custom Dataset을.. 더보기
2. Tensorflow Object Detection Model Retrain 방법에 대해 알아보자 진행하는 논문만 마무리하고 다시 쓰고자 계획했는데 어느덧 반년이 넘는 시간이 흘러버렸다.. 지금은 논문 작업이 거의 완료돼서 시간적 여유가 많으니 Tensorflow Object Detection Model Retrain 방법에 대해 정리하도록 하겠다. Retrain에는 segmentation도 같이 진행하는 Mask R-CNN 모델을 사용했다. Dataset은 여기에서 Training Data에서 Rigid Instruments만을 받아 학습에 사용했다. Rigid Instruments를 받아보면 4개의 폴더가 있는데 그 중 3개는 학습용으로, 나머지 1개는 검증용으로 정리해서 사용했다. 정리된 Dataset와 사용한 코드들은 내 Github에서 다운받을 수 있다. 이제 다음 글에서 다운받은 Custo.. 더보기
1.5. draw_bounding_boxes 함수 설계 및 inference 결과 확인 pretrained model을 실행시켜서 결과 받아보는 과정까지 알아보았다. 이제는 detecting 결과를 이미지에 표현해주기만 하면 된다. 튜토리얼 코드를 봐보면 ./object_detection/utils/visualization_utils.py 를 사용해서 그려주는 걸 볼 수 있는데 그냥 경험삼아 직접 한 번 구현해보고 싶어서 draw_bounding_boxes 함수를 만들었다. 1. class_info.txt 만들기 코드 설명에 앞서 class_info.txt를 만들어줄 필요가 있다. draw_bounding_boxes 함수는 class에 대한 정보를 text가 아닌 int로 반환해준다. 따라서 각 숫자가 어떤 class를 뜻하지는 지에 대한 정보가 필요하다. visualization_util.. 더보기
1.4. run_inference_for_single_image 함수 설계 pretrained model 을 메모리에 올리는 과정까지 알아봤다. 이제 메모리에 올려진 계산 그래프에서 예측을 위해 필요한 텐서 두 개를 가져와 실행하는 데에 필요한 함수들을 알아보자. 관련 글로 [Deep Learning/Tensorflow] - MNIST 분류 모델, 조금 다르게 실행해보자 가 있으니 읽고 오길 바란다. 모델 실행을 위해서는 계산 그래프에서 텐서를 가져와 object detecting 결과를 뽑아주는 함수 결과값을 통해 이미지에 bounding box를 그려주는 함수 가 필요하다. 이번 글에서는 '1. 계산 그래프에서 텐서를 가져와 object detection 결과를 뽑아주는 함수' 에 대해 알아보도록 하겠다. 이 과정에서 이전에 다운받지 않은 opencv를 사용할 것이기 때문에.. 더보기
1.3. Pretrained model의 계산 그래프 로드 다운받은 pretrained model 관련 파일들 중에서 예측에 필요한 파일은 frozen_inference_graph.pb 이다. 그니까 우리의 목표는 아래와 같은 결과 사진을 얻는 것이고, 이를 위해선 하드디스크에 저장돼 있는 frozen_inference_graph.pb 파일을 메모리에 올려 실행해줘야한다는 말이다. 그래서 이번 글에선 frozen_inference_graph.pb를 메모리에 올리는 과정까지 알아보겠다. 글 시작에 앞서 protocol buffer와 관련된 글, [인공지능 용어 정리] - Protocol Buffer 개념 ~ Protocol Buffer 실습 2을 읽고 오길 바란다. protocol buffer가 무엇이고 어떻게 사용하는 지를 알아야 이후부터 진행되는 내용을 정확히.. 더보기
1.2. Pretrained model 다운로드 및 압축 풀기 object_detection_tutorial.ipynb을 살펴보면 전체적인 흐름이 다음과 같다. 사용하고자 하는 pretrained model의 tar.gz 파일 다운로드 tar.gz 파일 압축 풀기 pretrained model의 계산 그래프 로드 모델 실행 및 결과 출력 이번 글에서는 모델을 다운받고 압축을 푸는 방법까지 알아보겠다. 1. pretrained model 다운로드 Tensorflow에서 지원하는 object detection model 종류와 다운로드 주소는 detection_model_zoo에서 확인할 수 있다. detection_model_zoo에서 바로 모델 다운받아서 알집으로 압축 풀어주면 되기는 한다. 가장 쉽고 간단한 방법이다. 근데 이를 코드로 작성해서 사용하는 방법에 대.. 더보기
1.1. Tensorflow Object Detection API 다운로드 및 환경설정 다운로드부터 해보자 Object Detection API를 다운받을 수 있는 공식 사이트는 여기이다. Object Detection API에 관한 것만 있는 게 아니고 별 게 다 있다. 그래서 우리가 사용할 것들만 따로 빼내줘서 사용하는 게 깔끔하다. 우리는 1) ./research/object_detection 폴더와 2) ./research/slim 폴더가 필요하다. slim이 필요한 이유는 object_detection에서 ./research/slim/deployment와 ./research/slim/nets을 가져다 사용하기 때문이다. ※ object_detection만 가져다 실행하면 deployment나 nets가 없다는 에러를 만나게 되니 필히 같이 빼내줘야한다. 이제 오른쪽 상단의 [ Cl.. 더보기