• 검색 결과가 없습니다.

STEAM R&E 연구결과보고서

N/A
N/A
Protected

Academic year: 2022

Share "STEAM R&E 연구결과보고서"

Copied!
30
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

STEAM R&E 연구결과보고서

(동물의 모습만으로 정체를 알 수 있는 프로그램형 도감 만들기)

2016. 11. 30.

이리고등학교

(2)

< 연구 결과요약 >

과 제 명 동물의 모습만으로 정체를 알 수 있는 프로그램형 도감 만들기

연구목표

사람들이 쉽게 주변에서 발견될 수 있는 동물들을 구분할 수 있게 함으로써, 실생활에서 편리함을 느끼게 하고 동물에 대한 지식을 갖추게 하는 것이다. 바쁜 업무와 삭막한 도시 환경에서 많은 사람들이 자신 또는 자신의 아이의 정서적 교감의 대상으로 개와 같은 애완동물을 이용하고 있으며, 이러한 양상은 선진국의 추세를 따라 더욱 확대되고 있다.

개와 같은 애완동물들이 더욱 존중받아야 하며 동반자로 여겨지고 있기 때문에, 사람들이 종과 같은 이들에 대한 최소한의 지식 소양을 갖출 수 있도록 도움을 줄 것이다.

연구내용

(1) 정보 검색 및 연구 방법 탐색

○ 얼굴 인식 기술, 동물 얼굴 인식 사례, 프로그래밍 등의 인터넷 검색을 통해 연구 분야와 관련된 지식들을 학습함.

○ 얻은 지식을 종합하여 사람의 얼굴을 인식하는 프로그램을 만들고 프로그램의 학습 데이터로 개의 얼굴 사진을 넣는 것을 연구 방법으로 정함.

○ 얼굴을 구별해낼 때 쓰이는 주성분 분석법에 SIOX알고리즘이 쓰일 수 있다는 것을 알게 되어 사용하려했지만 이해를 하지 못해 다른 방안을 찾음.

○ 파이썬에서 실시간 컴퓨터 영상 프로그램 라이브러리인 OpenCV를 이용해 얼굴 인식 하는 방법이 있다는 것을 알게 되었고, 그에 관한 설명을 OpenCV 홈페이지에서 찾아 그대로 실행함. OpenCV를 이용한 파이썬 스크립트를 구동하여 얼굴을 인식시켜보았지만 실패하였고, 그 원인이 사람의 얼굴 예시 이미지들을 학습시키지 않았기 때문임을 알게 됨. 학습 방법을 OpenCV 홈페이지에서 찾았지만 이해를 하지 못해 다른 방안을 찾음.

○ 구글에서 발표한 머신러닝 오픈소스 라이브러리인 텐서플로를 이용하면 이미지 안의 물체를 분류해낼 수 있다는 것을 알게 되었고, 기존의 얼굴 인식 기술을 이용한 방법에서 이미지 분류 기술을 이용한 방법으로 연구방법을 바꿈.

(2) 텐서플로 이용 환경 구축

○ 텐서플로에 관한 인터넷 검색을 통해 텐서플로와 관련된 지식들을 학습함.

○ 텐서플로를 설치하고 사용하기 위해 파이썬, 도커를 설치해야한다는 것을 알게 되었음.

○ 도커가 32bit 컴퓨터에 설치되지 않는다는 것을 알게 되어 컴퓨터를 64bit로 바꿈.

○ 도커를 설치하는 과정에서 오류가 연속적으로 발생했고, 우분투 운영체제를 이용하며 도커를 간단히 설치할 수 있다는 것을 알게 되어 운영체제를 우분투로 바꿈.

○ 파이썬과 도커, 텐서플로를 설치하였고 사용 환경을 설정함.

(3) 이미지 수집

○ 동물 전체를 연구할 경우 과도한 이미지와 학습 시간이 필요한 것을 알게 되어, 연구 범위를 개로 축소함.

○ 닥스훈트, 도베르만 핀셔, 말티즈, 복서, 불독, 비숑 프리제, 시츄, 요크셔테리어, 웰시코 기, 차우차우, 치와와, 포메라니안, 푸들로 연구 대상을 선정하였고, 각 종의 사진을 앞모습 100장, 옆모습 100장, 윗모습 50장, 뒷모습 50장씩 총 300장을 구글에서 수집함.

○ 각 종별로 부족한 사진으로 조사한 후 애견 카페에 가서 직접 촬영함.

(3)

연구내용

(4) 우분투 스크립트 제작 및 학습

○ 텐서플로를 이용한 우분투 이미지 분류 스크립트 제작 과정을 인터넷 검색을 통해 학습함.

○ 스크립트를 그대로 작성하면서 발생하는 오류를 전문가, 웹상의 아마추어들과 교류하 여 해결하였고, 작성된 스크립트를 통해 분류자가 만들어짐.

○ 수집한 이미지들을 분류자에게 1회 학습시킴.

○ 학습시키지 않은 포메라니안 사진을 인식시켜 분류자가 제대로 인식하는 것을 확인함.

(5) 연구 1 : 얼굴이 잘 나온 사진의 인식 정확도를 높이는 과정

○ 학습시키지 않은 포메라니안 사진을 인식시켜 인식 정확도를 측정함.

○ 분류자에게 이미지 데이터를 1회 반복학습 시킨 후, 똑같은 포메라니안 사진을 인식시 켜 인식 정확도를 측정함. 이와 같은 과정을 2번 더 반복하여 인식 정확도를 비교함.

○ 차우차우, 요크셔테리어, 비숑 프리제 사진으로 똑같은 과정을 반복함.

○ 연구를 통해 얻은 결과를 정리하고, 인식 정확도를 통계하여 표로 만듦.

(6) 연구 2 : 얼굴이 잘 나오지 않은 사진의 인식 정확도를 높이는 과정

