"종량제"의 두 판 사이의 차이

cdc wiki
이동: 둘러보기, 검색
(새 문서: <div>__TOC__</div> ==프로젝트 개요== === 기술개발 과제 === ''' 국문 : ''' 00000000.. ''' 영문 : ''' 00000000.. ===과제 팀명=== 00000.. ===지도교수=== 000...)
 
(부록)
 
(같은 사용자의 중간 판 55개는 보이지 않습니다)
3번째 줄: 3번째 줄:
 
==프로젝트 개요==
 
==프로젝트 개요==
 
=== 기술개발 과제 ===
 
=== 기술개발 과제 ===
''' 국문 : ''' 00000000..
+
''' 국문 : ''' 생활 폐기물 배출 정보 제공 어플
  
''' 영문 : ''' 00000000..
+
''' 영문 : ''' Recycling
  
 
===과제 팀명===
 
===과제 팀명===
00000..
+
종량제
  
 
===지도교수===
 
===지도교수===
000 교수님
+
안상현 교수님
  
 
===개발기간===
 
===개발기간===
2019년 3월 ~ 2019년 6월 (총 4개월)
+
2021년 3월 ~ 2021년 6월 (총 4개월)
  
 
===구성원 소개===
 
===구성원 소개===
서울시립대학교 ㅁㅁ공학부·과 2011XXX0** 김**(팀장)
+
서울시립대학교 컴퓨터과학부 20149200** *(팀장)
  
서울시립대학교 ㅁㅁ공학부·과 2011XXX0** 정**
+
서울시립대학교 컴퓨터과학부 20169200** 정*
  
서울시립대학교 ㅁㅁ공학부·과 2011XXX0** 조**
+
서울시립대학교 컴퓨터과학부 20189200** *
  
서울시립대학교 ㅁㅁ공학부·과 2011XXX0** 이**
+
서울시립대학교 컴퓨터과학부 20189200** *
 
 
서울시립대학교 ㅁㅁ공학부·과 2011XXX0** 남**
 
  
 
==서론==
 
==서론==
 
===개발 과제의 개요===
 
===개발 과제의 개요===
 
====개발 과제 요약====
 
====개발 과제 요약====
내용
+
일상생활 중 배출되는 생활 폐기물의 배출 방법을 안내하는 앱
====개발 과제의 배경====
+
 
내용
+
* 생활 폐기물 사진 분석 후 배출 방법 제안
====개발 과제의 목표 내용====
+
: - 카메라를 통해 물체를 인식시킴으로써 분리배출 정보를 얻을 수 있는 간편한 기능을 제공
내용
+
 
 +
* 커뮤니티 기능 (질문 게시판)
 +
: - 해당 어플 기능만으로 제공되지 않는 정보에 대해 사용자들 간에 질문을 할 수 있다.
 +
 
 +
* 사진 분석 카테고리에 포함되지 않는 폐기물을 챗봇 기능을 통해 배출 방법 제안
 +
: - 사진 분석 기능만으로 모든 분리배출 품목의 분류가 기술적으로 불가능할 것이라고 판단하여 이러한 배출 품목에 한하여 사용자의 인지 능력의 도움을 받아 최종적으로 배출 방법을 선별할 수 있도록 하는 챗봇 기능을 제공
 +
 
 +
====개발 과제의 배경 및 효과====
 +
* 정확한 분리수거의 중요성
 +
: 국내에서 버려지는 쓰레기 종량제 봉투 속 50% 이상의 폐기물이 재활용품으로 분리 배출 할 수 있는 자원이다. (재활용품 분리배출 가이드라인 _ 2018 ) 재활용품으로 선별되지 않은 물건은 일반쓰레기로 배출되기 때문에 재활용 정확도를 높일 필요가 있다.
 +
 
 +
* 분리배출의 어려움
 +
: 재활용품과 일반쓰레기의 경계가 모호한 물건들이 많다. 이러한 물건들의 분리수거 가능여부를 알기 위해서는 물건마다 분리수거 규정을 자세히 찾아보아야 하는 불편함이 있다.
 +
 
 +
* 코로나 19 사태 영향으로 생활 폐기물의 사용량이 급증하였다. 일반 가정에서 환경 보호를 위해 재활용에 동참하는 분위기는 형성되고 있지만, 실제로 재활용 비율은 절반에 못 미치는 것으로 드러났다. 따라서 분리배출 이후 재활용률을 높일 수 있는 대책 마련에 힘써야 한다는 목소리가 나오고 있다.
 +
 
 +
* 위와 같은 상황에 맞춰, 1인 가구를 포함한 일반 가정에서 개인이 핸드폰을 이용하여 재활용품의 분리배출 방법을 손쉽게 얻을 수 있도록 하는 어플의 개발을 진행한다. 각 가정에서 재활용 비율을 증가시키고 이는 최종적으로 국민 전체 재활용 비율의 상승으로 이어져 이를 통해 긍정적인 경제적 효과와 환경적 효과를 얻고자 한다.
 +
 
 +
====개발 과제의 목표와 내용====
 +
* 현재 시행중인 ‘재활용품 분리수거제도’를 개인 가정 단위에서 적극 시행할 수 있도록 환경부에서 제공하는 ‘재활용품 분리배출 가이드라인’을 어플리케이션의 기능을 통해 제공함으로써 재활용 실천을 돕는다.
 +
 
 +
* 상업적 목적보다는 분리배출 정보 제공을 통한 공익적 목적과 교육적 목적에 중점을 둔다. 그 중에서도 교육적 목적에 더 큰 가치를 두어 앱 사용자들이 기능을 이용하며 분리배출 방법을 학습하고, 최종적으로는 관련 지식들을 이용해 손쉽게 분리배출을 할 수 있도록 도와준다.
 +
 
 +
* 핵심 기능인 재활용품 사진 분석 기능을 통해 카메라로 배출 품목을 인식하여 각각 품목의 배출 방법을 선별하고 기술적으로 자동 분류가 어려울 경우 챗봇 기능을 통해 사용자의 인지 능력의 도움을 받아 최종적으로 배출 방법을 결정할 수 있는 기능을 구현한다.
 +
 
 +
* 게시판 기능을 구현하여 사용자들끼리 소통할 수 있도록 지원한다.
 +
 
 +
====개발과제의 기술적 기대효과====
 +
* 다양한 재활용품을 여러 개의 클래스로 나누어 딥러닝 학습시켰다. 최근 환경 보호에 대한 관심이 커지고 있다. 딥러닝 분야 중 물체 인식은 많은 관심과 발전을 이루고 있는 분야이다. 이에따라, 다양한 주제의 딥러닝 오픈 데이터 셋이 많아지고 있다. 하지만 이 중 생활 쓰레기에 대한 오픈 이미지 데이터는 거의 없다. 일부 공개된 쓰레기 데이터는 해외 제품에 대한 이미지 데이터로 대한민국에서 배출되는 쓰레기 이미지 데이터로 적합하지 않다. 따라서 본 개발 과제의 생활 폐기물 딥러닝 학습을 위한 다양한 폐기물 이미지를 수집 및 라벨링 하였다. 폐기물 AI 인식에 대한 한 논문에서는 정확한 시스템을 구축하기 위해서는 크고 지속적으로 증가하는 데이터 소스가 있어야 한다고 말하였다. 따라서 본 프로젝트에서 수집된 이미지는 공공데이터로써 사용되어 이 데이터 및 학습된 모델을 다양한 분야에 적용시킬 수 있다. 적용시킬 수 있는 예로는 쓰레기 무단투기 적발 시스템 등이 있다.
 +
 
 +
====개발과제의 경제적 사회적 파급효과====
 +
* 국내에서 버려지는 쓰레기 종량제 봉투 속 50% 이상의 폐기물이 재활용품으로 분리 배출할 수 있는 자원이다. (재활용품 분리배출 가이드라인 _ 2018 ) 대한민국은 에너지 원료를 수입하는 국가로 자원 재활용의 중요성이 크다. 해당 개발 과제를 통해 사람들의 쓰레기 분리 배출을 도움으로써 분리 배출 자원이 일반 쓰레기로 배출되는 비율을 감소시킬 수 있을 것이다. 이와 함께 분리배출이 잘 이루어지면 연간 3천억 원 상당의 종량제 봉투 구매 비용을 절약할 수 있다고 한다. 이처럼 개발과제를 통해 자원을 아낌으로써 경제적인 이득을 볼 수 있고, 환경 보호라는 사회적으로 긍정적인 효과를 기대할 수 있다
  
 
===관련 기술의 현황===
 
===관련 기술의 현황===
 
====관련 기술의 현황 및 분석(State of art)====
 
====관련 기술의 현황 및 분석(State of art)====
*전 세계적인 기술현황
+
* 영상 처리 기술을 이용한 재활용 분리기
내용
+
: 머신러닝을 이용하여 생활 폐기물을 자동으로 분류한다. 분리수거함에 머신러닝 기능을 탑재한 것이다. 머신러닝으로는 정확도가 낮아 이를 개선하기 위하여 무게센서를 추가하였다.
*특허조사 및 특허 전략 분석
+
 
