
스마트농업 AI 경진대회

몰랐는데 뉴스에 나왔습니다. 정면에 보이는 팀이 저희 팀이었습니다. 대회 규모가 꽤 커 보였습니다. 시설도 시설이지만, 간식과 식사 제공에 있어서 돈을 아끼지 않아서 정말 좋았습니다.
대부분 코딩을 시작한 지 2개월도 안 된 초짜 개발자들로 이루어진 팀이라 주변에서 기대를 크게 안 했지만, 저는 기대를 많이 했습니다. 사전 테스트도 50팀 중 7등으로 마무리했기 때문에 예선도 비슷하게 마무리하지 않을까 싶었습니다. 항상 느끼지만, 기세가 좋으면 결과도 좋은 법이죠.
참고로 비밀유지계약은 없었지만 아직 진행 중인 대회이므로 애매하게 후기를 남기겠습니다. (떨어지면 제대로 후기 남길 예정...)
문제1
사전 테스트와 비슷하게 스마트팜에서 나오는 데이터를 통해 target을 예측하는 과제였습니다. 사전 테스트와 달랐던 점은 데이터 규모입니다. 기억이 잘 나진 않지만, 사전 테스트 때는 10만 개의 row를 다뤘지만 예선 1차 문제 1의 데이터는 몇 배로 늘었습니다. 게다가 예측해야 하는 target도 n개로 늘었습니다.
가장 먼저 전처리부터 시작했습니다. 주최 측에서 의도적으로 데이터를 지저분하게 만들었습니다. 정말 다양한 방법으로 지저분하게 만들었더군요. 그래서 해당 부분을 전처리하여 문제를 해결해 나갔습니다. 데이터 용량이 크다 보니 무거운 모델을 돌리는 데 무리가 많았습니다. 대회가 48시간 무박 2일인 이유가 여기에 있었습니다.
각 target별로 다른 모델을 사용하여 예측했기 때문에 대회 종료 10분 전까지도 여유가 없었습니다. 하지만 잘 해결해 나갔습니다.

문제 1 결과는 4등으로 마무리했습니다. 생각치도 못한 이상치 처리가 큰 역할을 한 것 같습니다. 또한 다양한 앙상블 모델을 실험해 본 것도 꽤 의미가 있었습니다. 그리고 Optuna 파라미터는 정말 ‘신’이었습니다. 다만 아쉬운 점은, 주어진 시간에 좀 더 유의미한 앙상블 실험을 했더라면 더 좋은 결과를 얻었을 것 같다는 점입니다.
문제2
문제 2는 이미지 처리 모델을 만드는 것이었습니다. 사실 이미지 모델은 실습 이후로 사용해 본 적이 없어 초반에 개념적으로 어려움을 많이 느꼈습니다. 하지만 YOLO부터 시작해서 천천히 문제를 해결해 나갔습니다. train/test 이미지를 받았고, labeled와 unlabeled 이미지로 나누어져 있었습니다.
하지만 주어진 데이터를 절대 믿지 않았습니다. 이미지도 전처리가 필요했고, 파인튜닝도 필요했습니다.
찾아보니 YOLO 방식보다 더 고도화된 모델도 꽤 있었습니다. 이미지 분류 모델을 앙상블하다 보니, 모델이 돌아가는 데 정말 시간이 오래 걸렸습니다. 돌리고 나서 담배 10번 피고 와도(물론 저는 비흡연자) 모델은 아직 돌아가는 중이었죠.

결과는 2등. 이미지 전처리(특히 라벨링)를 제대로 한 것이 고득점의 요인이 된 것 같습니다. 아쉬운 점은 시간이 무제한급이었다면 Optuna 파라미터로 1등도 노려볼 수 있었을 것 같습니다. 그래도 수동으로 적절한 파라미터 값을 찾아낸 게 다행입니다.
문제3

문제 3은 스킵… 반쯤 성공했습니다. 사실 문제 1, 2에서 무거운 모델을 돌리다 보니 문제 3에 투자할 시간이 부족했습니다. 2시간만 더 있었어도 완벽하게 수행했을 것 같습니다. 그래도 해당 문제를 해결할 수 있는 팀원이 아무도 없었지만, 서로 집단지성을 발휘해 해당 문제 시작까지 도달했습니다.
사실 당일 일정 때문에 참가하지 못한 팀원이 있었는데, 그 팀원이 문제 3의 전문가라서 많이 아쉬웠습니다.
고찰
팀장으로서 잘 수행했는가를 묻는다면 큰 점수를 주긴 어렵다고 생각합니다. 가장 아쉬운 점은 문제 3에 대한 대응을 빠르게 하지 못한 것이고, 잘한 점은 주최 측이 작정하고 숨겨 놓은 전처리 의도를 찾아낸 것과, 좋은 분위기에서 웃으며 과제를 수행하도록 분위기를 만든 점이라고 생각합니다.
이제 곧 결과가 나오는데, TOP 10으로 예선 2차에 진출했으면 좋겠습니다. 그리고 예선 2차 준비를 하루빨리 진행하고 싶습니다. 우리 팀원들 정말 고생 많았고, 계속 화이팅합시다!
2차 프로젝트에 대한 내용은 다음주에...