728x90

안녕하십니까, 간토끼입니다.

이번 포스팅은 올해 수상했던 AI 활용 창업 아이디어 공모전AI-JAM KOREA 2020 수상 경험에 관해 다뤄보겠습니다.

이번 공모전 경험 또한 직접 데이터를 이용해 머신러닝 알고리즘으로 모델링 후 결과를 도출하는 경험이었습니다.
다만 이미지 데이터에 딥러닝 알고리즘을 이용하여 분석했다는 점에서 이전 포스팅과 조금 차이가 있었는데요.
특히 AI 모델링을 바탕으로 창업 아이디어까지 도출해야 한다는 점이 다소 어려운 경험이었습니다.

즉 비즈니스 모델을 제시해야 하기 때문에 단순히 모델의 성능만 좋아서는 안 되겠더라고요.
저희가 실제 제안한 아이디어를 구체적으로 다룰 수는 없지만, 한번 가능한 선까지 작성해보도록 하겠습니다.


1. 대회 소개
간단하게 대회 소개를 하자면 다음과 같습니다.
AI-JAM은 실리콘밸리에 기반을 둔 국제대회라고 합니다.
매년 미국, 싱가폴, 일본에서 가장 뛰어난 학생과 세계 기술 지도자들, 기업과 함께 아이디어를 공유해왔다고 하는데요.
올해 2020년 한국에서 처음으로 제1회 AI-JAM KOREA 대회가 개최된 것이라고 합니다.

AI-JAM 출품작에 대해선 미국의 대기업, 실리콘밸리 지역 내 주요 학술기관 전문가들의 심도 있는 평가가 진행된다고 합니다.
또한 한국에서의 우수한 아이디어는 실리콘 밸리에서 진행되는 AI-JAM US 본선에서 수많은 리더들과 네트워크를 공유할 뿐만 아니라, 아이디어를 창업으로 이어갈 수 있도록 기회를 부여한다고 하네요.

결론은 '미래 변화를 꿈꾸는 AI 관련 창업 아이디어'란 주제에 맞게 AI 기술을 활용한 창업 아이디어를 제안하면 되는 방식입니다.



2. 분석 과정
먼저 저희는 딥러닝을 이용한 창업 아이디어인 만큼, 이전 포스팅( 2020/12/13 - [Records/Project] - [Project] 2020년_중소기업 통계데이터 활용 정책아이디어 공모전(장려상) )과 약간 접근 방식이 상이했습니다.
과정을 정리해보자면 다음과 같습니다.
(1) 주제 선정
(2) 크롤링을 이용한 이미지 데이터 수집
(3) 이미지 데이터 전처리
(4) 딥러닝 CNN 알고리즘을 활용한 이미지 분류 모델링
(5) 위 과정을 바탕으로 한 창업 아이디어 제안

대충 이러한 프로세스로 프로젝트를 진행하였습니다.

사실 가장 힘든 건 주제 선정이었습니다... ㅎㅎ
대회 준비기간은 약 2주 정도 잡았는데, 주제를 잡는 데에만 1주일 넘게 써서요.
주제 잡은 이후로 이미지 수집 및 전처리 2일, 모델링 및 창업 아이디어 구성 3일 정도 해서 대회를 마무리하였습니다.
모델링에 좀 더 신경을 썼다면 성능을 높였을 수도 있었을 것 같은데... ^^

한번 자세하게 다뤄보도록 할게요.



(1) 주제 선정
위에서 언급한대로 '창업 아이디어'이면서, AI를 활용해야 했기 때문에 이를 접목시키는 게 가장 중요했습니다.
무엇보다도 창업이라면 비즈니스 모델을 제시해야 하기 때문에, 상업적 가치가 있는지 따져보는 게 중요했어요.
하지만 그러한 목적을 달성하면서 적합한 데이터를 찾는 것은 정말 힘든 것이겠죠..
심지어 저희 팀이 경영학부 1명, 경제학부 2명이었기 때문에 어떤 특정한 도메인 지식을 갖고 있는 것도 아니었습니다.
그러다보니 주제를 고민하는 데 많은 시간을 썼습니다.