내용
+
* Classification of Trash for Recyclability Status (Mindy Yang, Gary Thung)
*기술 로드맵
+
: 폐기물을 다양한 재활용 범주로 분류하는 것은 머신러닝과 컴퓨터 비전 알고리즘을 통해 가능하다고 설명한다. 가장 큰 문제점은 다양한 가능한 데이터의 필요성이며, 보다 정확한 시스템을 구축하기 위해서는 크고 지속적으로 증가하는 데이터 소스가 있어야한다고 설명한다.
내용
+
 
 +
* AI 재활용 플랫폼을 ‘오스카(Oscar)’
 +
: 머신 러닝과 컴퓨터 비전을 이용하여 재활용 안내. Cardboard, glass, metal, paper, plastic에 대한 생활 폐기물을 자동으로 분류한다. 데이터 셋을 공개하지 않았다. 분리수거함에 AI기능을 추가한 것으로 사업의 규모가 큰 만큼 고성능의 미니컴퓨터를 필요로 한다. 컴퓨터과학종합설계 프로젝트에서는 개인이 쉽게 접근 및 사용할 수 있도록 안드로이드 앱을 사용하며, 카메라 외의 별도의 센서를 사용하지 않는다.
 +
 
 +
* 심층 신경망 기반의 생활폐기물 자동 분류 (남준영 외 5명)
 +
: 학습 생활폐기물을 자동으로 분류하는 시스템으로 생활 폐기물 이미지를 VGG-19 모델로 학습하였고, 20 개의 클래스에 대해서 86.1%의 정확도를 보였다. 하지만 해당 논문에서 나눈 클래스 20여개는 bad frame, game machine 등 대형 폐기물이다. 해당 논문을 통해 많은 수의 클래스도 물체인식이 가능할 것이라는 가능성을 확인하였다. 컴퓨터과학종합설계 프로젝트에서는 분리수거가 불가능한 대형 폐기물이 아닌 분리수거 해당 물품(플라스틱, 캔, 종이 등)의 물체 인식 학습 및 분리 배출 안내를 한다.
 +
 
 +
* Computer Vision 개요
 +
** - Classification
 +
:: 이미지가 NN에 입력되면, 모델 네트워크를 통해 여러 개의 class로 분류될 확률 값을 표시합니다.
 +
 
 +
** Object Detection
 +
:: 단일 이미지에서 다수의 Class가 존재한다고 가정한 후 Classification task를 수행합니다. 이때 각 사물에 대한 영역 추정, 즉 Bounding box regression 과정이 추가되어, 출력 결과에 클래스와 확률 뿐만 아니라 해당 클래스가 있으리라고 추정되는 영역 또한 overlay 형태 혹은 좌표로 출력하게 됩니다.
 +
 
 +
** Segmentation
 +
:: 객체의 위치를 표시하는 것은 Bounding Box와 비슷하지만, boundary box가 설정되면, 그 box에서 높은 dense를 가지는 pixel에 집중하여 사물의 테두리까지 더 정밀하게 식별할 수 있습니다. 같은 클래스를 동일하게 표시하는 Semantic segmentation과 클래스가 같더라도 객체를 다르게 설정하는 Instance segmentation등이 존재합니다.
 +
 
 +
* Object detector type
 +
** One-stage object detector
 +
:: 영역 탐지와 분류가 동시에 일어나는 방법론을 의미합니다. Yolo, ssd 등의 모델들이 이에 해당되며, 상대적으로 빠르지만 two-stage OD에 비해 더 부정확하다는 특징을 가지고 있습니다.
 +
** Two-stage object detector
 +
:: 탐색 영역을 찾는 task와 해당 영역을 class 별로 분류하는 detection 두 가지 과정이 순차적으로 수행되는 방법론을 의미합니다. R-CNN 계열의 모델들이 이에 해당되며, 비교적 느리지만 더 정확하다는 특징을 가지고 있습니다.
 +
 
 +
====기술 로드맵====
 +
[[파일:AI 객체인식 변천사.png|프레임|가운데|AI 객체인식 변천사]]
 +
 
 +
◇ Fast R-CNN
 +
: CNN 특징 추출부터 classification, bounding box regression까지 하나의 모델에서 학습시킴으로써 기존의 R-CNN의 속도저하 문제와 multi-stage pipelines으로 인해 모델을 빠르게 학습시키지 못한 문제를 해결한 모델이다.
 +
 
 +
◇ Mask R-CNN
 +
: Segmentation 모델이다. Faster R-CNN에서 각각의 RoI에 대해 segmentation mask를 예측하는 branch를 추가한 기술이다. 이 branch는 각각의 RoI에 대해 FCN이 적용된 것으로 기존에 클래스 분류와 bounding box regression를 위한 Faster R-CNN의 branch와 병렬적으로 동작한다.
 +
 
 +
◇ YOLOv4
 +
: One-stage object detection의 대표적인 예로서, 단일 GPU에서의 학습 및 배포가 가능한 것이 특징입니다.이중 yolov4는 기존 yolov3 에 Bag of Freebies(전처리와 학습 전략에 있어서의 여러 신기술 적용)와 Bag ofSpecials(후처리와 구조와 관련된 모듈에 있어서의 여러 신기술 적용)가 추가되고, 여기에 backbone이 CSPNet으로 바뀐 버전으로, 정확도와 속도가 비약적으로 개선된 모델입니다.
 +
 
 +
◇ CSPNet
 +
: 기존 layer가 하나의 블록을 통해 다음으로 넘어가는데 반해, CSPNET은 입력을 두개의 부분으로 나누어, 하나는 연산에 참여시키지 않고 뒤에서 합쳐주는 방식을 기반으로 gradient flow를 나눠줘서 정확도 손실을 줄여주는 역할을 합니다. 이러한 구조를 기존에 있던 resnet이나 DenseNet 등에 적용시킬 수 있으며, Yolov4가 제안한 CSPDarkNet53은 기존의 CSPResNEXT50 혹은 EfficientNet-B3에 비해 더 많은 파라미터와 FLOP 수를 가짐에도 불구하고 더 높은 속도를 가지고 있다는 장점이 있습니다.
 +
 
 +
 
 +
'''저희 종량제 팀은 경량화와 적은 연산 부담을 위해 YOLO 모델을 선택하였습니다.'''
 +
 
 +
====특허조사====
 +
* 자동 분리수거 시스템 ( 출원번호 : 1020190026455, 출원일자 : 2019.03.07 )
 +
 
 +
* 인공지능 기술을 활용한 관광지 쓰레기 분리수거 안내 방법 시스템 ( 출원번호 : 1020190126985 출원일자 : 2019.10.14 )
 +
 
 +
* 자동으로 분리수거가 가능한 쓰레기통( 출원번호 : 1020190080840, 출원일자 : 2019.07.04 )
 +
 
 +
 
 +
위에서 조사한 특허 기술들은 기계적인 센서(소리센서, 무게센서, 금속인식 센서)들을 이용하여 쓰레기를 분류한다.
 +
 
 +
일부 특허는 인공지능을 이용하여 쓰레기를 학습한 뒤 자동으로 분류한다는 기능이 존재한다. 하지만 이 기능의 존재에 대한 언급만 했을 뿐 SW적인 구체적인 설명이나 기술적 특허 내용은 기재되어 있지 않았다. 또한 위 특허 기술들은 각각의 특허마다 별도의 맞춤 분리수거함을 제작해야 한다.
 +
 
 +
본 개발과제에서는 집 밖에 설치되는 분리수거장을 개선하는 것이 아닌 개개인이 집에서 손쉽게 분리수거를 올바르게 실천할 수 있도록 돕고자 한다.
 +
 
 +
이를 위하여 분리수거 안내 앱을 개발하여 사용자가 핸드폰의 카메라로 촬영한 사진을 분석한 뒤 분리수거 방법을 안내하고자 한다.
 +
 
 +
===관련 시장에 대한 분석===
 +
====경쟁제품 조사 비교====
 +
{|cellpadding="10" cellspacing="0" border="1" width="100%"
 +
|-
 +
| style="width: 20%" |
 +
| style="width: 40%" | 내 손안의 분리배출
 +
| style="width: 40%" | 오스카
 +
|-
 +
|
 +
|[[파일:종량제_내_손안의_분리배출.png]]
 +
|[[파일:종량제_오스카.png]]
 +
|-
 +
| 형태
 +
| 어플리케이션
 +
| 하드웨어 station (AI 분리수거함)
 +
|-
 +
| AI 물체 인식 기능
 +
| X
 +
| O
 +
|-
 +
| 배출 방법 검색 기능
 +
| O
 +
| X
 +
|-
 +
| 특징
 +
| 어플리케이션 형태로 누구나 손 쉽게 이용 가능하다.
  
====시장상황에 대한 분석====
+
올바른 분리배출을 돕는다.
*경쟁제품 조사 비교
 
내용
 
*마케팅 전략 제시
 
내용
 
  
===개발과제의 기대효과===
+
분리 배출 정보만 나열되어 있어 개인의 판단을 통해 분리 배출을 행해야 한다.
====기술적 기대효과====
+
| 사진 분석 기술을 통해 내부적으로 자체 분류를 진행하여 배출 방법을 제안한다.
내용
 
====경제적, 사회적 기대 및 파급효과====
 
내용
 
  
===기술개발 일정 추진체계===
+
사용자의 추가적인 정보 처리 판단이 필요 없다.
====개발 일정====
+
 
내용
+
집 외부에 설치되는 분리수거함 형태로 일반 개인이 편하게 사용하기 어렵다
====구성원 및 추진체계====
+
|}
내용
+
 
 +