○ 학습시키지 않은 말티즈 뒷모습 사진을 인식시켜 인식 정확도를 측정함.

○ 분류자에게 이미지 데이터를 1회 반복학습 시킨 후, 똑같은 말티즈 사진을 인식시켜 인식 정확도를 측정함. 이와 같은 과정을 2번 더 반복하여 인식 정확도를 비교함.

○ 웰시코기, 복서 사진으로 똑같은 과정을 반복함.

○ 연구를 통해 얻은 결과를 정리하고, 인식 정확도를 통계하여 표로 만듦.

● 닥스훈트, 웰시코기, 복서의 윗모습 사진으로 똑같은 과정을 반복함.

● 비숑 프리제, 닥스훈트, 웰시코기, 복서 옆모습 사진으로 똑같은 과정을 반복함.

(7) 연구 3 : 교배견 사진의 인식 정확도를 높이는 과정

○ 학습시킨 말티푸(말티즈-푸들 교배견) 사진을 인식시켜 인식 정확도를 측정함.

○ 분류자에게 이미지 데이터를 1회 반복학습 시킨 후, 똑같은 말티즈 사진을 인식시켜 인식 정확도를 측정함. 이와 같은 과정을 2번 더 반복하여 인식 정확도를 비교함.

○ 연구를 통해 얻은 결과를 정리하고, 인식 정확도를 통계하여 표로 만듦.

● 학습시키지 않은 요라니안(요크셔테리어-포메라니안 교배견) 사진을 인식시켜 인식 정확도를 측정함.

○ 인식 결과로 교배견의 아버지와 어머니의 종이 높은 점수를 받았는지 확인함.

연구 성과

○ 우분투, 파이썬, 도커, 텐서플로를 이용하여 개의 종 분류자를 만들 수 있음.

○ 분류자를 통해 앞모습뿐만 아니라 뒷모습, 윗모습, 옆모습과 같은 다양한 각도에서 찍힌 개의 사진에서도 종을 분류할 수 있음.

○ 분류자에게 기존에 학습된 이미지를 반복학습시켜 인식 정확도를 높일 수 있음.

○ 분류자에게 새로운 이미지를 반복학습시켜 인식 정확도를 높일 수 있음.

○ 분류자에게 교배견 이미지를 반복학습시켜 교배견의 사진에서 교배견과 부모의 종을 구별할 수 있음.

○ 분류자에게 학습시키지 않은 교배견 사진을 인식시켜 나오는 결과 값에서 부모의 종을 추측해낼 수 있음.

주요어

(Key words) 패턴인식, 인공지능, 텐서플로, 파이썬 프로그램, 도커

(4)

< 연구 결과보고서 >

1. 개요

□ 연구목적

○ 연구동기

- 팀원들이 봄방학에 지역 주택가에서 연탄 나눔 봉사활동을 하면서 개 한 마리를 보았다.

팀원들은 그 개가 진돗개냐 풍산개냐에 대해 의견을 주고받았지만, 서로가 정확하지 않은 주워들은 지식만으로 판단하였기 때문에 쉽사리 해답이 나지 않았다. 그 개를 사진으로 찍어서 인터넷에 나와 있는 내용과 비교를 하였으나, 특정한 종으로 구분 짓기가 애매하여서 한 인터넷 페이지에 질문해보았다. 질문 답변자들도 정확히 구분 짓기를 어려워하였고, 결국 그 개가 교배견인 것으로 결론을 내렸다. 그 후 한 팀원이 자신의 스마트폰에 저장되어있는 사진에서 작게 찍혀 있는 개의 정면이 스마트폰의 얼굴 인식 기능에 의해 얼굴로 인식된 것을 보고, 이와 비슷하게 동물의 외관을 보고 종을 인식하는 프로그램을 만들면 팀원들이 개의 종을 놓고 입씨름했던 그런 경험이 쉽게 해결될 것이라고 생각하여 연구를 시작하였다. 즉, 우리의 일상에서 발생할 수 있는 문제들을 해결할 수 있는 연구가 더욱 와 닿고 실용적이라 고 생각하여 이 연구를 선택하였다.

○ 연구목적

- 사람들이 쉽게 주변에서 발견될 수 있는 동물들을 구분할 수 있게 함으로써, 실생활에서 편리함을 느끼게 하고 동물에 대한 지식을 갖추게 하는 것이다. 바쁜 업무와 삭막한 도시 환경에서 많은 사람들이 자신 또는 자신의 아이의 정서적 교감의 대상으로 개와 같은 애완동 물을 이용하고 있으며, 이러한 양상은 선진국의 추세를 따라 더욱 확대되고 있다. 개와 같은 애완동물들이 더욱 존중받아야 하며 동반자로 여기지고 있기 때문에, 사람들이 종과 같은 이들에 대한 최소한의 지식 소양을 갖출 수 있도록 도움을 줄 것이다.

□ 연구범위 및 연구 일정

○ 연구범위

- 연구 계획을 구성할 당시에는 포유류, 조류, 파충류 등 다양한 동물들을 연구 범위에 포함시킬 계획이었다. 그러나 연구를 진행하면서 다양한 동물들을 분류하는 프로그램을 만드는 것이 매우 어렵다는 것을 알게 되었고, 연구 범위를 개로 축소하였다.

(5)

○ 연구 일정

5월 정보 검색 및 연구 방법 탐색

6월 파이썬과 OpenCV를 이용한 얼굴 인식 연구 7월 새로운 연구 방법 탬색 및 텐서플로 원리 파악 8월 텐서플로 이용환경 구축

9월 이미지 수집 및 우분투 분류 스크립트 제작 10월 연구 1, 연구 2 진행

11월 연구 3 진행 및 발표 준비

○ 연구 진행 단계

(1) 정보 검색 및 연구 방법 탐색 (2) 텐서플로 이용 환경 구축 (3) 이미지 수집

(4) 우분투 스크립트 제작 및 학습

