Tensorflow와 OpenCV를 활용한 자동 분리수거 함 B12 Tensorflow와 OpenCV를 활용한 자동 분리수거 함 김영훈, 김수현, 박윤아 (소프트웨어학과/cyclow팀)
Tensorflow와 OpenCV를 활용한 자동 분리수거 함 B12 Tensorflow와 OpenCV를 활용한 자동 분리수거 함 김영훈, 김수현, 박윤아 (소프트웨어학과/cyclow팀) Tensorflow와 OpenCV를 활용한 자동 분리수거 함 Automatic Recycle Bin using Tensorflow and OpenCV Recycle Bin Ⅰ.요약 OpenCV ▶ 인텔사의 오픈 소스 컴퓨터 비전 라이브러리 ▶ 이미지 프로세싱 중점의 라이브러리 ▶ Platform : Window, Linux, ect OpenCV와 Tensorflow를 접목시킨 자동 분리수거 함 OpenCV 그랩컷 알고리즘(GrabCut Algorithm) 그래프 컷을 기반으로 하는 이미지 세분화 방법 세그먼트 화 될 객체 주위의 사용자 지정 경계 상자에서 전경일 가능성이 있는 화소를 마크해 결과 영상을 생성함 정지 영상에서 전경 객체를 추출하기 원할 때 좋은 알고리즘 샤프닝(Sharpening) 영상을 선명하게 하거나 에지를 검출하는데 사용되는 마스크 기반 영상처리. Ⅱ.목적 정확하지 않은 분리 수거로 인해 추가적인 분리에 들어가는 인건비가 발생되는 것을 막기 위한 것이 본 프로젝트의 목적이다. 샤프닝(Sharpening)은 마스크의 중심 위치의 요소가 주변 요소와의 값 차이를 크게 만들면 된다. 또한 마스크 원소의 전체 합이 1이 되어야 입력 영상의 밝기 손실이 없어진다. Ⅲ. 핵심 기술 Tensorflow Raspberry Pi Deep Learning 인공신경망은 layer의 연결, 데이터 전파 방향이 일정하다. 신경막의 layer들은 최종 출력이 생성 될 때까지 데이터를 다음 layer에게 전달하는 과정을 반복하게 된다. Deep Learning은 인공신경망에서 발전된 인공 지능으로 뇌의 뉴런과 비슷한 정보 입출력 layer를 반복하여 데이터를 학습을 한다.이미지를 구별하는 Deep Learning은 주어진 사진이 어떤 label인지 확률 벡터에 근거하여 결과를 예측 한다. 그림. 뉴런의 구조와 인공 신경망에서 착안된 deep learing의 훈련 절차 01 라즈베리파이는 TCP서버 프로그램으로 통신하고 JVM에 pi4j 라이브러리를 사용하여 GPIO를 제어한다. 02 PC에서 처리한 데이터 값을 TCP서버 프로그램으로 통신 하여 라즈베리파이에 값을 전달한다 Ⅳ. 결과 Tensorflow 기계 학습에는 많은 라이브러리가 존재한다. 대표적으로는 Caffe, Torch, Theano, TensorFlow, Scikit-learn이 있다. 해당 capstone design에서는 google에서 open source 형태로 제공하는 Tensorflow를 선택하였다. TF-slim Row-level Tensorflow API를 간편하게 사용 할 수 있는 고수준의 경량 API로써, 모델을 정의.학습.평가하는 과정을 간소화한다. 특히 이미지 분류 task의 경우 fine-tuning 과정이 단순화 되어 있다. 해당 프로젝트에서는 TF-slim를 이용하여 output label을 3가지 분리수거 종류로 설정을 한 후 새로운 task를 model에 fine-tune을 하였다. 훈련된 model은 google사에서 만든 이미지 분류 model인 inception_v3를 사용 하였고 해당 model은 93.9%의 정확도를 갖고있다. 2,000여장의 사진들을 이용하여 inception_v3모델을 retraining을 하였다. 그 후, 200여장의 사진을 이용해서 100%의 정확도로 label을 구별하는 것을 확인하였다.