저번 주말, 첫 해커톤을 다녀왔다.
그 전부터 해커톤을 한번 경험해보고 싶었는데 다행히 서류에서 통과되어서
해커톤을 체험해볼 기회가 생겼다!
이 대회는 AI분야의 해커톤으로 정해진 두 주제 중에서 하나를 골라 프로젝트를 진행하는 것인데
우리는 '하수도관의 결함 탐지' 라는 주제를 골랐다
일전 프로젝트 중에서 OpenCV를 통한 영상인식을 활용한 프로젝트를 진행해봤지만
Tensorflow나 Pycharm 등 머신러닝 프레임워크를 활용해본 경험은 없어서 많이 걱정했다.
학기 중에 나가는 해커톤이다보니 시간을 많이 투자할 수도 없었기 때문에
결국 어느정도 계획만 세워두고 해커톤에 참여하게 되었다.
일단 세웠던 개발계획은 Keras기반 SSD 객체 탐지기법을 진행하려 했지만
막상 시작하고 보니 Keras와 SSD를 활용한 Object Detection 프로젝트는 생각보다
많은 정보가 없었고 구현도 쉽지 않았다.
23일을 통째로 위 계획대로 하려다 잘 안되는 것을 느끼고는
Github에 존재하는 Tensorflow Object detection API를 이용하기로 하였다.
그리고 해당 주제에서는 실시간성, 신속성보다는 정확도가 더 중요하다고 생각되어
SSD -> RCNN 으로 객체 탐지 기법을 바꾸기로 하였다.
(속도는 더 느리지만 정확도는 더 높다.)
그리고 해커톤에서 제공된 하수도관 사진 데이터는 약 600여 장으로
머신러닝에는 굉장히 부족한 데이터셋이였다.
따라서 기존 사용하려던 Keras의 ImageDataGenerator 부분만 가져와
하수도관의 형태를 해치지 않을 정도로의 변형만 거쳐
데이터셋의 수를 약 9배로 늘렸다.
늘린 데이터 셋은 다시 역할을 나누어 지옥의 라벨링시간을 거쳐 CSV파일로 재탄생했고
모두 노트북을 가져왔기에 느린 훈련시간을 그나마 줄이기 위해서
데스크탑 원격 연결을 통해 내 데스크탑의 GPU를 활용했다.
훈련은 loss가 지속적으로 평균 0.2 이하의 값이 나올때까지 지속되었다.
그리고 결국 ...
탐지에 성공했다!!
심지어 꽤 정확한 탐지율을 보여주었다
이때가 약 새벽 3~4시쯤이였는데
진짜 잠이 확 달아났던 것 같다.
그 후에는 이제 트레이닝 Step이나 다른 세부 설정 조율을 통해
정확도를 좀 더 올려보고자 했으나 피로와 시간의 압박으로 인해서 여기서 마무리하게 되었다.
그리고 보고서쓰랴 발표준비하랴 준비하다보니 잠은 한 시간도 제대로 자지 못했다....
이번 해커톤으로 배운 점은
1. 일단 해커톤을 나가기전에 충분히 조사와 준비를 해가야 한다는 것..
프로토타입 정도라도 만들어보는게 좋을 것같다... 초반 케라스로 고생한 것 생각하면 정말 끔찍하다
2. 대회를 나가 어떤식으로 역할 분담을 하고 진행해야하는지 또 한번 느끼게 되었다.
ACM 대회에서도 느꼈던 것이지만 이런 시간이 촉박한 대회일수록
역할 분담의 중요성, 소통의 중요성을 느끼게 된다.
3. Tensorflow와 Keras 등 머신러닝 프레임워크에 대해 어느정도 알게 되었다.
사실상 이번 대회의 제일 큰 수확.. 머신러닝에 대해 1도 몰랐던 나에게 몸으로 알게 해주는 대회였다.
4. Object Detection에 있어 여러기법들(Yolo,RCNN,SSD)에 대한 장단점과 어떻게 활용해야하는지
알게 되었다.
이번 경험을 토대로 저번 교내 소프트웨어 공모전에서 진행했던
시각 장애인을 위한 버스 정류장 음성 안내 시스템을 업그레이드 해볼 예정이다.
이번 겨울에 다시 한번 전시회가 열리는데 그 때는 이 경험을 활용해서
완성도 높은 작품을 선보이고 싶다.
'IT > 개발' 카테고리의 다른 글
학교 전공종합설계 프로젝트 (2) | 2020.03.07 |
---|---|
[외주] 안드로이드 외주 진행 사항 (0) | 2020.02.05 |
[ERROR] pip install mysqlclient returns "fatal error C1083: Cannot open file: 'mysql.h': No such file or directory 해결 방안 (0) | 2020.01.11 |
C와 C++ (0) | 2019.11.15 |
프로젝트 계획(해커톤) (0) | 2019.11.08 |
댓글