본문 바로가기
컴퓨터 사이언스/딥러닝

[딥러닝 뉴비의 좌충우돌 일기] Tensorflow Object Detection API로 동물의 행동 분류하기 - 서론 : What and Why?

by 제크와 죠세핀 2020. 6. 3.
반응형

서론

작년에 영상에서 동물의 행동을 detection하는 task를 수행하기 위해서 Tensorflow Object Detection API(이하 TOD API)를 사용했었다. 영상데이터에서 직접 Annotation한 Custom Dataset을 이용하여, 기존의 잘 학습된 모델에 추가로 조금 학습시키고 성능을 분석하는 정도라 컨셉자체는 매우 간단하다. 하지만 그 당시의 나는 쫄보 뉴비였기 때문에(지금도 뉴비지만) 되게 쉽게 툴을 쓰는 방법을 알려주는 자료가 필요했는데 그 당시에 TOD API를 쓰는 방법을 떠먹여주듯이 잘 알려주는 자료가 거의 없어서 조금 고생을 했다. 사실 지금은 Audio 쪽에서 공부를 하고 있기 때문에 앞으로는 Vision 쪽 Task를 할 일이 없을 것 같긴 하지만 외장하드에만 묵혀놓기엔 아까운 자료라고 생각하고 삽질하는 사람들에게 도움이 될 수 있길 바라며 짧게 글을 남겨본다. 멍청이같지만 정작 중요한 코드는 지금 가지고 있지 않다. 분명 외장하드에 백업했다고 생각했는데 인수인계하면서 학교 서버에서 내 외장하드에 백업을 안한 것 같다. 그래서 어떤 식으로 진행했는 지에 대해, 그냥 간략하게 과정만 설명하려고 한다.(딥러닝에 넣기는 조금 애매한 것 같지만 어쨋든 딥러닝)

 

What is Tensorflow Object Detection API?

구글에 이걸 검색하면

Tensorflow Object detection API는 object detection model을 라이브러리 형태로 제공하고, Tensorflow로 구현이 되어 있으며, 각기 다른 정확도와 속도를 가지고 있는 여러 모델을 가지고 있습니다.

라고 나온다. 사실 API라는 개념 자체에 익숙하지 않은 나같은 사람도 있으니 쉽게 이야기해보자면, Object Detection을 하고 싶을 때 내가 딥러닝 모델을 구현하고, train, test 코드를 작성하지 않아도, 즉 내가 딥러닝에 대해 거의 몰라도 여기서 제공하는 포맷대로 쓰기만 하면, 꽤나 성능 좋은 나만의 object detector를 만들 수 있다는 의미다. 물론 그렇다고 함수 한줄만 호출하면 마법이 일어날만큼 간단한 API는 아니기 때문에 정말 약간의 지식은 필요하고 어쨋든 그런 면에서 도움을 주고자 지금 내가 이런 글을 쓰고 있다. 즉, 어떤 상황에 이 TOD API를 쓰면 좋은 지 이야기해보자면 내가 모델 구조를 변화시켜 새로운 모델을 개발하는 용도로 사용되기보다는, Application에 초점을 둬서 custom dataset을 위한 detection model을 만들 때 굉장히 편리하다.

여기서 custom dataset에 대해 이야기하는 이유는, 기존의 object detection 알고리즘들이 대부분 COCO나 Imagenet, 아니면 Pascal VOC dataset 등 Open dataset의 구조에 맞게 데이터를 받아오는 것에서 문제가 시작되기 때문이다. 이게 그냥 단순히 Image Classification data처럼 대충 input 받아오는 부분 코드만 수정해서 코드를 쓸 수 있는 게 아니기 때문이다. 내 데이터셋의 구조를 open dataset의 구조와 똑같이 만들지 않으면 코드 전체를 뜯어 고쳐야 하는데 이것도 생각할 게 이만저만이 아니다. 심지어 나는 사진이 아니라 영상 도메인에서 작업을 해보는 것도 처음이었고, object detection으로 프로젝트를 해보는 게 처음이어서 어떤 알고리즘, 어떤 모델을 써야할 지도 잘 몰라서 고민하는 와중에 매번 서로 다른 식으로 input을 받아오는 깃헙의 SSD, faster-rcnn 코드까지 보고 있자니 더 혼란스러울 수 밖에.(남의 코드 볼 때가 제일 고통스럽다)

이런 문제를 모두 해결해준 것이 TOD API였다. 그래서 어떤 모델이 좋은지, 모델의 구조나 구현방법 등 딥러닝 자체에 대해서 공부는 거의 하지 않았고 간단한 파라미터 수정과 TOD API에서 제공하는 pre-trained model list에서 모델 여러개를 바꿔가면서 성능체크만 해보는 정도로 프로젝트를 비교적 머리아프지 않게 마무리할 수 있었다. TOD API에서 제공하는 pre-trained model list는 여기서 확인할 수 있다.

 

Why Tensorflow Object Detection API?

그래서 Tensorflow Object Detection API의 장점을 요약하면 다음과 같다.

1) object detection model을 라이브러리 형태로 제공한다. Tensorflow로 구현이 되어 있으며, 각기 다른 정확도와 속도를 가지고 있는 여러 모델을 가지고 있다.

2) 머신러닝이나 텐서플로우에 대한 개념이 거의 없더라도 라이브러리 형태로 손쉽게 사용할 수 있다.

3) 직접 사용자 데이터를 업로드해서 학습을 하여 사용자가 원하는 Object Detection System을 손쉽게 만들 수 있다.

 

매번 글이 너무 길어지는 게 가독성이 좋지 않은 것 같아 글을 분할하겠다. 다음 글에서 API를 사용하는 전반적인 방법에 대해 소개해보겠다!

반응형

댓글