[번역] 일본의 오이 농가가 딥러닝과 TensorFlow를 사용하는 방법

by Philbert | 2016-12-16 19:07
tensorflow 기계학습 딥러닝 라즈베리파이 머신러닝

우리의 상상력만이 기계 학습 및 딥러닝의 활용사례를 제한한다는 것은 과장이 아닙니다. 약 1년 전 일본 자동차 산업의 임베디드 시스템 디자이너 마코토 코이케 (Kooto Koekke)씨는 부모의 오이 농장에서 도움을 받기 시작했으며 크기, 모양, 색상 및 기타 특성에 따라 오이를 분류하는 작업량에 놀라움을 금치 못했습니다. 

마코토의 아버지는 가시가 많은 오이를 매우 자랑스럽게 생각합니다. 예를 들어 신선하고 파삭파삭한 오이를 제공하기 위해 목숨을 바친 것입니다. 생생한 색상과 많은 얼룩 무늬가 있는 직선형과 두꺼운 오이는 프리미엄 등급으로 시장에서 훨씬 높은 가격을 쳐줍니다.

그러나 마코토는 오이 선별이 실제로 오이를 생산하는 것과 마찬가지로 어렵고 까다롭다는 것을 빨리 배웠습니다. "각각의 오이는 색깔, 모양, 품질 및 신선도가 다릅니다."라고 마코토는 말합니다.


마코토 농장의 오이, 소매점의 오이

일본에서는 농장마다 고유한 분류 기준이 있으며 업계 표준은 없습니다. 마코토의 농장에서 그들은 9가지 유형으로 분류하는데, 분류 작업은 모두 어머니가 등골이 부러질 때까지 직접합니다. 수확량이 많은 날에는 하루에 8시간이 걸립니다.

"분류 작업은 배우기가 쉽지 않은데, 크기와 두께뿐만 아니라 색상, 질감, 작은 흠집, 구부러진 지 여부, 가시가 있는지 여부 등을 살펴야 합니다. 분류 체계를 익히는데 여러 달이 걸리고, 가장 바쁜 시기에 아르바이트를 고용할 수 없습니다. 저도 최근에 겨우 오이를 분류하는 법을 배웠습니다. 젠장..ㅎㅎ "라고 마코토는 말합니다. 


왜곡되거나 비뚤어진 오이는 품질이 낮은 제품으로 평가됩니다.

물론, 시장에 일부 자동 분류기가 있지만, 성능 및 비용 측면에서 한계가 있으며 소규모 농장에서는 사용하기가 쉽지 않습니다.

마코토는 오이 선별이 오이 농가에는 필수적인 일이라고 생각하지는 않습니다. "농부들은 맛있는 채소 재배에 집중하고 그들의 시간을 소비하기를 원합니다. 저는 부모님들에게서 농장 사업을 맡기 전에 분류 작업을 자동화하고 싶었습니다."


마카오 코이케, 센터, 부모와 함께 오이 농장

딥러닝의 여러 가지 용도
마코토씨는 완전히 다른 사례에서 오이를 분류하는 기계 학습을 탐구하는 아이디어를 얻었습니다. Google AlphaGo는 세계 최고의 전문가 Go Player와 경쟁합니다.

마코토는 "Google의 AlphaGo를 보았을 때, 뭔가 장난아닌 일이 일어나고 있다는 것을 깨달았습니다. 그것은 제가 깊은 학습 기술로 오이선별기 개발을 시작하는 계기가 되었습니다. "라고 합니다.

이미지 인식에 대한 딥러닝을 사용하면 컴퓨터가 트레이닝 데이터셋에서 이미지의 중요한 "특징"을 학습할 수 있습니다. 수많은 인공 뉴런의 계층 구조를 사용하여 딥러닝은 이미지를 높은 정확도로 자동 분류할 수 있기 때문에 고양이의 다른 종이나 이미지의 자동차 또는 비행기 모델을 인식할 수 있습니다. 때로는 신경망이, 특수한 경우에 있어서, 인간이 가진 눈의 능력보다 뛰어날 수 있습니다. (더 자세한 정보는 TensorFlow Playground를 이용한 저의 블로그 포스트 Understanding neural networks를 참고하시길 바랍니다.)

TensorFlow로 딥러닝 파워의 민주화
하지만 컴퓨터가 정말로 마코토 어머니의 분류 기술을 배울 수 있을까요? 마코토는 Google의 오픈 소스 머신러닝 라이브러리인 TensorFlow로 오이를 선별하는데 딥러닝 기술을 활용할 수 있을지 알아보았습니다.

마코토는 "구글이 TensorFlow를 막 오픈소스화하는 바람에, 오이 이미지로 시험해보기 시작했습니다."리며 "이것은 기계 학습이나 딥러닝 기술을 사용해 본 첫 번째 시도이며 애초 기대했던 것보다 훨씬 더 높은 정확도를 얻게 되었죠. TensorFlow는 저의 문제를 해결할 수 있다는 자신감을 주었습니다 "라고 전했습니다.