(5) 연구 1 : 얼굴이 잘 나온 사진의 인식 정확도를 높이는 과정

(6) 연구 2 : 얼굴이 잘 나오지 않은 사진의 인식 정확도를 높이는 과정 (7) 연구 3 : 교배견 사진의 인식 정확도를 높이는 과정

(6)

2. 연구 수행 내용

□ 이론적 배경 및 선행 연구

○ 선행 연구

- Kaz Sato(2016), How a Japanese cucumber farmer is using deep learning and TensorFolw(제목), Google Cloud Flatform(출처),

일본 농부가 오이를 분류하기 위하여 텐서플로를 사용한 기사이다. 라즈베리파이-3과 카메라, 분류기계로 구성된 외부 장치와 딥러닝을 통해 학습하는 소프트웨어(:분류자)로 분류 과정을 실행한다. 농부는 텐서플로를 이용하는 딥러닝을 통해 분류자에 오이를 크기별로 데이터 이미지를 넣어 학습시켰다. 오이를 분류하는 과정에서, 오이가 컨베이어 벨트를 타고 카메라 인식되면, 컴퓨터에서 오이를 구분해내고 라즈베리파이를 통해 결과값이 전해져, 결과값에 맞게 분류 기계가 구동되어 오이를 분류한다. 농부는 이 연구의 한계점으로, 매우 많은 데이터 이미지가 필요하며 그것을 위해서는 많은 시간과 전력이 소비되는 것을 꼽았다.

- Justin Francis(2016), Dive into Tensorflow with Linux(제목), Building a fast, accurate image classifier on the cheap.(부제), Oreilly(출처),

필자는 송골매, 독수리, 대머리 독수리, 검독수리, 황금독수리의 새 5종을 텐서플로를 통해 분류하였다. 데이터 이미지는 페이스북 페이지 및 인터넷 검색을 통해 수집하였고, 다양한 환경과 각도에서 찍은 사진들을 각각 100장씩 학습시켰다. 추가적으로, 100장 중 10장은 새의 청소년 때의 사진으로 제공하여, 청소년 조류와 성숙한 조류 사이의 유사성을 텐서플로 가 찾을 수 있는지 또한 실험하였다. 그 결과로 텐서플로는 청소년 조류와 성숙한 조류 사이의 유사성을 어느 정도 찾아낼 수 있었고, 또한 새 5종도 어느 정도 분류할 수 있었다.

그러나 그 분류 정확도가 매우 높지는 않다는 면에서, 필자는 텐서플로의 수준이 조류 학자 수준을 넘지 못한다고 판단하였다.

○ 이론적 배경 (1) 우분투(Ubuntu)

- 리눅스 커널을 기반으로 한 리눅스 배포판 가운데 하나로 운영체제이다. 데비안(;운영체 제)으로부터 이어받은 APT(:Advanced Packaging Tools)를 이어받은 APT를 통해 소프트웨 어의 설치·관리·제거를 쉽게 할 수 있기 때문에 컴퓨터 자체를 처음 접하는 이들에게도 유용하다. 즉, 우분투는 쉽고 편하게 사용할 수 있는 운영체제를 목표로 잡고 있기 때문에 복잡한 인스톨 과정이나 커맨드라인 명령어 같은 것들을 전혀 몰라도 사용하는데 지장이 없다. 또한, 프로그램 개발에도 적합하여 많은 프로그램 개발자들이 선택하였으며, 알파고 또한 우분투 운영체제에서 실행된다고 한다. 이러한 특징들이 본 팀의 연구에 적합하다고 판단하여 우분투로 연구를 진행하였다.

(2) 파이썬(Python)

- 파이썬은 고급 프로그래밍 언어로, 플랫폼 독립적이며 인터프리터식, 객체지향적, 동적 타이핑 대화형 언어이다. 파이썬은 원래 교육용으로 설계되어있기 때문에 읽기 쉽고, 간단하

(7)

고 효율적인 코드를 추구하는 많은 사람들에게 쓰이고 있다. 문법이 매우 쉬워서 초보자들이 처음 프로그래밍을 배울 때 추천되는 언어이며 높은 생산성을 가지고 있다. 이러한 특징들이 본 팀의 연구에 적합하다고 판단하여 파이썬으로 연구를 진행하였다.

(3) 도커(Docker)

- 도커의 사전적 정의는 ‘이동 가능한 경량화된 가상화 기반의 운영체제’이다. 리눅스 기반의 컨테이너를 생성하고 배포하는 작업 상당부분을 자동화하는 패키지 툴로 통한다. 도커는 한마디로 컨테이너 응용프로그램의 배포를 자동화하는 오픈소스 엔진이다.

- 베이스 이미지와 도커 이미지

베이스 이미지란, 리눅스 배포판의 커널 영역을 제외한 사용자 공간/영역(유저랜드)만을 이미지에 포함한 파일을 의미한다. 이때 사용자공간/영역(유저랜드)란, 커널 공간/영역과 관련된 것들을 제외한 부팅시 필요한 몇몇 실행파일과 라이브러리, 그리고 패키징 시스템과 같은 것들을 포괄해서 부르는 명칭이다. 유저랜드에 각 리눅스 배포판의 특징이 고스란히 있어서 각 배포판 고유의 패키징 툴도 그대로 활용할 수 있다. 이 베이스 이미지는 변형되거나 뭔가가 추가 설치될 수 있는데 이렇게 해서 변형된 이미지를 도커 이미지라 부른다.

- 컨테이너

도커 이미지가 나누어져 저장될 수 있는 공간이다. 도커 이미지가 실행되는 근원이기도 하다.

(4) 텐서플로(TensorFlow)

