2016년도 소프트웨어종합설계

연구개발제안서

2016. 10.

2016년도 소프트웨어종합설계2 연구개발제안서
①보안등급	[ ]보안, [○]일반			②공개가능여부		[○]가, [ ]부
③과 제 명	국문	CCTV를 이용한 화재 감지 시스템 구축
	영문	Build up fire detecting system via CCTV
④팀 이름	EagleEye
⑤연구책임자	성명	오동현		소속		단국대학교 소프트웨어학과
	휴대전화	010-5303-1725		E-mail		eclipse1725@gmail.com
⑥총 연구기간	2016 년 9 월 07 일 ~ 2016 년 12 월 14 일 ( 3 개월)
⑦참여인력(M/M)	총 : 4 명( 12 M/M)
⑦참여인력 1	성명	이예은		소속		단국대학교 소프트웨어학과
	휴대전화	010-4603-8783		E-mail		cherie3e@nate.com
⑧참여인력 2	성명	박현묵		소속		단국대학교 소프트웨어학과
	휴대전화	010-8263-7903		E-mail		ehxhfl2002@gmail.com
⑨참여인력 3	성명	유지은		소속		단국대학교 소프트웨어학과
	휴대전화	010-9377-4074		E-mail		yugioun0215@gmail.com
⑩핵심키워드	국문	기계 학습			영상 정보 처리		클라우드 서비스
	영문	Machine Learning			Image data Processing		Cloud Service
관계 규정과 모든 지시사항을 준수하면서 이 연구개발사업을 성실히 수행하기 위하여 아래와 같이 연구개발계획서를 제출합니다. 2016 년 10 월 8 일 주관연구책임자: 오 동 현 □ 최종무교수님 귀하

목  차

1. 연구 개발 개요	4

가. 설계 주제	4

나. 연구개발의 필요성	4

1) 빠른 화재 감지가 이루어지지 못하는 현황	4

2) 영상정보처리 기술의 필요성	4

3) 머신러닝을 통한 이미지 분석의 필요성	4

다. 국내 외 기술 현황 및 차별성	4

1) 스프링클러 및 화재감지 시스템	4

2) Smart CCTV	5

3) 차별성	5

2. 연구개발의 목표와 내용	6

가. 최종목표 및 세부목표	6

1) 연구개발과제 최종 예상 결과물	6

나. 시나리오	7

1) 시연 시나리오	7

2) Use-Case	7

다. Design	8

1) Hardware Component	8

2) Software Component	8

라. Required Items	8

3. 연구개발 추진 전략 및 추진 체계	9

가. 연구개발 추진전략	9

1) 신뢰성	9

2) 보안성	9

3) 동시성	9

나. 연구개발 인력분배	9

다. 연구개발 추진일정	10

1) Gantt Chart	10

2) Milestone	10

1. 연구 개발 개요

가. 설계 주제

CCTV를 이용한 화재 감지 시스템 구축

나. 연구개발의 필요성

1) 빠른 화재 감지가 이루어지지 못하는 현황

- 대부분의 화재는 사람들이 평소 많은 관심을 들이지 않는 장소에서 부주의에 의해 발생한다.

- 센서를 사용한 다른 화재감지 방법도 많지만, 감지기로부터 먼 거리에서 발생한 화재는 감지하기	어렵다.

- 실내에서는 시스템 구축이 편하지만 상대적으로 실외는 그렇지 못한 편이다.

- CCTV 등을 이용하여 실시간 모니터링을 하고 있다고 해도 사람이 모든 CCTV를 관제하기에는 한계가 있다.

2) 영상정보처리 기술의 필요성

- CCTV는 꾸준히 증가하는 추세이며 이를 이용한 영상정보 처리 기술 또한 점차 중요해지고 있다.

- 상대적으로 영상 정보 처리가 까다로운 불 탐지기를 구현하게 된다면, 불 탐지 외의 다른 기능들을 적용하기는 상대적으로 수월할 것이다.

- 영상 정보 처리를 통해 화재 상황을 포착할 수 있다면 센서와 같은 추가적인 하드웨어 설치비용을 줄일 수 있다.

3) 머신러닝을 통한 이미지 분석의 필요성

- 빅 데이터 시대가 열리면서 머신러닝이 다시 주목받기 시작하고 있으며, 머신러닝을 이용한 이미지 처리가 중요하게 여겨지고 있다.

- 머신러닝을 이용하면 보다 정교한 분석이 가능하며 이에 따라 화재 감지 정확도도 높일 수 있다.

다. 국내 외 기술 현황 및 차별성