그러다 아이디어 회의를 하던 도중, 팀원 중 한 분이 '벌레'에 관한 언급을 했었는데요.
아무래도 자취생 중 벌레의 출몰을 극도로 두려워하는 자취생(1인 가구)이 굉장히 많은데, 특히나 내가 알지 못하는 벌레에게 더욱 큰 두려움을 느낀다고 하더라고요.
실제로 에브리타임 등 커뮤니티에서 벌레의 사진을 올리고, "이거 무슨 벌레인지 아는 사람 ㅠㅠ" 등의 글이 많은 것도 확인을 했고요.
마침 뉴스를 보니, 이상 기후 현상으로 인해 해충이 많이 출몰하여 골칫거리 중 하나라는 소식 또한 접했습니다.
그리고 해충으로 인해 감염병이 퍼져 문제가 된다는 것도 파악하였습니다.

정리하자면 코로나19로 인해 대부분의 국민들은 '방역'이란 키워드에 많은 관심을 갖고 있었습니다.
그리고 해충, 위생에 대한 관심도 나날이 높아져가고 있다는 것도 파악하였습니다.
실제로 감염병 웹 통계 시스템에 따르면 살인 진드기나 말라리아모기 등의 의한 질병 감염, 사망자 수 등이 갈수록 늘어나고 있었으며,
자취생들 또한 해충을 잘 알지 못하는 것에서 기인하는 두려움 등을 느끼고 퇴치방법을 궁금해 하고 있다는 사실을 인지할 수 있었습니다.
그래서 해충 방역업체를 부르고 싶어도 바퀴벌레같은 대중적인 해충이 아닌 이상, 대부분의 해충을 자취생(1인 가구)들이 파악하는 것 또한 어려운 것이 사실이며, 이 벌레가 무엇인지 알아야 최소한 대처법이라도 파악할 수 있는데 무슨 벌레인지 파악조차 못하니
지식인, 에브리타임 등 커뮤니티에 벌레 사진을 올리고 "이거 무슨 벌레인지 아는 사람 ㅠㅠ" 이렇게 질문하는 것 말고는 별다른 조치를 취할 수 없다는 것을 문제점으로 인식하였습니다.

따라서 저희 팀이 제안한 아이디어는 딥러닝을 이용해 서비스 이용자가 촬영한 벌레 이미지를 판별하여 어떤 벌레인지 알려주고, 이 벌레에 대한 해결책 등을 제시함과 동시에 방역 업체와 소비자를 연결할 수 있는 해충 방역 관련 플랫폼 서비스를 지향하는 서비스입니다.
그래서 우선적으로 딥러닝을 이용해 해충을 판별하는 서비스를 먼저 구현해보기로 하였습니다.



(2) 크롤링을 이용한 이미지 데이터 수집
먼저 해충의 기준을 정의하고, 사람들이 두려워하는 해충을 선별해야 합니다.
이를 위해 네이버 지식인에 해충 관련 질문글을 크롤링하여 사람들이 대체로 궁금해하는 해충의 순위를 파악했습니다.
그 결과 바퀴벌레를 포함한 몇 해충을 선별하였습니다.
선별한 후 네이버, 다음, 구글, 빙 등 포털 사이트에 해당 벌레를 검색하여 이미지 데이터를 수집하였습니다.


좀 극혐이죠? ㅎㅎ
수집한다고 했는데 많이 수집하지는 못하고... 5 종류의 해충을 수집하였는데, 약 6200장 정도 밖에 수집하지 못했습니다.
딥러닝의 성능을 결정하는 요인 중 하나가 충분한 학습데이터인데, 그게 좀 부족해서 아쉽더라고요 ㅜㅜ
크롤링 코드는 다음 링크에 나와있으니 참고하실 분은 참고하세요.
2020/09/15 - [Python Programming/Using Packages] - [데이터 크롤링] 딥러닝 CNN에 유용한 이미지 크롤링 코드


(3) 이미지 데이터 전처리
이렇게 수집한 이미지가 생각보다는 깔끔하지 않습니다.
예를 들어 벌레의 일러스트 사진이 수집될 수도 있고, 해충인 만큼 에프킬라 등의 이미지가 수집될 수도 있습니다.
그리고 주변 배경이 너무 화려해서 벌레가 잘 인식되지 않을 수도 있기에, 벌레가 있는 부분만 잘라내는 것도 중요합니다.

따라서 수집된 이미지를 보면서 중복된 이미지나 잘못 수집된 이미지들을 걸러주고, 쓸 데 없는 부분이 많이 섞인 이미지는 벌레만 남도록 잘라주는 작업을 해줍니다.
이렇게 함으로써 학습 데이터의 질을 높일 수 있기 때문에 분류 성능을 조금이라도 더 개선시킬 수 있습니다.