- 텐서플로는 딥러닝과 머신러닝을 위해 구글에서 만든 오픈소스 라이브러리이다. 텐서플 로에서는 인공 뉴런 신경망이 사용되는데, 이것은 인간의 뉴런의 구조와 유사하여 딥러닝을 가능하게 한다. 텐서플로는 리눅스 상에서 도커(가상적인 공간)에서 실행되고, 도커 이미지에 입력된 파일들을 소스로 인식하여 분류자를 만든다. 도커 이미지에는 데이터 이미지나 학습 코드, 인셉션 파일이 들어간다. 데이터 이미지는 사용자가 직접 수집하여 넣어준 사진들이고, 학습코드는 텐서플로 측에서 제공하는 알고리즘이다. 그리고 인셉션은 구글에 있는 방대한 이미지들을 미리 학습시킨 파일이다. 인셉션은 텐서플로의 분류자는 훨씬 정확한 인식을 가능하게 한다.

□ 연구주제의 선정

○ 연구주제의 선정 과정에서 학생의 주도적 노력

- 현재의 주제가 연구 주제로 제시되었을 때 연구가 성립될 수 있는지 간단한 실험을 하였었다. 개의 정면사진을 수집하여 모니터에 창으로 띄운 채로 스마트폰 사진을 찍어 얼굴로 인식되는지 확인하는 실험이었고, 개의 종과 얼굴의 가려진 정도 등을 변인으로 하여 여러 번 수행하였다. 그 결과로 개의 얼굴이 정면에서 가려지지 않고 이목구비가 잘 구별될 때 얼굴로 인식될 수 있다는 것을 알아내었다. 또한 인터넷 검색을 통해 동물의 얼굴을 인식하여 실종 애완동물을 찾는 앱이나 자동 먹이 배급 기계가 존재한다는 것을

(8)

알아내었다. 이러한 과정을 통해 현제의 주제를 연구 주제로 선정하였다.

□ 연구 방법

○ 인터넷 정보 검색

- 연구의 전반적인 과정을 인터넷 검색을 통해 얻은 정보와 자료로 진행하였다. 연구에 필요한 지식이 아예 없었기 때문에, 인터넷 검색을 통해 연구 방법이나 연구에 필요한 프로그 램 등에 대한 정보들을 습득하였고, 그것을 토대로 한 단계씩 진행해나갔다. 구글의 방대한 정보를 통해 연구 도중 발생하는 다양한 경우의 문제들을 각각 해결할 수 있었고, 그마저 불가능한 문제는 전문가 자문을 통해 해결하였다.

○ 전문가 자문

- 원광대학교 소프트웨어공학과 한성국 교수님과 메일, 대면을 통해 연구의 총체적인 내용을 교류하였다. 그 결과로 교수님께서 연구가 나아가야할 방향과 연구에 보완해야할 점을 제시해주셨다. 또한 교수님께서 연구 분야에 대한 깊은 지식은 가지고 계시지 않으셨기 때문에, 이 분야에 탁월한 다른 전문가를 소개해주셨다. 하지만 다른 전문가과의 연결은 제대로 이루어지지 않았다.

- 본 팀은 연구 분야에 전문적인 지식을 갖고 있는 전 세계의 아마추어 프로그래머들에게 접촉하였다. 연구에 필요한 정보를 조사하면서 알게 된 ‘Github’나 ‘Overstack’ 같은 해외 프로그래밍 사이트에, 인터넷 검색만으로 해결할 수 없는 본 팀만이 직면한 특수한 상황의 문제들을 올려 조언을 받았다. 마찬가지로 Youtube에 프로그래밍 관련 동영상을 올린 유튜버 들에게 질문들을 하여 조언을 받았다.

□ 연구 활동 및 과정

○ 연구 활동

(1) 정보 검색 및 연구 방법 탐색 - 정보 검색

연구 초반에는 프로그래밍에 관해 정보가 없었기 때문에, Naver, Google에서의 정보 검색을 통해 연구가 나아가야할 방향이나 연구가 사용해야할 매체를 찾아야 했다. 어떤 것이 본 팀에게 적합한지를 모르는 상황에서 무엇이든 괜찮다고 생각이 들면 따라해 보며 연습하였 다.

- 연구 방법 탐색

얼굴을 구별해낼 때 쓰이는 주성분 분석법에 SIOX알고리즘이 쓰일 수 있다는 것을 알게 되어 사용하려했지만 이해를 하지 못해 다른 방안을 찾았다.

파이썬에서 실시간 컴퓨터 영상 프로그램 라이브러리인 OpenCV를 이용해 얼굴 인식하는 방법이 있다는 것을 알게 되었고, 그에 관한 설명을 OpenCV 홈페이지에서 찾아 그대로 실행하였다.

(9)

OpenCV를 이용해 얼굴 인식 파이썬 스크립트를 제작하였다.

① 데이터 입력

cascade 장치를 통해 정면 얼굴과 눈 인식 데이터를 사용하였다. 각각의 데이터들은 수만 코드로 설계되어 있기 때문에, 본 팀은 널리 공유되어 있는 파일을 사용하였다.

② 사진 설정

입력될 사진으로 ‘face_sample.jpg’를 설정하였다.

③ 사진 흑화 처리

파이썬 코드가 따로 사진을 흑백사진으로 만들도록 ‘gray’ 명령을 하였다. cascade 장치를 통해 얼굴 인식을 하는 경우, 칼라사진보다는 흑백사진이 더욱 인식 정확도가 높기 때문이다.

④ 얼굴 구분

얼굴 인식을 한 후 얼굴과 눈을 직사각형으로 표현하도록 코드를 통해 설정하였다.

⑤ 인식 결과 창 생성

‘face detection test’라는 창을 띄워 얼굴 인식 결과를 보여주도록 설정하였다.

(10)

‘Lionel Messi’의 정면사진이 인식할 사진이었고, 스크립트 의 구동 결과로 아무것도 인식되지 않았다.

얼굴 인식 실패의 원인으로 이미지의 흑화 처리가 잘 수행되지 않았을 것이라 생각하고, 미리 이미지를 흑화 한 후 입력시켜 알고리즘을 구동하였지만 실패하였다.