1) 스프링클러 및 화재 감지 시스템

① 스프링클러

- 스프링클러는 화재가 발생했을 때 이상고온을 감지하여 자동적으로 방수하는 설비이다. 배관을 실내의 천장에 배치하고 곳곳의 분기관 선단에 스프링클러 헤드를 부착하여 일정온도에 도달하면 퓨즈가 끊어져 물이 살수되는 것으로 초기 소화용으로 사용되고 있다. 화재 감지 시스템은 설치 이후의 유지보수가 굉장히 중요하다.

② 연기 감지기

- 연기 감지기는 크게 이온화식 감지기와 광전식으로 분류할 수 있다. 이온화식이란 검지부에 연기가 들어가면 전류가 변하는 성질을 이용하여 화재를 감지하는 방식이며, 광전식이란 검지부안에 연기가 들어가면 이 연기에 의해 평상시 광전 소자에 의해 일정하게 흐르던 전류의 값을 변화시켜 화재를 감지하는 방식이다.

2) Smart CCTV

Smart CCTV는 단순히 영상을 녹화하고 보여주는 역할만을 해왔던 기존의 CCTV에서 더 나아가 영상에서 다양한 움직임 등을 포착하여 방범과 재난 예방 기능을 수행한다. 뿐만 아니라 소리 정보를 알아듣는 음원 CCTV나 침입감지 정확도를 비약적으로 높인 Smart CCTV 또한 많이 개발되고 있다. 이미 시중에 나와 있는 다양한 종류의 Smart CCTV들 중 화재감지용 Smart CCTV는 다음과 같은 과정으로 화재를 감지하게 된다.

⑴ CCTV로 입력되는 영상을 서버(DVR, NVR)로 전송한다.

⑵ 영상을 전송 받은 서버의 CPU는 SW를 사용하여 화재 상황을 판단하게 된다.

⑶ 화재 상황이라 인식하면 경보상황을 알린다.

[그림 1] Smart CCTV 동작 과정

폭발적으로 증가한 CCTV 설치 대수에 비해 현저히 부족한 모니터링 인력 문제 해결을 위한 자동화된 인식 시스템의 수요가 증대되고 있는 실정이다. 이에 지능형 영상 분석 기술이 각광받고 있으며 이를 적용한 Smart CCTV가 많은 관심을 받고 있다.

3) 차별성

① 스프링클러와의 차별성

- 스프링클러는 설치하는데 추가적인 비용이 매우 많이 든다. 하지만 EagleEye는 추가적인 센서 없이 단일 CCTV로 불을 탐지 할 수 있다.

- 스프링클러는 물리적인 유지보수가 필요하므로 번거롭다. 때문에 제대로 유지보수가 이루어지지 않아 오작동하는 경우가 많다.

- 스프링클러는 보통 실내에 설치하며 실외에서는 사용되지 않는다. 하지만 CCTV는 실내와 실외를 가리지 않고 설치되어 있기 때문에 어디에서든 화재를 감지 할 수 있다.

② Smart CCTV와의 차별성

- 보통의 화재 감지 Smart CCTV는 자체개발한 알고리즘을 사용하지만 EagleEye는 머신러닝을 이용하여 높은 인식율을 가진다.

- 기존 Smart CCTV는 영상을 서버로 전송하고 이곳에서 화재 상황의 판단여부를 결정한다. 하지만 EagleEye는 클라이언트단에서 화재여부를 판단하며, 화재 경보 기능만을 서버에서 다루기 때문에 서버 처리의 부담이 적다.

2. 연구개발의 목표와 내용

가. 최종목표 및 세부목표

1) 연구개발과제 최종 예상 결과물

[그림 2] EagleEye

위 [그림 2]과 같이 Deep Learning과 OpenCV가 적용된 하나의 시스템인 EagleEye를 개발한다. EagleEye을 이용하여 화재를 감지하면 이 정보를 Cloud Server까지 전송되게 하는 하나의 시스템을 구축하고자한다.

구분	내용
최종목표	CCTV의 영상 정보를 이용하여 화재를 감지 할 수 있는 시스템을 구축한다. 다른 불 감지 시스템과는 다르게 두 번에 걸친 탐지 및 검증을 통해 정확성을 높이고자 한다.
세부목표	◇ 개발 계획 수립 ◇ 개발 환경 구성 ◇ Tensorflow를 이용한 탐지 기본 틀 제작 ◇ OpenCV를 이용한 1차 탐지 기본 틀 제작 ◇ Tensorflow와 OpenCV와 단일 프로그램 동작을 위한 통합 작업 ◇ OpenCV에 심도 있는 기준치 적용 ◇ CloudeServer 알리미 제작 ◇ Tensorflow 불 탐지 학습 ◇ 시연 준비 ◇ 테스팅 및 유지보수