(4) 딥러닝 CNN 알고리즘을 활용한 이미지 분류 모델링
이후 CNN 알고리즘을 이용해 이미지 분류 모델링을 하였습니다.

CNN 알고리즘합성곱 신경망(Convolution Neural Network)의 약어로, 기존 Multi-layered Neural Network가 갖고 있는 문제점을 해결하기 위한 방식으로 소개된 알고리즘입니다.
이미지 데이터에 탁월한 성능을 내는 이유는 다음과 같습니다.

이미지 데이터는 예를 들어 20x20 사이즈의 이미지라고 하면, 20x20 행렬의 형태로 나타낼 수 있습니다.
즉 400개의 픽셀로 이루어지고, 각 픽셀은 0부터 255까지의 값을 갖게 되는데요.
기존 Multi-layered Neural Network의 구조의 경우, 이 픽셀을 쭉 펼쳐서 400개의 Column으로 만듭니다.
여러 장의 20x20 이미지를 쭉 펼친다면 다음과 같은 형태라고 볼 수 있죠.

image

(1,1) 픽셀

(1,2) 픽셀

(1,3) 픽셀

...

(10,10) 픽셀

...

(20,19) 픽셀

(20,20) 픽셀

1번 image

20

3

56

 

127

 

231

18

2번 image

120

25

240

 

189

 

8

156

3번 image

78

112

19

 

166

 

97

178

이러한 형식의 단점은 이미지의 공간 정보를 고려하지 못합니다.
즉 이미지는 인접 픽셀 간 특징을 파악하는 것이 중요한데, 이럴 경우 이미지의 공간적 특징을 고려하지 못하고 단순히 이미지의 픽셀을 펼쳐놓기 때문에 분류 성능이 높을 수 없습니다.
그래서 이미지 분류는 통상적으로 CNN 알고리즘을 이용하여 공간 정보를 고려하게 하는데, 음... 지금이 CNN을 다루는 포스팅은 아니니 설명은 이쯤만 하도록 하죠.

그래서 최종적으로 ResNet 모델을 이용해 모델링을 하였습니다.
또한 image augmentation을 이용해 기존 이미지를 다양하게 변환하며 증식해주었습니다.

이를 통해 부족한 이미지임에도 불구하고 더욱 다채롭게 만듦으로써 이미지 분류의 성능을 높일 수 있습니다.
이미지가 회전하거나 좌우 반전됨으로써 픽셀의 위치가 바뀌기 때문에, 어떻게 보면 이미지가 증식된다고 할 수 있겠죠.
하지만 이것도 결국 특정 이미지에서 여러 이미지가 파생되는 것이기 때문에, 같은 이미지이긴 합니다.
그래서 오버피팅의 가능성이 있어요. 계속 같은 이미지를 적합시키는 꼴이 되니깐요.
따라서 이를 방지하기 위해 Dropout이나 Batch Normalization 등을 이용해줍니다.

모델링을 할 땐 Keras를 이용하여 layer를 구성했습니다.

나름 잘 분류하긴 했는데 높은 분류 정확도는 아니었습니다 ㅜㅜ개인적으로 이미지의 부족 문제가 컸다고 봅니다. 허허


(5) 위 과정을 바탕으로 한 창업 아이디어 제안
창업 아이디어는 구체적으로 다루기 좀 애매하긴 하네요.
핵심은 위 딥러닝 기반 이미지 판별 서비스를 바탕으로 해충 방역 플랫폼으로서 성장하기 위한 여러 플랜을 담았다고 보시면 됩니다.



결과적으로 예선을 통과하여 본선 온라인 PT를 잘 마쳤습니다.
운 좋게 장려상까지 수상할 수 있었고요.


제가 모델링을 하긴 했지만, 딥러닝 수업을 듣고 배운 걸 적용해보자는 마음으로 해본 거라 성능이 다소 아쉽긴 합니다ㅠㅠ
다음번엔 더욱 잘해봐야겠다는 생각을 했던 공모전이었습니다.


감사합니다.
잘 읽으셨다면 게시글 하단에 ♡(좋아요) 눌러주시면 감사하겠습니다 :)
(구독이면 더욱 좋습니다 ^_^)




- 간토끼(DataLabbit)
- University of Seoul
- Economics, Data Science

728x90

+ Recent posts