(11)

얼굴 인식 실패의 원인으로 이미지의 흑화 처리가 잘 수행되지 않았을 것이라 생각하고, 미리 이미지를 흑화한 후 입력시켜 알고리즘을 구동하였지만 실패하였다.

문제를 해결하기 위해 OpenCV 공식 홈페이지를 탐색하던 중, 얼굴 인식을 하기 위해서는 해당 알고리즘 파일을 학습시켜야한다는 것을 알게 되었다. 파이썬과 OpenCV에서 학습시키 는 방법을 찾았지만 난이도가 너무 높아 진행방향을 변경하게 되었다.

이 당시까지는 사람의 얼굴을 인식해내는 알고리즘에 개의 얼굴들을 학습시켜 얼굴만을 분류 기준으로 설정하여 분류할 계획이었다. 이에 알맞게, 본 팀이 이용하려했던 파이썬과 OpenCV는 주성분 분석법을 이용해 얼굴을 인식해낸다. 즉, 여러 번의 학습을 통해 눈과 코가 무엇인지를 학습하고, 눈과 코가 있는지를 찾으면서 얼굴을 인식해낸다는 것이다.

OpenCV를 대체하기 위한 수단을 찾던 도중, 구글에서 배포한 딥러닝 프로그램 텐서플로를 발견하였고, 이를 연구 진행 수단으로 선택하였다. 텐서플로는 OpenCV와는 차이가 있다.

OpenCV가 주어진 이미지에 얼굴이 있는지 없는지를 판단하고 그것이 누구의 얼굴인지를 판단한다면, 이에 반해 텐서플로는 이미지를 픽셀·형체·명암·색깔 단위로 학습하여, 그 이미 지 자체가 어떤 부류의 이미지와 비슷하였는지를 통해 판단한다. 이미지 인식 정확도가 훨씬 높고, 학습이 쉽다는 측면에서 텐서플로를 사용하는 것을 확정하였다.

(2) 환경 구축

전체 시스템 구성도

(12)

- 우분투 설치

우분투 설치에는 여러 가지 방법이 있다. 첫 번째는 우분투를 CD에 구워 설치함으로써 컴퓨터의 운영체제를 아예 우분투로 바꾸는 것이다. 두 번째는 마찬가지로 우분투를 CD에 구워 설치하지만 이전 운영체제인 윈도우를 지우지 않도록 설정하여 컴퓨터 부팅 시 실행할 운영체제를 선택할 수 있는 듀얼 부팅 방법이다. 세 번째는 현재 운영체제인 윈도우에 가상 머신 소프트웨어인 ‘VirtualBox’를 설치하여, 윈도우에 가상 환경을 생성하고 그 안에 우분투 를 실행시키는 방법이다. 본 팀은 가장 간단한 첫 번째 방법을 이용하여 우분투를 설치하였다.

우분투를 설치하는 과정은 상당히 간단하였지만, 그 후 윈도우 사용자였던 팀원들이 우분투 에 익숙해지기 위해, 환경 구축을 하는 과정이 필요했다. 한글 언어를 설치하고 네트워크를 설정하는 추가적인 과정을 통해 우분투 설치를 완료하였다.

- 파이썬 설치

우분투에는 자동적으로 파이썬이 설치되어있었다. 파이썬을 이용하기 위해서는 ‘라이브러 리’들이 필요한데, 연구를 진행하면서 필요할 때마다 구글 검색을 통해 코드를 찾아내어 입력함으로써 필요한 ‘라이브러리’들을 설치할 수 있었다.

- 도커 설치

도커는 운영체제별로 설치 과정이 달랐고, 도커 공식 홈페이지에 나와 있는 과정을 통해 도커를 설치할 수 있었다. 설치 과정에서 많은 에러에 부딪혔지만, 해외의 아마추어 프로그래 머들과의 소통을 통해 일부 해결할 수 있었고, 그 후 도커 설치를 완료하였다.

- 텐서플로 설치

텐서플로 설치에는 여러 가지 방법이 있고, 본 팀은 도커를 이용한 텐서플로 설치 방법을 이용하였다. 텐서플로 구성 파일들을 도커 이미지에 입력하고, 도커 이미지를 통해 텐서플로 를 실행하는 방법이다. 텐서플로 공식 홈페이지에 나와 있는 과정을 통해 텐서플로를 설치할 수 있었다.

(3) 이미지 수집 및 학습 - 이미지 수집

닥스훈트, 도베르만 핀셔, 말티즈, 복서, 불독, 비숑 프리제, 시츄, 요크셔테리어, 웰시코기, 차우차우, 치와와, 포메라니안, 푸들로 개 13종을 연구 대상으로 선택하였고, 각 종의 데이터 이미지를 300~500장을 구글에서 수집하였다. 얼굴 확대 사진 100장, 앞모습 사진 75장, 옆모습 사진 75장, 뒷모습 사진 50장을 기준으로 하여, 최대한 다양하게 이미지를 수집하여 인식 정확도를 높일 수 있게 하였다. 또한, 구글에서 찾기 힘든 사진들은 애견카페에 가서 직접 찍음으로써 확보하였다.

- 이미지 학습

(13)

수집한 이미지들을 종(:라벨)별로 분류하여 폴더 안에 저장하였다.

텐서플로의 분류자(:Classifier)는 도커 이미지 내에서 실행된다. 도커 이미지에는 분류 자가 분류할 개의 이미지 데이터가 저장되어있지 않기 때문에, 도커 이미지를 실행시 켜 가상적으로 이미지 데이터를 연결시켰다.

도커 이미지에 추가적으로 이미지를 학습시킬 트레이닝 코드를 불러왔다.

여러 가지 트레이닝 코드가 도커 이미지에 띄워지고 있다.

(14)

불러온 트레이닝 코드를 이용해 넣어준 이미지를 학습시켰다.