[그림 3] 최종 및 세부목표

최종 산출물은 학습된 Tensorflow와 OpenCV를 담고 있는 무형의 소프트웨어이다. [그림 3]의 모든 세부 목표를 수행하면, 목표로 하였던 최종 산출물을 얻을 수 있다.

나. 시나리오

1) 시연 시나리오

[그림 4] EagleEye 화재 감지 시나리오

소프트웨어의 최종 결과 발표 시나리오는 위 [그림 4]과 같다. 1차적으로는 카메라(CCTV)를 통해 얻은 영상을 이용하여 1차 화재 후보군을 선출한다. 2차적으로는 해당 부분이 실제 화재인지 심도 있는 검증을 수행한다. 2차 검증을 통해서 화재 상황이라 판단되면 클라우드 서버를 통해 고객에게 문자를 전송하며, 고객이 원한다면 추가적인 방법을 통해 화재 경보를 보낸다. 예를 들어 119 구조대에 자동으로 연결하여 화재 정보를 전송하는 방식 등이 있을 수 있다.

2) Use-Case

① User 입장에서의 Use-Case

[그림 5] User Use-Case

② System 입장에서의 Use-Case

[그림 6] System Use-Case

다. Design

1) Hardware Component

- EagleEye의 구성 요소 중 Hardware는 넓은 의미에서는 CCTV가 포함될 수 있지만 실질적으로 개발과정에서 CCTV는 필수적이지 않다. 실제 구현하는 부분은 소프트웨어적인 구성 요소가 전부라고 할 수 있으며, 추가적으로 CCTV 뿐만 아니라 영상을 받아올 수 있는 모든 장비에 본 소프트웨어를 적용 할 수 있다.

2) Software Component

① OpenCV

- 영상 정보를 처리하기 위해 사용할 수 있는 여러 가지 툴이나 오픈소스들이 존재하지만, 가장 쉽고 널리 사용되며, 무료로 사용할 수 있는 툴 중 대표적인 것이 OpenCV이다. 따라서 본 연구개발에서는 OpenCV를 사용하여 이미지 프로세싱을 통한 1차 검증을 수행하려 한다. 따라서 OpenCV를 이용한 구현 부분에서 가장 중요한 것은 불로 보이는 모든 영역을 정확하게 포착하여 후보군으로 설정해야 한다는 것이다. 만약 1차적으로 불을 정확히 탐지하지 못한다면, 정밀 검사를 위한 2차 판별 또한 없을 것이며 정확한 화재 탐지가 발생하지 않기 때문이다. 따라서 이 부분에서는 불을 잡을 수 있는 최소한의 검증을 수행한다.

② Deep Learning

- 딥러닝은 데이터 분석의 일종으로 EagleEye에서는 Tensorflow를 사용하여 Deep Learning을 수행하려 한다. 또한 기계학습을 수행하는 데에 매우 많은 시간이 소모되기 때문에 Nvidia GPU의 CUDA를 병행하여 기계학습의 효율을 높이려 한다. 이는 1차적으로 판단한 OpenCV 결과 값을 받아와 해당 영역을 2차 판별하여 불인지 아닌지 정밀 검사를 수행하는 역할을 맡는다.

③ Cloud Server

- 실제로 불이 날 확률은 그리 크지 않으며, 24시간 내내 고객을 위한 일반 서버를 사용하는 것은 불필요할 수 있다. 따라서 클라우드 서버를 사용하여 고객 알람 전달 및 구조대 신고에 필요한 비용만 지출한다면 효율적인 자원의 사용이 가능하게 될 것이다. 본 연구개발제안서에서는 클라우드 서버로 Amazon의 AWS를 사용할 것을 제안한다.

라. Required Items

⓵ CUDA 프로그래밍이 가능한 GPU를 장착한 컴퓨터 (GPU Linux Machine)

⓶ 웹캠이 장착 된 노트북 혹은 CCTV와 같이 영상정보를 받아올 수 있는 장비

⓷ 머신러닝에 대한 구체적인 자료와 참고 코드

3. 연구개발 추진 전략 방법 및 추진 체계

가. 연구개발 추진 전략 방법

연구개발 추진 전략에는 크게 3가지 차별성, 보안성 그리고 동시성을 두었으며, 이를 EagleEye의 추진 전략이자 특징으로 삼아 개발 및 필요성에 강력한 동기를 주려 한다.