위의 경쟁 제품들의 기능과 장/단점을 분석함으로써 ‘일반 가정에서 편하게 분리 배출할 수 있도록 돕는다’는 개발과제의 목적을 달성하기 위한 개발과제의 기술과 기능을 결정하였다. 먼저, 누구나 쉽게 가정에서 분리배출을 안내 받을 수 있도록 안드로이드 앱을 플랫폼으로 사용하였다. 개인이 좀 더 편하게 분리 배출을 실천할 수 있도록 AI 기능을 통해 내부적으로 자체 분류를 진행하여 배출 방법을 제안한다. 사진 분석 완성도가 위 경쟁 제품보다 부족할 위험성이 있어 이를 보완하기 위해 챗봇을 통하여 품목검색 기능을 추가하였다.
 +
 
 +
====마케팅 전략====
 +
[[파일:종량제_SWOT.png]]
  
 
==설계==
 
==설계==
===설계사양===
+
===사용자 요구사항===
====제품의 요구사항====
+
 
내용
+
{|cellpadding="10" cellspacing="0" border="1" width="100%"
====설계 사양====
+
|- style="background: lightgrey"
내용
+
| style="width: 15%" | 번호
 +
| style="width: 35%" | 요구사항
 +
| style="width: 15%" | D or W
 +
| style="witdh: 35%" | 비고
 +
|-
 +
| R1
 +
| 촬영한 물체의 정보를 확인할 수 있다
 +
| D
 +
|
 +
|-
 +
| R2
 +
| 이미지 분석 결과에 알맞은 분리 배출 방법을 제시한다
 +
| D
 +
| 기존에 정의한 재활용품 대분류와 더불어 사용빈도가 높은 일부 품목에 대해서 분석 후 배출 방법을 제안
 +
|-
 +
| R3
 +
| 게시판을 통해 사용자들이 사진과 글을 게시할 수 있다
 +
| D
 +
|
 +
|-
 +
| R4
 +
| 게시글에 댓글을 작성할 수 있다
 +
| D
 +
|
 +
|-
 +
| R5
 +
| 사진 분석이 어려운 물건은 챗봇 기능을 통해 배출 방법을 찾을 수 있도록 한다
 +
| D
 +
|
 +
|-
 +
| R6
 +
| 물건의 이름을 검색하여 배출 방법을 찾을 수 있도록 한다.
 +
| D
 +
|
 +
|-
 +
| R7
 +
| 사용자에게 사진 업로드와 주석 추가 기능을 제공하여 사진 분석과 챗봇 기능으로도 분류가 되지 않는 폐기물에 대한 추가적인 정보를 받는다
 +
| W
 +
| 종이팩/종이컵, 종이류, 금속캔, 고철류, 비닐류, 스티로폼, 페트병, 플라스틱 용기류, 유리병
 +
|}
 +
 
 +
===사용자 요구사항 만족을 위한 기능 정의 및 기능별 정량목표===
 +
* F1: 입력받은 사진에서 객체 정보를 추출 및 인식한다.
 +
* F2: 인식한 사진에 대한 대분류를 진행한 후, 분류에 맞는 분리수거방법을 제공한다.
 +
* F3: 챗봇을 통해 재활용품 분류를 선택하면 해당 분류에 따른 배출방법 정보를 빠르고 정확하게 제공한다.
 +
* F4: 재활용품 품목 검색 기능을 구현한다.
 +
* F5: 검색한 재활용품 품목 각각의 배출방법을 챗봇 기능으로 제공한다.
 +
* F6: 게시글 작성 기능을 구현한다
 +
* F7: 작성된 게시글에 댓글을 작성하는 기능을 구현한다
 +
 
 +
===기능 구현을 위한 세부기술 선택사항===
 +
자연어 처리 또는 머신러닝 인공지능을 활용한 챗봇들이 존재한다.
 +
 
 +
[[파일:종량제_네이버_CLOVA_챗봇.png|500픽셀|프레임|가운데|네이버 CLOVA 챗봇]]
 +
 
 +
[[파일:종량제_Kochat.png|500픽셀|프레임|가운데|Kochat]]
 +
 
 +
 
 +
그러나 제공하고자 하는 기능이 분리배출 가이드라인에 명시되어 있는 항목들에 대한 검색 및 결과 제공이므로, 사용자에게 자연어를 입력 받아 분석하는 기능보다는 이미 있는 항목을 검색하도록 제공하는 것이 적합하다 판단하였다.
 +
 
 +
따라서 챗봇을 구현할 때 자연어 처리 혹은 인공지능 기능이 활용된 라이브러리 및 프레임워크, API를 사용하는 것은 불필요하다고 판단되어, 안드로이드 앱 내부에 분리배출 항목의 내용을 저장해두고 사용자가 선택하면 안내를 진행하는 룰베이스 기반 챗봇을 제작하여 구현하였다.
 +
 
 +
===시스템 설계===
 +
====Use Case====
 +
[[파일:종량제_Use_Case.png|프레임|가운데|Use Case]]
 +
 
 +
====DB diagram====
 +
[[파일:종량제_DB_diagram.png|프레임|가운데|DB diagram]]
 +
 
 +
===사진인식 설계===
 +
====프레임워크, 모델 설정====
 +
 
 +
<pre>
 +
[학습용 모델 및 프레임워크의 조건]
 +
적은 자원으로도 동작 가능, 빠른 응답시간, 작은 물체에 대해서도 식별 가능, 높은 수준의 학습 최적화, 학습시 GPU 활용이 가능해야 함(필수요건)
 +
[앱에서 모델을 동작시키기 위한 프레임워크의 조건]
 +
ARM 계열 프로세서에 최적화 되어있어야 함, 타 프레임워크에서 학습된 weight를 변환하기 용이해야 함, 학습하는데 높은 수준의 장비가 필요하지 않아야 함.
 +
</pre>
 +
 
 +
◇ 모델 학습 : Darknet 프레임워크- YOLOv4 커스텀 세팅
 +
 
 +
'''Darknet'''은 C 기반으로 제작된 객체 인식 프레임워크로서, CUDA를 지원하여 GPU를 사용한 학습 또한 지원합니다. Config 설정을 바꿈으로서 각 layer에 대한 설정값 혹은 pre processing 설정,  filter 개수, activation 함수 등을 변경할 수 있습니다.
 +
 
 +
'''YOLOv4'''는 one-stage detection 으로 영역 추정과 클래스 분류가 한번에 진행됩니다. 또한 yolov4의 모토가 single GPU에서 학습 및 배포를 지원하는 것이므로 저희 프로젝트와 일맥상통하는 부분이 있다고 판단했습니다.
 +
 
 +
◇ 실행용 프레임워크: TensorFlow Lite
 +
 
 +
Yolo 형식으로 학습된 weights 값을 tensorflow 모델로 변환하기가 용이하며, 약간의 변환과정만 거치면 ARM 계열 연산장치에 최적화된 tflite (tensorflow lite 모델)로 변환할 수 있어서 해당 프레임워크를 채택했습니다.
 +
 
 +
====데이터 확보====
 +
 
 +
<pre>
 +
[학습용 데이터를 수집하는 조건]
 +
하나의 물체에 대해 여러가지 각도에서 영상 촬영 후 frame 단위로 추출
 +
실사용과 유사한 환경을 위해 아파트 단지 재활용 수거함에서 데이터 확보.
 +
Class당 몇 개의 대표적인 물체를 기준으로 사진 데이터 선별.
 +
    - 사유 : 각각의 클래스의 특징이나 모양이 너무 천차만별임.
 +
</pre>
 +
 
 +
◇ python selenium 을 이용한 google 이미지 크롤링
 +
 
 +
◇ 분리수거장 / 마트 등에서 직접 사진 촬영 후 프레임 단위로 추출
 +
 
 +
[[파일:종량제_데이터_확보.png|프레임|가운데|데이터 확보]]
 +
 
 +
====데이터 전처리 (데이터 라벨링, 이미지 보간)====
 +
 
 +
<pre>
 +
[이미지 보간 중점사항]
 +
부족한 데이터 수 보완
 +
작은 batch크기 보완
 +
보다 작은 크기의 객체 인식 활성화
 +
</pre>
  