이미지 학습 내역을 기록하여 다음 학습 때 학습 속도를 빠르게 해주는 bottleneck 파일이 생성되고 있다.

이미지를 분류자(:Classifier)가 학습하고 있는 과정이다. 학습 방법은 단순 히 한 이미지에 대해 어떠한 종(:Label)인지를 분류하는 것이 아니라, 2개 의 이미지를 선택하여 각각을 분류하는 것이다. 즉, 2개의 사진 사이에서 구별해내는 능력을 기르는 것이다. 본 팀이 수집한 이미지를 통한 학습의 결과로 수치화된 인식 정확도는 99%이다.

(15)

구글의 방대한 이미지들을 라벨별로 분류 하여 학습시킨 인셉션 파일이 담겨있는 파 이썬 파일이다. 이 코드는 직접 만든 것이 아니라 텐서플로 측에서 제공한 코드이다.

인셉션 파일이 담겨있는 파이썬 파일을 도커 이미지에 띄우는 과정이다. 이 과정을 통해 본 팀의 분류자(:Classifier)가 개 사진을 비롯하여 더욱 방대한 사진 데이터에 대한 분류 정보를 얻을 수 있다.

카페에서 직접 찍은 포메라니안의 사진을 인식시킨 결과이다. 그 결과 로 포메라니안이 95.6%, 치와와가 1%, 나머지 11종이 3%의 점수로 분 류되었다. 치와와가 포메라니안과 비슷하게 생겼기 때문에 2순위로 선 택된 것이다. 분류자(:Classifier)가 어느 정도 완성되었다.

(16)

(4) 얼굴이 잘 나온 사진의 인식 정확도를 높이는 과정 - 기존에 학습된 이미지의 반복학습

앞에서 인식하였던 포메라니안의 인식 정확도를 높이기 위해 본 팀이 구글에서 수집하여 저장해놓은 이미지들을 반복학습 시켰다.

첫 번째 반복학습 과정이다.

첫 번째 반복학습 과정 후 같은 포메라니안 사진을 인식한 결 과이다. 1순위 포메라니안의 점수가 기존 95.6%에서 98.4%로 증가한 것을 알 수 있다.

(17)

두 번째 반복학습 과정이다.

두 번째 반복학습 과정 후 같은 포메라니안 사진을 인식한 결과이다. 1순위 포메라니안의 점수가 기존 98.4%에서 98.5%로 증가한 것을 알 수 있다.

이외에도 다양한 사진으로 인식을 시켜보았고, 반복학습을 통해 인식 정확도가 차츰 올라가 며 100%에 가까워질수록 올라가는 정도가 작아지는 것을 확인할 수 있었다.

(18)

종 차우차우 요크셔테리어 비숑 프리제

인 식 시 킨 사 진

1 차 인 식 결 과

2 차 인 식 결 과

3 차 인 식 결 과 결

과 88.3 → 96.6 → 96.8 (%) 85.3 → 96.44 → 96.49 (%) 54.2 → 76.9 → 79.0 (%)

앞모습 결과표

(19)

(5) 얼굴이 잘 나오지 않은 사진의 인식 정확도를 높이는 과정 - 다양한 각도에서 찍은 이미지 데이터를 제공 후 반복학습

효과적인 분류자는 얼굴이 잘 나오지 않은 사진 또한 정확히 인식할 수 있어야하기 때문에, 말티즈의 뒷모습 사진을 인식시키는 실험을 진행하였다.

카페에서 직접 찍은 말티즈의 뒷모습 사진을 인식시킨 결과 이다. 그 결과로 비숑 프리제가 32.3%, 말티즈가 25.0%, 나머 지 11종이 44%의 점수로 분류되었다. 비숑 프리제와 전혀 닮지 않은 말티즈의 뒷모습이 비숑 프리제로 인식된 것이다.

말티즈의 뒷모습 사진 인식 정확도를 높이기 위해 카페에 서 찍은 여러 개의 옆모습, 뒷모습, 윗모습 등 다양한 각도 의 개 사진들을 학습시켰다.

(20)

학습 과정 후 같은 말티즈 뒷모습 사진을 인식한 결과이다. 2순위였던 말티즈가 1순위로 올라갔을 뿐만 아니라, 말티즈 의 점수가 기존 25.0%에서 82.4%로 증가하였다. 한 번의 학 습만으로 정확도가 대폭 상승한 것을 보아, 기존에 학습시 킨 이미지 데이터에 말티즈의 뒷모습과 같은 다양한 각도의 사진 데이터가 부족했던 것을 알 수 있었다.

한 번 반복학습을 시킨 후 같은 말티즈 뒷모습 사진을 인식 한 결과이다. 1순위 말티즈의 점수가 기존 82.4%에서 82.5%

로 소폭 증가한 것을 알 수 있다. 정확도가 최고 82.5%정도 에서 머무르는 것을 보아 분류자가 개를 인식하는 과정에서 개의 얼굴이 뒷모습, 옆모습, 윗모습보다 더욱 중요한 분류 기준이 되는 것을 알 수 있다.

(21)

종 복서 웰시코기

인 식 시 킨 사 진

1 차 인 식 결 과

2 차 인 식 결 과

3 차 인 식 결 과 결

과 18.7 → 28.1 → 32.3 (%) 77.6 → 90.5 → 92.4 (%)

뒷모습 결과표

(22)

얼굴이 조금 나온 닥스훈트의 윗모습 사진을 인식시킨 결과이다. 왼쪽은 다양한 각도의 데이터 이미지들을 넣기 전의 값이고 오른쪽은 후의 값이다. 닥스훈트가 1순위로 80.2%에서 93.5로 증가한 것을 알 수 있다. 얼굴이 나왔기 때문에 말티즈의 뒷모습에 비해 기본 정확도가 훨씬 높고, 학습 후 인식 시킨 결과의 정확도 더욱 높게 올라간 것을 알 수 있다.