TensorFlow를 사용하면 깊은 뉴럴 네트워크를 구현하는 데 필요한 고급 수학 모델 및 최적화 알고리즘에 대해 잘 알 필요가 없습니다. 샘플 코드를 다운로드하고 자습서를 읽으면 곧 시작할 수 있습니다. 이 라이브러리는 기계 학습을 위한 진입 장벽을 크게 낮추었으며, 지난 11월 Google이 오픈 소스 TensorFlow를 도입한 이래로 많은 "비ML" 엔지니어가 자체 데이터 세트 및 애플리케이션으로 이 기술을 사용하기 시작했습니다.

오이 선별 시스템 설계
다음은 마코토가 만든 오이 선별기 시스템 다이어그램입니다. 이 시스템은 라즈베리 파이3를 메인 컨트롤러로 사용하여 카메라로 오이의 이미지를 찍고 첫 번째 단계에서는 TensorFlow에서 소규모 뉴럴 네트워크를 실행하여 이미지가 오이인지 아닌지를 감지합니다. 그런 다음 이미지를 Linux 서버에서 실행되는 더 큰 TensorFlow 신경망으로 전달하여보다 상세한 분류를 수행합니다.


오이 선별기 시스템 다이어그램

마코토는 컨벌루션(convolution), 풀링(pooling) 및 최단 레이어(last layers)을 약간 수정하고 오이 이미지의 픽셀 포맷과 오이 클래스 수에 맞추기 위해 네트워크 설계를 변경한 샘플 TensorFlow 코드인 Deep MNIST for Expert를 사용했습니다.

다음은 7월에 생방송된 마코토의 오이 선별기입니다.



선별하는 팔과 카메라 인터페이스를 클로즈업한 사진입니다.






오이 분류기 영상입니다. 오이오이하네요.


딥러닝의 한계 뛰어넘기 

딥러닝의 현재 과제 중 하나는 많은 수의 교육 데이터 세트가 필요하다는 것입니다. 마코토는 모델을 훈련시키기 위해 어머니가 등이 휘도록 분류하신 오이 사진 7,000장을 찍는데 약 3개월을 보냈지만, 충분하지 않을 수 있습니다.


"테스트 이미지를 사용하여 유효성을 검사했을 때 인식 정확도가 95%를 초과했지만, 실제 사용 사례로 시스템을 적용하면 정확도가 약 70%로 떨어집니다. 뉴럴 네트워크에 오버피팅 이슈가 있는 것으로 의심됩니다. (오버피팅: 작은 트레이닝 세트에만 적합하도록 훈련된 뉴럴 네트워크 현상)"라고 마코토는 말합니다.


깊은 학습의 두 번째 과제는 많은 컴퓨팅 성능을 소비한다는 것입니다. 현재 분류기는 일반적인 Windows 데스크톱 PC를 사용하여 신경망 모델을 학습합니다. 오이 이미지를 80x80 픽셀의 저해상도 이미지로 변환하지만 7,000개의 이미지로 모델을 완성하는 데 2​~3일이 걸립니다.


"이 낮은 해상도의 이미지에서 시스템은 모양, 길이 및 왜곡 수준을 기준으로 오이를 분류할 수 있을 뿐입니다. 색, 질감, 긁힘 및 가시는 인식할 수 없습니다"라고 마코토씨는 설명합니다. 오이 이미지의 해상도를 높이면, 정확도가 훨씬 높아지지만, 트레이닝 시간도 크게 늘어납니다.


딥러닝을 향상하기 위해 일부 대기업에서는 대규모 분산 트레이닝을 시작했지만 이런 서버는 엄청난 비용이 듭니다. Google은 TensorFlow를 사용하여 수백 대의 클라우드 서버를 네트워크 트레이닝을 위해 제공하는 교육 및 예측을 위한 저비용 클라우드 플랫폼인 Cloud Machine Learning(클라우드 ML)을 제공합니다. Cloud ML을 통해 Google은 분산 교육을 위한 대규모 클러스터를 구축하고 개발자가 사용하는 만큼만 돈을 내기 때문에 개발자는 자본 투자 없이 쉽게 딥러닝을 시도할 수 있습니다.


이  서버는 AlphaGo 경기에서 사용되었습니다.


마코토는 간절히 클라우드 ML을 기다리고 있습니다. "클라우드 ML을 사용하여 훨씬 더 높은 해상도의 이미지와 더 많은 교육 데이터로 모델을 학습할 수 있을 것이며 신경망의 다양한 구성, 매개 변수 및 알고리즘을 변경하여 정확성을 향상시키는 방법을 시도해 볼 수 있을 것입니다. 얼른 해보고 싶어요. 더는 기다릴 수 없네요. 하하하"


댓글 0

머신러닝을 활용한 IoT 사례

[번역] 일본의 오이 농가가 딥러닝과 TensorFlow를 사용하는 방법

by Philbert

MADE BY

Philbert

プログラミング