2022 국방 AI 경진대회 회고

Jajuna_99·2022년 11월 21일
0

일상 공유

목록 보기
3/3

2022 국방 AI 경진대회 군장병 부문 회고

대회 때 사용했던 깃헙 주소 : https://github.com/Jaejuna/Aerial-segmentation

성적

final leaderboard 기준

  • 예선전 중 21/35 등
  • 정확도(MIoU) : 65.51%

참여 계기

참여한 계기는 특별할 것 없다. AI를 공부중이고 전역 전에 좋은 기회이다 싶어서 참가했다.

게다가 군 장병으로 참가가 제한되서 '정말 해볼만하겠다!' 라는 아주 얄팍한 생각으로 도전했었다.

대회 개요

군대에 도움이 되는 모델을 만들고, 군 AI 전력 강화라는 취지로 국방부과학기술정보통신부에서 주관해서 개최한 공모전이다.

대회 과정

본인 생각에는(내 주제에 뭐라고 하하...) 참 탈 많았고, 말 많이 나왔던 대회였던 것 같았다.

우선 참가자가 생각보다 많아서 예선전 이전에 또 하나에 예선전을 만들었다. 예선전의 예선전인 것이다.

이 예선전의 예선전은 Programmers에 외주를 맡겨 코테로 진행한 듯 하다.

문제 선별과 채점 과정에 정말 많은 항의가 빗발쳤는데 뭐 어찌저찌 우리 부대에서 나를 포함한 3명이 통과했다. (미안해 KW아...)

예선이 확정되어, 이런 적이 처음이라, 정말 미친듯이 잡히는 데로 읽고 공부했었다. CNN 개념을 다시보고 코딩해보고 image segmentation은 물론, weakly-segmentation, anomaly detection, serial data model 등 '나올수도 있겠다.' 싶은 과제들에 대한 논문, 블로그 등을 전부 뒤져보면서 낮에는 일과, 밤에는 공부를 계속했었다.


솔직히 위에 참고 자료는 찾아본 것에 반도 안된다. 다시 볼 것 같은 것들만 기록해놓은 것이다.

그리고 운영진에서는, 물론, 데이터셋 사전 공개날에 그냥 예선 시작과 동시에 공개하겠다고 통보했다.

그렇게 몇 주가 지나서 예선전이 시작됐고, 처음 접해보는 AI 공모전이라 일단 주어진 과제를 확인해봤고 baseline 코드와 교감을 시도해봤다.

우선 데이터셋은 사진 한 장에 같은 자리에서, 왼편에는 오래된, 우편에는 최근에 찍은 항공 사진들이었다.

과제는 이 데이터셋을 활용해 건축물들의 변화된 유형을 찾고(생성, 파괴 등 4개..? 였나) 그 부분을 segmentation 하는 비교적? 생각했던 것 보단? 간단한 과제였다.

일단 베이스라인 코드는 PyTorch로 구현돼 있었다. 물론 여러 공모전 코드들을 보면서 어느정도 예상은 했다만, TF만 공부해봤던 나에게는 도전적으로 다가왔다.

하지만 다시 베이스라인을 천천히 검토해보니, 모델이고, 개발 구조이고 거의 완성된 베이스라인이 주어졌다.

어찌보면 다행이고 어찌보면 난감했다. 왜냐하면 나 같은 초보자들도 베이스라인 만으로도 쉽게 모델을 완성시킬 수 있기 때문이다. 난감한 이유는 이렇게 완성된 구조의 베이스라인에는 코드 수정이 용이하지 못하기 때문이다.

결국에는 베이스라인에서 주어진 모델들에서 크게 벗어나지 않는 방향으로 잡았다. 그도 그럴것이 베이스라인에서 overfitting만 잡으면 꽤나 괜찮은 정확도 나올 것 같은 그래프들을 계속해서 뱉어냈다.

그래서 overfitting을 잡을 방법을 일주일 내내 찾아보면서 정확도를 조금씩 늘리다보니 어느새 예선이 끝났다.

마지막에 데이터 증강을 어떻게 구현해서 훈련을 시켜봤는데 시간 부족으로 아쉽게 훈련을 완성시키지 못했다.

이것도 운영진에서 첫날에 군 PC 상용 포트가 막힐걸 알고 미리 포트를 바꾼 개발 환경을 제공하거나 부대에 연락을 돌려놨다면... 그렇게 첫 날은 접속도 못 해보고 낭비됐다.

느낀점 및 배운점

생각보다 엄청나신 분들이 많이 참가해서 놀랐고, 열심히 싸웠고, 배운 점들이 많았다.

확실히 책으로만 모델들을 깨작깨작 만들어 훈련시키는 것만 하다보니, 전체적인 AI 개발 파이프라인에 대해서 너무 무지했다는 생각이 들었다.

이 뿐만 아니라 업계에서는 성능을 위해 리눅스 환경을 사용한다고 들었지만, 사실 리눅스 운영체제를 제대로 써본 것은 이번이 처음이었다. 파일 경로 이동, 삭제, 복사 등 사실 같이 했던 BH이라는 후임이 없었다면 굉장히 고생했을 것이다.

데이터 증강, 드롭아웃알고리즘으로 충분히 구현할 수 있는 부분에 대해서도 본인의 알고리즘, 개발 지식, 수학 지식이 부족하다는 것을 또 느꼈다.

그 외 learning rate, scheduler, 함수형 모델 등 사용자에게 매우 편리한 기능들에 대해서도 많이 배웠다. CUDA는 뭐 말 할것도 없겠다.

사실 일병 시절에도 탱크 시뮬레이션 AI 공모전에 뭣도 모르고 도전했었는데 그 공모전은 더 했다. 웹 크롤링, 분석, 데이터 처리, 강화 학습을 직접 구현 해야되는 미친 공모전이었다.

그렇다. 요는 부족한 점이 한, 두가지가 아니고 공부할 것도 마찬가지다. 그래도 '하면 할 수 있다' 라는 이 한 문장에 담기 힘든 도전 정신을 얻은 것 같습니다.

P.S. 아 지금 보니까 구름에서 개발해놓고, 베이스라인 코드 유출되면 안 될거 같아서 gitignore 해놨었는데 깃헙에 푸쉬 않하고 구름 컨테이너를 지웠다... 그냥 베이스라인 코드만이라도 올릴께요...

P.P.S. 딱히 운영진이 만든 것 같진 않지만, 혹시 베이스라인 코드 올리면 안되는거면 연락주세요~~ 말년에 군기교육대 가기 싫습니다~~

profile
Learning bunch, mostly computer and language

0개의 댓글