이외에도 다양한 옆모습, 뒷모습, 윗모습 사진으로 인식을 시켜보았고, 데이터 사진 추가와 반복학습을 통해 인식 정확도가 올라감을 확인하였다.

(23)

종 복서 웰시코기

인 식 시 킨 사 진

1 차 인 식 결 과

2 차 인 식 결 과

3 차 인 식 결 과 결

과 24.3 → 34.9 → 36.8 (%) 92.9 → 98.2 → 98.5 (%)

윗모습 결과표

(24)

종 닥스훈트 웰시코기 복서

인 식 시 킨 사 진

1 차 인 식 결 과

2 차 인 식 결 과

3 차 인 식 결 과 결

과 78.1 → 91.1 → 91.4 (%) 89.1 → 96.6 → 97.2 (%) 89.4 → 97.4 → 97.8 (%)

앞모습 결과표

(25)

(6) 교배견 사진의 인식 정확도를 높이는 과정 - 교배견 이미지 데이터를 제공 후 반복학습

효과적인 분류자는 교배견의 사진 또한 정확히 인식할 수 있어야하기 때문에, 말티즈-푸들 교배견의 사진을 인식시키는 실험을 진행하였다.

구글에서 수집한 말티즈-푸들 교배견 사진을 인식시킨 결과이다. 그 결과 로 말티즈-푸들이 56.0%, 비숑 프리제가 22.9%, 말티즈가 11.7%, 푸들이 3.7%, 나머지 10종이 5%의 점수로 분류되었다. 말티즈-푸들이 가장 높게 나왔고, 비슷하게 생긴 비숑 프리제와 교배의 대상이었던 말티즈와 푸들 이 차례로 높게 나왔다.

말티즈-푸들의 사진을 100장을 수집하여 학습시켰다.

(26)

학습 과정 후 같은 말티즈-푸들 교배견 사진을 인식한 결과이다. 1순위 말티즈- 푸들 교배견의 점수가 기존 56.0%에서 59.2%로 증가한 것을 제외하면, 눈에 띄는 변화가 보이지 않는다.

한 번 반복학습을 시킨 후 같은 말티즈-푸들 교배견 사진을 인식한 결과이다.

1순위 말티즈-푸들 교배견의 점수가 기존 59.2%에서 91.0%로 대폭 증가한 것을 알 수 있다. 교배견의 경우에도 원래의 교배견과도 명확히 구분할 수 있다는 것을 확인하였다.

(27)

- 교배견 이미지 데이터를 제공 하지 않은 후 인식 결과 확인 포메라니안-요크셔테리어

교배견 결과

포메라니안 61.2 (%) 요크셔테리어 37.0 (%) 교배견을 인식시켰을 때 부모의 종이 높은 점수를 받는다는 것을 알 수 있다.

웰시코기-닥스훈트 교배견 결과

웰시코기 98.9 → 94.5 → 90.7 (%) 닥스훈트 0.47 → 2.0 → 2.1 (%)

반복학습을 진행할수록 사진에서 웰시코기 뿐만 아니라 닥스훈트의 특징까지 잡아냈다는 것을 알 수 있다. 1차 인식 결과 2차 인식 결과 3차 인식 결과

교배견 결과표

많은 교배견으로 실험한 결과 대부분 그 부모의 종의 점수가 높게 나왔다. 더 많은 이미지 데이터를 학습시킬 경우 교배견이 무엇과 무엇의 교배종인지까지 구분해낼 수 있다는 것을 확인하였다.

(28)

3. 연구 결과 및 시사점

□ 연구 결과

○ 연구 과정 요약 (1) 텐서플로 탐색

(2) 텐서플로 이용 환경 구축 (3) 이미지 수집

(4) 우분투 스크립트 제작 및 학습

(5) 연구 1 : 얼굴이 잘 나온 사진의 인식 정확도를 높이는 과정

(6) 연구 2 : 얼굴이 잘 나오지 않은 사진의 인식 정확도를 높이는 과정 (7) 연구 3 : 교배견 사진의 인식 정확도를 높이는 과정

○ 실험 결과

∇ 우분투, 파이썬, 도커, 텐서플로를 이용하여 개의 종 분류자를 만들 수 있음

∇ 분류자를 통해 앞모습뿐만 아니라 뒷모습, 윗모습, 옆모습과 같은 다양한 각도에서 찍힌 개의 사진에서도 종을 분류할 수 있음.

∇ 분류자에게 기존에 학습된 이미지를 반복학습시켜 인식 정확도를 높일 수 있음.

∇ 분류자에게 새로운 이미지를 반복학습시켜 인식 정확도를 높일 수 있음.

∇ 분류자에게 교배견 이미지를 반복학습시켜 교배견의 사진에서 교배견과 부모의 종을 구별할 수 있음.

∇ 분류자에게 학습시키지 않은 교배견 사진을 인식시켜 나오는 결과 값에서 부모의 종을 추측해낼 수 있음.

○ 연구 결론

- 우분투, 파이썬, 도커, 텐서플로를 이용하여 정밀한 개의 분류자를 만들 수 있다.

□ 시사점

○ 연구 활동을 통해 얻은 학습 효과

- 문제점을 발견하고 정보 검색을 통해 해결하는 과정 속에서, 심도 있는 이해의 과정을 체험할 수 있었다. 또한 연구 초기에는 거의 불가능해 보였던 연구를 어느 정도 완성시키면서 이와 같은 연구에 대한 자신감을 가지게 되었다.

○ 개선점

- 현재 만든 분류자는 우분투의 터미널 창에서만 실행 가능하고, 터미널 창을 종료할 시 분류자가 종료된다. 간단한 코드이긴 하지만, 매번 다시 코드를 입력하여 분류자를 실행해 야 한다는 것이다. 또한, 분류자는 본 팀의 컴퓨터에 저장되어 있는 파일을 불러와서 인식하는 데 사용하기 때문에 다른 컴퓨터에서 똑같은 환경을 구축하지 않는 한, 분류자를 사용할 방법이 없다. 이를 개선하기 위해. 본 팀은 우분투 터미널을 스크립트나 히스토리로 저장하는 방법이나 프로그램이나 사이트로 구체화하는 방법을 찾고 있다.