===개념설계안===
+
◇ LabelIMG 프로그램을 사용한 라벨링 작업
내용
 
  
===이론적 계산 및 시뮬레이션===
+
[[파일:종량제_LabelIMG.png|프레임|가운데|LabelIMG 프로그램을 사용한 라벨링 작업]]
내용
 
  
===상세설계 내용===
+
◇ 파이썬 ImgAug 라이브러리를 사용하여 image Augmentation
내용
+
: 라벨링한 데이터를 영역과 함께 여러 각도로 회전시킵니다.
 +
 
 +
[[파일:종량제_ImgAug.png|프레임|가운데|ImgAug 라이브러리]]
 +
 
 +
◇ Darknet 프레임워크에서 제공하는 mosaic augmentation 사용
 +
: mosaic augmentation은 4개의 이미지를 하나로 합치는 방식을 의미합니다. 하나의 input으로 4개의 이미지를 학습할 수 있어서 mini batch 크기가 4배 더 커지는 것과 유사한 효과를 볼 수 있습니다. 이러한 전처리는 적은 크기의 배치로 학습시키는 환경에서 학습 안정성에 도움을 줍니다. 또한 이미지를 하나로 합치는 과정에서 자연스럽게 각 객체의 크기가 줄어들기 때문에 다양한 거리에서 촬영한 객체와 다양한 크기의 객체를 인식시키는데 도움이 됩니다.
 +
 
 +
[[파일:종량제_mosaic_augmentation.png|프레임|가운데|Mosaic Augmentation]]
 +
 
 +
그 이외에 darknet 프레임워크에서 HUE(색). Saturation(선명도), exposure(노출[광량]) 등의 이미지 보간을 추가로 적용하여, 적은 이미지 수를 보완했습니다.
 +
 
 +
====학습 세팅====
 +
Layer 구성 : Yolov4의 기본 세팅 사용
 +
<pre>
 +
[Hyper parameter]
 +
batch, subdivision : 64, 32
 +
: 학습시킬 컴퓨터 메모리와 그래픽 메모리가 허용하는 선에서 정했습니다.
 +
MAX batch : class 수 * 3000 + 200
 +
: Darknet 권고사항은 최소 2000이므로, 조금 더 넉넉히 잡았습니다. + 200은  전 후로  알맞은 가중치를 얻기 위함입니다.
 +
Initial learning_rate : 0.001
 +
: Yolov4 논문에서 실험 결과 채택한 최종 initial learning rate입니다.
 +
: 이후 learning rate decay의 경우 처음 선택한 max batch의  80%와 90% 단계에서 0.1을 곱합니다.
 +
Momentum, weight decay = 0.9,  0.0005
 +
: Yolov4 논문에서 MS COCO기반으로 학습시켰을 때 최적화시킨 파라미터들을 그대로 사용했습니다.
 +
Input size : 416 * 416
 +
: 핸드폰에서의 원활한 실행을 위해 416*416 pixels로 input size를 변경하였습니다
 +
anchor
 +
: 기존 darknet에서 기본으로 제공하는 anchor는 input size가 512*512인 데이터 학습에 최적화 되어 있으므로, 추가로 darknet에서 제공하는 k-means clustering 기반 anchor 추정을 통해 저희 팀이 구축한 dataset에 맞는 anchor를 재 정의하였습니다. (anchor 는 미리 정의된 boundary box의 크기입니다.)
 +
</pre>
 +
 
 +
===하드웨어 설계===
 +
====하드웨어 자원====
 +
# Class 수가 적을 때는 google colab 에서 무료로 제공하는 gpu를 사용 하였다
 +
# 최종 학습의 경우 상당한 시간동안 학습을 시켜야 하기 때문에 집에서 사용중인 데스크탑을 사용하였다.
 +
 
 +
{|cellpadding="10" cellspacing="0" border="1" width="100%"
 +
|-
 +
| CPU
 +
| Core
 +
| Thread
 +
| Clock
 +
| RAM
 +
| GPU
 +
|-
 +
| Ryzen 3600x
 +
| 6
 +
| 12
 +
| 4.3GHz
 +
| DDR4 16GB 3200MHz
 +
| RTX 2070 Super GDDR6 8GB
 +
|}
 +
 
 +
===소프트웨어 설계===
 +
[[파일:종량제_소프트웨어.png|프레임|가운데|소프트웨어 설계]]
  
 
==결과 및 평가==
 
==결과 및 평가==
===완료 작품의 소개===
+
===완료 작품 소개===
====프로토타입 사진 혹은 작동 장면====
+
====프로토타입 사진====
내용
+
{|cellpadding="10" cellspacing="0" border="1" width="60%"
====포스터====
+
|-
내용
+
| style="width: 30%" | [[파일:종량제_앱_아이콘.png|섬네일|가운데|앱 아이콘]]
 +
| style="width: 30%" | [[파일:종량제_메인_화면.png|섬네일|가운데|메인 화면]]
 +
|}
 +
 
 +
===설치===
 +
====SW/HW 구성 방법====
 +