1) 신뢰성

① 정확한 화재 구분 기준치 설정

- 신뢰성은 해당 연구에서 가장 중요하면서 민감한 문제이다. 신뢰성에 대해서는 설계 및 개발하는 내내 연구 진행자들과의 의견 공유와 끊임없는 실험이 이루어져야 하며, 높은 신뢰도를 얻기 위해서 여러 논문들과 과거에 진행되었던 연구, 그리고 팀 내에서의 검증을 통해 점차 나은 결과 값을 얻어 적용시킬 예정이다.

2) 보안성

① CCTV 영상정보에 관한 문제

- CCTV의 영상정보를 남에게 넘겨주는 것은 개인의 사생활 문제가 포함되어 있기 때문에 민감한 사항이다. 따라서 EagleEye 소프트웨어를 클라이언트 서버에 직접적으로 설치하여 영상 정보가 유출되는 상황을 막으려 한다. 또한 클라우드 서버로 보내는 신호는 영상정보가 아닌 단순한 화재 감지 알람으로 설정하였기 때문에 네트워크 통신에서 발생할 수 있는 Man In The Middle Attack과 같은 여러 취할 수 있는 문제들을 해결하려 한다.

3) 동시성

① 동시 개발 수행

- 본 연구개발의 핵심은 OpenCV와 Tensorflow를 통한 머신러닝이다. 이 때, 모든 팀원들이 한 번에 같은 개발을 수행하는 것은 비효율적일 수 있으므로 OpenCV와 Tensorflow의 틀을 동시 개발한다. 이후 모든 통합 개발까지 마친 시점에서 기준치를 설정할 때, Tensorflow는 스스로 학습을 수행하며 동시개발을 이루어 효율적인 연구를 진행하려 한다.

나. 연구개발 인력분배

본 연구에는 여러 세부목표가 있지만, 이 세부 목표 또한 각각 다각도로 접근 및 개발이 가능하다. 따라서 각각의 팀원들이 따로 개발을 수행하는 것이 아니라 같은 주제의 개발을 여러 가지 방향으로 구현하려 한다. 또한 머신러닝과 같이 난이도가 있는 분야에 대해서는 머신러닝 내에서도 분야를 나누어 각각의 분야에 리더를 맡아 해당 내용의 세부 수행을 이끌어 나가기로 하였다.
특히 불을 탐지하는 기준점이 매우 중요하게 작용하기 때문에 팀원 모두가 각자 자신의 연구 결과 및 조사 결과를 모아 좋은 Output을 내는 결과 값을 채택하는 방법으로 연구를 진행하려 한다. 따라서 모든 연구를 협업하여 진행함으로써 가장 효율적인 산출물을 제작하려 한다.

다. 연구개발 추진일정

1) Gantt Chart

연구 개발 내용	추진 일정
	9월	10월				11월					12월
	28	5	12	19	26	2	9	16	23	30	7	14
주제 구체화
개발 계획 수립
개발 환경 구성
Tensorflow 개발						①
OpenCV 개발							②
통합 작업								③
OpenCV 기준치 적용									④
CloudSever 알리미										⑤
Tensorflow 학습												⑥
시연준비
시연
자료수집
Testing

[그림 7] Gantt Chart

2) Milestone

월 / 주차	구분			마일스톤 명	개발기간		비고
					시작일	종료일
11월 / 1주차				머신 러닝을 위한 Tensorflow 기본 틀 제작	2016.10.12	2016.11.2	데이터(사진)를 넣으면 분석하는 기본 틀 제작
		①
11월 / 2주차				화재 감지 1차 식별을 위한 OpenCV 개발	2016.10.12	2016.11.9	영상 분석 및 1차적인 화재 탐지 수행 틀 제작
		②
11월 / 3주차				OpenCV와 Tensorflow의 통합 작업	2016.11.9	2016.11.16	Tensorflow와 OpenCV를 연동하여 단일 처리 개발
		③
11월 / 4주차				OpenCV 기준치 적용	2016.11.2	2016.11.23	1차식별 시 불 탐지의 정확도를 향상
		④
11월 / 5주차				CloudSever에서 고객 및 신고대 알리미 제작	2016.11.23	2016.11.30	사용자에게 문자 전송을 통한 알림 기능 개발
		⑤
12월 / 3주차				Tensorflow 학습을 이용한 화재 2차 정밀 탐지	2016.10.26	2016.12.14	화재 사진을 넣을 경우 이를 불로 탐지하는 정확도 향상
		⑥

[그림 8] Milestone