(29)

4. 홍보 및 사후 활용

□ 향후 계획 및 실현

○ 향후 계획

- 이 분류자를 더욱 많은 종에 대해서 다양한 사진으로 학습시켜 인식의 정확도를 매우 향상시킬 것이다. 이후 이 분류자를 어떠한 컴퓨터에서도 쓸 수 있도록 프로그램이나 사이트 로 구체화할 것이다.

○ 실현

- 구체화하는 방법에는 스마트폰 어플리케이션, 프로그램, 사이트의 3가지 방법이 있다.

첫 번째는 ‘앱 인벤터’를 활용하여 스마트폰 어플리케이션으로 만드는 방법으로, 컴퓨터 코드와 ‘앱 인벤터’에 들어가는 코드가 매우 달라 분류자의 데이터를 어플리케이션 파일과 데이터로 변환하는 과정이 어렵다고 한다. 두 번째는 프로그래밍 언어로 직접 프로그래밍하 는 방법이다. 프로그래밍을 하는 것은 어느 컴퓨터에서든지 쓸 수 있도록 분류자의 데이터를 알맞게 변형해야하는데, 이 또한 배우는데 시간이 많이 걸리고 어렵다고 한다. 세 번쨰는 사이트로 만드는 방법이다. 본 팀의 컴퓨터를 서버 컴퓨터로 설정하여 사이트에서 사용자가 사진을 입력할 경우, 사진이 서버 컴퓨터에서 분류되며 그 정보가 다시 사용자의 컴퓨터로 전달되게 하는 것이다. 사이트로 만드는 방법 또한 네트워크를 잘 다룰 줄 알아야한다는 측면에서 어렵다고 한다. 그러나 가장 가능성 있고 효율적인 방법으로 본 팀은 평가하고 있다.

□ 홍보 및 사후 활용

○ 사후 활용

- 이 분류자를 사후 활용한다면 경제적인 수단이 아니라 교육의 수단이 되도록 할 것이다.

유치원, 초등학생 등의 어린아이들이 사진을 찍어 개의 종을 알아내면서 지적 호기심을 해결하는 과정을 만들어낼 것이다. 또한 이 분류자를 예제로 활용할 수 있게 인터넷 사이트에 올려 전 세계의 아마추어 프로그래머들이 스스로 공부할 수 있도록 지원할 것이다.

○ 홍보

- 이 분류자를 홍보한다면 애견카페에 무료로 제공하여 애견카페를 찾는 손님들이 관심을 가지게 할 것이다. 손님들이 흥미를 느끼고 체험을 하면서 그 후기를 인터넷 상에 게시글로 올린다면 고등학생 차원의 프로그램이 시민들에게 소소한 도움이 되고 있다는 측면이 부각되 어 홍보가 이루어질 것이라고 생각한다.

(30)

5. 참고문헌

박응용(2016), 점프 투 파이썬(도서출판 : 이지스 퍼블리싱)

잔카를로 자코네(2016), 텐서플로 入門(도서출판 : 에이콘, 김창엽 옮김) 조르디 토레스(2016), 텐서플로 첫걸음(도서출판 : 한빛 미디어. 박해선 옮김)

Codelabs(2016), TensorFlow for Poets

https://codelabs.developers.google.com/codelabs/tensorflow-for-poets/?utm_campaign=chrome_series_ma chinelearning_063016&utm_source=gdev&utm_medium=yt-desc#4

OpenCV(2015), Face Detection using Haar Cascades

http://docs.opencv.org/trunk/d7/d8b/tutorial_py_face_detection.html

TensorFlow(2015), How to Retrain Inception's Final Layer for New Categories https://www.tensorflow.org/versions/r0.9/how_tos/image_retraining/index.html

참조

관련 문서

4방 초음파 센서 부착의 경우 지각 능력을 통해 드론 조종 시의 안전사고들을 예방 할 수 있을 것이며 여러 센서를 이용한 놀이 제작으로 통해 학생들을 포함한

4번의 설문조사 끝에 별빛 예술제는 문화, 예술과 과학을 융합하여 과학의 흥미를 높이는 데 성공하였다는 것을 알 수 있었고, 추후 다른 천체 관측 행사에 참여하겠다는

우리는 홍합의 털, 즉 족사가 친환경적으로 물속에서도 끊어지지 않고 바위나 암초에 달라붙어 있을 수 있으며 그 인장강도 또한 뛰어나다는 것을 알게

마이크로캡슐이 터지는 것을 측정하기 위 해 마이크로캡슐을 코팅한 A4 종이 위에 기름종이를 덮고 쇠구슬을 떨어뜨려 기 름종이에 perfume oil이

국내보다 집게벌레가 작물에 피해를 많이 미치는 서양에서 주로 사용하는 집게벌레 방제는 식물성 기름이나 생선 기름을 사용한 트랩 포집법 , 파이프나 골판지를 이용한

탐구 3에서 긴호랑거미(Argiope bruennichi)의 일반 거미줄과 흰 띠를 HPLC를 이용해 아미노산 성분 분석을 한 결과 흰 띠 거미줄에는 아미노산 성분의

이러한 작용기에 의해 응집이 될 수 있게 되는데 물을 통해 성분을 추출했을 경우 작용기가 산화되어 응집에 역할을 다할 수 없게 된다.. 하지만 에탄올에 경우

그러나 알코올추출법보다 압착추출과 열수추출의 방법이 더 많은 쓰레기의 양을 줄일 수 있었으며, 껍질이 가장 많은 수박에서 가장 많은 양의 추출물을 얻을 수 있었고