◇ 배포를 위한 apk url 접속 및 다운로드 ([[https://drive.google.com/file/d/15oQjrWFYBQrGtc45Aum0wLZ7VT6J8h05/view?usp=sharing 링크]])
 +
[[파일:종량제_apk_접속.png|프레임|가운데]]
 +
 
 +
 
 +
◇ 다운로드 받은 apk 설치
 +
[[파일:종량제_apk_설치.png|프레임|가운데]]
 +
 
 +
===실행===
 +
◇ 설치된 종량제 앱 실행 – 메인 화면 접속
 +
[[파일:종량제_메인_화면.png|프레임|가운데]]
 +
 
 +
====SW 실행 방법====
 +
 
 +
1. 객체 인식 부분
 +
{|cellpadding="10" cellspacing="0" border="1"
 +
|[[파일:종량제_객체인식_1.png|프레임|가운데|1]]
 +
|[[파일:종량제_객체인식_2.png|프레임|가운데|2]]
 +
|-
 +
|[[파일:종량제_객체인식_3.png|프레임|가운데|3]]
 +
|[[파일:종량제_객체인식_4.png|프레임|가운데|4]]
 +
|}
 +
 
 +
인식된 클래스에 대해 결과 화면 출력 자세한 설명 보기 클릭 시 배출방법 안내
 +
 
 +
 
 +
2. 챗봇 부분
 +
{|cellpadding="10" cellspacing="0" border="1"
 +
|[[파일:종량제_챗봇_1.png|프레임|가운데|1]]
 +
|[[파일:종량제_챗봇_2.png|프레임|가운데|2]]
 +
|-
 +
|colspan=2|메인 화면에서 챗봇 버튼을 눌러 챗봇 기능으로 진입한다.
 +
|-
 +
|[[파일:종량제_챗봇_3.png|프레임|가운데|3]]
 +
|[[파일:종량제_챗봇_4.png|프레임|가운데|4]]
 +
|-
 +
|colspan=2|인식이 되지 않는 경우 챗봇 안내에 따라 분류항목을 선택하여 배출 방법을 안내 받는다.
 +
|}
 +
 
 +
{|cellpadding="10" cellspacing="0" border="1"
 +
|[[파일:종량제_챗봇_5.jpg|프레임|가운데|5]]
 +
|[[파일:종량제_챗봇_6.jpg|프레임|가운데|6]]
 +
|[[파일:종량제_챗봇_7.jpg|프레임|가운데|7]]
 +
|-
 +
|colspan=3|챗봇의 안내에 따라 배출 항목을 직접 검색하고, 해당 항목에 대한 배출 방법을 안내 받는다.
 +
|}
 +
 
 +
 
 +
3. 게시판 부분
 +
{|cellpadding="10" cellspacing="0" border="1"
 +
|[[파일:종량제_게시판_1.png|프레임|가운데|1]]
 +
|[[파일:종량제_게시판_2.png|프레임|가운데|2]]
 +
|-
 +
|메인 화면에서 게시판 버튼을 클릭한다.
 +
|다음으로 나오는 로그인 화면에서 아이디와 비밀번호를
  
===관련사업비 내역서===
+
입력 후 가입/로그인한다.
내용
+
|-
 +
|[[파일:종량제_게시판_3.png|프레임|가운데|3]]
 +
|[[파일:종량제_게시판_4.png|프레임|가운데|4]]
 +
|-
 +
|홈메뉴에서 게시글을 확인할 수 있다.
 +
|사진 업로드 메뉴를 선택하여 게시글을 작성할 수 있다.
 +
|-
 +
|[[파일:종량제_게시판_5.png|프레임|가운데|5]]
 +
|[[파일:종량제_게시판_6.png|프레임|가운데|6]]
 +
|-
 +
|게시글 작성시 사진을 업로드할 수 있다.
 +
|게시글 작성 예시
 +
|-
 +
|[[파일:종량제_게시판_7.png|프레임|가운데|7]]
 +
|[[파일:종량제_게시판_8.png|프레임|가운데|8]]
 +
|-
 +
|colspan=2|댓글 버튼을 눌러 댓글을 작성할 수 있습니다
 +
|-
 +
|[[파일:종량제_게시판_3.png|프레임|가운데|9]]
 +
|[[파일:종량제_게시판_10.png|프레임|가운데|10]]
 +
|-
 +
|계정 메뉴를 선택하여 계정 정보를 확인할 수 있다.
 +
|계정 메뉴에는 계정 id와 작성한 게시글 수, 프로필 이미지 수정,
 +
 
 +
작성한 게시글 삭제 및 로그아웃이 가능하다.
 +
|-
 +
|}
  
 
===완료작품의 평가===
 
===완료작품의 평가===
내용
+
{| cellpadding="10" cellspacing="0" border="1"
 +
|- style="background: lightgrey"
 +
| 평가 항목
 +
| 평가 방법
 +
| 적용 기준
 +
| 개발 목표치
 +
| 비중(%)
 +
| 평가 결과
 +
|-
 +
| 1. 정확도
 +
| 기능 시나리오 작성 시 정한 카테고리에 따라 정확히 분류되는지 확인한다.
 +
| <code>TP/(TP+TN+FP)</code>
 +
| 0.75
 +
| 30
 +
| 0.67
 +
|-
 +
| 2. 응답 속도
 +
| 정지영상 확인 후 분석 결과가 도출되기까지 걸리는 시간을 측정한다.
 +
| 최대 지연 응답 시간 (단위 : 초)
 +
| 5초
 +
| 20
 +
| 4초
 +
|-
 +
| 3. 챗봇 분류 정확도
 +
| 사진 분석 항목에 포함되지 않거나 분석 실패한 항목이 분류 가능한가
 +
| (결과 도출 횟수 / 1의 예외항목 갯수) * 100 %
 +
| 90
 +
| 30
 +
| 100
 +
|-
 +
| 4. UI 복잡성
 +
| UI를 트리로 표현했을 때 최종 깊이를 확인한다.
 +
| UI 트리 깊이
 +
| 깊이 5
 +
| 20
 +
| 4
 +
|}
 +
 
 +
<br>
 +
◇ 사진 인식 정확도 상세
 +
{| cellpadding="10" cellspacing="0" border="1"
 +
|[[파일:종량제_사진인식_1.png|프레임|가운데]]
 +
|[[파일:종량제_사진인식_2.png|프레임|가운데]]
 +
|}
 +
500 여 개의 실 사용 데이터 분석 결과
 +
오탐(FP) : 25%
 +
인식 실패(TN) : 8%
 +
인식 성공(TP) : 67%
 +
 
 +
===향후평가===
 +
====어려웠던 내용====
 +
◇투명한 물체 인식
 +
 
 +
:* 다양한 광원에서 물체의 테두리가 잘 인식될 수 있도록 데이터 수집
 +
 
 +
:* 투명하지 않은 부분을 포함하여 특징화(ex: 뚜껑, 라벨)
 +
 
 +
:* 투명한 물체이면서 상이한 경우가 많으므로 최대한 물체의 특징이 들어나도록 데이터 수집
 +
 
 +
◇객체 인식 속도
 +
:* one-stage detection 기반의 빠른 모델 사용
 +
:* 기존 동영상 기반의 오버레이에서 단일 사진을 detect 하는 방식으로 변경
 +
 
 +
◇다양한 크기
 +
:* 수집한 데이터셋에서 k-means 클러스터링을 통해 빈번하게 나오는 bounding box 추측 및 anchor 적용
 +
:* 사용자가 실제로 사용할 환경을 고려하여 데이터 수집 크기 조절
 +
:* mosaic augmentation을 사용해 일부 작게 촬영된 객체들 대응
 +
 
 +
◇다양한 모양과 상태의 물체들
 +
:* 클래스별로 기준이 되는 특정 모양 몇가지를 정하여 해당 객체에 대해 집중 학습
 +
 
 +
◇데이터 수의 불균형
 +
:* 각 클래스별로 1300 ±200 개의 데이터 사진 유지
 +
 
 +
◇ 챗봇에 룰베이스로 추가해야 할 재활용품 품목이 많아 코드가 복잡해졌다.
 +
:* 개발 상황에서는 재활용품 품목이 분리배출 가이드에 따라 정해져 있었기 때문에 문제가 없었지만, 새 항목을 추가해야 한다면 작업 난이도가 작업의 내용에 비해 어려울 것으로 예상된다.
 +
 
 +
◇ 게시판과 파이어베이스의 연동
 +
:* 게시판과 파이어베이스를 연동하여 데이터를 주고 받는 과정 중 에러가 많이 발생하여 이를 해결하는데 시간이 소요되었다.
 +
 
 +
 
 +
 
 +
====차후 구현할 내용====
 +
◇ 인식이 틀렸거나, 인식되지 않은 사진을 서버로 전송하여 학습 데이터로 활용
 +
 
 +
◇ 재활용 가능한 class 지만, 오염 혹은 파손 등으로 인해 재활용 하지 못하는 경우 식별
 +
:* Abnormal Detection
 +
:* Hierarchical Object Detection
 +
 
 +
◇ 전처리를 통한 투명한 물체 인식률 개선
 +
 
 +
 
 +
==부록==
 +
===참고 문헌 및 참고 사이트===
 +
Darknet github, yolov4 논문 : [[https://github.com/AlexeyAB/darknet#when-should-i-stop-training 1]][[https://arxiv.org/pdf/2004.10934.pdf 2]]
 +
 
 +
투명한 물체 인식 관련 논문들 : [[https://www.csie.ntu.edu.tw/~fuh/personal/TransparentObjectDetectionUsingRegionswithConvolutionalNeuralNetwork.pdf 3]][[https://www.cpe.fr/wp-content/uploads/2019/02/How_CNN_grasp_TOf_paper_final_version_2.pdf 4]]
 +
 
 +
object detection 관련정보 : [[https://hoya012.github.io/blog/Tutorials-of-Object-Detection-Using-Deep-Learning-what-is-object-detection 5]]
 +
 
 +
게시판 관련 참고사이트 주소 : [[https://github.com/you6878/Howlstaram_f16 6]]
 +
 
 +
 
 +
===소프트웨어 프로그램 소스===
 +
깃헙 주소 : [[https://github.com/alssel2525/Jongryangjae 링크]]
  
===향후계획===
 
내용
 
  
===특허 출원 내용===
+
===제품 카탈로그===
내용
+
구글 독스 링크 : [[https://docs.google.com/document/d/1wEaXVI6GzjInXntpvBZMcyiF7uDLGa8y2yLd6M_9R3E/edit?usp=sharing 링크]]

2021년 6월 19일 (토) 23:47 기준 최신판

프로젝트 개요

기술개발 과제

국문 : 생활 폐기물 배출 정보 제공 어플

영문 : Recycling

과제 팀명

종량제

지도교수

안상현 교수님

개발기간

2021년 3월 ~ 2021년 6월 (총 4개월)

구성원 소개

서울시립대학교 컴퓨터과학부 20149200** 신*동(팀장)

서울시립대학교 컴퓨터과학부 20169200** 정*찬

서울시립대학교 컴퓨터과학부 20189200** 박*현

서울시립대학교 컴퓨터과학부 20189200** 방*

서론

개발 과제의 개요

개발 과제 요약

일상생활 중 배출되는 생활 폐기물의 배출 방법을 안내하는 앱

  • 생활 폐기물 사진 분석 후 배출 방법 제안
- 카메라를 통해 물체를 인식시킴으로써 분리배출 정보를 얻을 수 있는 간편한 기능을 제공
  • 커뮤니티 기능 (질문 게시판)
- 해당 어플 기능만으로 제공되지 않는 정보에 대해 사용자들 간에 질문을 할 수 있다.
  • 사진 분석 카테고리에 포함되지 않는 폐기물을 챗봇 기능을 통해 배출 방법 제안
- 사진 분석 기능만으로 모든 분리배출 품목의 분류가 기술적으로 불가능할 것이라고 판단하여 이러한 배출 품목에 한하여 사용자의 인지 능력의 도움을 받아 최종적으로 배출 방법을 선별할 수 있도록 하는 챗봇 기능을 제공

개발 과제의 배경 및 효과

  • 정확한 분리수거의 중요성
국내에서 버려지는 쓰레기 종량제 봉투 속 50% 이상의 폐기물이 재활용품으로 분리 배출 할 수 있는 자원이다. (재활용품 분리배출 가이드라인 _ 2018 ) 재활용품으로 선별되지 않은 물건은 일반쓰레기로 배출되기 때문에 재활용 정확도를 높일 필요가 있다.
  • 분리배출의 어려움
재활용품과 일반쓰레기의 경계가 모호한 물건들이 많다. 이러한 물건들의 분리수거 가능여부를 알기 위해서는 물건마다 분리수거 규정을 자세히 찾아보아야 하는 불편함이 있다.
  • 코로나 19 사태 영향으로 생활 폐기물의 사용량이 급증하였다. 일반 가정에서 환경 보호를 위해 재활용에 동참하는 분위기는 형성되고 있지만, 실제로 재활용 비율은 절반에 못 미치는 것으로 드러났다. 따라서 분리배출 이후 재활용률을 높일 수 있는 대책 마련에 힘써야 한다는 목소리가 나오고 있다.
  • 위와 같은 상황에 맞춰, 1인 가구를 포함한 일반 가정에서 개인이 핸드폰을 이용하여 재활용품의 분리배출 방법을 손쉽게 얻을 수 있도록 하는 어플의 개발을 진행한다. 각 가정에서 재활용 비율을 증가시키고 이는 최종적으로 국민 전체 재활용 비율의 상승으로 이어져 이를 통해 긍정적인 경제적 효과와 환경적 효과를 얻고자 한다.

개발 과제의 목표와 내용

  • 현재 시행중인 ‘재활용품 분리수거제도’를 개인 가정 단위에서 적극 시행할 수 있도록 환경부에서 제공하는 ‘재활용품 분리배출 가이드라인’을 어플리케이션의 기능을 통해 제공함으로써 재활용 실천을 돕는다.
  • 상업적 목적보다는 분리배출 정보 제공을 통한 공익적 목적과 교육적 목적에 중점을 둔다. 그 중에서도 교육적 목적에 더 큰 가치를 두어 앱 사용자들이 기능을 이용하며 분리배출 방법을 학습하고, 최종적으로는 관련 지식들을 이용해 손쉽게 분리배출을 할 수 있도록 도와준다.
  • 핵심 기능인 재활용품 사진 분석 기능을 통해 카메라로 배출 품목을 인식하여 각각 품목의 배출 방법을 선별하고 기술적으로 자동 분류가 어려울 경우 챗봇 기능을 통해 사용자의 인지 능력의 도움을 받아 최종적으로 배출 방법을 결정할 수 있는 기능을 구현한다.
  • 게시판 기능을 구현하여 사용자들끼리 소통할 수 있도록 지원한다.

개발과제의 기술적 기대효과

  • 다양한 재활용품을 여러 개의 클래스로 나누어 딥러닝 학습시켰다. 최근 환경 보호에 대한 관심이 커지고 있다. 딥러닝 분야 중 물체 인식은 많은 관심과 발전을 이루고 있는 분야이다. 이에따라, 다양한 주제의 딥러닝 오픈 데이터 셋이 많아지고 있다. 하지만 이 중 생활 쓰레기에 대한 오픈 이미지 데이터는 거의 없다. 일부 공개된 쓰레기 데이터는 해외 제품에 대한 이미지 데이터로 대한민국에서 배출되는 쓰레기 이미지 데이터로 적합하지 않다. 따라서 본 개발 과제의 생활 폐기물 딥러닝 학습을 위한 다양한 폐기물 이미지를 수집 및 라벨링 하였다. 폐기물 AI 인식에 대한 한 논문에서는 정확한 시스템을 구축하기 위해서는 크고 지속적으로 증가하는 데이터 소스가 있어야 한다고 말하였다. 따라서 본 프로젝트에서 수집된 이미지는 공공데이터로써 사용되어 이 데이터 및 학습된 모델을 다양한 분야에 적용시킬 수 있다. 적용시킬 수 있는 예로는 쓰레기 무단투기 적발 시스템 등이 있다.

개발과제의 경제적 및 사회적 파급효과

  • 국내에서 버려지는 쓰레기 종량제 봉투 속 50% 이상의 폐기물이 재활용품으로 분리 배출할 수 있는 자원이다. (재활용품 분리배출 가이드라인 _ 2018 ) 대한민국은 에너지 원료를 수입하는 국가로 자원 재활용의 중요성이 크다. 해당 개발 과제를 통해 사람들의 쓰레기 분리 배출을 도움으로써 분리 배출 자원이 일반 쓰레기로 배출되는 비율을 감소시킬 수 있을 것이다. 이와 함께 분리배출이 잘 이루어지면 연간 3천억 원 상당의 종량제 봉투 구매 비용을 절약할 수 있다고 한다. 이처럼 개발과제를 통해 자원을 아낌으로써 경제적인 이득을 볼 수 있고, 환경 보호라는 사회적으로 긍정적인 효과를 기대할 수 있다

관련 기술의 현황

관련 기술의 현황 및 분석(State of art)

  • 영상 처리 기술을 이용한 재활용 분리기
머신러닝을 이용하여 생활 폐기물을 자동으로 분류한다. 분리수거함에 머신러닝 기능을 탑재한 것이다. 머신러닝으로는 정확도가 낮아 이를 개선하기 위하여 무게센서를 추가하였다.
  • Classification of Trash for Recyclability Status (Mindy Yang, Gary Thung)
폐기물을 다양한 재활용 범주로 분류하는 것은 머신러닝과 컴퓨터 비전 알고리즘을 통해 가능하다고 설명한다. 가장 큰 문제점은 다양한 가능한 데이터의 필요성이며, 보다 정확한 시스템을 구축하기 위해서는 크고 지속적으로 증가하는 데이터 소스가 있어야한다고 설명한다.
  • AI 재활용 플랫폼을 ‘오스카(Oscar)’
머신 러닝과 컴퓨터 비전을 이용하여 재활용 안내. Cardboard, glass, metal, paper, plastic에 대한 생활 폐기물을 자동으로 분류한다. 데이터 셋을 공개하지 않았다. 분리수거함에 AI기능을 추가한 것으로 사업의 규모가 큰 만큼 고성능의 미니컴퓨터를 필요로 한다. 컴퓨터과학종합설계 프로젝트에서는 개인이 쉽게 접근 및 사용할 수 있도록 안드로이드 앱을 사용하며, 카메라 외의 별도의 센서를 사용하지 않는다.
  • 심층 신경망 기반의 생활폐기물 자동 분류 (남준영 외 5명)
학습 생활폐기물을 자동으로 분류하는 시스템으로 생활 폐기물 이미지를 VGG-19 모델로 학습하였고, 20 개의 클래스에 대해서 86.1%의 정확도를 보였다. 하지만 해당 논문에서 나눈 클래스 20여개는 bad frame, game machine 등 대형 폐기물이다. 해당 논문을 통해 많은 수의 클래스도 물체인식이 가능할 것이라는 가능성을 확인하였다. 컴퓨터과학종합설계 프로젝트에서는 분리수거가 불가능한 대형 폐기물이 아닌 분리수거 해당 물품(플라스틱, 캔, 종이 등)의 물체 인식 학습 및 분리 배출 안내를 한다.
  • Computer Vision 개요
    • - Classification
이미지가 NN에 입력되면, 모델 네트워크를 통해 여러 개의 class로 분류될 확률 값을 표시합니다.
    • Object Detection
단일 이미지에서 다수의 Class가 존재한다고 가정한 후 Classification task를 수행합니다. 이때 각 사물에 대한 영역 추정, 즉 Bounding box regression 과정이 추가되어, 출력 결과에 클래스와 확률 뿐만 아니라 해당 클래스가 있으리라고 추정되는 영역 또한 overlay 형태 혹은 좌표로 출력하게 됩니다.
    • Segmentation
객체의 위치를 표시하는 것은 Bounding Box와 비슷하지만, boundary box가 설정되면, 그 box에서 높은 dense를 가지는 pixel에 집중하여 사물의 테두리까지 더 정밀하게 식별할 수 있습니다. 같은 클래스를 동일하게 표시하는 Semantic segmentation과 클래스가 같더라도 객체를 다르게 설정하는 Instance segmentation등이 존재합니다.
  • Object detector type
    • One-stage object detector
영역 탐지와 분류가 동시에 일어나는 방법론을 의미합니다. Yolo, ssd 등의 모델들이 이에 해당되며, 상대적으로 빠르지만 two-stage OD에 비해 더 부정확하다는 특징을 가지고 있습니다.
    • Two-stage object detector
탐색 영역을 찾는 task와 해당 영역을 class 별로 분류하는 detection 두 가지 과정이 순차적으로 수행되는 방법론을 의미합니다. R-CNN 계열의 모델들이 이에 해당되며, 비교적 느리지만 더 정확하다는 특징을 가지고 있습니다.

기술 로드맵

AI 객체인식 변천사

◇ Fast R-CNN

CNN 특징 추출부터 classification, bounding box regression까지 하나의 모델에서 학습시킴으로써 기존의 R-CNN의 속도저하 문제와 multi-stage pipelines으로 인해 모델을 빠르게 학습시키지 못한 문제를 해결한 모델이다.

◇ Mask R-CNN

Segmentation 모델이다. Faster R-CNN에서 각각의 RoI에 대해 segmentation mask를 예측하는 branch를 추가한 기술이다. 이 branch는 각각의 RoI에 대해 FCN이 적용된 것으로 기존에 클래스 분류와 bounding box regression를 위한 Faster R-CNN의 branch와 병렬적으로 동작한다.

◇ YOLOv4

One-stage object detection의 대표적인 예로서, 단일 GPU에서의 학습 및 배포가 가능한 것이 특징입니다.이중 yolov4는 기존 yolov3 에 Bag of Freebies(전처리와 학습 전략에 있어서의 여러 신기술 적용)와 Bag ofSpecials(후처리와 구조와 관련된 모듈에 있어서의 여러 신기술 적용)가 추가되고, 여기에 backbone이 CSPNet으로 바뀐 버전으로, 정확도와 속도가 비약적으로 개선된 모델입니다.

◇ CSPNet

기존 layer가 하나의 블록을 통해 다음으로 넘어가는데 반해, CSPNET은 입력을 두개의 부분으로 나누어, 하나는 연산에 참여시키지 않고 뒤에서 합쳐주는 방식을 기반으로 gradient flow를 나눠줘서 정확도 손실을 줄여주는 역할을 합니다. 이러한 구조를 기존에 있던 resnet이나 DenseNet 등에 적용시킬 수 있으며, Yolov4가 제안한 CSPDarkNet53은 기존의 CSPResNEXT50 혹은 EfficientNet-B3에 비해 더 많은 파라미터와 FLOP 수를 가짐에도 불구하고 더 높은 속도를 가지고 있다는 장점이 있습니다.


저희 종량제 팀은 경량화와 적은 연산 부담을 위해 YOLO 모델을 선택하였습니다.

특허조사

  • 자동 분리수거 시스템 ( 출원번호 : 1020190026455, 출원일자 : 2019.03.07 )
  • 인공지능 기술을 활용한 관광지 쓰레기 분리수거 안내 방법 및 시스템 ( 출원번호 : 1020190126985 출원일자 : 2019.10.14 )
  • 자동으로 분리수거가 가능한 쓰레기통( 출원번호 : 1020190080840, 출원일자 : 2019.07.04 )


위에서 조사한 특허 기술들은 기계적인 센서(소리센서, 무게센서, 금속인식 센서)들을 이용하여 쓰레기를 분류한다.

일부 특허는 인공지능을 이용하여 쓰레기를 학습한 뒤 자동으로 분류한다는 기능이 존재한다. 하지만 이 기능의 존재에 대한 언급만 했을 뿐 SW적인 구체적인 설명이나 기술적 특허 내용은 기재되어 있지 않았다. 또한 위 특허 기술들은 각각의 특허마다 별도의 맞춤 분리수거함을 제작해야 한다.

본 개발과제에서는 집 밖에 설치되는 분리수거장을 개선하는 것이 아닌 개개인이 집에서 손쉽게 분리수거를 올바르게 실천할 수 있도록 돕고자 한다.

이를 위하여 분리수거 안내 앱을 개발하여 사용자가 핸드폰의 카메라로 촬영한 사진을 분석한 뒤 분리수거 방법을 안내하고자 한다.

관련 시장에 대한 분석

경쟁제품 조사 비교

내 손안의 분리배출 오스카
종량제 내 손안의 분리배출.png 종량제 오스카.png
형태 어플리케이션 하드웨어 station (AI 분리수거함)
AI 물체 인식 기능 X O
배출 방법 검색 기능 O X
특징 어플리케이션 형태로 누구나 손 쉽게 이용 가능하다.

올바른 분리배출을 돕는다.

분리 배출 정보만 나열되어 있어 개인의 판단을 통해 분리 배출을 행해야 한다.

사진 분석 기술을 통해 내부적으로 자체 분류를 진행하여 배출 방법을 제안한다.

사용자의 추가적인 정보 처리 및 판단이 필요 없다.

집 외부에 설치되는 분리수거함 형태로 일반 개인이 편하게 사용하기 어렵다

위의 경쟁 제품들의 기능과 장/단점을 분석함으로써 ‘일반 가정에서 편하게 분리 배출할 수 있도록 돕는다’는 개발과제의 목적을 달성하기 위한 개발과제의 기술과 기능을 결정하였다. 먼저, 누구나 쉽게 가정에서 분리배출을 안내 받을 수 있도록 안드로이드 앱을 플랫폼으로 사용하였다. 개인이 좀 더 편하게 분리 배출을 실천할 수 있도록 AI 기능을 통해 내부적으로 자체 분류를 진행하여 배출 방법을 제안한다. 사진 분석 완성도가 위 경쟁 제품보다 부족할 위험성이 있어 이를 보완하기 위해 챗봇을 통하여 품목검색 기능을 추가하였다.

마케팅 전략

종량제 SWOT.png

설계

사용자 요구사항

번호 요구사항 D or W 비고
R1 촬영한 물체의 정보를 확인할 수 있다 D
R2 이미지 분석 결과에 알맞은 분리 배출 방법을 제시한다 D 기존에 정의한 재활용품 대분류와 더불어 사용빈도가 높은 일부 품목에 대해서 분석 후 배출 방법을 제안
R3 게시판을 통해 사용자들이 사진과 글을 게시할 수 있다 D
R4 게시글에 댓글을 작성할 수 있다 D
R5 사진 분석이 어려운 물건은 챗봇 기능을 통해 배출 방법을 찾을 수 있도록 한다 D
R6 물건의 이름을 검색하여 배출 방법을 찾을 수 있도록 한다. D
R7 사용자에게 사진 업로드와 주석 추가 기능을 제공하여 사진 분석과 챗봇 기능으로도 분류가 되지 않는 폐기물에 대한 추가적인 정보를 받는다 W 종이팩/종이컵, 종이류, 금속캔, 고철류, 비닐류, 스티로폼, 페트병, 플라스틱 용기류, 유리병

사용자 요구사항 만족을 위한 기능 정의 및 기능별 정량목표

  • F1: 입력받은 사진에서 객체 정보를 추출 및 인식한다.
  • F2: 인식한 사진에 대한 대분류를 진행한 후, 분류에 맞는 분리수거방법을 제공한다.
  • F3: 챗봇을 통해 재활용품 분류를 선택하면 해당 분류에 따른 배출방법 정보를 빠르고 정확하게 제공한다.
  • F4: 재활용품 품목 검색 기능을 구현한다.
  • F5: 검색한 재활용품 품목 각각의 배출방법을 챗봇 기능으로 제공한다.
  • F6: 게시글 작성 기능을 구현한다
  • F7: 작성된 게시글에 댓글을 작성하는 기능을 구현한다

기능 구현을 위한 세부기술 선택사항

자연어 처리 또는 머신러닝 인공지능을 활용한 챗봇들이 존재한다.

네이버 CLOVA 챗봇
Kochat


그러나 제공하고자 하는 기능이 분리배출 가이드라인에 명시되어 있는 항목들에 대한 검색 및 결과 제공이므로, 사용자에게 자연어를 입력 받아 분석하는 기능보다는 이미 있는 항목을 검색하도록 제공하는 것이 적합하다 판단하였다.

따라서 챗봇을 구현할 때 자연어 처리 혹은 인공지능 기능이 활용된 라이브러리 및 프레임워크, API를 사용하는 것은 불필요하다고 판단되어, 안드로이드 앱 내부에 분리배출 항목의 내용을 저장해두고 사용자가 선택하면 안내를 진행하는 룰베이스 기반 챗봇을 제작하여 구현하였다.

시스템 설계

Use Case

Use Case

DB diagram

DB diagram

사진인식 설계

프레임워크, 모델 설정

[학습용 모델 및 프레임워크의 조건]
적은 자원으로도 동작 가능, 빠른 응답시간, 작은 물체에 대해서도 식별 가능, 높은 수준의 학습 최적화, 학습시 GPU 활용이 가능해야 함(필수요건)
[앱에서 모델을 동작시키기 위한 프레임워크의 조건]
ARM 계열 프로세서에 최적화 되어있어야 함, 타 프레임워크에서 학습된 weight를 변환하기 용이해야 함, 학습하는데 높은 수준의 장비가 필요하지 않아야 함.

◇ 모델 학습 : Darknet 프레임워크- YOLOv4 커스텀 세팅

Darknet은 C 기반으로 제작된 객체 인식 프레임워크로서, CUDA를 지원하여 GPU를 사용한 학습 또한 지원합니다. Config 설정을 바꿈으로서 각 layer에 대한 설정값 혹은 pre processing 설정, filter 개수, activation 함수 등을 변경할 수 있습니다.

YOLOv4는 one-stage detection 으로 영역 추정과 클래스 분류가 한번에 진행됩니다. 또한 yolov4의 모토가 single GPU에서 학습 및 배포를 지원하는 것이므로 저희 프로젝트와 일맥상통하는 부분이 있다고 판단했습니다.

◇ 실행용 프레임워크: TensorFlow Lite

Yolo 형식으로 학습된 weights 값을 tensorflow 모델로 변환하기가 용이하며, 약간의 변환과정만 거치면 ARM 계열 연산장치에 최적화된 tflite (tensorflow lite 모델)로 변환할 수 있어서 해당 프레임워크를 채택했습니다.

데이터 확보

[학습용 데이터를 수집하는 조건]
하나의 물체에 대해 여러가지 각도에서 영상 촬영 후 frame 단위로 추출
실사용과 유사한 환경을 위해 아파트 단지 재활용 수거함에서 데이터 확보.
Class당 몇 개의 대표적인 물체를 기준으로 사진 데이터 선별.
    - 사유 : 각각의 클래스의 특징이나 모양이 너무 천차만별임.

◇ python selenium 을 이용한 google 이미지 크롤링

◇ 분리수거장 / 마트 등에서 직접 사진 촬영 후 프레임 단위로 추출

데이터 확보

데이터 전처리 (데이터 라벨링, 이미지 보간)

[이미지 보간 중점사항]
부족한 데이터 수 보완
작은 batch크기 보완
보다 작은 크기의 객체 인식 활성화

◇ LabelIMG 프로그램을 사용한 라벨링 작업

LabelIMG 프로그램을 사용한 라벨링 작업

◇ 파이썬 ImgAug 라이브러리를 사용하여 image Augmentation

라벨링한 데이터를 영역과 함께 여러 각도로 회전시킵니다.
ImgAug 라이브러리

◇ Darknet 프레임워크에서 제공하는 mosaic augmentation 사용

mosaic augmentation은 4개의 이미지를 하나로 합치는 방식을 의미합니다. 하나의 input으로 4개의 이미지를 학습할 수 있어서 mini batch 크기가 4배 더 커지는 것과 유사한 효과를 볼 수 있습니다. 이러한 전처리는 적은 크기의 배치로 학습시키는 환경에서 학습 안정성에 도움을 줍니다. 또한 이미지를 하나로 합치는 과정에서 자연스럽게 각 객체의 크기가 줄어들기 때문에 다양한 거리에서 촬영한 객체와 다양한 크기의 객체를 인식시키는데 도움이 됩니다.
Mosaic Augmentation

그 이외에 darknet 프레임워크에서 HUE(색). Saturation(선명도), exposure(노출[광량]) 등의 이미지 보간을 추가로 적용하여, 적은 이미지 수를 보완했습니다.

학습 세팅

Layer 구성 : Yolov4의 기본 세팅 사용

[Hyper parameter]
batch, subdivision : 64, 32
: 학습시킬 컴퓨터 메모리와 그래픽 메모리가 허용하는 선에서 정했습니다.
MAX batch : class 수 * 3000 + 200
: Darknet 권고사항은 최소 2000이므로, 조금 더 넉넉히 잡았습니다. + 200은  전 후로  알맞은 가중치를 얻기 위함입니다.
Initial learning_rate : 0.001
: Yolov4 논문에서 실험 결과 채택한 최종 initial learning rate입니다.
: 이후 learning rate decay의 경우 처음 선택한 max batch의  80%와 90% 단계에서 0.1을 곱합니다.
Momentum, weight decay = 0.9,  0.0005
: Yolov4 논문에서 MS COCO기반으로 학습시켰을 때 최적화시킨 파라미터들을 그대로 사용했습니다.
Input size : 416 * 416
: 핸드폰에서의 원활한 실행을 위해 416*416 pixels로 input size를 변경하였습니다
anchor
: 기존 darknet에서 기본으로 제공하는 anchor는 input size가 512*512인 데이터 학습에 최적화 되어 있으므로, 추가로 darknet에서 제공하는 k-means clustering 기반 anchor 추정을 통해 저희 팀이 구축한 dataset에 맞는 anchor를 재 정의하였습니다. (anchor 는 미리 정의된 boundary box의 크기입니다.)

하드웨어 설계

하드웨어 자원

  1. Class 수가 적을 때는 google colab 에서 무료로 제공하는 gpu를 사용 하였다
  2. 최종 학습의 경우 상당한 시간동안 학습을 시켜야 하기 때문에 집에서 사용중인 데스크탑을 사용하였다.
CPU Core Thread Clock RAM GPU
Ryzen 3600x 6 12 4.3GHz DDR4 16GB 3200MHz RTX 2070 Super GDDR6 8GB

소프트웨어 설계

소프트웨어 설계

결과 및 평가

완료 작품 소개

프로토타입 사진

앱 아이콘
메인 화면

설치

SW/HW 구성 방법

◇ 배포를 위한 apk url 접속 및 다운로드 ([링크]) 
종량제 apk 접속.png


◇ 다운로드 받은 apk 설치
종량제 apk 설치.png

실행

◇ 설치된 종량제 앱 실행 – 메인 화면 접속
종량제 메인 화면.png

SW 실행 방법

1. 객체 인식 부분

1
2
3
4

인식된 클래스에 대해 결과 화면 출력 자세한 설명 보기 클릭 시 배출방법 안내


2. 챗봇 부분

1
2
메인 화면에서 챗봇 버튼을 눌러 챗봇 기능으로 진입한다.
3
4
인식이 되지 않는 경우 챗봇 안내에 따라 분류항목을 선택하여 배출 방법을 안내 받는다.
5
6
7
챗봇의 안내에 따라 배출 항목을 직접 검색하고, 해당 항목에 대한 배출 방법을 안내 받는다.


3. 게시판 부분

1
2
메인 화면에서 게시판 버튼을 클릭한다. 다음으로 나오는 로그인 화면에서 아이디와 비밀번호를

입력 후 가입/로그인한다.

3
4
홈메뉴에서 게시글을 확인할 수 있다. 사진 업로드 메뉴를 선택하여 게시글을 작성할 수 있다.
5
6
게시글 작성시 사진을 업로드할 수 있다. 게시글 작성 예시
7
8
댓글 버튼을 눌러 댓글을 작성할 수 있습니다
9
10
계정 메뉴를 선택하여 계정 정보를 확인할 수 있다. 계정 메뉴에는 계정 id와 작성한 게시글 수, 프로필 이미지 수정,

작성한 게시글 삭제 및 로그아웃이 가능하다.

완료작품의 평가

평가 항목 평가 방법 적용 기준 개발 목표치 비중(%) 평가 결과
1. 정확도 기능 시나리오 작성 시 정한 카테고리에 따라 정확히 분류되는지 확인한다. TP/(TP+TN+FP) 0.75 30 0.67
2. 응답 속도 정지영상 확인 후 분석 결과가 도출되기까지 걸리는 시간을 측정한다. 최대 지연 응답 시간 (단위 : 초) 5초 20 4초
3. 챗봇 분류 정확도 사진 분석 항목에 포함되지 않거나 분석 실패한 항목이 분류 가능한가 (결과 도출 횟수 / 1의 예외항목 갯수) * 100 % 90 30 100
4. UI 복잡성 UI를 트리로 표현했을 때 최종 깊이를 확인한다. UI 트리 깊이 깊이 5 20 4


◇ 사진 인식 정확도 상세

종량제 사진인식 1.png
종량제 사진인식 2.png
500 여 개의 실 사용 데이터 분석 결과
오탐(FP) : 25%
인식 실패(TN) : 8%
인식 성공(TP) : 67%

향후평가

어려웠던 내용

◇투명한 물체 인식

  • 다양한 광원에서 물체의 테두리가 잘 인식될 수 있도록 데이터 수집
  • 투명하지 않은 부분을 포함하여 특징화(ex: 뚜껑, 라벨)
  • 투명한 물체이면서 상이한 경우가 많으므로 최대한 물체의 특징이 들어나도록 데이터 수집

◇객체 인식 속도

  • one-stage detection 기반의 빠른 모델 사용
  • 기존 동영상 기반의 오버레이에서 단일 사진을 detect 하는 방식으로 변경

◇다양한 크기

  • 수집한 데이터셋에서 k-means 클러스터링을 통해 빈번하게 나오는 bounding box 추측 및 anchor 적용
  • 사용자가 실제로 사용할 환경을 고려하여 데이터 수집 크기 조절
  • mosaic augmentation을 사용해 일부 작게 촬영된 객체들 대응

◇다양한 모양과 상태의 물체들

  • 클래스별로 기준이 되는 특정 모양 몇가지를 정하여 해당 객체에 대해 집중 학습

◇데이터 수의 불균형

  • 각 클래스별로 1300 ±200 개의 데이터 사진 유지

◇ 챗봇에 룰베이스로 추가해야 할 재활용품 품목이 많아 코드가 복잡해졌다.

  • 개발 상황에서는 재활용품 품목이 분리배출 가이드에 따라 정해져 있었기 때문에 문제가 없었지만, 새 항목을 추가해야 한다면 작업 난이도가 작업의 내용에 비해 어려울 것으로 예상된다.

◇ 게시판과 파이어베이스의 연동

  • 게시판과 파이어베이스를 연동하여 데이터를 주고 받는 과정 중 에러가 많이 발생하여 이를 해결하는데 시간이 소요되었다.


차후 구현할 내용

◇ 인식이 틀렸거나, 인식되지 않은 사진을 서버로 전송하여 학습 데이터로 활용

◇ 재활용 가능한 class 지만, 오염 혹은 파손 등으로 인해 재활용 하지 못하는 경우 식별

  • Abnormal Detection
  • Hierarchical Object Detection

◇ 전처리를 통한 투명한 물체 인식률 개선


부록

참고 문헌 및 참고 사이트

Darknet github, yolov4 논문 : [1][2]

투명한 물체 인식 관련 논문들 : [3][4]

object detection 관련정보 : [5]

게시판 관련 참고사이트 주소 : [6]


소프트웨어 프로그램 소스

깃헙 주소 : [링크]


제품 카탈로그

구글 독스 링크 : [링크]