<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
		<id>https://capstone.uos.ac.kr/cdc/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%EC%B1%8C%EB%A6%B0%EC%A0%80%EC%8A%A4%EC%A1%B0</id>
		<title>cdc wiki - 사용자 기여 [ko]</title>
		<link rel="self" type="application/atom+xml" href="https://capstone.uos.ac.kr/cdc/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%EC%B1%8C%EB%A6%B0%EC%A0%80%EC%8A%A4%EC%A1%B0"/>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php/%ED%8A%B9%EC%88%98:%EA%B8%B0%EC%97%AC/%EC%B1%8C%EB%A6%B0%EC%A0%80%EC%8A%A4%EC%A1%B0"/>
		<updated>2026-06-10T15:17:09Z</updated>
		<subtitle>사용자 기여</subtitle>
		<generator>MediaWiki 1.28.2</generator>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=1030</id>
		<title>DnA(Digital and Actor)조</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=1030"/>
				<updated>2018-12-26T00:31:04Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: /* 완료 작품의 소개 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==프로젝트 개요==&lt;br /&gt;
=== 기술개발 과제 ===&lt;br /&gt;
''' 국문 : ''' 디지털 액터 : 얼굴 표정과 표현&lt;br /&gt;
&lt;br /&gt;
''' 영문 : ''' Digital Actor : facial expression, emotion&lt;br /&gt;
&lt;br /&gt;
===과제 팀명===&lt;br /&gt;
DnA (Digital and Actor)&lt;br /&gt;
&lt;br /&gt;
===지도교수===&lt;br /&gt;
홍의경 교수님&lt;br /&gt;
&lt;br /&gt;
===개발기간===&lt;br /&gt;
2018년 9월 ~ 2018년 12월 (총 4개월)&lt;br /&gt;
&lt;br /&gt;
===구성원 소개===&lt;br /&gt;
서울시립대학교 통계학과 20xxxxx0xx 전ㅇㅇ(팀장)&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
==서론==&lt;br /&gt;
===개발 과제의 개요===&lt;br /&gt;
====개발 과제 요약====&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상에서 프레임을 추출하여 각 얼굴 사진의 특징점을 인식하고 Optical Flow 알고리즘을 이용하여 특징점의 움직임을 추적한다. 추적한 특징점의 벡터를 아바타에 적용하여 동영상에서 사람의 표정 변화를 캐릭터가 따라하도록 만든다. 아바타 사진을 연결하여 gif파일로 만들어 마찬가지로 사람의 표정 변화를 캐릭터가 똑같이 따라할 수 있도록 한다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 배경 및 효과====&lt;br /&gt;
◇ 디지털 액터(Digital Actor)란 실제 배우와 동일한 수준의 외형과 동작을 구현할 수 있는 컴퓨터 그래픽(DG) 영상 캐릭터를 의미한다. 킹콩, 요다 등의 실존 인물이 아닌 캐릭터를 만들거나 현실에서 불가능한 장면을 연출하는 등 영상 특수효과, 3D 애니메이션, 게임, VR과 같은 곳에 사용된다. &lt;br /&gt;
&lt;br /&gt;
◇ 모션캡쳐 장비는 현실적인 움직임으로 퀄리티 높은 영상을 보여줄 수 있지만 상당히 고가의 물건이다. 사람의 얼굴 표정을 학습하여 자연스럽게 아바타로 옮길 수 있다면 높은 CG처리 비용을 줄일 수 있을 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
◇ 현재 국내 VR과 AR의 국내 시장의 규모가 점점 넓어지고 있으며 관련 업계에 따르면 그 사장 규모는 2020년 지금의 4~5배 수준으로 성장할 전망이라고 한다. 더딘 기술 진행속도로 인해 개발 속도도 느리지만 기술이 발전할수록 그 성장 속도가 급격히 증가할 것으로 예상되기 때문에 그 속도를 맞추기 위해서는 미리 개발을 준비하는 등의 행동이 필요하다. 이에 관련 기술을 직접 구현해봄으로써 미래의 VR/AR 산업에 보탬이 될 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 목표 및 내용====&lt;br /&gt;
◇ SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)&lt;br /&gt;
&lt;br /&gt;
● 대표적인 특징점 추출 알고리즘&lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘(interest point extraction algorithm)은 2차원 영상의 일정 지역에 해당하는 화소를 이용하여, 영상의 특징이 될 수 있는 특징점을 추출하는 알고리즘이다. 이때 특징점은 코너(corner) 및 블랍(blob)을 의미한다. &lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘에는 SIFT(Scale Invariant Feature Transform), PCA 등 다른 방법도 있지만 인식률과 처리 속도면에서 더 우수한 SURF 알고리즘을 사용한다.&lt;br /&gt;
&lt;br /&gt;
● 블러이미지나 회전된 이미지는 잘 인식하는 장점이 있는 반면 뷰포인트나 조명이 달라지면 특징점을 잘 잡아내지 못하는 단점이 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 SURF에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow&lt;br /&gt;
&lt;br /&gt;
● 두 개의 연속된 비디오 프레임 사이에 이미지 객체의 동작 패턴을 의미한다.&lt;br /&gt;
&lt;br /&gt;
● 이미지 객체의 움직임 패턴은 객체 자체가 움직이거나 카메라의 움직임으로 인해 생성되는데 이전 프레임이랑 다음 프레임 중 변하는 부분의 움직임을 추적&lt;br /&gt;
&lt;br /&gt;
● 보통 움직임을 통한 구조 분석, 비디오 압축, 영상이 흔들렸거나 블러가 된 경우 깨끗한 영상으로 처리하는 기술인 Video Stabilization 분야에 사용된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lucas-Kanade&lt;br /&gt;
&lt;br /&gt;
● Optical Flow알고리즘에는 다양한 알고리즘이 있으나  Lucas-Kanade방법을 이용하기로 한다.&lt;br /&gt;
&lt;br /&gt;
● 한 프레임의 각 피셀 윈도우를 설정하고 다음 프레임에서 이 윈도우와 가장 잘 매칭되는 곳을 찾는 원리로 작동한다.&lt;br /&gt;
&lt;br /&gt;
● 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적다는 장점이 있다.&lt;br /&gt;
&lt;br /&gt;
● 좁은 지역의 윈도우를 사용하기 때문에 이 윈도우보다 큰 움직임이 발생하였을 경우 움직임을 계산하지 못하며 특징점을 사용하여 optical flow를 얻기 때문에 dense optical flow에 비하여 정확도가 낮은 편이다.&lt;br /&gt;
&lt;br /&gt;
● 윈도우를 벗어나는 큰 움직임을 계산하지 못하는 단점을 개선하기 위해 Pyramids Lucas-Kanade 방법을 사용할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 Lucas-Kanade에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
===관련 기술의 현황===&lt;br /&gt;
====관련 기술의 현황 및 분석(State of art)====&lt;br /&gt;
*전 세계적인 기술현황&lt;br /&gt;
&lt;br /&gt;
◇ 페이스웨어 Live&lt;br /&gt;
&lt;br /&gt;
마커리스 3D 페이셜 모션 캡처 솔루션 제공을 선도하는 페이스웨어 테크놀러지(Faceware Technologies, 이하 페이스웨어)가  23일 향상된 실시간 얼굴 모션캡처와 애니메이션 제품인 페이스웨어 라이브(Faceware Live) 2.5 버전을 발표했다. 페이스웨어 라이브는 실시간으로 사용자 얼굴을 자동 추적하고, 얼굴의 움직임을 페이셜 모델에 즉각 적용시킨 페이셜 애니메이션을 생성한다. 페이스웨어 라이브는 움직임 트래킹을 위해 단 하나의 카메라를 사용하며,  컴퓨터에 연결된 비디오나 웹캠, 페이스웨어 GoPro, Pro HD 헤드캠 시스템, 그밖에 다른 비디오 캡처 장비들을 카메라로 사용할 수 있다. 페이스웨어 라이브 2.5는 디지털캐릭터와 결합된 라이브 공연, 즉 디지털 캐릭터들이 관객이나 사람들과 라이브로 인터랙션이 가능한 실시간 인형극이나  테마파크, 쇼핑몰 내부의 키오스크 스크린 상에서 실시간 상호작용 디지털 캐릭터로 활용될 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:2.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 삼성 갤럭시S9의 AR 이모지&lt;br /&gt;
&lt;br /&gt;
카메라로 촬영한 인물 사진을 기반으로 아바타를 만들 수 있는 기능이다. AR 이모지를 만들면 18개 다양한 감정을 표현할 수 있는 gif 이모티콘이 추가되어 메세지, SNS 등에서 이용 가능하다. 눈, 코, 입, 뺨, 이마 등 100개 이상의 얼굴 특징점을 인식 및 분석해 피사체의 표정을 실시간으로 따라해서 동영상으로 촬영할 수 있다. 이외에도 안경을 착용하거나 피부 색깔, 헤어스타일, 헤어컬러, 의상 등을 변경할 수 있다. 하지만 세밀하지 못한 인물 묘사 방식에 논란이 있었다.&lt;br /&gt;
&lt;br /&gt;
[[파일:3.jpg]]&lt;br /&gt;
[[파일:4.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 애플 iOS11, iOS12의 애니모티콘, 미모지&lt;br /&gt;
&lt;br /&gt;
애플 사의 애니모티콘(애니모지)은 전면 카메라로 촬영한 인물사진을 기반으로 사용자의 표정을 읽은 후, 기존에 있던 이모지에 투사하여 이모티콘을 만들 수 있는 기능이다. 사용자의 얼굴에 3만개 이상의 도트를 투사해 얼굴 맵을 만든 후, 3D 스캔 활용을 통해 50개 이상의 각기 다른 근육의 움직임을 포착하고 분석한다. 분석한 세밀한 표정을 외계인, 고양이, 닭, 개, 여우, 원숭이, 판다. 돼지, 곰돌이, 토끼, 로봇, 유니콘 등 내장된 12개의 애니모티콘에 투영시킨다. 하지만 최근 iOS12의 기능으로 애니모티콘의 개인화 버전인 미모지(memoji)가 발표되었는데, 한정된 캐릭터의 폭을 늘리고 얼굴, 머리, 장신구를 자신의 취향에 맞게 선택할 수 있다. 생성한 애니모티콘을 편집할 수 있으며 아이폰의 메시지 앱에서 이용할 수 있다. 또한 목소리를 녹음하여 오디오가 포함된 비디오 형태로 수신할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:5.jpg]]&lt;br /&gt;
[[파일:6.jpg]]&lt;br /&gt;
&lt;br /&gt;
*특허조사 및 특허 전략 분석&lt;br /&gt;
&lt;br /&gt;
◇ SIFT(Scale Invariant Feature Transform) 알고리즘&lt;br /&gt;
&lt;br /&gt;
● Lowe David G 교수가 개발하였으며 97년도부터 연구하여 프로토 타입의 SIFT알고리즘을 99년도에 발표하였고, 04년도에는 이 알고리즘을 더욱 개량하여 완성된 SIFT알고리즘을 만들게 되었다.&lt;br /&gt;
&lt;br /&gt;
● 영상의 크기와 회전에 불변하는 특징점을 추출하는 알고리즘이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:7.jpg]]&lt;br /&gt;
&lt;br /&gt;
1) Scale-space extrema detection &lt;br /&gt;
&lt;br /&gt;
● Gaussian Pyramid를 생성 한 후 DoG(Difference of Gaussian)을 구해서 극점인 부분을 특징점 후보자로 잡아 준다.&lt;br /&gt;
&lt;br /&gt;
● DoG의 상위와 하위 층까지 모두 합쳐 주변 26개 보다 크거나 모두 작을 때만 특징점 후보자로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이 방법은 특징점을 Scale별로 구하게 되어 Target 물체가 작아져도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:8.jpg]]&lt;br /&gt;
&lt;br /&gt;
2) KeyPoint Localization &lt;br /&gt;
&lt;br /&gt;
● 테일러 급수를 사용하여 더 정확한 극점을 찾은 뒤 테일러 급수로 interpolation하여 그 점의 값을 구하여 특징점 후보자 중에서 정확하지 않는 특징점을 제거한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Orientation Assignment &lt;br /&gt;
&lt;br /&gt;
● 추출된 특징점마다 주 방향을 할당해 주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● 특징점 주변으로 16x16영역을 할당한 후 그 영역 이미지를 Gaussian Blurring을 적용하면 특징점 주변의 영역에 대한 Gradient의 방향과 크기를 결정하게 된다.&lt;br /&gt;
&lt;br /&gt;
● Gradient의 방향과 크기를 구하면 Orientation Histogram을 형성한 후, 가장 값이 큰 것을 해당 Orientation으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
● 회전에 대한 정보가 들어 있기 때문에 물체가 회전해도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
4) KeyPoint Descriptor&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 마다 서술자를 생성해주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● Gaussian Weight Function을 활용하여 서술자를 생성하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 주변으로 16x16의 pixel 영역을 할당하여 아래의 &amp;lt;그림 14&amp;gt;과 같이 Image Gradients를 구한다. 그 후, 서술자 Window 크기의 반값을 Gaussian Weighted function에 곱해주게 된다.&lt;br /&gt;
&lt;br /&gt;
[[파일:9.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 다음으로 히스토그램을 그려주게 되는데 그 전에 먼저 앞에서 구한 Orientation을 빼줘서 Descriptor가 회전에 불변하도록 만들어 준다.&lt;br /&gt;
&lt;br /&gt;
● 객체인식을 할 때는 DB의 각 특징점의 Descriptor를 가지고, 인식할 물체 영상의 Descriptor와 비교하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이때 비슷하면 데이터가 비슷하게 나올 텐데 여기서 사용하는 방법은 유클리드 거리이다.&lt;br /&gt;
● 유클리드 거리의 방식은 연산식이 간단하여 많은 특징점 데이터를 비교하는데 속도면에서 성능이 좋아 많이 사용되는 방식이다. &lt;br /&gt;
&lt;br /&gt;
● 매칭 단계까지 수행되면 DB의 특징점들과 Target의 특징점들 중 매칭된 특징점들이 추출되어 원하는 물체가 어디에 위치하는지 알 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:10.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇SURF&lt;br /&gt;
&lt;br /&gt;
● 알고리즘 순서도 : 특징점 추출 → 주 방향 결정 → descriptor 생성&lt;br /&gt;
&lt;br /&gt;
1) 특징점 추출&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● 수식을 이용하여 적분 영상을 생성한다.&lt;br /&gt;
&lt;br /&gt;
● 적분 영상이란 픽셀 밝기 값을 누적한 형태를 뜻함&lt;br /&gt;
&lt;br /&gt;
● D영역의 밝기 누적 값을 알고 싶다면 ii(4)+ii(1)-ii(2)-ii(3)식을 이용하여 쉽게 D영역의 밝기 누적값을 구할 수 있다.&lt;br /&gt;
&lt;br /&gt;
● 적분영상을 만든 후 헤이시안(Hessian)검출기를 사용하여 특징점을 검출한다. (헤이시안 검출기는 헤이시안 행렬 기반인 특징점 검출 알고리즘으로써 정확성이 높고 행렬식이 최대값인 위치에서 blob을 검출 할 때 사용하게 된다)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● SURF에서는 Hessian_Laplace Detector를 사용하는 대신에 위의 공식대로 FAST Hessian Detector 을 사용하여 수행성능을 향상시킨다.&lt;br /&gt;
&lt;br /&gt;
2) Dxx, Dyy, Dxy박스 필터를 구하는 방법&lt;br /&gt;
&lt;br /&gt;
● Haar Wavelet을 이용 - Dxx와 Dyy를 구할 때는 검은 영역부분을 -2, 흰영역부분은 1을 곱하여 구하고 Dxy는 검은 영역을 -1, 흰영역을 1을 곱하여 구한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) 9x9 박스필터를 이용한 Dxx, Dyy, Dxy를 구하는 방식&lt;br /&gt;
&lt;br /&gt;
● Hessian Determinant 데이터를 이용하여 각 필터 사이즈 별로 특징점을 검출하게 된다. 필터 사이즈란 위의 Dxx, Dyy, Dxy를 구하는 박스필터 영역 사이즈를 의미한다. SURF에서는 박스 필터 영역을 Scale해서 특징점을 추출해 aliasing 이 없는 장점을 가지고 있다.  Hessian Determinant 데이터를 각 픽셀마다 구했으면 각각의 Threshold와 비교하게 된다. &lt;br /&gt;
&lt;br /&gt;
● Threshold보다 값이 크면, 인접한 8개의 픽셀의 Hessian Determinant를 비교하여 큰 값인지 비교하게 된다. 만약 큰 값이면 상하 박스 필터 사이즈의 3x3크기의 각 9개의 Hessina Determinant를 비교하여 가장 클 경우 특징점으로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) 주 방향 결정&lt;br /&gt;
&lt;br /&gt;
● 특징점 중심으로 특징점이 검출된 스케일 정보 s를 이용하여 반지름이 6s의 원 안의 픽셀들에 대하여 x방향과 y방향으로 Haar Wavelet Response인 dx와 dy를 구하게 된다. 윈도우 5도 간격으로 회전하면서 60도 윈도우 내의 벡터의 크기를 더해 가장 큰 크기를 가지는 방향을 특징점의 주 방향으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
5) descriptor 생성&lt;br /&gt;
&lt;br /&gt;
● descriptor는 특징점 주변의 일정한 영역 내에 이웃하고 있는 픽셀의 밝기 변화를 나타낸다.&lt;br /&gt;
&lt;br /&gt;
[[파일:11.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 주 방향과 scale정보 s를 이용하여 특징점 중심으로 20s크기의 윈도우를 위의 그림처럼 구성하고, 구성된 윈도우를 4X4 영역으로 분할하여 16개의 영역으로 나눈다. 분할된 각 영역을 다시 한번 5X5크기로 분할하여 각 픽셀을 haar wavelet filter를 사용하여 각 를 구하여 16개의 영역에 각 위의 4개의 Descriptor를 생성하여 총 64개의 Descriptor를 생성할 수 있게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*기술 로드맵&lt;br /&gt;
&lt;br /&gt;
[[파일:12.jpg]]&lt;br /&gt;
&lt;br /&gt;
====시장상황에 대한 분석====&lt;br /&gt;
&lt;br /&gt;
*경쟁제품 조사 비교&lt;br /&gt;
&lt;br /&gt;
◇ Avatar SDK&lt;br /&gt;
&lt;br /&gt;
하나의 2D 정면 얼굴 사진을 입력하면 3D 아바타 생성 SDK를 사용하여 개인의 아바타를 만들어준다. 딥러닝과 컴퓨터 그래픽 기술을 이용하여 개발하였고, 현재 cloud나 PC, Mac, Android, iOS 환경 모두 이용 가능하다. 아바타로의 변환에는 사진마다 차이가 있지만 약 10초가 소요된다. 만들어진 아바타는 Blendshape, 헤어스타일, 헤어컬러를 변경할 수 있고, 윙크, 웃음, 하품 등 몇몇 특정 표정 변화가 가능하다. 그림은 Avatar SDK를 이용하여 왼쪽 상단의 사진을 입력으로 아바타를 생성한 사진이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:13.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ Mirror AI&lt;br /&gt;
&lt;br /&gt;
스마트폰으로 한장의 셀프 사진을 찍으면, 이를 바탕으로 자신의 모습을 한 몇 백개의 이모지를 생성하여 메신저에서 사용할 수 있는 키보드 어플리케이션이다. 현재 다양한 언어를 지원하고, iOS 10.0 버전 이상만 사용할 수 있다. 학습한 모델을 통해 사람의 얼굴 특징을 식별하고, 이에 맞게 수초 내에 사람의 얼굴 특징을 추려내어 이모티콘을 만든다. 생성된 이모티콘은 이 키보드 어플리케이션을 사용하여 어떤 메신저에서든 사용할 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:14.jpg]]&lt;br /&gt;
&lt;br /&gt;
*마케팅 전략 제시&lt;br /&gt;
&lt;br /&gt;
[[파일:15.jpg]]&lt;br /&gt;
&lt;br /&gt;
===개발과제의 기대효과===&lt;br /&gt;
====기술적 기대효과====&lt;br /&gt;
&lt;br /&gt;
◇ 영화 촬영시 기존에는 모션 센서들을 부착하여 배우들의 표정을 읽어와 캐릭터의 표정과 매핑시켜 부착하는데까지 시간이 오래 걸렸고 많은 기술들이 필요되었는데 만약 이 프로젝트가 성공하게 될 경우, 배우가 표정을 짓는 것만으로 쉽게 캐릭터에 매핑될 수 있도록 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자기가 원하는 캐릭터나 다른 인물 모습의 자신과 같은 표정을 짓는 영상을 만들 수 있을 것이다.&lt;br /&gt;
&lt;br /&gt;
====경제적, 사회적 기대 및 파급효과====&lt;br /&gt;
&lt;br /&gt;
◇ 기존에 영화 촬영시 모션 캡쳐에 필요했던 장비들이 없어도 원하는 캐릭터의 표정을 구현할 수 있어 제작비 절감의 효과가 기대된다. &lt;br /&gt;
&lt;br /&gt;
◇ 현재 실존하지 않는 배우의 모습에 표정을 매핑하여 실제로 연기하는 것처럼 보이게 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자신의 표정을 다른 캐릭터로 매핑함으로써 원래 영상보다 감정 표현을 훨씬 극대화할 수 있다.&lt;br /&gt;
&lt;br /&gt;
===기술개발 일정 및 추진체계===&lt;br /&gt;
====개발 일정====&lt;br /&gt;
&lt;br /&gt;
[[파일:16.jpg]]&lt;br /&gt;
&lt;br /&gt;
====구성원 및 추진체계====&lt;br /&gt;
&lt;br /&gt;
◇ 전ㅇㅇ(팀장) &lt;br /&gt;
&lt;br /&gt;
● SURF를 이용하여 얼굴 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원)&lt;br /&gt;
&lt;br /&gt;
● TwinGAN을 이용하여 모델링 및 검증을 진행한다.&lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원) &lt;br /&gt;
&lt;br /&gt;
● Facial Expression Research Group Database인 FREG-DG를 수집한다.&lt;br /&gt;
&lt;br /&gt;
◇ 전원&lt;br /&gt;
&lt;br /&gt;
● Digital Actor의 세부 영역인 표정을 인식하고 그 표정을 제어할 수 있는 두 가지 영역을 포함할 수 있는 주제를 선정한다.&lt;br /&gt;
&lt;br /&gt;
● 필요한 알고리즘, 데이터 셋 등을 조사 후 개발에 대비한다.&lt;br /&gt;
&lt;br /&gt;
● Optical Flow를 이용하여 벡터 움직임을 추적한 뒤 TwinGAN 결과로 나온 캐릭터에 대입한다.&lt;br /&gt;
&lt;br /&gt;
==설계==&lt;br /&gt;
===설계사양===&lt;br /&gt;
====개발 환경====&lt;br /&gt;
	- Ubuntu 18.04 &lt;br /&gt;
&lt;br /&gt;
		- python2.7에서 caffe, dlib, opencv 등 이용	&lt;br /&gt;
&lt;br /&gt;
	- Matlab2018b&lt;br /&gt;
&lt;br /&gt;
	- 프로세스 : CPU 4개&lt;br /&gt;
&lt;br /&gt;
===개념설계안===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 동영상을 ‘Free Video to JPG Converter’를 이용하여 동영상에서 사진을 원하는 프레임 수를 지정하여 JPG파일을 추출한다. &lt;br /&gt;
&lt;br /&gt;
[[파일:17.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 추출한 JPG파일에 SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)는 대표적인 특징점 추출 알고리즘으로 2차원 영상의 일정 지역에 해당하는 화소를 이용하여 특징점을 추출한다. OpenCV에서 제공하는 함수를 사용한다.&lt;br /&gt;
&lt;br /&gt;
[[파일:18.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow 알고리즘을 이용하여 이전 프레임이랑 다음 프레임, 두 개의 연속된 얼굴 프레임 사이에 동작 패턴을 추적한다. Optical Flow 알고리즘 중 Lucas-Kanade(LK)는 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적어 비교적 속도가 빠르기 때문에 Lucas-Kanade를 사용한다.&lt;br /&gt;
&lt;br /&gt;
[[파일:19.jpg]]&lt;br /&gt;
[[파일:20.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 추적한 특징점의 벡터를 각 프레임 아바타에 적용한다.&lt;br /&gt;
&lt;br /&gt;
===이론적 계산 및 시뮬레이션===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상 입력 -&amp;gt; 표정을 따라하는 캐릭터 영상 출력&lt;br /&gt;
&lt;br /&gt;
[[파일:21.jpg]]&lt;br /&gt;
&lt;br /&gt;
===소프트웨어 설계===&lt;br /&gt;
&lt;br /&gt;
[[파일:22.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;전체 설계도&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. ‘Free Video to JPG Converter’를 이용하여 동영상을 여러 프레임의 사진으로 전환한다. &lt;br /&gt;
&lt;br /&gt;
2. 각각의 사진들로부터 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
3. 특징점들의 변화를 이용하여 Optical Flow를 이용하여 특징점의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
4. 1번의 결과 추출된 여러 사진들 중 첫 번째 사진을 TwinGAN을 이용하여 캐릭터로 변환 후 변환된 캐릭터의 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
5. 3번에서 추적한 Optical Flow를 4번에 적용하여 gif파일로 변환한다.&lt;br /&gt;
&lt;br /&gt;
==결과 및 평가==&lt;br /&gt;
===완료 작품의 소개===&lt;br /&gt;
&lt;br /&gt;
====SW 특징====&lt;br /&gt;
&lt;br /&gt;
◇ 사람의 표정변화가 담긴 동영상을 준비한 뒤 프레임별로 파일을 저장한다.&lt;br /&gt;
&lt;br /&gt;
◇ 프레임별로 저장된 파일에서 각각의 face-landmark을 추출하여 얼굴 특징점들을 저장한 뒤 첫번째 프레임을 기준으로 나머지 프레임들간의 특징점들의 위치의 차이를 저장한 뒤 이를 생성한 캐릭터에 추출한 변화를 각각 저장후 그 값을 배열로 저장 후 Image Warping한다. &lt;br /&gt;
&lt;br /&gt;
◇ warping한 이미지를 다시 연결하여 사람의 표정의 움직임을 따라하는 캐릭터 gif 파일을 만든다.&lt;br /&gt;
&lt;br /&gt;
====SW 기능====&lt;br /&gt;
&lt;br /&gt;
◇ 다양한 표정을 짓는 사람의 동영상을 입력 시, 그 표정을 따라하는 캐릭터 gif 파일을 생성한다.&lt;br /&gt;
&lt;br /&gt;
====SW 구조====&lt;br /&gt;
&lt;br /&gt;
[[파일:23.jpg]]&lt;br /&gt;
&lt;br /&gt;
====오픈소스와 tools====&lt;br /&gt;
◇ 사용한 프로그래밍언어 : python, matlab&lt;br /&gt;
&lt;br /&gt;
◇ OpenFace : https://github.com/qiexing/face-landmark-localization 코드 참고&lt;br /&gt;
&lt;br /&gt;
◇ Image Warping : https://github.com/sirajulsalekin/Image-warping 코드 참고&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====소스코드====&lt;br /&gt;
◇ 소스코드는 3.5에서 서술한 opensource를 이용하였으며 필요한 부분은 추가하였다.&lt;br /&gt;
&lt;br /&gt;
◇ OpenFace에서는 각 특징점들을 nx2행렬로 변환하는 작업을 추가하였으며, 각 특징점들의 위치를 Image Warping에서 이용하기 위하여 필요한 값들을 변형시키는 작업을 진행하였다. &lt;br /&gt;
&lt;br /&gt;
◇ 얼굴 이미지의 변형을 위해 받은 특징점들을 표시해주기 위해 고정되어있던 특징점의 개수와 위치가 유동적으로 바뀔 수 있도록 수정하였다. 그리고 이미지 워핑을 위해서는 특징점들에 대한 들 로네 삼각 분할 (Delaunay Triangulation)을 이용해 계산한 값이 필요하기 때문에 delaunay() 함수를 이용하여 계산한 값을 넣어주었다. 또한, 변형 하려는 이미지의 범위를 수정하여 해당 범위 내에서 이미지 워핑이 일어나도록 하였다. &lt;br /&gt;
&lt;br /&gt;
◇ 추가로 동영상의 파일을 frame단위로 잘라내는 작업과, Image Warping의 결과 생성된 이미지들을 엮어 gif파일로 변환하는 작업을 추가하였다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====SW설치====&lt;br /&gt;
&lt;br /&gt;
◇ python2.7&lt;br /&gt;
&lt;br /&gt;
caffe - 특징점 찍기 위함&lt;br /&gt;
&lt;br /&gt;
dlib - 특징점 찍기 위함&lt;br /&gt;
&lt;br /&gt;
matplotlib.plot - 특징점이 잘 찍혔는지 확인 위함 &lt;br /&gt;
&lt;br /&gt;
imageio - 이미지를 읽어오기 위함&lt;br /&gt;
&lt;br /&gt;
glob - 이미지를 저장하기 위함&lt;br /&gt;
&lt;br /&gt;
matlab - Image Warping을 위함&lt;br /&gt;
&lt;br /&gt;
opencv - 특징점을 찍기 위함, 동영상을 프레임 단위로 자르기 위함&lt;br /&gt;
&lt;br /&gt;
====완료 작품의 평가====&lt;br /&gt;
&lt;br /&gt;
[[파일:24.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 평가 결과&lt;br /&gt;
&lt;br /&gt;
1. 응답시간&lt;br /&gt;
&lt;br /&gt;
- 딥러닝을 이용하여 얼굴의 특징점들을 잡기 때문에 딥러닝을 사용하지 않을 것이라 생각했던 10s을 초과하여 파일의 크기에 따라 소요시간이 늘어남.&lt;br /&gt;
&lt;br /&gt;
- python만을 사용하려는 기존 계획과는 다르게 matlab의 프레임워크도 추가적으로 사용하여 실제 예상 시간보다 더 소요됨.&lt;br /&gt;
&lt;br /&gt;
2. 표정의 유사성&lt;br /&gt;
&lt;br /&gt;
- 변경하고자하는 이미지의 초기 표정과 동영상의 초기표정이 유사하지 않아 부자연스러운 부분이 발생함. &lt;br /&gt;
&lt;br /&gt;
3. 표정 변화의 자연스러움&lt;br /&gt;
&lt;br /&gt;
- 촬영한 동영상의 얼굴이 고정되어있지 않고 미세하게 움직이며, openface가 아래 사진과 같이 이마부분은 인식하지 않는 등 landmark로 인식하는 부분이 한정되어 있기 때문에 변환 시키고자 하는 얼굴의 일부분만 움직임을 확인할 수 있음&lt;br /&gt;
&lt;br /&gt;
[[파일:25.jpg]]&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:23.jpg&amp;diff=1027</id>
		<title>파일:23.jpg</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:23.jpg&amp;diff=1027"/>
				<updated>2018-12-25T18:04:40Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: 챌린저스조님이 파일:23.jpg의 새 판을 올렸습니다&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=1026</id>
		<title>DnA(Digital and Actor)조</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=1026"/>
				<updated>2018-12-25T18:04:07Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: /* SW설치 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==프로젝트 개요==&lt;br /&gt;
=== 기술개발 과제 ===&lt;br /&gt;
''' 국문 : ''' 디지털 액터 : 얼굴 표정과 표현&lt;br /&gt;
&lt;br /&gt;
''' 영문 : ''' Digital Actor : facial expression, emotion&lt;br /&gt;
&lt;br /&gt;
===과제 팀명===&lt;br /&gt;
DnA (Digital and Actor)&lt;br /&gt;
&lt;br /&gt;
===지도교수===&lt;br /&gt;
홍의경 교수님&lt;br /&gt;
&lt;br /&gt;
===개발기간===&lt;br /&gt;
2018년 9월 ~ 2018년 12월 (총 4개월)&lt;br /&gt;
&lt;br /&gt;
===구성원 소개===&lt;br /&gt;
서울시립대학교 통계학과 20xxxxx0xx 전ㅇㅇ(팀장)&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
==서론==&lt;br /&gt;
===개발 과제의 개요===&lt;br /&gt;
====개발 과제 요약====&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상에서 프레임을 추출하여 각 얼굴 사진의 특징점을 인식하고 Optical Flow 알고리즘을 이용하여 특징점의 움직임을 추적한다. 추적한 특징점의 벡터를 아바타에 적용하여 동영상에서 사람의 표정 변화를 캐릭터가 따라하도록 만든다. 아바타 사진을 연결하여 gif파일로 만들어 마찬가지로 사람의 표정 변화를 캐릭터가 똑같이 따라할 수 있도록 한다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 배경 및 효과====&lt;br /&gt;
◇ 디지털 액터(Digital Actor)란 실제 배우와 동일한 수준의 외형과 동작을 구현할 수 있는 컴퓨터 그래픽(DG) 영상 캐릭터를 의미한다. 킹콩, 요다 등의 실존 인물이 아닌 캐릭터를 만들거나 현실에서 불가능한 장면을 연출하는 등 영상 특수효과, 3D 애니메이션, 게임, VR과 같은 곳에 사용된다. &lt;br /&gt;
&lt;br /&gt;
◇ 모션캡쳐 장비는 현실적인 움직임으로 퀄리티 높은 영상을 보여줄 수 있지만 상당히 고가의 물건이다. 사람의 얼굴 표정을 학습하여 자연스럽게 아바타로 옮길 수 있다면 높은 CG처리 비용을 줄일 수 있을 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
◇ 현재 국내 VR과 AR의 국내 시장의 규모가 점점 넓어지고 있으며 관련 업계에 따르면 그 사장 규모는 2020년 지금의 4~5배 수준으로 성장할 전망이라고 한다. 더딘 기술 진행속도로 인해 개발 속도도 느리지만 기술이 발전할수록 그 성장 속도가 급격히 증가할 것으로 예상되기 때문에 그 속도를 맞추기 위해서는 미리 개발을 준비하는 등의 행동이 필요하다. 이에 관련 기술을 직접 구현해봄으로써 미래의 VR/AR 산업에 보탬이 될 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 목표 및 내용====&lt;br /&gt;
◇ SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)&lt;br /&gt;
&lt;br /&gt;
● 대표적인 특징점 추출 알고리즘&lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘(interest point extraction algorithm)은 2차원 영상의 일정 지역에 해당하는 화소를 이용하여, 영상의 특징이 될 수 있는 특징점을 추출하는 알고리즘이다. 이때 특징점은 코너(corner) 및 블랍(blob)을 의미한다. &lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘에는 SIFT(Scale Invariant Feature Transform), PCA 등 다른 방법도 있지만 인식률과 처리 속도면에서 더 우수한 SURF 알고리즘을 사용한다.&lt;br /&gt;
&lt;br /&gt;
● 블러이미지나 회전된 이미지는 잘 인식하는 장점이 있는 반면 뷰포인트나 조명이 달라지면 특징점을 잘 잡아내지 못하는 단점이 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 SURF에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow&lt;br /&gt;
&lt;br /&gt;
● 두 개의 연속된 비디오 프레임 사이에 이미지 객체의 동작 패턴을 의미한다.&lt;br /&gt;
&lt;br /&gt;
● 이미지 객체의 움직임 패턴은 객체 자체가 움직이거나 카메라의 움직임으로 인해 생성되는데 이전 프레임이랑 다음 프레임 중 변하는 부분의 움직임을 추적&lt;br /&gt;
&lt;br /&gt;
● 보통 움직임을 통한 구조 분석, 비디오 압축, 영상이 흔들렸거나 블러가 된 경우 깨끗한 영상으로 처리하는 기술인 Video Stabilization 분야에 사용된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lucas-Kanade&lt;br /&gt;
&lt;br /&gt;
● Optical Flow알고리즘에는 다양한 알고리즘이 있으나  Lucas-Kanade방법을 이용하기로 한다.&lt;br /&gt;
&lt;br /&gt;
● 한 프레임의 각 피셀 윈도우를 설정하고 다음 프레임에서 이 윈도우와 가장 잘 매칭되는 곳을 찾는 원리로 작동한다.&lt;br /&gt;
&lt;br /&gt;
● 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적다는 장점이 있다.&lt;br /&gt;
&lt;br /&gt;
● 좁은 지역의 윈도우를 사용하기 때문에 이 윈도우보다 큰 움직임이 발생하였을 경우 움직임을 계산하지 못하며 특징점을 사용하여 optical flow를 얻기 때문에 dense optical flow에 비하여 정확도가 낮은 편이다.&lt;br /&gt;
&lt;br /&gt;
● 윈도우를 벗어나는 큰 움직임을 계산하지 못하는 단점을 개선하기 위해 Pyramids Lucas-Kanade 방법을 사용할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 Lucas-Kanade에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
===관련 기술의 현황===&lt;br /&gt;
====관련 기술의 현황 및 분석(State of art)====&lt;br /&gt;
*전 세계적인 기술현황&lt;br /&gt;
&lt;br /&gt;
◇ 페이스웨어 Live&lt;br /&gt;
&lt;br /&gt;
마커리스 3D 페이셜 모션 캡처 솔루션 제공을 선도하는 페이스웨어 테크놀러지(Faceware Technologies, 이하 페이스웨어)가  23일 향상된 실시간 얼굴 모션캡처와 애니메이션 제품인 페이스웨어 라이브(Faceware Live) 2.5 버전을 발표했다. 페이스웨어 라이브는 실시간으로 사용자 얼굴을 자동 추적하고, 얼굴의 움직임을 페이셜 모델에 즉각 적용시킨 페이셜 애니메이션을 생성한다. 페이스웨어 라이브는 움직임 트래킹을 위해 단 하나의 카메라를 사용하며,  컴퓨터에 연결된 비디오나 웹캠, 페이스웨어 GoPro, Pro HD 헤드캠 시스템, 그밖에 다른 비디오 캡처 장비들을 카메라로 사용할 수 있다. 페이스웨어 라이브 2.5는 디지털캐릭터와 결합된 라이브 공연, 즉 디지털 캐릭터들이 관객이나 사람들과 라이브로 인터랙션이 가능한 실시간 인형극이나  테마파크, 쇼핑몰 내부의 키오스크 스크린 상에서 실시간 상호작용 디지털 캐릭터로 활용될 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:2.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 삼성 갤럭시S9의 AR 이모지&lt;br /&gt;
&lt;br /&gt;
카메라로 촬영한 인물 사진을 기반으로 아바타를 만들 수 있는 기능이다. AR 이모지를 만들면 18개 다양한 감정을 표현할 수 있는 gif 이모티콘이 추가되어 메세지, SNS 등에서 이용 가능하다. 눈, 코, 입, 뺨, 이마 등 100개 이상의 얼굴 특징점을 인식 및 분석해 피사체의 표정을 실시간으로 따라해서 동영상으로 촬영할 수 있다. 이외에도 안경을 착용하거나 피부 색깔, 헤어스타일, 헤어컬러, 의상 등을 변경할 수 있다. 하지만 세밀하지 못한 인물 묘사 방식에 논란이 있었다.&lt;br /&gt;
&lt;br /&gt;
[[파일:3.jpg]]&lt;br /&gt;
[[파일:4.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 애플 iOS11, iOS12의 애니모티콘, 미모지&lt;br /&gt;
&lt;br /&gt;
애플 사의 애니모티콘(애니모지)은 전면 카메라로 촬영한 인물사진을 기반으로 사용자의 표정을 읽은 후, 기존에 있던 이모지에 투사하여 이모티콘을 만들 수 있는 기능이다. 사용자의 얼굴에 3만개 이상의 도트를 투사해 얼굴 맵을 만든 후, 3D 스캔 활용을 통해 50개 이상의 각기 다른 근육의 움직임을 포착하고 분석한다. 분석한 세밀한 표정을 외계인, 고양이, 닭, 개, 여우, 원숭이, 판다. 돼지, 곰돌이, 토끼, 로봇, 유니콘 등 내장된 12개의 애니모티콘에 투영시킨다. 하지만 최근 iOS12의 기능으로 애니모티콘의 개인화 버전인 미모지(memoji)가 발표되었는데, 한정된 캐릭터의 폭을 늘리고 얼굴, 머리, 장신구를 자신의 취향에 맞게 선택할 수 있다. 생성한 애니모티콘을 편집할 수 있으며 아이폰의 메시지 앱에서 이용할 수 있다. 또한 목소리를 녹음하여 오디오가 포함된 비디오 형태로 수신할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:5.jpg]]&lt;br /&gt;
[[파일:6.jpg]]&lt;br /&gt;
&lt;br /&gt;
*특허조사 및 특허 전략 분석&lt;br /&gt;
&lt;br /&gt;
◇ SIFT(Scale Invariant Feature Transform) 알고리즘&lt;br /&gt;
&lt;br /&gt;
● Lowe David G 교수가 개발하였으며 97년도부터 연구하여 프로토 타입의 SIFT알고리즘을 99년도에 발표하였고, 04년도에는 이 알고리즘을 더욱 개량하여 완성된 SIFT알고리즘을 만들게 되었다.&lt;br /&gt;
&lt;br /&gt;
● 영상의 크기와 회전에 불변하는 특징점을 추출하는 알고리즘이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:7.jpg]]&lt;br /&gt;
&lt;br /&gt;
1) Scale-space extrema detection &lt;br /&gt;
&lt;br /&gt;
● Gaussian Pyramid를 생성 한 후 DoG(Difference of Gaussian)을 구해서 극점인 부분을 특징점 후보자로 잡아 준다.&lt;br /&gt;
&lt;br /&gt;
● DoG의 상위와 하위 층까지 모두 합쳐 주변 26개 보다 크거나 모두 작을 때만 특징점 후보자로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이 방법은 특징점을 Scale별로 구하게 되어 Target 물체가 작아져도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:8.jpg]]&lt;br /&gt;
&lt;br /&gt;
2) KeyPoint Localization &lt;br /&gt;
&lt;br /&gt;
● 테일러 급수를 사용하여 더 정확한 극점을 찾은 뒤 테일러 급수로 interpolation하여 그 점의 값을 구하여 특징점 후보자 중에서 정확하지 않는 특징점을 제거한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Orientation Assignment &lt;br /&gt;
&lt;br /&gt;
● 추출된 특징점마다 주 방향을 할당해 주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● 특징점 주변으로 16x16영역을 할당한 후 그 영역 이미지를 Gaussian Blurring을 적용하면 특징점 주변의 영역에 대한 Gradient의 방향과 크기를 결정하게 된다.&lt;br /&gt;
&lt;br /&gt;
● Gradient의 방향과 크기를 구하면 Orientation Histogram을 형성한 후, 가장 값이 큰 것을 해당 Orientation으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
● 회전에 대한 정보가 들어 있기 때문에 물체가 회전해도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
4) KeyPoint Descriptor&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 마다 서술자를 생성해주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● Gaussian Weight Function을 활용하여 서술자를 생성하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 주변으로 16x16의 pixel 영역을 할당하여 아래의 &amp;lt;그림 14&amp;gt;과 같이 Image Gradients를 구한다. 그 후, 서술자 Window 크기의 반값을 Gaussian Weighted function에 곱해주게 된다.&lt;br /&gt;
&lt;br /&gt;
[[파일:9.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 다음으로 히스토그램을 그려주게 되는데 그 전에 먼저 앞에서 구한 Orientation을 빼줘서 Descriptor가 회전에 불변하도록 만들어 준다.&lt;br /&gt;
&lt;br /&gt;
● 객체인식을 할 때는 DB의 각 특징점의 Descriptor를 가지고, 인식할 물체 영상의 Descriptor와 비교하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이때 비슷하면 데이터가 비슷하게 나올 텐데 여기서 사용하는 방법은 유클리드 거리이다.&lt;br /&gt;
● 유클리드 거리의 방식은 연산식이 간단하여 많은 특징점 데이터를 비교하는데 속도면에서 성능이 좋아 많이 사용되는 방식이다. &lt;br /&gt;
&lt;br /&gt;
● 매칭 단계까지 수행되면 DB의 특징점들과 Target의 특징점들 중 매칭된 특징점들이 추출되어 원하는 물체가 어디에 위치하는지 알 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:10.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇SURF&lt;br /&gt;
&lt;br /&gt;
● 알고리즘 순서도 : 특징점 추출 → 주 방향 결정 → descriptor 생성&lt;br /&gt;
&lt;br /&gt;
1) 특징점 추출&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● 수식을 이용하여 적분 영상을 생성한다.&lt;br /&gt;
&lt;br /&gt;
● 적분 영상이란 픽셀 밝기 값을 누적한 형태를 뜻함&lt;br /&gt;
&lt;br /&gt;
● D영역의 밝기 누적 값을 알고 싶다면 ii(4)+ii(1)-ii(2)-ii(3)식을 이용하여 쉽게 D영역의 밝기 누적값을 구할 수 있다.&lt;br /&gt;
&lt;br /&gt;
● 적분영상을 만든 후 헤이시안(Hessian)검출기를 사용하여 특징점을 검출한다. (헤이시안 검출기는 헤이시안 행렬 기반인 특징점 검출 알고리즘으로써 정확성이 높고 행렬식이 최대값인 위치에서 blob을 검출 할 때 사용하게 된다)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● SURF에서는 Hessian_Laplace Detector를 사용하는 대신에 위의 공식대로 FAST Hessian Detector 을 사용하여 수행성능을 향상시킨다.&lt;br /&gt;
&lt;br /&gt;
2) Dxx, Dyy, Dxy박스 필터를 구하는 방법&lt;br /&gt;
&lt;br /&gt;
● Haar Wavelet을 이용 - Dxx와 Dyy를 구할 때는 검은 영역부분을 -2, 흰영역부분은 1을 곱하여 구하고 Dxy는 검은 영역을 -1, 흰영역을 1을 곱하여 구한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) 9x9 박스필터를 이용한 Dxx, Dyy, Dxy를 구하는 방식&lt;br /&gt;
&lt;br /&gt;
● Hessian Determinant 데이터를 이용하여 각 필터 사이즈 별로 특징점을 검출하게 된다. 필터 사이즈란 위의 Dxx, Dyy, Dxy를 구하는 박스필터 영역 사이즈를 의미한다. SURF에서는 박스 필터 영역을 Scale해서 특징점을 추출해 aliasing 이 없는 장점을 가지고 있다.  Hessian Determinant 데이터를 각 픽셀마다 구했으면 각각의 Threshold와 비교하게 된다. &lt;br /&gt;
&lt;br /&gt;
● Threshold보다 값이 크면, 인접한 8개의 픽셀의 Hessian Determinant를 비교하여 큰 값인지 비교하게 된다. 만약 큰 값이면 상하 박스 필터 사이즈의 3x3크기의 각 9개의 Hessina Determinant를 비교하여 가장 클 경우 특징점으로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) 주 방향 결정&lt;br /&gt;
&lt;br /&gt;
● 특징점 중심으로 특징점이 검출된 스케일 정보 s를 이용하여 반지름이 6s의 원 안의 픽셀들에 대하여 x방향과 y방향으로 Haar Wavelet Response인 dx와 dy를 구하게 된다. 윈도우 5도 간격으로 회전하면서 60도 윈도우 내의 벡터의 크기를 더해 가장 큰 크기를 가지는 방향을 특징점의 주 방향으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
5) descriptor 생성&lt;br /&gt;
&lt;br /&gt;
● descriptor는 특징점 주변의 일정한 영역 내에 이웃하고 있는 픽셀의 밝기 변화를 나타낸다.&lt;br /&gt;
&lt;br /&gt;
[[파일:11.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 주 방향과 scale정보 s를 이용하여 특징점 중심으로 20s크기의 윈도우를 위의 그림처럼 구성하고, 구성된 윈도우를 4X4 영역으로 분할하여 16개의 영역으로 나눈다. 분할된 각 영역을 다시 한번 5X5크기로 분할하여 각 픽셀을 haar wavelet filter를 사용하여 각 를 구하여 16개의 영역에 각 위의 4개의 Descriptor를 생성하여 총 64개의 Descriptor를 생성할 수 있게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*기술 로드맵&lt;br /&gt;
&lt;br /&gt;
[[파일:12.jpg]]&lt;br /&gt;
&lt;br /&gt;
====시장상황에 대한 분석====&lt;br /&gt;
&lt;br /&gt;
*경쟁제품 조사 비교&lt;br /&gt;
&lt;br /&gt;
◇ Avatar SDK&lt;br /&gt;
&lt;br /&gt;
하나의 2D 정면 얼굴 사진을 입력하면 3D 아바타 생성 SDK를 사용하여 개인의 아바타를 만들어준다. 딥러닝과 컴퓨터 그래픽 기술을 이용하여 개발하였고, 현재 cloud나 PC, Mac, Android, iOS 환경 모두 이용 가능하다. 아바타로의 변환에는 사진마다 차이가 있지만 약 10초가 소요된다. 만들어진 아바타는 Blendshape, 헤어스타일, 헤어컬러를 변경할 수 있고, 윙크, 웃음, 하품 등 몇몇 특정 표정 변화가 가능하다. 그림은 Avatar SDK를 이용하여 왼쪽 상단의 사진을 입력으로 아바타를 생성한 사진이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:13.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ Mirror AI&lt;br /&gt;
&lt;br /&gt;
스마트폰으로 한장의 셀프 사진을 찍으면, 이를 바탕으로 자신의 모습을 한 몇 백개의 이모지를 생성하여 메신저에서 사용할 수 있는 키보드 어플리케이션이다. 현재 다양한 언어를 지원하고, iOS 10.0 버전 이상만 사용할 수 있다. 학습한 모델을 통해 사람의 얼굴 특징을 식별하고, 이에 맞게 수초 내에 사람의 얼굴 특징을 추려내어 이모티콘을 만든다. 생성된 이모티콘은 이 키보드 어플리케이션을 사용하여 어떤 메신저에서든 사용할 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:14.jpg]]&lt;br /&gt;
&lt;br /&gt;
*마케팅 전략 제시&lt;br /&gt;
&lt;br /&gt;
[[파일:15.jpg]]&lt;br /&gt;
&lt;br /&gt;
===개발과제의 기대효과===&lt;br /&gt;
====기술적 기대효과====&lt;br /&gt;
&lt;br /&gt;
◇ 영화 촬영시 기존에는 모션 센서들을 부착하여 배우들의 표정을 읽어와 캐릭터의 표정과 매핑시켜 부착하는데까지 시간이 오래 걸렸고 많은 기술들이 필요되었는데 만약 이 프로젝트가 성공하게 될 경우, 배우가 표정을 짓는 것만으로 쉽게 캐릭터에 매핑될 수 있도록 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자기가 원하는 캐릭터나 다른 인물 모습의 자신과 같은 표정을 짓는 영상을 만들 수 있을 것이다.&lt;br /&gt;
&lt;br /&gt;
====경제적, 사회적 기대 및 파급효과====&lt;br /&gt;
&lt;br /&gt;
◇ 기존에 영화 촬영시 모션 캡쳐에 필요했던 장비들이 없어도 원하는 캐릭터의 표정을 구현할 수 있어 제작비 절감의 효과가 기대된다. &lt;br /&gt;
&lt;br /&gt;
◇ 현재 실존하지 않는 배우의 모습에 표정을 매핑하여 실제로 연기하는 것처럼 보이게 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자신의 표정을 다른 캐릭터로 매핑함으로써 원래 영상보다 감정 표현을 훨씬 극대화할 수 있다.&lt;br /&gt;
&lt;br /&gt;
===기술개발 일정 및 추진체계===&lt;br /&gt;
====개발 일정====&lt;br /&gt;
&lt;br /&gt;
[[파일:16.jpg]]&lt;br /&gt;
&lt;br /&gt;
====구성원 및 추진체계====&lt;br /&gt;
&lt;br /&gt;
◇ 전ㅇㅇ(팀장) &lt;br /&gt;
&lt;br /&gt;
● SURF를 이용하여 얼굴 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원)&lt;br /&gt;
&lt;br /&gt;
● TwinGAN을 이용하여 모델링 및 검증을 진행한다.&lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원) &lt;br /&gt;
&lt;br /&gt;
● Facial Expression Research Group Database인 FREG-DG를 수집한다.&lt;br /&gt;
&lt;br /&gt;
◇ 전원&lt;br /&gt;
&lt;br /&gt;
● Digital Actor의 세부 영역인 표정을 인식하고 그 표정을 제어할 수 있는 두 가지 영역을 포함할 수 있는 주제를 선정한다.&lt;br /&gt;
&lt;br /&gt;
● 필요한 알고리즘, 데이터 셋 등을 조사 후 개발에 대비한다.&lt;br /&gt;
&lt;br /&gt;
● Optical Flow를 이용하여 벡터 움직임을 추적한 뒤 TwinGAN 결과로 나온 캐릭터에 대입한다.&lt;br /&gt;
&lt;br /&gt;
==설계==&lt;br /&gt;
===설계사양===&lt;br /&gt;
====개발 환경====&lt;br /&gt;
	- Ubuntu 18.04 &lt;br /&gt;
&lt;br /&gt;
		- python2.7에서 caffe, dlib, opencv 등 이용	&lt;br /&gt;
&lt;br /&gt;
	- Matlab2018b&lt;br /&gt;
&lt;br /&gt;
	- 프로세스 : CPU 4개&lt;br /&gt;
&lt;br /&gt;
===개념설계안===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 동영상을 ‘Free Video to JPG Converter’를 이용하여 동영상에서 사진을 원하는 프레임 수를 지정하여 JPG파일을 추출한다. &lt;br /&gt;
&lt;br /&gt;
[[파일:17.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 추출한 JPG파일에 SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)는 대표적인 특징점 추출 알고리즘으로 2차원 영상의 일정 지역에 해당하는 화소를 이용하여 특징점을 추출한다. OpenCV에서 제공하는 함수를 사용한다.&lt;br /&gt;
&lt;br /&gt;
[[파일:18.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow 알고리즘을 이용하여 이전 프레임이랑 다음 프레임, 두 개의 연속된 얼굴 프레임 사이에 동작 패턴을 추적한다. Optical Flow 알고리즘 중 Lucas-Kanade(LK)는 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적어 비교적 속도가 빠르기 때문에 Lucas-Kanade를 사용한다.&lt;br /&gt;
&lt;br /&gt;
[[파일:19.jpg]]&lt;br /&gt;
[[파일:20.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 추적한 특징점의 벡터를 각 프레임 아바타에 적용한다.&lt;br /&gt;
&lt;br /&gt;
===이론적 계산 및 시뮬레이션===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상 입력 -&amp;gt; 표정을 따라하는 캐릭터 영상 출력&lt;br /&gt;
&lt;br /&gt;
[[파일:21.jpg]]&lt;br /&gt;
&lt;br /&gt;
===소프트웨어 설계===&lt;br /&gt;
&lt;br /&gt;
[[파일:22.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;전체 설계도&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. ‘Free Video to JPG Converter’를 이용하여 동영상을 여러 프레임의 사진으로 전환한다. &lt;br /&gt;
&lt;br /&gt;
2. 각각의 사진들로부터 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
3. 특징점들의 변화를 이용하여 Optical Flow를 이용하여 특징점의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
4. 1번의 결과 추출된 여러 사진들 중 첫 번째 사진을 TwinGAN을 이용하여 캐릭터로 변환 후 변환된 캐릭터의 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
5. 3번에서 추적한 Optical Flow를 4번에 적용하여 gif파일로 변환한다.&lt;br /&gt;
&lt;br /&gt;
==결과 및 평가==&lt;br /&gt;
===완료 작품의 소개===&lt;br /&gt;
====프로토타입 사진 혹은 작동 장면====&lt;br /&gt;
내용&lt;br /&gt;
====SW 특징====&lt;br /&gt;
&lt;br /&gt;
◇ 사람의 표정변화가 담긴 동영상을 준비한 뒤 프레임별로 파일을 저장한다.&lt;br /&gt;
&lt;br /&gt;
◇ 프레임별로 저장된 파일에서 각각의 face-landmark을 추출하여 얼굴 특징점들을 저장한 뒤 첫번째 프레임을 기준으로 나머지 프레임들간의 특징점들의 위치의 차이를 저장한 뒤 이를 생성한 캐릭터에 추출한 변화를 각각 저장후 그 값을 배열로 저장 후 Image Warping한다. &lt;br /&gt;
&lt;br /&gt;
◇ warping한 이미지를 다시 연결하여 사람의 표정의 움직임을 따라하는 캐릭터 gif 파일을 만든다.&lt;br /&gt;
&lt;br /&gt;
====SW 기능====&lt;br /&gt;
&lt;br /&gt;
◇ 다양한 표정을 짓는 사람의 동영상을 입력 시, 그 표정을 따라하는 캐릭터 gif 파일을 생성한다.&lt;br /&gt;
&lt;br /&gt;
====SW 구조====&lt;br /&gt;
&lt;br /&gt;
[[파일:23.jpg]]&lt;br /&gt;
&lt;br /&gt;
====오픈소스와 tools====&lt;br /&gt;
◇ 사용한 프로그래밍언어 : python, matlab&lt;br /&gt;
&lt;br /&gt;
◇ OpenFace : https://github.com/qiexing/face-landmark-localization 코드 참고&lt;br /&gt;
&lt;br /&gt;
◇ Image Warping : https://github.com/sirajulsalekin/Image-warping 코드 참고&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====소스코드====&lt;br /&gt;
◇ 소스코드는 3.5에서 서술한 opensource를 이용하였으며 필요한 부분은 추가하였다.&lt;br /&gt;
&lt;br /&gt;
◇ OpenFace에서는 각 특징점들을 nx2행렬로 변환하는 작업을 추가하였으며, 각 특징점들의 위치를 Image Warping에서 이용하기 위하여 필요한 값들을 변형시키는 작업을 진행하였다. &lt;br /&gt;
&lt;br /&gt;
◇ 얼굴 이미지의 변형을 위해 받은 특징점들을 표시해주기 위해 고정되어있던 특징점의 개수와 위치가 유동적으로 바뀔 수 있도록 수정하였다. 그리고 이미지 워핑을 위해서는 특징점들에 대한 들 로네 삼각 분할 (Delaunay Triangulation)을 이용해 계산한 값이 필요하기 때문에 delaunay() 함수를 이용하여 계산한 값을 넣어주었다. 또한, 변형 하려는 이미지의 범위를 수정하여 해당 범위 내에서 이미지 워핑이 일어나도록 하였다. &lt;br /&gt;
&lt;br /&gt;
◇ 추가로 동영상의 파일을 frame단위로 잘라내는 작업과, Image Warping의 결과 생성된 이미지들을 엮어 gif파일로 변환하는 작업을 추가하였다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====SW설치====&lt;br /&gt;
&lt;br /&gt;
◇ python2.7&lt;br /&gt;
&lt;br /&gt;
caffe - 특징점 찍기 위함&lt;br /&gt;
&lt;br /&gt;
dlib - 특징점 찍기 위함&lt;br /&gt;
&lt;br /&gt;
matplotlib.plot - 특징점이 잘 찍혔는지 확인 위함 &lt;br /&gt;
&lt;br /&gt;
imageio - 이미지를 읽어오기 위함&lt;br /&gt;
&lt;br /&gt;
glob - 이미지를 저장하기 위함&lt;br /&gt;
&lt;br /&gt;
matlab - Image Warping을 위함&lt;br /&gt;
&lt;br /&gt;
opencv - 특징점을 찍기 위함, 동영상을 프레임 단위로 자르기 위함&lt;br /&gt;
&lt;br /&gt;
====완료 작품의 평가====&lt;br /&gt;
&lt;br /&gt;
[[파일:24.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 평가 결과&lt;br /&gt;
&lt;br /&gt;
1. 응답시간&lt;br /&gt;
&lt;br /&gt;
- 딥러닝을 이용하여 얼굴의 특징점들을 잡기 때문에 딥러닝을 사용하지 않을 것이라 생각했던 10s을 초과하여 파일의 크기에 따라 소요시간이 늘어남.&lt;br /&gt;
&lt;br /&gt;
- python만을 사용하려는 기존 계획과는 다르게 matlab의 프레임워크도 추가적으로 사용하여 실제 예상 시간보다 더 소요됨.&lt;br /&gt;
&lt;br /&gt;
2. 표정의 유사성&lt;br /&gt;
&lt;br /&gt;
- 변경하고자하는 이미지의 초기 표정과 동영상의 초기표정이 유사하지 않아 부자연스러운 부분이 발생함. &lt;br /&gt;
&lt;br /&gt;
3. 표정 변화의 자연스러움&lt;br /&gt;
&lt;br /&gt;
- 촬영한 동영상의 얼굴이 고정되어있지 않고 미세하게 움직이며, openface가 아래 사진과 같이 이마부분은 인식하지 않는 등 landmark로 인식하는 부분이 한정되어 있기 때문에 변환 시키고자 하는 얼굴의 일부분만 움직임을 확인할 수 있음&lt;br /&gt;
&lt;br /&gt;
[[파일:25.jpg]]&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=1025</id>
		<title>DnA(Digital and Actor)조</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=1025"/>
				<updated>2018-12-25T18:03:45Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: /* 결과 및 평가 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==프로젝트 개요==&lt;br /&gt;
=== 기술개발 과제 ===&lt;br /&gt;
''' 국문 : ''' 디지털 액터 : 얼굴 표정과 표현&lt;br /&gt;
&lt;br /&gt;
''' 영문 : ''' Digital Actor : facial expression, emotion&lt;br /&gt;
&lt;br /&gt;
===과제 팀명===&lt;br /&gt;
DnA (Digital and Actor)&lt;br /&gt;
&lt;br /&gt;
===지도교수===&lt;br /&gt;
홍의경 교수님&lt;br /&gt;
&lt;br /&gt;
===개발기간===&lt;br /&gt;
2018년 9월 ~ 2018년 12월 (총 4개월)&lt;br /&gt;
&lt;br /&gt;
===구성원 소개===&lt;br /&gt;
서울시립대학교 통계학과 20xxxxx0xx 전ㅇㅇ(팀장)&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
==서론==&lt;br /&gt;
===개발 과제의 개요===&lt;br /&gt;
====개발 과제 요약====&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상에서 프레임을 추출하여 각 얼굴 사진의 특징점을 인식하고 Optical Flow 알고리즘을 이용하여 특징점의 움직임을 추적한다. 추적한 특징점의 벡터를 아바타에 적용하여 동영상에서 사람의 표정 변화를 캐릭터가 따라하도록 만든다. 아바타 사진을 연결하여 gif파일로 만들어 마찬가지로 사람의 표정 변화를 캐릭터가 똑같이 따라할 수 있도록 한다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 배경 및 효과====&lt;br /&gt;
◇ 디지털 액터(Digital Actor)란 실제 배우와 동일한 수준의 외형과 동작을 구현할 수 있는 컴퓨터 그래픽(DG) 영상 캐릭터를 의미한다. 킹콩, 요다 등의 실존 인물이 아닌 캐릭터를 만들거나 현실에서 불가능한 장면을 연출하는 등 영상 특수효과, 3D 애니메이션, 게임, VR과 같은 곳에 사용된다. &lt;br /&gt;
&lt;br /&gt;
◇ 모션캡쳐 장비는 현실적인 움직임으로 퀄리티 높은 영상을 보여줄 수 있지만 상당히 고가의 물건이다. 사람의 얼굴 표정을 학습하여 자연스럽게 아바타로 옮길 수 있다면 높은 CG처리 비용을 줄일 수 있을 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
◇ 현재 국내 VR과 AR의 국내 시장의 규모가 점점 넓어지고 있으며 관련 업계에 따르면 그 사장 규모는 2020년 지금의 4~5배 수준으로 성장할 전망이라고 한다. 더딘 기술 진행속도로 인해 개발 속도도 느리지만 기술이 발전할수록 그 성장 속도가 급격히 증가할 것으로 예상되기 때문에 그 속도를 맞추기 위해서는 미리 개발을 준비하는 등의 행동이 필요하다. 이에 관련 기술을 직접 구현해봄으로써 미래의 VR/AR 산업에 보탬이 될 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 목표 및 내용====&lt;br /&gt;
◇ SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)&lt;br /&gt;
&lt;br /&gt;
● 대표적인 특징점 추출 알고리즘&lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘(interest point extraction algorithm)은 2차원 영상의 일정 지역에 해당하는 화소를 이용하여, 영상의 특징이 될 수 있는 특징점을 추출하는 알고리즘이다. 이때 특징점은 코너(corner) 및 블랍(blob)을 의미한다. &lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘에는 SIFT(Scale Invariant Feature Transform), PCA 등 다른 방법도 있지만 인식률과 처리 속도면에서 더 우수한 SURF 알고리즘을 사용한다.&lt;br /&gt;
&lt;br /&gt;
● 블러이미지나 회전된 이미지는 잘 인식하는 장점이 있는 반면 뷰포인트나 조명이 달라지면 특징점을 잘 잡아내지 못하는 단점이 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 SURF에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow&lt;br /&gt;
&lt;br /&gt;
● 두 개의 연속된 비디오 프레임 사이에 이미지 객체의 동작 패턴을 의미한다.&lt;br /&gt;
&lt;br /&gt;
● 이미지 객체의 움직임 패턴은 객체 자체가 움직이거나 카메라의 움직임으로 인해 생성되는데 이전 프레임이랑 다음 프레임 중 변하는 부분의 움직임을 추적&lt;br /&gt;
&lt;br /&gt;
● 보통 움직임을 통한 구조 분석, 비디오 압축, 영상이 흔들렸거나 블러가 된 경우 깨끗한 영상으로 처리하는 기술인 Video Stabilization 분야에 사용된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lucas-Kanade&lt;br /&gt;
&lt;br /&gt;
● Optical Flow알고리즘에는 다양한 알고리즘이 있으나  Lucas-Kanade방법을 이용하기로 한다.&lt;br /&gt;
&lt;br /&gt;
● 한 프레임의 각 피셀 윈도우를 설정하고 다음 프레임에서 이 윈도우와 가장 잘 매칭되는 곳을 찾는 원리로 작동한다.&lt;br /&gt;
&lt;br /&gt;
● 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적다는 장점이 있다.&lt;br /&gt;
&lt;br /&gt;
● 좁은 지역의 윈도우를 사용하기 때문에 이 윈도우보다 큰 움직임이 발생하였을 경우 움직임을 계산하지 못하며 특징점을 사용하여 optical flow를 얻기 때문에 dense optical flow에 비하여 정확도가 낮은 편이다.&lt;br /&gt;
&lt;br /&gt;
● 윈도우를 벗어나는 큰 움직임을 계산하지 못하는 단점을 개선하기 위해 Pyramids Lucas-Kanade 방법을 사용할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 Lucas-Kanade에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
===관련 기술의 현황===&lt;br /&gt;
====관련 기술의 현황 및 분석(State of art)====&lt;br /&gt;
*전 세계적인 기술현황&lt;br /&gt;
&lt;br /&gt;
◇ 페이스웨어 Live&lt;br /&gt;
&lt;br /&gt;
마커리스 3D 페이셜 모션 캡처 솔루션 제공을 선도하는 페이스웨어 테크놀러지(Faceware Technologies, 이하 페이스웨어)가  23일 향상된 실시간 얼굴 모션캡처와 애니메이션 제품인 페이스웨어 라이브(Faceware Live) 2.5 버전을 발표했다. 페이스웨어 라이브는 실시간으로 사용자 얼굴을 자동 추적하고, 얼굴의 움직임을 페이셜 모델에 즉각 적용시킨 페이셜 애니메이션을 생성한다. 페이스웨어 라이브는 움직임 트래킹을 위해 단 하나의 카메라를 사용하며,  컴퓨터에 연결된 비디오나 웹캠, 페이스웨어 GoPro, Pro HD 헤드캠 시스템, 그밖에 다른 비디오 캡처 장비들을 카메라로 사용할 수 있다. 페이스웨어 라이브 2.5는 디지털캐릭터와 결합된 라이브 공연, 즉 디지털 캐릭터들이 관객이나 사람들과 라이브로 인터랙션이 가능한 실시간 인형극이나  테마파크, 쇼핑몰 내부의 키오스크 스크린 상에서 실시간 상호작용 디지털 캐릭터로 활용될 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:2.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 삼성 갤럭시S9의 AR 이모지&lt;br /&gt;
&lt;br /&gt;
카메라로 촬영한 인물 사진을 기반으로 아바타를 만들 수 있는 기능이다. AR 이모지를 만들면 18개 다양한 감정을 표현할 수 있는 gif 이모티콘이 추가되어 메세지, SNS 등에서 이용 가능하다. 눈, 코, 입, 뺨, 이마 등 100개 이상의 얼굴 특징점을 인식 및 분석해 피사체의 표정을 실시간으로 따라해서 동영상으로 촬영할 수 있다. 이외에도 안경을 착용하거나 피부 색깔, 헤어스타일, 헤어컬러, 의상 등을 변경할 수 있다. 하지만 세밀하지 못한 인물 묘사 방식에 논란이 있었다.&lt;br /&gt;
&lt;br /&gt;
[[파일:3.jpg]]&lt;br /&gt;
[[파일:4.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 애플 iOS11, iOS12의 애니모티콘, 미모지&lt;br /&gt;
&lt;br /&gt;
애플 사의 애니모티콘(애니모지)은 전면 카메라로 촬영한 인물사진을 기반으로 사용자의 표정을 읽은 후, 기존에 있던 이모지에 투사하여 이모티콘을 만들 수 있는 기능이다. 사용자의 얼굴에 3만개 이상의 도트를 투사해 얼굴 맵을 만든 후, 3D 스캔 활용을 통해 50개 이상의 각기 다른 근육의 움직임을 포착하고 분석한다. 분석한 세밀한 표정을 외계인, 고양이, 닭, 개, 여우, 원숭이, 판다. 돼지, 곰돌이, 토끼, 로봇, 유니콘 등 내장된 12개의 애니모티콘에 투영시킨다. 하지만 최근 iOS12의 기능으로 애니모티콘의 개인화 버전인 미모지(memoji)가 발표되었는데, 한정된 캐릭터의 폭을 늘리고 얼굴, 머리, 장신구를 자신의 취향에 맞게 선택할 수 있다. 생성한 애니모티콘을 편집할 수 있으며 아이폰의 메시지 앱에서 이용할 수 있다. 또한 목소리를 녹음하여 오디오가 포함된 비디오 형태로 수신할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:5.jpg]]&lt;br /&gt;
[[파일:6.jpg]]&lt;br /&gt;
&lt;br /&gt;
*특허조사 및 특허 전략 분석&lt;br /&gt;
&lt;br /&gt;
◇ SIFT(Scale Invariant Feature Transform) 알고리즘&lt;br /&gt;
&lt;br /&gt;
● Lowe David G 교수가 개발하였으며 97년도부터 연구하여 프로토 타입의 SIFT알고리즘을 99년도에 발표하였고, 04년도에는 이 알고리즘을 더욱 개량하여 완성된 SIFT알고리즘을 만들게 되었다.&lt;br /&gt;
&lt;br /&gt;
● 영상의 크기와 회전에 불변하는 특징점을 추출하는 알고리즘이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:7.jpg]]&lt;br /&gt;
&lt;br /&gt;
1) Scale-space extrema detection &lt;br /&gt;
&lt;br /&gt;
● Gaussian Pyramid를 생성 한 후 DoG(Difference of Gaussian)을 구해서 극점인 부분을 특징점 후보자로 잡아 준다.&lt;br /&gt;
&lt;br /&gt;
● DoG의 상위와 하위 층까지 모두 합쳐 주변 26개 보다 크거나 모두 작을 때만 특징점 후보자로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이 방법은 특징점을 Scale별로 구하게 되어 Target 물체가 작아져도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:8.jpg]]&lt;br /&gt;
&lt;br /&gt;
2) KeyPoint Localization &lt;br /&gt;
&lt;br /&gt;
● 테일러 급수를 사용하여 더 정확한 극점을 찾은 뒤 테일러 급수로 interpolation하여 그 점의 값을 구하여 특징점 후보자 중에서 정확하지 않는 특징점을 제거한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Orientation Assignment &lt;br /&gt;
&lt;br /&gt;
● 추출된 특징점마다 주 방향을 할당해 주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● 특징점 주변으로 16x16영역을 할당한 후 그 영역 이미지를 Gaussian Blurring을 적용하면 특징점 주변의 영역에 대한 Gradient의 방향과 크기를 결정하게 된다.&lt;br /&gt;
&lt;br /&gt;
● Gradient의 방향과 크기를 구하면 Orientation Histogram을 형성한 후, 가장 값이 큰 것을 해당 Orientation으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
● 회전에 대한 정보가 들어 있기 때문에 물체가 회전해도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
4) KeyPoint Descriptor&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 마다 서술자를 생성해주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● Gaussian Weight Function을 활용하여 서술자를 생성하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 주변으로 16x16의 pixel 영역을 할당하여 아래의 &amp;lt;그림 14&amp;gt;과 같이 Image Gradients를 구한다. 그 후, 서술자 Window 크기의 반값을 Gaussian Weighted function에 곱해주게 된다.&lt;br /&gt;
&lt;br /&gt;
[[파일:9.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 다음으로 히스토그램을 그려주게 되는데 그 전에 먼저 앞에서 구한 Orientation을 빼줘서 Descriptor가 회전에 불변하도록 만들어 준다.&lt;br /&gt;
&lt;br /&gt;
● 객체인식을 할 때는 DB의 각 특징점의 Descriptor를 가지고, 인식할 물체 영상의 Descriptor와 비교하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이때 비슷하면 데이터가 비슷하게 나올 텐데 여기서 사용하는 방법은 유클리드 거리이다.&lt;br /&gt;
● 유클리드 거리의 방식은 연산식이 간단하여 많은 특징점 데이터를 비교하는데 속도면에서 성능이 좋아 많이 사용되는 방식이다. &lt;br /&gt;
&lt;br /&gt;
● 매칭 단계까지 수행되면 DB의 특징점들과 Target의 특징점들 중 매칭된 특징점들이 추출되어 원하는 물체가 어디에 위치하는지 알 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:10.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇SURF&lt;br /&gt;
&lt;br /&gt;
● 알고리즘 순서도 : 특징점 추출 → 주 방향 결정 → descriptor 생성&lt;br /&gt;
&lt;br /&gt;
1) 특징점 추출&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● 수식을 이용하여 적분 영상을 생성한다.&lt;br /&gt;
&lt;br /&gt;
● 적분 영상이란 픽셀 밝기 값을 누적한 형태를 뜻함&lt;br /&gt;
&lt;br /&gt;
● D영역의 밝기 누적 값을 알고 싶다면 ii(4)+ii(1)-ii(2)-ii(3)식을 이용하여 쉽게 D영역의 밝기 누적값을 구할 수 있다.&lt;br /&gt;
&lt;br /&gt;
● 적분영상을 만든 후 헤이시안(Hessian)검출기를 사용하여 특징점을 검출한다. (헤이시안 검출기는 헤이시안 행렬 기반인 특징점 검출 알고리즘으로써 정확성이 높고 행렬식이 최대값인 위치에서 blob을 검출 할 때 사용하게 된다)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● SURF에서는 Hessian_Laplace Detector를 사용하는 대신에 위의 공식대로 FAST Hessian Detector 을 사용하여 수행성능을 향상시킨다.&lt;br /&gt;
&lt;br /&gt;
2) Dxx, Dyy, Dxy박스 필터를 구하는 방법&lt;br /&gt;
&lt;br /&gt;
● Haar Wavelet을 이용 - Dxx와 Dyy를 구할 때는 검은 영역부분을 -2, 흰영역부분은 1을 곱하여 구하고 Dxy는 검은 영역을 -1, 흰영역을 1을 곱하여 구한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) 9x9 박스필터를 이용한 Dxx, Dyy, Dxy를 구하는 방식&lt;br /&gt;
&lt;br /&gt;
● Hessian Determinant 데이터를 이용하여 각 필터 사이즈 별로 특징점을 검출하게 된다. 필터 사이즈란 위의 Dxx, Dyy, Dxy를 구하는 박스필터 영역 사이즈를 의미한다. SURF에서는 박스 필터 영역을 Scale해서 특징점을 추출해 aliasing 이 없는 장점을 가지고 있다.  Hessian Determinant 데이터를 각 픽셀마다 구했으면 각각의 Threshold와 비교하게 된다. &lt;br /&gt;
&lt;br /&gt;
● Threshold보다 값이 크면, 인접한 8개의 픽셀의 Hessian Determinant를 비교하여 큰 값인지 비교하게 된다. 만약 큰 값이면 상하 박스 필터 사이즈의 3x3크기의 각 9개의 Hessina Determinant를 비교하여 가장 클 경우 특징점으로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) 주 방향 결정&lt;br /&gt;
&lt;br /&gt;
● 특징점 중심으로 특징점이 검출된 스케일 정보 s를 이용하여 반지름이 6s의 원 안의 픽셀들에 대하여 x방향과 y방향으로 Haar Wavelet Response인 dx와 dy를 구하게 된다. 윈도우 5도 간격으로 회전하면서 60도 윈도우 내의 벡터의 크기를 더해 가장 큰 크기를 가지는 방향을 특징점의 주 방향으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
5) descriptor 생성&lt;br /&gt;
&lt;br /&gt;
● descriptor는 특징점 주변의 일정한 영역 내에 이웃하고 있는 픽셀의 밝기 변화를 나타낸다.&lt;br /&gt;
&lt;br /&gt;
[[파일:11.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 주 방향과 scale정보 s를 이용하여 특징점 중심으로 20s크기의 윈도우를 위의 그림처럼 구성하고, 구성된 윈도우를 4X4 영역으로 분할하여 16개의 영역으로 나눈다. 분할된 각 영역을 다시 한번 5X5크기로 분할하여 각 픽셀을 haar wavelet filter를 사용하여 각 를 구하여 16개의 영역에 각 위의 4개의 Descriptor를 생성하여 총 64개의 Descriptor를 생성할 수 있게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*기술 로드맵&lt;br /&gt;
&lt;br /&gt;
[[파일:12.jpg]]&lt;br /&gt;
&lt;br /&gt;
====시장상황에 대한 분석====&lt;br /&gt;
&lt;br /&gt;
*경쟁제품 조사 비교&lt;br /&gt;
&lt;br /&gt;
◇ Avatar SDK&lt;br /&gt;
&lt;br /&gt;
하나의 2D 정면 얼굴 사진을 입력하면 3D 아바타 생성 SDK를 사용하여 개인의 아바타를 만들어준다. 딥러닝과 컴퓨터 그래픽 기술을 이용하여 개발하였고, 현재 cloud나 PC, Mac, Android, iOS 환경 모두 이용 가능하다. 아바타로의 변환에는 사진마다 차이가 있지만 약 10초가 소요된다. 만들어진 아바타는 Blendshape, 헤어스타일, 헤어컬러를 변경할 수 있고, 윙크, 웃음, 하품 등 몇몇 특정 표정 변화가 가능하다. 그림은 Avatar SDK를 이용하여 왼쪽 상단의 사진을 입력으로 아바타를 생성한 사진이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:13.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ Mirror AI&lt;br /&gt;
&lt;br /&gt;
스마트폰으로 한장의 셀프 사진을 찍으면, 이를 바탕으로 자신의 모습을 한 몇 백개의 이모지를 생성하여 메신저에서 사용할 수 있는 키보드 어플리케이션이다. 현재 다양한 언어를 지원하고, iOS 10.0 버전 이상만 사용할 수 있다. 학습한 모델을 통해 사람의 얼굴 특징을 식별하고, 이에 맞게 수초 내에 사람의 얼굴 특징을 추려내어 이모티콘을 만든다. 생성된 이모티콘은 이 키보드 어플리케이션을 사용하여 어떤 메신저에서든 사용할 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:14.jpg]]&lt;br /&gt;
&lt;br /&gt;
*마케팅 전략 제시&lt;br /&gt;
&lt;br /&gt;
[[파일:15.jpg]]&lt;br /&gt;
&lt;br /&gt;
===개발과제의 기대효과===&lt;br /&gt;
====기술적 기대효과====&lt;br /&gt;
&lt;br /&gt;
◇ 영화 촬영시 기존에는 모션 센서들을 부착하여 배우들의 표정을 읽어와 캐릭터의 표정과 매핑시켜 부착하는데까지 시간이 오래 걸렸고 많은 기술들이 필요되었는데 만약 이 프로젝트가 성공하게 될 경우, 배우가 표정을 짓는 것만으로 쉽게 캐릭터에 매핑될 수 있도록 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자기가 원하는 캐릭터나 다른 인물 모습의 자신과 같은 표정을 짓는 영상을 만들 수 있을 것이다.&lt;br /&gt;
&lt;br /&gt;
====경제적, 사회적 기대 및 파급효과====&lt;br /&gt;
&lt;br /&gt;
◇ 기존에 영화 촬영시 모션 캡쳐에 필요했던 장비들이 없어도 원하는 캐릭터의 표정을 구현할 수 있어 제작비 절감의 효과가 기대된다. &lt;br /&gt;
&lt;br /&gt;
◇ 현재 실존하지 않는 배우의 모습에 표정을 매핑하여 실제로 연기하는 것처럼 보이게 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자신의 표정을 다른 캐릭터로 매핑함으로써 원래 영상보다 감정 표현을 훨씬 극대화할 수 있다.&lt;br /&gt;
&lt;br /&gt;
===기술개발 일정 및 추진체계===&lt;br /&gt;
====개발 일정====&lt;br /&gt;
&lt;br /&gt;
[[파일:16.jpg]]&lt;br /&gt;
&lt;br /&gt;
====구성원 및 추진체계====&lt;br /&gt;
&lt;br /&gt;
◇ 전ㅇㅇ(팀장) &lt;br /&gt;
&lt;br /&gt;
● SURF를 이용하여 얼굴 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원)&lt;br /&gt;
&lt;br /&gt;
● TwinGAN을 이용하여 모델링 및 검증을 진행한다.&lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원) &lt;br /&gt;
&lt;br /&gt;
● Facial Expression Research Group Database인 FREG-DG를 수집한다.&lt;br /&gt;
&lt;br /&gt;
◇ 전원&lt;br /&gt;
&lt;br /&gt;
● Digital Actor의 세부 영역인 표정을 인식하고 그 표정을 제어할 수 있는 두 가지 영역을 포함할 수 있는 주제를 선정한다.&lt;br /&gt;
&lt;br /&gt;
● 필요한 알고리즘, 데이터 셋 등을 조사 후 개발에 대비한다.&lt;br /&gt;
&lt;br /&gt;
● Optical Flow를 이용하여 벡터 움직임을 추적한 뒤 TwinGAN 결과로 나온 캐릭터에 대입한다.&lt;br /&gt;
&lt;br /&gt;
==설계==&lt;br /&gt;
===설계사양===&lt;br /&gt;
====개발 환경====&lt;br /&gt;
	- Ubuntu 18.04 &lt;br /&gt;
&lt;br /&gt;
		- python2.7에서 caffe, dlib, opencv 등 이용	&lt;br /&gt;
&lt;br /&gt;
	- Matlab2018b&lt;br /&gt;
&lt;br /&gt;
	- 프로세스 : CPU 4개&lt;br /&gt;
&lt;br /&gt;
===개념설계안===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 동영상을 ‘Free Video to JPG Converter’를 이용하여 동영상에서 사진을 원하는 프레임 수를 지정하여 JPG파일을 추출한다. &lt;br /&gt;
&lt;br /&gt;
[[파일:17.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 추출한 JPG파일에 SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)는 대표적인 특징점 추출 알고리즘으로 2차원 영상의 일정 지역에 해당하는 화소를 이용하여 특징점을 추출한다. OpenCV에서 제공하는 함수를 사용한다.&lt;br /&gt;
&lt;br /&gt;
[[파일:18.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow 알고리즘을 이용하여 이전 프레임이랑 다음 프레임, 두 개의 연속된 얼굴 프레임 사이에 동작 패턴을 추적한다. Optical Flow 알고리즘 중 Lucas-Kanade(LK)는 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적어 비교적 속도가 빠르기 때문에 Lucas-Kanade를 사용한다.&lt;br /&gt;
&lt;br /&gt;
[[파일:19.jpg]]&lt;br /&gt;
[[파일:20.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 추적한 특징점의 벡터를 각 프레임 아바타에 적용한다.&lt;br /&gt;
&lt;br /&gt;
===이론적 계산 및 시뮬레이션===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상 입력 -&amp;gt; 표정을 따라하는 캐릭터 영상 출력&lt;br /&gt;
&lt;br /&gt;
[[파일:21.jpg]]&lt;br /&gt;
&lt;br /&gt;
===소프트웨어 설계===&lt;br /&gt;
&lt;br /&gt;
[[파일:22.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;전체 설계도&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. ‘Free Video to JPG Converter’를 이용하여 동영상을 여러 프레임의 사진으로 전환한다. &lt;br /&gt;
&lt;br /&gt;
2. 각각의 사진들로부터 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
3. 특징점들의 변화를 이용하여 Optical Flow를 이용하여 특징점의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
4. 1번의 결과 추출된 여러 사진들 중 첫 번째 사진을 TwinGAN을 이용하여 캐릭터로 변환 후 변환된 캐릭터의 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
5. 3번에서 추적한 Optical Flow를 4번에 적용하여 gif파일로 변환한다.&lt;br /&gt;
&lt;br /&gt;
==결과 및 평가==&lt;br /&gt;
===완료 작품의 소개===&lt;br /&gt;
====프로토타입 사진 혹은 작동 장면====&lt;br /&gt;
내용&lt;br /&gt;
====SW 특징====&lt;br /&gt;
&lt;br /&gt;
◇ 사람의 표정변화가 담긴 동영상을 준비한 뒤 프레임별로 파일을 저장한다.&lt;br /&gt;
&lt;br /&gt;
◇ 프레임별로 저장된 파일에서 각각의 face-landmark을 추출하여 얼굴 특징점들을 저장한 뒤 첫번째 프레임을 기준으로 나머지 프레임들간의 특징점들의 위치의 차이를 저장한 뒤 이를 생성한 캐릭터에 추출한 변화를 각각 저장후 그 값을 배열로 저장 후 Image Warping한다. &lt;br /&gt;
&lt;br /&gt;
◇ warping한 이미지를 다시 연결하여 사람의 표정의 움직임을 따라하는 캐릭터 gif 파일을 만든다.&lt;br /&gt;
&lt;br /&gt;
====SW 기능====&lt;br /&gt;
&lt;br /&gt;
◇ 다양한 표정을 짓는 사람의 동영상을 입력 시, 그 표정을 따라하는 캐릭터 gif 파일을 생성한다.&lt;br /&gt;
&lt;br /&gt;
====SW 구조====&lt;br /&gt;
&lt;br /&gt;
[[파일:23.jpg]]&lt;br /&gt;
&lt;br /&gt;
====오픈소스와 tools====&lt;br /&gt;
◇ 사용한 프로그래밍언어 : python, matlab&lt;br /&gt;
&lt;br /&gt;
◇ OpenFace : https://github.com/qiexing/face-landmark-localization 코드 참고&lt;br /&gt;
&lt;br /&gt;
◇ Image Warping : https://github.com/sirajulsalekin/Image-warping 코드 참고&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====소스코드====&lt;br /&gt;
◇ 소스코드는 3.5에서 서술한 opensource를 이용하였으며 필요한 부분은 추가하였다.&lt;br /&gt;
&lt;br /&gt;
◇ OpenFace에서는 각 특징점들을 nx2행렬로 변환하는 작업을 추가하였으며, 각 특징점들의 위치를 Image Warping에서 이용하기 위하여 필요한 값들을 변형시키는 작업을 진행하였다. &lt;br /&gt;
&lt;br /&gt;
◇ 얼굴 이미지의 변형을 위해 받은 특징점들을 표시해주기 위해 고정되어있던 특징점의 개수와 위치가 유동적으로 바뀔 수 있도록 수정하였다. 그리고 이미지 워핑을 위해서는 특징점들에 대한 들 로네 삼각 분할 (Delaunay Triangulation)을 이용해 계산한 값이 필요하기 때문에 delaunay() 함수를 이용하여 계산한 값을 넣어주었다. 또한, 변형 하려는 이미지의 범위를 수정하여 해당 범위 내에서 이미지 워핑이 일어나도록 하였다. &lt;br /&gt;
&lt;br /&gt;
◇ 추가로 동영상의 파일을 frame단위로 잘라내는 작업과, Image Warping의 결과 생성된 이미지들을 엮어 gif파일로 변환하는 작업을 추가하였다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====SW설치====&lt;br /&gt;
&lt;br /&gt;
◇ python2.7&lt;br /&gt;
caffe - 특징점 찍기 위함&lt;br /&gt;
dlib - 특징점 찍기 위함&lt;br /&gt;
matplotlib.plot - 특징점이 잘 찍혔는지 확인 위함 &lt;br /&gt;
imageio - 이미지를 읽어오기 위함&lt;br /&gt;
glob - 이미지를 저장하기 위함&lt;br /&gt;
matlab - Image Warping을 위함&lt;br /&gt;
opencv - 특징점을 찍기 위함, 동영상을 프레임 단위로 자르기 위함&lt;br /&gt;
&lt;br /&gt;
====완료 작품의 평가====&lt;br /&gt;
&lt;br /&gt;
[[파일:24.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 평가 결과&lt;br /&gt;
&lt;br /&gt;
1. 응답시간&lt;br /&gt;
&lt;br /&gt;
- 딥러닝을 이용하여 얼굴의 특징점들을 잡기 때문에 딥러닝을 사용하지 않을 것이라 생각했던 10s을 초과하여 파일의 크기에 따라 소요시간이 늘어남.&lt;br /&gt;
&lt;br /&gt;
- python만을 사용하려는 기존 계획과는 다르게 matlab의 프레임워크도 추가적으로 사용하여 실제 예상 시간보다 더 소요됨.&lt;br /&gt;
&lt;br /&gt;
2. 표정의 유사성&lt;br /&gt;
&lt;br /&gt;
- 변경하고자하는 이미지의 초기 표정과 동영상의 초기표정이 유사하지 않아 부자연스러운 부분이 발생함. &lt;br /&gt;
&lt;br /&gt;
3. 표정 변화의 자연스러움&lt;br /&gt;
&lt;br /&gt;
- 촬영한 동영상의 얼굴이 고정되어있지 않고 미세하게 움직이며, openface가 아래 사진과 같이 이마부분은 인식하지 않는 등 landmark로 인식하는 부분이 한정되어 있기 때문에 변환 시키고자 하는 얼굴의 일부분만 움직임을 확인할 수 있음&lt;br /&gt;
&lt;br /&gt;
[[파일:25.jpg]]&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=1024</id>
		<title>DnA(Digital and Actor)조</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=1024"/>
				<updated>2018-12-25T18:03:06Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: /* 완료 작품의 평가 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==프로젝트 개요==&lt;br /&gt;
=== 기술개발 과제 ===&lt;br /&gt;
''' 국문 : ''' 디지털 액터 : 얼굴 표정과 표현&lt;br /&gt;
&lt;br /&gt;
''' 영문 : ''' Digital Actor : facial expression, emotion&lt;br /&gt;
&lt;br /&gt;
===과제 팀명===&lt;br /&gt;
DnA (Digital and Actor)&lt;br /&gt;
&lt;br /&gt;
===지도교수===&lt;br /&gt;
홍의경 교수님&lt;br /&gt;
&lt;br /&gt;
===개발기간===&lt;br /&gt;
2018년 9월 ~ 2018년 12월 (총 4개월)&lt;br /&gt;
&lt;br /&gt;
===구성원 소개===&lt;br /&gt;
서울시립대학교 통계학과 20xxxxx0xx 전ㅇㅇ(팀장)&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
==서론==&lt;br /&gt;
===개발 과제의 개요===&lt;br /&gt;
====개발 과제 요약====&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상에서 프레임을 추출하여 각 얼굴 사진의 특징점을 인식하고 Optical Flow 알고리즘을 이용하여 특징점의 움직임을 추적한다. 추적한 특징점의 벡터를 아바타에 적용하여 동영상에서 사람의 표정 변화를 캐릭터가 따라하도록 만든다. 아바타 사진을 연결하여 gif파일로 만들어 마찬가지로 사람의 표정 변화를 캐릭터가 똑같이 따라할 수 있도록 한다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 배경 및 효과====&lt;br /&gt;
◇ 디지털 액터(Digital Actor)란 실제 배우와 동일한 수준의 외형과 동작을 구현할 수 있는 컴퓨터 그래픽(DG) 영상 캐릭터를 의미한다. 킹콩, 요다 등의 실존 인물이 아닌 캐릭터를 만들거나 현실에서 불가능한 장면을 연출하는 등 영상 특수효과, 3D 애니메이션, 게임, VR과 같은 곳에 사용된다. &lt;br /&gt;
&lt;br /&gt;
◇ 모션캡쳐 장비는 현실적인 움직임으로 퀄리티 높은 영상을 보여줄 수 있지만 상당히 고가의 물건이다. 사람의 얼굴 표정을 학습하여 자연스럽게 아바타로 옮길 수 있다면 높은 CG처리 비용을 줄일 수 있을 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
◇ 현재 국내 VR과 AR의 국내 시장의 규모가 점점 넓어지고 있으며 관련 업계에 따르면 그 사장 규모는 2020년 지금의 4~5배 수준으로 성장할 전망이라고 한다. 더딘 기술 진행속도로 인해 개발 속도도 느리지만 기술이 발전할수록 그 성장 속도가 급격히 증가할 것으로 예상되기 때문에 그 속도를 맞추기 위해서는 미리 개발을 준비하는 등의 행동이 필요하다. 이에 관련 기술을 직접 구현해봄으로써 미래의 VR/AR 산업에 보탬이 될 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 목표 및 내용====&lt;br /&gt;
◇ SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)&lt;br /&gt;
&lt;br /&gt;
● 대표적인 특징점 추출 알고리즘&lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘(interest point extraction algorithm)은 2차원 영상의 일정 지역에 해당하는 화소를 이용하여, 영상의 특징이 될 수 있는 특징점을 추출하는 알고리즘이다. 이때 특징점은 코너(corner) 및 블랍(blob)을 의미한다. &lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘에는 SIFT(Scale Invariant Feature Transform), PCA 등 다른 방법도 있지만 인식률과 처리 속도면에서 더 우수한 SURF 알고리즘을 사용한다.&lt;br /&gt;
&lt;br /&gt;
● 블러이미지나 회전된 이미지는 잘 인식하는 장점이 있는 반면 뷰포인트나 조명이 달라지면 특징점을 잘 잡아내지 못하는 단점이 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 SURF에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow&lt;br /&gt;
&lt;br /&gt;
● 두 개의 연속된 비디오 프레임 사이에 이미지 객체의 동작 패턴을 의미한다.&lt;br /&gt;
&lt;br /&gt;
● 이미지 객체의 움직임 패턴은 객체 자체가 움직이거나 카메라의 움직임으로 인해 생성되는데 이전 프레임이랑 다음 프레임 중 변하는 부분의 움직임을 추적&lt;br /&gt;
&lt;br /&gt;
● 보통 움직임을 통한 구조 분석, 비디오 압축, 영상이 흔들렸거나 블러가 된 경우 깨끗한 영상으로 처리하는 기술인 Video Stabilization 분야에 사용된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lucas-Kanade&lt;br /&gt;
&lt;br /&gt;
● Optical Flow알고리즘에는 다양한 알고리즘이 있으나  Lucas-Kanade방법을 이용하기로 한다.&lt;br /&gt;
&lt;br /&gt;
● 한 프레임의 각 피셀 윈도우를 설정하고 다음 프레임에서 이 윈도우와 가장 잘 매칭되는 곳을 찾는 원리로 작동한다.&lt;br /&gt;
&lt;br /&gt;
● 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적다는 장점이 있다.&lt;br /&gt;
&lt;br /&gt;
● 좁은 지역의 윈도우를 사용하기 때문에 이 윈도우보다 큰 움직임이 발생하였을 경우 움직임을 계산하지 못하며 특징점을 사용하여 optical flow를 얻기 때문에 dense optical flow에 비하여 정확도가 낮은 편이다.&lt;br /&gt;
&lt;br /&gt;
● 윈도우를 벗어나는 큰 움직임을 계산하지 못하는 단점을 개선하기 위해 Pyramids Lucas-Kanade 방법을 사용할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 Lucas-Kanade에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
===관련 기술의 현황===&lt;br /&gt;
====관련 기술의 현황 및 분석(State of art)====&lt;br /&gt;
*전 세계적인 기술현황&lt;br /&gt;
&lt;br /&gt;
◇ 페이스웨어 Live&lt;br /&gt;
&lt;br /&gt;
마커리스 3D 페이셜 모션 캡처 솔루션 제공을 선도하는 페이스웨어 테크놀러지(Faceware Technologies, 이하 페이스웨어)가  23일 향상된 실시간 얼굴 모션캡처와 애니메이션 제품인 페이스웨어 라이브(Faceware Live) 2.5 버전을 발표했다. 페이스웨어 라이브는 실시간으로 사용자 얼굴을 자동 추적하고, 얼굴의 움직임을 페이셜 모델에 즉각 적용시킨 페이셜 애니메이션을 생성한다. 페이스웨어 라이브는 움직임 트래킹을 위해 단 하나의 카메라를 사용하며,  컴퓨터에 연결된 비디오나 웹캠, 페이스웨어 GoPro, Pro HD 헤드캠 시스템, 그밖에 다른 비디오 캡처 장비들을 카메라로 사용할 수 있다. 페이스웨어 라이브 2.5는 디지털캐릭터와 결합된 라이브 공연, 즉 디지털 캐릭터들이 관객이나 사람들과 라이브로 인터랙션이 가능한 실시간 인형극이나  테마파크, 쇼핑몰 내부의 키오스크 스크린 상에서 실시간 상호작용 디지털 캐릭터로 활용될 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:2.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 삼성 갤럭시S9의 AR 이모지&lt;br /&gt;
&lt;br /&gt;
카메라로 촬영한 인물 사진을 기반으로 아바타를 만들 수 있는 기능이다. AR 이모지를 만들면 18개 다양한 감정을 표현할 수 있는 gif 이모티콘이 추가되어 메세지, SNS 등에서 이용 가능하다. 눈, 코, 입, 뺨, 이마 등 100개 이상의 얼굴 특징점을 인식 및 분석해 피사체의 표정을 실시간으로 따라해서 동영상으로 촬영할 수 있다. 이외에도 안경을 착용하거나 피부 색깔, 헤어스타일, 헤어컬러, 의상 등을 변경할 수 있다. 하지만 세밀하지 못한 인물 묘사 방식에 논란이 있었다.&lt;br /&gt;
&lt;br /&gt;
[[파일:3.jpg]]&lt;br /&gt;
[[파일:4.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 애플 iOS11, iOS12의 애니모티콘, 미모지&lt;br /&gt;
&lt;br /&gt;
애플 사의 애니모티콘(애니모지)은 전면 카메라로 촬영한 인물사진을 기반으로 사용자의 표정을 읽은 후, 기존에 있던 이모지에 투사하여 이모티콘을 만들 수 있는 기능이다. 사용자의 얼굴에 3만개 이상의 도트를 투사해 얼굴 맵을 만든 후, 3D 스캔 활용을 통해 50개 이상의 각기 다른 근육의 움직임을 포착하고 분석한다. 분석한 세밀한 표정을 외계인, 고양이, 닭, 개, 여우, 원숭이, 판다. 돼지, 곰돌이, 토끼, 로봇, 유니콘 등 내장된 12개의 애니모티콘에 투영시킨다. 하지만 최근 iOS12의 기능으로 애니모티콘의 개인화 버전인 미모지(memoji)가 발표되었는데, 한정된 캐릭터의 폭을 늘리고 얼굴, 머리, 장신구를 자신의 취향에 맞게 선택할 수 있다. 생성한 애니모티콘을 편집할 수 있으며 아이폰의 메시지 앱에서 이용할 수 있다. 또한 목소리를 녹음하여 오디오가 포함된 비디오 형태로 수신할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:5.jpg]]&lt;br /&gt;
[[파일:6.jpg]]&lt;br /&gt;
&lt;br /&gt;
*특허조사 및 특허 전략 분석&lt;br /&gt;
&lt;br /&gt;
◇ SIFT(Scale Invariant Feature Transform) 알고리즘&lt;br /&gt;
&lt;br /&gt;
● Lowe David G 교수가 개발하였으며 97년도부터 연구하여 프로토 타입의 SIFT알고리즘을 99년도에 발표하였고, 04년도에는 이 알고리즘을 더욱 개량하여 완성된 SIFT알고리즘을 만들게 되었다.&lt;br /&gt;
&lt;br /&gt;
● 영상의 크기와 회전에 불변하는 특징점을 추출하는 알고리즘이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:7.jpg]]&lt;br /&gt;
&lt;br /&gt;
1) Scale-space extrema detection &lt;br /&gt;
&lt;br /&gt;
● Gaussian Pyramid를 생성 한 후 DoG(Difference of Gaussian)을 구해서 극점인 부분을 특징점 후보자로 잡아 준다.&lt;br /&gt;
&lt;br /&gt;
● DoG의 상위와 하위 층까지 모두 합쳐 주변 26개 보다 크거나 모두 작을 때만 특징점 후보자로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이 방법은 특징점을 Scale별로 구하게 되어 Target 물체가 작아져도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:8.jpg]]&lt;br /&gt;
&lt;br /&gt;
2) KeyPoint Localization &lt;br /&gt;
&lt;br /&gt;
● 테일러 급수를 사용하여 더 정확한 극점을 찾은 뒤 테일러 급수로 interpolation하여 그 점의 값을 구하여 특징점 후보자 중에서 정확하지 않는 특징점을 제거한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Orientation Assignment &lt;br /&gt;
&lt;br /&gt;
● 추출된 특징점마다 주 방향을 할당해 주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● 특징점 주변으로 16x16영역을 할당한 후 그 영역 이미지를 Gaussian Blurring을 적용하면 특징점 주변의 영역에 대한 Gradient의 방향과 크기를 결정하게 된다.&lt;br /&gt;
&lt;br /&gt;
● Gradient의 방향과 크기를 구하면 Orientation Histogram을 형성한 후, 가장 값이 큰 것을 해당 Orientation으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
● 회전에 대한 정보가 들어 있기 때문에 물체가 회전해도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
4) KeyPoint Descriptor&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 마다 서술자를 생성해주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● Gaussian Weight Function을 활용하여 서술자를 생성하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 주변으로 16x16의 pixel 영역을 할당하여 아래의 &amp;lt;그림 14&amp;gt;과 같이 Image Gradients를 구한다. 그 후, 서술자 Window 크기의 반값을 Gaussian Weighted function에 곱해주게 된다.&lt;br /&gt;
&lt;br /&gt;
[[파일:9.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 다음으로 히스토그램을 그려주게 되는데 그 전에 먼저 앞에서 구한 Orientation을 빼줘서 Descriptor가 회전에 불변하도록 만들어 준다.&lt;br /&gt;
&lt;br /&gt;
● 객체인식을 할 때는 DB의 각 특징점의 Descriptor를 가지고, 인식할 물체 영상의 Descriptor와 비교하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이때 비슷하면 데이터가 비슷하게 나올 텐데 여기서 사용하는 방법은 유클리드 거리이다.&lt;br /&gt;
● 유클리드 거리의 방식은 연산식이 간단하여 많은 특징점 데이터를 비교하는데 속도면에서 성능이 좋아 많이 사용되는 방식이다. &lt;br /&gt;
&lt;br /&gt;
● 매칭 단계까지 수행되면 DB의 특징점들과 Target의 특징점들 중 매칭된 특징점들이 추출되어 원하는 물체가 어디에 위치하는지 알 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:10.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇SURF&lt;br /&gt;
&lt;br /&gt;
● 알고리즘 순서도 : 특징점 추출 → 주 방향 결정 → descriptor 생성&lt;br /&gt;
&lt;br /&gt;
1) 특징점 추출&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● 수식을 이용하여 적분 영상을 생성한다.&lt;br /&gt;
&lt;br /&gt;
● 적분 영상이란 픽셀 밝기 값을 누적한 형태를 뜻함&lt;br /&gt;
&lt;br /&gt;
● D영역의 밝기 누적 값을 알고 싶다면 ii(4)+ii(1)-ii(2)-ii(3)식을 이용하여 쉽게 D영역의 밝기 누적값을 구할 수 있다.&lt;br /&gt;
&lt;br /&gt;
● 적분영상을 만든 후 헤이시안(Hessian)검출기를 사용하여 특징점을 검출한다. (헤이시안 검출기는 헤이시안 행렬 기반인 특징점 검출 알고리즘으로써 정확성이 높고 행렬식이 최대값인 위치에서 blob을 검출 할 때 사용하게 된다)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● SURF에서는 Hessian_Laplace Detector를 사용하는 대신에 위의 공식대로 FAST Hessian Detector 을 사용하여 수행성능을 향상시킨다.&lt;br /&gt;
&lt;br /&gt;
2) Dxx, Dyy, Dxy박스 필터를 구하는 방법&lt;br /&gt;
&lt;br /&gt;
● Haar Wavelet을 이용 - Dxx와 Dyy를 구할 때는 검은 영역부분을 -2, 흰영역부분은 1을 곱하여 구하고 Dxy는 검은 영역을 -1, 흰영역을 1을 곱하여 구한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) 9x9 박스필터를 이용한 Dxx, Dyy, Dxy를 구하는 방식&lt;br /&gt;
&lt;br /&gt;
● Hessian Determinant 데이터를 이용하여 각 필터 사이즈 별로 특징점을 검출하게 된다. 필터 사이즈란 위의 Dxx, Dyy, Dxy를 구하는 박스필터 영역 사이즈를 의미한다. SURF에서는 박스 필터 영역을 Scale해서 특징점을 추출해 aliasing 이 없는 장점을 가지고 있다.  Hessian Determinant 데이터를 각 픽셀마다 구했으면 각각의 Threshold와 비교하게 된다. &lt;br /&gt;
&lt;br /&gt;
● Threshold보다 값이 크면, 인접한 8개의 픽셀의 Hessian Determinant를 비교하여 큰 값인지 비교하게 된다. 만약 큰 값이면 상하 박스 필터 사이즈의 3x3크기의 각 9개의 Hessina Determinant를 비교하여 가장 클 경우 특징점으로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) 주 방향 결정&lt;br /&gt;
&lt;br /&gt;
● 특징점 중심으로 특징점이 검출된 스케일 정보 s를 이용하여 반지름이 6s의 원 안의 픽셀들에 대하여 x방향과 y방향으로 Haar Wavelet Response인 dx와 dy를 구하게 된다. 윈도우 5도 간격으로 회전하면서 60도 윈도우 내의 벡터의 크기를 더해 가장 큰 크기를 가지는 방향을 특징점의 주 방향으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
5) descriptor 생성&lt;br /&gt;
&lt;br /&gt;
● descriptor는 특징점 주변의 일정한 영역 내에 이웃하고 있는 픽셀의 밝기 변화를 나타낸다.&lt;br /&gt;
&lt;br /&gt;
[[파일:11.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 주 방향과 scale정보 s를 이용하여 특징점 중심으로 20s크기의 윈도우를 위의 그림처럼 구성하고, 구성된 윈도우를 4X4 영역으로 분할하여 16개의 영역으로 나눈다. 분할된 각 영역을 다시 한번 5X5크기로 분할하여 각 픽셀을 haar wavelet filter를 사용하여 각 를 구하여 16개의 영역에 각 위의 4개의 Descriptor를 생성하여 총 64개의 Descriptor를 생성할 수 있게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*기술 로드맵&lt;br /&gt;
&lt;br /&gt;
[[파일:12.jpg]]&lt;br /&gt;
&lt;br /&gt;
====시장상황에 대한 분석====&lt;br /&gt;
&lt;br /&gt;
*경쟁제품 조사 비교&lt;br /&gt;
&lt;br /&gt;
◇ Avatar SDK&lt;br /&gt;
&lt;br /&gt;
하나의 2D 정면 얼굴 사진을 입력하면 3D 아바타 생성 SDK를 사용하여 개인의 아바타를 만들어준다. 딥러닝과 컴퓨터 그래픽 기술을 이용하여 개발하였고, 현재 cloud나 PC, Mac, Android, iOS 환경 모두 이용 가능하다. 아바타로의 변환에는 사진마다 차이가 있지만 약 10초가 소요된다. 만들어진 아바타는 Blendshape, 헤어스타일, 헤어컬러를 변경할 수 있고, 윙크, 웃음, 하품 등 몇몇 특정 표정 변화가 가능하다. 그림은 Avatar SDK를 이용하여 왼쪽 상단의 사진을 입력으로 아바타를 생성한 사진이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:13.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ Mirror AI&lt;br /&gt;
&lt;br /&gt;
스마트폰으로 한장의 셀프 사진을 찍으면, 이를 바탕으로 자신의 모습을 한 몇 백개의 이모지를 생성하여 메신저에서 사용할 수 있는 키보드 어플리케이션이다. 현재 다양한 언어를 지원하고, iOS 10.0 버전 이상만 사용할 수 있다. 학습한 모델을 통해 사람의 얼굴 특징을 식별하고, 이에 맞게 수초 내에 사람의 얼굴 특징을 추려내어 이모티콘을 만든다. 생성된 이모티콘은 이 키보드 어플리케이션을 사용하여 어떤 메신저에서든 사용할 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:14.jpg]]&lt;br /&gt;
&lt;br /&gt;
*마케팅 전략 제시&lt;br /&gt;
&lt;br /&gt;
[[파일:15.jpg]]&lt;br /&gt;
&lt;br /&gt;
===개발과제의 기대효과===&lt;br /&gt;
====기술적 기대효과====&lt;br /&gt;
&lt;br /&gt;
◇ 영화 촬영시 기존에는 모션 센서들을 부착하여 배우들의 표정을 읽어와 캐릭터의 표정과 매핑시켜 부착하는데까지 시간이 오래 걸렸고 많은 기술들이 필요되었는데 만약 이 프로젝트가 성공하게 될 경우, 배우가 표정을 짓는 것만으로 쉽게 캐릭터에 매핑될 수 있도록 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자기가 원하는 캐릭터나 다른 인물 모습의 자신과 같은 표정을 짓는 영상을 만들 수 있을 것이다.&lt;br /&gt;
&lt;br /&gt;
====경제적, 사회적 기대 및 파급효과====&lt;br /&gt;
&lt;br /&gt;
◇ 기존에 영화 촬영시 모션 캡쳐에 필요했던 장비들이 없어도 원하는 캐릭터의 표정을 구현할 수 있어 제작비 절감의 효과가 기대된다. &lt;br /&gt;
&lt;br /&gt;
◇ 현재 실존하지 않는 배우의 모습에 표정을 매핑하여 실제로 연기하는 것처럼 보이게 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자신의 표정을 다른 캐릭터로 매핑함으로써 원래 영상보다 감정 표현을 훨씬 극대화할 수 있다.&lt;br /&gt;
&lt;br /&gt;
===기술개발 일정 및 추진체계===&lt;br /&gt;
====개발 일정====&lt;br /&gt;
&lt;br /&gt;
[[파일:16.jpg]]&lt;br /&gt;
&lt;br /&gt;
====구성원 및 추진체계====&lt;br /&gt;
&lt;br /&gt;
◇ 전ㅇㅇ(팀장) &lt;br /&gt;
&lt;br /&gt;
● SURF를 이용하여 얼굴 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원)&lt;br /&gt;
&lt;br /&gt;
● TwinGAN을 이용하여 모델링 및 검증을 진행한다.&lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원) &lt;br /&gt;
&lt;br /&gt;
● Facial Expression Research Group Database인 FREG-DG를 수집한다.&lt;br /&gt;
&lt;br /&gt;
◇ 전원&lt;br /&gt;
&lt;br /&gt;
● Digital Actor의 세부 영역인 표정을 인식하고 그 표정을 제어할 수 있는 두 가지 영역을 포함할 수 있는 주제를 선정한다.&lt;br /&gt;
&lt;br /&gt;
● 필요한 알고리즘, 데이터 셋 등을 조사 후 개발에 대비한다.&lt;br /&gt;
&lt;br /&gt;
● Optical Flow를 이용하여 벡터 움직임을 추적한 뒤 TwinGAN 결과로 나온 캐릭터에 대입한다.&lt;br /&gt;
&lt;br /&gt;
==설계==&lt;br /&gt;
===설계사양===&lt;br /&gt;
====개발 환경====&lt;br /&gt;
	- Ubuntu 18.04 &lt;br /&gt;
&lt;br /&gt;
		- python2.7에서 caffe, dlib, opencv 등 이용	&lt;br /&gt;
&lt;br /&gt;
	- Matlab2018b&lt;br /&gt;
&lt;br /&gt;
	- 프로세스 : CPU 4개&lt;br /&gt;
&lt;br /&gt;
===개념설계안===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 동영상을 ‘Free Video to JPG Converter’를 이용하여 동영상에서 사진을 원하는 프레임 수를 지정하여 JPG파일을 추출한다. &lt;br /&gt;
&lt;br /&gt;
[[파일:17.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 추출한 JPG파일에 SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)는 대표적인 특징점 추출 알고리즘으로 2차원 영상의 일정 지역에 해당하는 화소를 이용하여 특징점을 추출한다. OpenCV에서 제공하는 함수를 사용한다.&lt;br /&gt;
&lt;br /&gt;
[[파일:18.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow 알고리즘을 이용하여 이전 프레임이랑 다음 프레임, 두 개의 연속된 얼굴 프레임 사이에 동작 패턴을 추적한다. Optical Flow 알고리즘 중 Lucas-Kanade(LK)는 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적어 비교적 속도가 빠르기 때문에 Lucas-Kanade를 사용한다.&lt;br /&gt;
&lt;br /&gt;
[[파일:19.jpg]]&lt;br /&gt;
[[파일:20.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 추적한 특징점의 벡터를 각 프레임 아바타에 적용한다.&lt;br /&gt;
&lt;br /&gt;
===이론적 계산 및 시뮬레이션===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상 입력 -&amp;gt; 표정을 따라하는 캐릭터 영상 출력&lt;br /&gt;
&lt;br /&gt;
[[파일:21.jpg]]&lt;br /&gt;
&lt;br /&gt;
===소프트웨어 설계===&lt;br /&gt;
&lt;br /&gt;
[[파일:22.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;전체 설계도&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. ‘Free Video to JPG Converter’를 이용하여 동영상을 여러 프레임의 사진으로 전환한다. &lt;br /&gt;
&lt;br /&gt;
2. 각각의 사진들로부터 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
3. 특징점들의 변화를 이용하여 Optical Flow를 이용하여 특징점의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
4. 1번의 결과 추출된 여러 사진들 중 첫 번째 사진을 TwinGAN을 이용하여 캐릭터로 변환 후 변환된 캐릭터의 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
5. 3번에서 추적한 Optical Flow를 4번에 적용하여 gif파일로 변환한다.&lt;br /&gt;
&lt;br /&gt;
==결과 및 평가==&lt;br /&gt;
===완료 작품의 소개===&lt;br /&gt;
====프로토타입 사진 혹은 작동 장면====&lt;br /&gt;
내용&lt;br /&gt;
====SW 특징====&lt;br /&gt;
&lt;br /&gt;
◇ 사람의 표정변화가 담긴 동영상을 준비한 뒤 프레임별로 파일을 저장한다.&lt;br /&gt;
&lt;br /&gt;
◇ 프레임별로 저장된 파일에서 각각의 face-landmark을 추출하여 얼굴 특징점들을 저장한 뒤 첫번째 프레임을 기준으로 나머지 프레임들간의 특징점들의 위치의 차이를 저장한 뒤 이를 생성한 캐릭터에 추출한 변화를 각각 저장후 그 값을 배열로 저장 후 Image Warping한다. &lt;br /&gt;
&lt;br /&gt;
◇ warping한 이미지를 다시 연결하여 사람의 표정의 움직임을 따라하는 캐릭터 gif 파일을 만든다.&lt;br /&gt;
&lt;br /&gt;
====SW 기능====&lt;br /&gt;
&lt;br /&gt;
◇ 다양한 표정을 짓는 사람의 동영상을 입력 시, 그 표정을 따라하는 캐릭터 gif 파일을 생성한다.&lt;br /&gt;
&lt;br /&gt;
====SW 구조====&lt;br /&gt;
&lt;br /&gt;
[[파일:23.jpg]]&lt;br /&gt;
&lt;br /&gt;
====오픈소스와 tools====&lt;br /&gt;
◇ 사용한 프로그래밍언어 : python, matlab&lt;br /&gt;
&lt;br /&gt;
◇ OpenFace : https://github.com/qiexing/face-landmark-localization 코드 참고&lt;br /&gt;
&lt;br /&gt;
◇ Image Warping : https://github.com/sirajulsalekin/Image-warping 코드 참고&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====소스코드====&lt;br /&gt;
◇ 소스코드는 3.5에서 서술한 opensource를 이용하였으며 필요한 부분은 추가하였다.&lt;br /&gt;
&lt;br /&gt;
◇ OpenFace에서는 각 특징점들을 nx2행렬로 변환하는 작업을 추가하였으며, 각 특징점들의 위치를 Image Warping에서 이용하기 위하여 필요한 값들을 변형시키는 작업을 진행하였다. &lt;br /&gt;
&lt;br /&gt;
◇ 얼굴 이미지의 변형을 위해 받은 특징점들을 표시해주기 위해 고정되어있던 특징점의 개수와 위치가 유동적으로 바뀔 수 있도록 수정하였다. 그리고 이미지 워핑을 위해서는 특징점들에 대한 들 로네 삼각 분할 (Delaunay Triangulation)을 이용해 계산한 값이 필요하기 때문에 delaunay() 함수를 이용하여 계산한 값을 넣어주었다. 또한, 변형 하려는 이미지의 범위를 수정하여 해당 범위 내에서 이미지 워핑이 일어나도록 하였다. &lt;br /&gt;
&lt;br /&gt;
◇ 추가로 동영상의 파일을 frame단위로 잘라내는 작업과, Image Warping의 결과 생성된 이미지들을 엮어 gif파일로 변환하는 작업을 추가하였다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====SW설치====&lt;br /&gt;
&lt;br /&gt;
◇ python2.7&lt;br /&gt;
caffe - 특징점 찍기 위함&lt;br /&gt;
dlib - 특징점 찍기 위함&lt;br /&gt;
matplotlib.plot - 특징점이 잘 찍혔는지 확인 위함 &lt;br /&gt;
imageio - 이미지를 읽어오기 위함&lt;br /&gt;
glob - 이미지를 저장하기 위함&lt;br /&gt;
matlab - Image Warping을 위함&lt;br /&gt;
opencv - 특징점을 찍기 위함, 동영상을 프레임 단위로 자르기 위함&lt;br /&gt;
&lt;br /&gt;
====완료 작품의 평가====&lt;br /&gt;
&lt;br /&gt;
[[파일:24.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 평가 결과&lt;br /&gt;
&lt;br /&gt;
1. 응답시간&lt;br /&gt;
- 딥러닝을 이용하여 얼굴의 특징점들을 잡기 때문에 딥러닝을 사용하지 않을 것이라 생각했던 10s을 초과하여 파일의 크기에 따라 소요시간이 늘어남.&lt;br /&gt;
- python만을 사용하려는 기존 계획과는 다르게 matlab의 프레임워크도 추가적으로 사용하여 실제 예상 시간보다 더 소요됨.&lt;br /&gt;
&lt;br /&gt;
2. 표정의 유사성&lt;br /&gt;
- 변경하고자하는 이미지의 초기 표정과 동영상의 초기표정이 유사하지 않아 부자연스러운 부분이 발생함. &lt;br /&gt;
&lt;br /&gt;
3. 표정 변화의 자연스러움&lt;br /&gt;
- 촬영한 동영상의 얼굴이 고정되어있지 않고 미세하게 움직이며, openface가 아래 사진과 같이 이마부분은 인식하지 않는 등 landmark로 인식하는 부분이 한정되어 있기 때문에 변환 시키고자 하는 얼굴의 일부분만 움직임을 확인할 수 있음&lt;br /&gt;
&lt;br /&gt;
[[파일:25.jpg]]&lt;br /&gt;
&lt;br /&gt;
===관련사업비 내역서===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===완료작품의 평가===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===향후계획===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===특허 출원 내용===&lt;br /&gt;
내용&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:25.jpg&amp;diff=1023</id>
		<title>파일:25.jpg</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:25.jpg&amp;diff=1023"/>
				<updated>2018-12-25T18:02:20Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:24.jpg&amp;diff=1022</id>
		<title>파일:24.jpg</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:24.jpg&amp;diff=1022"/>
				<updated>2018-12-25T18:01:53Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:23.jpg&amp;diff=1021</id>
		<title>파일:23.jpg</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:23.jpg&amp;diff=1021"/>
				<updated>2018-12-25T18:01:29Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:22.jpg&amp;diff=1020</id>
		<title>파일:22.jpg</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:22.jpg&amp;diff=1020"/>
				<updated>2018-12-25T18:01:13Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:21.jpg&amp;diff=1019</id>
		<title>파일:21.jpg</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:21.jpg&amp;diff=1019"/>
				<updated>2018-12-25T18:01:05Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:20.jpg&amp;diff=1018</id>
		<title>파일:20.jpg</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:20.jpg&amp;diff=1018"/>
				<updated>2018-12-25T18:00:56Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:19.jpg&amp;diff=1017</id>
		<title>파일:19.jpg</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:19.jpg&amp;diff=1017"/>
				<updated>2018-12-25T18:00:46Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:18.jpg&amp;diff=1016</id>
		<title>파일:18.jpg</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:18.jpg&amp;diff=1016"/>
				<updated>2018-12-25T18:00:36Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:17.jpg&amp;diff=1015</id>
		<title>파일:17.jpg</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:17.jpg&amp;diff=1015"/>
				<updated>2018-12-25T18:00:26Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=1014</id>
		<title>DnA(Digital and Actor)조</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=1014"/>
				<updated>2018-12-25T17:59:57Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: /* 완료 작품의 소개 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==프로젝트 개요==&lt;br /&gt;
=== 기술개발 과제 ===&lt;br /&gt;
''' 국문 : ''' 디지털 액터 : 얼굴 표정과 표현&lt;br /&gt;
&lt;br /&gt;
''' 영문 : ''' Digital Actor : facial expression, emotion&lt;br /&gt;
&lt;br /&gt;
===과제 팀명===&lt;br /&gt;
DnA (Digital and Actor)&lt;br /&gt;
&lt;br /&gt;
===지도교수===&lt;br /&gt;
홍의경 교수님&lt;br /&gt;
&lt;br /&gt;
===개발기간===&lt;br /&gt;
2018년 9월 ~ 2018년 12월 (총 4개월)&lt;br /&gt;
&lt;br /&gt;
===구성원 소개===&lt;br /&gt;
서울시립대학교 통계학과 20xxxxx0xx 전ㅇㅇ(팀장)&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
==서론==&lt;br /&gt;
===개발 과제의 개요===&lt;br /&gt;
====개발 과제 요약====&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상에서 프레임을 추출하여 각 얼굴 사진의 특징점을 인식하고 Optical Flow 알고리즘을 이용하여 특징점의 움직임을 추적한다. 추적한 특징점의 벡터를 아바타에 적용하여 동영상에서 사람의 표정 변화를 캐릭터가 따라하도록 만든다. 아바타 사진을 연결하여 gif파일로 만들어 마찬가지로 사람의 표정 변화를 캐릭터가 똑같이 따라할 수 있도록 한다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 배경 및 효과====&lt;br /&gt;
◇ 디지털 액터(Digital Actor)란 실제 배우와 동일한 수준의 외형과 동작을 구현할 수 있는 컴퓨터 그래픽(DG) 영상 캐릭터를 의미한다. 킹콩, 요다 등의 실존 인물이 아닌 캐릭터를 만들거나 현실에서 불가능한 장면을 연출하는 등 영상 특수효과, 3D 애니메이션, 게임, VR과 같은 곳에 사용된다. &lt;br /&gt;
&lt;br /&gt;
◇ 모션캡쳐 장비는 현실적인 움직임으로 퀄리티 높은 영상을 보여줄 수 있지만 상당히 고가의 물건이다. 사람의 얼굴 표정을 학습하여 자연스럽게 아바타로 옮길 수 있다면 높은 CG처리 비용을 줄일 수 있을 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
◇ 현재 국내 VR과 AR의 국내 시장의 규모가 점점 넓어지고 있으며 관련 업계에 따르면 그 사장 규모는 2020년 지금의 4~5배 수준으로 성장할 전망이라고 한다. 더딘 기술 진행속도로 인해 개발 속도도 느리지만 기술이 발전할수록 그 성장 속도가 급격히 증가할 것으로 예상되기 때문에 그 속도를 맞추기 위해서는 미리 개발을 준비하는 등의 행동이 필요하다. 이에 관련 기술을 직접 구현해봄으로써 미래의 VR/AR 산업에 보탬이 될 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 목표 및 내용====&lt;br /&gt;
◇ SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)&lt;br /&gt;
&lt;br /&gt;
● 대표적인 특징점 추출 알고리즘&lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘(interest point extraction algorithm)은 2차원 영상의 일정 지역에 해당하는 화소를 이용하여, 영상의 특징이 될 수 있는 특징점을 추출하는 알고리즘이다. 이때 특징점은 코너(corner) 및 블랍(blob)을 의미한다. &lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘에는 SIFT(Scale Invariant Feature Transform), PCA 등 다른 방법도 있지만 인식률과 처리 속도면에서 더 우수한 SURF 알고리즘을 사용한다.&lt;br /&gt;
&lt;br /&gt;
● 블러이미지나 회전된 이미지는 잘 인식하는 장점이 있는 반면 뷰포인트나 조명이 달라지면 특징점을 잘 잡아내지 못하는 단점이 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 SURF에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow&lt;br /&gt;
&lt;br /&gt;
● 두 개의 연속된 비디오 프레임 사이에 이미지 객체의 동작 패턴을 의미한다.&lt;br /&gt;
&lt;br /&gt;
● 이미지 객체의 움직임 패턴은 객체 자체가 움직이거나 카메라의 움직임으로 인해 생성되는데 이전 프레임이랑 다음 프레임 중 변하는 부분의 움직임을 추적&lt;br /&gt;
&lt;br /&gt;
● 보통 움직임을 통한 구조 분석, 비디오 압축, 영상이 흔들렸거나 블러가 된 경우 깨끗한 영상으로 처리하는 기술인 Video Stabilization 분야에 사용된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lucas-Kanade&lt;br /&gt;
&lt;br /&gt;
● Optical Flow알고리즘에는 다양한 알고리즘이 있으나  Lucas-Kanade방법을 이용하기로 한다.&lt;br /&gt;
&lt;br /&gt;
● 한 프레임의 각 피셀 윈도우를 설정하고 다음 프레임에서 이 윈도우와 가장 잘 매칭되는 곳을 찾는 원리로 작동한다.&lt;br /&gt;
&lt;br /&gt;
● 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적다는 장점이 있다.&lt;br /&gt;
&lt;br /&gt;
● 좁은 지역의 윈도우를 사용하기 때문에 이 윈도우보다 큰 움직임이 발생하였을 경우 움직임을 계산하지 못하며 특징점을 사용하여 optical flow를 얻기 때문에 dense optical flow에 비하여 정확도가 낮은 편이다.&lt;br /&gt;
&lt;br /&gt;
● 윈도우를 벗어나는 큰 움직임을 계산하지 못하는 단점을 개선하기 위해 Pyramids Lucas-Kanade 방법을 사용할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 Lucas-Kanade에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
===관련 기술의 현황===&lt;br /&gt;
====관련 기술의 현황 및 분석(State of art)====&lt;br /&gt;
*전 세계적인 기술현황&lt;br /&gt;
&lt;br /&gt;
◇ 페이스웨어 Live&lt;br /&gt;
&lt;br /&gt;
마커리스 3D 페이셜 모션 캡처 솔루션 제공을 선도하는 페이스웨어 테크놀러지(Faceware Technologies, 이하 페이스웨어)가  23일 향상된 실시간 얼굴 모션캡처와 애니메이션 제품인 페이스웨어 라이브(Faceware Live) 2.5 버전을 발표했다. 페이스웨어 라이브는 실시간으로 사용자 얼굴을 자동 추적하고, 얼굴의 움직임을 페이셜 모델에 즉각 적용시킨 페이셜 애니메이션을 생성한다. 페이스웨어 라이브는 움직임 트래킹을 위해 단 하나의 카메라를 사용하며,  컴퓨터에 연결된 비디오나 웹캠, 페이스웨어 GoPro, Pro HD 헤드캠 시스템, 그밖에 다른 비디오 캡처 장비들을 카메라로 사용할 수 있다. 페이스웨어 라이브 2.5는 디지털캐릭터와 결합된 라이브 공연, 즉 디지털 캐릭터들이 관객이나 사람들과 라이브로 인터랙션이 가능한 실시간 인형극이나  테마파크, 쇼핑몰 내부의 키오스크 스크린 상에서 실시간 상호작용 디지털 캐릭터로 활용될 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:2.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 삼성 갤럭시S9의 AR 이모지&lt;br /&gt;
&lt;br /&gt;
카메라로 촬영한 인물 사진을 기반으로 아바타를 만들 수 있는 기능이다. AR 이모지를 만들면 18개 다양한 감정을 표현할 수 있는 gif 이모티콘이 추가되어 메세지, SNS 등에서 이용 가능하다. 눈, 코, 입, 뺨, 이마 등 100개 이상의 얼굴 특징점을 인식 및 분석해 피사체의 표정을 실시간으로 따라해서 동영상으로 촬영할 수 있다. 이외에도 안경을 착용하거나 피부 색깔, 헤어스타일, 헤어컬러, 의상 등을 변경할 수 있다. 하지만 세밀하지 못한 인물 묘사 방식에 논란이 있었다.&lt;br /&gt;
&lt;br /&gt;
[[파일:3.jpg]]&lt;br /&gt;
[[파일:4.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 애플 iOS11, iOS12의 애니모티콘, 미모지&lt;br /&gt;
&lt;br /&gt;
애플 사의 애니모티콘(애니모지)은 전면 카메라로 촬영한 인물사진을 기반으로 사용자의 표정을 읽은 후, 기존에 있던 이모지에 투사하여 이모티콘을 만들 수 있는 기능이다. 사용자의 얼굴에 3만개 이상의 도트를 투사해 얼굴 맵을 만든 후, 3D 스캔 활용을 통해 50개 이상의 각기 다른 근육의 움직임을 포착하고 분석한다. 분석한 세밀한 표정을 외계인, 고양이, 닭, 개, 여우, 원숭이, 판다. 돼지, 곰돌이, 토끼, 로봇, 유니콘 등 내장된 12개의 애니모티콘에 투영시킨다. 하지만 최근 iOS12의 기능으로 애니모티콘의 개인화 버전인 미모지(memoji)가 발표되었는데, 한정된 캐릭터의 폭을 늘리고 얼굴, 머리, 장신구를 자신의 취향에 맞게 선택할 수 있다. 생성한 애니모티콘을 편집할 수 있으며 아이폰의 메시지 앱에서 이용할 수 있다. 또한 목소리를 녹음하여 오디오가 포함된 비디오 형태로 수신할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:5.jpg]]&lt;br /&gt;
[[파일:6.jpg]]&lt;br /&gt;
&lt;br /&gt;
*특허조사 및 특허 전략 분석&lt;br /&gt;
&lt;br /&gt;
◇ SIFT(Scale Invariant Feature Transform) 알고리즘&lt;br /&gt;
&lt;br /&gt;
● Lowe David G 교수가 개발하였으며 97년도부터 연구하여 프로토 타입의 SIFT알고리즘을 99년도에 발표하였고, 04년도에는 이 알고리즘을 더욱 개량하여 완성된 SIFT알고리즘을 만들게 되었다.&lt;br /&gt;
&lt;br /&gt;
● 영상의 크기와 회전에 불변하는 특징점을 추출하는 알고리즘이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:7.jpg]]&lt;br /&gt;
&lt;br /&gt;
1) Scale-space extrema detection &lt;br /&gt;
&lt;br /&gt;
● Gaussian Pyramid를 생성 한 후 DoG(Difference of Gaussian)을 구해서 극점인 부분을 특징점 후보자로 잡아 준다.&lt;br /&gt;
&lt;br /&gt;
● DoG의 상위와 하위 층까지 모두 합쳐 주변 26개 보다 크거나 모두 작을 때만 특징점 후보자로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이 방법은 특징점을 Scale별로 구하게 되어 Target 물체가 작아져도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:8.jpg]]&lt;br /&gt;
&lt;br /&gt;
2) KeyPoint Localization &lt;br /&gt;
&lt;br /&gt;
● 테일러 급수를 사용하여 더 정확한 극점을 찾은 뒤 테일러 급수로 interpolation하여 그 점의 값을 구하여 특징점 후보자 중에서 정확하지 않는 특징점을 제거한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Orientation Assignment &lt;br /&gt;
&lt;br /&gt;
● 추출된 특징점마다 주 방향을 할당해 주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● 특징점 주변으로 16x16영역을 할당한 후 그 영역 이미지를 Gaussian Blurring을 적용하면 특징점 주변의 영역에 대한 Gradient의 방향과 크기를 결정하게 된다.&lt;br /&gt;
&lt;br /&gt;
● Gradient의 방향과 크기를 구하면 Orientation Histogram을 형성한 후, 가장 값이 큰 것을 해당 Orientation으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
● 회전에 대한 정보가 들어 있기 때문에 물체가 회전해도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
4) KeyPoint Descriptor&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 마다 서술자를 생성해주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● Gaussian Weight Function을 활용하여 서술자를 생성하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 주변으로 16x16의 pixel 영역을 할당하여 아래의 &amp;lt;그림 14&amp;gt;과 같이 Image Gradients를 구한다. 그 후, 서술자 Window 크기의 반값을 Gaussian Weighted function에 곱해주게 된다.&lt;br /&gt;
&lt;br /&gt;
[[파일:9.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 다음으로 히스토그램을 그려주게 되는데 그 전에 먼저 앞에서 구한 Orientation을 빼줘서 Descriptor가 회전에 불변하도록 만들어 준다.&lt;br /&gt;
&lt;br /&gt;
● 객체인식을 할 때는 DB의 각 특징점의 Descriptor를 가지고, 인식할 물체 영상의 Descriptor와 비교하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이때 비슷하면 데이터가 비슷하게 나올 텐데 여기서 사용하는 방법은 유클리드 거리이다.&lt;br /&gt;
● 유클리드 거리의 방식은 연산식이 간단하여 많은 특징점 데이터를 비교하는데 속도면에서 성능이 좋아 많이 사용되는 방식이다. &lt;br /&gt;
&lt;br /&gt;
● 매칭 단계까지 수행되면 DB의 특징점들과 Target의 특징점들 중 매칭된 특징점들이 추출되어 원하는 물체가 어디에 위치하는지 알 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:10.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇SURF&lt;br /&gt;
&lt;br /&gt;
● 알고리즘 순서도 : 특징점 추출 → 주 방향 결정 → descriptor 생성&lt;br /&gt;
&lt;br /&gt;
1) 특징점 추출&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● 수식을 이용하여 적분 영상을 생성한다.&lt;br /&gt;
&lt;br /&gt;
● 적분 영상이란 픽셀 밝기 값을 누적한 형태를 뜻함&lt;br /&gt;
&lt;br /&gt;
● D영역의 밝기 누적 값을 알고 싶다면 ii(4)+ii(1)-ii(2)-ii(3)식을 이용하여 쉽게 D영역의 밝기 누적값을 구할 수 있다.&lt;br /&gt;
&lt;br /&gt;
● 적분영상을 만든 후 헤이시안(Hessian)검출기를 사용하여 특징점을 검출한다. (헤이시안 검출기는 헤이시안 행렬 기반인 특징점 검출 알고리즘으로써 정확성이 높고 행렬식이 최대값인 위치에서 blob을 검출 할 때 사용하게 된다)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● SURF에서는 Hessian_Laplace Detector를 사용하는 대신에 위의 공식대로 FAST Hessian Detector 을 사용하여 수행성능을 향상시킨다.&lt;br /&gt;
&lt;br /&gt;
2) Dxx, Dyy, Dxy박스 필터를 구하는 방법&lt;br /&gt;
&lt;br /&gt;
● Haar Wavelet을 이용 - Dxx와 Dyy를 구할 때는 검은 영역부분을 -2, 흰영역부분은 1을 곱하여 구하고 Dxy는 검은 영역을 -1, 흰영역을 1을 곱하여 구한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) 9x9 박스필터를 이용한 Dxx, Dyy, Dxy를 구하는 방식&lt;br /&gt;
&lt;br /&gt;
● Hessian Determinant 데이터를 이용하여 각 필터 사이즈 별로 특징점을 검출하게 된다. 필터 사이즈란 위의 Dxx, Dyy, Dxy를 구하는 박스필터 영역 사이즈를 의미한다. SURF에서는 박스 필터 영역을 Scale해서 특징점을 추출해 aliasing 이 없는 장점을 가지고 있다.  Hessian Determinant 데이터를 각 픽셀마다 구했으면 각각의 Threshold와 비교하게 된다. &lt;br /&gt;
&lt;br /&gt;
● Threshold보다 값이 크면, 인접한 8개의 픽셀의 Hessian Determinant를 비교하여 큰 값인지 비교하게 된다. 만약 큰 값이면 상하 박스 필터 사이즈의 3x3크기의 각 9개의 Hessina Determinant를 비교하여 가장 클 경우 특징점으로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) 주 방향 결정&lt;br /&gt;
&lt;br /&gt;
● 특징점 중심으로 특징점이 검출된 스케일 정보 s를 이용하여 반지름이 6s의 원 안의 픽셀들에 대하여 x방향과 y방향으로 Haar Wavelet Response인 dx와 dy를 구하게 된다. 윈도우 5도 간격으로 회전하면서 60도 윈도우 내의 벡터의 크기를 더해 가장 큰 크기를 가지는 방향을 특징점의 주 방향으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
5) descriptor 생성&lt;br /&gt;
&lt;br /&gt;
● descriptor는 특징점 주변의 일정한 영역 내에 이웃하고 있는 픽셀의 밝기 변화를 나타낸다.&lt;br /&gt;
&lt;br /&gt;
[[파일:11.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 주 방향과 scale정보 s를 이용하여 특징점 중심으로 20s크기의 윈도우를 위의 그림처럼 구성하고, 구성된 윈도우를 4X4 영역으로 분할하여 16개의 영역으로 나눈다. 분할된 각 영역을 다시 한번 5X5크기로 분할하여 각 픽셀을 haar wavelet filter를 사용하여 각 를 구하여 16개의 영역에 각 위의 4개의 Descriptor를 생성하여 총 64개의 Descriptor를 생성할 수 있게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*기술 로드맵&lt;br /&gt;
&lt;br /&gt;
[[파일:12.jpg]]&lt;br /&gt;
&lt;br /&gt;
====시장상황에 대한 분석====&lt;br /&gt;
&lt;br /&gt;
*경쟁제품 조사 비교&lt;br /&gt;
&lt;br /&gt;
◇ Avatar SDK&lt;br /&gt;
&lt;br /&gt;
하나의 2D 정면 얼굴 사진을 입력하면 3D 아바타 생성 SDK를 사용하여 개인의 아바타를 만들어준다. 딥러닝과 컴퓨터 그래픽 기술을 이용하여 개발하였고, 현재 cloud나 PC, Mac, Android, iOS 환경 모두 이용 가능하다. 아바타로의 변환에는 사진마다 차이가 있지만 약 10초가 소요된다. 만들어진 아바타는 Blendshape, 헤어스타일, 헤어컬러를 변경할 수 있고, 윙크, 웃음, 하품 등 몇몇 특정 표정 변화가 가능하다. 그림은 Avatar SDK를 이용하여 왼쪽 상단의 사진을 입력으로 아바타를 생성한 사진이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:13.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ Mirror AI&lt;br /&gt;
&lt;br /&gt;
스마트폰으로 한장의 셀프 사진을 찍으면, 이를 바탕으로 자신의 모습을 한 몇 백개의 이모지를 생성하여 메신저에서 사용할 수 있는 키보드 어플리케이션이다. 현재 다양한 언어를 지원하고, iOS 10.0 버전 이상만 사용할 수 있다. 학습한 모델을 통해 사람의 얼굴 특징을 식별하고, 이에 맞게 수초 내에 사람의 얼굴 특징을 추려내어 이모티콘을 만든다. 생성된 이모티콘은 이 키보드 어플리케이션을 사용하여 어떤 메신저에서든 사용할 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:14.jpg]]&lt;br /&gt;
&lt;br /&gt;
*마케팅 전략 제시&lt;br /&gt;
&lt;br /&gt;
[[파일:15.jpg]]&lt;br /&gt;
&lt;br /&gt;
===개발과제의 기대효과===&lt;br /&gt;
====기술적 기대효과====&lt;br /&gt;
&lt;br /&gt;
◇ 영화 촬영시 기존에는 모션 센서들을 부착하여 배우들의 표정을 읽어와 캐릭터의 표정과 매핑시켜 부착하는데까지 시간이 오래 걸렸고 많은 기술들이 필요되었는데 만약 이 프로젝트가 성공하게 될 경우, 배우가 표정을 짓는 것만으로 쉽게 캐릭터에 매핑될 수 있도록 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자기가 원하는 캐릭터나 다른 인물 모습의 자신과 같은 표정을 짓는 영상을 만들 수 있을 것이다.&lt;br /&gt;
&lt;br /&gt;
====경제적, 사회적 기대 및 파급효과====&lt;br /&gt;
&lt;br /&gt;
◇ 기존에 영화 촬영시 모션 캡쳐에 필요했던 장비들이 없어도 원하는 캐릭터의 표정을 구현할 수 있어 제작비 절감의 효과가 기대된다. &lt;br /&gt;
&lt;br /&gt;
◇ 현재 실존하지 않는 배우의 모습에 표정을 매핑하여 실제로 연기하는 것처럼 보이게 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자신의 표정을 다른 캐릭터로 매핑함으로써 원래 영상보다 감정 표현을 훨씬 극대화할 수 있다.&lt;br /&gt;
&lt;br /&gt;
===기술개발 일정 및 추진체계===&lt;br /&gt;
====개발 일정====&lt;br /&gt;
&lt;br /&gt;
[[파일:16.jpg]]&lt;br /&gt;
&lt;br /&gt;
====구성원 및 추진체계====&lt;br /&gt;
&lt;br /&gt;
◇ 전ㅇㅇ(팀장) &lt;br /&gt;
&lt;br /&gt;
● SURF를 이용하여 얼굴 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원)&lt;br /&gt;
&lt;br /&gt;
● TwinGAN을 이용하여 모델링 및 검증을 진행한다.&lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원) &lt;br /&gt;
&lt;br /&gt;
● Facial Expression Research Group Database인 FREG-DG를 수집한다.&lt;br /&gt;
&lt;br /&gt;
◇ 전원&lt;br /&gt;
&lt;br /&gt;
● Digital Actor의 세부 영역인 표정을 인식하고 그 표정을 제어할 수 있는 두 가지 영역을 포함할 수 있는 주제를 선정한다.&lt;br /&gt;
&lt;br /&gt;
● 필요한 알고리즘, 데이터 셋 등을 조사 후 개발에 대비한다.&lt;br /&gt;
&lt;br /&gt;
● Optical Flow를 이용하여 벡터 움직임을 추적한 뒤 TwinGAN 결과로 나온 캐릭터에 대입한다.&lt;br /&gt;
&lt;br /&gt;
==설계==&lt;br /&gt;
===설계사양===&lt;br /&gt;
====개발 환경====&lt;br /&gt;
	- Ubuntu 18.04 &lt;br /&gt;
&lt;br /&gt;
		- python2.7에서 caffe, dlib, opencv 등 이용	&lt;br /&gt;
&lt;br /&gt;
	- Matlab2018b&lt;br /&gt;
&lt;br /&gt;
	- 프로세스 : CPU 4개&lt;br /&gt;
&lt;br /&gt;
===개념설계안===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 동영상을 ‘Free Video to JPG Converter’를 이용하여 동영상에서 사진을 원하는 프레임 수를 지정하여 JPG파일을 추출한다. &lt;br /&gt;
&lt;br /&gt;
[[파일:17.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 추출한 JPG파일에 SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)는 대표적인 특징점 추출 알고리즘으로 2차원 영상의 일정 지역에 해당하는 화소를 이용하여 특징점을 추출한다. OpenCV에서 제공하는 함수를 사용한다.&lt;br /&gt;
&lt;br /&gt;
[[파일:18.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow 알고리즘을 이용하여 이전 프레임이랑 다음 프레임, 두 개의 연속된 얼굴 프레임 사이에 동작 패턴을 추적한다. Optical Flow 알고리즘 중 Lucas-Kanade(LK)는 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적어 비교적 속도가 빠르기 때문에 Lucas-Kanade를 사용한다.&lt;br /&gt;
&lt;br /&gt;
[[파일:19.jpg]]&lt;br /&gt;
[[파일:20.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 추적한 특징점의 벡터를 각 프레임 아바타에 적용한다.&lt;br /&gt;
&lt;br /&gt;
===이론적 계산 및 시뮬레이션===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상 입력 -&amp;gt; 표정을 따라하는 캐릭터 영상 출력&lt;br /&gt;
&lt;br /&gt;
[[파일:21.jpg]]&lt;br /&gt;
&lt;br /&gt;
===소프트웨어 설계===&lt;br /&gt;
&lt;br /&gt;
[[파일:22.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;전체 설계도&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. ‘Free Video to JPG Converter’를 이용하여 동영상을 여러 프레임의 사진으로 전환한다. &lt;br /&gt;
&lt;br /&gt;
2. 각각의 사진들로부터 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
3. 특징점들의 변화를 이용하여 Optical Flow를 이용하여 특징점의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
4. 1번의 결과 추출된 여러 사진들 중 첫 번째 사진을 TwinGAN을 이용하여 캐릭터로 변환 후 변환된 캐릭터의 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
5. 3번에서 추적한 Optical Flow를 4번에 적용하여 gif파일로 변환한다.&lt;br /&gt;
&lt;br /&gt;
==결과 및 평가==&lt;br /&gt;
===완료 작품의 소개===&lt;br /&gt;
====프로토타입 사진 혹은 작동 장면====&lt;br /&gt;
내용&lt;br /&gt;
====SW 특징====&lt;br /&gt;
&lt;br /&gt;
◇ 사람의 표정변화가 담긴 동영상을 준비한 뒤 프레임별로 파일을 저장한다.&lt;br /&gt;
&lt;br /&gt;
◇ 프레임별로 저장된 파일에서 각각의 face-landmark을 추출하여 얼굴 특징점들을 저장한 뒤 첫번째 프레임을 기준으로 나머지 프레임들간의 특징점들의 위치의 차이를 저장한 뒤 이를 생성한 캐릭터에 추출한 변화를 각각 저장후 그 값을 배열로 저장 후 Image Warping한다. &lt;br /&gt;
&lt;br /&gt;
◇ warping한 이미지를 다시 연결하여 사람의 표정의 움직임을 따라하는 캐릭터 gif 파일을 만든다.&lt;br /&gt;
&lt;br /&gt;
====SW 기능====&lt;br /&gt;
&lt;br /&gt;
◇ 다양한 표정을 짓는 사람의 동영상을 입력 시, 그 표정을 따라하는 캐릭터 gif 파일을 생성한다.&lt;br /&gt;
&lt;br /&gt;
====SW 구조====&lt;br /&gt;
&lt;br /&gt;
[[파일:23.jpg]]&lt;br /&gt;
&lt;br /&gt;
====오픈소스와 tools====&lt;br /&gt;
◇ 사용한 프로그래밍언어 : python, matlab&lt;br /&gt;
&lt;br /&gt;
◇ OpenFace : https://github.com/qiexing/face-landmark-localization 코드 참고&lt;br /&gt;
&lt;br /&gt;
◇ Image Warping : https://github.com/sirajulsalekin/Image-warping 코드 참고&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====소스코드====&lt;br /&gt;
◇ 소스코드는 3.5에서 서술한 opensource를 이용하였으며 필요한 부분은 추가하였다.&lt;br /&gt;
&lt;br /&gt;
◇ OpenFace에서는 각 특징점들을 nx2행렬로 변환하는 작업을 추가하였으며, 각 특징점들의 위치를 Image Warping에서 이용하기 위하여 필요한 값들을 변형시키는 작업을 진행하였다. &lt;br /&gt;
&lt;br /&gt;
◇ 얼굴 이미지의 변형을 위해 받은 특징점들을 표시해주기 위해 고정되어있던 특징점의 개수와 위치가 유동적으로 바뀔 수 있도록 수정하였다. 그리고 이미지 워핑을 위해서는 특징점들에 대한 들 로네 삼각 분할 (Delaunay Triangulation)을 이용해 계산한 값이 필요하기 때문에 delaunay() 함수를 이용하여 계산한 값을 넣어주었다. 또한, 변형 하려는 이미지의 범위를 수정하여 해당 범위 내에서 이미지 워핑이 일어나도록 하였다. &lt;br /&gt;
&lt;br /&gt;
◇ 추가로 동영상의 파일을 frame단위로 잘라내는 작업과, Image Warping의 결과 생성된 이미지들을 엮어 gif파일로 변환하는 작업을 추가하였다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====SW설치====&lt;br /&gt;
&lt;br /&gt;
◇ python2.7&lt;br /&gt;
caffe - 특징점 찍기 위함&lt;br /&gt;
dlib - 특징점 찍기 위함&lt;br /&gt;
matplotlib.plot - 특징점이 잘 찍혔는지 확인 위함 &lt;br /&gt;
imageio - 이미지를 읽어오기 위함&lt;br /&gt;
glob - 이미지를 저장하기 위함&lt;br /&gt;
matlab - Image Warping을 위함&lt;br /&gt;
opencv - 특징점을 찍기 위함, 동영상을 프레임 단위로 자르기 위함&lt;br /&gt;
&lt;br /&gt;
====완료 작품의 평가====&lt;br /&gt;
&lt;br /&gt;
[[파일:24.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 평가 결과&lt;br /&gt;
1. 응답시간&lt;br /&gt;
- 딥러닝을 이용하여 얼굴의 특징점들을 잡기 때문에 딥러닝을 사용하지 않을 것이라 생각했던 10s을 초과하여 파일의 크기에 따라 소요시간이 늘어남.&lt;br /&gt;
- python만을 사용하려는 기존 계획과는 다르게 matlab의 프레임워크도 추가적으로 사용하여 실제 예상 시간보다 더 소요됨.&lt;br /&gt;
&lt;br /&gt;
2. 표정의 유사성&lt;br /&gt;
- 변경하고자하는 이미지의 초기 표정과 동영상의 초기표정이 유사하지 않아 부자연스러운 부분이 발생함. &lt;br /&gt;
&lt;br /&gt;
3. 표정 변화의 자연스러움&lt;br /&gt;
- 촹영한 동영상의 얼굴이 고정되어있지 않고 미세하게 움직이며, openface가 아래 사진과 같이 이마부분은 인식하지 않는 등 landmark로 인식하는 부분이 한정되어 있기 때문에 변환 시키고자 하는 얼굴의 일부분만 움직임을 확인할 수 있음&lt;br /&gt;
&lt;br /&gt;
[[파일:25.jpg]]&lt;br /&gt;
&lt;br /&gt;
===관련사업비 내역서===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===완료작품의 평가===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===향후계획===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===특허 출원 내용===&lt;br /&gt;
내용&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=1013</id>
		<title>DnA(Digital and Actor)조</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=1013"/>
				<updated>2018-12-25T17:56:26Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: /* 소프트웨어 설계 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==프로젝트 개요==&lt;br /&gt;
=== 기술개발 과제 ===&lt;br /&gt;
''' 국문 : ''' 디지털 액터 : 얼굴 표정과 표현&lt;br /&gt;
&lt;br /&gt;
''' 영문 : ''' Digital Actor : facial expression, emotion&lt;br /&gt;
&lt;br /&gt;
===과제 팀명===&lt;br /&gt;
DnA (Digital and Actor)&lt;br /&gt;
&lt;br /&gt;
===지도교수===&lt;br /&gt;
홍의경 교수님&lt;br /&gt;
&lt;br /&gt;
===개발기간===&lt;br /&gt;
2018년 9월 ~ 2018년 12월 (총 4개월)&lt;br /&gt;
&lt;br /&gt;
===구성원 소개===&lt;br /&gt;
서울시립대학교 통계학과 20xxxxx0xx 전ㅇㅇ(팀장)&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
==서론==&lt;br /&gt;
===개발 과제의 개요===&lt;br /&gt;
====개발 과제 요약====&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상에서 프레임을 추출하여 각 얼굴 사진의 특징점을 인식하고 Optical Flow 알고리즘을 이용하여 특징점의 움직임을 추적한다. 추적한 특징점의 벡터를 아바타에 적용하여 동영상에서 사람의 표정 변화를 캐릭터가 따라하도록 만든다. 아바타 사진을 연결하여 gif파일로 만들어 마찬가지로 사람의 표정 변화를 캐릭터가 똑같이 따라할 수 있도록 한다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 배경 및 효과====&lt;br /&gt;
◇ 디지털 액터(Digital Actor)란 실제 배우와 동일한 수준의 외형과 동작을 구현할 수 있는 컴퓨터 그래픽(DG) 영상 캐릭터를 의미한다. 킹콩, 요다 등의 실존 인물이 아닌 캐릭터를 만들거나 현실에서 불가능한 장면을 연출하는 등 영상 특수효과, 3D 애니메이션, 게임, VR과 같은 곳에 사용된다. &lt;br /&gt;
&lt;br /&gt;
◇ 모션캡쳐 장비는 현실적인 움직임으로 퀄리티 높은 영상을 보여줄 수 있지만 상당히 고가의 물건이다. 사람의 얼굴 표정을 학습하여 자연스럽게 아바타로 옮길 수 있다면 높은 CG처리 비용을 줄일 수 있을 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
◇ 현재 국내 VR과 AR의 국내 시장의 규모가 점점 넓어지고 있으며 관련 업계에 따르면 그 사장 규모는 2020년 지금의 4~5배 수준으로 성장할 전망이라고 한다. 더딘 기술 진행속도로 인해 개발 속도도 느리지만 기술이 발전할수록 그 성장 속도가 급격히 증가할 것으로 예상되기 때문에 그 속도를 맞추기 위해서는 미리 개발을 준비하는 등의 행동이 필요하다. 이에 관련 기술을 직접 구현해봄으로써 미래의 VR/AR 산업에 보탬이 될 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 목표 및 내용====&lt;br /&gt;
◇ SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)&lt;br /&gt;
&lt;br /&gt;
● 대표적인 특징점 추출 알고리즘&lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘(interest point extraction algorithm)은 2차원 영상의 일정 지역에 해당하는 화소를 이용하여, 영상의 특징이 될 수 있는 특징점을 추출하는 알고리즘이다. 이때 특징점은 코너(corner) 및 블랍(blob)을 의미한다. &lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘에는 SIFT(Scale Invariant Feature Transform), PCA 등 다른 방법도 있지만 인식률과 처리 속도면에서 더 우수한 SURF 알고리즘을 사용한다.&lt;br /&gt;
&lt;br /&gt;
● 블러이미지나 회전된 이미지는 잘 인식하는 장점이 있는 반면 뷰포인트나 조명이 달라지면 특징점을 잘 잡아내지 못하는 단점이 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 SURF에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow&lt;br /&gt;
&lt;br /&gt;
● 두 개의 연속된 비디오 프레임 사이에 이미지 객체의 동작 패턴을 의미한다.&lt;br /&gt;
&lt;br /&gt;
● 이미지 객체의 움직임 패턴은 객체 자체가 움직이거나 카메라의 움직임으로 인해 생성되는데 이전 프레임이랑 다음 프레임 중 변하는 부분의 움직임을 추적&lt;br /&gt;
&lt;br /&gt;
● 보통 움직임을 통한 구조 분석, 비디오 압축, 영상이 흔들렸거나 블러가 된 경우 깨끗한 영상으로 처리하는 기술인 Video Stabilization 분야에 사용된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lucas-Kanade&lt;br /&gt;
&lt;br /&gt;
● Optical Flow알고리즘에는 다양한 알고리즘이 있으나  Lucas-Kanade방법을 이용하기로 한다.&lt;br /&gt;
&lt;br /&gt;
● 한 프레임의 각 피셀 윈도우를 설정하고 다음 프레임에서 이 윈도우와 가장 잘 매칭되는 곳을 찾는 원리로 작동한다.&lt;br /&gt;
&lt;br /&gt;
● 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적다는 장점이 있다.&lt;br /&gt;
&lt;br /&gt;
● 좁은 지역의 윈도우를 사용하기 때문에 이 윈도우보다 큰 움직임이 발생하였을 경우 움직임을 계산하지 못하며 특징점을 사용하여 optical flow를 얻기 때문에 dense optical flow에 비하여 정확도가 낮은 편이다.&lt;br /&gt;
&lt;br /&gt;
● 윈도우를 벗어나는 큰 움직임을 계산하지 못하는 단점을 개선하기 위해 Pyramids Lucas-Kanade 방법을 사용할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 Lucas-Kanade에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
===관련 기술의 현황===&lt;br /&gt;
====관련 기술의 현황 및 분석(State of art)====&lt;br /&gt;
*전 세계적인 기술현황&lt;br /&gt;
&lt;br /&gt;
◇ 페이스웨어 Live&lt;br /&gt;
&lt;br /&gt;
마커리스 3D 페이셜 모션 캡처 솔루션 제공을 선도하는 페이스웨어 테크놀러지(Faceware Technologies, 이하 페이스웨어)가  23일 향상된 실시간 얼굴 모션캡처와 애니메이션 제품인 페이스웨어 라이브(Faceware Live) 2.5 버전을 발표했다. 페이스웨어 라이브는 실시간으로 사용자 얼굴을 자동 추적하고, 얼굴의 움직임을 페이셜 모델에 즉각 적용시킨 페이셜 애니메이션을 생성한다. 페이스웨어 라이브는 움직임 트래킹을 위해 단 하나의 카메라를 사용하며,  컴퓨터에 연결된 비디오나 웹캠, 페이스웨어 GoPro, Pro HD 헤드캠 시스템, 그밖에 다른 비디오 캡처 장비들을 카메라로 사용할 수 있다. 페이스웨어 라이브 2.5는 디지털캐릭터와 결합된 라이브 공연, 즉 디지털 캐릭터들이 관객이나 사람들과 라이브로 인터랙션이 가능한 실시간 인형극이나  테마파크, 쇼핑몰 내부의 키오스크 스크린 상에서 실시간 상호작용 디지털 캐릭터로 활용될 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:2.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 삼성 갤럭시S9의 AR 이모지&lt;br /&gt;
&lt;br /&gt;
카메라로 촬영한 인물 사진을 기반으로 아바타를 만들 수 있는 기능이다. AR 이모지를 만들면 18개 다양한 감정을 표현할 수 있는 gif 이모티콘이 추가되어 메세지, SNS 등에서 이용 가능하다. 눈, 코, 입, 뺨, 이마 등 100개 이상의 얼굴 특징점을 인식 및 분석해 피사체의 표정을 실시간으로 따라해서 동영상으로 촬영할 수 있다. 이외에도 안경을 착용하거나 피부 색깔, 헤어스타일, 헤어컬러, 의상 등을 변경할 수 있다. 하지만 세밀하지 못한 인물 묘사 방식에 논란이 있었다.&lt;br /&gt;
&lt;br /&gt;
[[파일:3.jpg]]&lt;br /&gt;
[[파일:4.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 애플 iOS11, iOS12의 애니모티콘, 미모지&lt;br /&gt;
&lt;br /&gt;
애플 사의 애니모티콘(애니모지)은 전면 카메라로 촬영한 인물사진을 기반으로 사용자의 표정을 읽은 후, 기존에 있던 이모지에 투사하여 이모티콘을 만들 수 있는 기능이다. 사용자의 얼굴에 3만개 이상의 도트를 투사해 얼굴 맵을 만든 후, 3D 스캔 활용을 통해 50개 이상의 각기 다른 근육의 움직임을 포착하고 분석한다. 분석한 세밀한 표정을 외계인, 고양이, 닭, 개, 여우, 원숭이, 판다. 돼지, 곰돌이, 토끼, 로봇, 유니콘 등 내장된 12개의 애니모티콘에 투영시킨다. 하지만 최근 iOS12의 기능으로 애니모티콘의 개인화 버전인 미모지(memoji)가 발표되었는데, 한정된 캐릭터의 폭을 늘리고 얼굴, 머리, 장신구를 자신의 취향에 맞게 선택할 수 있다. 생성한 애니모티콘을 편집할 수 있으며 아이폰의 메시지 앱에서 이용할 수 있다. 또한 목소리를 녹음하여 오디오가 포함된 비디오 형태로 수신할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:5.jpg]]&lt;br /&gt;
[[파일:6.jpg]]&lt;br /&gt;
&lt;br /&gt;
*특허조사 및 특허 전략 분석&lt;br /&gt;
&lt;br /&gt;
◇ SIFT(Scale Invariant Feature Transform) 알고리즘&lt;br /&gt;
&lt;br /&gt;
● Lowe David G 교수가 개발하였으며 97년도부터 연구하여 프로토 타입의 SIFT알고리즘을 99년도에 발표하였고, 04년도에는 이 알고리즘을 더욱 개량하여 완성된 SIFT알고리즘을 만들게 되었다.&lt;br /&gt;
&lt;br /&gt;
● 영상의 크기와 회전에 불변하는 특징점을 추출하는 알고리즘이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:7.jpg]]&lt;br /&gt;
&lt;br /&gt;
1) Scale-space extrema detection &lt;br /&gt;
&lt;br /&gt;
● Gaussian Pyramid를 생성 한 후 DoG(Difference of Gaussian)을 구해서 극점인 부분을 특징점 후보자로 잡아 준다.&lt;br /&gt;
&lt;br /&gt;
● DoG의 상위와 하위 층까지 모두 합쳐 주변 26개 보다 크거나 모두 작을 때만 특징점 후보자로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이 방법은 특징점을 Scale별로 구하게 되어 Target 물체가 작아져도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:8.jpg]]&lt;br /&gt;
&lt;br /&gt;
2) KeyPoint Localization &lt;br /&gt;
&lt;br /&gt;
● 테일러 급수를 사용하여 더 정확한 극점을 찾은 뒤 테일러 급수로 interpolation하여 그 점의 값을 구하여 특징점 후보자 중에서 정확하지 않는 특징점을 제거한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Orientation Assignment &lt;br /&gt;
&lt;br /&gt;
● 추출된 특징점마다 주 방향을 할당해 주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● 특징점 주변으로 16x16영역을 할당한 후 그 영역 이미지를 Gaussian Blurring을 적용하면 특징점 주변의 영역에 대한 Gradient의 방향과 크기를 결정하게 된다.&lt;br /&gt;
&lt;br /&gt;
● Gradient의 방향과 크기를 구하면 Orientation Histogram을 형성한 후, 가장 값이 큰 것을 해당 Orientation으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
● 회전에 대한 정보가 들어 있기 때문에 물체가 회전해도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
4) KeyPoint Descriptor&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 마다 서술자를 생성해주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● Gaussian Weight Function을 활용하여 서술자를 생성하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 주변으로 16x16의 pixel 영역을 할당하여 아래의 &amp;lt;그림 14&amp;gt;과 같이 Image Gradients를 구한다. 그 후, 서술자 Window 크기의 반값을 Gaussian Weighted function에 곱해주게 된다.&lt;br /&gt;
&lt;br /&gt;
[[파일:9.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 다음으로 히스토그램을 그려주게 되는데 그 전에 먼저 앞에서 구한 Orientation을 빼줘서 Descriptor가 회전에 불변하도록 만들어 준다.&lt;br /&gt;
&lt;br /&gt;
● 객체인식을 할 때는 DB의 각 특징점의 Descriptor를 가지고, 인식할 물체 영상의 Descriptor와 비교하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이때 비슷하면 데이터가 비슷하게 나올 텐데 여기서 사용하는 방법은 유클리드 거리이다.&lt;br /&gt;
● 유클리드 거리의 방식은 연산식이 간단하여 많은 특징점 데이터를 비교하는데 속도면에서 성능이 좋아 많이 사용되는 방식이다. &lt;br /&gt;
&lt;br /&gt;
● 매칭 단계까지 수행되면 DB의 특징점들과 Target의 특징점들 중 매칭된 특징점들이 추출되어 원하는 물체가 어디에 위치하는지 알 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:10.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇SURF&lt;br /&gt;
&lt;br /&gt;
● 알고리즘 순서도 : 특징점 추출 → 주 방향 결정 → descriptor 생성&lt;br /&gt;
&lt;br /&gt;
1) 특징점 추출&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● 수식을 이용하여 적분 영상을 생성한다.&lt;br /&gt;
&lt;br /&gt;
● 적분 영상이란 픽셀 밝기 값을 누적한 형태를 뜻함&lt;br /&gt;
&lt;br /&gt;
● D영역의 밝기 누적 값을 알고 싶다면 ii(4)+ii(1)-ii(2)-ii(3)식을 이용하여 쉽게 D영역의 밝기 누적값을 구할 수 있다.&lt;br /&gt;
&lt;br /&gt;
● 적분영상을 만든 후 헤이시안(Hessian)검출기를 사용하여 특징점을 검출한다. (헤이시안 검출기는 헤이시안 행렬 기반인 특징점 검출 알고리즘으로써 정확성이 높고 행렬식이 최대값인 위치에서 blob을 검출 할 때 사용하게 된다)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● SURF에서는 Hessian_Laplace Detector를 사용하는 대신에 위의 공식대로 FAST Hessian Detector 을 사용하여 수행성능을 향상시킨다.&lt;br /&gt;
&lt;br /&gt;
2) Dxx, Dyy, Dxy박스 필터를 구하는 방법&lt;br /&gt;
&lt;br /&gt;
● Haar Wavelet을 이용 - Dxx와 Dyy를 구할 때는 검은 영역부분을 -2, 흰영역부분은 1을 곱하여 구하고 Dxy는 검은 영역을 -1, 흰영역을 1을 곱하여 구한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) 9x9 박스필터를 이용한 Dxx, Dyy, Dxy를 구하는 방식&lt;br /&gt;
&lt;br /&gt;
● Hessian Determinant 데이터를 이용하여 각 필터 사이즈 별로 특징점을 검출하게 된다. 필터 사이즈란 위의 Dxx, Dyy, Dxy를 구하는 박스필터 영역 사이즈를 의미한다. SURF에서는 박스 필터 영역을 Scale해서 특징점을 추출해 aliasing 이 없는 장점을 가지고 있다.  Hessian Determinant 데이터를 각 픽셀마다 구했으면 각각의 Threshold와 비교하게 된다. &lt;br /&gt;
&lt;br /&gt;
● Threshold보다 값이 크면, 인접한 8개의 픽셀의 Hessian Determinant를 비교하여 큰 값인지 비교하게 된다. 만약 큰 값이면 상하 박스 필터 사이즈의 3x3크기의 각 9개의 Hessina Determinant를 비교하여 가장 클 경우 특징점으로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) 주 방향 결정&lt;br /&gt;
&lt;br /&gt;
● 특징점 중심으로 특징점이 검출된 스케일 정보 s를 이용하여 반지름이 6s의 원 안의 픽셀들에 대하여 x방향과 y방향으로 Haar Wavelet Response인 dx와 dy를 구하게 된다. 윈도우 5도 간격으로 회전하면서 60도 윈도우 내의 벡터의 크기를 더해 가장 큰 크기를 가지는 방향을 특징점의 주 방향으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
5) descriptor 생성&lt;br /&gt;
&lt;br /&gt;
● descriptor는 특징점 주변의 일정한 영역 내에 이웃하고 있는 픽셀의 밝기 변화를 나타낸다.&lt;br /&gt;
&lt;br /&gt;
[[파일:11.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 주 방향과 scale정보 s를 이용하여 특징점 중심으로 20s크기의 윈도우를 위의 그림처럼 구성하고, 구성된 윈도우를 4X4 영역으로 분할하여 16개의 영역으로 나눈다. 분할된 각 영역을 다시 한번 5X5크기로 분할하여 각 픽셀을 haar wavelet filter를 사용하여 각 를 구하여 16개의 영역에 각 위의 4개의 Descriptor를 생성하여 총 64개의 Descriptor를 생성할 수 있게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*기술 로드맵&lt;br /&gt;
&lt;br /&gt;
[[파일:12.jpg]]&lt;br /&gt;
&lt;br /&gt;
====시장상황에 대한 분석====&lt;br /&gt;
&lt;br /&gt;
*경쟁제품 조사 비교&lt;br /&gt;
&lt;br /&gt;
◇ Avatar SDK&lt;br /&gt;
&lt;br /&gt;
하나의 2D 정면 얼굴 사진을 입력하면 3D 아바타 생성 SDK를 사용하여 개인의 아바타를 만들어준다. 딥러닝과 컴퓨터 그래픽 기술을 이용하여 개발하였고, 현재 cloud나 PC, Mac, Android, iOS 환경 모두 이용 가능하다. 아바타로의 변환에는 사진마다 차이가 있지만 약 10초가 소요된다. 만들어진 아바타는 Blendshape, 헤어스타일, 헤어컬러를 변경할 수 있고, 윙크, 웃음, 하품 등 몇몇 특정 표정 변화가 가능하다. 그림은 Avatar SDK를 이용하여 왼쪽 상단의 사진을 입력으로 아바타를 생성한 사진이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:13.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ Mirror AI&lt;br /&gt;
&lt;br /&gt;
스마트폰으로 한장의 셀프 사진을 찍으면, 이를 바탕으로 자신의 모습을 한 몇 백개의 이모지를 생성하여 메신저에서 사용할 수 있는 키보드 어플리케이션이다. 현재 다양한 언어를 지원하고, iOS 10.0 버전 이상만 사용할 수 있다. 학습한 모델을 통해 사람의 얼굴 특징을 식별하고, 이에 맞게 수초 내에 사람의 얼굴 특징을 추려내어 이모티콘을 만든다. 생성된 이모티콘은 이 키보드 어플리케이션을 사용하여 어떤 메신저에서든 사용할 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:14.jpg]]&lt;br /&gt;
&lt;br /&gt;
*마케팅 전략 제시&lt;br /&gt;
&lt;br /&gt;
[[파일:15.jpg]]&lt;br /&gt;
&lt;br /&gt;
===개발과제의 기대효과===&lt;br /&gt;
====기술적 기대효과====&lt;br /&gt;
&lt;br /&gt;
◇ 영화 촬영시 기존에는 모션 센서들을 부착하여 배우들의 표정을 읽어와 캐릭터의 표정과 매핑시켜 부착하는데까지 시간이 오래 걸렸고 많은 기술들이 필요되었는데 만약 이 프로젝트가 성공하게 될 경우, 배우가 표정을 짓는 것만으로 쉽게 캐릭터에 매핑될 수 있도록 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자기가 원하는 캐릭터나 다른 인물 모습의 자신과 같은 표정을 짓는 영상을 만들 수 있을 것이다.&lt;br /&gt;
&lt;br /&gt;
====경제적, 사회적 기대 및 파급효과====&lt;br /&gt;
&lt;br /&gt;
◇ 기존에 영화 촬영시 모션 캡쳐에 필요했던 장비들이 없어도 원하는 캐릭터의 표정을 구현할 수 있어 제작비 절감의 효과가 기대된다. &lt;br /&gt;
&lt;br /&gt;
◇ 현재 실존하지 않는 배우의 모습에 표정을 매핑하여 실제로 연기하는 것처럼 보이게 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자신의 표정을 다른 캐릭터로 매핑함으로써 원래 영상보다 감정 표현을 훨씬 극대화할 수 있다.&lt;br /&gt;
&lt;br /&gt;
===기술개발 일정 및 추진체계===&lt;br /&gt;
====개발 일정====&lt;br /&gt;
&lt;br /&gt;
[[파일:16.jpg]]&lt;br /&gt;
&lt;br /&gt;
====구성원 및 추진체계====&lt;br /&gt;
&lt;br /&gt;
◇ 전ㅇㅇ(팀장) &lt;br /&gt;
&lt;br /&gt;
● SURF를 이용하여 얼굴 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원)&lt;br /&gt;
&lt;br /&gt;
● TwinGAN을 이용하여 모델링 및 검증을 진행한다.&lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원) &lt;br /&gt;
&lt;br /&gt;
● Facial Expression Research Group Database인 FREG-DG를 수집한다.&lt;br /&gt;
&lt;br /&gt;
◇ 전원&lt;br /&gt;
&lt;br /&gt;
● Digital Actor의 세부 영역인 표정을 인식하고 그 표정을 제어할 수 있는 두 가지 영역을 포함할 수 있는 주제를 선정한다.&lt;br /&gt;
&lt;br /&gt;
● 필요한 알고리즘, 데이터 셋 등을 조사 후 개발에 대비한다.&lt;br /&gt;
&lt;br /&gt;
● Optical Flow를 이용하여 벡터 움직임을 추적한 뒤 TwinGAN 결과로 나온 캐릭터에 대입한다.&lt;br /&gt;
&lt;br /&gt;
==설계==&lt;br /&gt;
===설계사양===&lt;br /&gt;
====개발 환경====&lt;br /&gt;
	- Ubuntu 18.04 &lt;br /&gt;
&lt;br /&gt;
		- python2.7에서 caffe, dlib, opencv 등 이용	&lt;br /&gt;
&lt;br /&gt;
	- Matlab2018b&lt;br /&gt;
&lt;br /&gt;
	- 프로세스 : CPU 4개&lt;br /&gt;
&lt;br /&gt;
===개념설계안===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 동영상을 ‘Free Video to JPG Converter’를 이용하여 동영상에서 사진을 원하는 프레임 수를 지정하여 JPG파일을 추출한다. &lt;br /&gt;
&lt;br /&gt;
[[파일:17.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 추출한 JPG파일에 SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)는 대표적인 특징점 추출 알고리즘으로 2차원 영상의 일정 지역에 해당하는 화소를 이용하여 특징점을 추출한다. OpenCV에서 제공하는 함수를 사용한다.&lt;br /&gt;
&lt;br /&gt;
[[파일:18.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow 알고리즘을 이용하여 이전 프레임이랑 다음 프레임, 두 개의 연속된 얼굴 프레임 사이에 동작 패턴을 추적한다. Optical Flow 알고리즘 중 Lucas-Kanade(LK)는 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적어 비교적 속도가 빠르기 때문에 Lucas-Kanade를 사용한다.&lt;br /&gt;
&lt;br /&gt;
[[파일:19.jpg]]&lt;br /&gt;
[[파일:20.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 추적한 특징점의 벡터를 각 프레임 아바타에 적용한다.&lt;br /&gt;
&lt;br /&gt;
===이론적 계산 및 시뮬레이션===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상 입력 -&amp;gt; 표정을 따라하는 캐릭터 영상 출력&lt;br /&gt;
&lt;br /&gt;
[[파일:21.jpg]]&lt;br /&gt;
&lt;br /&gt;
===소프트웨어 설계===&lt;br /&gt;
&lt;br /&gt;
[[파일:22.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;전체 설계도&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. ‘Free Video to JPG Converter’를 이용하여 동영상을 여러 프레임의 사진으로 전환한다. &lt;br /&gt;
&lt;br /&gt;
2. 각각의 사진들로부터 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
3. 특징점들의 변화를 이용하여 Optical Flow를 이용하여 특징점의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
4. 1번의 결과 추출된 여러 사진들 중 첫 번째 사진을 TwinGAN을 이용하여 캐릭터로 변환 후 변환된 캐릭터의 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
5. 3번에서 추적한 Optical Flow를 4번에 적용하여 gif파일로 변환한다.&lt;br /&gt;
&lt;br /&gt;
==결과 및 평가==&lt;br /&gt;
===완료 작품의 소개===&lt;br /&gt;
====프로토타입 사진 혹은 작동 장면====&lt;br /&gt;
내용&lt;br /&gt;
====포스터====&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===관련사업비 내역서===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===완료작품의 평가===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===향후계획===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===특허 출원 내용===&lt;br /&gt;
내용&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=1012</id>
		<title>DnA(Digital and Actor)조</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=1012"/>
				<updated>2018-12-25T17:56:15Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: /* 소프트웨어 설계 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==프로젝트 개요==&lt;br /&gt;
=== 기술개발 과제 ===&lt;br /&gt;
''' 국문 : ''' 디지털 액터 : 얼굴 표정과 표현&lt;br /&gt;
&lt;br /&gt;
''' 영문 : ''' Digital Actor : facial expression, emotion&lt;br /&gt;
&lt;br /&gt;
===과제 팀명===&lt;br /&gt;
DnA (Digital and Actor)&lt;br /&gt;
&lt;br /&gt;
===지도교수===&lt;br /&gt;
홍의경 교수님&lt;br /&gt;
&lt;br /&gt;
===개발기간===&lt;br /&gt;
2018년 9월 ~ 2018년 12월 (총 4개월)&lt;br /&gt;
&lt;br /&gt;
===구성원 소개===&lt;br /&gt;
서울시립대학교 통계학과 20xxxxx0xx 전ㅇㅇ(팀장)&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
==서론==&lt;br /&gt;
===개발 과제의 개요===&lt;br /&gt;
====개발 과제 요약====&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상에서 프레임을 추출하여 각 얼굴 사진의 특징점을 인식하고 Optical Flow 알고리즘을 이용하여 특징점의 움직임을 추적한다. 추적한 특징점의 벡터를 아바타에 적용하여 동영상에서 사람의 표정 변화를 캐릭터가 따라하도록 만든다. 아바타 사진을 연결하여 gif파일로 만들어 마찬가지로 사람의 표정 변화를 캐릭터가 똑같이 따라할 수 있도록 한다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 배경 및 효과====&lt;br /&gt;
◇ 디지털 액터(Digital Actor)란 실제 배우와 동일한 수준의 외형과 동작을 구현할 수 있는 컴퓨터 그래픽(DG) 영상 캐릭터를 의미한다. 킹콩, 요다 등의 실존 인물이 아닌 캐릭터를 만들거나 현실에서 불가능한 장면을 연출하는 등 영상 특수효과, 3D 애니메이션, 게임, VR과 같은 곳에 사용된다. &lt;br /&gt;
&lt;br /&gt;
◇ 모션캡쳐 장비는 현실적인 움직임으로 퀄리티 높은 영상을 보여줄 수 있지만 상당히 고가의 물건이다. 사람의 얼굴 표정을 학습하여 자연스럽게 아바타로 옮길 수 있다면 높은 CG처리 비용을 줄일 수 있을 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
◇ 현재 국내 VR과 AR의 국내 시장의 규모가 점점 넓어지고 있으며 관련 업계에 따르면 그 사장 규모는 2020년 지금의 4~5배 수준으로 성장할 전망이라고 한다. 더딘 기술 진행속도로 인해 개발 속도도 느리지만 기술이 발전할수록 그 성장 속도가 급격히 증가할 것으로 예상되기 때문에 그 속도를 맞추기 위해서는 미리 개발을 준비하는 등의 행동이 필요하다. 이에 관련 기술을 직접 구현해봄으로써 미래의 VR/AR 산업에 보탬이 될 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 목표 및 내용====&lt;br /&gt;
◇ SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)&lt;br /&gt;
&lt;br /&gt;
● 대표적인 특징점 추출 알고리즘&lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘(interest point extraction algorithm)은 2차원 영상의 일정 지역에 해당하는 화소를 이용하여, 영상의 특징이 될 수 있는 특징점을 추출하는 알고리즘이다. 이때 특징점은 코너(corner) 및 블랍(blob)을 의미한다. &lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘에는 SIFT(Scale Invariant Feature Transform), PCA 등 다른 방법도 있지만 인식률과 처리 속도면에서 더 우수한 SURF 알고리즘을 사용한다.&lt;br /&gt;
&lt;br /&gt;
● 블러이미지나 회전된 이미지는 잘 인식하는 장점이 있는 반면 뷰포인트나 조명이 달라지면 특징점을 잘 잡아내지 못하는 단점이 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 SURF에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow&lt;br /&gt;
&lt;br /&gt;
● 두 개의 연속된 비디오 프레임 사이에 이미지 객체의 동작 패턴을 의미한다.&lt;br /&gt;
&lt;br /&gt;
● 이미지 객체의 움직임 패턴은 객체 자체가 움직이거나 카메라의 움직임으로 인해 생성되는데 이전 프레임이랑 다음 프레임 중 변하는 부분의 움직임을 추적&lt;br /&gt;
&lt;br /&gt;
● 보통 움직임을 통한 구조 분석, 비디오 압축, 영상이 흔들렸거나 블러가 된 경우 깨끗한 영상으로 처리하는 기술인 Video Stabilization 분야에 사용된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lucas-Kanade&lt;br /&gt;
&lt;br /&gt;
● Optical Flow알고리즘에는 다양한 알고리즘이 있으나  Lucas-Kanade방법을 이용하기로 한다.&lt;br /&gt;
&lt;br /&gt;
● 한 프레임의 각 피셀 윈도우를 설정하고 다음 프레임에서 이 윈도우와 가장 잘 매칭되는 곳을 찾는 원리로 작동한다.&lt;br /&gt;
&lt;br /&gt;
● 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적다는 장점이 있다.&lt;br /&gt;
&lt;br /&gt;
● 좁은 지역의 윈도우를 사용하기 때문에 이 윈도우보다 큰 움직임이 발생하였을 경우 움직임을 계산하지 못하며 특징점을 사용하여 optical flow를 얻기 때문에 dense optical flow에 비하여 정확도가 낮은 편이다.&lt;br /&gt;
&lt;br /&gt;
● 윈도우를 벗어나는 큰 움직임을 계산하지 못하는 단점을 개선하기 위해 Pyramids Lucas-Kanade 방법을 사용할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 Lucas-Kanade에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
===관련 기술의 현황===&lt;br /&gt;
====관련 기술의 현황 및 분석(State of art)====&lt;br /&gt;
*전 세계적인 기술현황&lt;br /&gt;
&lt;br /&gt;
◇ 페이스웨어 Live&lt;br /&gt;
&lt;br /&gt;
마커리스 3D 페이셜 모션 캡처 솔루션 제공을 선도하는 페이스웨어 테크놀러지(Faceware Technologies, 이하 페이스웨어)가  23일 향상된 실시간 얼굴 모션캡처와 애니메이션 제품인 페이스웨어 라이브(Faceware Live) 2.5 버전을 발표했다. 페이스웨어 라이브는 실시간으로 사용자 얼굴을 자동 추적하고, 얼굴의 움직임을 페이셜 모델에 즉각 적용시킨 페이셜 애니메이션을 생성한다. 페이스웨어 라이브는 움직임 트래킹을 위해 단 하나의 카메라를 사용하며,  컴퓨터에 연결된 비디오나 웹캠, 페이스웨어 GoPro, Pro HD 헤드캠 시스템, 그밖에 다른 비디오 캡처 장비들을 카메라로 사용할 수 있다. 페이스웨어 라이브 2.5는 디지털캐릭터와 결합된 라이브 공연, 즉 디지털 캐릭터들이 관객이나 사람들과 라이브로 인터랙션이 가능한 실시간 인형극이나  테마파크, 쇼핑몰 내부의 키오스크 스크린 상에서 실시간 상호작용 디지털 캐릭터로 활용될 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:2.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 삼성 갤럭시S9의 AR 이모지&lt;br /&gt;
&lt;br /&gt;
카메라로 촬영한 인물 사진을 기반으로 아바타를 만들 수 있는 기능이다. AR 이모지를 만들면 18개 다양한 감정을 표현할 수 있는 gif 이모티콘이 추가되어 메세지, SNS 등에서 이용 가능하다. 눈, 코, 입, 뺨, 이마 등 100개 이상의 얼굴 특징점을 인식 및 분석해 피사체의 표정을 실시간으로 따라해서 동영상으로 촬영할 수 있다. 이외에도 안경을 착용하거나 피부 색깔, 헤어스타일, 헤어컬러, 의상 등을 변경할 수 있다. 하지만 세밀하지 못한 인물 묘사 방식에 논란이 있었다.&lt;br /&gt;
&lt;br /&gt;
[[파일:3.jpg]]&lt;br /&gt;
[[파일:4.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 애플 iOS11, iOS12의 애니모티콘, 미모지&lt;br /&gt;
&lt;br /&gt;
애플 사의 애니모티콘(애니모지)은 전면 카메라로 촬영한 인물사진을 기반으로 사용자의 표정을 읽은 후, 기존에 있던 이모지에 투사하여 이모티콘을 만들 수 있는 기능이다. 사용자의 얼굴에 3만개 이상의 도트를 투사해 얼굴 맵을 만든 후, 3D 스캔 활용을 통해 50개 이상의 각기 다른 근육의 움직임을 포착하고 분석한다. 분석한 세밀한 표정을 외계인, 고양이, 닭, 개, 여우, 원숭이, 판다. 돼지, 곰돌이, 토끼, 로봇, 유니콘 등 내장된 12개의 애니모티콘에 투영시킨다. 하지만 최근 iOS12의 기능으로 애니모티콘의 개인화 버전인 미모지(memoji)가 발표되었는데, 한정된 캐릭터의 폭을 늘리고 얼굴, 머리, 장신구를 자신의 취향에 맞게 선택할 수 있다. 생성한 애니모티콘을 편집할 수 있으며 아이폰의 메시지 앱에서 이용할 수 있다. 또한 목소리를 녹음하여 오디오가 포함된 비디오 형태로 수신할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:5.jpg]]&lt;br /&gt;
[[파일:6.jpg]]&lt;br /&gt;
&lt;br /&gt;
*특허조사 및 특허 전략 분석&lt;br /&gt;
&lt;br /&gt;
◇ SIFT(Scale Invariant Feature Transform) 알고리즘&lt;br /&gt;
&lt;br /&gt;
● Lowe David G 교수가 개발하였으며 97년도부터 연구하여 프로토 타입의 SIFT알고리즘을 99년도에 발표하였고, 04년도에는 이 알고리즘을 더욱 개량하여 완성된 SIFT알고리즘을 만들게 되었다.&lt;br /&gt;
&lt;br /&gt;
● 영상의 크기와 회전에 불변하는 특징점을 추출하는 알고리즘이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:7.jpg]]&lt;br /&gt;
&lt;br /&gt;
1) Scale-space extrema detection &lt;br /&gt;
&lt;br /&gt;
● Gaussian Pyramid를 생성 한 후 DoG(Difference of Gaussian)을 구해서 극점인 부분을 특징점 후보자로 잡아 준다.&lt;br /&gt;
&lt;br /&gt;
● DoG의 상위와 하위 층까지 모두 합쳐 주변 26개 보다 크거나 모두 작을 때만 특징점 후보자로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이 방법은 특징점을 Scale별로 구하게 되어 Target 물체가 작아져도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:8.jpg]]&lt;br /&gt;
&lt;br /&gt;
2) KeyPoint Localization &lt;br /&gt;
&lt;br /&gt;
● 테일러 급수를 사용하여 더 정확한 극점을 찾은 뒤 테일러 급수로 interpolation하여 그 점의 값을 구하여 특징점 후보자 중에서 정확하지 않는 특징점을 제거한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Orientation Assignment &lt;br /&gt;
&lt;br /&gt;
● 추출된 특징점마다 주 방향을 할당해 주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● 특징점 주변으로 16x16영역을 할당한 후 그 영역 이미지를 Gaussian Blurring을 적용하면 특징점 주변의 영역에 대한 Gradient의 방향과 크기를 결정하게 된다.&lt;br /&gt;
&lt;br /&gt;
● Gradient의 방향과 크기를 구하면 Orientation Histogram을 형성한 후, 가장 값이 큰 것을 해당 Orientation으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
● 회전에 대한 정보가 들어 있기 때문에 물체가 회전해도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
4) KeyPoint Descriptor&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 마다 서술자를 생성해주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● Gaussian Weight Function을 활용하여 서술자를 생성하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 주변으로 16x16의 pixel 영역을 할당하여 아래의 &amp;lt;그림 14&amp;gt;과 같이 Image Gradients를 구한다. 그 후, 서술자 Window 크기의 반값을 Gaussian Weighted function에 곱해주게 된다.&lt;br /&gt;
&lt;br /&gt;
[[파일:9.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 다음으로 히스토그램을 그려주게 되는데 그 전에 먼저 앞에서 구한 Orientation을 빼줘서 Descriptor가 회전에 불변하도록 만들어 준다.&lt;br /&gt;
&lt;br /&gt;
● 객체인식을 할 때는 DB의 각 특징점의 Descriptor를 가지고, 인식할 물체 영상의 Descriptor와 비교하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이때 비슷하면 데이터가 비슷하게 나올 텐데 여기서 사용하는 방법은 유클리드 거리이다.&lt;br /&gt;
● 유클리드 거리의 방식은 연산식이 간단하여 많은 특징점 데이터를 비교하는데 속도면에서 성능이 좋아 많이 사용되는 방식이다. &lt;br /&gt;
&lt;br /&gt;
● 매칭 단계까지 수행되면 DB의 특징점들과 Target의 특징점들 중 매칭된 특징점들이 추출되어 원하는 물체가 어디에 위치하는지 알 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:10.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇SURF&lt;br /&gt;
&lt;br /&gt;
● 알고리즘 순서도 : 특징점 추출 → 주 방향 결정 → descriptor 생성&lt;br /&gt;
&lt;br /&gt;
1) 특징점 추출&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● 수식을 이용하여 적분 영상을 생성한다.&lt;br /&gt;
&lt;br /&gt;
● 적분 영상이란 픽셀 밝기 값을 누적한 형태를 뜻함&lt;br /&gt;
&lt;br /&gt;
● D영역의 밝기 누적 값을 알고 싶다면 ii(4)+ii(1)-ii(2)-ii(3)식을 이용하여 쉽게 D영역의 밝기 누적값을 구할 수 있다.&lt;br /&gt;
&lt;br /&gt;
● 적분영상을 만든 후 헤이시안(Hessian)검출기를 사용하여 특징점을 검출한다. (헤이시안 검출기는 헤이시안 행렬 기반인 특징점 검출 알고리즘으로써 정확성이 높고 행렬식이 최대값인 위치에서 blob을 검출 할 때 사용하게 된다)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● SURF에서는 Hessian_Laplace Detector를 사용하는 대신에 위의 공식대로 FAST Hessian Detector 을 사용하여 수행성능을 향상시킨다.&lt;br /&gt;
&lt;br /&gt;
2) Dxx, Dyy, Dxy박스 필터를 구하는 방법&lt;br /&gt;
&lt;br /&gt;
● Haar Wavelet을 이용 - Dxx와 Dyy를 구할 때는 검은 영역부분을 -2, 흰영역부분은 1을 곱하여 구하고 Dxy는 검은 영역을 -1, 흰영역을 1을 곱하여 구한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) 9x9 박스필터를 이용한 Dxx, Dyy, Dxy를 구하는 방식&lt;br /&gt;
&lt;br /&gt;
● Hessian Determinant 데이터를 이용하여 각 필터 사이즈 별로 특징점을 검출하게 된다. 필터 사이즈란 위의 Dxx, Dyy, Dxy를 구하는 박스필터 영역 사이즈를 의미한다. SURF에서는 박스 필터 영역을 Scale해서 특징점을 추출해 aliasing 이 없는 장점을 가지고 있다.  Hessian Determinant 데이터를 각 픽셀마다 구했으면 각각의 Threshold와 비교하게 된다. &lt;br /&gt;
&lt;br /&gt;
● Threshold보다 값이 크면, 인접한 8개의 픽셀의 Hessian Determinant를 비교하여 큰 값인지 비교하게 된다. 만약 큰 값이면 상하 박스 필터 사이즈의 3x3크기의 각 9개의 Hessina Determinant를 비교하여 가장 클 경우 특징점으로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) 주 방향 결정&lt;br /&gt;
&lt;br /&gt;
● 특징점 중심으로 특징점이 검출된 스케일 정보 s를 이용하여 반지름이 6s의 원 안의 픽셀들에 대하여 x방향과 y방향으로 Haar Wavelet Response인 dx와 dy를 구하게 된다. 윈도우 5도 간격으로 회전하면서 60도 윈도우 내의 벡터의 크기를 더해 가장 큰 크기를 가지는 방향을 특징점의 주 방향으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
5) descriptor 생성&lt;br /&gt;
&lt;br /&gt;
● descriptor는 특징점 주변의 일정한 영역 내에 이웃하고 있는 픽셀의 밝기 변화를 나타낸다.&lt;br /&gt;
&lt;br /&gt;
[[파일:11.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 주 방향과 scale정보 s를 이용하여 특징점 중심으로 20s크기의 윈도우를 위의 그림처럼 구성하고, 구성된 윈도우를 4X4 영역으로 분할하여 16개의 영역으로 나눈다. 분할된 각 영역을 다시 한번 5X5크기로 분할하여 각 픽셀을 haar wavelet filter를 사용하여 각 를 구하여 16개의 영역에 각 위의 4개의 Descriptor를 생성하여 총 64개의 Descriptor를 생성할 수 있게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*기술 로드맵&lt;br /&gt;
&lt;br /&gt;
[[파일:12.jpg]]&lt;br /&gt;
&lt;br /&gt;
====시장상황에 대한 분석====&lt;br /&gt;
&lt;br /&gt;
*경쟁제품 조사 비교&lt;br /&gt;
&lt;br /&gt;
◇ Avatar SDK&lt;br /&gt;
&lt;br /&gt;
하나의 2D 정면 얼굴 사진을 입력하면 3D 아바타 생성 SDK를 사용하여 개인의 아바타를 만들어준다. 딥러닝과 컴퓨터 그래픽 기술을 이용하여 개발하였고, 현재 cloud나 PC, Mac, Android, iOS 환경 모두 이용 가능하다. 아바타로의 변환에는 사진마다 차이가 있지만 약 10초가 소요된다. 만들어진 아바타는 Blendshape, 헤어스타일, 헤어컬러를 변경할 수 있고, 윙크, 웃음, 하품 등 몇몇 특정 표정 변화가 가능하다. 그림은 Avatar SDK를 이용하여 왼쪽 상단의 사진을 입력으로 아바타를 생성한 사진이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:13.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ Mirror AI&lt;br /&gt;
&lt;br /&gt;
스마트폰으로 한장의 셀프 사진을 찍으면, 이를 바탕으로 자신의 모습을 한 몇 백개의 이모지를 생성하여 메신저에서 사용할 수 있는 키보드 어플리케이션이다. 현재 다양한 언어를 지원하고, iOS 10.0 버전 이상만 사용할 수 있다. 학습한 모델을 통해 사람의 얼굴 특징을 식별하고, 이에 맞게 수초 내에 사람의 얼굴 특징을 추려내어 이모티콘을 만든다. 생성된 이모티콘은 이 키보드 어플리케이션을 사용하여 어떤 메신저에서든 사용할 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:14.jpg]]&lt;br /&gt;
&lt;br /&gt;
*마케팅 전략 제시&lt;br /&gt;
&lt;br /&gt;
[[파일:15.jpg]]&lt;br /&gt;
&lt;br /&gt;
===개발과제의 기대효과===&lt;br /&gt;
====기술적 기대효과====&lt;br /&gt;
&lt;br /&gt;
◇ 영화 촬영시 기존에는 모션 센서들을 부착하여 배우들의 표정을 읽어와 캐릭터의 표정과 매핑시켜 부착하는데까지 시간이 오래 걸렸고 많은 기술들이 필요되었는데 만약 이 프로젝트가 성공하게 될 경우, 배우가 표정을 짓는 것만으로 쉽게 캐릭터에 매핑될 수 있도록 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자기가 원하는 캐릭터나 다른 인물 모습의 자신과 같은 표정을 짓는 영상을 만들 수 있을 것이다.&lt;br /&gt;
&lt;br /&gt;
====경제적, 사회적 기대 및 파급효과====&lt;br /&gt;
&lt;br /&gt;
◇ 기존에 영화 촬영시 모션 캡쳐에 필요했던 장비들이 없어도 원하는 캐릭터의 표정을 구현할 수 있어 제작비 절감의 효과가 기대된다. &lt;br /&gt;
&lt;br /&gt;
◇ 현재 실존하지 않는 배우의 모습에 표정을 매핑하여 실제로 연기하는 것처럼 보이게 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자신의 표정을 다른 캐릭터로 매핑함으로써 원래 영상보다 감정 표현을 훨씬 극대화할 수 있다.&lt;br /&gt;
&lt;br /&gt;
===기술개발 일정 및 추진체계===&lt;br /&gt;
====개발 일정====&lt;br /&gt;
&lt;br /&gt;
[[파일:16.jpg]]&lt;br /&gt;
&lt;br /&gt;
====구성원 및 추진체계====&lt;br /&gt;
&lt;br /&gt;
◇ 전ㅇㅇ(팀장) &lt;br /&gt;
&lt;br /&gt;
● SURF를 이용하여 얼굴 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원)&lt;br /&gt;
&lt;br /&gt;
● TwinGAN을 이용하여 모델링 및 검증을 진행한다.&lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원) &lt;br /&gt;
&lt;br /&gt;
● Facial Expression Research Group Database인 FREG-DG를 수집한다.&lt;br /&gt;
&lt;br /&gt;
◇ 전원&lt;br /&gt;
&lt;br /&gt;
● Digital Actor의 세부 영역인 표정을 인식하고 그 표정을 제어할 수 있는 두 가지 영역을 포함할 수 있는 주제를 선정한다.&lt;br /&gt;
&lt;br /&gt;
● 필요한 알고리즘, 데이터 셋 등을 조사 후 개발에 대비한다.&lt;br /&gt;
&lt;br /&gt;
● Optical Flow를 이용하여 벡터 움직임을 추적한 뒤 TwinGAN 결과로 나온 캐릭터에 대입한다.&lt;br /&gt;
&lt;br /&gt;
==설계==&lt;br /&gt;
===설계사양===&lt;br /&gt;
====개발 환경====&lt;br /&gt;
	- Ubuntu 18.04 &lt;br /&gt;
&lt;br /&gt;
		- python2.7에서 caffe, dlib, opencv 등 이용	&lt;br /&gt;
&lt;br /&gt;
	- Matlab2018b&lt;br /&gt;
&lt;br /&gt;
	- 프로세스 : CPU 4개&lt;br /&gt;
&lt;br /&gt;
===개념설계안===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 동영상을 ‘Free Video to JPG Converter’를 이용하여 동영상에서 사진을 원하는 프레임 수를 지정하여 JPG파일을 추출한다. &lt;br /&gt;
&lt;br /&gt;
[[파일:17.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 추출한 JPG파일에 SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)는 대표적인 특징점 추출 알고리즘으로 2차원 영상의 일정 지역에 해당하는 화소를 이용하여 특징점을 추출한다. OpenCV에서 제공하는 함수를 사용한다.&lt;br /&gt;
&lt;br /&gt;
[[파일:18.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow 알고리즘을 이용하여 이전 프레임이랑 다음 프레임, 두 개의 연속된 얼굴 프레임 사이에 동작 패턴을 추적한다. Optical Flow 알고리즘 중 Lucas-Kanade(LK)는 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적어 비교적 속도가 빠르기 때문에 Lucas-Kanade를 사용한다.&lt;br /&gt;
&lt;br /&gt;
[[파일:19.jpg]]&lt;br /&gt;
[[파일:20.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 추적한 특징점의 벡터를 각 프레임 아바타에 적용한다.&lt;br /&gt;
&lt;br /&gt;
===이론적 계산 및 시뮬레이션===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상 입력 -&amp;gt; 표정을 따라하는 캐릭터 영상 출력&lt;br /&gt;
&lt;br /&gt;
[[파일:21.jpg]]&lt;br /&gt;
&lt;br /&gt;
===소프트웨어 설계===&lt;br /&gt;
&lt;br /&gt;
[[파일:22.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;전체 설계도&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. ‘Free Video to JPG Converter’를 이용하여 동영상을 여러 프레임의 사진으로 전환한다. &lt;br /&gt;
2. 각각의 사진들로부터 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
3. 특징점들의 변화를 이용하여 Optical Flow를 이용하여 특징점의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
4. 1번의 결과 추출된 여러 사진들 중 첫 번째 사진을 TwinGAN을 이용하여 캐릭터로 변환 후 변환된 캐릭터의 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
5. 3번에서 추적한 Optical Flow를 4번에 적용하여 gif파일로 변환한다.&lt;br /&gt;
&lt;br /&gt;
==결과 및 평가==&lt;br /&gt;
===완료 작품의 소개===&lt;br /&gt;
====프로토타입 사진 혹은 작동 장면====&lt;br /&gt;
내용&lt;br /&gt;
====포스터====&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===관련사업비 내역서===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===완료작품의 평가===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===향후계획===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===특허 출원 내용===&lt;br /&gt;
내용&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=1011</id>
		<title>DnA(Digital and Actor)조</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=1011"/>
				<updated>2018-12-25T17:55:50Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: /* 이론적 계산 및 시뮬레이션 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==프로젝트 개요==&lt;br /&gt;
=== 기술개발 과제 ===&lt;br /&gt;
''' 국문 : ''' 디지털 액터 : 얼굴 표정과 표현&lt;br /&gt;
&lt;br /&gt;
''' 영문 : ''' Digital Actor : facial expression, emotion&lt;br /&gt;
&lt;br /&gt;
===과제 팀명===&lt;br /&gt;
DnA (Digital and Actor)&lt;br /&gt;
&lt;br /&gt;
===지도교수===&lt;br /&gt;
홍의경 교수님&lt;br /&gt;
&lt;br /&gt;
===개발기간===&lt;br /&gt;
2018년 9월 ~ 2018년 12월 (총 4개월)&lt;br /&gt;
&lt;br /&gt;
===구성원 소개===&lt;br /&gt;
서울시립대학교 통계학과 20xxxxx0xx 전ㅇㅇ(팀장)&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
==서론==&lt;br /&gt;
===개발 과제의 개요===&lt;br /&gt;
====개발 과제 요약====&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상에서 프레임을 추출하여 각 얼굴 사진의 특징점을 인식하고 Optical Flow 알고리즘을 이용하여 특징점의 움직임을 추적한다. 추적한 특징점의 벡터를 아바타에 적용하여 동영상에서 사람의 표정 변화를 캐릭터가 따라하도록 만든다. 아바타 사진을 연결하여 gif파일로 만들어 마찬가지로 사람의 표정 변화를 캐릭터가 똑같이 따라할 수 있도록 한다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 배경 및 효과====&lt;br /&gt;
◇ 디지털 액터(Digital Actor)란 실제 배우와 동일한 수준의 외형과 동작을 구현할 수 있는 컴퓨터 그래픽(DG) 영상 캐릭터를 의미한다. 킹콩, 요다 등의 실존 인물이 아닌 캐릭터를 만들거나 현실에서 불가능한 장면을 연출하는 등 영상 특수효과, 3D 애니메이션, 게임, VR과 같은 곳에 사용된다. &lt;br /&gt;
&lt;br /&gt;
◇ 모션캡쳐 장비는 현실적인 움직임으로 퀄리티 높은 영상을 보여줄 수 있지만 상당히 고가의 물건이다. 사람의 얼굴 표정을 학습하여 자연스럽게 아바타로 옮길 수 있다면 높은 CG처리 비용을 줄일 수 있을 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
◇ 현재 국내 VR과 AR의 국내 시장의 규모가 점점 넓어지고 있으며 관련 업계에 따르면 그 사장 규모는 2020년 지금의 4~5배 수준으로 성장할 전망이라고 한다. 더딘 기술 진행속도로 인해 개발 속도도 느리지만 기술이 발전할수록 그 성장 속도가 급격히 증가할 것으로 예상되기 때문에 그 속도를 맞추기 위해서는 미리 개발을 준비하는 등의 행동이 필요하다. 이에 관련 기술을 직접 구현해봄으로써 미래의 VR/AR 산업에 보탬이 될 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 목표 및 내용====&lt;br /&gt;
◇ SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)&lt;br /&gt;
&lt;br /&gt;
● 대표적인 특징점 추출 알고리즘&lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘(interest point extraction algorithm)은 2차원 영상의 일정 지역에 해당하는 화소를 이용하여, 영상의 특징이 될 수 있는 특징점을 추출하는 알고리즘이다. 이때 특징점은 코너(corner) 및 블랍(blob)을 의미한다. &lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘에는 SIFT(Scale Invariant Feature Transform), PCA 등 다른 방법도 있지만 인식률과 처리 속도면에서 더 우수한 SURF 알고리즘을 사용한다.&lt;br /&gt;
&lt;br /&gt;
● 블러이미지나 회전된 이미지는 잘 인식하는 장점이 있는 반면 뷰포인트나 조명이 달라지면 특징점을 잘 잡아내지 못하는 단점이 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 SURF에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow&lt;br /&gt;
&lt;br /&gt;
● 두 개의 연속된 비디오 프레임 사이에 이미지 객체의 동작 패턴을 의미한다.&lt;br /&gt;
&lt;br /&gt;
● 이미지 객체의 움직임 패턴은 객체 자체가 움직이거나 카메라의 움직임으로 인해 생성되는데 이전 프레임이랑 다음 프레임 중 변하는 부분의 움직임을 추적&lt;br /&gt;
&lt;br /&gt;
● 보통 움직임을 통한 구조 분석, 비디오 압축, 영상이 흔들렸거나 블러가 된 경우 깨끗한 영상으로 처리하는 기술인 Video Stabilization 분야에 사용된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lucas-Kanade&lt;br /&gt;
&lt;br /&gt;
● Optical Flow알고리즘에는 다양한 알고리즘이 있으나  Lucas-Kanade방법을 이용하기로 한다.&lt;br /&gt;
&lt;br /&gt;
● 한 프레임의 각 피셀 윈도우를 설정하고 다음 프레임에서 이 윈도우와 가장 잘 매칭되는 곳을 찾는 원리로 작동한다.&lt;br /&gt;
&lt;br /&gt;
● 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적다는 장점이 있다.&lt;br /&gt;
&lt;br /&gt;
● 좁은 지역의 윈도우를 사용하기 때문에 이 윈도우보다 큰 움직임이 발생하였을 경우 움직임을 계산하지 못하며 특징점을 사용하여 optical flow를 얻기 때문에 dense optical flow에 비하여 정확도가 낮은 편이다.&lt;br /&gt;
&lt;br /&gt;
● 윈도우를 벗어나는 큰 움직임을 계산하지 못하는 단점을 개선하기 위해 Pyramids Lucas-Kanade 방법을 사용할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 Lucas-Kanade에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
===관련 기술의 현황===&lt;br /&gt;
====관련 기술의 현황 및 분석(State of art)====&lt;br /&gt;
*전 세계적인 기술현황&lt;br /&gt;
&lt;br /&gt;
◇ 페이스웨어 Live&lt;br /&gt;
&lt;br /&gt;
마커리스 3D 페이셜 모션 캡처 솔루션 제공을 선도하는 페이스웨어 테크놀러지(Faceware Technologies, 이하 페이스웨어)가  23일 향상된 실시간 얼굴 모션캡처와 애니메이션 제품인 페이스웨어 라이브(Faceware Live) 2.5 버전을 발표했다. 페이스웨어 라이브는 실시간으로 사용자 얼굴을 자동 추적하고, 얼굴의 움직임을 페이셜 모델에 즉각 적용시킨 페이셜 애니메이션을 생성한다. 페이스웨어 라이브는 움직임 트래킹을 위해 단 하나의 카메라를 사용하며,  컴퓨터에 연결된 비디오나 웹캠, 페이스웨어 GoPro, Pro HD 헤드캠 시스템, 그밖에 다른 비디오 캡처 장비들을 카메라로 사용할 수 있다. 페이스웨어 라이브 2.5는 디지털캐릭터와 결합된 라이브 공연, 즉 디지털 캐릭터들이 관객이나 사람들과 라이브로 인터랙션이 가능한 실시간 인형극이나  테마파크, 쇼핑몰 내부의 키오스크 스크린 상에서 실시간 상호작용 디지털 캐릭터로 활용될 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:2.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 삼성 갤럭시S9의 AR 이모지&lt;br /&gt;
&lt;br /&gt;
카메라로 촬영한 인물 사진을 기반으로 아바타를 만들 수 있는 기능이다. AR 이모지를 만들면 18개 다양한 감정을 표현할 수 있는 gif 이모티콘이 추가되어 메세지, SNS 등에서 이용 가능하다. 눈, 코, 입, 뺨, 이마 등 100개 이상의 얼굴 특징점을 인식 및 분석해 피사체의 표정을 실시간으로 따라해서 동영상으로 촬영할 수 있다. 이외에도 안경을 착용하거나 피부 색깔, 헤어스타일, 헤어컬러, 의상 등을 변경할 수 있다. 하지만 세밀하지 못한 인물 묘사 방식에 논란이 있었다.&lt;br /&gt;
&lt;br /&gt;
[[파일:3.jpg]]&lt;br /&gt;
[[파일:4.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 애플 iOS11, iOS12의 애니모티콘, 미모지&lt;br /&gt;
&lt;br /&gt;
애플 사의 애니모티콘(애니모지)은 전면 카메라로 촬영한 인물사진을 기반으로 사용자의 표정을 읽은 후, 기존에 있던 이모지에 투사하여 이모티콘을 만들 수 있는 기능이다. 사용자의 얼굴에 3만개 이상의 도트를 투사해 얼굴 맵을 만든 후, 3D 스캔 활용을 통해 50개 이상의 각기 다른 근육의 움직임을 포착하고 분석한다. 분석한 세밀한 표정을 외계인, 고양이, 닭, 개, 여우, 원숭이, 판다. 돼지, 곰돌이, 토끼, 로봇, 유니콘 등 내장된 12개의 애니모티콘에 투영시킨다. 하지만 최근 iOS12의 기능으로 애니모티콘의 개인화 버전인 미모지(memoji)가 발표되었는데, 한정된 캐릭터의 폭을 늘리고 얼굴, 머리, 장신구를 자신의 취향에 맞게 선택할 수 있다. 생성한 애니모티콘을 편집할 수 있으며 아이폰의 메시지 앱에서 이용할 수 있다. 또한 목소리를 녹음하여 오디오가 포함된 비디오 형태로 수신할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:5.jpg]]&lt;br /&gt;
[[파일:6.jpg]]&lt;br /&gt;
&lt;br /&gt;
*특허조사 및 특허 전략 분석&lt;br /&gt;
&lt;br /&gt;
◇ SIFT(Scale Invariant Feature Transform) 알고리즘&lt;br /&gt;
&lt;br /&gt;
● Lowe David G 교수가 개발하였으며 97년도부터 연구하여 프로토 타입의 SIFT알고리즘을 99년도에 발표하였고, 04년도에는 이 알고리즘을 더욱 개량하여 완성된 SIFT알고리즘을 만들게 되었다.&lt;br /&gt;
&lt;br /&gt;
● 영상의 크기와 회전에 불변하는 특징점을 추출하는 알고리즘이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:7.jpg]]&lt;br /&gt;
&lt;br /&gt;
1) Scale-space extrema detection &lt;br /&gt;
&lt;br /&gt;
● Gaussian Pyramid를 생성 한 후 DoG(Difference of Gaussian)을 구해서 극점인 부분을 특징점 후보자로 잡아 준다.&lt;br /&gt;
&lt;br /&gt;
● DoG의 상위와 하위 층까지 모두 합쳐 주변 26개 보다 크거나 모두 작을 때만 특징점 후보자로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이 방법은 특징점을 Scale별로 구하게 되어 Target 물체가 작아져도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:8.jpg]]&lt;br /&gt;
&lt;br /&gt;
2) KeyPoint Localization &lt;br /&gt;
&lt;br /&gt;
● 테일러 급수를 사용하여 더 정확한 극점을 찾은 뒤 테일러 급수로 interpolation하여 그 점의 값을 구하여 특징점 후보자 중에서 정확하지 않는 특징점을 제거한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Orientation Assignment &lt;br /&gt;
&lt;br /&gt;
● 추출된 특징점마다 주 방향을 할당해 주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● 특징점 주변으로 16x16영역을 할당한 후 그 영역 이미지를 Gaussian Blurring을 적용하면 특징점 주변의 영역에 대한 Gradient의 방향과 크기를 결정하게 된다.&lt;br /&gt;
&lt;br /&gt;
● Gradient의 방향과 크기를 구하면 Orientation Histogram을 형성한 후, 가장 값이 큰 것을 해당 Orientation으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
● 회전에 대한 정보가 들어 있기 때문에 물체가 회전해도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
4) KeyPoint Descriptor&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 마다 서술자를 생성해주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● Gaussian Weight Function을 활용하여 서술자를 생성하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 주변으로 16x16의 pixel 영역을 할당하여 아래의 &amp;lt;그림 14&amp;gt;과 같이 Image Gradients를 구한다. 그 후, 서술자 Window 크기의 반값을 Gaussian Weighted function에 곱해주게 된다.&lt;br /&gt;
&lt;br /&gt;
[[파일:9.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 다음으로 히스토그램을 그려주게 되는데 그 전에 먼저 앞에서 구한 Orientation을 빼줘서 Descriptor가 회전에 불변하도록 만들어 준다.&lt;br /&gt;
&lt;br /&gt;
● 객체인식을 할 때는 DB의 각 특징점의 Descriptor를 가지고, 인식할 물체 영상의 Descriptor와 비교하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이때 비슷하면 데이터가 비슷하게 나올 텐데 여기서 사용하는 방법은 유클리드 거리이다.&lt;br /&gt;
● 유클리드 거리의 방식은 연산식이 간단하여 많은 특징점 데이터를 비교하는데 속도면에서 성능이 좋아 많이 사용되는 방식이다. &lt;br /&gt;
&lt;br /&gt;
● 매칭 단계까지 수행되면 DB의 특징점들과 Target의 특징점들 중 매칭된 특징점들이 추출되어 원하는 물체가 어디에 위치하는지 알 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:10.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇SURF&lt;br /&gt;
&lt;br /&gt;
● 알고리즘 순서도 : 특징점 추출 → 주 방향 결정 → descriptor 생성&lt;br /&gt;
&lt;br /&gt;
1) 특징점 추출&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● 수식을 이용하여 적분 영상을 생성한다.&lt;br /&gt;
&lt;br /&gt;
● 적분 영상이란 픽셀 밝기 값을 누적한 형태를 뜻함&lt;br /&gt;
&lt;br /&gt;
● D영역의 밝기 누적 값을 알고 싶다면 ii(4)+ii(1)-ii(2)-ii(3)식을 이용하여 쉽게 D영역의 밝기 누적값을 구할 수 있다.&lt;br /&gt;
&lt;br /&gt;
● 적분영상을 만든 후 헤이시안(Hessian)검출기를 사용하여 특징점을 검출한다. (헤이시안 검출기는 헤이시안 행렬 기반인 특징점 검출 알고리즘으로써 정확성이 높고 행렬식이 최대값인 위치에서 blob을 검출 할 때 사용하게 된다)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● SURF에서는 Hessian_Laplace Detector를 사용하는 대신에 위의 공식대로 FAST Hessian Detector 을 사용하여 수행성능을 향상시킨다.&lt;br /&gt;
&lt;br /&gt;
2) Dxx, Dyy, Dxy박스 필터를 구하는 방법&lt;br /&gt;
&lt;br /&gt;
● Haar Wavelet을 이용 - Dxx와 Dyy를 구할 때는 검은 영역부분을 -2, 흰영역부분은 1을 곱하여 구하고 Dxy는 검은 영역을 -1, 흰영역을 1을 곱하여 구한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) 9x9 박스필터를 이용한 Dxx, Dyy, Dxy를 구하는 방식&lt;br /&gt;
&lt;br /&gt;
● Hessian Determinant 데이터를 이용하여 각 필터 사이즈 별로 특징점을 검출하게 된다. 필터 사이즈란 위의 Dxx, Dyy, Dxy를 구하는 박스필터 영역 사이즈를 의미한다. SURF에서는 박스 필터 영역을 Scale해서 특징점을 추출해 aliasing 이 없는 장점을 가지고 있다.  Hessian Determinant 데이터를 각 픽셀마다 구했으면 각각의 Threshold와 비교하게 된다. &lt;br /&gt;
&lt;br /&gt;
● Threshold보다 값이 크면, 인접한 8개의 픽셀의 Hessian Determinant를 비교하여 큰 값인지 비교하게 된다. 만약 큰 값이면 상하 박스 필터 사이즈의 3x3크기의 각 9개의 Hessina Determinant를 비교하여 가장 클 경우 특징점으로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) 주 방향 결정&lt;br /&gt;
&lt;br /&gt;
● 특징점 중심으로 특징점이 검출된 스케일 정보 s를 이용하여 반지름이 6s의 원 안의 픽셀들에 대하여 x방향과 y방향으로 Haar Wavelet Response인 dx와 dy를 구하게 된다. 윈도우 5도 간격으로 회전하면서 60도 윈도우 내의 벡터의 크기를 더해 가장 큰 크기를 가지는 방향을 특징점의 주 방향으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
5) descriptor 생성&lt;br /&gt;
&lt;br /&gt;
● descriptor는 특징점 주변의 일정한 영역 내에 이웃하고 있는 픽셀의 밝기 변화를 나타낸다.&lt;br /&gt;
&lt;br /&gt;
[[파일:11.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 주 방향과 scale정보 s를 이용하여 특징점 중심으로 20s크기의 윈도우를 위의 그림처럼 구성하고, 구성된 윈도우를 4X4 영역으로 분할하여 16개의 영역으로 나눈다. 분할된 각 영역을 다시 한번 5X5크기로 분할하여 각 픽셀을 haar wavelet filter를 사용하여 각 를 구하여 16개의 영역에 각 위의 4개의 Descriptor를 생성하여 총 64개의 Descriptor를 생성할 수 있게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*기술 로드맵&lt;br /&gt;
&lt;br /&gt;
[[파일:12.jpg]]&lt;br /&gt;
&lt;br /&gt;
====시장상황에 대한 분석====&lt;br /&gt;
&lt;br /&gt;
*경쟁제품 조사 비교&lt;br /&gt;
&lt;br /&gt;
◇ Avatar SDK&lt;br /&gt;
&lt;br /&gt;
하나의 2D 정면 얼굴 사진을 입력하면 3D 아바타 생성 SDK를 사용하여 개인의 아바타를 만들어준다. 딥러닝과 컴퓨터 그래픽 기술을 이용하여 개발하였고, 현재 cloud나 PC, Mac, Android, iOS 환경 모두 이용 가능하다. 아바타로의 변환에는 사진마다 차이가 있지만 약 10초가 소요된다. 만들어진 아바타는 Blendshape, 헤어스타일, 헤어컬러를 변경할 수 있고, 윙크, 웃음, 하품 등 몇몇 특정 표정 변화가 가능하다. 그림은 Avatar SDK를 이용하여 왼쪽 상단의 사진을 입력으로 아바타를 생성한 사진이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:13.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ Mirror AI&lt;br /&gt;
&lt;br /&gt;
스마트폰으로 한장의 셀프 사진을 찍으면, 이를 바탕으로 자신의 모습을 한 몇 백개의 이모지를 생성하여 메신저에서 사용할 수 있는 키보드 어플리케이션이다. 현재 다양한 언어를 지원하고, iOS 10.0 버전 이상만 사용할 수 있다. 학습한 모델을 통해 사람의 얼굴 특징을 식별하고, 이에 맞게 수초 내에 사람의 얼굴 특징을 추려내어 이모티콘을 만든다. 생성된 이모티콘은 이 키보드 어플리케이션을 사용하여 어떤 메신저에서든 사용할 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:14.jpg]]&lt;br /&gt;
&lt;br /&gt;
*마케팅 전략 제시&lt;br /&gt;
&lt;br /&gt;
[[파일:15.jpg]]&lt;br /&gt;
&lt;br /&gt;
===개발과제의 기대효과===&lt;br /&gt;
====기술적 기대효과====&lt;br /&gt;
&lt;br /&gt;
◇ 영화 촬영시 기존에는 모션 센서들을 부착하여 배우들의 표정을 읽어와 캐릭터의 표정과 매핑시켜 부착하는데까지 시간이 오래 걸렸고 많은 기술들이 필요되었는데 만약 이 프로젝트가 성공하게 될 경우, 배우가 표정을 짓는 것만으로 쉽게 캐릭터에 매핑될 수 있도록 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자기가 원하는 캐릭터나 다른 인물 모습의 자신과 같은 표정을 짓는 영상을 만들 수 있을 것이다.&lt;br /&gt;
&lt;br /&gt;
====경제적, 사회적 기대 및 파급효과====&lt;br /&gt;
&lt;br /&gt;
◇ 기존에 영화 촬영시 모션 캡쳐에 필요했던 장비들이 없어도 원하는 캐릭터의 표정을 구현할 수 있어 제작비 절감의 효과가 기대된다. &lt;br /&gt;
&lt;br /&gt;
◇ 현재 실존하지 않는 배우의 모습에 표정을 매핑하여 실제로 연기하는 것처럼 보이게 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자신의 표정을 다른 캐릭터로 매핑함으로써 원래 영상보다 감정 표현을 훨씬 극대화할 수 있다.&lt;br /&gt;
&lt;br /&gt;
===기술개발 일정 및 추진체계===&lt;br /&gt;
====개발 일정====&lt;br /&gt;
&lt;br /&gt;
[[파일:16.jpg]]&lt;br /&gt;
&lt;br /&gt;
====구성원 및 추진체계====&lt;br /&gt;
&lt;br /&gt;
◇ 전ㅇㅇ(팀장) &lt;br /&gt;
&lt;br /&gt;
● SURF를 이용하여 얼굴 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원)&lt;br /&gt;
&lt;br /&gt;
● TwinGAN을 이용하여 모델링 및 검증을 진행한다.&lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원) &lt;br /&gt;
&lt;br /&gt;
● Facial Expression Research Group Database인 FREG-DG를 수집한다.&lt;br /&gt;
&lt;br /&gt;
◇ 전원&lt;br /&gt;
&lt;br /&gt;
● Digital Actor의 세부 영역인 표정을 인식하고 그 표정을 제어할 수 있는 두 가지 영역을 포함할 수 있는 주제를 선정한다.&lt;br /&gt;
&lt;br /&gt;
● 필요한 알고리즘, 데이터 셋 등을 조사 후 개발에 대비한다.&lt;br /&gt;
&lt;br /&gt;
● Optical Flow를 이용하여 벡터 움직임을 추적한 뒤 TwinGAN 결과로 나온 캐릭터에 대입한다.&lt;br /&gt;
&lt;br /&gt;
==설계==&lt;br /&gt;
===설계사양===&lt;br /&gt;
====개발 환경====&lt;br /&gt;
	- Ubuntu 18.04 &lt;br /&gt;
&lt;br /&gt;
		- python2.7에서 caffe, dlib, opencv 등 이용	&lt;br /&gt;
&lt;br /&gt;
	- Matlab2018b&lt;br /&gt;
&lt;br /&gt;
	- 프로세스 : CPU 4개&lt;br /&gt;
&lt;br /&gt;
===개념설계안===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 동영상을 ‘Free Video to JPG Converter’를 이용하여 동영상에서 사진을 원하는 프레임 수를 지정하여 JPG파일을 추출한다. &lt;br /&gt;
&lt;br /&gt;
[[파일:17.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 추출한 JPG파일에 SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)는 대표적인 특징점 추출 알고리즘으로 2차원 영상의 일정 지역에 해당하는 화소를 이용하여 특징점을 추출한다. OpenCV에서 제공하는 함수를 사용한다.&lt;br /&gt;
&lt;br /&gt;
[[파일:18.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow 알고리즘을 이용하여 이전 프레임이랑 다음 프레임, 두 개의 연속된 얼굴 프레임 사이에 동작 패턴을 추적한다. Optical Flow 알고리즘 중 Lucas-Kanade(LK)는 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적어 비교적 속도가 빠르기 때문에 Lucas-Kanade를 사용한다.&lt;br /&gt;
&lt;br /&gt;
[[파일:19.jpg]]&lt;br /&gt;
[[파일:20.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 추적한 특징점의 벡터를 각 프레임 아바타에 적용한다.&lt;br /&gt;
&lt;br /&gt;
===이론적 계산 및 시뮬레이션===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상 입력 -&amp;gt; 표정을 따라하는 캐릭터 영상 출력&lt;br /&gt;
&lt;br /&gt;
[[파일:21.jpg]]&lt;br /&gt;
&lt;br /&gt;
===소프트웨어 설계===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;전체 설계도&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. ‘Free Video to JPG Converter’를 이용하여 동영상을 여러 프레임의 사진으로 전환한다. &lt;br /&gt;
2. 각각의 사진들로부터 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
3. 특징점들의 변화를 이용하여 Optical Flow를 이용하여 특징점의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
4. 1번의 결과 추출된 여러 사진들 중 첫 번째 사진을 TwinGAN을 이용하여 캐릭터로 변환 후 변환된 캐릭터의 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
5. 3번에서 추적한 Optical Flow를 4번에 적용하여 gif파일로 변환한다.&lt;br /&gt;
&lt;br /&gt;
==결과 및 평가==&lt;br /&gt;
===완료 작품의 소개===&lt;br /&gt;
====프로토타입 사진 혹은 작동 장면====&lt;br /&gt;
내용&lt;br /&gt;
====포스터====&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===관련사업비 내역서===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===완료작품의 평가===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===향후계획===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===특허 출원 내용===&lt;br /&gt;
내용&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=1010</id>
		<title>DnA(Digital and Actor)조</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=1010"/>
				<updated>2018-12-25T17:55:18Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: /* 개념설계안 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==프로젝트 개요==&lt;br /&gt;
=== 기술개발 과제 ===&lt;br /&gt;
''' 국문 : ''' 디지털 액터 : 얼굴 표정과 표현&lt;br /&gt;
&lt;br /&gt;
''' 영문 : ''' Digital Actor : facial expression, emotion&lt;br /&gt;
&lt;br /&gt;
===과제 팀명===&lt;br /&gt;
DnA (Digital and Actor)&lt;br /&gt;
&lt;br /&gt;
===지도교수===&lt;br /&gt;
홍의경 교수님&lt;br /&gt;
&lt;br /&gt;
===개발기간===&lt;br /&gt;
2018년 9월 ~ 2018년 12월 (총 4개월)&lt;br /&gt;
&lt;br /&gt;
===구성원 소개===&lt;br /&gt;
서울시립대학교 통계학과 20xxxxx0xx 전ㅇㅇ(팀장)&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
==서론==&lt;br /&gt;
===개발 과제의 개요===&lt;br /&gt;
====개발 과제 요약====&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상에서 프레임을 추출하여 각 얼굴 사진의 특징점을 인식하고 Optical Flow 알고리즘을 이용하여 특징점의 움직임을 추적한다. 추적한 특징점의 벡터를 아바타에 적용하여 동영상에서 사람의 표정 변화를 캐릭터가 따라하도록 만든다. 아바타 사진을 연결하여 gif파일로 만들어 마찬가지로 사람의 표정 변화를 캐릭터가 똑같이 따라할 수 있도록 한다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 배경 및 효과====&lt;br /&gt;
◇ 디지털 액터(Digital Actor)란 실제 배우와 동일한 수준의 외형과 동작을 구현할 수 있는 컴퓨터 그래픽(DG) 영상 캐릭터를 의미한다. 킹콩, 요다 등의 실존 인물이 아닌 캐릭터를 만들거나 현실에서 불가능한 장면을 연출하는 등 영상 특수효과, 3D 애니메이션, 게임, VR과 같은 곳에 사용된다. &lt;br /&gt;
&lt;br /&gt;
◇ 모션캡쳐 장비는 현실적인 움직임으로 퀄리티 높은 영상을 보여줄 수 있지만 상당히 고가의 물건이다. 사람의 얼굴 표정을 학습하여 자연스럽게 아바타로 옮길 수 있다면 높은 CG처리 비용을 줄일 수 있을 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
◇ 현재 국내 VR과 AR의 국내 시장의 규모가 점점 넓어지고 있으며 관련 업계에 따르면 그 사장 규모는 2020년 지금의 4~5배 수준으로 성장할 전망이라고 한다. 더딘 기술 진행속도로 인해 개발 속도도 느리지만 기술이 발전할수록 그 성장 속도가 급격히 증가할 것으로 예상되기 때문에 그 속도를 맞추기 위해서는 미리 개발을 준비하는 등의 행동이 필요하다. 이에 관련 기술을 직접 구현해봄으로써 미래의 VR/AR 산업에 보탬이 될 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 목표 및 내용====&lt;br /&gt;
◇ SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)&lt;br /&gt;
&lt;br /&gt;
● 대표적인 특징점 추출 알고리즘&lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘(interest point extraction algorithm)은 2차원 영상의 일정 지역에 해당하는 화소를 이용하여, 영상의 특징이 될 수 있는 특징점을 추출하는 알고리즘이다. 이때 특징점은 코너(corner) 및 블랍(blob)을 의미한다. &lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘에는 SIFT(Scale Invariant Feature Transform), PCA 등 다른 방법도 있지만 인식률과 처리 속도면에서 더 우수한 SURF 알고리즘을 사용한다.&lt;br /&gt;
&lt;br /&gt;
● 블러이미지나 회전된 이미지는 잘 인식하는 장점이 있는 반면 뷰포인트나 조명이 달라지면 특징점을 잘 잡아내지 못하는 단점이 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 SURF에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow&lt;br /&gt;
&lt;br /&gt;
● 두 개의 연속된 비디오 프레임 사이에 이미지 객체의 동작 패턴을 의미한다.&lt;br /&gt;
&lt;br /&gt;
● 이미지 객체의 움직임 패턴은 객체 자체가 움직이거나 카메라의 움직임으로 인해 생성되는데 이전 프레임이랑 다음 프레임 중 변하는 부분의 움직임을 추적&lt;br /&gt;
&lt;br /&gt;
● 보통 움직임을 통한 구조 분석, 비디오 압축, 영상이 흔들렸거나 블러가 된 경우 깨끗한 영상으로 처리하는 기술인 Video Stabilization 분야에 사용된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lucas-Kanade&lt;br /&gt;
&lt;br /&gt;
● Optical Flow알고리즘에는 다양한 알고리즘이 있으나  Lucas-Kanade방법을 이용하기로 한다.&lt;br /&gt;
&lt;br /&gt;
● 한 프레임의 각 피셀 윈도우를 설정하고 다음 프레임에서 이 윈도우와 가장 잘 매칭되는 곳을 찾는 원리로 작동한다.&lt;br /&gt;
&lt;br /&gt;
● 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적다는 장점이 있다.&lt;br /&gt;
&lt;br /&gt;
● 좁은 지역의 윈도우를 사용하기 때문에 이 윈도우보다 큰 움직임이 발생하였을 경우 움직임을 계산하지 못하며 특징점을 사용하여 optical flow를 얻기 때문에 dense optical flow에 비하여 정확도가 낮은 편이다.&lt;br /&gt;
&lt;br /&gt;
● 윈도우를 벗어나는 큰 움직임을 계산하지 못하는 단점을 개선하기 위해 Pyramids Lucas-Kanade 방법을 사용할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 Lucas-Kanade에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
===관련 기술의 현황===&lt;br /&gt;
====관련 기술의 현황 및 분석(State of art)====&lt;br /&gt;
*전 세계적인 기술현황&lt;br /&gt;
&lt;br /&gt;
◇ 페이스웨어 Live&lt;br /&gt;
&lt;br /&gt;
마커리스 3D 페이셜 모션 캡처 솔루션 제공을 선도하는 페이스웨어 테크놀러지(Faceware Technologies, 이하 페이스웨어)가  23일 향상된 실시간 얼굴 모션캡처와 애니메이션 제품인 페이스웨어 라이브(Faceware Live) 2.5 버전을 발표했다. 페이스웨어 라이브는 실시간으로 사용자 얼굴을 자동 추적하고, 얼굴의 움직임을 페이셜 모델에 즉각 적용시킨 페이셜 애니메이션을 생성한다. 페이스웨어 라이브는 움직임 트래킹을 위해 단 하나의 카메라를 사용하며,  컴퓨터에 연결된 비디오나 웹캠, 페이스웨어 GoPro, Pro HD 헤드캠 시스템, 그밖에 다른 비디오 캡처 장비들을 카메라로 사용할 수 있다. 페이스웨어 라이브 2.5는 디지털캐릭터와 결합된 라이브 공연, 즉 디지털 캐릭터들이 관객이나 사람들과 라이브로 인터랙션이 가능한 실시간 인형극이나  테마파크, 쇼핑몰 내부의 키오스크 스크린 상에서 실시간 상호작용 디지털 캐릭터로 활용될 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:2.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 삼성 갤럭시S9의 AR 이모지&lt;br /&gt;
&lt;br /&gt;
카메라로 촬영한 인물 사진을 기반으로 아바타를 만들 수 있는 기능이다. AR 이모지를 만들면 18개 다양한 감정을 표현할 수 있는 gif 이모티콘이 추가되어 메세지, SNS 등에서 이용 가능하다. 눈, 코, 입, 뺨, 이마 등 100개 이상의 얼굴 특징점을 인식 및 분석해 피사체의 표정을 실시간으로 따라해서 동영상으로 촬영할 수 있다. 이외에도 안경을 착용하거나 피부 색깔, 헤어스타일, 헤어컬러, 의상 등을 변경할 수 있다. 하지만 세밀하지 못한 인물 묘사 방식에 논란이 있었다.&lt;br /&gt;
&lt;br /&gt;
[[파일:3.jpg]]&lt;br /&gt;
[[파일:4.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 애플 iOS11, iOS12의 애니모티콘, 미모지&lt;br /&gt;
&lt;br /&gt;
애플 사의 애니모티콘(애니모지)은 전면 카메라로 촬영한 인물사진을 기반으로 사용자의 표정을 읽은 후, 기존에 있던 이모지에 투사하여 이모티콘을 만들 수 있는 기능이다. 사용자의 얼굴에 3만개 이상의 도트를 투사해 얼굴 맵을 만든 후, 3D 스캔 활용을 통해 50개 이상의 각기 다른 근육의 움직임을 포착하고 분석한다. 분석한 세밀한 표정을 외계인, 고양이, 닭, 개, 여우, 원숭이, 판다. 돼지, 곰돌이, 토끼, 로봇, 유니콘 등 내장된 12개의 애니모티콘에 투영시킨다. 하지만 최근 iOS12의 기능으로 애니모티콘의 개인화 버전인 미모지(memoji)가 발표되었는데, 한정된 캐릭터의 폭을 늘리고 얼굴, 머리, 장신구를 자신의 취향에 맞게 선택할 수 있다. 생성한 애니모티콘을 편집할 수 있으며 아이폰의 메시지 앱에서 이용할 수 있다. 또한 목소리를 녹음하여 오디오가 포함된 비디오 형태로 수신할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:5.jpg]]&lt;br /&gt;
[[파일:6.jpg]]&lt;br /&gt;
&lt;br /&gt;
*특허조사 및 특허 전략 분석&lt;br /&gt;
&lt;br /&gt;
◇ SIFT(Scale Invariant Feature Transform) 알고리즘&lt;br /&gt;
&lt;br /&gt;
● Lowe David G 교수가 개발하였으며 97년도부터 연구하여 프로토 타입의 SIFT알고리즘을 99년도에 발표하였고, 04년도에는 이 알고리즘을 더욱 개량하여 완성된 SIFT알고리즘을 만들게 되었다.&lt;br /&gt;
&lt;br /&gt;
● 영상의 크기와 회전에 불변하는 특징점을 추출하는 알고리즘이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:7.jpg]]&lt;br /&gt;
&lt;br /&gt;
1) Scale-space extrema detection &lt;br /&gt;
&lt;br /&gt;
● Gaussian Pyramid를 생성 한 후 DoG(Difference of Gaussian)을 구해서 극점인 부분을 특징점 후보자로 잡아 준다.&lt;br /&gt;
&lt;br /&gt;
● DoG의 상위와 하위 층까지 모두 합쳐 주변 26개 보다 크거나 모두 작을 때만 특징점 후보자로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이 방법은 특징점을 Scale별로 구하게 되어 Target 물체가 작아져도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:8.jpg]]&lt;br /&gt;
&lt;br /&gt;
2) KeyPoint Localization &lt;br /&gt;
&lt;br /&gt;
● 테일러 급수를 사용하여 더 정확한 극점을 찾은 뒤 테일러 급수로 interpolation하여 그 점의 값을 구하여 특징점 후보자 중에서 정확하지 않는 특징점을 제거한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Orientation Assignment &lt;br /&gt;
&lt;br /&gt;
● 추출된 특징점마다 주 방향을 할당해 주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● 특징점 주변으로 16x16영역을 할당한 후 그 영역 이미지를 Gaussian Blurring을 적용하면 특징점 주변의 영역에 대한 Gradient의 방향과 크기를 결정하게 된다.&lt;br /&gt;
&lt;br /&gt;
● Gradient의 방향과 크기를 구하면 Orientation Histogram을 형성한 후, 가장 값이 큰 것을 해당 Orientation으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
● 회전에 대한 정보가 들어 있기 때문에 물체가 회전해도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
4) KeyPoint Descriptor&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 마다 서술자를 생성해주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● Gaussian Weight Function을 활용하여 서술자를 생성하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 주변으로 16x16의 pixel 영역을 할당하여 아래의 &amp;lt;그림 14&amp;gt;과 같이 Image Gradients를 구한다. 그 후, 서술자 Window 크기의 반값을 Gaussian Weighted function에 곱해주게 된다.&lt;br /&gt;
&lt;br /&gt;
[[파일:9.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 다음으로 히스토그램을 그려주게 되는데 그 전에 먼저 앞에서 구한 Orientation을 빼줘서 Descriptor가 회전에 불변하도록 만들어 준다.&lt;br /&gt;
&lt;br /&gt;
● 객체인식을 할 때는 DB의 각 특징점의 Descriptor를 가지고, 인식할 물체 영상의 Descriptor와 비교하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이때 비슷하면 데이터가 비슷하게 나올 텐데 여기서 사용하는 방법은 유클리드 거리이다.&lt;br /&gt;
● 유클리드 거리의 방식은 연산식이 간단하여 많은 특징점 데이터를 비교하는데 속도면에서 성능이 좋아 많이 사용되는 방식이다. &lt;br /&gt;
&lt;br /&gt;
● 매칭 단계까지 수행되면 DB의 특징점들과 Target의 특징점들 중 매칭된 특징점들이 추출되어 원하는 물체가 어디에 위치하는지 알 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:10.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇SURF&lt;br /&gt;
&lt;br /&gt;
● 알고리즘 순서도 : 특징점 추출 → 주 방향 결정 → descriptor 생성&lt;br /&gt;
&lt;br /&gt;
1) 특징점 추출&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● 수식을 이용하여 적분 영상을 생성한다.&lt;br /&gt;
&lt;br /&gt;
● 적분 영상이란 픽셀 밝기 값을 누적한 형태를 뜻함&lt;br /&gt;
&lt;br /&gt;
● D영역의 밝기 누적 값을 알고 싶다면 ii(4)+ii(1)-ii(2)-ii(3)식을 이용하여 쉽게 D영역의 밝기 누적값을 구할 수 있다.&lt;br /&gt;
&lt;br /&gt;
● 적분영상을 만든 후 헤이시안(Hessian)검출기를 사용하여 특징점을 검출한다. (헤이시안 검출기는 헤이시안 행렬 기반인 특징점 검출 알고리즘으로써 정확성이 높고 행렬식이 최대값인 위치에서 blob을 검출 할 때 사용하게 된다)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● SURF에서는 Hessian_Laplace Detector를 사용하는 대신에 위의 공식대로 FAST Hessian Detector 을 사용하여 수행성능을 향상시킨다.&lt;br /&gt;
&lt;br /&gt;
2) Dxx, Dyy, Dxy박스 필터를 구하는 방법&lt;br /&gt;
&lt;br /&gt;
● Haar Wavelet을 이용 - Dxx와 Dyy를 구할 때는 검은 영역부분을 -2, 흰영역부분은 1을 곱하여 구하고 Dxy는 검은 영역을 -1, 흰영역을 1을 곱하여 구한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) 9x9 박스필터를 이용한 Dxx, Dyy, Dxy를 구하는 방식&lt;br /&gt;
&lt;br /&gt;
● Hessian Determinant 데이터를 이용하여 각 필터 사이즈 별로 특징점을 검출하게 된다. 필터 사이즈란 위의 Dxx, Dyy, Dxy를 구하는 박스필터 영역 사이즈를 의미한다. SURF에서는 박스 필터 영역을 Scale해서 특징점을 추출해 aliasing 이 없는 장점을 가지고 있다.  Hessian Determinant 데이터를 각 픽셀마다 구했으면 각각의 Threshold와 비교하게 된다. &lt;br /&gt;
&lt;br /&gt;
● Threshold보다 값이 크면, 인접한 8개의 픽셀의 Hessian Determinant를 비교하여 큰 값인지 비교하게 된다. 만약 큰 값이면 상하 박스 필터 사이즈의 3x3크기의 각 9개의 Hessina Determinant를 비교하여 가장 클 경우 특징점으로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) 주 방향 결정&lt;br /&gt;
&lt;br /&gt;
● 특징점 중심으로 특징점이 검출된 스케일 정보 s를 이용하여 반지름이 6s의 원 안의 픽셀들에 대하여 x방향과 y방향으로 Haar Wavelet Response인 dx와 dy를 구하게 된다. 윈도우 5도 간격으로 회전하면서 60도 윈도우 내의 벡터의 크기를 더해 가장 큰 크기를 가지는 방향을 특징점의 주 방향으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
5) descriptor 생성&lt;br /&gt;
&lt;br /&gt;
● descriptor는 특징점 주변의 일정한 영역 내에 이웃하고 있는 픽셀의 밝기 변화를 나타낸다.&lt;br /&gt;
&lt;br /&gt;
[[파일:11.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 주 방향과 scale정보 s를 이용하여 특징점 중심으로 20s크기의 윈도우를 위의 그림처럼 구성하고, 구성된 윈도우를 4X4 영역으로 분할하여 16개의 영역으로 나눈다. 분할된 각 영역을 다시 한번 5X5크기로 분할하여 각 픽셀을 haar wavelet filter를 사용하여 각 를 구하여 16개의 영역에 각 위의 4개의 Descriptor를 생성하여 총 64개의 Descriptor를 생성할 수 있게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*기술 로드맵&lt;br /&gt;
&lt;br /&gt;
[[파일:12.jpg]]&lt;br /&gt;
&lt;br /&gt;
====시장상황에 대한 분석====&lt;br /&gt;
&lt;br /&gt;
*경쟁제품 조사 비교&lt;br /&gt;
&lt;br /&gt;
◇ Avatar SDK&lt;br /&gt;
&lt;br /&gt;
하나의 2D 정면 얼굴 사진을 입력하면 3D 아바타 생성 SDK를 사용하여 개인의 아바타를 만들어준다. 딥러닝과 컴퓨터 그래픽 기술을 이용하여 개발하였고, 현재 cloud나 PC, Mac, Android, iOS 환경 모두 이용 가능하다. 아바타로의 변환에는 사진마다 차이가 있지만 약 10초가 소요된다. 만들어진 아바타는 Blendshape, 헤어스타일, 헤어컬러를 변경할 수 있고, 윙크, 웃음, 하품 등 몇몇 특정 표정 변화가 가능하다. 그림은 Avatar SDK를 이용하여 왼쪽 상단의 사진을 입력으로 아바타를 생성한 사진이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:13.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ Mirror AI&lt;br /&gt;
&lt;br /&gt;
스마트폰으로 한장의 셀프 사진을 찍으면, 이를 바탕으로 자신의 모습을 한 몇 백개의 이모지를 생성하여 메신저에서 사용할 수 있는 키보드 어플리케이션이다. 현재 다양한 언어를 지원하고, iOS 10.0 버전 이상만 사용할 수 있다. 학습한 모델을 통해 사람의 얼굴 특징을 식별하고, 이에 맞게 수초 내에 사람의 얼굴 특징을 추려내어 이모티콘을 만든다. 생성된 이모티콘은 이 키보드 어플리케이션을 사용하여 어떤 메신저에서든 사용할 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:14.jpg]]&lt;br /&gt;
&lt;br /&gt;
*마케팅 전략 제시&lt;br /&gt;
&lt;br /&gt;
[[파일:15.jpg]]&lt;br /&gt;
&lt;br /&gt;
===개발과제의 기대효과===&lt;br /&gt;
====기술적 기대효과====&lt;br /&gt;
&lt;br /&gt;
◇ 영화 촬영시 기존에는 모션 센서들을 부착하여 배우들의 표정을 읽어와 캐릭터의 표정과 매핑시켜 부착하는데까지 시간이 오래 걸렸고 많은 기술들이 필요되었는데 만약 이 프로젝트가 성공하게 될 경우, 배우가 표정을 짓는 것만으로 쉽게 캐릭터에 매핑될 수 있도록 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자기가 원하는 캐릭터나 다른 인물 모습의 자신과 같은 표정을 짓는 영상을 만들 수 있을 것이다.&lt;br /&gt;
&lt;br /&gt;
====경제적, 사회적 기대 및 파급효과====&lt;br /&gt;
&lt;br /&gt;
◇ 기존에 영화 촬영시 모션 캡쳐에 필요했던 장비들이 없어도 원하는 캐릭터의 표정을 구현할 수 있어 제작비 절감의 효과가 기대된다. &lt;br /&gt;
&lt;br /&gt;
◇ 현재 실존하지 않는 배우의 모습에 표정을 매핑하여 실제로 연기하는 것처럼 보이게 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자신의 표정을 다른 캐릭터로 매핑함으로써 원래 영상보다 감정 표현을 훨씬 극대화할 수 있다.&lt;br /&gt;
&lt;br /&gt;
===기술개발 일정 및 추진체계===&lt;br /&gt;
====개발 일정====&lt;br /&gt;
&lt;br /&gt;
[[파일:16.jpg]]&lt;br /&gt;
&lt;br /&gt;
====구성원 및 추진체계====&lt;br /&gt;
&lt;br /&gt;
◇ 전ㅇㅇ(팀장) &lt;br /&gt;
&lt;br /&gt;
● SURF를 이용하여 얼굴 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원)&lt;br /&gt;
&lt;br /&gt;
● TwinGAN을 이용하여 모델링 및 검증을 진행한다.&lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원) &lt;br /&gt;
&lt;br /&gt;
● Facial Expression Research Group Database인 FREG-DG를 수집한다.&lt;br /&gt;
&lt;br /&gt;
◇ 전원&lt;br /&gt;
&lt;br /&gt;
● Digital Actor의 세부 영역인 표정을 인식하고 그 표정을 제어할 수 있는 두 가지 영역을 포함할 수 있는 주제를 선정한다.&lt;br /&gt;
&lt;br /&gt;
● 필요한 알고리즘, 데이터 셋 등을 조사 후 개발에 대비한다.&lt;br /&gt;
&lt;br /&gt;
● Optical Flow를 이용하여 벡터 움직임을 추적한 뒤 TwinGAN 결과로 나온 캐릭터에 대입한다.&lt;br /&gt;
&lt;br /&gt;
==설계==&lt;br /&gt;
===설계사양===&lt;br /&gt;
====개발 환경====&lt;br /&gt;
	- Ubuntu 18.04 &lt;br /&gt;
&lt;br /&gt;
		- python2.7에서 caffe, dlib, opencv 등 이용	&lt;br /&gt;
&lt;br /&gt;
	- Matlab2018b&lt;br /&gt;
&lt;br /&gt;
	- 프로세스 : CPU 4개&lt;br /&gt;
&lt;br /&gt;
===개념설계안===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 동영상을 ‘Free Video to JPG Converter’를 이용하여 동영상에서 사진을 원하는 프레임 수를 지정하여 JPG파일을 추출한다. &lt;br /&gt;
&lt;br /&gt;
[[파일:17.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 추출한 JPG파일에 SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)는 대표적인 특징점 추출 알고리즘으로 2차원 영상의 일정 지역에 해당하는 화소를 이용하여 특징점을 추출한다. OpenCV에서 제공하는 함수를 사용한다.&lt;br /&gt;
&lt;br /&gt;
[[파일:18.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow 알고리즘을 이용하여 이전 프레임이랑 다음 프레임, 두 개의 연속된 얼굴 프레임 사이에 동작 패턴을 추적한다. Optical Flow 알고리즘 중 Lucas-Kanade(LK)는 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적어 비교적 속도가 빠르기 때문에 Lucas-Kanade를 사용한다.&lt;br /&gt;
&lt;br /&gt;
[[파일:19.jpg]]&lt;br /&gt;
[[파일:20.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 추적한 특징점의 벡터를 각 프레임 아바타에 적용한다.&lt;br /&gt;
&lt;br /&gt;
===이론적 계산 및 시뮬레이션===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상 입력 -&amp;gt; 표정을 따라하는 캐릭터 영상 출력&lt;br /&gt;
&lt;br /&gt;
===소프트웨어 설계===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;전체 설계도&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. ‘Free Video to JPG Converter’를 이용하여 동영상을 여러 프레임의 사진으로 전환한다. &lt;br /&gt;
2. 각각의 사진들로부터 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
3. 특징점들의 변화를 이용하여 Optical Flow를 이용하여 특징점의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
4. 1번의 결과 추출된 여러 사진들 중 첫 번째 사진을 TwinGAN을 이용하여 캐릭터로 변환 후 변환된 캐릭터의 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
5. 3번에서 추적한 Optical Flow를 4번에 적용하여 gif파일로 변환한다.&lt;br /&gt;
&lt;br /&gt;
==결과 및 평가==&lt;br /&gt;
===완료 작품의 소개===&lt;br /&gt;
====프로토타입 사진 혹은 작동 장면====&lt;br /&gt;
내용&lt;br /&gt;
====포스터====&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===관련사업비 내역서===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===완료작품의 평가===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===향후계획===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===특허 출원 내용===&lt;br /&gt;
내용&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=1009</id>
		<title>DnA(Digital and Actor)조</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=1009"/>
				<updated>2018-12-25T17:53:46Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: /* 개발 환경 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==프로젝트 개요==&lt;br /&gt;
=== 기술개발 과제 ===&lt;br /&gt;
''' 국문 : ''' 디지털 액터 : 얼굴 표정과 표현&lt;br /&gt;
&lt;br /&gt;
''' 영문 : ''' Digital Actor : facial expression, emotion&lt;br /&gt;
&lt;br /&gt;
===과제 팀명===&lt;br /&gt;
DnA (Digital and Actor)&lt;br /&gt;
&lt;br /&gt;
===지도교수===&lt;br /&gt;
홍의경 교수님&lt;br /&gt;
&lt;br /&gt;
===개발기간===&lt;br /&gt;
2018년 9월 ~ 2018년 12월 (총 4개월)&lt;br /&gt;
&lt;br /&gt;
===구성원 소개===&lt;br /&gt;
서울시립대학교 통계학과 20xxxxx0xx 전ㅇㅇ(팀장)&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
==서론==&lt;br /&gt;
===개발 과제의 개요===&lt;br /&gt;
====개발 과제 요약====&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상에서 프레임을 추출하여 각 얼굴 사진의 특징점을 인식하고 Optical Flow 알고리즘을 이용하여 특징점의 움직임을 추적한다. 추적한 특징점의 벡터를 아바타에 적용하여 동영상에서 사람의 표정 변화를 캐릭터가 따라하도록 만든다. 아바타 사진을 연결하여 gif파일로 만들어 마찬가지로 사람의 표정 변화를 캐릭터가 똑같이 따라할 수 있도록 한다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 배경 및 효과====&lt;br /&gt;
◇ 디지털 액터(Digital Actor)란 실제 배우와 동일한 수준의 외형과 동작을 구현할 수 있는 컴퓨터 그래픽(DG) 영상 캐릭터를 의미한다. 킹콩, 요다 등의 실존 인물이 아닌 캐릭터를 만들거나 현실에서 불가능한 장면을 연출하는 등 영상 특수효과, 3D 애니메이션, 게임, VR과 같은 곳에 사용된다. &lt;br /&gt;
&lt;br /&gt;
◇ 모션캡쳐 장비는 현실적인 움직임으로 퀄리티 높은 영상을 보여줄 수 있지만 상당히 고가의 물건이다. 사람의 얼굴 표정을 학습하여 자연스럽게 아바타로 옮길 수 있다면 높은 CG처리 비용을 줄일 수 있을 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
◇ 현재 국내 VR과 AR의 국내 시장의 규모가 점점 넓어지고 있으며 관련 업계에 따르면 그 사장 규모는 2020년 지금의 4~5배 수준으로 성장할 전망이라고 한다. 더딘 기술 진행속도로 인해 개발 속도도 느리지만 기술이 발전할수록 그 성장 속도가 급격히 증가할 것으로 예상되기 때문에 그 속도를 맞추기 위해서는 미리 개발을 준비하는 등의 행동이 필요하다. 이에 관련 기술을 직접 구현해봄으로써 미래의 VR/AR 산업에 보탬이 될 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 목표 및 내용====&lt;br /&gt;
◇ SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)&lt;br /&gt;
&lt;br /&gt;
● 대표적인 특징점 추출 알고리즘&lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘(interest point extraction algorithm)은 2차원 영상의 일정 지역에 해당하는 화소를 이용하여, 영상의 특징이 될 수 있는 특징점을 추출하는 알고리즘이다. 이때 특징점은 코너(corner) 및 블랍(blob)을 의미한다. &lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘에는 SIFT(Scale Invariant Feature Transform), PCA 등 다른 방법도 있지만 인식률과 처리 속도면에서 더 우수한 SURF 알고리즘을 사용한다.&lt;br /&gt;
&lt;br /&gt;
● 블러이미지나 회전된 이미지는 잘 인식하는 장점이 있는 반면 뷰포인트나 조명이 달라지면 특징점을 잘 잡아내지 못하는 단점이 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 SURF에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow&lt;br /&gt;
&lt;br /&gt;
● 두 개의 연속된 비디오 프레임 사이에 이미지 객체의 동작 패턴을 의미한다.&lt;br /&gt;
&lt;br /&gt;
● 이미지 객체의 움직임 패턴은 객체 자체가 움직이거나 카메라의 움직임으로 인해 생성되는데 이전 프레임이랑 다음 프레임 중 변하는 부분의 움직임을 추적&lt;br /&gt;
&lt;br /&gt;
● 보통 움직임을 통한 구조 분석, 비디오 압축, 영상이 흔들렸거나 블러가 된 경우 깨끗한 영상으로 처리하는 기술인 Video Stabilization 분야에 사용된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lucas-Kanade&lt;br /&gt;
&lt;br /&gt;
● Optical Flow알고리즘에는 다양한 알고리즘이 있으나  Lucas-Kanade방법을 이용하기로 한다.&lt;br /&gt;
&lt;br /&gt;
● 한 프레임의 각 피셀 윈도우를 설정하고 다음 프레임에서 이 윈도우와 가장 잘 매칭되는 곳을 찾는 원리로 작동한다.&lt;br /&gt;
&lt;br /&gt;
● 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적다는 장점이 있다.&lt;br /&gt;
&lt;br /&gt;
● 좁은 지역의 윈도우를 사용하기 때문에 이 윈도우보다 큰 움직임이 발생하였을 경우 움직임을 계산하지 못하며 특징점을 사용하여 optical flow를 얻기 때문에 dense optical flow에 비하여 정확도가 낮은 편이다.&lt;br /&gt;
&lt;br /&gt;
● 윈도우를 벗어나는 큰 움직임을 계산하지 못하는 단점을 개선하기 위해 Pyramids Lucas-Kanade 방법을 사용할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 Lucas-Kanade에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
===관련 기술의 현황===&lt;br /&gt;
====관련 기술의 현황 및 분석(State of art)====&lt;br /&gt;
*전 세계적인 기술현황&lt;br /&gt;
&lt;br /&gt;
◇ 페이스웨어 Live&lt;br /&gt;
&lt;br /&gt;
마커리스 3D 페이셜 모션 캡처 솔루션 제공을 선도하는 페이스웨어 테크놀러지(Faceware Technologies, 이하 페이스웨어)가  23일 향상된 실시간 얼굴 모션캡처와 애니메이션 제품인 페이스웨어 라이브(Faceware Live) 2.5 버전을 발표했다. 페이스웨어 라이브는 실시간으로 사용자 얼굴을 자동 추적하고, 얼굴의 움직임을 페이셜 모델에 즉각 적용시킨 페이셜 애니메이션을 생성한다. 페이스웨어 라이브는 움직임 트래킹을 위해 단 하나의 카메라를 사용하며,  컴퓨터에 연결된 비디오나 웹캠, 페이스웨어 GoPro, Pro HD 헤드캠 시스템, 그밖에 다른 비디오 캡처 장비들을 카메라로 사용할 수 있다. 페이스웨어 라이브 2.5는 디지털캐릭터와 결합된 라이브 공연, 즉 디지털 캐릭터들이 관객이나 사람들과 라이브로 인터랙션이 가능한 실시간 인형극이나  테마파크, 쇼핑몰 내부의 키오스크 스크린 상에서 실시간 상호작용 디지털 캐릭터로 활용될 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:2.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 삼성 갤럭시S9의 AR 이모지&lt;br /&gt;
&lt;br /&gt;
카메라로 촬영한 인물 사진을 기반으로 아바타를 만들 수 있는 기능이다. AR 이모지를 만들면 18개 다양한 감정을 표현할 수 있는 gif 이모티콘이 추가되어 메세지, SNS 등에서 이용 가능하다. 눈, 코, 입, 뺨, 이마 등 100개 이상의 얼굴 특징점을 인식 및 분석해 피사체의 표정을 실시간으로 따라해서 동영상으로 촬영할 수 있다. 이외에도 안경을 착용하거나 피부 색깔, 헤어스타일, 헤어컬러, 의상 등을 변경할 수 있다. 하지만 세밀하지 못한 인물 묘사 방식에 논란이 있었다.&lt;br /&gt;
&lt;br /&gt;
[[파일:3.jpg]]&lt;br /&gt;
[[파일:4.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 애플 iOS11, iOS12의 애니모티콘, 미모지&lt;br /&gt;
&lt;br /&gt;
애플 사의 애니모티콘(애니모지)은 전면 카메라로 촬영한 인물사진을 기반으로 사용자의 표정을 읽은 후, 기존에 있던 이모지에 투사하여 이모티콘을 만들 수 있는 기능이다. 사용자의 얼굴에 3만개 이상의 도트를 투사해 얼굴 맵을 만든 후, 3D 스캔 활용을 통해 50개 이상의 각기 다른 근육의 움직임을 포착하고 분석한다. 분석한 세밀한 표정을 외계인, 고양이, 닭, 개, 여우, 원숭이, 판다. 돼지, 곰돌이, 토끼, 로봇, 유니콘 등 내장된 12개의 애니모티콘에 투영시킨다. 하지만 최근 iOS12의 기능으로 애니모티콘의 개인화 버전인 미모지(memoji)가 발표되었는데, 한정된 캐릭터의 폭을 늘리고 얼굴, 머리, 장신구를 자신의 취향에 맞게 선택할 수 있다. 생성한 애니모티콘을 편집할 수 있으며 아이폰의 메시지 앱에서 이용할 수 있다. 또한 목소리를 녹음하여 오디오가 포함된 비디오 형태로 수신할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:5.jpg]]&lt;br /&gt;
[[파일:6.jpg]]&lt;br /&gt;
&lt;br /&gt;
*특허조사 및 특허 전략 분석&lt;br /&gt;
&lt;br /&gt;
◇ SIFT(Scale Invariant Feature Transform) 알고리즘&lt;br /&gt;
&lt;br /&gt;
● Lowe David G 교수가 개발하였으며 97년도부터 연구하여 프로토 타입의 SIFT알고리즘을 99년도에 발표하였고, 04년도에는 이 알고리즘을 더욱 개량하여 완성된 SIFT알고리즘을 만들게 되었다.&lt;br /&gt;
&lt;br /&gt;
● 영상의 크기와 회전에 불변하는 특징점을 추출하는 알고리즘이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:7.jpg]]&lt;br /&gt;
&lt;br /&gt;
1) Scale-space extrema detection &lt;br /&gt;
&lt;br /&gt;
● Gaussian Pyramid를 생성 한 후 DoG(Difference of Gaussian)을 구해서 극점인 부분을 특징점 후보자로 잡아 준다.&lt;br /&gt;
&lt;br /&gt;
● DoG의 상위와 하위 층까지 모두 합쳐 주변 26개 보다 크거나 모두 작을 때만 특징점 후보자로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이 방법은 특징점을 Scale별로 구하게 되어 Target 물체가 작아져도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:8.jpg]]&lt;br /&gt;
&lt;br /&gt;
2) KeyPoint Localization &lt;br /&gt;
&lt;br /&gt;
● 테일러 급수를 사용하여 더 정확한 극점을 찾은 뒤 테일러 급수로 interpolation하여 그 점의 값을 구하여 특징점 후보자 중에서 정확하지 않는 특징점을 제거한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Orientation Assignment &lt;br /&gt;
&lt;br /&gt;
● 추출된 특징점마다 주 방향을 할당해 주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● 특징점 주변으로 16x16영역을 할당한 후 그 영역 이미지를 Gaussian Blurring을 적용하면 특징점 주변의 영역에 대한 Gradient의 방향과 크기를 결정하게 된다.&lt;br /&gt;
&lt;br /&gt;
● Gradient의 방향과 크기를 구하면 Orientation Histogram을 형성한 후, 가장 값이 큰 것을 해당 Orientation으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
● 회전에 대한 정보가 들어 있기 때문에 물체가 회전해도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
4) KeyPoint Descriptor&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 마다 서술자를 생성해주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● Gaussian Weight Function을 활용하여 서술자를 생성하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 주변으로 16x16의 pixel 영역을 할당하여 아래의 &amp;lt;그림 14&amp;gt;과 같이 Image Gradients를 구한다. 그 후, 서술자 Window 크기의 반값을 Gaussian Weighted function에 곱해주게 된다.&lt;br /&gt;
&lt;br /&gt;
[[파일:9.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 다음으로 히스토그램을 그려주게 되는데 그 전에 먼저 앞에서 구한 Orientation을 빼줘서 Descriptor가 회전에 불변하도록 만들어 준다.&lt;br /&gt;
&lt;br /&gt;
● 객체인식을 할 때는 DB의 각 특징점의 Descriptor를 가지고, 인식할 물체 영상의 Descriptor와 비교하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이때 비슷하면 데이터가 비슷하게 나올 텐데 여기서 사용하는 방법은 유클리드 거리이다.&lt;br /&gt;
● 유클리드 거리의 방식은 연산식이 간단하여 많은 특징점 데이터를 비교하는데 속도면에서 성능이 좋아 많이 사용되는 방식이다. &lt;br /&gt;
&lt;br /&gt;
● 매칭 단계까지 수행되면 DB의 특징점들과 Target의 특징점들 중 매칭된 특징점들이 추출되어 원하는 물체가 어디에 위치하는지 알 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:10.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇SURF&lt;br /&gt;
&lt;br /&gt;
● 알고리즘 순서도 : 특징점 추출 → 주 방향 결정 → descriptor 생성&lt;br /&gt;
&lt;br /&gt;
1) 특징점 추출&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● 수식을 이용하여 적분 영상을 생성한다.&lt;br /&gt;
&lt;br /&gt;
● 적분 영상이란 픽셀 밝기 값을 누적한 형태를 뜻함&lt;br /&gt;
&lt;br /&gt;
● D영역의 밝기 누적 값을 알고 싶다면 ii(4)+ii(1)-ii(2)-ii(3)식을 이용하여 쉽게 D영역의 밝기 누적값을 구할 수 있다.&lt;br /&gt;
&lt;br /&gt;
● 적분영상을 만든 후 헤이시안(Hessian)검출기를 사용하여 특징점을 검출한다. (헤이시안 검출기는 헤이시안 행렬 기반인 특징점 검출 알고리즘으로써 정확성이 높고 행렬식이 최대값인 위치에서 blob을 검출 할 때 사용하게 된다)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● SURF에서는 Hessian_Laplace Detector를 사용하는 대신에 위의 공식대로 FAST Hessian Detector 을 사용하여 수행성능을 향상시킨다.&lt;br /&gt;
&lt;br /&gt;
2) Dxx, Dyy, Dxy박스 필터를 구하는 방법&lt;br /&gt;
&lt;br /&gt;
● Haar Wavelet을 이용 - Dxx와 Dyy를 구할 때는 검은 영역부분을 -2, 흰영역부분은 1을 곱하여 구하고 Dxy는 검은 영역을 -1, 흰영역을 1을 곱하여 구한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) 9x9 박스필터를 이용한 Dxx, Dyy, Dxy를 구하는 방식&lt;br /&gt;
&lt;br /&gt;
● Hessian Determinant 데이터를 이용하여 각 필터 사이즈 별로 특징점을 검출하게 된다. 필터 사이즈란 위의 Dxx, Dyy, Dxy를 구하는 박스필터 영역 사이즈를 의미한다. SURF에서는 박스 필터 영역을 Scale해서 특징점을 추출해 aliasing 이 없는 장점을 가지고 있다.  Hessian Determinant 데이터를 각 픽셀마다 구했으면 각각의 Threshold와 비교하게 된다. &lt;br /&gt;
&lt;br /&gt;
● Threshold보다 값이 크면, 인접한 8개의 픽셀의 Hessian Determinant를 비교하여 큰 값인지 비교하게 된다. 만약 큰 값이면 상하 박스 필터 사이즈의 3x3크기의 각 9개의 Hessina Determinant를 비교하여 가장 클 경우 특징점으로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) 주 방향 결정&lt;br /&gt;
&lt;br /&gt;
● 특징점 중심으로 특징점이 검출된 스케일 정보 s를 이용하여 반지름이 6s의 원 안의 픽셀들에 대하여 x방향과 y방향으로 Haar Wavelet Response인 dx와 dy를 구하게 된다. 윈도우 5도 간격으로 회전하면서 60도 윈도우 내의 벡터의 크기를 더해 가장 큰 크기를 가지는 방향을 특징점의 주 방향으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
5) descriptor 생성&lt;br /&gt;
&lt;br /&gt;
● descriptor는 특징점 주변의 일정한 영역 내에 이웃하고 있는 픽셀의 밝기 변화를 나타낸다.&lt;br /&gt;
&lt;br /&gt;
[[파일:11.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 주 방향과 scale정보 s를 이용하여 특징점 중심으로 20s크기의 윈도우를 위의 그림처럼 구성하고, 구성된 윈도우를 4X4 영역으로 분할하여 16개의 영역으로 나눈다. 분할된 각 영역을 다시 한번 5X5크기로 분할하여 각 픽셀을 haar wavelet filter를 사용하여 각 를 구하여 16개의 영역에 각 위의 4개의 Descriptor를 생성하여 총 64개의 Descriptor를 생성할 수 있게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*기술 로드맵&lt;br /&gt;
&lt;br /&gt;
[[파일:12.jpg]]&lt;br /&gt;
&lt;br /&gt;
====시장상황에 대한 분석====&lt;br /&gt;
&lt;br /&gt;
*경쟁제품 조사 비교&lt;br /&gt;
&lt;br /&gt;
◇ Avatar SDK&lt;br /&gt;
&lt;br /&gt;
하나의 2D 정면 얼굴 사진을 입력하면 3D 아바타 생성 SDK를 사용하여 개인의 아바타를 만들어준다. 딥러닝과 컴퓨터 그래픽 기술을 이용하여 개발하였고, 현재 cloud나 PC, Mac, Android, iOS 환경 모두 이용 가능하다. 아바타로의 변환에는 사진마다 차이가 있지만 약 10초가 소요된다. 만들어진 아바타는 Blendshape, 헤어스타일, 헤어컬러를 변경할 수 있고, 윙크, 웃음, 하품 등 몇몇 특정 표정 변화가 가능하다. 그림은 Avatar SDK를 이용하여 왼쪽 상단의 사진을 입력으로 아바타를 생성한 사진이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:13.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ Mirror AI&lt;br /&gt;
&lt;br /&gt;
스마트폰으로 한장의 셀프 사진을 찍으면, 이를 바탕으로 자신의 모습을 한 몇 백개의 이모지를 생성하여 메신저에서 사용할 수 있는 키보드 어플리케이션이다. 현재 다양한 언어를 지원하고, iOS 10.0 버전 이상만 사용할 수 있다. 학습한 모델을 통해 사람의 얼굴 특징을 식별하고, 이에 맞게 수초 내에 사람의 얼굴 특징을 추려내어 이모티콘을 만든다. 생성된 이모티콘은 이 키보드 어플리케이션을 사용하여 어떤 메신저에서든 사용할 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:14.jpg]]&lt;br /&gt;
&lt;br /&gt;
*마케팅 전략 제시&lt;br /&gt;
&lt;br /&gt;
[[파일:15.jpg]]&lt;br /&gt;
&lt;br /&gt;
===개발과제의 기대효과===&lt;br /&gt;
====기술적 기대효과====&lt;br /&gt;
&lt;br /&gt;
◇ 영화 촬영시 기존에는 모션 센서들을 부착하여 배우들의 표정을 읽어와 캐릭터의 표정과 매핑시켜 부착하는데까지 시간이 오래 걸렸고 많은 기술들이 필요되었는데 만약 이 프로젝트가 성공하게 될 경우, 배우가 표정을 짓는 것만으로 쉽게 캐릭터에 매핑될 수 있도록 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자기가 원하는 캐릭터나 다른 인물 모습의 자신과 같은 표정을 짓는 영상을 만들 수 있을 것이다.&lt;br /&gt;
&lt;br /&gt;
====경제적, 사회적 기대 및 파급효과====&lt;br /&gt;
&lt;br /&gt;
◇ 기존에 영화 촬영시 모션 캡쳐에 필요했던 장비들이 없어도 원하는 캐릭터의 표정을 구현할 수 있어 제작비 절감의 효과가 기대된다. &lt;br /&gt;
&lt;br /&gt;
◇ 현재 실존하지 않는 배우의 모습에 표정을 매핑하여 실제로 연기하는 것처럼 보이게 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자신의 표정을 다른 캐릭터로 매핑함으로써 원래 영상보다 감정 표현을 훨씬 극대화할 수 있다.&lt;br /&gt;
&lt;br /&gt;
===기술개발 일정 및 추진체계===&lt;br /&gt;
====개발 일정====&lt;br /&gt;
&lt;br /&gt;
[[파일:16.jpg]]&lt;br /&gt;
&lt;br /&gt;
====구성원 및 추진체계====&lt;br /&gt;
&lt;br /&gt;
◇ 전ㅇㅇ(팀장) &lt;br /&gt;
&lt;br /&gt;
● SURF를 이용하여 얼굴 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원)&lt;br /&gt;
&lt;br /&gt;
● TwinGAN을 이용하여 모델링 및 검증을 진행한다.&lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원) &lt;br /&gt;
&lt;br /&gt;
● Facial Expression Research Group Database인 FREG-DG를 수집한다.&lt;br /&gt;
&lt;br /&gt;
◇ 전원&lt;br /&gt;
&lt;br /&gt;
● Digital Actor의 세부 영역인 표정을 인식하고 그 표정을 제어할 수 있는 두 가지 영역을 포함할 수 있는 주제를 선정한다.&lt;br /&gt;
&lt;br /&gt;
● 필요한 알고리즘, 데이터 셋 등을 조사 후 개발에 대비한다.&lt;br /&gt;
&lt;br /&gt;
● Optical Flow를 이용하여 벡터 움직임을 추적한 뒤 TwinGAN 결과로 나온 캐릭터에 대입한다.&lt;br /&gt;
&lt;br /&gt;
==설계==&lt;br /&gt;
===설계사양===&lt;br /&gt;
====개발 환경====&lt;br /&gt;
	- Ubuntu 18.04 &lt;br /&gt;
&lt;br /&gt;
		- python2.7에서 caffe, dlib, opencv 등 이용	&lt;br /&gt;
&lt;br /&gt;
	- Matlab2018b&lt;br /&gt;
&lt;br /&gt;
	- 프로세스 : CPU 4개&lt;br /&gt;
&lt;br /&gt;
===개념설계안===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 동영상을 ‘Free Video to JPG Converter’를 이용하여 동영상에서 사진을 원하는 프레임 수를 지정하여 JPG파일을 추출한다. &lt;br /&gt;
&lt;br /&gt;
◇ 추출한 JPG파일에 SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)는 대표적인 특징점 추출 알고리즘으로 2차원 영상의 일정 지역에 해당하는 화소를 이용하여 특징점을 추출한다. OpenCV에서 제공하는 함수를 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow 알고리즘을 이용하여 이전 프레임이랑 다음 프레임, 두 개의 연속된 얼굴 프레임 사이에 동작 패턴을 추적한다. Optical Flow 알고리즘 중 Lucas-Kanade(LK)는 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적어 비교적 속도가 빠르기 때문에 Lucas-Kanade를 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ TwinGAN을 이용하여 사람의 얼굴 사진을 캐릭터로 변환한다.&lt;br /&gt;
&lt;br /&gt;
GAN(Generative Adversarial Network)은 상반되는 목적을 가진 두 모듈(판별망, 생성망)이 대결하는 구조를 통해 이미지 생성을 학습하는 이미지 생성 기술의 한 종류이다. 기존 GAN의 단점을 보완하고 paired data가 아닌 unpaired data를 사용했을 때 도메인 간의 매끄러운 변환을 이끌어낼 수 있는 TwinGAN을 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ 추적한 특징점의 벡터를 각 프레임 아바타에 적용한다.&lt;br /&gt;
&lt;br /&gt;
◇ 위 방법이 어려울 경우 TwinGAN으로 각 프레임의 얼굴 이미지를 아바타로 변환하고, 변환한 아바타 사진을 연결하여 gif파일로 만든다. 마찬가지로 사람의 표정 변화를 캐릭터가 똑같이 따라할 수 있도록 한다.&lt;br /&gt;
&lt;br /&gt;
===이론적 계산 및 시뮬레이션===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상 입력 -&amp;gt; 표정을 따라하는 캐릭터 영상 출력&lt;br /&gt;
&lt;br /&gt;
===소프트웨어 설계===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;전체 설계도&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. ‘Free Video to JPG Converter’를 이용하여 동영상을 여러 프레임의 사진으로 전환한다. &lt;br /&gt;
2. 각각의 사진들로부터 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
3. 특징점들의 변화를 이용하여 Optical Flow를 이용하여 특징점의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
4. 1번의 결과 추출된 여러 사진들 중 첫 번째 사진을 TwinGAN을 이용하여 캐릭터로 변환 후 변환된 캐릭터의 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
5. 3번에서 추적한 Optical Flow를 4번에 적용하여 gif파일로 변환한다.&lt;br /&gt;
&lt;br /&gt;
==결과 및 평가==&lt;br /&gt;
===완료 작품의 소개===&lt;br /&gt;
====프로토타입 사진 혹은 작동 장면====&lt;br /&gt;
내용&lt;br /&gt;
====포스터====&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===관련사업비 내역서===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===완료작품의 평가===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===향후계획===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===특허 출원 내용===&lt;br /&gt;
내용&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=1008</id>
		<title>DnA(Digital and Actor)조</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=1008"/>
				<updated>2018-12-25T17:53:36Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: /* 설계사양 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==프로젝트 개요==&lt;br /&gt;
=== 기술개발 과제 ===&lt;br /&gt;
''' 국문 : ''' 디지털 액터 : 얼굴 표정과 표현&lt;br /&gt;
&lt;br /&gt;
''' 영문 : ''' Digital Actor : facial expression, emotion&lt;br /&gt;
&lt;br /&gt;
===과제 팀명===&lt;br /&gt;
DnA (Digital and Actor)&lt;br /&gt;
&lt;br /&gt;
===지도교수===&lt;br /&gt;
홍의경 교수님&lt;br /&gt;
&lt;br /&gt;
===개발기간===&lt;br /&gt;
2018년 9월 ~ 2018년 12월 (총 4개월)&lt;br /&gt;
&lt;br /&gt;
===구성원 소개===&lt;br /&gt;
서울시립대학교 통계학과 20xxxxx0xx 전ㅇㅇ(팀장)&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
==서론==&lt;br /&gt;
===개발 과제의 개요===&lt;br /&gt;
====개발 과제 요약====&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상에서 프레임을 추출하여 각 얼굴 사진의 특징점을 인식하고 Optical Flow 알고리즘을 이용하여 특징점의 움직임을 추적한다. 추적한 특징점의 벡터를 아바타에 적용하여 동영상에서 사람의 표정 변화를 캐릭터가 따라하도록 만든다. 아바타 사진을 연결하여 gif파일로 만들어 마찬가지로 사람의 표정 변화를 캐릭터가 똑같이 따라할 수 있도록 한다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 배경 및 효과====&lt;br /&gt;
◇ 디지털 액터(Digital Actor)란 실제 배우와 동일한 수준의 외형과 동작을 구현할 수 있는 컴퓨터 그래픽(DG) 영상 캐릭터를 의미한다. 킹콩, 요다 등의 실존 인물이 아닌 캐릭터를 만들거나 현실에서 불가능한 장면을 연출하는 등 영상 특수효과, 3D 애니메이션, 게임, VR과 같은 곳에 사용된다. &lt;br /&gt;
&lt;br /&gt;
◇ 모션캡쳐 장비는 현실적인 움직임으로 퀄리티 높은 영상을 보여줄 수 있지만 상당히 고가의 물건이다. 사람의 얼굴 표정을 학습하여 자연스럽게 아바타로 옮길 수 있다면 높은 CG처리 비용을 줄일 수 있을 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
◇ 현재 국내 VR과 AR의 국내 시장의 규모가 점점 넓어지고 있으며 관련 업계에 따르면 그 사장 규모는 2020년 지금의 4~5배 수준으로 성장할 전망이라고 한다. 더딘 기술 진행속도로 인해 개발 속도도 느리지만 기술이 발전할수록 그 성장 속도가 급격히 증가할 것으로 예상되기 때문에 그 속도를 맞추기 위해서는 미리 개발을 준비하는 등의 행동이 필요하다. 이에 관련 기술을 직접 구현해봄으로써 미래의 VR/AR 산업에 보탬이 될 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 목표 및 내용====&lt;br /&gt;
◇ SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)&lt;br /&gt;
&lt;br /&gt;
● 대표적인 특징점 추출 알고리즘&lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘(interest point extraction algorithm)은 2차원 영상의 일정 지역에 해당하는 화소를 이용하여, 영상의 특징이 될 수 있는 특징점을 추출하는 알고리즘이다. 이때 특징점은 코너(corner) 및 블랍(blob)을 의미한다. &lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘에는 SIFT(Scale Invariant Feature Transform), PCA 등 다른 방법도 있지만 인식률과 처리 속도면에서 더 우수한 SURF 알고리즘을 사용한다.&lt;br /&gt;
&lt;br /&gt;
● 블러이미지나 회전된 이미지는 잘 인식하는 장점이 있는 반면 뷰포인트나 조명이 달라지면 특징점을 잘 잡아내지 못하는 단점이 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 SURF에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow&lt;br /&gt;
&lt;br /&gt;
● 두 개의 연속된 비디오 프레임 사이에 이미지 객체의 동작 패턴을 의미한다.&lt;br /&gt;
&lt;br /&gt;
● 이미지 객체의 움직임 패턴은 객체 자체가 움직이거나 카메라의 움직임으로 인해 생성되는데 이전 프레임이랑 다음 프레임 중 변하는 부분의 움직임을 추적&lt;br /&gt;
&lt;br /&gt;
● 보통 움직임을 통한 구조 분석, 비디오 압축, 영상이 흔들렸거나 블러가 된 경우 깨끗한 영상으로 처리하는 기술인 Video Stabilization 분야에 사용된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lucas-Kanade&lt;br /&gt;
&lt;br /&gt;
● Optical Flow알고리즘에는 다양한 알고리즘이 있으나  Lucas-Kanade방법을 이용하기로 한다.&lt;br /&gt;
&lt;br /&gt;
● 한 프레임의 각 피셀 윈도우를 설정하고 다음 프레임에서 이 윈도우와 가장 잘 매칭되는 곳을 찾는 원리로 작동한다.&lt;br /&gt;
&lt;br /&gt;
● 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적다는 장점이 있다.&lt;br /&gt;
&lt;br /&gt;
● 좁은 지역의 윈도우를 사용하기 때문에 이 윈도우보다 큰 움직임이 발생하였을 경우 움직임을 계산하지 못하며 특징점을 사용하여 optical flow를 얻기 때문에 dense optical flow에 비하여 정확도가 낮은 편이다.&lt;br /&gt;
&lt;br /&gt;
● 윈도우를 벗어나는 큰 움직임을 계산하지 못하는 단점을 개선하기 위해 Pyramids Lucas-Kanade 방법을 사용할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 Lucas-Kanade에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
===관련 기술의 현황===&lt;br /&gt;
====관련 기술의 현황 및 분석(State of art)====&lt;br /&gt;
*전 세계적인 기술현황&lt;br /&gt;
&lt;br /&gt;
◇ 페이스웨어 Live&lt;br /&gt;
&lt;br /&gt;
마커리스 3D 페이셜 모션 캡처 솔루션 제공을 선도하는 페이스웨어 테크놀러지(Faceware Technologies, 이하 페이스웨어)가  23일 향상된 실시간 얼굴 모션캡처와 애니메이션 제품인 페이스웨어 라이브(Faceware Live) 2.5 버전을 발표했다. 페이스웨어 라이브는 실시간으로 사용자 얼굴을 자동 추적하고, 얼굴의 움직임을 페이셜 모델에 즉각 적용시킨 페이셜 애니메이션을 생성한다. 페이스웨어 라이브는 움직임 트래킹을 위해 단 하나의 카메라를 사용하며,  컴퓨터에 연결된 비디오나 웹캠, 페이스웨어 GoPro, Pro HD 헤드캠 시스템, 그밖에 다른 비디오 캡처 장비들을 카메라로 사용할 수 있다. 페이스웨어 라이브 2.5는 디지털캐릭터와 결합된 라이브 공연, 즉 디지털 캐릭터들이 관객이나 사람들과 라이브로 인터랙션이 가능한 실시간 인형극이나  테마파크, 쇼핑몰 내부의 키오스크 스크린 상에서 실시간 상호작용 디지털 캐릭터로 활용될 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:2.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 삼성 갤럭시S9의 AR 이모지&lt;br /&gt;
&lt;br /&gt;
카메라로 촬영한 인물 사진을 기반으로 아바타를 만들 수 있는 기능이다. AR 이모지를 만들면 18개 다양한 감정을 표현할 수 있는 gif 이모티콘이 추가되어 메세지, SNS 등에서 이용 가능하다. 눈, 코, 입, 뺨, 이마 등 100개 이상의 얼굴 특징점을 인식 및 분석해 피사체의 표정을 실시간으로 따라해서 동영상으로 촬영할 수 있다. 이외에도 안경을 착용하거나 피부 색깔, 헤어스타일, 헤어컬러, 의상 등을 변경할 수 있다. 하지만 세밀하지 못한 인물 묘사 방식에 논란이 있었다.&lt;br /&gt;
&lt;br /&gt;
[[파일:3.jpg]]&lt;br /&gt;
[[파일:4.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 애플 iOS11, iOS12의 애니모티콘, 미모지&lt;br /&gt;
&lt;br /&gt;
애플 사의 애니모티콘(애니모지)은 전면 카메라로 촬영한 인물사진을 기반으로 사용자의 표정을 읽은 후, 기존에 있던 이모지에 투사하여 이모티콘을 만들 수 있는 기능이다. 사용자의 얼굴에 3만개 이상의 도트를 투사해 얼굴 맵을 만든 후, 3D 스캔 활용을 통해 50개 이상의 각기 다른 근육의 움직임을 포착하고 분석한다. 분석한 세밀한 표정을 외계인, 고양이, 닭, 개, 여우, 원숭이, 판다. 돼지, 곰돌이, 토끼, 로봇, 유니콘 등 내장된 12개의 애니모티콘에 투영시킨다. 하지만 최근 iOS12의 기능으로 애니모티콘의 개인화 버전인 미모지(memoji)가 발표되었는데, 한정된 캐릭터의 폭을 늘리고 얼굴, 머리, 장신구를 자신의 취향에 맞게 선택할 수 있다. 생성한 애니모티콘을 편집할 수 있으며 아이폰의 메시지 앱에서 이용할 수 있다. 또한 목소리를 녹음하여 오디오가 포함된 비디오 형태로 수신할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:5.jpg]]&lt;br /&gt;
[[파일:6.jpg]]&lt;br /&gt;
&lt;br /&gt;
*특허조사 및 특허 전략 분석&lt;br /&gt;
&lt;br /&gt;
◇ SIFT(Scale Invariant Feature Transform) 알고리즘&lt;br /&gt;
&lt;br /&gt;
● Lowe David G 교수가 개발하였으며 97년도부터 연구하여 프로토 타입의 SIFT알고리즘을 99년도에 발표하였고, 04년도에는 이 알고리즘을 더욱 개량하여 완성된 SIFT알고리즘을 만들게 되었다.&lt;br /&gt;
&lt;br /&gt;
● 영상의 크기와 회전에 불변하는 특징점을 추출하는 알고리즘이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:7.jpg]]&lt;br /&gt;
&lt;br /&gt;
1) Scale-space extrema detection &lt;br /&gt;
&lt;br /&gt;
● Gaussian Pyramid를 생성 한 후 DoG(Difference of Gaussian)을 구해서 극점인 부분을 특징점 후보자로 잡아 준다.&lt;br /&gt;
&lt;br /&gt;
● DoG의 상위와 하위 층까지 모두 합쳐 주변 26개 보다 크거나 모두 작을 때만 특징점 후보자로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이 방법은 특징점을 Scale별로 구하게 되어 Target 물체가 작아져도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:8.jpg]]&lt;br /&gt;
&lt;br /&gt;
2) KeyPoint Localization &lt;br /&gt;
&lt;br /&gt;
● 테일러 급수를 사용하여 더 정확한 극점을 찾은 뒤 테일러 급수로 interpolation하여 그 점의 값을 구하여 특징점 후보자 중에서 정확하지 않는 특징점을 제거한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Orientation Assignment &lt;br /&gt;
&lt;br /&gt;
● 추출된 특징점마다 주 방향을 할당해 주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● 특징점 주변으로 16x16영역을 할당한 후 그 영역 이미지를 Gaussian Blurring을 적용하면 특징점 주변의 영역에 대한 Gradient의 방향과 크기를 결정하게 된다.&lt;br /&gt;
&lt;br /&gt;
● Gradient의 방향과 크기를 구하면 Orientation Histogram을 형성한 후, 가장 값이 큰 것을 해당 Orientation으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
● 회전에 대한 정보가 들어 있기 때문에 물체가 회전해도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
4) KeyPoint Descriptor&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 마다 서술자를 생성해주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● Gaussian Weight Function을 활용하여 서술자를 생성하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 주변으로 16x16의 pixel 영역을 할당하여 아래의 &amp;lt;그림 14&amp;gt;과 같이 Image Gradients를 구한다. 그 후, 서술자 Window 크기의 반값을 Gaussian Weighted function에 곱해주게 된다.&lt;br /&gt;
&lt;br /&gt;
[[파일:9.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 다음으로 히스토그램을 그려주게 되는데 그 전에 먼저 앞에서 구한 Orientation을 빼줘서 Descriptor가 회전에 불변하도록 만들어 준다.&lt;br /&gt;
&lt;br /&gt;
● 객체인식을 할 때는 DB의 각 특징점의 Descriptor를 가지고, 인식할 물체 영상의 Descriptor와 비교하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이때 비슷하면 데이터가 비슷하게 나올 텐데 여기서 사용하는 방법은 유클리드 거리이다.&lt;br /&gt;
● 유클리드 거리의 방식은 연산식이 간단하여 많은 특징점 데이터를 비교하는데 속도면에서 성능이 좋아 많이 사용되는 방식이다. &lt;br /&gt;
&lt;br /&gt;
● 매칭 단계까지 수행되면 DB의 특징점들과 Target의 특징점들 중 매칭된 특징점들이 추출되어 원하는 물체가 어디에 위치하는지 알 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:10.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇SURF&lt;br /&gt;
&lt;br /&gt;
● 알고리즘 순서도 : 특징점 추출 → 주 방향 결정 → descriptor 생성&lt;br /&gt;
&lt;br /&gt;
1) 특징점 추출&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● 수식을 이용하여 적분 영상을 생성한다.&lt;br /&gt;
&lt;br /&gt;
● 적분 영상이란 픽셀 밝기 값을 누적한 형태를 뜻함&lt;br /&gt;
&lt;br /&gt;
● D영역의 밝기 누적 값을 알고 싶다면 ii(4)+ii(1)-ii(2)-ii(3)식을 이용하여 쉽게 D영역의 밝기 누적값을 구할 수 있다.&lt;br /&gt;
&lt;br /&gt;
● 적분영상을 만든 후 헤이시안(Hessian)검출기를 사용하여 특징점을 검출한다. (헤이시안 검출기는 헤이시안 행렬 기반인 특징점 검출 알고리즘으로써 정확성이 높고 행렬식이 최대값인 위치에서 blob을 검출 할 때 사용하게 된다)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● SURF에서는 Hessian_Laplace Detector를 사용하는 대신에 위의 공식대로 FAST Hessian Detector 을 사용하여 수행성능을 향상시킨다.&lt;br /&gt;
&lt;br /&gt;
2) Dxx, Dyy, Dxy박스 필터를 구하는 방법&lt;br /&gt;
&lt;br /&gt;
● Haar Wavelet을 이용 - Dxx와 Dyy를 구할 때는 검은 영역부분을 -2, 흰영역부분은 1을 곱하여 구하고 Dxy는 검은 영역을 -1, 흰영역을 1을 곱하여 구한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) 9x9 박스필터를 이용한 Dxx, Dyy, Dxy를 구하는 방식&lt;br /&gt;
&lt;br /&gt;
● Hessian Determinant 데이터를 이용하여 각 필터 사이즈 별로 특징점을 검출하게 된다. 필터 사이즈란 위의 Dxx, Dyy, Dxy를 구하는 박스필터 영역 사이즈를 의미한다. SURF에서는 박스 필터 영역을 Scale해서 특징점을 추출해 aliasing 이 없는 장점을 가지고 있다.  Hessian Determinant 데이터를 각 픽셀마다 구했으면 각각의 Threshold와 비교하게 된다. &lt;br /&gt;
&lt;br /&gt;
● Threshold보다 값이 크면, 인접한 8개의 픽셀의 Hessian Determinant를 비교하여 큰 값인지 비교하게 된다. 만약 큰 값이면 상하 박스 필터 사이즈의 3x3크기의 각 9개의 Hessina Determinant를 비교하여 가장 클 경우 특징점으로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) 주 방향 결정&lt;br /&gt;
&lt;br /&gt;
● 특징점 중심으로 특징점이 검출된 스케일 정보 s를 이용하여 반지름이 6s의 원 안의 픽셀들에 대하여 x방향과 y방향으로 Haar Wavelet Response인 dx와 dy를 구하게 된다. 윈도우 5도 간격으로 회전하면서 60도 윈도우 내의 벡터의 크기를 더해 가장 큰 크기를 가지는 방향을 특징점의 주 방향으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
5) descriptor 생성&lt;br /&gt;
&lt;br /&gt;
● descriptor는 특징점 주변의 일정한 영역 내에 이웃하고 있는 픽셀의 밝기 변화를 나타낸다.&lt;br /&gt;
&lt;br /&gt;
[[파일:11.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 주 방향과 scale정보 s를 이용하여 특징점 중심으로 20s크기의 윈도우를 위의 그림처럼 구성하고, 구성된 윈도우를 4X4 영역으로 분할하여 16개의 영역으로 나눈다. 분할된 각 영역을 다시 한번 5X5크기로 분할하여 각 픽셀을 haar wavelet filter를 사용하여 각 를 구하여 16개의 영역에 각 위의 4개의 Descriptor를 생성하여 총 64개의 Descriptor를 생성할 수 있게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*기술 로드맵&lt;br /&gt;
&lt;br /&gt;
[[파일:12.jpg]]&lt;br /&gt;
&lt;br /&gt;
====시장상황에 대한 분석====&lt;br /&gt;
&lt;br /&gt;
*경쟁제품 조사 비교&lt;br /&gt;
&lt;br /&gt;
◇ Avatar SDK&lt;br /&gt;
&lt;br /&gt;
하나의 2D 정면 얼굴 사진을 입력하면 3D 아바타 생성 SDK를 사용하여 개인의 아바타를 만들어준다. 딥러닝과 컴퓨터 그래픽 기술을 이용하여 개발하였고, 현재 cloud나 PC, Mac, Android, iOS 환경 모두 이용 가능하다. 아바타로의 변환에는 사진마다 차이가 있지만 약 10초가 소요된다. 만들어진 아바타는 Blendshape, 헤어스타일, 헤어컬러를 변경할 수 있고, 윙크, 웃음, 하품 등 몇몇 특정 표정 변화가 가능하다. 그림은 Avatar SDK를 이용하여 왼쪽 상단의 사진을 입력으로 아바타를 생성한 사진이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:13.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ Mirror AI&lt;br /&gt;
&lt;br /&gt;
스마트폰으로 한장의 셀프 사진을 찍으면, 이를 바탕으로 자신의 모습을 한 몇 백개의 이모지를 생성하여 메신저에서 사용할 수 있는 키보드 어플리케이션이다. 현재 다양한 언어를 지원하고, iOS 10.0 버전 이상만 사용할 수 있다. 학습한 모델을 통해 사람의 얼굴 특징을 식별하고, 이에 맞게 수초 내에 사람의 얼굴 특징을 추려내어 이모티콘을 만든다. 생성된 이모티콘은 이 키보드 어플리케이션을 사용하여 어떤 메신저에서든 사용할 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:14.jpg]]&lt;br /&gt;
&lt;br /&gt;
*마케팅 전략 제시&lt;br /&gt;
&lt;br /&gt;
[[파일:15.jpg]]&lt;br /&gt;
&lt;br /&gt;
===개발과제의 기대효과===&lt;br /&gt;
====기술적 기대효과====&lt;br /&gt;
&lt;br /&gt;
◇ 영화 촬영시 기존에는 모션 센서들을 부착하여 배우들의 표정을 읽어와 캐릭터의 표정과 매핑시켜 부착하는데까지 시간이 오래 걸렸고 많은 기술들이 필요되었는데 만약 이 프로젝트가 성공하게 될 경우, 배우가 표정을 짓는 것만으로 쉽게 캐릭터에 매핑될 수 있도록 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자기가 원하는 캐릭터나 다른 인물 모습의 자신과 같은 표정을 짓는 영상을 만들 수 있을 것이다.&lt;br /&gt;
&lt;br /&gt;
====경제적, 사회적 기대 및 파급효과====&lt;br /&gt;
&lt;br /&gt;
◇ 기존에 영화 촬영시 모션 캡쳐에 필요했던 장비들이 없어도 원하는 캐릭터의 표정을 구현할 수 있어 제작비 절감의 효과가 기대된다. &lt;br /&gt;
&lt;br /&gt;
◇ 현재 실존하지 않는 배우의 모습에 표정을 매핑하여 실제로 연기하는 것처럼 보이게 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자신의 표정을 다른 캐릭터로 매핑함으로써 원래 영상보다 감정 표현을 훨씬 극대화할 수 있다.&lt;br /&gt;
&lt;br /&gt;
===기술개발 일정 및 추진체계===&lt;br /&gt;
====개발 일정====&lt;br /&gt;
&lt;br /&gt;
[[파일:16.jpg]]&lt;br /&gt;
&lt;br /&gt;
====구성원 및 추진체계====&lt;br /&gt;
&lt;br /&gt;
◇ 전ㅇㅇ(팀장) &lt;br /&gt;
&lt;br /&gt;
● SURF를 이용하여 얼굴 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원)&lt;br /&gt;
&lt;br /&gt;
● TwinGAN을 이용하여 모델링 및 검증을 진행한다.&lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원) &lt;br /&gt;
&lt;br /&gt;
● Facial Expression Research Group Database인 FREG-DG를 수집한다.&lt;br /&gt;
&lt;br /&gt;
◇ 전원&lt;br /&gt;
&lt;br /&gt;
● Digital Actor의 세부 영역인 표정을 인식하고 그 표정을 제어할 수 있는 두 가지 영역을 포함할 수 있는 주제를 선정한다.&lt;br /&gt;
&lt;br /&gt;
● 필요한 알고리즘, 데이터 셋 등을 조사 후 개발에 대비한다.&lt;br /&gt;
&lt;br /&gt;
● Optical Flow를 이용하여 벡터 움직임을 추적한 뒤 TwinGAN 결과로 나온 캐릭터에 대입한다.&lt;br /&gt;
&lt;br /&gt;
==설계==&lt;br /&gt;
===설계사양===&lt;br /&gt;
====개발 환경====&lt;br /&gt;
	- Ubuntu 18.04 &lt;br /&gt;
		- python2.7에서 caffe, dlib, opencv 등 이용	&lt;br /&gt;
	- Matlab2018b&lt;br /&gt;
	- 프로세스 : CPU 4개&lt;br /&gt;
&lt;br /&gt;
===개념설계안===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 동영상을 ‘Free Video to JPG Converter’를 이용하여 동영상에서 사진을 원하는 프레임 수를 지정하여 JPG파일을 추출한다. &lt;br /&gt;
&lt;br /&gt;
◇ 추출한 JPG파일에 SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)는 대표적인 특징점 추출 알고리즘으로 2차원 영상의 일정 지역에 해당하는 화소를 이용하여 특징점을 추출한다. OpenCV에서 제공하는 함수를 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow 알고리즘을 이용하여 이전 프레임이랑 다음 프레임, 두 개의 연속된 얼굴 프레임 사이에 동작 패턴을 추적한다. Optical Flow 알고리즘 중 Lucas-Kanade(LK)는 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적어 비교적 속도가 빠르기 때문에 Lucas-Kanade를 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ TwinGAN을 이용하여 사람의 얼굴 사진을 캐릭터로 변환한다.&lt;br /&gt;
&lt;br /&gt;
GAN(Generative Adversarial Network)은 상반되는 목적을 가진 두 모듈(판별망, 생성망)이 대결하는 구조를 통해 이미지 생성을 학습하는 이미지 생성 기술의 한 종류이다. 기존 GAN의 단점을 보완하고 paired data가 아닌 unpaired data를 사용했을 때 도메인 간의 매끄러운 변환을 이끌어낼 수 있는 TwinGAN을 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ 추적한 특징점의 벡터를 각 프레임 아바타에 적용한다.&lt;br /&gt;
&lt;br /&gt;
◇ 위 방법이 어려울 경우 TwinGAN으로 각 프레임의 얼굴 이미지를 아바타로 변환하고, 변환한 아바타 사진을 연결하여 gif파일로 만든다. 마찬가지로 사람의 표정 변화를 캐릭터가 똑같이 따라할 수 있도록 한다.&lt;br /&gt;
&lt;br /&gt;
===이론적 계산 및 시뮬레이션===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상 입력 -&amp;gt; 표정을 따라하는 캐릭터 영상 출력&lt;br /&gt;
&lt;br /&gt;
===소프트웨어 설계===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;전체 설계도&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. ‘Free Video to JPG Converter’를 이용하여 동영상을 여러 프레임의 사진으로 전환한다. &lt;br /&gt;
2. 각각의 사진들로부터 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
3. 특징점들의 변화를 이용하여 Optical Flow를 이용하여 특징점의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
4. 1번의 결과 추출된 여러 사진들 중 첫 번째 사진을 TwinGAN을 이용하여 캐릭터로 변환 후 변환된 캐릭터의 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
5. 3번에서 추적한 Optical Flow를 4번에 적용하여 gif파일로 변환한다.&lt;br /&gt;
&lt;br /&gt;
==결과 및 평가==&lt;br /&gt;
===완료 작품의 소개===&lt;br /&gt;
====프로토타입 사진 혹은 작동 장면====&lt;br /&gt;
내용&lt;br /&gt;
====포스터====&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===관련사업비 내역서===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===완료작품의 평가===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===향후계획===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===특허 출원 내용===&lt;br /&gt;
내용&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=1007</id>
		<title>DnA(Digital and Actor)조</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=1007"/>
				<updated>2018-12-25T17:52:52Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: /* 구성원 및 추진체계 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==프로젝트 개요==&lt;br /&gt;
=== 기술개발 과제 ===&lt;br /&gt;
''' 국문 : ''' 디지털 액터 : 얼굴 표정과 표현&lt;br /&gt;
&lt;br /&gt;
''' 영문 : ''' Digital Actor : facial expression, emotion&lt;br /&gt;
&lt;br /&gt;
===과제 팀명===&lt;br /&gt;
DnA (Digital and Actor)&lt;br /&gt;
&lt;br /&gt;
===지도교수===&lt;br /&gt;
홍의경 교수님&lt;br /&gt;
&lt;br /&gt;
===개발기간===&lt;br /&gt;
2018년 9월 ~ 2018년 12월 (총 4개월)&lt;br /&gt;
&lt;br /&gt;
===구성원 소개===&lt;br /&gt;
서울시립대학교 통계학과 20xxxxx0xx 전ㅇㅇ(팀장)&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
==서론==&lt;br /&gt;
===개발 과제의 개요===&lt;br /&gt;
====개발 과제 요약====&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상에서 프레임을 추출하여 각 얼굴 사진의 특징점을 인식하고 Optical Flow 알고리즘을 이용하여 특징점의 움직임을 추적한다. 추적한 특징점의 벡터를 아바타에 적용하여 동영상에서 사람의 표정 변화를 캐릭터가 따라하도록 만든다. 아바타 사진을 연결하여 gif파일로 만들어 마찬가지로 사람의 표정 변화를 캐릭터가 똑같이 따라할 수 있도록 한다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 배경 및 효과====&lt;br /&gt;
◇ 디지털 액터(Digital Actor)란 실제 배우와 동일한 수준의 외형과 동작을 구현할 수 있는 컴퓨터 그래픽(DG) 영상 캐릭터를 의미한다. 킹콩, 요다 등의 실존 인물이 아닌 캐릭터를 만들거나 현실에서 불가능한 장면을 연출하는 등 영상 특수효과, 3D 애니메이션, 게임, VR과 같은 곳에 사용된다. &lt;br /&gt;
&lt;br /&gt;
◇ 모션캡쳐 장비는 현실적인 움직임으로 퀄리티 높은 영상을 보여줄 수 있지만 상당히 고가의 물건이다. 사람의 얼굴 표정을 학습하여 자연스럽게 아바타로 옮길 수 있다면 높은 CG처리 비용을 줄일 수 있을 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
◇ 현재 국내 VR과 AR의 국내 시장의 규모가 점점 넓어지고 있으며 관련 업계에 따르면 그 사장 규모는 2020년 지금의 4~5배 수준으로 성장할 전망이라고 한다. 더딘 기술 진행속도로 인해 개발 속도도 느리지만 기술이 발전할수록 그 성장 속도가 급격히 증가할 것으로 예상되기 때문에 그 속도를 맞추기 위해서는 미리 개발을 준비하는 등의 행동이 필요하다. 이에 관련 기술을 직접 구현해봄으로써 미래의 VR/AR 산업에 보탬이 될 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 목표 및 내용====&lt;br /&gt;
◇ SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)&lt;br /&gt;
&lt;br /&gt;
● 대표적인 특징점 추출 알고리즘&lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘(interest point extraction algorithm)은 2차원 영상의 일정 지역에 해당하는 화소를 이용하여, 영상의 특징이 될 수 있는 특징점을 추출하는 알고리즘이다. 이때 특징점은 코너(corner) 및 블랍(blob)을 의미한다. &lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘에는 SIFT(Scale Invariant Feature Transform), PCA 등 다른 방법도 있지만 인식률과 처리 속도면에서 더 우수한 SURF 알고리즘을 사용한다.&lt;br /&gt;
&lt;br /&gt;
● 블러이미지나 회전된 이미지는 잘 인식하는 장점이 있는 반면 뷰포인트나 조명이 달라지면 특징점을 잘 잡아내지 못하는 단점이 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 SURF에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow&lt;br /&gt;
&lt;br /&gt;
● 두 개의 연속된 비디오 프레임 사이에 이미지 객체의 동작 패턴을 의미한다.&lt;br /&gt;
&lt;br /&gt;
● 이미지 객체의 움직임 패턴은 객체 자체가 움직이거나 카메라의 움직임으로 인해 생성되는데 이전 프레임이랑 다음 프레임 중 변하는 부분의 움직임을 추적&lt;br /&gt;
&lt;br /&gt;
● 보통 움직임을 통한 구조 분석, 비디오 압축, 영상이 흔들렸거나 블러가 된 경우 깨끗한 영상으로 처리하는 기술인 Video Stabilization 분야에 사용된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lucas-Kanade&lt;br /&gt;
&lt;br /&gt;
● Optical Flow알고리즘에는 다양한 알고리즘이 있으나  Lucas-Kanade방법을 이용하기로 한다.&lt;br /&gt;
&lt;br /&gt;
● 한 프레임의 각 피셀 윈도우를 설정하고 다음 프레임에서 이 윈도우와 가장 잘 매칭되는 곳을 찾는 원리로 작동한다.&lt;br /&gt;
&lt;br /&gt;
● 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적다는 장점이 있다.&lt;br /&gt;
&lt;br /&gt;
● 좁은 지역의 윈도우를 사용하기 때문에 이 윈도우보다 큰 움직임이 발생하였을 경우 움직임을 계산하지 못하며 특징점을 사용하여 optical flow를 얻기 때문에 dense optical flow에 비하여 정확도가 낮은 편이다.&lt;br /&gt;
&lt;br /&gt;
● 윈도우를 벗어나는 큰 움직임을 계산하지 못하는 단점을 개선하기 위해 Pyramids Lucas-Kanade 방법을 사용할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 Lucas-Kanade에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
===관련 기술의 현황===&lt;br /&gt;
====관련 기술의 현황 및 분석(State of art)====&lt;br /&gt;
*전 세계적인 기술현황&lt;br /&gt;
&lt;br /&gt;
◇ 페이스웨어 Live&lt;br /&gt;
&lt;br /&gt;
마커리스 3D 페이셜 모션 캡처 솔루션 제공을 선도하는 페이스웨어 테크놀러지(Faceware Technologies, 이하 페이스웨어)가  23일 향상된 실시간 얼굴 모션캡처와 애니메이션 제품인 페이스웨어 라이브(Faceware Live) 2.5 버전을 발표했다. 페이스웨어 라이브는 실시간으로 사용자 얼굴을 자동 추적하고, 얼굴의 움직임을 페이셜 모델에 즉각 적용시킨 페이셜 애니메이션을 생성한다. 페이스웨어 라이브는 움직임 트래킹을 위해 단 하나의 카메라를 사용하며,  컴퓨터에 연결된 비디오나 웹캠, 페이스웨어 GoPro, Pro HD 헤드캠 시스템, 그밖에 다른 비디오 캡처 장비들을 카메라로 사용할 수 있다. 페이스웨어 라이브 2.5는 디지털캐릭터와 결합된 라이브 공연, 즉 디지털 캐릭터들이 관객이나 사람들과 라이브로 인터랙션이 가능한 실시간 인형극이나  테마파크, 쇼핑몰 내부의 키오스크 스크린 상에서 실시간 상호작용 디지털 캐릭터로 활용될 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:2.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 삼성 갤럭시S9의 AR 이모지&lt;br /&gt;
&lt;br /&gt;
카메라로 촬영한 인물 사진을 기반으로 아바타를 만들 수 있는 기능이다. AR 이모지를 만들면 18개 다양한 감정을 표현할 수 있는 gif 이모티콘이 추가되어 메세지, SNS 등에서 이용 가능하다. 눈, 코, 입, 뺨, 이마 등 100개 이상의 얼굴 특징점을 인식 및 분석해 피사체의 표정을 실시간으로 따라해서 동영상으로 촬영할 수 있다. 이외에도 안경을 착용하거나 피부 색깔, 헤어스타일, 헤어컬러, 의상 등을 변경할 수 있다. 하지만 세밀하지 못한 인물 묘사 방식에 논란이 있었다.&lt;br /&gt;
&lt;br /&gt;
[[파일:3.jpg]]&lt;br /&gt;
[[파일:4.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 애플 iOS11, iOS12의 애니모티콘, 미모지&lt;br /&gt;
&lt;br /&gt;
애플 사의 애니모티콘(애니모지)은 전면 카메라로 촬영한 인물사진을 기반으로 사용자의 표정을 읽은 후, 기존에 있던 이모지에 투사하여 이모티콘을 만들 수 있는 기능이다. 사용자의 얼굴에 3만개 이상의 도트를 투사해 얼굴 맵을 만든 후, 3D 스캔 활용을 통해 50개 이상의 각기 다른 근육의 움직임을 포착하고 분석한다. 분석한 세밀한 표정을 외계인, 고양이, 닭, 개, 여우, 원숭이, 판다. 돼지, 곰돌이, 토끼, 로봇, 유니콘 등 내장된 12개의 애니모티콘에 투영시킨다. 하지만 최근 iOS12의 기능으로 애니모티콘의 개인화 버전인 미모지(memoji)가 발표되었는데, 한정된 캐릭터의 폭을 늘리고 얼굴, 머리, 장신구를 자신의 취향에 맞게 선택할 수 있다. 생성한 애니모티콘을 편집할 수 있으며 아이폰의 메시지 앱에서 이용할 수 있다. 또한 목소리를 녹음하여 오디오가 포함된 비디오 형태로 수신할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:5.jpg]]&lt;br /&gt;
[[파일:6.jpg]]&lt;br /&gt;
&lt;br /&gt;
*특허조사 및 특허 전략 분석&lt;br /&gt;
&lt;br /&gt;
◇ SIFT(Scale Invariant Feature Transform) 알고리즘&lt;br /&gt;
&lt;br /&gt;
● Lowe David G 교수가 개발하였으며 97년도부터 연구하여 프로토 타입의 SIFT알고리즘을 99년도에 발표하였고, 04년도에는 이 알고리즘을 더욱 개량하여 완성된 SIFT알고리즘을 만들게 되었다.&lt;br /&gt;
&lt;br /&gt;
● 영상의 크기와 회전에 불변하는 특징점을 추출하는 알고리즘이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:7.jpg]]&lt;br /&gt;
&lt;br /&gt;
1) Scale-space extrema detection &lt;br /&gt;
&lt;br /&gt;
● Gaussian Pyramid를 생성 한 후 DoG(Difference of Gaussian)을 구해서 극점인 부분을 특징점 후보자로 잡아 준다.&lt;br /&gt;
&lt;br /&gt;
● DoG의 상위와 하위 층까지 모두 합쳐 주변 26개 보다 크거나 모두 작을 때만 특징점 후보자로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이 방법은 특징점을 Scale별로 구하게 되어 Target 물체가 작아져도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:8.jpg]]&lt;br /&gt;
&lt;br /&gt;
2) KeyPoint Localization &lt;br /&gt;
&lt;br /&gt;
● 테일러 급수를 사용하여 더 정확한 극점을 찾은 뒤 테일러 급수로 interpolation하여 그 점의 값을 구하여 특징점 후보자 중에서 정확하지 않는 특징점을 제거한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Orientation Assignment &lt;br /&gt;
&lt;br /&gt;
● 추출된 특징점마다 주 방향을 할당해 주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● 특징점 주변으로 16x16영역을 할당한 후 그 영역 이미지를 Gaussian Blurring을 적용하면 특징점 주변의 영역에 대한 Gradient의 방향과 크기를 결정하게 된다.&lt;br /&gt;
&lt;br /&gt;
● Gradient의 방향과 크기를 구하면 Orientation Histogram을 형성한 후, 가장 값이 큰 것을 해당 Orientation으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
● 회전에 대한 정보가 들어 있기 때문에 물체가 회전해도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
4) KeyPoint Descriptor&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 마다 서술자를 생성해주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● Gaussian Weight Function을 활용하여 서술자를 생성하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 주변으로 16x16의 pixel 영역을 할당하여 아래의 &amp;lt;그림 14&amp;gt;과 같이 Image Gradients를 구한다. 그 후, 서술자 Window 크기의 반값을 Gaussian Weighted function에 곱해주게 된다.&lt;br /&gt;
&lt;br /&gt;
[[파일:9.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 다음으로 히스토그램을 그려주게 되는데 그 전에 먼저 앞에서 구한 Orientation을 빼줘서 Descriptor가 회전에 불변하도록 만들어 준다.&lt;br /&gt;
&lt;br /&gt;
● 객체인식을 할 때는 DB의 각 특징점의 Descriptor를 가지고, 인식할 물체 영상의 Descriptor와 비교하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이때 비슷하면 데이터가 비슷하게 나올 텐데 여기서 사용하는 방법은 유클리드 거리이다.&lt;br /&gt;
● 유클리드 거리의 방식은 연산식이 간단하여 많은 특징점 데이터를 비교하는데 속도면에서 성능이 좋아 많이 사용되는 방식이다. &lt;br /&gt;
&lt;br /&gt;
● 매칭 단계까지 수행되면 DB의 특징점들과 Target의 특징점들 중 매칭된 특징점들이 추출되어 원하는 물체가 어디에 위치하는지 알 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:10.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇SURF&lt;br /&gt;
&lt;br /&gt;
● 알고리즘 순서도 : 특징점 추출 → 주 방향 결정 → descriptor 생성&lt;br /&gt;
&lt;br /&gt;
1) 특징점 추출&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● 수식을 이용하여 적분 영상을 생성한다.&lt;br /&gt;
&lt;br /&gt;
● 적분 영상이란 픽셀 밝기 값을 누적한 형태를 뜻함&lt;br /&gt;
&lt;br /&gt;
● D영역의 밝기 누적 값을 알고 싶다면 ii(4)+ii(1)-ii(2)-ii(3)식을 이용하여 쉽게 D영역의 밝기 누적값을 구할 수 있다.&lt;br /&gt;
&lt;br /&gt;
● 적분영상을 만든 후 헤이시안(Hessian)검출기를 사용하여 특징점을 검출한다. (헤이시안 검출기는 헤이시안 행렬 기반인 특징점 검출 알고리즘으로써 정확성이 높고 행렬식이 최대값인 위치에서 blob을 검출 할 때 사용하게 된다)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● SURF에서는 Hessian_Laplace Detector를 사용하는 대신에 위의 공식대로 FAST Hessian Detector 을 사용하여 수행성능을 향상시킨다.&lt;br /&gt;
&lt;br /&gt;
2) Dxx, Dyy, Dxy박스 필터를 구하는 방법&lt;br /&gt;
&lt;br /&gt;
● Haar Wavelet을 이용 - Dxx와 Dyy를 구할 때는 검은 영역부분을 -2, 흰영역부분은 1을 곱하여 구하고 Dxy는 검은 영역을 -1, 흰영역을 1을 곱하여 구한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) 9x9 박스필터를 이용한 Dxx, Dyy, Dxy를 구하는 방식&lt;br /&gt;
&lt;br /&gt;
● Hessian Determinant 데이터를 이용하여 각 필터 사이즈 별로 특징점을 검출하게 된다. 필터 사이즈란 위의 Dxx, Dyy, Dxy를 구하는 박스필터 영역 사이즈를 의미한다. SURF에서는 박스 필터 영역을 Scale해서 특징점을 추출해 aliasing 이 없는 장점을 가지고 있다.  Hessian Determinant 데이터를 각 픽셀마다 구했으면 각각의 Threshold와 비교하게 된다. &lt;br /&gt;
&lt;br /&gt;
● Threshold보다 값이 크면, 인접한 8개의 픽셀의 Hessian Determinant를 비교하여 큰 값인지 비교하게 된다. 만약 큰 값이면 상하 박스 필터 사이즈의 3x3크기의 각 9개의 Hessina Determinant를 비교하여 가장 클 경우 특징점으로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) 주 방향 결정&lt;br /&gt;
&lt;br /&gt;
● 특징점 중심으로 특징점이 검출된 스케일 정보 s를 이용하여 반지름이 6s의 원 안의 픽셀들에 대하여 x방향과 y방향으로 Haar Wavelet Response인 dx와 dy를 구하게 된다. 윈도우 5도 간격으로 회전하면서 60도 윈도우 내의 벡터의 크기를 더해 가장 큰 크기를 가지는 방향을 특징점의 주 방향으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
5) descriptor 생성&lt;br /&gt;
&lt;br /&gt;
● descriptor는 특징점 주변의 일정한 영역 내에 이웃하고 있는 픽셀의 밝기 변화를 나타낸다.&lt;br /&gt;
&lt;br /&gt;
[[파일:11.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 주 방향과 scale정보 s를 이용하여 특징점 중심으로 20s크기의 윈도우를 위의 그림처럼 구성하고, 구성된 윈도우를 4X4 영역으로 분할하여 16개의 영역으로 나눈다. 분할된 각 영역을 다시 한번 5X5크기로 분할하여 각 픽셀을 haar wavelet filter를 사용하여 각 를 구하여 16개의 영역에 각 위의 4개의 Descriptor를 생성하여 총 64개의 Descriptor를 생성할 수 있게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*기술 로드맵&lt;br /&gt;
&lt;br /&gt;
[[파일:12.jpg]]&lt;br /&gt;
&lt;br /&gt;
====시장상황에 대한 분석====&lt;br /&gt;
&lt;br /&gt;
*경쟁제품 조사 비교&lt;br /&gt;
&lt;br /&gt;
◇ Avatar SDK&lt;br /&gt;
&lt;br /&gt;
하나의 2D 정면 얼굴 사진을 입력하면 3D 아바타 생성 SDK를 사용하여 개인의 아바타를 만들어준다. 딥러닝과 컴퓨터 그래픽 기술을 이용하여 개발하였고, 현재 cloud나 PC, Mac, Android, iOS 환경 모두 이용 가능하다. 아바타로의 변환에는 사진마다 차이가 있지만 약 10초가 소요된다. 만들어진 아바타는 Blendshape, 헤어스타일, 헤어컬러를 변경할 수 있고, 윙크, 웃음, 하품 등 몇몇 특정 표정 변화가 가능하다. 그림은 Avatar SDK를 이용하여 왼쪽 상단의 사진을 입력으로 아바타를 생성한 사진이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:13.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ Mirror AI&lt;br /&gt;
&lt;br /&gt;
스마트폰으로 한장의 셀프 사진을 찍으면, 이를 바탕으로 자신의 모습을 한 몇 백개의 이모지를 생성하여 메신저에서 사용할 수 있는 키보드 어플리케이션이다. 현재 다양한 언어를 지원하고, iOS 10.0 버전 이상만 사용할 수 있다. 학습한 모델을 통해 사람의 얼굴 특징을 식별하고, 이에 맞게 수초 내에 사람의 얼굴 특징을 추려내어 이모티콘을 만든다. 생성된 이모티콘은 이 키보드 어플리케이션을 사용하여 어떤 메신저에서든 사용할 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:14.jpg]]&lt;br /&gt;
&lt;br /&gt;
*마케팅 전략 제시&lt;br /&gt;
&lt;br /&gt;
[[파일:15.jpg]]&lt;br /&gt;
&lt;br /&gt;
===개발과제의 기대효과===&lt;br /&gt;
====기술적 기대효과====&lt;br /&gt;
&lt;br /&gt;
◇ 영화 촬영시 기존에는 모션 센서들을 부착하여 배우들의 표정을 읽어와 캐릭터의 표정과 매핑시켜 부착하는데까지 시간이 오래 걸렸고 많은 기술들이 필요되었는데 만약 이 프로젝트가 성공하게 될 경우, 배우가 표정을 짓는 것만으로 쉽게 캐릭터에 매핑될 수 있도록 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자기가 원하는 캐릭터나 다른 인물 모습의 자신과 같은 표정을 짓는 영상을 만들 수 있을 것이다.&lt;br /&gt;
&lt;br /&gt;
====경제적, 사회적 기대 및 파급효과====&lt;br /&gt;
&lt;br /&gt;
◇ 기존에 영화 촬영시 모션 캡쳐에 필요했던 장비들이 없어도 원하는 캐릭터의 표정을 구현할 수 있어 제작비 절감의 효과가 기대된다. &lt;br /&gt;
&lt;br /&gt;
◇ 현재 실존하지 않는 배우의 모습에 표정을 매핑하여 실제로 연기하는 것처럼 보이게 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자신의 표정을 다른 캐릭터로 매핑함으로써 원래 영상보다 감정 표현을 훨씬 극대화할 수 있다.&lt;br /&gt;
&lt;br /&gt;
===기술개발 일정 및 추진체계===&lt;br /&gt;
====개발 일정====&lt;br /&gt;
&lt;br /&gt;
[[파일:16.jpg]]&lt;br /&gt;
&lt;br /&gt;
====구성원 및 추진체계====&lt;br /&gt;
&lt;br /&gt;
◇ 전ㅇㅇ(팀장) &lt;br /&gt;
&lt;br /&gt;
● SURF를 이용하여 얼굴 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원)&lt;br /&gt;
&lt;br /&gt;
● TwinGAN을 이용하여 모델링 및 검증을 진행한다.&lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원) &lt;br /&gt;
&lt;br /&gt;
● Facial Expression Research Group Database인 FREG-DG를 수집한다.&lt;br /&gt;
&lt;br /&gt;
◇ 전원&lt;br /&gt;
&lt;br /&gt;
● Digital Actor의 세부 영역인 표정을 인식하고 그 표정을 제어할 수 있는 두 가지 영역을 포함할 수 있는 주제를 선정한다.&lt;br /&gt;
&lt;br /&gt;
● 필요한 알고리즘, 데이터 셋 등을 조사 후 개발에 대비한다.&lt;br /&gt;
&lt;br /&gt;
● Optical Flow를 이용하여 벡터 움직임을 추적한 뒤 TwinGAN 결과로 나온 캐릭터에 대입한다.&lt;br /&gt;
&lt;br /&gt;
==설계==&lt;br /&gt;
===설계사양===&lt;br /&gt;
====제품의 요구사항====&lt;br /&gt;
내용&lt;br /&gt;
====설계 사양====&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===개념설계안===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 동영상을 ‘Free Video to JPG Converter’를 이용하여 동영상에서 사진을 원하는 프레임 수를 지정하여 JPG파일을 추출한다. &lt;br /&gt;
&lt;br /&gt;
◇ 추출한 JPG파일에 SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)는 대표적인 특징점 추출 알고리즘으로 2차원 영상의 일정 지역에 해당하는 화소를 이용하여 특징점을 추출한다. OpenCV에서 제공하는 함수를 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow 알고리즘을 이용하여 이전 프레임이랑 다음 프레임, 두 개의 연속된 얼굴 프레임 사이에 동작 패턴을 추적한다. Optical Flow 알고리즘 중 Lucas-Kanade(LK)는 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적어 비교적 속도가 빠르기 때문에 Lucas-Kanade를 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ TwinGAN을 이용하여 사람의 얼굴 사진을 캐릭터로 변환한다.&lt;br /&gt;
&lt;br /&gt;
GAN(Generative Adversarial Network)은 상반되는 목적을 가진 두 모듈(판별망, 생성망)이 대결하는 구조를 통해 이미지 생성을 학습하는 이미지 생성 기술의 한 종류이다. 기존 GAN의 단점을 보완하고 paired data가 아닌 unpaired data를 사용했을 때 도메인 간의 매끄러운 변환을 이끌어낼 수 있는 TwinGAN을 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ 추적한 특징점의 벡터를 각 프레임 아바타에 적용한다.&lt;br /&gt;
&lt;br /&gt;
◇ 위 방법이 어려울 경우 TwinGAN으로 각 프레임의 얼굴 이미지를 아바타로 변환하고, 변환한 아바타 사진을 연결하여 gif파일로 만든다. 마찬가지로 사람의 표정 변화를 캐릭터가 똑같이 따라할 수 있도록 한다.&lt;br /&gt;
&lt;br /&gt;
===이론적 계산 및 시뮬레이션===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상 입력 -&amp;gt; 표정을 따라하는 캐릭터 영상 출력&lt;br /&gt;
&lt;br /&gt;
===소프트웨어 설계===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;전체 설계도&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. ‘Free Video to JPG Converter’를 이용하여 동영상을 여러 프레임의 사진으로 전환한다. &lt;br /&gt;
2. 각각의 사진들로부터 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
3. 특징점들의 변화를 이용하여 Optical Flow를 이용하여 특징점의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
4. 1번의 결과 추출된 여러 사진들 중 첫 번째 사진을 TwinGAN을 이용하여 캐릭터로 변환 후 변환된 캐릭터의 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
5. 3번에서 추적한 Optical Flow를 4번에 적용하여 gif파일로 변환한다.&lt;br /&gt;
&lt;br /&gt;
==결과 및 평가==&lt;br /&gt;
===완료 작품의 소개===&lt;br /&gt;
====프로토타입 사진 혹은 작동 장면====&lt;br /&gt;
내용&lt;br /&gt;
====포스터====&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===관련사업비 내역서===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===완료작품의 평가===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===향후계획===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===특허 출원 내용===&lt;br /&gt;
내용&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=1006</id>
		<title>DnA(Digital and Actor)조</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=1006"/>
				<updated>2018-12-25T17:52:42Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: /* 구성원 및 추진체계 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==프로젝트 개요==&lt;br /&gt;
=== 기술개발 과제 ===&lt;br /&gt;
''' 국문 : ''' 디지털 액터 : 얼굴 표정과 표현&lt;br /&gt;
&lt;br /&gt;
''' 영문 : ''' Digital Actor : facial expression, emotion&lt;br /&gt;
&lt;br /&gt;
===과제 팀명===&lt;br /&gt;
DnA (Digital and Actor)&lt;br /&gt;
&lt;br /&gt;
===지도교수===&lt;br /&gt;
홍의경 교수님&lt;br /&gt;
&lt;br /&gt;
===개발기간===&lt;br /&gt;
2018년 9월 ~ 2018년 12월 (총 4개월)&lt;br /&gt;
&lt;br /&gt;
===구성원 소개===&lt;br /&gt;
서울시립대학교 통계학과 20xxxxx0xx 전ㅇㅇ(팀장)&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
==서론==&lt;br /&gt;
===개발 과제의 개요===&lt;br /&gt;
====개발 과제 요약====&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상에서 프레임을 추출하여 각 얼굴 사진의 특징점을 인식하고 Optical Flow 알고리즘을 이용하여 특징점의 움직임을 추적한다. 추적한 특징점의 벡터를 아바타에 적용하여 동영상에서 사람의 표정 변화를 캐릭터가 따라하도록 만든다. 아바타 사진을 연결하여 gif파일로 만들어 마찬가지로 사람의 표정 변화를 캐릭터가 똑같이 따라할 수 있도록 한다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 배경 및 효과====&lt;br /&gt;
◇ 디지털 액터(Digital Actor)란 실제 배우와 동일한 수준의 외형과 동작을 구현할 수 있는 컴퓨터 그래픽(DG) 영상 캐릭터를 의미한다. 킹콩, 요다 등의 실존 인물이 아닌 캐릭터를 만들거나 현실에서 불가능한 장면을 연출하는 등 영상 특수효과, 3D 애니메이션, 게임, VR과 같은 곳에 사용된다. &lt;br /&gt;
&lt;br /&gt;
◇ 모션캡쳐 장비는 현실적인 움직임으로 퀄리티 높은 영상을 보여줄 수 있지만 상당히 고가의 물건이다. 사람의 얼굴 표정을 학습하여 자연스럽게 아바타로 옮길 수 있다면 높은 CG처리 비용을 줄일 수 있을 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
◇ 현재 국내 VR과 AR의 국내 시장의 규모가 점점 넓어지고 있으며 관련 업계에 따르면 그 사장 규모는 2020년 지금의 4~5배 수준으로 성장할 전망이라고 한다. 더딘 기술 진행속도로 인해 개발 속도도 느리지만 기술이 발전할수록 그 성장 속도가 급격히 증가할 것으로 예상되기 때문에 그 속도를 맞추기 위해서는 미리 개발을 준비하는 등의 행동이 필요하다. 이에 관련 기술을 직접 구현해봄으로써 미래의 VR/AR 산업에 보탬이 될 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 목표 및 내용====&lt;br /&gt;
◇ SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)&lt;br /&gt;
&lt;br /&gt;
● 대표적인 특징점 추출 알고리즘&lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘(interest point extraction algorithm)은 2차원 영상의 일정 지역에 해당하는 화소를 이용하여, 영상의 특징이 될 수 있는 특징점을 추출하는 알고리즘이다. 이때 특징점은 코너(corner) 및 블랍(blob)을 의미한다. &lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘에는 SIFT(Scale Invariant Feature Transform), PCA 등 다른 방법도 있지만 인식률과 처리 속도면에서 더 우수한 SURF 알고리즘을 사용한다.&lt;br /&gt;
&lt;br /&gt;
● 블러이미지나 회전된 이미지는 잘 인식하는 장점이 있는 반면 뷰포인트나 조명이 달라지면 특징점을 잘 잡아내지 못하는 단점이 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 SURF에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow&lt;br /&gt;
&lt;br /&gt;
● 두 개의 연속된 비디오 프레임 사이에 이미지 객체의 동작 패턴을 의미한다.&lt;br /&gt;
&lt;br /&gt;
● 이미지 객체의 움직임 패턴은 객체 자체가 움직이거나 카메라의 움직임으로 인해 생성되는데 이전 프레임이랑 다음 프레임 중 변하는 부분의 움직임을 추적&lt;br /&gt;
&lt;br /&gt;
● 보통 움직임을 통한 구조 분석, 비디오 압축, 영상이 흔들렸거나 블러가 된 경우 깨끗한 영상으로 처리하는 기술인 Video Stabilization 분야에 사용된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lucas-Kanade&lt;br /&gt;
&lt;br /&gt;
● Optical Flow알고리즘에는 다양한 알고리즘이 있으나  Lucas-Kanade방법을 이용하기로 한다.&lt;br /&gt;
&lt;br /&gt;
● 한 프레임의 각 피셀 윈도우를 설정하고 다음 프레임에서 이 윈도우와 가장 잘 매칭되는 곳을 찾는 원리로 작동한다.&lt;br /&gt;
&lt;br /&gt;
● 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적다는 장점이 있다.&lt;br /&gt;
&lt;br /&gt;
● 좁은 지역의 윈도우를 사용하기 때문에 이 윈도우보다 큰 움직임이 발생하였을 경우 움직임을 계산하지 못하며 특징점을 사용하여 optical flow를 얻기 때문에 dense optical flow에 비하여 정확도가 낮은 편이다.&lt;br /&gt;
&lt;br /&gt;
● 윈도우를 벗어나는 큰 움직임을 계산하지 못하는 단점을 개선하기 위해 Pyramids Lucas-Kanade 방법을 사용할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 Lucas-Kanade에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
===관련 기술의 현황===&lt;br /&gt;
====관련 기술의 현황 및 분석(State of art)====&lt;br /&gt;
*전 세계적인 기술현황&lt;br /&gt;
&lt;br /&gt;
◇ 페이스웨어 Live&lt;br /&gt;
&lt;br /&gt;
마커리스 3D 페이셜 모션 캡처 솔루션 제공을 선도하는 페이스웨어 테크놀러지(Faceware Technologies, 이하 페이스웨어)가  23일 향상된 실시간 얼굴 모션캡처와 애니메이션 제품인 페이스웨어 라이브(Faceware Live) 2.5 버전을 발표했다. 페이스웨어 라이브는 실시간으로 사용자 얼굴을 자동 추적하고, 얼굴의 움직임을 페이셜 모델에 즉각 적용시킨 페이셜 애니메이션을 생성한다. 페이스웨어 라이브는 움직임 트래킹을 위해 단 하나의 카메라를 사용하며,  컴퓨터에 연결된 비디오나 웹캠, 페이스웨어 GoPro, Pro HD 헤드캠 시스템, 그밖에 다른 비디오 캡처 장비들을 카메라로 사용할 수 있다. 페이스웨어 라이브 2.5는 디지털캐릭터와 결합된 라이브 공연, 즉 디지털 캐릭터들이 관객이나 사람들과 라이브로 인터랙션이 가능한 실시간 인형극이나  테마파크, 쇼핑몰 내부의 키오스크 스크린 상에서 실시간 상호작용 디지털 캐릭터로 활용될 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:2.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 삼성 갤럭시S9의 AR 이모지&lt;br /&gt;
&lt;br /&gt;
카메라로 촬영한 인물 사진을 기반으로 아바타를 만들 수 있는 기능이다. AR 이모지를 만들면 18개 다양한 감정을 표현할 수 있는 gif 이모티콘이 추가되어 메세지, SNS 등에서 이용 가능하다. 눈, 코, 입, 뺨, 이마 등 100개 이상의 얼굴 특징점을 인식 및 분석해 피사체의 표정을 실시간으로 따라해서 동영상으로 촬영할 수 있다. 이외에도 안경을 착용하거나 피부 색깔, 헤어스타일, 헤어컬러, 의상 등을 변경할 수 있다. 하지만 세밀하지 못한 인물 묘사 방식에 논란이 있었다.&lt;br /&gt;
&lt;br /&gt;
[[파일:3.jpg]]&lt;br /&gt;
[[파일:4.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 애플 iOS11, iOS12의 애니모티콘, 미모지&lt;br /&gt;
&lt;br /&gt;
애플 사의 애니모티콘(애니모지)은 전면 카메라로 촬영한 인물사진을 기반으로 사용자의 표정을 읽은 후, 기존에 있던 이모지에 투사하여 이모티콘을 만들 수 있는 기능이다. 사용자의 얼굴에 3만개 이상의 도트를 투사해 얼굴 맵을 만든 후, 3D 스캔 활용을 통해 50개 이상의 각기 다른 근육의 움직임을 포착하고 분석한다. 분석한 세밀한 표정을 외계인, 고양이, 닭, 개, 여우, 원숭이, 판다. 돼지, 곰돌이, 토끼, 로봇, 유니콘 등 내장된 12개의 애니모티콘에 투영시킨다. 하지만 최근 iOS12의 기능으로 애니모티콘의 개인화 버전인 미모지(memoji)가 발표되었는데, 한정된 캐릭터의 폭을 늘리고 얼굴, 머리, 장신구를 자신의 취향에 맞게 선택할 수 있다. 생성한 애니모티콘을 편집할 수 있으며 아이폰의 메시지 앱에서 이용할 수 있다. 또한 목소리를 녹음하여 오디오가 포함된 비디오 형태로 수신할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:5.jpg]]&lt;br /&gt;
[[파일:6.jpg]]&lt;br /&gt;
&lt;br /&gt;
*특허조사 및 특허 전략 분석&lt;br /&gt;
&lt;br /&gt;
◇ SIFT(Scale Invariant Feature Transform) 알고리즘&lt;br /&gt;
&lt;br /&gt;
● Lowe David G 교수가 개발하였으며 97년도부터 연구하여 프로토 타입의 SIFT알고리즘을 99년도에 발표하였고, 04년도에는 이 알고리즘을 더욱 개량하여 완성된 SIFT알고리즘을 만들게 되었다.&lt;br /&gt;
&lt;br /&gt;
● 영상의 크기와 회전에 불변하는 특징점을 추출하는 알고리즘이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:7.jpg]]&lt;br /&gt;
&lt;br /&gt;
1) Scale-space extrema detection &lt;br /&gt;
&lt;br /&gt;
● Gaussian Pyramid를 생성 한 후 DoG(Difference of Gaussian)을 구해서 극점인 부분을 특징점 후보자로 잡아 준다.&lt;br /&gt;
&lt;br /&gt;
● DoG의 상위와 하위 층까지 모두 합쳐 주변 26개 보다 크거나 모두 작을 때만 특징점 후보자로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이 방법은 특징점을 Scale별로 구하게 되어 Target 물체가 작아져도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:8.jpg]]&lt;br /&gt;
&lt;br /&gt;
2) KeyPoint Localization &lt;br /&gt;
&lt;br /&gt;
● 테일러 급수를 사용하여 더 정확한 극점을 찾은 뒤 테일러 급수로 interpolation하여 그 점의 값을 구하여 특징점 후보자 중에서 정확하지 않는 특징점을 제거한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Orientation Assignment &lt;br /&gt;
&lt;br /&gt;
● 추출된 특징점마다 주 방향을 할당해 주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● 특징점 주변으로 16x16영역을 할당한 후 그 영역 이미지를 Gaussian Blurring을 적용하면 특징점 주변의 영역에 대한 Gradient의 방향과 크기를 결정하게 된다.&lt;br /&gt;
&lt;br /&gt;
● Gradient의 방향과 크기를 구하면 Orientation Histogram을 형성한 후, 가장 값이 큰 것을 해당 Orientation으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
● 회전에 대한 정보가 들어 있기 때문에 물체가 회전해도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
4) KeyPoint Descriptor&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 마다 서술자를 생성해주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● Gaussian Weight Function을 활용하여 서술자를 생성하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 주변으로 16x16의 pixel 영역을 할당하여 아래의 &amp;lt;그림 14&amp;gt;과 같이 Image Gradients를 구한다. 그 후, 서술자 Window 크기의 반값을 Gaussian Weighted function에 곱해주게 된다.&lt;br /&gt;
&lt;br /&gt;
[[파일:9.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 다음으로 히스토그램을 그려주게 되는데 그 전에 먼저 앞에서 구한 Orientation을 빼줘서 Descriptor가 회전에 불변하도록 만들어 준다.&lt;br /&gt;
&lt;br /&gt;
● 객체인식을 할 때는 DB의 각 특징점의 Descriptor를 가지고, 인식할 물체 영상의 Descriptor와 비교하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이때 비슷하면 데이터가 비슷하게 나올 텐데 여기서 사용하는 방법은 유클리드 거리이다.&lt;br /&gt;
● 유클리드 거리의 방식은 연산식이 간단하여 많은 특징점 데이터를 비교하는데 속도면에서 성능이 좋아 많이 사용되는 방식이다. &lt;br /&gt;
&lt;br /&gt;
● 매칭 단계까지 수행되면 DB의 특징점들과 Target의 특징점들 중 매칭된 특징점들이 추출되어 원하는 물체가 어디에 위치하는지 알 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:10.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇SURF&lt;br /&gt;
&lt;br /&gt;
● 알고리즘 순서도 : 특징점 추출 → 주 방향 결정 → descriptor 생성&lt;br /&gt;
&lt;br /&gt;
1) 특징점 추출&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● 수식을 이용하여 적분 영상을 생성한다.&lt;br /&gt;
&lt;br /&gt;
● 적분 영상이란 픽셀 밝기 값을 누적한 형태를 뜻함&lt;br /&gt;
&lt;br /&gt;
● D영역의 밝기 누적 값을 알고 싶다면 ii(4)+ii(1)-ii(2)-ii(3)식을 이용하여 쉽게 D영역의 밝기 누적값을 구할 수 있다.&lt;br /&gt;
&lt;br /&gt;
● 적분영상을 만든 후 헤이시안(Hessian)검출기를 사용하여 특징점을 검출한다. (헤이시안 검출기는 헤이시안 행렬 기반인 특징점 검출 알고리즘으로써 정확성이 높고 행렬식이 최대값인 위치에서 blob을 검출 할 때 사용하게 된다)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● SURF에서는 Hessian_Laplace Detector를 사용하는 대신에 위의 공식대로 FAST Hessian Detector 을 사용하여 수행성능을 향상시킨다.&lt;br /&gt;
&lt;br /&gt;
2) Dxx, Dyy, Dxy박스 필터를 구하는 방법&lt;br /&gt;
&lt;br /&gt;
● Haar Wavelet을 이용 - Dxx와 Dyy를 구할 때는 검은 영역부분을 -2, 흰영역부분은 1을 곱하여 구하고 Dxy는 검은 영역을 -1, 흰영역을 1을 곱하여 구한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) 9x9 박스필터를 이용한 Dxx, Dyy, Dxy를 구하는 방식&lt;br /&gt;
&lt;br /&gt;
● Hessian Determinant 데이터를 이용하여 각 필터 사이즈 별로 특징점을 검출하게 된다. 필터 사이즈란 위의 Dxx, Dyy, Dxy를 구하는 박스필터 영역 사이즈를 의미한다. SURF에서는 박스 필터 영역을 Scale해서 특징점을 추출해 aliasing 이 없는 장점을 가지고 있다.  Hessian Determinant 데이터를 각 픽셀마다 구했으면 각각의 Threshold와 비교하게 된다. &lt;br /&gt;
&lt;br /&gt;
● Threshold보다 값이 크면, 인접한 8개의 픽셀의 Hessian Determinant를 비교하여 큰 값인지 비교하게 된다. 만약 큰 값이면 상하 박스 필터 사이즈의 3x3크기의 각 9개의 Hessina Determinant를 비교하여 가장 클 경우 특징점으로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) 주 방향 결정&lt;br /&gt;
&lt;br /&gt;
● 특징점 중심으로 특징점이 검출된 스케일 정보 s를 이용하여 반지름이 6s의 원 안의 픽셀들에 대하여 x방향과 y방향으로 Haar Wavelet Response인 dx와 dy를 구하게 된다. 윈도우 5도 간격으로 회전하면서 60도 윈도우 내의 벡터의 크기를 더해 가장 큰 크기를 가지는 방향을 특징점의 주 방향으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
5) descriptor 생성&lt;br /&gt;
&lt;br /&gt;
● descriptor는 특징점 주변의 일정한 영역 내에 이웃하고 있는 픽셀의 밝기 변화를 나타낸다.&lt;br /&gt;
&lt;br /&gt;
[[파일:11.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 주 방향과 scale정보 s를 이용하여 특징점 중심으로 20s크기의 윈도우를 위의 그림처럼 구성하고, 구성된 윈도우를 4X4 영역으로 분할하여 16개의 영역으로 나눈다. 분할된 각 영역을 다시 한번 5X5크기로 분할하여 각 픽셀을 haar wavelet filter를 사용하여 각 를 구하여 16개의 영역에 각 위의 4개의 Descriptor를 생성하여 총 64개의 Descriptor를 생성할 수 있게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*기술 로드맵&lt;br /&gt;
&lt;br /&gt;
[[파일:12.jpg]]&lt;br /&gt;
&lt;br /&gt;
====시장상황에 대한 분석====&lt;br /&gt;
&lt;br /&gt;
*경쟁제품 조사 비교&lt;br /&gt;
&lt;br /&gt;
◇ Avatar SDK&lt;br /&gt;
&lt;br /&gt;
하나의 2D 정면 얼굴 사진을 입력하면 3D 아바타 생성 SDK를 사용하여 개인의 아바타를 만들어준다. 딥러닝과 컴퓨터 그래픽 기술을 이용하여 개발하였고, 현재 cloud나 PC, Mac, Android, iOS 환경 모두 이용 가능하다. 아바타로의 변환에는 사진마다 차이가 있지만 약 10초가 소요된다. 만들어진 아바타는 Blendshape, 헤어스타일, 헤어컬러를 변경할 수 있고, 윙크, 웃음, 하품 등 몇몇 특정 표정 변화가 가능하다. 그림은 Avatar SDK를 이용하여 왼쪽 상단의 사진을 입력으로 아바타를 생성한 사진이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:13.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ Mirror AI&lt;br /&gt;
&lt;br /&gt;
스마트폰으로 한장의 셀프 사진을 찍으면, 이를 바탕으로 자신의 모습을 한 몇 백개의 이모지를 생성하여 메신저에서 사용할 수 있는 키보드 어플리케이션이다. 현재 다양한 언어를 지원하고, iOS 10.0 버전 이상만 사용할 수 있다. 학습한 모델을 통해 사람의 얼굴 특징을 식별하고, 이에 맞게 수초 내에 사람의 얼굴 특징을 추려내어 이모티콘을 만든다. 생성된 이모티콘은 이 키보드 어플리케이션을 사용하여 어떤 메신저에서든 사용할 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:14.jpg]]&lt;br /&gt;
&lt;br /&gt;
*마케팅 전략 제시&lt;br /&gt;
&lt;br /&gt;
[[파일:15.jpg]]&lt;br /&gt;
&lt;br /&gt;
===개발과제의 기대효과===&lt;br /&gt;
====기술적 기대효과====&lt;br /&gt;
&lt;br /&gt;
◇ 영화 촬영시 기존에는 모션 센서들을 부착하여 배우들의 표정을 읽어와 캐릭터의 표정과 매핑시켜 부착하는데까지 시간이 오래 걸렸고 많은 기술들이 필요되었는데 만약 이 프로젝트가 성공하게 될 경우, 배우가 표정을 짓는 것만으로 쉽게 캐릭터에 매핑될 수 있도록 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자기가 원하는 캐릭터나 다른 인물 모습의 자신과 같은 표정을 짓는 영상을 만들 수 있을 것이다.&lt;br /&gt;
&lt;br /&gt;
====경제적, 사회적 기대 및 파급효과====&lt;br /&gt;
&lt;br /&gt;
◇ 기존에 영화 촬영시 모션 캡쳐에 필요했던 장비들이 없어도 원하는 캐릭터의 표정을 구현할 수 있어 제작비 절감의 효과가 기대된다. &lt;br /&gt;
&lt;br /&gt;
◇ 현재 실존하지 않는 배우의 모습에 표정을 매핑하여 실제로 연기하는 것처럼 보이게 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자신의 표정을 다른 캐릭터로 매핑함으로써 원래 영상보다 감정 표현을 훨씬 극대화할 수 있다.&lt;br /&gt;
&lt;br /&gt;
===기술개발 일정 및 추진체계===&lt;br /&gt;
====개발 일정====&lt;br /&gt;
&lt;br /&gt;
[[파일:16.jpg]]&lt;br /&gt;
&lt;br /&gt;
====구성원 및 추진체계====&lt;br /&gt;
&lt;br /&gt;
◇ 전ㅇㅇ(팀장) &lt;br /&gt;
&lt;br /&gt;
● SURF를 이용하여 얼굴 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원)&lt;br /&gt;
&lt;br /&gt;
● TwinGAN을 이용하여 모델링 및 검증을 진행한다.&lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원) &lt;br /&gt;
&lt;br /&gt;
● Facial Expression Research Group Database인 FREG-DG를 수집한다.&lt;br /&gt;
&lt;br /&gt;
◇ 전원&lt;br /&gt;
&lt;br /&gt;
● Digital Actor의 세부 영역인 표정을 인식하고 그 표정을 제어할 수 있는 두 가지 영역을 포함할 수 있는 주제를 선정한다.&lt;br /&gt;
● 필요한 알고리즘, 데이터 셋 등을 조사 후 개발에 대비한다.&lt;br /&gt;
● Optical Flow를 이용하여 벡터 움직임을 추적한 뒤 TwinGAN 결과로 나온 캐릭터에 대입한다.&lt;br /&gt;
&lt;br /&gt;
==설계==&lt;br /&gt;
===설계사양===&lt;br /&gt;
====제품의 요구사항====&lt;br /&gt;
내용&lt;br /&gt;
====설계 사양====&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===개념설계안===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 동영상을 ‘Free Video to JPG Converter’를 이용하여 동영상에서 사진을 원하는 프레임 수를 지정하여 JPG파일을 추출한다. &lt;br /&gt;
&lt;br /&gt;
◇ 추출한 JPG파일에 SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)는 대표적인 특징점 추출 알고리즘으로 2차원 영상의 일정 지역에 해당하는 화소를 이용하여 특징점을 추출한다. OpenCV에서 제공하는 함수를 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow 알고리즘을 이용하여 이전 프레임이랑 다음 프레임, 두 개의 연속된 얼굴 프레임 사이에 동작 패턴을 추적한다. Optical Flow 알고리즘 중 Lucas-Kanade(LK)는 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적어 비교적 속도가 빠르기 때문에 Lucas-Kanade를 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ TwinGAN을 이용하여 사람의 얼굴 사진을 캐릭터로 변환한다.&lt;br /&gt;
&lt;br /&gt;
GAN(Generative Adversarial Network)은 상반되는 목적을 가진 두 모듈(판별망, 생성망)이 대결하는 구조를 통해 이미지 생성을 학습하는 이미지 생성 기술의 한 종류이다. 기존 GAN의 단점을 보완하고 paired data가 아닌 unpaired data를 사용했을 때 도메인 간의 매끄러운 변환을 이끌어낼 수 있는 TwinGAN을 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ 추적한 특징점의 벡터를 각 프레임 아바타에 적용한다.&lt;br /&gt;
&lt;br /&gt;
◇ 위 방법이 어려울 경우 TwinGAN으로 각 프레임의 얼굴 이미지를 아바타로 변환하고, 변환한 아바타 사진을 연결하여 gif파일로 만든다. 마찬가지로 사람의 표정 변화를 캐릭터가 똑같이 따라할 수 있도록 한다.&lt;br /&gt;
&lt;br /&gt;
===이론적 계산 및 시뮬레이션===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상 입력 -&amp;gt; 표정을 따라하는 캐릭터 영상 출력&lt;br /&gt;
&lt;br /&gt;
===소프트웨어 설계===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;전체 설계도&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. ‘Free Video to JPG Converter’를 이용하여 동영상을 여러 프레임의 사진으로 전환한다. &lt;br /&gt;
2. 각각의 사진들로부터 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
3. 특징점들의 변화를 이용하여 Optical Flow를 이용하여 특징점의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
4. 1번의 결과 추출된 여러 사진들 중 첫 번째 사진을 TwinGAN을 이용하여 캐릭터로 변환 후 변환된 캐릭터의 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
5. 3번에서 추적한 Optical Flow를 4번에 적용하여 gif파일로 변환한다.&lt;br /&gt;
&lt;br /&gt;
==결과 및 평가==&lt;br /&gt;
===완료 작품의 소개===&lt;br /&gt;
====프로토타입 사진 혹은 작동 장면====&lt;br /&gt;
내용&lt;br /&gt;
====포스터====&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===관련사업비 내역서===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===완료작품의 평가===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===향후계획===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===특허 출원 내용===&lt;br /&gt;
내용&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=1005</id>
		<title>DnA(Digital and Actor)조</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=1005"/>
				<updated>2018-12-25T17:50:50Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: /* 관련 기술의 현황 및 분석(State of art) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==프로젝트 개요==&lt;br /&gt;
=== 기술개발 과제 ===&lt;br /&gt;
''' 국문 : ''' 디지털 액터 : 얼굴 표정과 표현&lt;br /&gt;
&lt;br /&gt;
''' 영문 : ''' Digital Actor : facial expression, emotion&lt;br /&gt;
&lt;br /&gt;
===과제 팀명===&lt;br /&gt;
DnA (Digital and Actor)&lt;br /&gt;
&lt;br /&gt;
===지도교수===&lt;br /&gt;
홍의경 교수님&lt;br /&gt;
&lt;br /&gt;
===개발기간===&lt;br /&gt;
2018년 9월 ~ 2018년 12월 (총 4개월)&lt;br /&gt;
&lt;br /&gt;
===구성원 소개===&lt;br /&gt;
서울시립대학교 통계학과 20xxxxx0xx 전ㅇㅇ(팀장)&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
==서론==&lt;br /&gt;
===개발 과제의 개요===&lt;br /&gt;
====개발 과제 요약====&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상에서 프레임을 추출하여 각 얼굴 사진의 특징점을 인식하고 Optical Flow 알고리즘을 이용하여 특징점의 움직임을 추적한다. 추적한 특징점의 벡터를 아바타에 적용하여 동영상에서 사람의 표정 변화를 캐릭터가 따라하도록 만든다. 아바타 사진을 연결하여 gif파일로 만들어 마찬가지로 사람의 표정 변화를 캐릭터가 똑같이 따라할 수 있도록 한다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 배경 및 효과====&lt;br /&gt;
◇ 디지털 액터(Digital Actor)란 실제 배우와 동일한 수준의 외형과 동작을 구현할 수 있는 컴퓨터 그래픽(DG) 영상 캐릭터를 의미한다. 킹콩, 요다 등의 실존 인물이 아닌 캐릭터를 만들거나 현실에서 불가능한 장면을 연출하는 등 영상 특수효과, 3D 애니메이션, 게임, VR과 같은 곳에 사용된다. &lt;br /&gt;
&lt;br /&gt;
◇ 모션캡쳐 장비는 현실적인 움직임으로 퀄리티 높은 영상을 보여줄 수 있지만 상당히 고가의 물건이다. 사람의 얼굴 표정을 학습하여 자연스럽게 아바타로 옮길 수 있다면 높은 CG처리 비용을 줄일 수 있을 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
◇ 현재 국내 VR과 AR의 국내 시장의 규모가 점점 넓어지고 있으며 관련 업계에 따르면 그 사장 규모는 2020년 지금의 4~5배 수준으로 성장할 전망이라고 한다. 더딘 기술 진행속도로 인해 개발 속도도 느리지만 기술이 발전할수록 그 성장 속도가 급격히 증가할 것으로 예상되기 때문에 그 속도를 맞추기 위해서는 미리 개발을 준비하는 등의 행동이 필요하다. 이에 관련 기술을 직접 구현해봄으로써 미래의 VR/AR 산업에 보탬이 될 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 목표 및 내용====&lt;br /&gt;
◇ SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)&lt;br /&gt;
&lt;br /&gt;
● 대표적인 특징점 추출 알고리즘&lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘(interest point extraction algorithm)은 2차원 영상의 일정 지역에 해당하는 화소를 이용하여, 영상의 특징이 될 수 있는 특징점을 추출하는 알고리즘이다. 이때 특징점은 코너(corner) 및 블랍(blob)을 의미한다. &lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘에는 SIFT(Scale Invariant Feature Transform), PCA 등 다른 방법도 있지만 인식률과 처리 속도면에서 더 우수한 SURF 알고리즘을 사용한다.&lt;br /&gt;
&lt;br /&gt;
● 블러이미지나 회전된 이미지는 잘 인식하는 장점이 있는 반면 뷰포인트나 조명이 달라지면 특징점을 잘 잡아내지 못하는 단점이 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 SURF에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow&lt;br /&gt;
&lt;br /&gt;
● 두 개의 연속된 비디오 프레임 사이에 이미지 객체의 동작 패턴을 의미한다.&lt;br /&gt;
&lt;br /&gt;
● 이미지 객체의 움직임 패턴은 객체 자체가 움직이거나 카메라의 움직임으로 인해 생성되는데 이전 프레임이랑 다음 프레임 중 변하는 부분의 움직임을 추적&lt;br /&gt;
&lt;br /&gt;
● 보통 움직임을 통한 구조 분석, 비디오 압축, 영상이 흔들렸거나 블러가 된 경우 깨끗한 영상으로 처리하는 기술인 Video Stabilization 분야에 사용된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lucas-Kanade&lt;br /&gt;
&lt;br /&gt;
● Optical Flow알고리즘에는 다양한 알고리즘이 있으나  Lucas-Kanade방법을 이용하기로 한다.&lt;br /&gt;
&lt;br /&gt;
● 한 프레임의 각 피셀 윈도우를 설정하고 다음 프레임에서 이 윈도우와 가장 잘 매칭되는 곳을 찾는 원리로 작동한다.&lt;br /&gt;
&lt;br /&gt;
● 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적다는 장점이 있다.&lt;br /&gt;
&lt;br /&gt;
● 좁은 지역의 윈도우를 사용하기 때문에 이 윈도우보다 큰 움직임이 발생하였을 경우 움직임을 계산하지 못하며 특징점을 사용하여 optical flow를 얻기 때문에 dense optical flow에 비하여 정확도가 낮은 편이다.&lt;br /&gt;
&lt;br /&gt;
● 윈도우를 벗어나는 큰 움직임을 계산하지 못하는 단점을 개선하기 위해 Pyramids Lucas-Kanade 방법을 사용할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 Lucas-Kanade에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
===관련 기술의 현황===&lt;br /&gt;
====관련 기술의 현황 및 분석(State of art)====&lt;br /&gt;
*전 세계적인 기술현황&lt;br /&gt;
&lt;br /&gt;
◇ 페이스웨어 Live&lt;br /&gt;
&lt;br /&gt;
마커리스 3D 페이셜 모션 캡처 솔루션 제공을 선도하는 페이스웨어 테크놀러지(Faceware Technologies, 이하 페이스웨어)가  23일 향상된 실시간 얼굴 모션캡처와 애니메이션 제품인 페이스웨어 라이브(Faceware Live) 2.5 버전을 발표했다. 페이스웨어 라이브는 실시간으로 사용자 얼굴을 자동 추적하고, 얼굴의 움직임을 페이셜 모델에 즉각 적용시킨 페이셜 애니메이션을 생성한다. 페이스웨어 라이브는 움직임 트래킹을 위해 단 하나의 카메라를 사용하며,  컴퓨터에 연결된 비디오나 웹캠, 페이스웨어 GoPro, Pro HD 헤드캠 시스템, 그밖에 다른 비디오 캡처 장비들을 카메라로 사용할 수 있다. 페이스웨어 라이브 2.5는 디지털캐릭터와 결합된 라이브 공연, 즉 디지털 캐릭터들이 관객이나 사람들과 라이브로 인터랙션이 가능한 실시간 인형극이나  테마파크, 쇼핑몰 내부의 키오스크 스크린 상에서 실시간 상호작용 디지털 캐릭터로 활용될 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:2.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 삼성 갤럭시S9의 AR 이모지&lt;br /&gt;
&lt;br /&gt;
카메라로 촬영한 인물 사진을 기반으로 아바타를 만들 수 있는 기능이다. AR 이모지를 만들면 18개 다양한 감정을 표현할 수 있는 gif 이모티콘이 추가되어 메세지, SNS 등에서 이용 가능하다. 눈, 코, 입, 뺨, 이마 등 100개 이상의 얼굴 특징점을 인식 및 분석해 피사체의 표정을 실시간으로 따라해서 동영상으로 촬영할 수 있다. 이외에도 안경을 착용하거나 피부 색깔, 헤어스타일, 헤어컬러, 의상 등을 변경할 수 있다. 하지만 세밀하지 못한 인물 묘사 방식에 논란이 있었다.&lt;br /&gt;
&lt;br /&gt;
[[파일:3.jpg]]&lt;br /&gt;
[[파일:4.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 애플 iOS11, iOS12의 애니모티콘, 미모지&lt;br /&gt;
&lt;br /&gt;
애플 사의 애니모티콘(애니모지)은 전면 카메라로 촬영한 인물사진을 기반으로 사용자의 표정을 읽은 후, 기존에 있던 이모지에 투사하여 이모티콘을 만들 수 있는 기능이다. 사용자의 얼굴에 3만개 이상의 도트를 투사해 얼굴 맵을 만든 후, 3D 스캔 활용을 통해 50개 이상의 각기 다른 근육의 움직임을 포착하고 분석한다. 분석한 세밀한 표정을 외계인, 고양이, 닭, 개, 여우, 원숭이, 판다. 돼지, 곰돌이, 토끼, 로봇, 유니콘 등 내장된 12개의 애니모티콘에 투영시킨다. 하지만 최근 iOS12의 기능으로 애니모티콘의 개인화 버전인 미모지(memoji)가 발표되었는데, 한정된 캐릭터의 폭을 늘리고 얼굴, 머리, 장신구를 자신의 취향에 맞게 선택할 수 있다. 생성한 애니모티콘을 편집할 수 있으며 아이폰의 메시지 앱에서 이용할 수 있다. 또한 목소리를 녹음하여 오디오가 포함된 비디오 형태로 수신할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:5.jpg]]&lt;br /&gt;
[[파일:6.jpg]]&lt;br /&gt;
&lt;br /&gt;
*특허조사 및 특허 전략 분석&lt;br /&gt;
&lt;br /&gt;
◇ SIFT(Scale Invariant Feature Transform) 알고리즘&lt;br /&gt;
&lt;br /&gt;
● Lowe David G 교수가 개발하였으며 97년도부터 연구하여 프로토 타입의 SIFT알고리즘을 99년도에 발표하였고, 04년도에는 이 알고리즘을 더욱 개량하여 완성된 SIFT알고리즘을 만들게 되었다.&lt;br /&gt;
&lt;br /&gt;
● 영상의 크기와 회전에 불변하는 특징점을 추출하는 알고리즘이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:7.jpg]]&lt;br /&gt;
&lt;br /&gt;
1) Scale-space extrema detection &lt;br /&gt;
&lt;br /&gt;
● Gaussian Pyramid를 생성 한 후 DoG(Difference of Gaussian)을 구해서 극점인 부분을 특징점 후보자로 잡아 준다.&lt;br /&gt;
&lt;br /&gt;
● DoG의 상위와 하위 층까지 모두 합쳐 주변 26개 보다 크거나 모두 작을 때만 특징점 후보자로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이 방법은 특징점을 Scale별로 구하게 되어 Target 물체가 작아져도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:8.jpg]]&lt;br /&gt;
&lt;br /&gt;
2) KeyPoint Localization &lt;br /&gt;
&lt;br /&gt;
● 테일러 급수를 사용하여 더 정확한 극점을 찾은 뒤 테일러 급수로 interpolation하여 그 점의 값을 구하여 특징점 후보자 중에서 정확하지 않는 특징점을 제거한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Orientation Assignment &lt;br /&gt;
&lt;br /&gt;
● 추출된 특징점마다 주 방향을 할당해 주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● 특징점 주변으로 16x16영역을 할당한 후 그 영역 이미지를 Gaussian Blurring을 적용하면 특징점 주변의 영역에 대한 Gradient의 방향과 크기를 결정하게 된다.&lt;br /&gt;
&lt;br /&gt;
● Gradient의 방향과 크기를 구하면 Orientation Histogram을 형성한 후, 가장 값이 큰 것을 해당 Orientation으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
● 회전에 대한 정보가 들어 있기 때문에 물체가 회전해도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
4) KeyPoint Descriptor&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 마다 서술자를 생성해주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● Gaussian Weight Function을 활용하여 서술자를 생성하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 주변으로 16x16의 pixel 영역을 할당하여 아래의 &amp;lt;그림 14&amp;gt;과 같이 Image Gradients를 구한다. 그 후, 서술자 Window 크기의 반값을 Gaussian Weighted function에 곱해주게 된다.&lt;br /&gt;
&lt;br /&gt;
[[파일:9.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 다음으로 히스토그램을 그려주게 되는데 그 전에 먼저 앞에서 구한 Orientation을 빼줘서 Descriptor가 회전에 불변하도록 만들어 준다.&lt;br /&gt;
&lt;br /&gt;
● 객체인식을 할 때는 DB의 각 특징점의 Descriptor를 가지고, 인식할 물체 영상의 Descriptor와 비교하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이때 비슷하면 데이터가 비슷하게 나올 텐데 여기서 사용하는 방법은 유클리드 거리이다.&lt;br /&gt;
● 유클리드 거리의 방식은 연산식이 간단하여 많은 특징점 데이터를 비교하는데 속도면에서 성능이 좋아 많이 사용되는 방식이다. &lt;br /&gt;
&lt;br /&gt;
● 매칭 단계까지 수행되면 DB의 특징점들과 Target의 특징점들 중 매칭된 특징점들이 추출되어 원하는 물체가 어디에 위치하는지 알 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:10.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇SURF&lt;br /&gt;
&lt;br /&gt;
● 알고리즘 순서도 : 특징점 추출 → 주 방향 결정 → descriptor 생성&lt;br /&gt;
&lt;br /&gt;
1) 특징점 추출&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● 수식을 이용하여 적분 영상을 생성한다.&lt;br /&gt;
&lt;br /&gt;
● 적분 영상이란 픽셀 밝기 값을 누적한 형태를 뜻함&lt;br /&gt;
&lt;br /&gt;
● D영역의 밝기 누적 값을 알고 싶다면 ii(4)+ii(1)-ii(2)-ii(3)식을 이용하여 쉽게 D영역의 밝기 누적값을 구할 수 있다.&lt;br /&gt;
&lt;br /&gt;
● 적분영상을 만든 후 헤이시안(Hessian)검출기를 사용하여 특징점을 검출한다. (헤이시안 검출기는 헤이시안 행렬 기반인 특징점 검출 알고리즘으로써 정확성이 높고 행렬식이 최대값인 위치에서 blob을 검출 할 때 사용하게 된다)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● SURF에서는 Hessian_Laplace Detector를 사용하는 대신에 위의 공식대로 FAST Hessian Detector 을 사용하여 수행성능을 향상시킨다.&lt;br /&gt;
&lt;br /&gt;
2) Dxx, Dyy, Dxy박스 필터를 구하는 방법&lt;br /&gt;
&lt;br /&gt;
● Haar Wavelet을 이용 - Dxx와 Dyy를 구할 때는 검은 영역부분을 -2, 흰영역부분은 1을 곱하여 구하고 Dxy는 검은 영역을 -1, 흰영역을 1을 곱하여 구한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) 9x9 박스필터를 이용한 Dxx, Dyy, Dxy를 구하는 방식&lt;br /&gt;
&lt;br /&gt;
● Hessian Determinant 데이터를 이용하여 각 필터 사이즈 별로 특징점을 검출하게 된다. 필터 사이즈란 위의 Dxx, Dyy, Dxy를 구하는 박스필터 영역 사이즈를 의미한다. SURF에서는 박스 필터 영역을 Scale해서 특징점을 추출해 aliasing 이 없는 장점을 가지고 있다.  Hessian Determinant 데이터를 각 픽셀마다 구했으면 각각의 Threshold와 비교하게 된다. &lt;br /&gt;
&lt;br /&gt;
● Threshold보다 값이 크면, 인접한 8개의 픽셀의 Hessian Determinant를 비교하여 큰 값인지 비교하게 된다. 만약 큰 값이면 상하 박스 필터 사이즈의 3x3크기의 각 9개의 Hessina Determinant를 비교하여 가장 클 경우 특징점으로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) 주 방향 결정&lt;br /&gt;
&lt;br /&gt;
● 특징점 중심으로 특징점이 검출된 스케일 정보 s를 이용하여 반지름이 6s의 원 안의 픽셀들에 대하여 x방향과 y방향으로 Haar Wavelet Response인 dx와 dy를 구하게 된다. 윈도우 5도 간격으로 회전하면서 60도 윈도우 내의 벡터의 크기를 더해 가장 큰 크기를 가지는 방향을 특징점의 주 방향으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
5) descriptor 생성&lt;br /&gt;
&lt;br /&gt;
● descriptor는 특징점 주변의 일정한 영역 내에 이웃하고 있는 픽셀의 밝기 변화를 나타낸다.&lt;br /&gt;
&lt;br /&gt;
[[파일:11.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 주 방향과 scale정보 s를 이용하여 특징점 중심으로 20s크기의 윈도우를 위의 그림처럼 구성하고, 구성된 윈도우를 4X4 영역으로 분할하여 16개의 영역으로 나눈다. 분할된 각 영역을 다시 한번 5X5크기로 분할하여 각 픽셀을 haar wavelet filter를 사용하여 각 를 구하여 16개의 영역에 각 위의 4개의 Descriptor를 생성하여 총 64개의 Descriptor를 생성할 수 있게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*기술 로드맵&lt;br /&gt;
&lt;br /&gt;
[[파일:12.jpg]]&lt;br /&gt;
&lt;br /&gt;
====시장상황에 대한 분석====&lt;br /&gt;
&lt;br /&gt;
*경쟁제품 조사 비교&lt;br /&gt;
&lt;br /&gt;
◇ Avatar SDK&lt;br /&gt;
&lt;br /&gt;
하나의 2D 정면 얼굴 사진을 입력하면 3D 아바타 생성 SDK를 사용하여 개인의 아바타를 만들어준다. 딥러닝과 컴퓨터 그래픽 기술을 이용하여 개발하였고, 현재 cloud나 PC, Mac, Android, iOS 환경 모두 이용 가능하다. 아바타로의 변환에는 사진마다 차이가 있지만 약 10초가 소요된다. 만들어진 아바타는 Blendshape, 헤어스타일, 헤어컬러를 변경할 수 있고, 윙크, 웃음, 하품 등 몇몇 특정 표정 변화가 가능하다. 그림은 Avatar SDK를 이용하여 왼쪽 상단의 사진을 입력으로 아바타를 생성한 사진이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:13.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ Mirror AI&lt;br /&gt;
&lt;br /&gt;
스마트폰으로 한장의 셀프 사진을 찍으면, 이를 바탕으로 자신의 모습을 한 몇 백개의 이모지를 생성하여 메신저에서 사용할 수 있는 키보드 어플리케이션이다. 현재 다양한 언어를 지원하고, iOS 10.0 버전 이상만 사용할 수 있다. 학습한 모델을 통해 사람의 얼굴 특징을 식별하고, 이에 맞게 수초 내에 사람의 얼굴 특징을 추려내어 이모티콘을 만든다. 생성된 이모티콘은 이 키보드 어플리케이션을 사용하여 어떤 메신저에서든 사용할 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:14.jpg]]&lt;br /&gt;
&lt;br /&gt;
*마케팅 전략 제시&lt;br /&gt;
&lt;br /&gt;
[[파일:15.jpg]]&lt;br /&gt;
&lt;br /&gt;
===개발과제의 기대효과===&lt;br /&gt;
====기술적 기대효과====&lt;br /&gt;
&lt;br /&gt;
◇ 영화 촬영시 기존에는 모션 센서들을 부착하여 배우들의 표정을 읽어와 캐릭터의 표정과 매핑시켜 부착하는데까지 시간이 오래 걸렸고 많은 기술들이 필요되었는데 만약 이 프로젝트가 성공하게 될 경우, 배우가 표정을 짓는 것만으로 쉽게 캐릭터에 매핑될 수 있도록 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자기가 원하는 캐릭터나 다른 인물 모습의 자신과 같은 표정을 짓는 영상을 만들 수 있을 것이다.&lt;br /&gt;
&lt;br /&gt;
====경제적, 사회적 기대 및 파급효과====&lt;br /&gt;
&lt;br /&gt;
◇ 기존에 영화 촬영시 모션 캡쳐에 필요했던 장비들이 없어도 원하는 캐릭터의 표정을 구현할 수 있어 제작비 절감의 효과가 기대된다. &lt;br /&gt;
&lt;br /&gt;
◇ 현재 실존하지 않는 배우의 모습에 표정을 매핑하여 실제로 연기하는 것처럼 보이게 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자신의 표정을 다른 캐릭터로 매핑함으로써 원래 영상보다 감정 표현을 훨씬 극대화할 수 있다.&lt;br /&gt;
&lt;br /&gt;
===기술개발 일정 및 추진체계===&lt;br /&gt;
====개발 일정====&lt;br /&gt;
&lt;br /&gt;
[[파일:16.jpg]]&lt;br /&gt;
&lt;br /&gt;
====구성원 및 추진체계====&lt;br /&gt;
&lt;br /&gt;
◇ 전ㅇㅇ(팀장) &lt;br /&gt;
&lt;br /&gt;
● &lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원)&lt;br /&gt;
&lt;br /&gt;
● &lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원) &lt;br /&gt;
&lt;br /&gt;
● &lt;br /&gt;
&lt;br /&gt;
◇ 전원&lt;br /&gt;
&lt;br /&gt;
●&lt;br /&gt;
&lt;br /&gt;
==설계==&lt;br /&gt;
===설계사양===&lt;br /&gt;
====제품의 요구사항====&lt;br /&gt;
내용&lt;br /&gt;
====설계 사양====&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===개념설계안===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 동영상을 ‘Free Video to JPG Converter’를 이용하여 동영상에서 사진을 원하는 프레임 수를 지정하여 JPG파일을 추출한다. &lt;br /&gt;
&lt;br /&gt;
◇ 추출한 JPG파일에 SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)는 대표적인 특징점 추출 알고리즘으로 2차원 영상의 일정 지역에 해당하는 화소를 이용하여 특징점을 추출한다. OpenCV에서 제공하는 함수를 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow 알고리즘을 이용하여 이전 프레임이랑 다음 프레임, 두 개의 연속된 얼굴 프레임 사이에 동작 패턴을 추적한다. Optical Flow 알고리즘 중 Lucas-Kanade(LK)는 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적어 비교적 속도가 빠르기 때문에 Lucas-Kanade를 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ TwinGAN을 이용하여 사람의 얼굴 사진을 캐릭터로 변환한다.&lt;br /&gt;
&lt;br /&gt;
GAN(Generative Adversarial Network)은 상반되는 목적을 가진 두 모듈(판별망, 생성망)이 대결하는 구조를 통해 이미지 생성을 학습하는 이미지 생성 기술의 한 종류이다. 기존 GAN의 단점을 보완하고 paired data가 아닌 unpaired data를 사용했을 때 도메인 간의 매끄러운 변환을 이끌어낼 수 있는 TwinGAN을 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ 추적한 특징점의 벡터를 각 프레임 아바타에 적용한다.&lt;br /&gt;
&lt;br /&gt;
◇ 위 방법이 어려울 경우 TwinGAN으로 각 프레임의 얼굴 이미지를 아바타로 변환하고, 변환한 아바타 사진을 연결하여 gif파일로 만든다. 마찬가지로 사람의 표정 변화를 캐릭터가 똑같이 따라할 수 있도록 한다.&lt;br /&gt;
&lt;br /&gt;
===이론적 계산 및 시뮬레이션===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상 입력 -&amp;gt; 표정을 따라하는 캐릭터 영상 출력&lt;br /&gt;
&lt;br /&gt;
===소프트웨어 설계===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;전체 설계도&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. ‘Free Video to JPG Converter’를 이용하여 동영상을 여러 프레임의 사진으로 전환한다. &lt;br /&gt;
2. 각각의 사진들로부터 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
3. 특징점들의 변화를 이용하여 Optical Flow를 이용하여 특징점의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
4. 1번의 결과 추출된 여러 사진들 중 첫 번째 사진을 TwinGAN을 이용하여 캐릭터로 변환 후 변환된 캐릭터의 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
5. 3번에서 추적한 Optical Flow를 4번에 적용하여 gif파일로 변환한다.&lt;br /&gt;
&lt;br /&gt;
==결과 및 평가==&lt;br /&gt;
===완료 작품의 소개===&lt;br /&gt;
====프로토타입 사진 혹은 작동 장면====&lt;br /&gt;
내용&lt;br /&gt;
====포스터====&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===관련사업비 내역서===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===완료작품의 평가===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===향후계획===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===특허 출원 내용===&lt;br /&gt;
내용&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=1004</id>
		<title>DnA(Digital and Actor)조</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=1004"/>
				<updated>2018-12-25T17:50:36Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: /* 관련 기술의 현황 및 분석(State of art) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==프로젝트 개요==&lt;br /&gt;
=== 기술개발 과제 ===&lt;br /&gt;
''' 국문 : ''' 디지털 액터 : 얼굴 표정과 표현&lt;br /&gt;
&lt;br /&gt;
''' 영문 : ''' Digital Actor : facial expression, emotion&lt;br /&gt;
&lt;br /&gt;
===과제 팀명===&lt;br /&gt;
DnA (Digital and Actor)&lt;br /&gt;
&lt;br /&gt;
===지도교수===&lt;br /&gt;
홍의경 교수님&lt;br /&gt;
&lt;br /&gt;
===개발기간===&lt;br /&gt;
2018년 9월 ~ 2018년 12월 (총 4개월)&lt;br /&gt;
&lt;br /&gt;
===구성원 소개===&lt;br /&gt;
서울시립대학교 통계학과 20xxxxx0xx 전ㅇㅇ(팀장)&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
==서론==&lt;br /&gt;
===개발 과제의 개요===&lt;br /&gt;
====개발 과제 요약====&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상에서 프레임을 추출하여 각 얼굴 사진의 특징점을 인식하고 Optical Flow 알고리즘을 이용하여 특징점의 움직임을 추적한다. 추적한 특징점의 벡터를 아바타에 적용하여 동영상에서 사람의 표정 변화를 캐릭터가 따라하도록 만든다. 아바타 사진을 연결하여 gif파일로 만들어 마찬가지로 사람의 표정 변화를 캐릭터가 똑같이 따라할 수 있도록 한다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 배경 및 효과====&lt;br /&gt;
◇ 디지털 액터(Digital Actor)란 실제 배우와 동일한 수준의 외형과 동작을 구현할 수 있는 컴퓨터 그래픽(DG) 영상 캐릭터를 의미한다. 킹콩, 요다 등의 실존 인물이 아닌 캐릭터를 만들거나 현실에서 불가능한 장면을 연출하는 등 영상 특수효과, 3D 애니메이션, 게임, VR과 같은 곳에 사용된다. &lt;br /&gt;
&lt;br /&gt;
◇ 모션캡쳐 장비는 현실적인 움직임으로 퀄리티 높은 영상을 보여줄 수 있지만 상당히 고가의 물건이다. 사람의 얼굴 표정을 학습하여 자연스럽게 아바타로 옮길 수 있다면 높은 CG처리 비용을 줄일 수 있을 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
◇ 현재 국내 VR과 AR의 국내 시장의 규모가 점점 넓어지고 있으며 관련 업계에 따르면 그 사장 규모는 2020년 지금의 4~5배 수준으로 성장할 전망이라고 한다. 더딘 기술 진행속도로 인해 개발 속도도 느리지만 기술이 발전할수록 그 성장 속도가 급격히 증가할 것으로 예상되기 때문에 그 속도를 맞추기 위해서는 미리 개발을 준비하는 등의 행동이 필요하다. 이에 관련 기술을 직접 구현해봄으로써 미래의 VR/AR 산업에 보탬이 될 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 목표 및 내용====&lt;br /&gt;
◇ SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)&lt;br /&gt;
&lt;br /&gt;
● 대표적인 특징점 추출 알고리즘&lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘(interest point extraction algorithm)은 2차원 영상의 일정 지역에 해당하는 화소를 이용하여, 영상의 특징이 될 수 있는 특징점을 추출하는 알고리즘이다. 이때 특징점은 코너(corner) 및 블랍(blob)을 의미한다. &lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘에는 SIFT(Scale Invariant Feature Transform), PCA 등 다른 방법도 있지만 인식률과 처리 속도면에서 더 우수한 SURF 알고리즘을 사용한다.&lt;br /&gt;
&lt;br /&gt;
● 블러이미지나 회전된 이미지는 잘 인식하는 장점이 있는 반면 뷰포인트나 조명이 달라지면 특징점을 잘 잡아내지 못하는 단점이 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 SURF에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow&lt;br /&gt;
&lt;br /&gt;
● 두 개의 연속된 비디오 프레임 사이에 이미지 객체의 동작 패턴을 의미한다.&lt;br /&gt;
&lt;br /&gt;
● 이미지 객체의 움직임 패턴은 객체 자체가 움직이거나 카메라의 움직임으로 인해 생성되는데 이전 프레임이랑 다음 프레임 중 변하는 부분의 움직임을 추적&lt;br /&gt;
&lt;br /&gt;
● 보통 움직임을 통한 구조 분석, 비디오 압축, 영상이 흔들렸거나 블러가 된 경우 깨끗한 영상으로 처리하는 기술인 Video Stabilization 분야에 사용된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lucas-Kanade&lt;br /&gt;
&lt;br /&gt;
● Optical Flow알고리즘에는 다양한 알고리즘이 있으나  Lucas-Kanade방법을 이용하기로 한다.&lt;br /&gt;
&lt;br /&gt;
● 한 프레임의 각 피셀 윈도우를 설정하고 다음 프레임에서 이 윈도우와 가장 잘 매칭되는 곳을 찾는 원리로 작동한다.&lt;br /&gt;
&lt;br /&gt;
● 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적다는 장점이 있다.&lt;br /&gt;
&lt;br /&gt;
● 좁은 지역의 윈도우를 사용하기 때문에 이 윈도우보다 큰 움직임이 발생하였을 경우 움직임을 계산하지 못하며 특징점을 사용하여 optical flow를 얻기 때문에 dense optical flow에 비하여 정확도가 낮은 편이다.&lt;br /&gt;
&lt;br /&gt;
● 윈도우를 벗어나는 큰 움직임을 계산하지 못하는 단점을 개선하기 위해 Pyramids Lucas-Kanade 방법을 사용할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 Lucas-Kanade에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
===관련 기술의 현황===&lt;br /&gt;
====관련 기술의 현황 및 분석(State of art)====&lt;br /&gt;
*전 세계적인 기술현황&lt;br /&gt;
&lt;br /&gt;
◇ 페이스웨어 Live&lt;br /&gt;
&lt;br /&gt;
마커리스 3D 페이셜 모션 캡처 솔루션 제공을 선도하는 페이스웨어 테크놀러지(Faceware Technologies, 이하 페이스웨어)가  23일 향상된 실시간 얼굴 모션캡처와 애니메이션 제품인 페이스웨어 라이브(Faceware Live) 2.5 버전을 발표했다. 페이스웨어 라이브는 실시간으로 사용자 얼굴을 자동 추적하고, 얼굴의 움직임을 페이셜 모델에 즉각 적용시킨 페이셜 애니메이션을 생성한다. 페이스웨어 라이브는 움직임 트래킹을 위해 단 하나의 카메라를 사용하며,  컴퓨터에 연결된 비디오나 웹캠, 페이스웨어 GoPro, Pro HD 헤드캠 시스템, 그밖에 다른 비디오 캡처 장비들을 카메라로 사용할 수 있다. 페이스웨어 라이브 2.5는 디지털캐릭터와 결합된 라이브 공연, 즉 디지털 캐릭터들이 관객이나 사람들과 라이브로 인터랙션이 가능한 실시간 인형극이나  테마파크, 쇼핑몰 내부의 키오스크 스크린 상에서 실시간 상호작용 디지털 캐릭터로 활용될 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:2.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 삼성 갤럭시S9의 AR 이모지&lt;br /&gt;
&lt;br /&gt;
카메라로 촬영한 인물 사진을 기반으로 아바타를 만들 수 있는 기능이다. AR 이모지를 만들면 18개 다양한 감정을 표현할 수 있는 gif 이모티콘이 추가되어 메세지, SNS 등에서 이용 가능하다. 눈, 코, 입, 뺨, 이마 등 100개 이상의 얼굴 특징점을 인식 및 분석해 피사체의 표정을 실시간으로 따라해서 동영상으로 촬영할 수 있다. 이외에도 안경을 착용하거나 피부 색깔, 헤어스타일, 헤어컬러, 의상 등을 변경할 수 있다. 하지만 세밀하지 못한 인물 묘사 방식에 논란이 있었다.&lt;br /&gt;
&lt;br /&gt;
[[파일:3.jpg]]&lt;br /&gt;
[[파일:4.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 애플 iOS11, iOS12의 애니모티콘, 미모지&lt;br /&gt;
&lt;br /&gt;
애플 사의 애니모티콘(애니모지)은 전면 카메라로 촬영한 인물사진을 기반으로 사용자의 표정을 읽은 후, 기존에 있던 이모지에 투사하여 이모티콘을 만들 수 있는 기능이다. 사용자의 얼굴에 3만개 이상의 도트를 투사해 얼굴 맵을 만든 후, 3D 스캔 활용을 통해 50개 이상의 각기 다른 근육의 움직임을 포착하고 분석한다. 분석한 세밀한 표정을 외계인, 고양이, 닭, 개, 여우, 원숭이, 판다. 돼지, 곰돌이, 토끼, 로봇, 유니콘 등 내장된 12개의 애니모티콘에 투영시킨다. 하지만 최근 iOS12의 기능으로 애니모티콘의 개인화 버전인 미모지(memoji)가 발표되었는데, 한정된 캐릭터의 폭을 늘리고 얼굴, 머리, 장신구를 자신의 취향에 맞게 선택할 수 있다. 생성한 애니모티콘을 편집할 수 있으며 아이폰의 메시지 앱에서 이용할 수 있다. 또한 목소리를 녹음하여 오디오가 포함된 비디오 형태로 수신할 수도 있다.&lt;br /&gt;
[[파일:5.jpg]]&lt;br /&gt;
[[파일:6.jpg]]&lt;br /&gt;
&lt;br /&gt;
*특허조사 및 특허 전략 분석&lt;br /&gt;
&lt;br /&gt;
◇ SIFT(Scale Invariant Feature Transform) 알고리즘&lt;br /&gt;
&lt;br /&gt;
● Lowe David G 교수가 개발하였으며 97년도부터 연구하여 프로토 타입의 SIFT알고리즘을 99년도에 발표하였고, 04년도에는 이 알고리즘을 더욱 개량하여 완성된 SIFT알고리즘을 만들게 되었다.&lt;br /&gt;
&lt;br /&gt;
● 영상의 크기와 회전에 불변하는 특징점을 추출하는 알고리즘이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:7.jpg]]&lt;br /&gt;
&lt;br /&gt;
1) Scale-space extrema detection &lt;br /&gt;
&lt;br /&gt;
● Gaussian Pyramid를 생성 한 후 DoG(Difference of Gaussian)을 구해서 극점인 부분을 특징점 후보자로 잡아 준다.&lt;br /&gt;
&lt;br /&gt;
● DoG의 상위와 하위 층까지 모두 합쳐 주변 26개 보다 크거나 모두 작을 때만 특징점 후보자로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이 방법은 특징점을 Scale별로 구하게 되어 Target 물체가 작아져도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:8.jpg]]&lt;br /&gt;
&lt;br /&gt;
2) KeyPoint Localization &lt;br /&gt;
&lt;br /&gt;
● 테일러 급수를 사용하여 더 정확한 극점을 찾은 뒤 테일러 급수로 interpolation하여 그 점의 값을 구하여 특징점 후보자 중에서 정확하지 않는 특징점을 제거한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Orientation Assignment &lt;br /&gt;
&lt;br /&gt;
● 추출된 특징점마다 주 방향을 할당해 주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● 특징점 주변으로 16x16영역을 할당한 후 그 영역 이미지를 Gaussian Blurring을 적용하면 특징점 주변의 영역에 대한 Gradient의 방향과 크기를 결정하게 된다.&lt;br /&gt;
&lt;br /&gt;
● Gradient의 방향과 크기를 구하면 Orientation Histogram을 형성한 후, 가장 값이 큰 것을 해당 Orientation으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
● 회전에 대한 정보가 들어 있기 때문에 물체가 회전해도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
4) KeyPoint Descriptor&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 마다 서술자를 생성해주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● Gaussian Weight Function을 활용하여 서술자를 생성하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 주변으로 16x16의 pixel 영역을 할당하여 아래의 &amp;lt;그림 14&amp;gt;과 같이 Image Gradients를 구한다. 그 후, 서술자 Window 크기의 반값을 Gaussian Weighted function에 곱해주게 된다.&lt;br /&gt;
&lt;br /&gt;
[[파일:9.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 다음으로 히스토그램을 그려주게 되는데 그 전에 먼저 앞에서 구한 Orientation을 빼줘서 Descriptor가 회전에 불변하도록 만들어 준다.&lt;br /&gt;
&lt;br /&gt;
● 객체인식을 할 때는 DB의 각 특징점의 Descriptor를 가지고, 인식할 물체 영상의 Descriptor와 비교하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이때 비슷하면 데이터가 비슷하게 나올 텐데 여기서 사용하는 방법은 유클리드 거리이다.&lt;br /&gt;
● 유클리드 거리의 방식은 연산식이 간단하여 많은 특징점 데이터를 비교하는데 속도면에서 성능이 좋아 많이 사용되는 방식이다. &lt;br /&gt;
&lt;br /&gt;
● 매칭 단계까지 수행되면 DB의 특징점들과 Target의 특징점들 중 매칭된 특징점들이 추출되어 원하는 물체가 어디에 위치하는지 알 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:10.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇SURF&lt;br /&gt;
&lt;br /&gt;
● 알고리즘 순서도 : 특징점 추출 → 주 방향 결정 → descriptor 생성&lt;br /&gt;
&lt;br /&gt;
1) 특징점 추출&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● 수식을 이용하여 적분 영상을 생성한다.&lt;br /&gt;
&lt;br /&gt;
● 적분 영상이란 픽셀 밝기 값을 누적한 형태를 뜻함&lt;br /&gt;
&lt;br /&gt;
● D영역의 밝기 누적 값을 알고 싶다면 ii(4)+ii(1)-ii(2)-ii(3)식을 이용하여 쉽게 D영역의 밝기 누적값을 구할 수 있다.&lt;br /&gt;
&lt;br /&gt;
● 적분영상을 만든 후 헤이시안(Hessian)검출기를 사용하여 특징점을 검출한다. (헤이시안 검출기는 헤이시안 행렬 기반인 특징점 검출 알고리즘으로써 정확성이 높고 행렬식이 최대값인 위치에서 blob을 검출 할 때 사용하게 된다)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● SURF에서는 Hessian_Laplace Detector를 사용하는 대신에 위의 공식대로 FAST Hessian Detector 을 사용하여 수행성능을 향상시킨다.&lt;br /&gt;
&lt;br /&gt;
2) Dxx, Dyy, Dxy박스 필터를 구하는 방법&lt;br /&gt;
&lt;br /&gt;
● Haar Wavelet을 이용 - Dxx와 Dyy를 구할 때는 검은 영역부분을 -2, 흰영역부분은 1을 곱하여 구하고 Dxy는 검은 영역을 -1, 흰영역을 1을 곱하여 구한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) 9x9 박스필터를 이용한 Dxx, Dyy, Dxy를 구하는 방식&lt;br /&gt;
&lt;br /&gt;
● Hessian Determinant 데이터를 이용하여 각 필터 사이즈 별로 특징점을 검출하게 된다. 필터 사이즈란 위의 Dxx, Dyy, Dxy를 구하는 박스필터 영역 사이즈를 의미한다. SURF에서는 박스 필터 영역을 Scale해서 특징점을 추출해 aliasing 이 없는 장점을 가지고 있다.  Hessian Determinant 데이터를 각 픽셀마다 구했으면 각각의 Threshold와 비교하게 된다. &lt;br /&gt;
&lt;br /&gt;
● Threshold보다 값이 크면, 인접한 8개의 픽셀의 Hessian Determinant를 비교하여 큰 값인지 비교하게 된다. 만약 큰 값이면 상하 박스 필터 사이즈의 3x3크기의 각 9개의 Hessina Determinant를 비교하여 가장 클 경우 특징점으로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) 주 방향 결정&lt;br /&gt;
&lt;br /&gt;
● 특징점 중심으로 특징점이 검출된 스케일 정보 s를 이용하여 반지름이 6s의 원 안의 픽셀들에 대하여 x방향과 y방향으로 Haar Wavelet Response인 dx와 dy를 구하게 된다. 윈도우 5도 간격으로 회전하면서 60도 윈도우 내의 벡터의 크기를 더해 가장 큰 크기를 가지는 방향을 특징점의 주 방향으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
5) descriptor 생성&lt;br /&gt;
&lt;br /&gt;
● descriptor는 특징점 주변의 일정한 영역 내에 이웃하고 있는 픽셀의 밝기 변화를 나타낸다.&lt;br /&gt;
&lt;br /&gt;
[[파일:11.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 주 방향과 scale정보 s를 이용하여 특징점 중심으로 20s크기의 윈도우를 위의 그림처럼 구성하고, 구성된 윈도우를 4X4 영역으로 분할하여 16개의 영역으로 나눈다. 분할된 각 영역을 다시 한번 5X5크기로 분할하여 각 픽셀을 haar wavelet filter를 사용하여 각 를 구하여 16개의 영역에 각 위의 4개의 Descriptor를 생성하여 총 64개의 Descriptor를 생성할 수 있게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*기술 로드맵&lt;br /&gt;
&lt;br /&gt;
[[파일:12.jpg]]&lt;br /&gt;
&lt;br /&gt;
====시장상황에 대한 분석====&lt;br /&gt;
&lt;br /&gt;
*경쟁제품 조사 비교&lt;br /&gt;
&lt;br /&gt;
◇ Avatar SDK&lt;br /&gt;
&lt;br /&gt;
하나의 2D 정면 얼굴 사진을 입력하면 3D 아바타 생성 SDK를 사용하여 개인의 아바타를 만들어준다. 딥러닝과 컴퓨터 그래픽 기술을 이용하여 개발하였고, 현재 cloud나 PC, Mac, Android, iOS 환경 모두 이용 가능하다. 아바타로의 변환에는 사진마다 차이가 있지만 약 10초가 소요된다. 만들어진 아바타는 Blendshape, 헤어스타일, 헤어컬러를 변경할 수 있고, 윙크, 웃음, 하품 등 몇몇 특정 표정 변화가 가능하다. 그림은 Avatar SDK를 이용하여 왼쪽 상단의 사진을 입력으로 아바타를 생성한 사진이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:13.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ Mirror AI&lt;br /&gt;
&lt;br /&gt;
스마트폰으로 한장의 셀프 사진을 찍으면, 이를 바탕으로 자신의 모습을 한 몇 백개의 이모지를 생성하여 메신저에서 사용할 수 있는 키보드 어플리케이션이다. 현재 다양한 언어를 지원하고, iOS 10.0 버전 이상만 사용할 수 있다. 학습한 모델을 통해 사람의 얼굴 특징을 식별하고, 이에 맞게 수초 내에 사람의 얼굴 특징을 추려내어 이모티콘을 만든다. 생성된 이모티콘은 이 키보드 어플리케이션을 사용하여 어떤 메신저에서든 사용할 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:14.jpg]]&lt;br /&gt;
&lt;br /&gt;
*마케팅 전략 제시&lt;br /&gt;
&lt;br /&gt;
[[파일:15.jpg]]&lt;br /&gt;
&lt;br /&gt;
===개발과제의 기대효과===&lt;br /&gt;
====기술적 기대효과====&lt;br /&gt;
&lt;br /&gt;
◇ 영화 촬영시 기존에는 모션 센서들을 부착하여 배우들의 표정을 읽어와 캐릭터의 표정과 매핑시켜 부착하는데까지 시간이 오래 걸렸고 많은 기술들이 필요되었는데 만약 이 프로젝트가 성공하게 될 경우, 배우가 표정을 짓는 것만으로 쉽게 캐릭터에 매핑될 수 있도록 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자기가 원하는 캐릭터나 다른 인물 모습의 자신과 같은 표정을 짓는 영상을 만들 수 있을 것이다.&lt;br /&gt;
&lt;br /&gt;
====경제적, 사회적 기대 및 파급효과====&lt;br /&gt;
&lt;br /&gt;
◇ 기존에 영화 촬영시 모션 캡쳐에 필요했던 장비들이 없어도 원하는 캐릭터의 표정을 구현할 수 있어 제작비 절감의 효과가 기대된다. &lt;br /&gt;
&lt;br /&gt;
◇ 현재 실존하지 않는 배우의 모습에 표정을 매핑하여 실제로 연기하는 것처럼 보이게 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자신의 표정을 다른 캐릭터로 매핑함으로써 원래 영상보다 감정 표현을 훨씬 극대화할 수 있다.&lt;br /&gt;
&lt;br /&gt;
===기술개발 일정 및 추진체계===&lt;br /&gt;
====개발 일정====&lt;br /&gt;
&lt;br /&gt;
[[파일:16.jpg]]&lt;br /&gt;
&lt;br /&gt;
====구성원 및 추진체계====&lt;br /&gt;
&lt;br /&gt;
◇ 전ㅇㅇ(팀장) &lt;br /&gt;
&lt;br /&gt;
● &lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원)&lt;br /&gt;
&lt;br /&gt;
● &lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원) &lt;br /&gt;
&lt;br /&gt;
● &lt;br /&gt;
&lt;br /&gt;
◇ 전원&lt;br /&gt;
&lt;br /&gt;
●&lt;br /&gt;
&lt;br /&gt;
==설계==&lt;br /&gt;
===설계사양===&lt;br /&gt;
====제품의 요구사항====&lt;br /&gt;
내용&lt;br /&gt;
====설계 사양====&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===개념설계안===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 동영상을 ‘Free Video to JPG Converter’를 이용하여 동영상에서 사진을 원하는 프레임 수를 지정하여 JPG파일을 추출한다. &lt;br /&gt;
&lt;br /&gt;
◇ 추출한 JPG파일에 SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)는 대표적인 특징점 추출 알고리즘으로 2차원 영상의 일정 지역에 해당하는 화소를 이용하여 특징점을 추출한다. OpenCV에서 제공하는 함수를 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow 알고리즘을 이용하여 이전 프레임이랑 다음 프레임, 두 개의 연속된 얼굴 프레임 사이에 동작 패턴을 추적한다. Optical Flow 알고리즘 중 Lucas-Kanade(LK)는 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적어 비교적 속도가 빠르기 때문에 Lucas-Kanade를 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ TwinGAN을 이용하여 사람의 얼굴 사진을 캐릭터로 변환한다.&lt;br /&gt;
&lt;br /&gt;
GAN(Generative Adversarial Network)은 상반되는 목적을 가진 두 모듈(판별망, 생성망)이 대결하는 구조를 통해 이미지 생성을 학습하는 이미지 생성 기술의 한 종류이다. 기존 GAN의 단점을 보완하고 paired data가 아닌 unpaired data를 사용했을 때 도메인 간의 매끄러운 변환을 이끌어낼 수 있는 TwinGAN을 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ 추적한 특징점의 벡터를 각 프레임 아바타에 적용한다.&lt;br /&gt;
&lt;br /&gt;
◇ 위 방법이 어려울 경우 TwinGAN으로 각 프레임의 얼굴 이미지를 아바타로 변환하고, 변환한 아바타 사진을 연결하여 gif파일로 만든다. 마찬가지로 사람의 표정 변화를 캐릭터가 똑같이 따라할 수 있도록 한다.&lt;br /&gt;
&lt;br /&gt;
===이론적 계산 및 시뮬레이션===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상 입력 -&amp;gt; 표정을 따라하는 캐릭터 영상 출력&lt;br /&gt;
&lt;br /&gt;
===소프트웨어 설계===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;전체 설계도&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. ‘Free Video to JPG Converter’를 이용하여 동영상을 여러 프레임의 사진으로 전환한다. &lt;br /&gt;
2. 각각의 사진들로부터 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
3. 특징점들의 변화를 이용하여 Optical Flow를 이용하여 특징점의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
4. 1번의 결과 추출된 여러 사진들 중 첫 번째 사진을 TwinGAN을 이용하여 캐릭터로 변환 후 변환된 캐릭터의 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
5. 3번에서 추적한 Optical Flow를 4번에 적용하여 gif파일로 변환한다.&lt;br /&gt;
&lt;br /&gt;
==결과 및 평가==&lt;br /&gt;
===완료 작품의 소개===&lt;br /&gt;
====프로토타입 사진 혹은 작동 장면====&lt;br /&gt;
내용&lt;br /&gt;
====포스터====&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===관련사업비 내역서===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===완료작품의 평가===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===향후계획===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===특허 출원 내용===&lt;br /&gt;
내용&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:16.jpg&amp;diff=1003</id>
		<title>파일:16.jpg</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:16.jpg&amp;diff=1003"/>
				<updated>2018-12-25T17:49:57Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=1002</id>
		<title>DnA(Digital and Actor)조</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=1002"/>
				<updated>2018-12-25T17:49:48Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: /* 개발 일정 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==프로젝트 개요==&lt;br /&gt;
=== 기술개발 과제 ===&lt;br /&gt;
''' 국문 : ''' 디지털 액터 : 얼굴 표정과 표현&lt;br /&gt;
&lt;br /&gt;
''' 영문 : ''' Digital Actor : facial expression, emotion&lt;br /&gt;
&lt;br /&gt;
===과제 팀명===&lt;br /&gt;
DnA (Digital and Actor)&lt;br /&gt;
&lt;br /&gt;
===지도교수===&lt;br /&gt;
홍의경 교수님&lt;br /&gt;
&lt;br /&gt;
===개발기간===&lt;br /&gt;
2018년 9월 ~ 2018년 12월 (총 4개월)&lt;br /&gt;
&lt;br /&gt;
===구성원 소개===&lt;br /&gt;
서울시립대학교 통계학과 20xxxxx0xx 전ㅇㅇ(팀장)&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
==서론==&lt;br /&gt;
===개발 과제의 개요===&lt;br /&gt;
====개발 과제 요약====&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상에서 프레임을 추출하여 각 얼굴 사진의 특징점을 인식하고 Optical Flow 알고리즘을 이용하여 특징점의 움직임을 추적한다. 추적한 특징점의 벡터를 아바타에 적용하여 동영상에서 사람의 표정 변화를 캐릭터가 따라하도록 만든다. 아바타 사진을 연결하여 gif파일로 만들어 마찬가지로 사람의 표정 변화를 캐릭터가 똑같이 따라할 수 있도록 한다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 배경 및 효과====&lt;br /&gt;
◇ 디지털 액터(Digital Actor)란 실제 배우와 동일한 수준의 외형과 동작을 구현할 수 있는 컴퓨터 그래픽(DG) 영상 캐릭터를 의미한다. 킹콩, 요다 등의 실존 인물이 아닌 캐릭터를 만들거나 현실에서 불가능한 장면을 연출하는 등 영상 특수효과, 3D 애니메이션, 게임, VR과 같은 곳에 사용된다. &lt;br /&gt;
&lt;br /&gt;
◇ 모션캡쳐 장비는 현실적인 움직임으로 퀄리티 높은 영상을 보여줄 수 있지만 상당히 고가의 물건이다. 사람의 얼굴 표정을 학습하여 자연스럽게 아바타로 옮길 수 있다면 높은 CG처리 비용을 줄일 수 있을 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
◇ 현재 국내 VR과 AR의 국내 시장의 규모가 점점 넓어지고 있으며 관련 업계에 따르면 그 사장 규모는 2020년 지금의 4~5배 수준으로 성장할 전망이라고 한다. 더딘 기술 진행속도로 인해 개발 속도도 느리지만 기술이 발전할수록 그 성장 속도가 급격히 증가할 것으로 예상되기 때문에 그 속도를 맞추기 위해서는 미리 개발을 준비하는 등의 행동이 필요하다. 이에 관련 기술을 직접 구현해봄으로써 미래의 VR/AR 산업에 보탬이 될 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 목표 및 내용====&lt;br /&gt;
◇ SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)&lt;br /&gt;
&lt;br /&gt;
● 대표적인 특징점 추출 알고리즘&lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘(interest point extraction algorithm)은 2차원 영상의 일정 지역에 해당하는 화소를 이용하여, 영상의 특징이 될 수 있는 특징점을 추출하는 알고리즘이다. 이때 특징점은 코너(corner) 및 블랍(blob)을 의미한다. &lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘에는 SIFT(Scale Invariant Feature Transform), PCA 등 다른 방법도 있지만 인식률과 처리 속도면에서 더 우수한 SURF 알고리즘을 사용한다.&lt;br /&gt;
&lt;br /&gt;
● 블러이미지나 회전된 이미지는 잘 인식하는 장점이 있는 반면 뷰포인트나 조명이 달라지면 특징점을 잘 잡아내지 못하는 단점이 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 SURF에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow&lt;br /&gt;
&lt;br /&gt;
● 두 개의 연속된 비디오 프레임 사이에 이미지 객체의 동작 패턴을 의미한다.&lt;br /&gt;
&lt;br /&gt;
● 이미지 객체의 움직임 패턴은 객체 자체가 움직이거나 카메라의 움직임으로 인해 생성되는데 이전 프레임이랑 다음 프레임 중 변하는 부분의 움직임을 추적&lt;br /&gt;
&lt;br /&gt;
● 보통 움직임을 통한 구조 분석, 비디오 압축, 영상이 흔들렸거나 블러가 된 경우 깨끗한 영상으로 처리하는 기술인 Video Stabilization 분야에 사용된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lucas-Kanade&lt;br /&gt;
&lt;br /&gt;
● Optical Flow알고리즘에는 다양한 알고리즘이 있으나  Lucas-Kanade방법을 이용하기로 한다.&lt;br /&gt;
&lt;br /&gt;
● 한 프레임의 각 피셀 윈도우를 설정하고 다음 프레임에서 이 윈도우와 가장 잘 매칭되는 곳을 찾는 원리로 작동한다.&lt;br /&gt;
&lt;br /&gt;
● 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적다는 장점이 있다.&lt;br /&gt;
&lt;br /&gt;
● 좁은 지역의 윈도우를 사용하기 때문에 이 윈도우보다 큰 움직임이 발생하였을 경우 움직임을 계산하지 못하며 특징점을 사용하여 optical flow를 얻기 때문에 dense optical flow에 비하여 정확도가 낮은 편이다.&lt;br /&gt;
&lt;br /&gt;
● 윈도우를 벗어나는 큰 움직임을 계산하지 못하는 단점을 개선하기 위해 Pyramids Lucas-Kanade 방법을 사용할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 Lucas-Kanade에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
===관련 기술의 현황===&lt;br /&gt;
====관련 기술의 현황 및 분석(State of art)====&lt;br /&gt;
*전 세계적인 기술현황&lt;br /&gt;
&lt;br /&gt;
◇ 페이스웨어 Live&lt;br /&gt;
&lt;br /&gt;
마커리스 3D 페이셜 모션 캡처 솔루션 제공을 선도하는 페이스웨어 테크놀러지(Faceware Technologies, 이하 페이스웨어)가  23일 향상된 실시간 얼굴 모션캡처와 애니메이션 제품인 페이스웨어 라이브(Faceware Live) 2.5 버전을 발표했다. 페이스웨어 라이브는 실시간으로 사용자 얼굴을 자동 추적하고, 얼굴의 움직임을 페이셜 모델에 즉각 적용시킨 페이셜 애니메이션을 생성한다. 페이스웨어 라이브는 움직임 트래킹을 위해 단 하나의 카메라를 사용하며,  컴퓨터에 연결된 비디오나 웹캠, 페이스웨어 GoPro, Pro HD 헤드캠 시스템, 그밖에 다른 비디오 캡처 장비들을 카메라로 사용할 수 있다. 페이스웨어 라이브 2.5는 디지털캐릭터와 결합된 라이브 공연, 즉 디지털 캐릭터들이 관객이나 사람들과 라이브로 인터랙션이 가능한 실시간 인형극이나  테마파크, 쇼핑몰 내부의 키오스크 스크린 상에서 실시간 상호작용 디지털 캐릭터로 활용될 수 있다.&lt;br /&gt;
[[파일:2.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 삼성 갤럭시S9의 AR 이모지&lt;br /&gt;
&lt;br /&gt;
카메라로 촬영한 인물 사진을 기반으로 아바타를 만들 수 있는 기능이다. AR 이모지를 만들면 18개 다양한 감정을 표현할 수 있는 gif 이모티콘이 추가되어 메세지, SNS 등에서 이용 가능하다. 눈, 코, 입, 뺨, 이마 등 100개 이상의 얼굴 특징점을 인식 및 분석해 피사체의 표정을 실시간으로 따라해서 동영상으로 촬영할 수 있다. 이외에도 안경을 착용하거나 피부 색깔, 헤어스타일, 헤어컬러, 의상 등을 변경할 수 있다. 하지만 세밀하지 못한 인물 묘사 방식에 논란이 있었다.&lt;br /&gt;
[[파일:3.jpg]]&lt;br /&gt;
[[파일:4.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 애플 iOS11, iOS12의 애니모티콘, 미모지&lt;br /&gt;
&lt;br /&gt;
애플 사의 애니모티콘(애니모지)은 전면 카메라로 촬영한 인물사진을 기반으로 사용자의 표정을 읽은 후, 기존에 있던 이모지에 투사하여 이모티콘을 만들 수 있는 기능이다. 사용자의 얼굴에 3만개 이상의 도트를 투사해 얼굴 맵을 만든 후, 3D 스캔 활용을 통해 50개 이상의 각기 다른 근육의 움직임을 포착하고 분석한다. 분석한 세밀한 표정을 외계인, 고양이, 닭, 개, 여우, 원숭이, 판다. 돼지, 곰돌이, 토끼, 로봇, 유니콘 등 내장된 12개의 애니모티콘에 투영시킨다. 하지만 최근 iOS12의 기능으로 애니모티콘의 개인화 버전인 미모지(memoji)가 발표되었는데, 한정된 캐릭터의 폭을 늘리고 얼굴, 머리, 장신구를 자신의 취향에 맞게 선택할 수 있다. 생성한 애니모티콘을 편집할 수 있으며 아이폰의 메시지 앱에서 이용할 수 있다. 또한 목소리를 녹음하여 오디오가 포함된 비디오 형태로 수신할 수도 있다.&lt;br /&gt;
[[파일:5.jpg]]&lt;br /&gt;
[[파일:6.jpg]]&lt;br /&gt;
&lt;br /&gt;
*특허조사 및 특허 전략 분석&lt;br /&gt;
&lt;br /&gt;
◇ SIFT(Scale Invariant Feature Transform) 알고리즘&lt;br /&gt;
&lt;br /&gt;
● Lowe David G 교수가 개발하였으며 97년도부터 연구하여 프로토 타입의 SIFT알고리즘을 99년도에 발표하였고, 04년도에는 이 알고리즘을 더욱 개량하여 완성된 SIFT알고리즘을 만들게 되었다.&lt;br /&gt;
&lt;br /&gt;
● 영상의 크기와 회전에 불변하는 특징점을 추출하는 알고리즘이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:7.jpg]]&lt;br /&gt;
&lt;br /&gt;
1) Scale-space extrema detection &lt;br /&gt;
&lt;br /&gt;
● Gaussian Pyramid를 생성 한 후 DoG(Difference of Gaussian)을 구해서 극점인 부분을 특징점 후보자로 잡아 준다.&lt;br /&gt;
&lt;br /&gt;
● DoG의 상위와 하위 층까지 모두 합쳐 주변 26개 보다 크거나 모두 작을 때만 특징점 후보자로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이 방법은 특징점을 Scale별로 구하게 되어 Target 물체가 작아져도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:8.jpg]]&lt;br /&gt;
&lt;br /&gt;
2) KeyPoint Localization &lt;br /&gt;
&lt;br /&gt;
● 테일러 급수를 사용하여 더 정확한 극점을 찾은 뒤 테일러 급수로 interpolation하여 그 점의 값을 구하여 특징점 후보자 중에서 정확하지 않는 특징점을 제거한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Orientation Assignment &lt;br /&gt;
&lt;br /&gt;
● 추출된 특징점마다 주 방향을 할당해 주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● 특징점 주변으로 16x16영역을 할당한 후 그 영역 이미지를 Gaussian Blurring을 적용하면 특징점 주변의 영역에 대한 Gradient의 방향과 크기를 결정하게 된다.&lt;br /&gt;
&lt;br /&gt;
● Gradient의 방향과 크기를 구하면 Orientation Histogram을 형성한 후, 가장 값이 큰 것을 해당 Orientation으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
● 회전에 대한 정보가 들어 있기 때문에 물체가 회전해도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
4) KeyPoint Descriptor&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 마다 서술자를 생성해주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● Gaussian Weight Function을 활용하여 서술자를 생성하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 주변으로 16x16의 pixel 영역을 할당하여 아래의 &amp;lt;그림 14&amp;gt;과 같이 Image Gradients를 구한다. 그 후, 서술자 Window 크기의 반값을 Gaussian Weighted function에 곱해주게 된다.&lt;br /&gt;
&lt;br /&gt;
[[파일:9.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 다음으로 히스토그램을 그려주게 되는데 그 전에 먼저 앞에서 구한 Orientation을 빼줘서 Descriptor가 회전에 불변하도록 만들어 준다.&lt;br /&gt;
&lt;br /&gt;
● 객체인식을 할 때는 DB의 각 특징점의 Descriptor를 가지고, 인식할 물체 영상의 Descriptor와 비교하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이때 비슷하면 데이터가 비슷하게 나올 텐데 여기서 사용하는 방법은 유클리드 거리이다.&lt;br /&gt;
● 유클리드 거리의 방식은 연산식이 간단하여 많은 특징점 데이터를 비교하는데 속도면에서 성능이 좋아 많이 사용되는 방식이다. &lt;br /&gt;
&lt;br /&gt;
● 매칭 단계까지 수행되면 DB의 특징점들과 Target의 특징점들 중 매칭된 특징점들이 추출되어 원하는 물체가 어디에 위치하는지 알 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:10.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇SURF&lt;br /&gt;
&lt;br /&gt;
● 알고리즘 순서도 : 특징점 추출 → 주 방향 결정 → descriptor 생성&lt;br /&gt;
&lt;br /&gt;
1) 특징점 추출&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● 수식을 이용하여 적분 영상을 생성한다.&lt;br /&gt;
&lt;br /&gt;
● 적분 영상이란 픽셀 밝기 값을 누적한 형태를 뜻함&lt;br /&gt;
&lt;br /&gt;
● D영역의 밝기 누적 값을 알고 싶다면 ii(4)+ii(1)-ii(2)-ii(3)식을 이용하여 쉽게 D영역의 밝기 누적값을 구할 수 있다.&lt;br /&gt;
&lt;br /&gt;
● 적분영상을 만든 후 헤이시안(Hessian)검출기를 사용하여 특징점을 검출한다. (헤이시안 검출기는 헤이시안 행렬 기반인 특징점 검출 알고리즘으로써 정확성이 높고 행렬식이 최대값인 위치에서 blob을 검출 할 때 사용하게 된다)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● SURF에서는 Hessian_Laplace Detector를 사용하는 대신에 위의 공식대로 FAST Hessian Detector 을 사용하여 수행성능을 향상시킨다.&lt;br /&gt;
&lt;br /&gt;
2) Dxx, Dyy, Dxy박스 필터를 구하는 방법&lt;br /&gt;
&lt;br /&gt;
● Haar Wavelet을 이용 - Dxx와 Dyy를 구할 때는 검은 영역부분을 -2, 흰영역부분은 1을 곱하여 구하고 Dxy는 검은 영역을 -1, 흰영역을 1을 곱하여 구한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) 9x9 박스필터를 이용한 Dxx, Dyy, Dxy를 구하는 방식&lt;br /&gt;
&lt;br /&gt;
● Hessian Determinant 데이터를 이용하여 각 필터 사이즈 별로 특징점을 검출하게 된다. 필터 사이즈란 위의 Dxx, Dyy, Dxy를 구하는 박스필터 영역 사이즈를 의미한다. SURF에서는 박스 필터 영역을 Scale해서 특징점을 추출해 aliasing 이 없는 장점을 가지고 있다.  Hessian Determinant 데이터를 각 픽셀마다 구했으면 각각의 Threshold와 비교하게 된다. &lt;br /&gt;
&lt;br /&gt;
● Threshold보다 값이 크면, 인접한 8개의 픽셀의 Hessian Determinant를 비교하여 큰 값인지 비교하게 된다. 만약 큰 값이면 상하 박스 필터 사이즈의 3x3크기의 각 9개의 Hessina Determinant를 비교하여 가장 클 경우 특징점으로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) 주 방향 결정&lt;br /&gt;
&lt;br /&gt;
● 특징점 중심으로 특징점이 검출된 스케일 정보 s를 이용하여 반지름이 6s의 원 안의 픽셀들에 대하여 x방향과 y방향으로 Haar Wavelet Response인 dx와 dy를 구하게 된다. 윈도우 5도 간격으로 회전하면서 60도 윈도우 내의 벡터의 크기를 더해 가장 큰 크기를 가지는 방향을 특징점의 주 방향으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
5) descriptor 생성&lt;br /&gt;
&lt;br /&gt;
● descriptor는 특징점 주변의 일정한 영역 내에 이웃하고 있는 픽셀의 밝기 변화를 나타낸다.&lt;br /&gt;
&lt;br /&gt;
[[파일:11.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 주 방향과 scale정보 s를 이용하여 특징점 중심으로 20s크기의 윈도우를 위의 그림처럼 구성하고, 구성된 윈도우를 4X4 영역으로 분할하여 16개의 영역으로 나눈다. 분할된 각 영역을 다시 한번 5X5크기로 분할하여 각 픽셀을 haar wavelet filter를 사용하여 각 를 구하여 16개의 영역에 각 위의 4개의 Descriptor를 생성하여 총 64개의 Descriptor를 생성할 수 있게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*기술 로드맵&lt;br /&gt;
&lt;br /&gt;
[[파일:12.jpg]]&lt;br /&gt;
&lt;br /&gt;
====시장상황에 대한 분석====&lt;br /&gt;
&lt;br /&gt;
*경쟁제품 조사 비교&lt;br /&gt;
&lt;br /&gt;
◇ Avatar SDK&lt;br /&gt;
&lt;br /&gt;
하나의 2D 정면 얼굴 사진을 입력하면 3D 아바타 생성 SDK를 사용하여 개인의 아바타를 만들어준다. 딥러닝과 컴퓨터 그래픽 기술을 이용하여 개발하였고, 현재 cloud나 PC, Mac, Android, iOS 환경 모두 이용 가능하다. 아바타로의 변환에는 사진마다 차이가 있지만 약 10초가 소요된다. 만들어진 아바타는 Blendshape, 헤어스타일, 헤어컬러를 변경할 수 있고, 윙크, 웃음, 하품 등 몇몇 특정 표정 변화가 가능하다. 그림은 Avatar SDK를 이용하여 왼쪽 상단의 사진을 입력으로 아바타를 생성한 사진이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:13.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ Mirror AI&lt;br /&gt;
&lt;br /&gt;
스마트폰으로 한장의 셀프 사진을 찍으면, 이를 바탕으로 자신의 모습을 한 몇 백개의 이모지를 생성하여 메신저에서 사용할 수 있는 키보드 어플리케이션이다. 현재 다양한 언어를 지원하고, iOS 10.0 버전 이상만 사용할 수 있다. 학습한 모델을 통해 사람의 얼굴 특징을 식별하고, 이에 맞게 수초 내에 사람의 얼굴 특징을 추려내어 이모티콘을 만든다. 생성된 이모티콘은 이 키보드 어플리케이션을 사용하여 어떤 메신저에서든 사용할 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:14.jpg]]&lt;br /&gt;
&lt;br /&gt;
*마케팅 전략 제시&lt;br /&gt;
&lt;br /&gt;
[[파일:15.jpg]]&lt;br /&gt;
&lt;br /&gt;
===개발과제의 기대효과===&lt;br /&gt;
====기술적 기대효과====&lt;br /&gt;
&lt;br /&gt;
◇ 영화 촬영시 기존에는 모션 센서들을 부착하여 배우들의 표정을 읽어와 캐릭터의 표정과 매핑시켜 부착하는데까지 시간이 오래 걸렸고 많은 기술들이 필요되었는데 만약 이 프로젝트가 성공하게 될 경우, 배우가 표정을 짓는 것만으로 쉽게 캐릭터에 매핑될 수 있도록 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자기가 원하는 캐릭터나 다른 인물 모습의 자신과 같은 표정을 짓는 영상을 만들 수 있을 것이다.&lt;br /&gt;
&lt;br /&gt;
====경제적, 사회적 기대 및 파급효과====&lt;br /&gt;
&lt;br /&gt;
◇ 기존에 영화 촬영시 모션 캡쳐에 필요했던 장비들이 없어도 원하는 캐릭터의 표정을 구현할 수 있어 제작비 절감의 효과가 기대된다. &lt;br /&gt;
&lt;br /&gt;
◇ 현재 실존하지 않는 배우의 모습에 표정을 매핑하여 실제로 연기하는 것처럼 보이게 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자신의 표정을 다른 캐릭터로 매핑함으로써 원래 영상보다 감정 표현을 훨씬 극대화할 수 있다.&lt;br /&gt;
&lt;br /&gt;
===기술개발 일정 및 추진체계===&lt;br /&gt;
====개발 일정====&lt;br /&gt;
&lt;br /&gt;
[[파일:16.jpg]]&lt;br /&gt;
&lt;br /&gt;
====구성원 및 추진체계====&lt;br /&gt;
&lt;br /&gt;
◇ 전ㅇㅇ(팀장) &lt;br /&gt;
&lt;br /&gt;
● &lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원)&lt;br /&gt;
&lt;br /&gt;
● &lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원) &lt;br /&gt;
&lt;br /&gt;
● &lt;br /&gt;
&lt;br /&gt;
◇ 전원&lt;br /&gt;
&lt;br /&gt;
●&lt;br /&gt;
&lt;br /&gt;
==설계==&lt;br /&gt;
===설계사양===&lt;br /&gt;
====제품의 요구사항====&lt;br /&gt;
내용&lt;br /&gt;
====설계 사양====&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===개념설계안===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 동영상을 ‘Free Video to JPG Converter’를 이용하여 동영상에서 사진을 원하는 프레임 수를 지정하여 JPG파일을 추출한다. &lt;br /&gt;
&lt;br /&gt;
◇ 추출한 JPG파일에 SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)는 대표적인 특징점 추출 알고리즘으로 2차원 영상의 일정 지역에 해당하는 화소를 이용하여 특징점을 추출한다. OpenCV에서 제공하는 함수를 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow 알고리즘을 이용하여 이전 프레임이랑 다음 프레임, 두 개의 연속된 얼굴 프레임 사이에 동작 패턴을 추적한다. Optical Flow 알고리즘 중 Lucas-Kanade(LK)는 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적어 비교적 속도가 빠르기 때문에 Lucas-Kanade를 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ TwinGAN을 이용하여 사람의 얼굴 사진을 캐릭터로 변환한다.&lt;br /&gt;
&lt;br /&gt;
GAN(Generative Adversarial Network)은 상반되는 목적을 가진 두 모듈(판별망, 생성망)이 대결하는 구조를 통해 이미지 생성을 학습하는 이미지 생성 기술의 한 종류이다. 기존 GAN의 단점을 보완하고 paired data가 아닌 unpaired data를 사용했을 때 도메인 간의 매끄러운 변환을 이끌어낼 수 있는 TwinGAN을 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ 추적한 특징점의 벡터를 각 프레임 아바타에 적용한다.&lt;br /&gt;
&lt;br /&gt;
◇ 위 방법이 어려울 경우 TwinGAN으로 각 프레임의 얼굴 이미지를 아바타로 변환하고, 변환한 아바타 사진을 연결하여 gif파일로 만든다. 마찬가지로 사람의 표정 변화를 캐릭터가 똑같이 따라할 수 있도록 한다.&lt;br /&gt;
&lt;br /&gt;
===이론적 계산 및 시뮬레이션===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상 입력 -&amp;gt; 표정을 따라하는 캐릭터 영상 출력&lt;br /&gt;
&lt;br /&gt;
===소프트웨어 설계===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;전체 설계도&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. ‘Free Video to JPG Converter’를 이용하여 동영상을 여러 프레임의 사진으로 전환한다. &lt;br /&gt;
2. 각각의 사진들로부터 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
3. 특징점들의 변화를 이용하여 Optical Flow를 이용하여 특징점의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
4. 1번의 결과 추출된 여러 사진들 중 첫 번째 사진을 TwinGAN을 이용하여 캐릭터로 변환 후 변환된 캐릭터의 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
5. 3번에서 추적한 Optical Flow를 4번에 적용하여 gif파일로 변환한다.&lt;br /&gt;
&lt;br /&gt;
==결과 및 평가==&lt;br /&gt;
===완료 작품의 소개===&lt;br /&gt;
====프로토타입 사진 혹은 작동 장면====&lt;br /&gt;
내용&lt;br /&gt;
====포스터====&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===관련사업비 내역서===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===완료작품의 평가===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===향후계획===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===특허 출원 내용===&lt;br /&gt;
내용&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:15.jpg&amp;diff=1001</id>
		<title>파일:15.jpg</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:15.jpg&amp;diff=1001"/>
				<updated>2018-12-25T17:48:24Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:14.jpg&amp;diff=1000</id>
		<title>파일:14.jpg</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:14.jpg&amp;diff=1000"/>
				<updated>2018-12-25T17:48:08Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:13.jpg&amp;diff=999</id>
		<title>파일:13.jpg</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:13.jpg&amp;diff=999"/>
				<updated>2018-12-25T17:47:59Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=998</id>
		<title>DnA(Digital and Actor)조</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=998"/>
				<updated>2018-12-25T17:47:38Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: /* 시장상황에 대한 분석 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==프로젝트 개요==&lt;br /&gt;
=== 기술개발 과제 ===&lt;br /&gt;
''' 국문 : ''' 디지털 액터 : 얼굴 표정과 표현&lt;br /&gt;
&lt;br /&gt;
''' 영문 : ''' Digital Actor : facial expression, emotion&lt;br /&gt;
&lt;br /&gt;
===과제 팀명===&lt;br /&gt;
DnA (Digital and Actor)&lt;br /&gt;
&lt;br /&gt;
===지도교수===&lt;br /&gt;
홍의경 교수님&lt;br /&gt;
&lt;br /&gt;
===개발기간===&lt;br /&gt;
2018년 9월 ~ 2018년 12월 (총 4개월)&lt;br /&gt;
&lt;br /&gt;
===구성원 소개===&lt;br /&gt;
서울시립대학교 통계학과 20xxxxx0xx 전ㅇㅇ(팀장)&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
==서론==&lt;br /&gt;
===개발 과제의 개요===&lt;br /&gt;
====개발 과제 요약====&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상에서 프레임을 추출하여 각 얼굴 사진의 특징점을 인식하고 Optical Flow 알고리즘을 이용하여 특징점의 움직임을 추적한다. 추적한 특징점의 벡터를 아바타에 적용하여 동영상에서 사람의 표정 변화를 캐릭터가 따라하도록 만든다. 아바타 사진을 연결하여 gif파일로 만들어 마찬가지로 사람의 표정 변화를 캐릭터가 똑같이 따라할 수 있도록 한다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 배경 및 효과====&lt;br /&gt;
◇ 디지털 액터(Digital Actor)란 실제 배우와 동일한 수준의 외형과 동작을 구현할 수 있는 컴퓨터 그래픽(DG) 영상 캐릭터를 의미한다. 킹콩, 요다 등의 실존 인물이 아닌 캐릭터를 만들거나 현실에서 불가능한 장면을 연출하는 등 영상 특수효과, 3D 애니메이션, 게임, VR과 같은 곳에 사용된다. &lt;br /&gt;
&lt;br /&gt;
◇ 모션캡쳐 장비는 현실적인 움직임으로 퀄리티 높은 영상을 보여줄 수 있지만 상당히 고가의 물건이다. 사람의 얼굴 표정을 학습하여 자연스럽게 아바타로 옮길 수 있다면 높은 CG처리 비용을 줄일 수 있을 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
◇ 현재 국내 VR과 AR의 국내 시장의 규모가 점점 넓어지고 있으며 관련 업계에 따르면 그 사장 규모는 2020년 지금의 4~5배 수준으로 성장할 전망이라고 한다. 더딘 기술 진행속도로 인해 개발 속도도 느리지만 기술이 발전할수록 그 성장 속도가 급격히 증가할 것으로 예상되기 때문에 그 속도를 맞추기 위해서는 미리 개발을 준비하는 등의 행동이 필요하다. 이에 관련 기술을 직접 구현해봄으로써 미래의 VR/AR 산업에 보탬이 될 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 목표 및 내용====&lt;br /&gt;
◇ SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)&lt;br /&gt;
&lt;br /&gt;
● 대표적인 특징점 추출 알고리즘&lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘(interest point extraction algorithm)은 2차원 영상의 일정 지역에 해당하는 화소를 이용하여, 영상의 특징이 될 수 있는 특징점을 추출하는 알고리즘이다. 이때 특징점은 코너(corner) 및 블랍(blob)을 의미한다. &lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘에는 SIFT(Scale Invariant Feature Transform), PCA 등 다른 방법도 있지만 인식률과 처리 속도면에서 더 우수한 SURF 알고리즘을 사용한다.&lt;br /&gt;
&lt;br /&gt;
● 블러이미지나 회전된 이미지는 잘 인식하는 장점이 있는 반면 뷰포인트나 조명이 달라지면 특징점을 잘 잡아내지 못하는 단점이 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 SURF에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow&lt;br /&gt;
&lt;br /&gt;
● 두 개의 연속된 비디오 프레임 사이에 이미지 객체의 동작 패턴을 의미한다.&lt;br /&gt;
&lt;br /&gt;
● 이미지 객체의 움직임 패턴은 객체 자체가 움직이거나 카메라의 움직임으로 인해 생성되는데 이전 프레임이랑 다음 프레임 중 변하는 부분의 움직임을 추적&lt;br /&gt;
&lt;br /&gt;
● 보통 움직임을 통한 구조 분석, 비디오 압축, 영상이 흔들렸거나 블러가 된 경우 깨끗한 영상으로 처리하는 기술인 Video Stabilization 분야에 사용된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lucas-Kanade&lt;br /&gt;
&lt;br /&gt;
● Optical Flow알고리즘에는 다양한 알고리즘이 있으나  Lucas-Kanade방법을 이용하기로 한다.&lt;br /&gt;
&lt;br /&gt;
● 한 프레임의 각 피셀 윈도우를 설정하고 다음 프레임에서 이 윈도우와 가장 잘 매칭되는 곳을 찾는 원리로 작동한다.&lt;br /&gt;
&lt;br /&gt;
● 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적다는 장점이 있다.&lt;br /&gt;
&lt;br /&gt;
● 좁은 지역의 윈도우를 사용하기 때문에 이 윈도우보다 큰 움직임이 발생하였을 경우 움직임을 계산하지 못하며 특징점을 사용하여 optical flow를 얻기 때문에 dense optical flow에 비하여 정확도가 낮은 편이다.&lt;br /&gt;
&lt;br /&gt;
● 윈도우를 벗어나는 큰 움직임을 계산하지 못하는 단점을 개선하기 위해 Pyramids Lucas-Kanade 방법을 사용할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 Lucas-Kanade에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
===관련 기술의 현황===&lt;br /&gt;
====관련 기술의 현황 및 분석(State of art)====&lt;br /&gt;
*전 세계적인 기술현황&lt;br /&gt;
&lt;br /&gt;
◇ 페이스웨어 Live&lt;br /&gt;
&lt;br /&gt;
마커리스 3D 페이셜 모션 캡처 솔루션 제공을 선도하는 페이스웨어 테크놀러지(Faceware Technologies, 이하 페이스웨어)가  23일 향상된 실시간 얼굴 모션캡처와 애니메이션 제품인 페이스웨어 라이브(Faceware Live) 2.5 버전을 발표했다. 페이스웨어 라이브는 실시간으로 사용자 얼굴을 자동 추적하고, 얼굴의 움직임을 페이셜 모델에 즉각 적용시킨 페이셜 애니메이션을 생성한다. 페이스웨어 라이브는 움직임 트래킹을 위해 단 하나의 카메라를 사용하며,  컴퓨터에 연결된 비디오나 웹캠, 페이스웨어 GoPro, Pro HD 헤드캠 시스템, 그밖에 다른 비디오 캡처 장비들을 카메라로 사용할 수 있다. 페이스웨어 라이브 2.5는 디지털캐릭터와 결합된 라이브 공연, 즉 디지털 캐릭터들이 관객이나 사람들과 라이브로 인터랙션이 가능한 실시간 인형극이나  테마파크, 쇼핑몰 내부의 키오스크 스크린 상에서 실시간 상호작용 디지털 캐릭터로 활용될 수 있다.&lt;br /&gt;
[[파일:2.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 삼성 갤럭시S9의 AR 이모지&lt;br /&gt;
&lt;br /&gt;
카메라로 촬영한 인물 사진을 기반으로 아바타를 만들 수 있는 기능이다. AR 이모지를 만들면 18개 다양한 감정을 표현할 수 있는 gif 이모티콘이 추가되어 메세지, SNS 등에서 이용 가능하다. 눈, 코, 입, 뺨, 이마 등 100개 이상의 얼굴 특징점을 인식 및 분석해 피사체의 표정을 실시간으로 따라해서 동영상으로 촬영할 수 있다. 이외에도 안경을 착용하거나 피부 색깔, 헤어스타일, 헤어컬러, 의상 등을 변경할 수 있다. 하지만 세밀하지 못한 인물 묘사 방식에 논란이 있었다.&lt;br /&gt;
[[파일:3.jpg]]&lt;br /&gt;
[[파일:4.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 애플 iOS11, iOS12의 애니모티콘, 미모지&lt;br /&gt;
&lt;br /&gt;
애플 사의 애니모티콘(애니모지)은 전면 카메라로 촬영한 인물사진을 기반으로 사용자의 표정을 읽은 후, 기존에 있던 이모지에 투사하여 이모티콘을 만들 수 있는 기능이다. 사용자의 얼굴에 3만개 이상의 도트를 투사해 얼굴 맵을 만든 후, 3D 스캔 활용을 통해 50개 이상의 각기 다른 근육의 움직임을 포착하고 분석한다. 분석한 세밀한 표정을 외계인, 고양이, 닭, 개, 여우, 원숭이, 판다. 돼지, 곰돌이, 토끼, 로봇, 유니콘 등 내장된 12개의 애니모티콘에 투영시킨다. 하지만 최근 iOS12의 기능으로 애니모티콘의 개인화 버전인 미모지(memoji)가 발표되었는데, 한정된 캐릭터의 폭을 늘리고 얼굴, 머리, 장신구를 자신의 취향에 맞게 선택할 수 있다. 생성한 애니모티콘을 편집할 수 있으며 아이폰의 메시지 앱에서 이용할 수 있다. 또한 목소리를 녹음하여 오디오가 포함된 비디오 형태로 수신할 수도 있다.&lt;br /&gt;
[[파일:5.jpg]]&lt;br /&gt;
[[파일:6.jpg]]&lt;br /&gt;
&lt;br /&gt;
*특허조사 및 특허 전략 분석&lt;br /&gt;
&lt;br /&gt;
◇ SIFT(Scale Invariant Feature Transform) 알고리즘&lt;br /&gt;
&lt;br /&gt;
● Lowe David G 교수가 개발하였으며 97년도부터 연구하여 프로토 타입의 SIFT알고리즘을 99년도에 발표하였고, 04년도에는 이 알고리즘을 더욱 개량하여 완성된 SIFT알고리즘을 만들게 되었다.&lt;br /&gt;
&lt;br /&gt;
● 영상의 크기와 회전에 불변하는 특징점을 추출하는 알고리즘이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:7.jpg]]&lt;br /&gt;
&lt;br /&gt;
1) Scale-space extrema detection &lt;br /&gt;
&lt;br /&gt;
● Gaussian Pyramid를 생성 한 후 DoG(Difference of Gaussian)을 구해서 극점인 부분을 특징점 후보자로 잡아 준다.&lt;br /&gt;
&lt;br /&gt;
● DoG의 상위와 하위 층까지 모두 합쳐 주변 26개 보다 크거나 모두 작을 때만 특징점 후보자로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이 방법은 특징점을 Scale별로 구하게 되어 Target 물체가 작아져도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:8.jpg]]&lt;br /&gt;
&lt;br /&gt;
2) KeyPoint Localization &lt;br /&gt;
&lt;br /&gt;
● 테일러 급수를 사용하여 더 정확한 극점을 찾은 뒤 테일러 급수로 interpolation하여 그 점의 값을 구하여 특징점 후보자 중에서 정확하지 않는 특징점을 제거한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Orientation Assignment &lt;br /&gt;
&lt;br /&gt;
● 추출된 특징점마다 주 방향을 할당해 주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● 특징점 주변으로 16x16영역을 할당한 후 그 영역 이미지를 Gaussian Blurring을 적용하면 특징점 주변의 영역에 대한 Gradient의 방향과 크기를 결정하게 된다.&lt;br /&gt;
&lt;br /&gt;
● Gradient의 방향과 크기를 구하면 Orientation Histogram을 형성한 후, 가장 값이 큰 것을 해당 Orientation으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
● 회전에 대한 정보가 들어 있기 때문에 물체가 회전해도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
4) KeyPoint Descriptor&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 마다 서술자를 생성해주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● Gaussian Weight Function을 활용하여 서술자를 생성하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 주변으로 16x16의 pixel 영역을 할당하여 아래의 &amp;lt;그림 14&amp;gt;과 같이 Image Gradients를 구한다. 그 후, 서술자 Window 크기의 반값을 Gaussian Weighted function에 곱해주게 된다.&lt;br /&gt;
&lt;br /&gt;
[[파일:9.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 다음으로 히스토그램을 그려주게 되는데 그 전에 먼저 앞에서 구한 Orientation을 빼줘서 Descriptor가 회전에 불변하도록 만들어 준다.&lt;br /&gt;
&lt;br /&gt;
● 객체인식을 할 때는 DB의 각 특징점의 Descriptor를 가지고, 인식할 물체 영상의 Descriptor와 비교하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이때 비슷하면 데이터가 비슷하게 나올 텐데 여기서 사용하는 방법은 유클리드 거리이다.&lt;br /&gt;
● 유클리드 거리의 방식은 연산식이 간단하여 많은 특징점 데이터를 비교하는데 속도면에서 성능이 좋아 많이 사용되는 방식이다. &lt;br /&gt;
&lt;br /&gt;
● 매칭 단계까지 수행되면 DB의 특징점들과 Target의 특징점들 중 매칭된 특징점들이 추출되어 원하는 물체가 어디에 위치하는지 알 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:10.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇SURF&lt;br /&gt;
&lt;br /&gt;
● 알고리즘 순서도 : 특징점 추출 → 주 방향 결정 → descriptor 생성&lt;br /&gt;
&lt;br /&gt;
1) 특징점 추출&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● 수식을 이용하여 적분 영상을 생성한다.&lt;br /&gt;
&lt;br /&gt;
● 적분 영상이란 픽셀 밝기 값을 누적한 형태를 뜻함&lt;br /&gt;
&lt;br /&gt;
● D영역의 밝기 누적 값을 알고 싶다면 ii(4)+ii(1)-ii(2)-ii(3)식을 이용하여 쉽게 D영역의 밝기 누적값을 구할 수 있다.&lt;br /&gt;
&lt;br /&gt;
● 적분영상을 만든 후 헤이시안(Hessian)검출기를 사용하여 특징점을 검출한다. (헤이시안 검출기는 헤이시안 행렬 기반인 특징점 검출 알고리즘으로써 정확성이 높고 행렬식이 최대값인 위치에서 blob을 검출 할 때 사용하게 된다)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● SURF에서는 Hessian_Laplace Detector를 사용하는 대신에 위의 공식대로 FAST Hessian Detector 을 사용하여 수행성능을 향상시킨다.&lt;br /&gt;
&lt;br /&gt;
2) Dxx, Dyy, Dxy박스 필터를 구하는 방법&lt;br /&gt;
&lt;br /&gt;
● Haar Wavelet을 이용 - Dxx와 Dyy를 구할 때는 검은 영역부분을 -2, 흰영역부분은 1을 곱하여 구하고 Dxy는 검은 영역을 -1, 흰영역을 1을 곱하여 구한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) 9x9 박스필터를 이용한 Dxx, Dyy, Dxy를 구하는 방식&lt;br /&gt;
&lt;br /&gt;
● Hessian Determinant 데이터를 이용하여 각 필터 사이즈 별로 특징점을 검출하게 된다. 필터 사이즈란 위의 Dxx, Dyy, Dxy를 구하는 박스필터 영역 사이즈를 의미한다. SURF에서는 박스 필터 영역을 Scale해서 특징점을 추출해 aliasing 이 없는 장점을 가지고 있다.  Hessian Determinant 데이터를 각 픽셀마다 구했으면 각각의 Threshold와 비교하게 된다. &lt;br /&gt;
&lt;br /&gt;
● Threshold보다 값이 크면, 인접한 8개의 픽셀의 Hessian Determinant를 비교하여 큰 값인지 비교하게 된다. 만약 큰 값이면 상하 박스 필터 사이즈의 3x3크기의 각 9개의 Hessina Determinant를 비교하여 가장 클 경우 특징점으로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) 주 방향 결정&lt;br /&gt;
&lt;br /&gt;
● 특징점 중심으로 특징점이 검출된 스케일 정보 s를 이용하여 반지름이 6s의 원 안의 픽셀들에 대하여 x방향과 y방향으로 Haar Wavelet Response인 dx와 dy를 구하게 된다. 윈도우 5도 간격으로 회전하면서 60도 윈도우 내의 벡터의 크기를 더해 가장 큰 크기를 가지는 방향을 특징점의 주 방향으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
5) descriptor 생성&lt;br /&gt;
&lt;br /&gt;
● descriptor는 특징점 주변의 일정한 영역 내에 이웃하고 있는 픽셀의 밝기 변화를 나타낸다.&lt;br /&gt;
&lt;br /&gt;
[[파일:11.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 주 방향과 scale정보 s를 이용하여 특징점 중심으로 20s크기의 윈도우를 위의 그림처럼 구성하고, 구성된 윈도우를 4X4 영역으로 분할하여 16개의 영역으로 나눈다. 분할된 각 영역을 다시 한번 5X5크기로 분할하여 각 픽셀을 haar wavelet filter를 사용하여 각 를 구하여 16개의 영역에 각 위의 4개의 Descriptor를 생성하여 총 64개의 Descriptor를 생성할 수 있게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*기술 로드맵&lt;br /&gt;
&lt;br /&gt;
[[파일:12.jpg]]&lt;br /&gt;
&lt;br /&gt;
====시장상황에 대한 분석====&lt;br /&gt;
&lt;br /&gt;
*경쟁제품 조사 비교&lt;br /&gt;
&lt;br /&gt;
◇ Avatar SDK&lt;br /&gt;
&lt;br /&gt;
하나의 2D 정면 얼굴 사진을 입력하면 3D 아바타 생성 SDK를 사용하여 개인의 아바타를 만들어준다. 딥러닝과 컴퓨터 그래픽 기술을 이용하여 개발하였고, 현재 cloud나 PC, Mac, Android, iOS 환경 모두 이용 가능하다. 아바타로의 변환에는 사진마다 차이가 있지만 약 10초가 소요된다. 만들어진 아바타는 Blendshape, 헤어스타일, 헤어컬러를 변경할 수 있고, 윙크, 웃음, 하품 등 몇몇 특정 표정 변화가 가능하다. 그림은 Avatar SDK를 이용하여 왼쪽 상단의 사진을 입력으로 아바타를 생성한 사진이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:13.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ Mirror AI&lt;br /&gt;
&lt;br /&gt;
스마트폰으로 한장의 셀프 사진을 찍으면, 이를 바탕으로 자신의 모습을 한 몇 백개의 이모지를 생성하여 메신저에서 사용할 수 있는 키보드 어플리케이션이다. 현재 다양한 언어를 지원하고, iOS 10.0 버전 이상만 사용할 수 있다. 학습한 모델을 통해 사람의 얼굴 특징을 식별하고, 이에 맞게 수초 내에 사람의 얼굴 특징을 추려내어 이모티콘을 만든다. 생성된 이모티콘은 이 키보드 어플리케이션을 사용하여 어떤 메신저에서든 사용할 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:14.jpg]]&lt;br /&gt;
&lt;br /&gt;
*마케팅 전략 제시&lt;br /&gt;
&lt;br /&gt;
[[파일:15.jpg]]&lt;br /&gt;
&lt;br /&gt;
===개발과제의 기대효과===&lt;br /&gt;
====기술적 기대효과====&lt;br /&gt;
&lt;br /&gt;
◇ 영화 촬영시 기존에는 모션 센서들을 부착하여 배우들의 표정을 읽어와 캐릭터의 표정과 매핑시켜 부착하는데까지 시간이 오래 걸렸고 많은 기술들이 필요되었는데 만약 이 프로젝트가 성공하게 될 경우, 배우가 표정을 짓는 것만으로 쉽게 캐릭터에 매핑될 수 있도록 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자기가 원하는 캐릭터나 다른 인물 모습의 자신과 같은 표정을 짓는 영상을 만들 수 있을 것이다.&lt;br /&gt;
&lt;br /&gt;
====경제적, 사회적 기대 및 파급효과====&lt;br /&gt;
&lt;br /&gt;
◇ 기존에 영화 촬영시 모션 캡쳐에 필요했던 장비들이 없어도 원하는 캐릭터의 표정을 구현할 수 있어 제작비 절감의 효과가 기대된다. &lt;br /&gt;
&lt;br /&gt;
◇ 현재 실존하지 않는 배우의 모습에 표정을 매핑하여 실제로 연기하는 것처럼 보이게 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자신의 표정을 다른 캐릭터로 매핑함으로써 원래 영상보다 감정 표현을 훨씬 극대화할 수 있다.&lt;br /&gt;
&lt;br /&gt;
===기술개발 일정 및 추진체계===&lt;br /&gt;
====개발 일정====&lt;br /&gt;
내용&lt;br /&gt;
====구성원 및 추진체계====&lt;br /&gt;
&lt;br /&gt;
◇ 전ㅇㅇ(팀장) &lt;br /&gt;
&lt;br /&gt;
● &lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원)&lt;br /&gt;
&lt;br /&gt;
● &lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원) &lt;br /&gt;
&lt;br /&gt;
● &lt;br /&gt;
&lt;br /&gt;
◇ 전원&lt;br /&gt;
&lt;br /&gt;
●&lt;br /&gt;
&lt;br /&gt;
==설계==&lt;br /&gt;
===설계사양===&lt;br /&gt;
====제품의 요구사항====&lt;br /&gt;
내용&lt;br /&gt;
====설계 사양====&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===개념설계안===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 동영상을 ‘Free Video to JPG Converter’를 이용하여 동영상에서 사진을 원하는 프레임 수를 지정하여 JPG파일을 추출한다. &lt;br /&gt;
&lt;br /&gt;
◇ 추출한 JPG파일에 SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)는 대표적인 특징점 추출 알고리즘으로 2차원 영상의 일정 지역에 해당하는 화소를 이용하여 특징점을 추출한다. OpenCV에서 제공하는 함수를 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow 알고리즘을 이용하여 이전 프레임이랑 다음 프레임, 두 개의 연속된 얼굴 프레임 사이에 동작 패턴을 추적한다. Optical Flow 알고리즘 중 Lucas-Kanade(LK)는 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적어 비교적 속도가 빠르기 때문에 Lucas-Kanade를 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ TwinGAN을 이용하여 사람의 얼굴 사진을 캐릭터로 변환한다.&lt;br /&gt;
&lt;br /&gt;
GAN(Generative Adversarial Network)은 상반되는 목적을 가진 두 모듈(판별망, 생성망)이 대결하는 구조를 통해 이미지 생성을 학습하는 이미지 생성 기술의 한 종류이다. 기존 GAN의 단점을 보완하고 paired data가 아닌 unpaired data를 사용했을 때 도메인 간의 매끄러운 변환을 이끌어낼 수 있는 TwinGAN을 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ 추적한 특징점의 벡터를 각 프레임 아바타에 적용한다.&lt;br /&gt;
&lt;br /&gt;
◇ 위 방법이 어려울 경우 TwinGAN으로 각 프레임의 얼굴 이미지를 아바타로 변환하고, 변환한 아바타 사진을 연결하여 gif파일로 만든다. 마찬가지로 사람의 표정 변화를 캐릭터가 똑같이 따라할 수 있도록 한다.&lt;br /&gt;
&lt;br /&gt;
===이론적 계산 및 시뮬레이션===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상 입력 -&amp;gt; 표정을 따라하는 캐릭터 영상 출력&lt;br /&gt;
&lt;br /&gt;
===소프트웨어 설계===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;전체 설계도&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. ‘Free Video to JPG Converter’를 이용하여 동영상을 여러 프레임의 사진으로 전환한다. &lt;br /&gt;
2. 각각의 사진들로부터 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
3. 특징점들의 변화를 이용하여 Optical Flow를 이용하여 특징점의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
4. 1번의 결과 추출된 여러 사진들 중 첫 번째 사진을 TwinGAN을 이용하여 캐릭터로 변환 후 변환된 캐릭터의 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
5. 3번에서 추적한 Optical Flow를 4번에 적용하여 gif파일로 변환한다.&lt;br /&gt;
&lt;br /&gt;
==결과 및 평가==&lt;br /&gt;
===완료 작품의 소개===&lt;br /&gt;
====프로토타입 사진 혹은 작동 장면====&lt;br /&gt;
내용&lt;br /&gt;
====포스터====&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===관련사업비 내역서===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===완료작품의 평가===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===향후계획===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===특허 출원 내용===&lt;br /&gt;
내용&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:12.jpg&amp;diff=997</id>
		<title>파일:12.jpg</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:12.jpg&amp;diff=997"/>
				<updated>2018-12-25T17:45:30Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:11.jpg&amp;diff=996</id>
		<title>파일:11.jpg</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:11.jpg&amp;diff=996"/>
				<updated>2018-12-25T17:45:20Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:10.jpg&amp;diff=995</id>
		<title>파일:10.jpg</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:10.jpg&amp;diff=995"/>
				<updated>2018-12-25T17:45:09Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:9.jpg&amp;diff=994</id>
		<title>파일:9.jpg</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:9.jpg&amp;diff=994"/>
				<updated>2018-12-25T17:45:01Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:8.jpg&amp;diff=993</id>
		<title>파일:8.jpg</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:8.jpg&amp;diff=993"/>
				<updated>2018-12-25T17:44:52Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:7.jpg&amp;diff=992</id>
		<title>파일:7.jpg</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:7.jpg&amp;diff=992"/>
				<updated>2018-12-25T17:44:42Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:6.jpg&amp;diff=991</id>
		<title>파일:6.jpg</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:6.jpg&amp;diff=991"/>
				<updated>2018-12-25T17:44:32Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:5.jpg&amp;diff=990</id>
		<title>파일:5.jpg</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:5.jpg&amp;diff=990"/>
				<updated>2018-12-25T17:44:23Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:4.jpg&amp;diff=989</id>
		<title>파일:4.jpg</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:4.jpg&amp;diff=989"/>
				<updated>2018-12-25T17:44:14Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:3.jpg&amp;diff=988</id>
		<title>파일:3.jpg</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:3.jpg&amp;diff=988"/>
				<updated>2018-12-25T17:44:05Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:2.jpg&amp;diff=987</id>
		<title>파일:2.jpg</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:2.jpg&amp;diff=987"/>
				<updated>2018-12-25T17:43:52Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=986</id>
		<title>DnA(Digital and Actor)조</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=986"/>
				<updated>2018-12-25T17:43:42Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: /* 관련 기술의 현황 및 분석(State of art) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==프로젝트 개요==&lt;br /&gt;
=== 기술개발 과제 ===&lt;br /&gt;
''' 국문 : ''' 디지털 액터 : 얼굴 표정과 표현&lt;br /&gt;
&lt;br /&gt;
''' 영문 : ''' Digital Actor : facial expression, emotion&lt;br /&gt;
&lt;br /&gt;
===과제 팀명===&lt;br /&gt;
DnA (Digital and Actor)&lt;br /&gt;
&lt;br /&gt;
===지도교수===&lt;br /&gt;
홍의경 교수님&lt;br /&gt;
&lt;br /&gt;
===개발기간===&lt;br /&gt;
2018년 9월 ~ 2018년 12월 (총 4개월)&lt;br /&gt;
&lt;br /&gt;
===구성원 소개===&lt;br /&gt;
서울시립대학교 통계학과 20xxxxx0xx 전ㅇㅇ(팀장)&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
==서론==&lt;br /&gt;
===개발 과제의 개요===&lt;br /&gt;
====개발 과제 요약====&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상에서 프레임을 추출하여 각 얼굴 사진의 특징점을 인식하고 Optical Flow 알고리즘을 이용하여 특징점의 움직임을 추적한다. 추적한 특징점의 벡터를 아바타에 적용하여 동영상에서 사람의 표정 변화를 캐릭터가 따라하도록 만든다. 아바타 사진을 연결하여 gif파일로 만들어 마찬가지로 사람의 표정 변화를 캐릭터가 똑같이 따라할 수 있도록 한다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 배경 및 효과====&lt;br /&gt;
◇ 디지털 액터(Digital Actor)란 실제 배우와 동일한 수준의 외형과 동작을 구현할 수 있는 컴퓨터 그래픽(DG) 영상 캐릭터를 의미한다. 킹콩, 요다 등의 실존 인물이 아닌 캐릭터를 만들거나 현실에서 불가능한 장면을 연출하는 등 영상 특수효과, 3D 애니메이션, 게임, VR과 같은 곳에 사용된다. &lt;br /&gt;
&lt;br /&gt;
◇ 모션캡쳐 장비는 현실적인 움직임으로 퀄리티 높은 영상을 보여줄 수 있지만 상당히 고가의 물건이다. 사람의 얼굴 표정을 학습하여 자연스럽게 아바타로 옮길 수 있다면 높은 CG처리 비용을 줄일 수 있을 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
◇ 현재 국내 VR과 AR의 국내 시장의 규모가 점점 넓어지고 있으며 관련 업계에 따르면 그 사장 규모는 2020년 지금의 4~5배 수준으로 성장할 전망이라고 한다. 더딘 기술 진행속도로 인해 개발 속도도 느리지만 기술이 발전할수록 그 성장 속도가 급격히 증가할 것으로 예상되기 때문에 그 속도를 맞추기 위해서는 미리 개발을 준비하는 등의 행동이 필요하다. 이에 관련 기술을 직접 구현해봄으로써 미래의 VR/AR 산업에 보탬이 될 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 목표 및 내용====&lt;br /&gt;
◇ SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)&lt;br /&gt;
&lt;br /&gt;
● 대표적인 특징점 추출 알고리즘&lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘(interest point extraction algorithm)은 2차원 영상의 일정 지역에 해당하는 화소를 이용하여, 영상의 특징이 될 수 있는 특징점을 추출하는 알고리즘이다. 이때 특징점은 코너(corner) 및 블랍(blob)을 의미한다. &lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘에는 SIFT(Scale Invariant Feature Transform), PCA 등 다른 방법도 있지만 인식률과 처리 속도면에서 더 우수한 SURF 알고리즘을 사용한다.&lt;br /&gt;
&lt;br /&gt;
● 블러이미지나 회전된 이미지는 잘 인식하는 장점이 있는 반면 뷰포인트나 조명이 달라지면 특징점을 잘 잡아내지 못하는 단점이 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 SURF에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow&lt;br /&gt;
&lt;br /&gt;
● 두 개의 연속된 비디오 프레임 사이에 이미지 객체의 동작 패턴을 의미한다.&lt;br /&gt;
&lt;br /&gt;
● 이미지 객체의 움직임 패턴은 객체 자체가 움직이거나 카메라의 움직임으로 인해 생성되는데 이전 프레임이랑 다음 프레임 중 변하는 부분의 움직임을 추적&lt;br /&gt;
&lt;br /&gt;
● 보통 움직임을 통한 구조 분석, 비디오 압축, 영상이 흔들렸거나 블러가 된 경우 깨끗한 영상으로 처리하는 기술인 Video Stabilization 분야에 사용된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lucas-Kanade&lt;br /&gt;
&lt;br /&gt;
● Optical Flow알고리즘에는 다양한 알고리즘이 있으나  Lucas-Kanade방법을 이용하기로 한다.&lt;br /&gt;
&lt;br /&gt;
● 한 프레임의 각 피셀 윈도우를 설정하고 다음 프레임에서 이 윈도우와 가장 잘 매칭되는 곳을 찾는 원리로 작동한다.&lt;br /&gt;
&lt;br /&gt;
● 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적다는 장점이 있다.&lt;br /&gt;
&lt;br /&gt;
● 좁은 지역의 윈도우를 사용하기 때문에 이 윈도우보다 큰 움직임이 발생하였을 경우 움직임을 계산하지 못하며 특징점을 사용하여 optical flow를 얻기 때문에 dense optical flow에 비하여 정확도가 낮은 편이다.&lt;br /&gt;
&lt;br /&gt;
● 윈도우를 벗어나는 큰 움직임을 계산하지 못하는 단점을 개선하기 위해 Pyramids Lucas-Kanade 방법을 사용할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 Lucas-Kanade에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
===관련 기술의 현황===&lt;br /&gt;
====관련 기술의 현황 및 분석(State of art)====&lt;br /&gt;
*전 세계적인 기술현황&lt;br /&gt;
&lt;br /&gt;
◇ 페이스웨어 Live&lt;br /&gt;
&lt;br /&gt;
마커리스 3D 페이셜 모션 캡처 솔루션 제공을 선도하는 페이스웨어 테크놀러지(Faceware Technologies, 이하 페이스웨어)가  23일 향상된 실시간 얼굴 모션캡처와 애니메이션 제품인 페이스웨어 라이브(Faceware Live) 2.5 버전을 발표했다. 페이스웨어 라이브는 실시간으로 사용자 얼굴을 자동 추적하고, 얼굴의 움직임을 페이셜 모델에 즉각 적용시킨 페이셜 애니메이션을 생성한다. 페이스웨어 라이브는 움직임 트래킹을 위해 단 하나의 카메라를 사용하며,  컴퓨터에 연결된 비디오나 웹캠, 페이스웨어 GoPro, Pro HD 헤드캠 시스템, 그밖에 다른 비디오 캡처 장비들을 카메라로 사용할 수 있다. 페이스웨어 라이브 2.5는 디지털캐릭터와 결합된 라이브 공연, 즉 디지털 캐릭터들이 관객이나 사람들과 라이브로 인터랙션이 가능한 실시간 인형극이나  테마파크, 쇼핑몰 내부의 키오스크 스크린 상에서 실시간 상호작용 디지털 캐릭터로 활용될 수 있다.&lt;br /&gt;
[[파일:2.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 삼성 갤럭시S9의 AR 이모지&lt;br /&gt;
&lt;br /&gt;
카메라로 촬영한 인물 사진을 기반으로 아바타를 만들 수 있는 기능이다. AR 이모지를 만들면 18개 다양한 감정을 표현할 수 있는 gif 이모티콘이 추가되어 메세지, SNS 등에서 이용 가능하다. 눈, 코, 입, 뺨, 이마 등 100개 이상의 얼굴 특징점을 인식 및 분석해 피사체의 표정을 실시간으로 따라해서 동영상으로 촬영할 수 있다. 이외에도 안경을 착용하거나 피부 색깔, 헤어스타일, 헤어컬러, 의상 등을 변경할 수 있다. 하지만 세밀하지 못한 인물 묘사 방식에 논란이 있었다.&lt;br /&gt;
[[파일:3.jpg]]&lt;br /&gt;
[[파일:4.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 애플 iOS11, iOS12의 애니모티콘, 미모지&lt;br /&gt;
&lt;br /&gt;
애플 사의 애니모티콘(애니모지)은 전면 카메라로 촬영한 인물사진을 기반으로 사용자의 표정을 읽은 후, 기존에 있던 이모지에 투사하여 이모티콘을 만들 수 있는 기능이다. 사용자의 얼굴에 3만개 이상의 도트를 투사해 얼굴 맵을 만든 후, 3D 스캔 활용을 통해 50개 이상의 각기 다른 근육의 움직임을 포착하고 분석한다. 분석한 세밀한 표정을 외계인, 고양이, 닭, 개, 여우, 원숭이, 판다. 돼지, 곰돌이, 토끼, 로봇, 유니콘 등 내장된 12개의 애니모티콘에 투영시킨다. 하지만 최근 iOS12의 기능으로 애니모티콘의 개인화 버전인 미모지(memoji)가 발표되었는데, 한정된 캐릭터의 폭을 늘리고 얼굴, 머리, 장신구를 자신의 취향에 맞게 선택할 수 있다. 생성한 애니모티콘을 편집할 수 있으며 아이폰의 메시지 앱에서 이용할 수 있다. 또한 목소리를 녹음하여 오디오가 포함된 비디오 형태로 수신할 수도 있다.&lt;br /&gt;
[[파일:5.jpg]]&lt;br /&gt;
[[파일:6.jpg]]&lt;br /&gt;
&lt;br /&gt;
*특허조사 및 특허 전략 분석&lt;br /&gt;
&lt;br /&gt;
◇ SIFT(Scale Invariant Feature Transform) 알고리즘&lt;br /&gt;
&lt;br /&gt;
● Lowe David G 교수가 개발하였으며 97년도부터 연구하여 프로토 타입의 SIFT알고리즘을 99년도에 발표하였고, 04년도에는 이 알고리즘을 더욱 개량하여 완성된 SIFT알고리즘을 만들게 되었다.&lt;br /&gt;
&lt;br /&gt;
● 영상의 크기와 회전에 불변하는 특징점을 추출하는 알고리즘이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:7.jpg]]&lt;br /&gt;
&lt;br /&gt;
1) Scale-space extrema detection &lt;br /&gt;
&lt;br /&gt;
● Gaussian Pyramid를 생성 한 후 DoG(Difference of Gaussian)을 구해서 극점인 부분을 특징점 후보자로 잡아 준다.&lt;br /&gt;
&lt;br /&gt;
● DoG의 상위와 하위 층까지 모두 합쳐 주변 26개 보다 크거나 모두 작을 때만 특징점 후보자로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이 방법은 특징점을 Scale별로 구하게 되어 Target 물체가 작아져도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:8.jpg]]&lt;br /&gt;
&lt;br /&gt;
2) KeyPoint Localization &lt;br /&gt;
&lt;br /&gt;
● 테일러 급수를 사용하여 더 정확한 극점을 찾은 뒤 테일러 급수로 interpolation하여 그 점의 값을 구하여 특징점 후보자 중에서 정확하지 않는 특징점을 제거한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Orientation Assignment &lt;br /&gt;
&lt;br /&gt;
● 추출된 특징점마다 주 방향을 할당해 주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● 특징점 주변으로 16x16영역을 할당한 후 그 영역 이미지를 Gaussian Blurring을 적용하면 특징점 주변의 영역에 대한 Gradient의 방향과 크기를 결정하게 된다.&lt;br /&gt;
&lt;br /&gt;
● Gradient의 방향과 크기를 구하면 Orientation Histogram을 형성한 후, 가장 값이 큰 것을 해당 Orientation으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
● 회전에 대한 정보가 들어 있기 때문에 물체가 회전해도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
4) KeyPoint Descriptor&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 마다 서술자를 생성해주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● Gaussian Weight Function을 활용하여 서술자를 생성하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 주변으로 16x16의 pixel 영역을 할당하여 아래의 &amp;lt;그림 14&amp;gt;과 같이 Image Gradients를 구한다. 그 후, 서술자 Window 크기의 반값을 Gaussian Weighted function에 곱해주게 된다.&lt;br /&gt;
&lt;br /&gt;
[[파일:9.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 다음으로 히스토그램을 그려주게 되는데 그 전에 먼저 앞에서 구한 Orientation을 빼줘서 Descriptor가 회전에 불변하도록 만들어 준다.&lt;br /&gt;
&lt;br /&gt;
● 객체인식을 할 때는 DB의 각 특징점의 Descriptor를 가지고, 인식할 물체 영상의 Descriptor와 비교하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이때 비슷하면 데이터가 비슷하게 나올 텐데 여기서 사용하는 방법은 유클리드 거리이다.&lt;br /&gt;
● 유클리드 거리의 방식은 연산식이 간단하여 많은 특징점 데이터를 비교하는데 속도면에서 성능이 좋아 많이 사용되는 방식이다. &lt;br /&gt;
&lt;br /&gt;
● 매칭 단계까지 수행되면 DB의 특징점들과 Target의 특징점들 중 매칭된 특징점들이 추출되어 원하는 물체가 어디에 위치하는지 알 수 있다.&lt;br /&gt;
&lt;br /&gt;
[[파일:10.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇SURF&lt;br /&gt;
&lt;br /&gt;
● 알고리즘 순서도 : 특징점 추출 → 주 방향 결정 → descriptor 생성&lt;br /&gt;
&lt;br /&gt;
1) 특징점 추출&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● 수식을 이용하여 적분 영상을 생성한다.&lt;br /&gt;
&lt;br /&gt;
● 적분 영상이란 픽셀 밝기 값을 누적한 형태를 뜻함&lt;br /&gt;
&lt;br /&gt;
● D영역의 밝기 누적 값을 알고 싶다면 ii(4)+ii(1)-ii(2)-ii(3)식을 이용하여 쉽게 D영역의 밝기 누적값을 구할 수 있다.&lt;br /&gt;
&lt;br /&gt;
● 적분영상을 만든 후 헤이시안(Hessian)검출기를 사용하여 특징점을 검출한다. (헤이시안 검출기는 헤이시안 행렬 기반인 특징점 검출 알고리즘으로써 정확성이 높고 행렬식이 최대값인 위치에서 blob을 검출 할 때 사용하게 된다)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● SURF에서는 Hessian_Laplace Detector를 사용하는 대신에 위의 공식대로 FAST Hessian Detector 을 사용하여 수행성능을 향상시킨다.&lt;br /&gt;
&lt;br /&gt;
2) Dxx, Dyy, Dxy박스 필터를 구하는 방법&lt;br /&gt;
&lt;br /&gt;
● Haar Wavelet을 이용 - Dxx와 Dyy를 구할 때는 검은 영역부분을 -2, 흰영역부분은 1을 곱하여 구하고 Dxy는 검은 영역을 -1, 흰영역을 1을 곱하여 구한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) 9x9 박스필터를 이용한 Dxx, Dyy, Dxy를 구하는 방식&lt;br /&gt;
&lt;br /&gt;
● Hessian Determinant 데이터를 이용하여 각 필터 사이즈 별로 특징점을 검출하게 된다. 필터 사이즈란 위의 Dxx, Dyy, Dxy를 구하는 박스필터 영역 사이즈를 의미한다. SURF에서는 박스 필터 영역을 Scale해서 특징점을 추출해 aliasing 이 없는 장점을 가지고 있다.  Hessian Determinant 데이터를 각 픽셀마다 구했으면 각각의 Threshold와 비교하게 된다. &lt;br /&gt;
&lt;br /&gt;
● Threshold보다 값이 크면, 인접한 8개의 픽셀의 Hessian Determinant를 비교하여 큰 값인지 비교하게 된다. 만약 큰 값이면 상하 박스 필터 사이즈의 3x3크기의 각 9개의 Hessina Determinant를 비교하여 가장 클 경우 특징점으로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) 주 방향 결정&lt;br /&gt;
&lt;br /&gt;
● 특징점 중심으로 특징점이 검출된 스케일 정보 s를 이용하여 반지름이 6s의 원 안의 픽셀들에 대하여 x방향과 y방향으로 Haar Wavelet Response인 dx와 dy를 구하게 된다. 윈도우 5도 간격으로 회전하면서 60도 윈도우 내의 벡터의 크기를 더해 가장 큰 크기를 가지는 방향을 특징점의 주 방향으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
5) descriptor 생성&lt;br /&gt;
&lt;br /&gt;
● descriptor는 특징점 주변의 일정한 영역 내에 이웃하고 있는 픽셀의 밝기 변화를 나타낸다.&lt;br /&gt;
&lt;br /&gt;
[[파일:11.jpg]]&lt;br /&gt;
&lt;br /&gt;
● 주 방향과 scale정보 s를 이용하여 특징점 중심으로 20s크기의 윈도우를 위의 그림처럼 구성하고, 구성된 윈도우를 4X4 영역으로 분할하여 16개의 영역으로 나눈다. 분할된 각 영역을 다시 한번 5X5크기로 분할하여 각 픽셀을 haar wavelet filter를 사용하여 각 를 구하여 16개의 영역에 각 위의 4개의 Descriptor를 생성하여 총 64개의 Descriptor를 생성할 수 있게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*기술 로드맵&lt;br /&gt;
&lt;br /&gt;
[[파일:12.jpg]]&lt;br /&gt;
&lt;br /&gt;
====시장상황에 대한 분석====&lt;br /&gt;
&lt;br /&gt;
*경쟁제품 조사 비교&lt;br /&gt;
&lt;br /&gt;
 ◇ Avatar SDK&lt;br /&gt;
&lt;br /&gt;
하나의 2D 정면 얼굴 사진을 입력하면 3D 아바타 생성 SDK를 사용하여 개인의 아바타를 만들어준다. 딥러닝과 컴퓨터 그래픽 기술을 이용하여 개발하였고, 현재 cloud나 PC, Mac, Android, iOS 환경 모두 이용 가능하다. 아바타로의 변환에는 사진마다 차이가 있지만 약 10초가 소요된다. 만들어진 아바타는 Blendshape, 헤어스타일, 헤어컬러를 변경할 수 있고, 윙크, 웃음, 하품 등 몇몇 특정 표정 변화가 가능하다. &amp;lt;그림 17&amp;gt;은 Avatar SDK를 이용하여 왼쪽 상단의 사진을 입력으로 아바타를 생성한 사진이다.&lt;br /&gt;
&lt;br /&gt;
◇ Mirror AI&lt;br /&gt;
&lt;br /&gt;
스마트폰으로 한장의 셀프 사진을 찍으면, 이를 바탕으로 자신의 모습을 한 몇 백개의 이모지를 생성하여 메신저에서 사용할 수 있는 키보드 어플리케이션이다. 현재 다양한 언어를 지원하고, iOS 10.0 버전 이상만 사용할 수 있다. 학습한 모델을 통해 사람의 얼굴 특징을 식별하고, 이에 맞게 수초 내에 사람의 얼굴 특징을 추려내어 이모티콘을 만든다. 생성된 이모티콘은 이 키보드 어플리케이션을 사용하여 어떤 메신저에서든 사용할 수 있다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*마케팅 전략 제시&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===개발과제의 기대효과===&lt;br /&gt;
====기술적 기대효과====&lt;br /&gt;
&lt;br /&gt;
◇ 영화 촬영시 기존에는 모션 센서들을 부착하여 배우들의 표정을 읽어와 캐릭터의 표정과 매핑시켜 부착하는데까지 시간이 오래 걸렸고 많은 기술들이 필요되었는데 만약 이 프로젝트가 성공하게 될 경우, 배우가 표정을 짓는 것만으로 쉽게 캐릭터에 매핑될 수 있도록 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자기가 원하는 캐릭터나 다른 인물 모습의 자신과 같은 표정을 짓는 영상을 만들 수 있을 것이다.&lt;br /&gt;
&lt;br /&gt;
====경제적, 사회적 기대 및 파급효과====&lt;br /&gt;
&lt;br /&gt;
◇ 기존에 영화 촬영시 모션 캡쳐에 필요했던 장비들이 없어도 원하는 캐릭터의 표정을 구현할 수 있어 제작비 절감의 효과가 기대된다. &lt;br /&gt;
&lt;br /&gt;
◇ 현재 실존하지 않는 배우의 모습에 표정을 매핑하여 실제로 연기하는 것처럼 보이게 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자신의 표정을 다른 캐릭터로 매핑함으로써 원래 영상보다 감정 표현을 훨씬 극대화할 수 있다.&lt;br /&gt;
&lt;br /&gt;
===기술개발 일정 및 추진체계===&lt;br /&gt;
====개발 일정====&lt;br /&gt;
내용&lt;br /&gt;
====구성원 및 추진체계====&lt;br /&gt;
&lt;br /&gt;
◇ 전ㅇㅇ(팀장) &lt;br /&gt;
&lt;br /&gt;
● &lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원)&lt;br /&gt;
&lt;br /&gt;
● &lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원) &lt;br /&gt;
&lt;br /&gt;
● &lt;br /&gt;
&lt;br /&gt;
◇ 전원&lt;br /&gt;
&lt;br /&gt;
●&lt;br /&gt;
&lt;br /&gt;
==설계==&lt;br /&gt;
===설계사양===&lt;br /&gt;
====제품의 요구사항====&lt;br /&gt;
내용&lt;br /&gt;
====설계 사양====&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===개념설계안===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 동영상을 ‘Free Video to JPG Converter’를 이용하여 동영상에서 사진을 원하는 프레임 수를 지정하여 JPG파일을 추출한다. &lt;br /&gt;
&lt;br /&gt;
◇ 추출한 JPG파일에 SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)는 대표적인 특징점 추출 알고리즘으로 2차원 영상의 일정 지역에 해당하는 화소를 이용하여 특징점을 추출한다. OpenCV에서 제공하는 함수를 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow 알고리즘을 이용하여 이전 프레임이랑 다음 프레임, 두 개의 연속된 얼굴 프레임 사이에 동작 패턴을 추적한다. Optical Flow 알고리즘 중 Lucas-Kanade(LK)는 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적어 비교적 속도가 빠르기 때문에 Lucas-Kanade를 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ TwinGAN을 이용하여 사람의 얼굴 사진을 캐릭터로 변환한다.&lt;br /&gt;
&lt;br /&gt;
GAN(Generative Adversarial Network)은 상반되는 목적을 가진 두 모듈(판별망, 생성망)이 대결하는 구조를 통해 이미지 생성을 학습하는 이미지 생성 기술의 한 종류이다. 기존 GAN의 단점을 보완하고 paired data가 아닌 unpaired data를 사용했을 때 도메인 간의 매끄러운 변환을 이끌어낼 수 있는 TwinGAN을 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ 추적한 특징점의 벡터를 각 프레임 아바타에 적용한다.&lt;br /&gt;
&lt;br /&gt;
◇ 위 방법이 어려울 경우 TwinGAN으로 각 프레임의 얼굴 이미지를 아바타로 변환하고, 변환한 아바타 사진을 연결하여 gif파일로 만든다. 마찬가지로 사람의 표정 변화를 캐릭터가 똑같이 따라할 수 있도록 한다.&lt;br /&gt;
&lt;br /&gt;
===이론적 계산 및 시뮬레이션===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상 입력 -&amp;gt; 표정을 따라하는 캐릭터 영상 출력&lt;br /&gt;
&lt;br /&gt;
===소프트웨어 설계===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;전체 설계도&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. ‘Free Video to JPG Converter’를 이용하여 동영상을 여러 프레임의 사진으로 전환한다. &lt;br /&gt;
2. 각각의 사진들로부터 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
3. 특징점들의 변화를 이용하여 Optical Flow를 이용하여 특징점의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
4. 1번의 결과 추출된 여러 사진들 중 첫 번째 사진을 TwinGAN을 이용하여 캐릭터로 변환 후 변환된 캐릭터의 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
5. 3번에서 추적한 Optical Flow를 4번에 적용하여 gif파일로 변환한다.&lt;br /&gt;
&lt;br /&gt;
==결과 및 평가==&lt;br /&gt;
===완료 작품의 소개===&lt;br /&gt;
====프로토타입 사진 혹은 작동 장면====&lt;br /&gt;
내용&lt;br /&gt;
====포스터====&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===관련사업비 내역서===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===완료작품의 평가===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===향후계획===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===특허 출원 내용===&lt;br /&gt;
내용&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=985</id>
		<title>DnA(Digital and Actor)조</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=985"/>
				<updated>2018-12-25T17:40:36Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: /* 관련 기술의 현황 및 분석(State of art) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==프로젝트 개요==&lt;br /&gt;
=== 기술개발 과제 ===&lt;br /&gt;
''' 국문 : ''' 디지털 액터 : 얼굴 표정과 표현&lt;br /&gt;
&lt;br /&gt;
''' 영문 : ''' Digital Actor : facial expression, emotion&lt;br /&gt;
&lt;br /&gt;
===과제 팀명===&lt;br /&gt;
DnA (Digital and Actor)&lt;br /&gt;
&lt;br /&gt;
===지도교수===&lt;br /&gt;
홍의경 교수님&lt;br /&gt;
&lt;br /&gt;
===개발기간===&lt;br /&gt;
2018년 9월 ~ 2018년 12월 (총 4개월)&lt;br /&gt;
&lt;br /&gt;
===구성원 소개===&lt;br /&gt;
서울시립대학교 통계학과 20xxxxx0xx 전ㅇㅇ(팀장)&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
==서론==&lt;br /&gt;
===개발 과제의 개요===&lt;br /&gt;
====개발 과제 요약====&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상에서 프레임을 추출하여 각 얼굴 사진의 특징점을 인식하고 Optical Flow 알고리즘을 이용하여 특징점의 움직임을 추적한다. 추적한 특징점의 벡터를 아바타에 적용하여 동영상에서 사람의 표정 변화를 캐릭터가 따라하도록 만든다. 아바타 사진을 연결하여 gif파일로 만들어 마찬가지로 사람의 표정 변화를 캐릭터가 똑같이 따라할 수 있도록 한다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 배경 및 효과====&lt;br /&gt;
◇ 디지털 액터(Digital Actor)란 실제 배우와 동일한 수준의 외형과 동작을 구현할 수 있는 컴퓨터 그래픽(DG) 영상 캐릭터를 의미한다. 킹콩, 요다 등의 실존 인물이 아닌 캐릭터를 만들거나 현실에서 불가능한 장면을 연출하는 등 영상 특수효과, 3D 애니메이션, 게임, VR과 같은 곳에 사용된다. &lt;br /&gt;
&lt;br /&gt;
◇ 모션캡쳐 장비는 현실적인 움직임으로 퀄리티 높은 영상을 보여줄 수 있지만 상당히 고가의 물건이다. 사람의 얼굴 표정을 학습하여 자연스럽게 아바타로 옮길 수 있다면 높은 CG처리 비용을 줄일 수 있을 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
◇ 현재 국내 VR과 AR의 국내 시장의 규모가 점점 넓어지고 있으며 관련 업계에 따르면 그 사장 규모는 2020년 지금의 4~5배 수준으로 성장할 전망이라고 한다. 더딘 기술 진행속도로 인해 개발 속도도 느리지만 기술이 발전할수록 그 성장 속도가 급격히 증가할 것으로 예상되기 때문에 그 속도를 맞추기 위해서는 미리 개발을 준비하는 등의 행동이 필요하다. 이에 관련 기술을 직접 구현해봄으로써 미래의 VR/AR 산업에 보탬이 될 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 목표 및 내용====&lt;br /&gt;
◇ SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)&lt;br /&gt;
&lt;br /&gt;
● 대표적인 특징점 추출 알고리즘&lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘(interest point extraction algorithm)은 2차원 영상의 일정 지역에 해당하는 화소를 이용하여, 영상의 특징이 될 수 있는 특징점을 추출하는 알고리즘이다. 이때 특징점은 코너(corner) 및 블랍(blob)을 의미한다. &lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘에는 SIFT(Scale Invariant Feature Transform), PCA 등 다른 방법도 있지만 인식률과 처리 속도면에서 더 우수한 SURF 알고리즘을 사용한다.&lt;br /&gt;
&lt;br /&gt;
● 블러이미지나 회전된 이미지는 잘 인식하는 장점이 있는 반면 뷰포인트나 조명이 달라지면 특징점을 잘 잡아내지 못하는 단점이 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 SURF에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow&lt;br /&gt;
&lt;br /&gt;
● 두 개의 연속된 비디오 프레임 사이에 이미지 객체의 동작 패턴을 의미한다.&lt;br /&gt;
&lt;br /&gt;
● 이미지 객체의 움직임 패턴은 객체 자체가 움직이거나 카메라의 움직임으로 인해 생성되는데 이전 프레임이랑 다음 프레임 중 변하는 부분의 움직임을 추적&lt;br /&gt;
&lt;br /&gt;
● 보통 움직임을 통한 구조 분석, 비디오 압축, 영상이 흔들렸거나 블러가 된 경우 깨끗한 영상으로 처리하는 기술인 Video Stabilization 분야에 사용된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lucas-Kanade&lt;br /&gt;
&lt;br /&gt;
● Optical Flow알고리즘에는 다양한 알고리즘이 있으나  Lucas-Kanade방법을 이용하기로 한다.&lt;br /&gt;
&lt;br /&gt;
● 한 프레임의 각 피셀 윈도우를 설정하고 다음 프레임에서 이 윈도우와 가장 잘 매칭되는 곳을 찾는 원리로 작동한다.&lt;br /&gt;
&lt;br /&gt;
● 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적다는 장점이 있다.&lt;br /&gt;
&lt;br /&gt;
● 좁은 지역의 윈도우를 사용하기 때문에 이 윈도우보다 큰 움직임이 발생하였을 경우 움직임을 계산하지 못하며 특징점을 사용하여 optical flow를 얻기 때문에 dense optical flow에 비하여 정확도가 낮은 편이다.&lt;br /&gt;
&lt;br /&gt;
● 윈도우를 벗어나는 큰 움직임을 계산하지 못하는 단점을 개선하기 위해 Pyramids Lucas-Kanade 방법을 사용할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 Lucas-Kanade에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
===관련 기술의 현황===&lt;br /&gt;
====관련 기술의 현황 및 분석(State of art)====&lt;br /&gt;
*전 세계적인 기술현황&lt;br /&gt;
&lt;br /&gt;
◇ 페이스웨어 Live&lt;br /&gt;
&lt;br /&gt;
마커리스 3D 페이셜 모션 캡처 솔루션 제공을 선도하는 페이스웨어 테크놀러지(Faceware Technologies, 이하 페이스웨어)가  23일 향상된 실시간 얼굴 모션캡처와 애니메이션 제품인 페이스웨어 라이브(Faceware Live) 2.5 버전을 발표했다. 페이스웨어 라이브는 실시간으로 사용자 얼굴을 자동 추적하고, 얼굴의 움직임을 페이셜 모델에 즉각 적용시킨 페이셜 애니메이션을 생성한다. 페이스웨어 라이브는 움직임 트래킹을 위해 단 하나의 카메라를 사용하며,  컴퓨터에 연결된 비디오나 웹캠, 페이스웨어 GoPro, Pro HD 헤드캠 시스템, 그밖에 다른 비디오 캡처 장비들을 카메라로 사용할 수 있다. 페이스웨어 라이브 2.5는 디지털캐릭터와 결합된 라이브 공연, 즉 디지털 캐릭터들이 관객이나 사람들과 라이브로 인터랙션이 가능한 실시간 인형극이나  테마파크, 쇼핑몰 내부의 키오스크 스크린 상에서 실시간 상호작용 디지털 캐릭터로 활용될 수 있다.&lt;br /&gt;
[[파일:2.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 삼성 갤럭시S9의 AR 이모지&lt;br /&gt;
&lt;br /&gt;
카메라로 촬영한 인물 사진을 기반으로 아바타를 만들 수 있는 기능이다. AR 이모지를 만들면 18개 다양한 감정을 표현할 수 있는 gif 이모티콘이 추가되어 메세지, SNS 등에서 이용 가능하다. 눈, 코, 입, 뺨, 이마 등 100개 이상의 얼굴 특징점을 인식 및 분석해 피사체의 표정을 실시간으로 따라해서 동영상으로 촬영할 수 있다. 이외에도 안경을 착용하거나 피부 색깔, 헤어스타일, 헤어컬러, 의상 등을 변경할 수 있다. 하지만 세밀하지 못한 인물 묘사 방식에 논란이 있었다.&lt;br /&gt;
[[파일:3.jpg]]&lt;br /&gt;
[[파일:4.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 애플 iOS11, iOS12의 애니모티콘, 미모지&lt;br /&gt;
&lt;br /&gt;
애플 사의 애니모티콘(애니모지)은 전면 카메라로 촬영한 인물사진을 기반으로 사용자의 표정을 읽은 후, 기존에 있던 이모지에 투사하여 이모티콘을 만들 수 있는 기능이다. 사용자의 얼굴에 3만개 이상의 도트를 투사해 얼굴 맵을 만든 후, 3D 스캔 활용을 통해 50개 이상의 각기 다른 근육의 움직임을 포착하고 분석한다. 분석한 세밀한 표정을 외계인, 고양이, 닭, 개, 여우, 원숭이, 판다. 돼지, 곰돌이, 토끼, 로봇, 유니콘 등 내장된 12개의 애니모티콘에 투영시킨다. 하지만 최근 iOS12의 기능으로 애니모티콘의 개인화 버전인 미모지(memoji)가 발표되었는데, 한정된 캐릭터의 폭을 늘리고 얼굴, 머리, 장신구를 자신의 취향에 맞게 선택할 수 있다. 생성한 애니모티콘을 편집할 수 있으며 아이폰의 메시지 앱에서 이용할 수 있다. 또한 목소리를 녹음하여 오디오가 포함된 비디오 형태로 수신할 수도 있다.&lt;br /&gt;
[[파일:5.jpg]]&lt;br /&gt;
[[파일:6.jpg]]&lt;br /&gt;
&lt;br /&gt;
*특허조사 및 특허 전략 분석&lt;br /&gt;
&lt;br /&gt;
◇ SIFT(Scale Invariant Feature Transform) 알고리즘&lt;br /&gt;
&lt;br /&gt;
● Lowe David G 교수가 개발하였으며 97년도부터 연구하여 프로토 타입의 SIFT알고리즘을 99년도에 발표하였고, 04년도에는 이 알고리즘을 더욱 개량하여 완성된 SIFT알고리즘을 만들게 되었다.&lt;br /&gt;
&lt;br /&gt;
● 영상의 크기와 회전에 불변하는 특징점을 추출하는 알고리즘이다.&lt;br /&gt;
&lt;br /&gt;
1) Scale-space extrema detection &lt;br /&gt;
&lt;br /&gt;
● Gaussian Pyramid를 생성 한 후 DoG(Difference of Gaussian)을 구해서 극점인 부분을 특징점 후보자로 잡아 준다.&lt;br /&gt;
&lt;br /&gt;
● DoG의 상위와 하위 층까지 모두 합쳐 주변 26개 보다 크거나 모두 작을 때만 특징점 후보자로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이 방법은 특징점을 Scale별로 구하게 되어 Target 물체가 작아져도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) KeyPoint Localization &lt;br /&gt;
&lt;br /&gt;
● 테일러 급수를 사용하여 더 정확한 극점을 찾은 뒤 테일러 급수로 interpolation하여 그 점의 값을 구하여 특징점 후보자 중에서 정확하지 않는 특징점을 제거한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Orientation Assignment &lt;br /&gt;
&lt;br /&gt;
● 추출된 특징점마다 주 방향을 할당해 주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● 특징점 주변으로 16x16영역을 할당한 후 그 영역 이미지를 Gaussian Blurring을 적용하면 특징점 주변의 영역에 대한 Gradient의 방향과 크기를 결정하게 된다.&lt;br /&gt;
&lt;br /&gt;
● Gradient의 방향과 크기를 구하면 Orientation Histogram을 형성한 후, 가장 값이 큰 것을 해당 Orientation으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
● 회전에 대한 정보가 들어 있기 때문에 물체가 회전해도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
4) KeyPoint Descriptor&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 마다 서술자를 생성해주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● Gaussian Weight Function을 활용하여 서술자를 생성하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 주변으로 16x16의 pixel 영역을 할당하여 아래의 &amp;lt;그림 14&amp;gt;과 같이 Image Gradients를 구한다. 그 후, 서술자 Window 크기의 반값을 Gaussian Weighted function에 곱해주게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● 다음으로 히스토그램을 그려주게 되는데 그 전에 먼저 앞에서 구한 Orientation을 빼줘서 Descriptor가 회전에 불변하도록 만들어 준다.&lt;br /&gt;
&lt;br /&gt;
● 객체인식을 할 때는 DB의 각 특징점의 Descriptor를 가지고, 인식할 물체 영상의 Descriptor와 비교하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이때 비슷하면 데이터가 비슷하게 나올 텐데 여기서 사용하는 방법은 유클리드 거리이다.&lt;br /&gt;
● 유클리드 거리의 방식은 연산식이 간단하여 많은 특징점 데이터를 비교하는데 속도면에서 성능이 좋아 많이 사용되는 방식이다. &lt;br /&gt;
&lt;br /&gt;
● 매칭 단계까지 수행되면 DB의 특징점들과 Target의 특징점들 중 매칭된 특징점들이 추출되어 원하는 물체가 어디에 위치하는지 알 수 있다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
◇SURF&lt;br /&gt;
&lt;br /&gt;
● 알고리즘 순서도 : 특징점 추출 → 주 방향 결정 → descriptor 생성&lt;br /&gt;
&lt;br /&gt;
1) 특징점 추출&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● 수식을 이용하여 적분 영상을 생성한다.&lt;br /&gt;
&lt;br /&gt;
● 적분 영상이란 픽셀 밝기 값을 누적한 형태를 뜻함&lt;br /&gt;
&lt;br /&gt;
● D영역의 밝기 누적 값을 알고 싶다면 ii(4)+ii(1)-ii(2)-ii(3)식을 이용하여 쉽게 D영역의 밝기 누적값을 구할 수 있다.&lt;br /&gt;
&lt;br /&gt;
● 적분영상을 만든 후 헤이시안(Hessian)검출기를 사용하여 특징점을 검출한다. (헤이시안 검출기는 헤이시안 행렬 기반인 특징점 검출 알고리즘으로써 정확성이 높고 행렬식이 최대값인 위치에서 blob을 검출 할 때 사용하게 된다)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● SURF에서는 Hessian_Laplace Detector를 사용하는 대신에 위의 공식대로 FAST Hessian Detector 을 사용하여 수행성능을 향상시킨다.&lt;br /&gt;
&lt;br /&gt;
2) Dxx, Dyy, Dxy박스 필터를 구하는 방법&lt;br /&gt;
&lt;br /&gt;
● Haar Wavelet을 이용 - Dxx와 Dyy를 구할 때는 검은 영역부분을 -2, 흰영역부분은 1을 곱하여 구하고 Dxy는 검은 영역을 -1, 흰영역을 1을 곱하여 구한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) 9x9 박스필터를 이용한 Dxx, Dyy, Dxy를 구하는 방식&lt;br /&gt;
&lt;br /&gt;
● Hessian Determinant 데이터를 이용하여 각 필터 사이즈 별로 특징점을 검출하게 된다. 필터 사이즈란 위의 Dxx, Dyy, Dxy를 구하는 박스필터 영역 사이즈를 의미한다. SURF에서는 박스 필터 영역을 Scale해서 특징점을 추출해 aliasing 이 없는 장점을 가지고 있다.  Hessian Determinant 데이터를 각 픽셀마다 구했으면 각각의 Threshold와 비교하게 된다. &lt;br /&gt;
&lt;br /&gt;
● Threshold보다 값이 크면, 인접한 8개의 픽셀의 Hessian Determinant를 비교하여 큰 값인지 비교하게 된다. 만약 큰 값이면 상하 박스 필터 사이즈의 3x3크기의 각 9개의 Hessina Determinant를 비교하여 가장 클 경우 특징점으로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) 주 방향 결정&lt;br /&gt;
&lt;br /&gt;
● 특징점 중심으로 특징점이 검출된 스케일 정보 s를 이용하여 반지름이 6s의 원 안의 픽셀들에 대하여 x방향과 y방향으로 Haar Wavelet Response인 dx와 dy를 구하게 된다. 윈도우 5도 간격으로 회전하면서 60도 윈도우 내의 벡터의 크기를 더해 가장 큰 크기를 가지는 방향을 특징점의 주 방향으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
5) descriptor 생성&lt;br /&gt;
&lt;br /&gt;
● descriptor는 특징점 주변의 일정한 영역 내에 이웃하고 있는 픽셀의 밝기 변화를 나타낸다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● 주 방향과 scale정보 s를 이용하여 특징점 중심으로 20s크기의 윈도우를 위의 그림처럼 구성하고, 구성된 윈도우를 4X4 영역으로 분할하여 16개의 영역으로 나눈다. 분할된 각 영역을 다시 한번 5X5크기로 분할하여 각 픽셀을 haar wavelet filter를 사용하여 각 를 구하여 16개의 영역에 각 위의 4개의 Descriptor를 생성하여 총 64개의 Descriptor를 생성할 수 있게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*기술 로드맵&lt;br /&gt;
&lt;br /&gt;
====시장상황에 대한 분석====&lt;br /&gt;
&lt;br /&gt;
*경쟁제품 조사 비교&lt;br /&gt;
&lt;br /&gt;
 ◇ Avatar SDK&lt;br /&gt;
&lt;br /&gt;
하나의 2D 정면 얼굴 사진을 입력하면 3D 아바타 생성 SDK를 사용하여 개인의 아바타를 만들어준다. 딥러닝과 컴퓨터 그래픽 기술을 이용하여 개발하였고, 현재 cloud나 PC, Mac, Android, iOS 환경 모두 이용 가능하다. 아바타로의 변환에는 사진마다 차이가 있지만 약 10초가 소요된다. 만들어진 아바타는 Blendshape, 헤어스타일, 헤어컬러를 변경할 수 있고, 윙크, 웃음, 하품 등 몇몇 특정 표정 변화가 가능하다. &amp;lt;그림 17&amp;gt;은 Avatar SDK를 이용하여 왼쪽 상단의 사진을 입력으로 아바타를 생성한 사진이다.&lt;br /&gt;
&lt;br /&gt;
◇ Mirror AI&lt;br /&gt;
&lt;br /&gt;
스마트폰으로 한장의 셀프 사진을 찍으면, 이를 바탕으로 자신의 모습을 한 몇 백개의 이모지를 생성하여 메신저에서 사용할 수 있는 키보드 어플리케이션이다. 현재 다양한 언어를 지원하고, iOS 10.0 버전 이상만 사용할 수 있다. 학습한 모델을 통해 사람의 얼굴 특징을 식별하고, 이에 맞게 수초 내에 사람의 얼굴 특징을 추려내어 이모티콘을 만든다. 생성된 이모티콘은 이 키보드 어플리케이션을 사용하여 어떤 메신저에서든 사용할 수 있다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*마케팅 전략 제시&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===개발과제의 기대효과===&lt;br /&gt;
====기술적 기대효과====&lt;br /&gt;
&lt;br /&gt;
◇ 영화 촬영시 기존에는 모션 센서들을 부착하여 배우들의 표정을 읽어와 캐릭터의 표정과 매핑시켜 부착하는데까지 시간이 오래 걸렸고 많은 기술들이 필요되었는데 만약 이 프로젝트가 성공하게 될 경우, 배우가 표정을 짓는 것만으로 쉽게 캐릭터에 매핑될 수 있도록 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자기가 원하는 캐릭터나 다른 인물 모습의 자신과 같은 표정을 짓는 영상을 만들 수 있을 것이다.&lt;br /&gt;
&lt;br /&gt;
====경제적, 사회적 기대 및 파급효과====&lt;br /&gt;
&lt;br /&gt;
◇ 기존에 영화 촬영시 모션 캡쳐에 필요했던 장비들이 없어도 원하는 캐릭터의 표정을 구현할 수 있어 제작비 절감의 효과가 기대된다. &lt;br /&gt;
&lt;br /&gt;
◇ 현재 실존하지 않는 배우의 모습에 표정을 매핑하여 실제로 연기하는 것처럼 보이게 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자신의 표정을 다른 캐릭터로 매핑함으로써 원래 영상보다 감정 표현을 훨씬 극대화할 수 있다.&lt;br /&gt;
&lt;br /&gt;
===기술개발 일정 및 추진체계===&lt;br /&gt;
====개발 일정====&lt;br /&gt;
내용&lt;br /&gt;
====구성원 및 추진체계====&lt;br /&gt;
&lt;br /&gt;
◇ 전ㅇㅇ(팀장) &lt;br /&gt;
&lt;br /&gt;
● &lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원)&lt;br /&gt;
&lt;br /&gt;
● &lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원) &lt;br /&gt;
&lt;br /&gt;
● &lt;br /&gt;
&lt;br /&gt;
◇ 전원&lt;br /&gt;
&lt;br /&gt;
●&lt;br /&gt;
&lt;br /&gt;
==설계==&lt;br /&gt;
===설계사양===&lt;br /&gt;
====제품의 요구사항====&lt;br /&gt;
내용&lt;br /&gt;
====설계 사양====&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===개념설계안===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 동영상을 ‘Free Video to JPG Converter’를 이용하여 동영상에서 사진을 원하는 프레임 수를 지정하여 JPG파일을 추출한다. &lt;br /&gt;
&lt;br /&gt;
◇ 추출한 JPG파일에 SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)는 대표적인 특징점 추출 알고리즘으로 2차원 영상의 일정 지역에 해당하는 화소를 이용하여 특징점을 추출한다. OpenCV에서 제공하는 함수를 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow 알고리즘을 이용하여 이전 프레임이랑 다음 프레임, 두 개의 연속된 얼굴 프레임 사이에 동작 패턴을 추적한다. Optical Flow 알고리즘 중 Lucas-Kanade(LK)는 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적어 비교적 속도가 빠르기 때문에 Lucas-Kanade를 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ TwinGAN을 이용하여 사람의 얼굴 사진을 캐릭터로 변환한다.&lt;br /&gt;
&lt;br /&gt;
GAN(Generative Adversarial Network)은 상반되는 목적을 가진 두 모듈(판별망, 생성망)이 대결하는 구조를 통해 이미지 생성을 학습하는 이미지 생성 기술의 한 종류이다. 기존 GAN의 단점을 보완하고 paired data가 아닌 unpaired data를 사용했을 때 도메인 간의 매끄러운 변환을 이끌어낼 수 있는 TwinGAN을 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ 추적한 특징점의 벡터를 각 프레임 아바타에 적용한다.&lt;br /&gt;
&lt;br /&gt;
◇ 위 방법이 어려울 경우 TwinGAN으로 각 프레임의 얼굴 이미지를 아바타로 변환하고, 변환한 아바타 사진을 연결하여 gif파일로 만든다. 마찬가지로 사람의 표정 변화를 캐릭터가 똑같이 따라할 수 있도록 한다.&lt;br /&gt;
&lt;br /&gt;
===이론적 계산 및 시뮬레이션===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상 입력 -&amp;gt; 표정을 따라하는 캐릭터 영상 출력&lt;br /&gt;
&lt;br /&gt;
===소프트웨어 설계===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;전체 설계도&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. ‘Free Video to JPG Converter’를 이용하여 동영상을 여러 프레임의 사진으로 전환한다. &lt;br /&gt;
2. 각각의 사진들로부터 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
3. 특징점들의 변화를 이용하여 Optical Flow를 이용하여 특징점의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
4. 1번의 결과 추출된 여러 사진들 중 첫 번째 사진을 TwinGAN을 이용하여 캐릭터로 변환 후 변환된 캐릭터의 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
5. 3번에서 추적한 Optical Flow를 4번에 적용하여 gif파일로 변환한다.&lt;br /&gt;
&lt;br /&gt;
==결과 및 평가==&lt;br /&gt;
===완료 작품의 소개===&lt;br /&gt;
====프로토타입 사진 혹은 작동 장면====&lt;br /&gt;
내용&lt;br /&gt;
====포스터====&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===관련사업비 내역서===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===완료작품의 평가===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===향후계획===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===특허 출원 내용===&lt;br /&gt;
내용&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=984</id>
		<title>DnA(Digital and Actor)조</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=984"/>
				<updated>2018-12-25T17:39:41Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: /* 관련 기술의 현황 및 분석(State of art) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==프로젝트 개요==&lt;br /&gt;
=== 기술개발 과제 ===&lt;br /&gt;
''' 국문 : ''' 디지털 액터 : 얼굴 표정과 표현&lt;br /&gt;
&lt;br /&gt;
''' 영문 : ''' Digital Actor : facial expression, emotion&lt;br /&gt;
&lt;br /&gt;
===과제 팀명===&lt;br /&gt;
DnA (Digital and Actor)&lt;br /&gt;
&lt;br /&gt;
===지도교수===&lt;br /&gt;
홍의경 교수님&lt;br /&gt;
&lt;br /&gt;
===개발기간===&lt;br /&gt;
2018년 9월 ~ 2018년 12월 (총 4개월)&lt;br /&gt;
&lt;br /&gt;
===구성원 소개===&lt;br /&gt;
서울시립대학교 통계학과 20xxxxx0xx 전ㅇㅇ(팀장)&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
==서론==&lt;br /&gt;
===개발 과제의 개요===&lt;br /&gt;
====개발 과제 요약====&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상에서 프레임을 추출하여 각 얼굴 사진의 특징점을 인식하고 Optical Flow 알고리즘을 이용하여 특징점의 움직임을 추적한다. 추적한 특징점의 벡터를 아바타에 적용하여 동영상에서 사람의 표정 변화를 캐릭터가 따라하도록 만든다. 아바타 사진을 연결하여 gif파일로 만들어 마찬가지로 사람의 표정 변화를 캐릭터가 똑같이 따라할 수 있도록 한다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 배경 및 효과====&lt;br /&gt;
◇ 디지털 액터(Digital Actor)란 실제 배우와 동일한 수준의 외형과 동작을 구현할 수 있는 컴퓨터 그래픽(DG) 영상 캐릭터를 의미한다. 킹콩, 요다 등의 실존 인물이 아닌 캐릭터를 만들거나 현실에서 불가능한 장면을 연출하는 등 영상 특수효과, 3D 애니메이션, 게임, VR과 같은 곳에 사용된다. &lt;br /&gt;
&lt;br /&gt;
◇ 모션캡쳐 장비는 현실적인 움직임으로 퀄리티 높은 영상을 보여줄 수 있지만 상당히 고가의 물건이다. 사람의 얼굴 표정을 학습하여 자연스럽게 아바타로 옮길 수 있다면 높은 CG처리 비용을 줄일 수 있을 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
◇ 현재 국내 VR과 AR의 국내 시장의 규모가 점점 넓어지고 있으며 관련 업계에 따르면 그 사장 규모는 2020년 지금의 4~5배 수준으로 성장할 전망이라고 한다. 더딘 기술 진행속도로 인해 개발 속도도 느리지만 기술이 발전할수록 그 성장 속도가 급격히 증가할 것으로 예상되기 때문에 그 속도를 맞추기 위해서는 미리 개발을 준비하는 등의 행동이 필요하다. 이에 관련 기술을 직접 구현해봄으로써 미래의 VR/AR 산업에 보탬이 될 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 목표 및 내용====&lt;br /&gt;
◇ SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)&lt;br /&gt;
&lt;br /&gt;
● 대표적인 특징점 추출 알고리즘&lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘(interest point extraction algorithm)은 2차원 영상의 일정 지역에 해당하는 화소를 이용하여, 영상의 특징이 될 수 있는 특징점을 추출하는 알고리즘이다. 이때 특징점은 코너(corner) 및 블랍(blob)을 의미한다. &lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘에는 SIFT(Scale Invariant Feature Transform), PCA 등 다른 방법도 있지만 인식률과 처리 속도면에서 더 우수한 SURF 알고리즘을 사용한다.&lt;br /&gt;
&lt;br /&gt;
● 블러이미지나 회전된 이미지는 잘 인식하는 장점이 있는 반면 뷰포인트나 조명이 달라지면 특징점을 잘 잡아내지 못하는 단점이 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 SURF에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow&lt;br /&gt;
&lt;br /&gt;
● 두 개의 연속된 비디오 프레임 사이에 이미지 객체의 동작 패턴을 의미한다.&lt;br /&gt;
&lt;br /&gt;
● 이미지 객체의 움직임 패턴은 객체 자체가 움직이거나 카메라의 움직임으로 인해 생성되는데 이전 프레임이랑 다음 프레임 중 변하는 부분의 움직임을 추적&lt;br /&gt;
&lt;br /&gt;
● 보통 움직임을 통한 구조 분석, 비디오 압축, 영상이 흔들렸거나 블러가 된 경우 깨끗한 영상으로 처리하는 기술인 Video Stabilization 분야에 사용된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lucas-Kanade&lt;br /&gt;
&lt;br /&gt;
● Optical Flow알고리즘에는 다양한 알고리즘이 있으나  Lucas-Kanade방법을 이용하기로 한다.&lt;br /&gt;
&lt;br /&gt;
● 한 프레임의 각 피셀 윈도우를 설정하고 다음 프레임에서 이 윈도우와 가장 잘 매칭되는 곳을 찾는 원리로 작동한다.&lt;br /&gt;
&lt;br /&gt;
● 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적다는 장점이 있다.&lt;br /&gt;
&lt;br /&gt;
● 좁은 지역의 윈도우를 사용하기 때문에 이 윈도우보다 큰 움직임이 발생하였을 경우 움직임을 계산하지 못하며 특징점을 사용하여 optical flow를 얻기 때문에 dense optical flow에 비하여 정확도가 낮은 편이다.&lt;br /&gt;
&lt;br /&gt;
● 윈도우를 벗어나는 큰 움직임을 계산하지 못하는 단점을 개선하기 위해 Pyramids Lucas-Kanade 방법을 사용할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 Lucas-Kanade에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
===관련 기술의 현황===&lt;br /&gt;
====관련 기술의 현황 및 분석(State of art)====&lt;br /&gt;
*전 세계적인 기술현황&lt;br /&gt;
&lt;br /&gt;
◇ 페이스웨어 Live&lt;br /&gt;
&lt;br /&gt;
마커리스 3D 페이셜 모션 캡처 솔루션 제공을 선도하는 페이스웨어 테크놀러지(Faceware Technologies, 이하 페이스웨어)가  23일 향상된 실시간 얼굴 모션캡처와 애니메이션 제품인 페이스웨어 라이브(Faceware Live) 2.5 버전을 발표했다. 페이스웨어 라이브는 실시간으로 사용자 얼굴을 자동 추적하고, 얼굴의 움직임을 페이셜 모델에 즉각 적용시킨 페이셜 애니메이션을 생성한다. 페이스웨어 라이브는 움직임 트래킹을 위해 단 하나의 카메라를 사용하며,  컴퓨터에 연결된 비디오나 웹캠, 페이스웨어 GoPro, Pro HD 헤드캠 시스템, 그밖에 다른 비디오 캡처 장비들을 카메라로 사용할 수 있다. 페이스웨어 라이브 2.5는 디지털캐릭터와 결합된 라이브 공연, 즉 디지털 캐릭터들이 관객이나 사람들과 라이브로 인터랙션이 가능한 실시간 인형극이나  테마파크, 쇼핑몰 내부의 키오스크 스크린 상에서 실시간 상호작용 디지털 캐릭터로 활용될 수 있다.&lt;br /&gt;
[[파일:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 삼성 갤럭시S9의 AR 이모지&lt;br /&gt;
&lt;br /&gt;
카메라로 촬영한 인물 사진을 기반으로 아바타를 만들 수 있는 기능이다. AR 이모지를 만들면 18개 다양한 감정을 표현할 수 있는 gif 이모티콘이 추가되어 메세지, SNS 등에서 이용 가능하다. 눈, 코, 입, 뺨, 이마 등 100개 이상의 얼굴 특징점을 인식 및 분석해 피사체의 표정을 실시간으로 따라해서 동영상으로 촬영할 수 있다. 이외에도 안경을 착용하거나 피부 색깔, 헤어스타일, 헤어컬러, 의상 등을 변경할 수 있다. 하지만 세밀하지 못한 인물 묘사 방식에 논란이 있었다.&lt;br /&gt;
[[파일:Example.jpg]]&lt;br /&gt;
[[파일:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
◇ 애플 iOS11, iOS12의 애니모티콘, 미모지&lt;br /&gt;
&lt;br /&gt;
애플 사의 애니모티콘(애니모지)은 전면 카메라로 촬영한 인물사진을 기반으로 사용자의 표정을 읽은 후, 기존에 있던 이모지에 투사하여 이모티콘을 만들 수 있는 기능이다. 사용자의 얼굴에 3만개 이상의 도트를 투사해 얼굴 맵을 만든 후, 3D 스캔 활용을 통해 50개 이상의 각기 다른 근육의 움직임을 포착하고 분석한다. 분석한 세밀한 표정을 외계인, 고양이, 닭, 개, 여우, 원숭이, 판다. 돼지, 곰돌이, 토끼, 로봇, 유니콘 등 내장된 12개의 애니모티콘에 투영시킨다. 하지만 최근 iOS12의 기능으로 애니모티콘의 개인화 버전인 미모지(memoji)가 발표되었는데, 한정된 캐릭터의 폭을 늘리고 얼굴, 머리, 장신구를 자신의 취향에 맞게 선택할 수 있다. 생성한 애니모티콘을 편집할 수 있으며 아이폰의 메시지 앱에서 이용할 수 있다. 또한 목소리를 녹음하여 오디오가 포함된 비디오 형태로 수신할 수도 있다.&lt;br /&gt;
[[파일:Example.jpg]]&lt;br /&gt;
[[파일:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
*특허조사 및 특허 전략 분석&lt;br /&gt;
&lt;br /&gt;
◇ SIFT(Scale Invariant Feature Transform) 알고리즘&lt;br /&gt;
&lt;br /&gt;
● Lowe David G 교수가 개발하였으며 97년도부터 연구하여 프로토 타입의 SIFT알고리즘을 99년도에 발표하였고, 04년도에는 이 알고리즘을 더욱 개량하여 완성된 SIFT알고리즘을 만들게 되었다.&lt;br /&gt;
&lt;br /&gt;
● 영상의 크기와 회전에 불변하는 특징점을 추출하는 알고리즘이다.&lt;br /&gt;
&lt;br /&gt;
1) Scale-space extrema detection &lt;br /&gt;
&lt;br /&gt;
● Gaussian Pyramid를 생성 한 후 DoG(Difference of Gaussian)을 구해서 극점인 부분을 특징점 후보자로 잡아 준다.&lt;br /&gt;
&lt;br /&gt;
● DoG의 상위와 하위 층까지 모두 합쳐 주변 26개 보다 크거나 모두 작을 때만 특징점 후보자로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이 방법은 특징점을 Scale별로 구하게 되어 Target 물체가 작아져도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) KeyPoint Localization &lt;br /&gt;
&lt;br /&gt;
● 테일러 급수를 사용하여 더 정확한 극점을 찾은 뒤 테일러 급수로 interpolation하여 그 점의 값을 구하여 특징점 후보자 중에서 정확하지 않는 특징점을 제거한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Orientation Assignment &lt;br /&gt;
&lt;br /&gt;
● 추출된 특징점마다 주 방향을 할당해 주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● 특징점 주변으로 16x16영역을 할당한 후 그 영역 이미지를 Gaussian Blurring을 적용하면 특징점 주변의 영역에 대한 Gradient의 방향과 크기를 결정하게 된다.&lt;br /&gt;
&lt;br /&gt;
● Gradient의 방향과 크기를 구하면 Orientation Histogram을 형성한 후, 가장 값이 큰 것을 해당 Orientation으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
● 회전에 대한 정보가 들어 있기 때문에 물체가 회전해도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
4) KeyPoint Descriptor&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 마다 서술자를 생성해주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● Gaussian Weight Function을 활용하여 서술자를 생성하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 주변으로 16x16의 pixel 영역을 할당하여 아래의 &amp;lt;그림 14&amp;gt;과 같이 Image Gradients를 구한다. 그 후, 서술자 Window 크기의 반값을 Gaussian Weighted function에 곱해주게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● 다음으로 히스토그램을 그려주게 되는데 그 전에 먼저 앞에서 구한 Orientation을 빼줘서 Descriptor가 회전에 불변하도록 만들어 준다.&lt;br /&gt;
&lt;br /&gt;
● 객체인식을 할 때는 DB의 각 특징점의 Descriptor를 가지고, 인식할 물체 영상의 Descriptor와 비교하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이때 비슷하면 데이터가 비슷하게 나올 텐데 여기서 사용하는 방법은 유클리드 거리이다.&lt;br /&gt;
● 유클리드 거리의 방식은 연산식이 간단하여 많은 특징점 데이터를 비교하는데 속도면에서 성능이 좋아 많이 사용되는 방식이다. &lt;br /&gt;
&lt;br /&gt;
● 매칭 단계까지 수행되면 DB의 특징점들과 Target의 특징점들 중 매칭된 특징점들이 추출되어 원하는 물체가 어디에 위치하는지 알 수 있다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
◇SURF&lt;br /&gt;
&lt;br /&gt;
● 알고리즘 순서도 : 특징점 추출 → 주 방향 결정 → descriptor 생성&lt;br /&gt;
&lt;br /&gt;
1) 특징점 추출&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● 수식을 이용하여 적분 영상을 생성한다.&lt;br /&gt;
&lt;br /&gt;
● 적분 영상이란 픽셀 밝기 값을 누적한 형태를 뜻함&lt;br /&gt;
&lt;br /&gt;
● D영역의 밝기 누적 값을 알고 싶다면 ii(4)+ii(1)-ii(2)-ii(3)식을 이용하여 쉽게 D영역의 밝기 누적값을 구할 수 있다.&lt;br /&gt;
&lt;br /&gt;
● 적분영상을 만든 후 헤이시안(Hessian)검출기를 사용하여 특징점을 검출한다. (헤이시안 검출기는 헤이시안 행렬 기반인 특징점 검출 알고리즘으로써 정확성이 높고 행렬식이 최대값인 위치에서 blob을 검출 할 때 사용하게 된다)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● SURF에서는 Hessian_Laplace Detector를 사용하는 대신에 위의 공식대로 FAST Hessian Detector 을 사용하여 수행성능을 향상시킨다.&lt;br /&gt;
&lt;br /&gt;
2) Dxx, Dyy, Dxy박스 필터를 구하는 방법&lt;br /&gt;
&lt;br /&gt;
● Haar Wavelet을 이용 - Dxx와 Dyy를 구할 때는 검은 영역부분을 -2, 흰영역부분은 1을 곱하여 구하고 Dxy는 검은 영역을 -1, 흰영역을 1을 곱하여 구한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) 9x9 박스필터를 이용한 Dxx, Dyy, Dxy를 구하는 방식&lt;br /&gt;
&lt;br /&gt;
● Hessian Determinant 데이터를 이용하여 각 필터 사이즈 별로 특징점을 검출하게 된다. 필터 사이즈란 위의 Dxx, Dyy, Dxy를 구하는 박스필터 영역 사이즈를 의미한다. SURF에서는 박스 필터 영역을 Scale해서 특징점을 추출해 aliasing 이 없는 장점을 가지고 있다.  Hessian Determinant 데이터를 각 픽셀마다 구했으면 각각의 Threshold와 비교하게 된다. &lt;br /&gt;
&lt;br /&gt;
● Threshold보다 값이 크면, 인접한 8개의 픽셀의 Hessian Determinant를 비교하여 큰 값인지 비교하게 된다. 만약 큰 값이면 상하 박스 필터 사이즈의 3x3크기의 각 9개의 Hessina Determinant를 비교하여 가장 클 경우 특징점으로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) 주 방향 결정&lt;br /&gt;
&lt;br /&gt;
● 특징점 중심으로 특징점이 검출된 스케일 정보 s를 이용하여 반지름이 6s의 원 안의 픽셀들에 대하여 x방향과 y방향으로 Haar Wavelet Response인 dx와 dy를 구하게 된다. 윈도우 5도 간격으로 회전하면서 60도 윈도우 내의 벡터의 크기를 더해 가장 큰 크기를 가지는 방향을 특징점의 주 방향으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
5) descriptor 생성&lt;br /&gt;
&lt;br /&gt;
● descriptor는 특징점 주변의 일정한 영역 내에 이웃하고 있는 픽셀의 밝기 변화를 나타낸다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● 주 방향과 scale정보 s를 이용하여 특징점 중심으로 20s크기의 윈도우를 위의 그림처럼 구성하고, 구성된 윈도우를 4X4 영역으로 분할하여 16개의 영역으로 나눈다. 분할된 각 영역을 다시 한번 5X5크기로 분할하여 각 픽셀을 haar wavelet filter를 사용하여 각 를 구하여 16개의 영역에 각 위의 4개의 Descriptor를 생성하여 총 64개의 Descriptor를 생성할 수 있게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*기술 로드맵&lt;br /&gt;
&lt;br /&gt;
====시장상황에 대한 분석====&lt;br /&gt;
&lt;br /&gt;
*경쟁제품 조사 비교&lt;br /&gt;
&lt;br /&gt;
 ◇ Avatar SDK&lt;br /&gt;
&lt;br /&gt;
하나의 2D 정면 얼굴 사진을 입력하면 3D 아바타 생성 SDK를 사용하여 개인의 아바타를 만들어준다. 딥러닝과 컴퓨터 그래픽 기술을 이용하여 개발하였고, 현재 cloud나 PC, Mac, Android, iOS 환경 모두 이용 가능하다. 아바타로의 변환에는 사진마다 차이가 있지만 약 10초가 소요된다. 만들어진 아바타는 Blendshape, 헤어스타일, 헤어컬러를 변경할 수 있고, 윙크, 웃음, 하품 등 몇몇 특정 표정 변화가 가능하다. &amp;lt;그림 17&amp;gt;은 Avatar SDK를 이용하여 왼쪽 상단의 사진을 입력으로 아바타를 생성한 사진이다.&lt;br /&gt;
&lt;br /&gt;
◇ Mirror AI&lt;br /&gt;
&lt;br /&gt;
스마트폰으로 한장의 셀프 사진을 찍으면, 이를 바탕으로 자신의 모습을 한 몇 백개의 이모지를 생성하여 메신저에서 사용할 수 있는 키보드 어플리케이션이다. 현재 다양한 언어를 지원하고, iOS 10.0 버전 이상만 사용할 수 있다. 학습한 모델을 통해 사람의 얼굴 특징을 식별하고, 이에 맞게 수초 내에 사람의 얼굴 특징을 추려내어 이모티콘을 만든다. 생성된 이모티콘은 이 키보드 어플리케이션을 사용하여 어떤 메신저에서든 사용할 수 있다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*마케팅 전략 제시&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===개발과제의 기대효과===&lt;br /&gt;
====기술적 기대효과====&lt;br /&gt;
&lt;br /&gt;
◇ 영화 촬영시 기존에는 모션 센서들을 부착하여 배우들의 표정을 읽어와 캐릭터의 표정과 매핑시켜 부착하는데까지 시간이 오래 걸렸고 많은 기술들이 필요되었는데 만약 이 프로젝트가 성공하게 될 경우, 배우가 표정을 짓는 것만으로 쉽게 캐릭터에 매핑될 수 있도록 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자기가 원하는 캐릭터나 다른 인물 모습의 자신과 같은 표정을 짓는 영상을 만들 수 있을 것이다.&lt;br /&gt;
&lt;br /&gt;
====경제적, 사회적 기대 및 파급효과====&lt;br /&gt;
&lt;br /&gt;
◇ 기존에 영화 촬영시 모션 캡쳐에 필요했던 장비들이 없어도 원하는 캐릭터의 표정을 구현할 수 있어 제작비 절감의 효과가 기대된다. &lt;br /&gt;
&lt;br /&gt;
◇ 현재 실존하지 않는 배우의 모습에 표정을 매핑하여 실제로 연기하는 것처럼 보이게 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자신의 표정을 다른 캐릭터로 매핑함으로써 원래 영상보다 감정 표현을 훨씬 극대화할 수 있다.&lt;br /&gt;
&lt;br /&gt;
===기술개발 일정 및 추진체계===&lt;br /&gt;
====개발 일정====&lt;br /&gt;
내용&lt;br /&gt;
====구성원 및 추진체계====&lt;br /&gt;
&lt;br /&gt;
◇ 전ㅇㅇ(팀장) &lt;br /&gt;
&lt;br /&gt;
● &lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원)&lt;br /&gt;
&lt;br /&gt;
● &lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원) &lt;br /&gt;
&lt;br /&gt;
● &lt;br /&gt;
&lt;br /&gt;
◇ 전원&lt;br /&gt;
&lt;br /&gt;
●&lt;br /&gt;
&lt;br /&gt;
==설계==&lt;br /&gt;
===설계사양===&lt;br /&gt;
====제품의 요구사항====&lt;br /&gt;
내용&lt;br /&gt;
====설계 사양====&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===개념설계안===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 동영상을 ‘Free Video to JPG Converter’를 이용하여 동영상에서 사진을 원하는 프레임 수를 지정하여 JPG파일을 추출한다. &lt;br /&gt;
&lt;br /&gt;
◇ 추출한 JPG파일에 SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)는 대표적인 특징점 추출 알고리즘으로 2차원 영상의 일정 지역에 해당하는 화소를 이용하여 특징점을 추출한다. OpenCV에서 제공하는 함수를 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow 알고리즘을 이용하여 이전 프레임이랑 다음 프레임, 두 개의 연속된 얼굴 프레임 사이에 동작 패턴을 추적한다. Optical Flow 알고리즘 중 Lucas-Kanade(LK)는 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적어 비교적 속도가 빠르기 때문에 Lucas-Kanade를 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ TwinGAN을 이용하여 사람의 얼굴 사진을 캐릭터로 변환한다.&lt;br /&gt;
&lt;br /&gt;
GAN(Generative Adversarial Network)은 상반되는 목적을 가진 두 모듈(판별망, 생성망)이 대결하는 구조를 통해 이미지 생성을 학습하는 이미지 생성 기술의 한 종류이다. 기존 GAN의 단점을 보완하고 paired data가 아닌 unpaired data를 사용했을 때 도메인 간의 매끄러운 변환을 이끌어낼 수 있는 TwinGAN을 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ 추적한 특징점의 벡터를 각 프레임 아바타에 적용한다.&lt;br /&gt;
&lt;br /&gt;
◇ 위 방법이 어려울 경우 TwinGAN으로 각 프레임의 얼굴 이미지를 아바타로 변환하고, 변환한 아바타 사진을 연결하여 gif파일로 만든다. 마찬가지로 사람의 표정 변화를 캐릭터가 똑같이 따라할 수 있도록 한다.&lt;br /&gt;
&lt;br /&gt;
===이론적 계산 및 시뮬레이션===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상 입력 -&amp;gt; 표정을 따라하는 캐릭터 영상 출력&lt;br /&gt;
&lt;br /&gt;
===소프트웨어 설계===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;전체 설계도&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. ‘Free Video to JPG Converter’를 이용하여 동영상을 여러 프레임의 사진으로 전환한다. &lt;br /&gt;
2. 각각의 사진들로부터 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
3. 특징점들의 변화를 이용하여 Optical Flow를 이용하여 특징점의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
4. 1번의 결과 추출된 여러 사진들 중 첫 번째 사진을 TwinGAN을 이용하여 캐릭터로 변환 후 변환된 캐릭터의 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
5. 3번에서 추적한 Optical Flow를 4번에 적용하여 gif파일로 변환한다.&lt;br /&gt;
&lt;br /&gt;
==결과 및 평가==&lt;br /&gt;
===완료 작품의 소개===&lt;br /&gt;
====프로토타입 사진 혹은 작동 장면====&lt;br /&gt;
내용&lt;br /&gt;
====포스터====&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===관련사업비 내역서===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===완료작품의 평가===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===향후계획===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===특허 출원 내용===&lt;br /&gt;
내용&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:Example.jpg&amp;diff=983</id>
		<title>파일:Example.jpg</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=%ED%8C%8C%EC%9D%BC:Example.jpg&amp;diff=983"/>
				<updated>2018-12-25T17:37:08Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=982</id>
		<title>DnA(Digital and Actor)조</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=982"/>
				<updated>2018-12-25T17:36:15Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: /* 개발 과제의 목표 및 내용 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==프로젝트 개요==&lt;br /&gt;
=== 기술개발 과제 ===&lt;br /&gt;
''' 국문 : ''' 디지털 액터 : 얼굴 표정과 표현&lt;br /&gt;
&lt;br /&gt;
''' 영문 : ''' Digital Actor : facial expression, emotion&lt;br /&gt;
&lt;br /&gt;
===과제 팀명===&lt;br /&gt;
DnA (Digital and Actor)&lt;br /&gt;
&lt;br /&gt;
===지도교수===&lt;br /&gt;
홍의경 교수님&lt;br /&gt;
&lt;br /&gt;
===개발기간===&lt;br /&gt;
2018년 9월 ~ 2018년 12월 (총 4개월)&lt;br /&gt;
&lt;br /&gt;
===구성원 소개===&lt;br /&gt;
서울시립대학교 통계학과 20xxxxx0xx 전ㅇㅇ(팀장)&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
==서론==&lt;br /&gt;
===개발 과제의 개요===&lt;br /&gt;
====개발 과제 요약====&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상에서 프레임을 추출하여 각 얼굴 사진의 특징점을 인식하고 Optical Flow 알고리즘을 이용하여 특징점의 움직임을 추적한다. 추적한 특징점의 벡터를 아바타에 적용하여 동영상에서 사람의 표정 변화를 캐릭터가 따라하도록 만든다. 아바타 사진을 연결하여 gif파일로 만들어 마찬가지로 사람의 표정 변화를 캐릭터가 똑같이 따라할 수 있도록 한다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 배경 및 효과====&lt;br /&gt;
◇ 디지털 액터(Digital Actor)란 실제 배우와 동일한 수준의 외형과 동작을 구현할 수 있는 컴퓨터 그래픽(DG) 영상 캐릭터를 의미한다. 킹콩, 요다 등의 실존 인물이 아닌 캐릭터를 만들거나 현실에서 불가능한 장면을 연출하는 등 영상 특수효과, 3D 애니메이션, 게임, VR과 같은 곳에 사용된다. &lt;br /&gt;
&lt;br /&gt;
◇ 모션캡쳐 장비는 현실적인 움직임으로 퀄리티 높은 영상을 보여줄 수 있지만 상당히 고가의 물건이다. 사람의 얼굴 표정을 학습하여 자연스럽게 아바타로 옮길 수 있다면 높은 CG처리 비용을 줄일 수 있을 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
◇ 현재 국내 VR과 AR의 국내 시장의 규모가 점점 넓어지고 있으며 관련 업계에 따르면 그 사장 규모는 2020년 지금의 4~5배 수준으로 성장할 전망이라고 한다. 더딘 기술 진행속도로 인해 개발 속도도 느리지만 기술이 발전할수록 그 성장 속도가 급격히 증가할 것으로 예상되기 때문에 그 속도를 맞추기 위해서는 미리 개발을 준비하는 등의 행동이 필요하다. 이에 관련 기술을 직접 구현해봄으로써 미래의 VR/AR 산업에 보탬이 될 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 목표 및 내용====&lt;br /&gt;
◇ SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)&lt;br /&gt;
&lt;br /&gt;
● 대표적인 특징점 추출 알고리즘&lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘(interest point extraction algorithm)은 2차원 영상의 일정 지역에 해당하는 화소를 이용하여, 영상의 특징이 될 수 있는 특징점을 추출하는 알고리즘이다. 이때 특징점은 코너(corner) 및 블랍(blob)을 의미한다. &lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘에는 SIFT(Scale Invariant Feature Transform), PCA 등 다른 방법도 있지만 인식률과 처리 속도면에서 더 우수한 SURF 알고리즘을 사용한다.&lt;br /&gt;
&lt;br /&gt;
● 블러이미지나 회전된 이미지는 잘 인식하는 장점이 있는 반면 뷰포인트나 조명이 달라지면 특징점을 잘 잡아내지 못하는 단점이 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 SURF에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow&lt;br /&gt;
&lt;br /&gt;
● 두 개의 연속된 비디오 프레임 사이에 이미지 객체의 동작 패턴을 의미한다.&lt;br /&gt;
&lt;br /&gt;
● 이미지 객체의 움직임 패턴은 객체 자체가 움직이거나 카메라의 움직임으로 인해 생성되는데 이전 프레임이랑 다음 프레임 중 변하는 부분의 움직임을 추적&lt;br /&gt;
&lt;br /&gt;
● 보통 움직임을 통한 구조 분석, 비디오 압축, 영상이 흔들렸거나 블러가 된 경우 깨끗한 영상으로 처리하는 기술인 Video Stabilization 분야에 사용된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lucas-Kanade&lt;br /&gt;
&lt;br /&gt;
● Optical Flow알고리즘에는 다양한 알고리즘이 있으나  Lucas-Kanade방법을 이용하기로 한다.&lt;br /&gt;
&lt;br /&gt;
● 한 프레임의 각 피셀 윈도우를 설정하고 다음 프레임에서 이 윈도우와 가장 잘 매칭되는 곳을 찾는 원리로 작동한다.&lt;br /&gt;
&lt;br /&gt;
● 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적다는 장점이 있다.&lt;br /&gt;
&lt;br /&gt;
● 좁은 지역의 윈도우를 사용하기 때문에 이 윈도우보다 큰 움직임이 발생하였을 경우 움직임을 계산하지 못하며 특징점을 사용하여 optical flow를 얻기 때문에 dense optical flow에 비하여 정확도가 낮은 편이다.&lt;br /&gt;
&lt;br /&gt;
● 윈도우를 벗어나는 큰 움직임을 계산하지 못하는 단점을 개선하기 위해 Pyramids Lucas-Kanade 방법을 사용할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 Lucas-Kanade에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
[[파일:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
===관련 기술의 현황===&lt;br /&gt;
====관련 기술의 현황 및 분석(State of art)====&lt;br /&gt;
*전 세계적인 기술현황&lt;br /&gt;
&lt;br /&gt;
◇ 페이스웨어 Live&lt;br /&gt;
&lt;br /&gt;
마커리스 3D 페이셜 모션 캡처 솔루션 제공을 선도하는 페이스웨어 테크놀러지(Faceware Technologies, 이하 페이스웨어)가  23일 향상된 실시간 얼굴 모션캡처와 애니메이션 제품인 페이스웨어 라이브(Faceware Live) 2.5 버전을 발표했다. 페이스웨어 라이브는 실시간으로 사용자 얼굴을 자동 추적하고, 얼굴의 움직임을 페이셜 모델에 즉각 적용시킨 페이셜 애니메이션을 생성한다. 페이스웨어 라이브는 움직임 트래킹을 위해 단 하나의 카메라를 사용하며,  컴퓨터에 연결된 비디오나 웹캠, 페이스웨어 GoPro, Pro HD 헤드캠 시스템, 그밖에 다른 비디오 캡처 장비들을 카메라로 사용할 수 있다. 페이스웨어 라이브 2.5는 디지털캐릭터와 결합된 라이브 공연, 즉 디지털 캐릭터들이 관객이나 사람들과 라이브로 인터랙션이 가능한 실시간 인형극이나  테마파크, 쇼핑몰 내부의 키오스크 스크린 상에서 실시간 상호작용 디지털 캐릭터로 활용될 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 삼성 갤럭시S9의 AR 이모지&lt;br /&gt;
&lt;br /&gt;
카메라로 촬영한 인물 사진을 기반으로 아바타를 만들 수 있는 기능이다. AR 이모지를 만들면 18개 다양한 감정을 표현할 수 있는 gif 이모티콘이 추가되어 메세지, SNS 등에서 이용 가능하다. 눈, 코, 입, 뺨, 이마 등 100개 이상의 얼굴 특징점을 인식 및 분석해 피사체의 표정을 실시간으로 따라해서 동영상으로 촬영할 수 있다. 이외에도 안경을 착용하거나 피부 색깔, 헤어스타일, 헤어컬러, 의상 등을 변경할 수 있다. 하지만 세밀하지 못한 인물 묘사 방식에 논란이 있었다.&lt;br /&gt;
&lt;br /&gt;
◇ 애플 iOS11, iOS12의 애니모티콘, 미모지&lt;br /&gt;
&lt;br /&gt;
애플 사의 애니모티콘(애니모지)은 전면 카메라로 촬영한 인물사진을 기반으로 사용자의 표정을 읽은 후, 기존에 있던 이모지에 투사하여 이모티콘을 만들 수 있는 기능이다. 사용자의 얼굴에 3만개 이상의 도트를 투사해 얼굴 맵을 만든 후, 3D 스캔 활용을 통해 50개 이상의 각기 다른 근육의 움직임을 포착하고 분석한다. 분석한 세밀한 표정을 외계인, 고양이, 닭, 개, 여우, 원숭이, 판다. 돼지, 곰돌이, 토끼, 로봇, 유니콘 등 내장된 12개의 애니모티콘에 투영시킨다. 하지만 최근 iOS12의 기능으로 애니모티콘의 개인화 버전인 미모지(memoji)가 발표되었는데, 한정된 캐릭터의 폭을 늘리고 얼굴, 머리, 장신구를 자신의 취향에 맞게 선택할 수 있다. 생성한 애니모티콘을 편집할 수 있으며 아이폰의 메시지 앱에서 이용할 수 있다. 또한 목소리를 녹음하여 오디오가 포함된 비디오 형태로 수신할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*특허조사 및 특허 전략 분석&lt;br /&gt;
&lt;br /&gt;
◇ SIFT(Scale Invariant Feature Transform) 알고리즘&lt;br /&gt;
&lt;br /&gt;
● Lowe David G 교수가 개발하였으며 97년도부터 연구하여 프로토 타입의 SIFT알고리즘을 99년도에 발표하였고, 04년도에는 이 알고리즘을 더욱 개량하여 완성된 SIFT알고리즘을 만들게 되었다.&lt;br /&gt;
&lt;br /&gt;
● 영상의 크기와 회전에 불변하는 특징점을 추출하는 알고리즘이다.&lt;br /&gt;
&lt;br /&gt;
1) Scale-space extrema detection &lt;br /&gt;
&lt;br /&gt;
● Gaussian Pyramid를 생성 한 후 DoG(Difference of Gaussian)을 구해서 극점인 부분을 특징점 후보자로 잡아 준다.&lt;br /&gt;
&lt;br /&gt;
● DoG의 상위와 하위 층까지 모두 합쳐 주변 26개 보다 크거나 모두 작을 때만 특징점 후보자로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이 방법은 특징점을 Scale별로 구하게 되어 Target 물체가 작아져도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) KeyPoint Localization &lt;br /&gt;
&lt;br /&gt;
● 테일러 급수를 사용하여 더 정확한 극점을 찾은 뒤 테일러 급수로 interpolation하여 그 점의 값을 구하여 특징점 후보자 중에서 정확하지 않는 특징점을 제거한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Orientation Assignment &lt;br /&gt;
&lt;br /&gt;
● 추출된 특징점마다 주 방향을 할당해 주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● 특징점 주변으로 16x16영역을 할당한 후 그 영역 이미지를 Gaussian Blurring을 적용하면 특징점 주변의 영역에 대한 Gradient의 방향과 크기를 결정하게 된다.&lt;br /&gt;
&lt;br /&gt;
● Gradient의 방향과 크기를 구하면 Orientation Histogram을 형성한 후, 가장 값이 큰 것을 해당 Orientation으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
● 회전에 대한 정보가 들어 있기 때문에 물체가 회전해도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
4) KeyPoint Descriptor&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 마다 서술자를 생성해주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● Gaussian Weight Function을 활용하여 서술자를 생성하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 주변으로 16x16의 pixel 영역을 할당하여 아래의 &amp;lt;그림 14&amp;gt;과 같이 Image Gradients를 구한다. 그 후, 서술자 Window 크기의 반값을 Gaussian Weighted function에 곱해주게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● 다음으로 히스토그램을 그려주게 되는데 그 전에 먼저 앞에서 구한 Orientation을 빼줘서 Descriptor가 회전에 불변하도록 만들어 준다.&lt;br /&gt;
&lt;br /&gt;
● 객체인식을 할 때는 DB의 각 특징점의 Descriptor를 가지고, 인식할 물체 영상의 Descriptor와 비교하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이때 비슷하면 데이터가 비슷하게 나올 텐데 여기서 사용하는 방법은 유클리드 거리이다.&lt;br /&gt;
● 유클리드 거리의 방식은 연산식이 간단하여 많은 특징점 데이터를 비교하는데 속도면에서 성능이 좋아 많이 사용되는 방식이다. &lt;br /&gt;
&lt;br /&gt;
● 매칭 단계까지 수행되면 DB의 특징점들과 Target의 특징점들 중 매칭된 특징점들이 추출되어 원하는 물체가 어디에 위치하는지 알 수 있다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
◇SURF&lt;br /&gt;
&lt;br /&gt;
● 알고리즘 순서도 : 특징점 추출 → 주 방향 결정 → descriptor 생성&lt;br /&gt;
&lt;br /&gt;
1) 특징점 추출&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● 수식을 이용하여 적분 영상을 생성한다.&lt;br /&gt;
&lt;br /&gt;
● 적분 영상이란 픽셀 밝기 값을 누적한 형태를 뜻함&lt;br /&gt;
&lt;br /&gt;
● D영역의 밝기 누적 값을 알고 싶다면 ii(4)+ii(1)-ii(2)-ii(3)식을 이용하여 쉽게 D영역의 밝기 누적값을 구할 수 있다.&lt;br /&gt;
&lt;br /&gt;
● 적분영상을 만든 후 헤이시안(Hessian)검출기를 사용하여 특징점을 검출한다. (헤이시안 검출기는 헤이시안 행렬 기반인 특징점 검출 알고리즘으로써 정확성이 높고 행렬식이 최대값인 위치에서 blob을 검출 할 때 사용하게 된다)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● SURF에서는 Hessian_Laplace Detector를 사용하는 대신에 위의 공식대로 FAST Hessian Detector 을 사용하여 수행성능을 향상시킨다.&lt;br /&gt;
&lt;br /&gt;
2) Dxx, Dyy, Dxy박스 필터를 구하는 방법&lt;br /&gt;
&lt;br /&gt;
● Haar Wavelet을 이용 - Dxx와 Dyy를 구할 때는 검은 영역부분을 -2, 흰영역부분은 1을 곱하여 구하고 Dxy는 검은 영역을 -1, 흰영역을 1을 곱하여 구한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) 9x9 박스필터를 이용한 Dxx, Dyy, Dxy를 구하는 방식&lt;br /&gt;
&lt;br /&gt;
● Hessian Determinant 데이터를 이용하여 각 필터 사이즈 별로 특징점을 검출하게 된다. 필터 사이즈란 위의 Dxx, Dyy, Dxy를 구하는 박스필터 영역 사이즈를 의미한다. SURF에서는 박스 필터 영역을 Scale해서 특징점을 추출해 aliasing 이 없는 장점을 가지고 있다.  Hessian Determinant 데이터를 각 픽셀마다 구했으면 각각의 Threshold와 비교하게 된다. &lt;br /&gt;
&lt;br /&gt;
● Threshold보다 값이 크면, 인접한 8개의 픽셀의 Hessian Determinant를 비교하여 큰 값인지 비교하게 된다. 만약 큰 값이면 상하 박스 필터 사이즈의 3x3크기의 각 9개의 Hessina Determinant를 비교하여 가장 클 경우 특징점으로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) 주 방향 결정&lt;br /&gt;
&lt;br /&gt;
● 특징점 중심으로 특징점이 검출된 스케일 정보 s를 이용하여 반지름이 6s의 원 안의 픽셀들에 대하여 x방향과 y방향으로 Haar Wavelet Response인 dx와 dy를 구하게 된다. 윈도우 5도 간격으로 회전하면서 60도 윈도우 내의 벡터의 크기를 더해 가장 큰 크기를 가지는 방향을 특징점의 주 방향으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
5) descriptor 생성&lt;br /&gt;
&lt;br /&gt;
● descriptor는 특징점 주변의 일정한 영역 내에 이웃하고 있는 픽셀의 밝기 변화를 나타낸다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● 주 방향과 scale정보 s를 이용하여 특징점 중심으로 20s크기의 윈도우를 위의 그림처럼 구성하고, 구성된 윈도우를 4X4 영역으로 분할하여 16개의 영역으로 나눈다. 분할된 각 영역을 다시 한번 5X5크기로 분할하여 각 픽셀을 haar wavelet filter를 사용하여 각 를 구하여 16개의 영역에 각 위의 4개의 Descriptor를 생성하여 총 64개의 Descriptor를 생성할 수 있게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*기술 로드맵&lt;br /&gt;
&lt;br /&gt;
====시장상황에 대한 분석====&lt;br /&gt;
&lt;br /&gt;
*경쟁제품 조사 비교&lt;br /&gt;
&lt;br /&gt;
 ◇ Avatar SDK&lt;br /&gt;
&lt;br /&gt;
하나의 2D 정면 얼굴 사진을 입력하면 3D 아바타 생성 SDK를 사용하여 개인의 아바타를 만들어준다. 딥러닝과 컴퓨터 그래픽 기술을 이용하여 개발하였고, 현재 cloud나 PC, Mac, Android, iOS 환경 모두 이용 가능하다. 아바타로의 변환에는 사진마다 차이가 있지만 약 10초가 소요된다. 만들어진 아바타는 Blendshape, 헤어스타일, 헤어컬러를 변경할 수 있고, 윙크, 웃음, 하품 등 몇몇 특정 표정 변화가 가능하다. &amp;lt;그림 17&amp;gt;은 Avatar SDK를 이용하여 왼쪽 상단의 사진을 입력으로 아바타를 생성한 사진이다.&lt;br /&gt;
&lt;br /&gt;
◇ Mirror AI&lt;br /&gt;
&lt;br /&gt;
스마트폰으로 한장의 셀프 사진을 찍으면, 이를 바탕으로 자신의 모습을 한 몇 백개의 이모지를 생성하여 메신저에서 사용할 수 있는 키보드 어플리케이션이다. 현재 다양한 언어를 지원하고, iOS 10.0 버전 이상만 사용할 수 있다. 학습한 모델을 통해 사람의 얼굴 특징을 식별하고, 이에 맞게 수초 내에 사람의 얼굴 특징을 추려내어 이모티콘을 만든다. 생성된 이모티콘은 이 키보드 어플리케이션을 사용하여 어떤 메신저에서든 사용할 수 있다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*마케팅 전략 제시&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===개발과제의 기대효과===&lt;br /&gt;
====기술적 기대효과====&lt;br /&gt;
&lt;br /&gt;
◇ 영화 촬영시 기존에는 모션 센서들을 부착하여 배우들의 표정을 읽어와 캐릭터의 표정과 매핑시켜 부착하는데까지 시간이 오래 걸렸고 많은 기술들이 필요되었는데 만약 이 프로젝트가 성공하게 될 경우, 배우가 표정을 짓는 것만으로 쉽게 캐릭터에 매핑될 수 있도록 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자기가 원하는 캐릭터나 다른 인물 모습의 자신과 같은 표정을 짓는 영상을 만들 수 있을 것이다.&lt;br /&gt;
&lt;br /&gt;
====경제적, 사회적 기대 및 파급효과====&lt;br /&gt;
&lt;br /&gt;
◇ 기존에 영화 촬영시 모션 캡쳐에 필요했던 장비들이 없어도 원하는 캐릭터의 표정을 구현할 수 있어 제작비 절감의 효과가 기대된다. &lt;br /&gt;
&lt;br /&gt;
◇ 현재 실존하지 않는 배우의 모습에 표정을 매핑하여 실제로 연기하는 것처럼 보이게 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자신의 표정을 다른 캐릭터로 매핑함으로써 원래 영상보다 감정 표현을 훨씬 극대화할 수 있다.&lt;br /&gt;
&lt;br /&gt;
===기술개발 일정 및 추진체계===&lt;br /&gt;
====개발 일정====&lt;br /&gt;
내용&lt;br /&gt;
====구성원 및 추진체계====&lt;br /&gt;
&lt;br /&gt;
◇ 전ㅇㅇ(팀장) &lt;br /&gt;
&lt;br /&gt;
● &lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원)&lt;br /&gt;
&lt;br /&gt;
● &lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원) &lt;br /&gt;
&lt;br /&gt;
● &lt;br /&gt;
&lt;br /&gt;
◇ 전원&lt;br /&gt;
&lt;br /&gt;
●&lt;br /&gt;
&lt;br /&gt;
==설계==&lt;br /&gt;
===설계사양===&lt;br /&gt;
====제품의 요구사항====&lt;br /&gt;
내용&lt;br /&gt;
====설계 사양====&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===개념설계안===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 동영상을 ‘Free Video to JPG Converter’를 이용하여 동영상에서 사진을 원하는 프레임 수를 지정하여 JPG파일을 추출한다. &lt;br /&gt;
&lt;br /&gt;
◇ 추출한 JPG파일에 SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)는 대표적인 특징점 추출 알고리즘으로 2차원 영상의 일정 지역에 해당하는 화소를 이용하여 특징점을 추출한다. OpenCV에서 제공하는 함수를 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow 알고리즘을 이용하여 이전 프레임이랑 다음 프레임, 두 개의 연속된 얼굴 프레임 사이에 동작 패턴을 추적한다. Optical Flow 알고리즘 중 Lucas-Kanade(LK)는 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적어 비교적 속도가 빠르기 때문에 Lucas-Kanade를 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ TwinGAN을 이용하여 사람의 얼굴 사진을 캐릭터로 변환한다.&lt;br /&gt;
&lt;br /&gt;
GAN(Generative Adversarial Network)은 상반되는 목적을 가진 두 모듈(판별망, 생성망)이 대결하는 구조를 통해 이미지 생성을 학습하는 이미지 생성 기술의 한 종류이다. 기존 GAN의 단점을 보완하고 paired data가 아닌 unpaired data를 사용했을 때 도메인 간의 매끄러운 변환을 이끌어낼 수 있는 TwinGAN을 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ 추적한 특징점의 벡터를 각 프레임 아바타에 적용한다.&lt;br /&gt;
&lt;br /&gt;
◇ 위 방법이 어려울 경우 TwinGAN으로 각 프레임의 얼굴 이미지를 아바타로 변환하고, 변환한 아바타 사진을 연결하여 gif파일로 만든다. 마찬가지로 사람의 표정 변화를 캐릭터가 똑같이 따라할 수 있도록 한다.&lt;br /&gt;
&lt;br /&gt;
===이론적 계산 및 시뮬레이션===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상 입력 -&amp;gt; 표정을 따라하는 캐릭터 영상 출력&lt;br /&gt;
&lt;br /&gt;
===소프트웨어 설계===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;전체 설계도&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. ‘Free Video to JPG Converter’를 이용하여 동영상을 여러 프레임의 사진으로 전환한다. &lt;br /&gt;
2. 각각의 사진들로부터 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
3. 특징점들의 변화를 이용하여 Optical Flow를 이용하여 특징점의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
4. 1번의 결과 추출된 여러 사진들 중 첫 번째 사진을 TwinGAN을 이용하여 캐릭터로 변환 후 변환된 캐릭터의 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
5. 3번에서 추적한 Optical Flow를 4번에 적용하여 gif파일로 변환한다.&lt;br /&gt;
&lt;br /&gt;
==결과 및 평가==&lt;br /&gt;
===완료 작품의 소개===&lt;br /&gt;
====프로토타입 사진 혹은 작동 장면====&lt;br /&gt;
내용&lt;br /&gt;
====포스터====&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===관련사업비 내역서===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===완료작품의 평가===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===향후계획===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===특허 출원 내용===&lt;br /&gt;
내용&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=981</id>
		<title>DnA(Digital and Actor)조</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=DnA(Digital_and_Actor)%EC%A1%B0&amp;diff=981"/>
				<updated>2018-12-25T17:34:56Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: /* 개발 과제 요약 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==프로젝트 개요==&lt;br /&gt;
=== 기술개발 과제 ===&lt;br /&gt;
''' 국문 : ''' 디지털 액터 : 얼굴 표정과 표현&lt;br /&gt;
&lt;br /&gt;
''' 영문 : ''' Digital Actor : facial expression, emotion&lt;br /&gt;
&lt;br /&gt;
===과제 팀명===&lt;br /&gt;
DnA (Digital and Actor)&lt;br /&gt;
&lt;br /&gt;
===지도교수===&lt;br /&gt;
홍의경 교수님&lt;br /&gt;
&lt;br /&gt;
===개발기간===&lt;br /&gt;
2018년 9월 ~ 2018년 12월 (총 4개월)&lt;br /&gt;
&lt;br /&gt;
===구성원 소개===&lt;br /&gt;
서울시립대학교 통계학과 20xxxxx0xx 전ㅇㅇ(팀장)&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20xxxxx0xx 김ㅇㅇ&lt;br /&gt;
&lt;br /&gt;
==서론==&lt;br /&gt;
===개발 과제의 개요===&lt;br /&gt;
====개발 과제 요약====&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상에서 프레임을 추출하여 각 얼굴 사진의 특징점을 인식하고 Optical Flow 알고리즘을 이용하여 특징점의 움직임을 추적한다. 추적한 특징점의 벡터를 아바타에 적용하여 동영상에서 사람의 표정 변화를 캐릭터가 따라하도록 만든다. 아바타 사진을 연결하여 gif파일로 만들어 마찬가지로 사람의 표정 변화를 캐릭터가 똑같이 따라할 수 있도록 한다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 배경 및 효과====&lt;br /&gt;
◇ 디지털 액터(Digital Actor)란 실제 배우와 동일한 수준의 외형과 동작을 구현할 수 있는 컴퓨터 그래픽(DG) 영상 캐릭터를 의미한다. 킹콩, 요다 등의 실존 인물이 아닌 캐릭터를 만들거나 현실에서 불가능한 장면을 연출하는 등 영상 특수효과, 3D 애니메이션, 게임, VR과 같은 곳에 사용된다. &lt;br /&gt;
&lt;br /&gt;
◇ 모션캡쳐 장비는 현실적인 움직임으로 퀄리티 높은 영상을 보여줄 수 있지만 상당히 고가의 물건이다. 사람의 얼굴 표정을 학습하여 자연스럽게 아바타로 옮길 수 있다면 높은 CG처리 비용을 줄일 수 있을 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
◇ 현재 국내 VR과 AR의 국내 시장의 규모가 점점 넓어지고 있으며 관련 업계에 따르면 그 사장 규모는 2020년 지금의 4~5배 수준으로 성장할 전망이라고 한다. 더딘 기술 진행속도로 인해 개발 속도도 느리지만 기술이 발전할수록 그 성장 속도가 급격히 증가할 것으로 예상되기 때문에 그 속도를 맞추기 위해서는 미리 개발을 준비하는 등의 행동이 필요하다. 이에 관련 기술을 직접 구현해봄으로써 미래의 VR/AR 산업에 보탬이 될 것으로 기대된다.&lt;br /&gt;
&lt;br /&gt;
====개발 과제의 목표 및 내용====&lt;br /&gt;
◇ SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)&lt;br /&gt;
&lt;br /&gt;
● 대표적인 특징점 추출 알고리즘&lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘(interest point extraction algorithm)은 2차원 영상의 일정 지역에 해당하는 화소를 이용하여, 영상의 특징이 될 수 있는 특징점을 추출하는 알고리즘이다. 이때 특징점은 코너(corner) 및 블랍(blob)을 의미한다. &lt;br /&gt;
&lt;br /&gt;
● 특징점 추출 알고리즘에는 SIFT(Scale Invariant Feature Transform), PCA 등 다른 방법도 있지만 인식률과 처리 속도면에서 더 우수한 SURF 알고리즘을 사용한다.&lt;br /&gt;
&lt;br /&gt;
● 블러이미지나 회전된 이미지는 잘 인식하는 장점이 있는 반면 뷰포인트나 조명이 달라지면 특징점을 잘 잡아내지 못하는 단점이 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 SURF에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow&lt;br /&gt;
&lt;br /&gt;
● 두 개의 연속된 비디오 프레임 사이에 이미지 객체의 동작 패턴을 의미한다.&lt;br /&gt;
&lt;br /&gt;
● 이미지 객체의 움직임 패턴은 객체 자체가 움직이거나 카메라의 움직임으로 인해 생성되는데 이전 프레임이랑 다음 프레임 중 변하는 부분의 움직임을 추적&lt;br /&gt;
&lt;br /&gt;
● 보통 움직임을 통한 구조 분석, 비디오 압축, 영상이 흔들렸거나 블러가 된 경우 깨끗한 영상으로 처리하는 기술인 Video Stabilization 분야에 사용된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lucas-Kanade&lt;br /&gt;
&lt;br /&gt;
● Optical Flow알고리즘에는 다양한 알고리즘이 있으나  Lucas-Kanade방법을 이용하기로 한다.&lt;br /&gt;
&lt;br /&gt;
● 한 프레임의 각 피셀 윈도우를 설정하고 다음 프레임에서 이 윈도우와 가장 잘 매칭되는 곳을 찾는 원리로 작동한다.&lt;br /&gt;
&lt;br /&gt;
● 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적다는 장점이 있다.&lt;br /&gt;
&lt;br /&gt;
● 좁은 지역의 윈도우를 사용하기 때문에 이 윈도우보다 큰 움직임이 발생하였을 경우 움직임을 계산하지 못하며 특징점을 사용하여 optical flow를 얻기 때문에 dense optical flow에 비하여 정확도가 낮은 편이다.&lt;br /&gt;
&lt;br /&gt;
● 윈도우를 벗어나는 큰 움직임을 계산하지 못하는 단점을 개선하기 위해 Pyramids Lucas-Kanade 방법을 사용할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
● OpenCV에서 Lucas-Kanade에 관한 함수들을 제공중이다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
◇ GAN을 이용하여 사람의 얼굴 사진을 캐릭터로 변환한다.&lt;br /&gt;
&lt;br /&gt;
GAN(Generative Adversarial Network)은 상반되는 목적을 가진 두 모듈(판별망, 생성망)이 대결하는 구조를 통해 이미지 생성을 학습하는 이미지 생성 기술의 한 종류이다. 이 중 판별망(Discriminator)은 주어진 이미지가 실제인지, 거짓인지 판별하는 법을 학습한다. 이를 통해 실제와 거짓 이미지를 잘 구분해 내는 것이 궁극적인 목표다. 반면 생성망(Generator)은 판별망을 속여 실제와 구분이 가지 않을 정도의 진짜 같은 이미지를 생성하도록 학습해 실제에 가까운 이미지를 만들어내는 것이 목적이다.&lt;br /&gt;
&lt;br /&gt;
하지만 GAN은 생성망과 판별망이 대결하며 학습하는 구도이기 때문에 학습이 불안정하다는 단점이 존재한다. 생성망과 판별망이 서로 균형 있게 훈련을 주고받아야 하는데, 두 모델 간 실력차가 발생하는 경우 훈련이 한쪽에 치우쳐 궁극적으로 성능이 제약되기 때문이다.&lt;br /&gt;
&lt;br /&gt;
GAN의 단점을 보완하고 paired data가 아닌 unpaired data를 사용하기 위해 TwinGAN을 쓰기로 한다.&lt;br /&gt;
paired data가 존재할 경우, 각 사람 얼굴과 그에 맞는 다른 도메인의 얼굴을 pair로 하여 학습시키는데 이는 학습에는 유리하나 데이터 구축에 비용이 많이 든다는 단점이 있다. 따라서 서로 다른 두 도메인의 unpaired image data를 사용하되 두 도메인의 변환을 매끄럽게 이끌어낼 수 있는 TwinGAN을 이용한다.&lt;br /&gt;
&lt;br /&gt;
TwinGAN은 PGGAN(progressive growing gan)의 구조를 적용한다. GAN 훈련의 안정성을 높이고 가속화하며 고해상도로 이미지를 출력하기 위해 PGGAN은 생성망과 판별망을 점차적으로 성장시키고 성장 단계와 보강 단계를 번갈아가며 학습된다. 저해상도에서 시작해서 세밀한 점들을 배울 수 있도록 새로운 레이어들을 추가하는 방식이다. &lt;br /&gt;
&lt;br /&gt;
위 사진은 PGGAN의 학습 과정을 보여준다. 생성망인 G와 판별망인 D는 4X4 픽셀의 낮은 저해상도를 가진다. 학습이 진전됨에 따라 점차적으로 생성망 G와 판별망 D에 layer를 추가하고 그에 따라 해상도를 늘리게 된다. 이 학습 과정은 고해상도에서의 안전한 합성을 할 수 있게 하고 학습 시간 또한 가속화하게 만든다. &lt;br /&gt;
&lt;br /&gt;
위 사진에서 볼 수 있듯이 점진적으로 네트워크 레이어를 추가할 때 sudden shock가 일어나지 않도록 새로 추가하는 레이어를 부드럽게(fade in) 넣어준다. &lt;br /&gt;
&lt;br /&gt;
입력 이미지의 디테일을 유지하기 위해 encoder의 Convolutional layer와 생성망의 해당 layer를 연결하는데 UNet구조를 사용하였다. &lt;br /&gt;
&lt;br /&gt;
Unet은 Semantic Segmentation에서 가장 기본적으로 많이 쓰이는 모델이며, 모델의 형태가 U자로 되어있어 생긴 이름이다. 3X3 Convolution으로 주로 이루어져 각 Convolutional Block은 3X3 Convolution 2개와 그 사이의 Dropout으로 이루어진다. 위 그림에서는 4개의 블록이 있고 각 블록은 max pool을 이용하여 사이즈를 줄이면서 다음 블록으로 넘어간다. &lt;br /&gt;
&lt;br /&gt;
사진의 오른쪽은 왼편에서 줄어든 사이즈를 다시 올려가며 Convolutional Block을 이용하는 형태이다. 아래쪽의 단계에서 얻어진 Feature들과 Concat하여 사용한다.&lt;br /&gt;
&lt;br /&gt;
===관련 기술의 현황===&lt;br /&gt;
====관련 기술의 현황 및 분석(State of art)====&lt;br /&gt;
*전 세계적인 기술현황&lt;br /&gt;
&lt;br /&gt;
◇ 페이스웨어 Live&lt;br /&gt;
&lt;br /&gt;
마커리스 3D 페이셜 모션 캡처 솔루션 제공을 선도하는 페이스웨어 테크놀러지(Faceware Technologies, 이하 페이스웨어)가  23일 향상된 실시간 얼굴 모션캡처와 애니메이션 제품인 페이스웨어 라이브(Faceware Live) 2.5 버전을 발표했다. 페이스웨어 라이브는 실시간으로 사용자 얼굴을 자동 추적하고, 얼굴의 움직임을 페이셜 모델에 즉각 적용시킨 페이셜 애니메이션을 생성한다. 페이스웨어 라이브는 움직임 트래킹을 위해 단 하나의 카메라를 사용하며,  컴퓨터에 연결된 비디오나 웹캠, 페이스웨어 GoPro, Pro HD 헤드캠 시스템, 그밖에 다른 비디오 캡처 장비들을 카메라로 사용할 수 있다. 페이스웨어 라이브 2.5는 디지털캐릭터와 결합된 라이브 공연, 즉 디지털 캐릭터들이 관객이나 사람들과 라이브로 인터랙션이 가능한 실시간 인형극이나  테마파크, 쇼핑몰 내부의 키오스크 스크린 상에서 실시간 상호작용 디지털 캐릭터로 활용될 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 삼성 갤럭시S9의 AR 이모지&lt;br /&gt;
&lt;br /&gt;
카메라로 촬영한 인물 사진을 기반으로 아바타를 만들 수 있는 기능이다. AR 이모지를 만들면 18개 다양한 감정을 표현할 수 있는 gif 이모티콘이 추가되어 메세지, SNS 등에서 이용 가능하다. 눈, 코, 입, 뺨, 이마 등 100개 이상의 얼굴 특징점을 인식 및 분석해 피사체의 표정을 실시간으로 따라해서 동영상으로 촬영할 수 있다. 이외에도 안경을 착용하거나 피부 색깔, 헤어스타일, 헤어컬러, 의상 등을 변경할 수 있다. 하지만 세밀하지 못한 인물 묘사 방식에 논란이 있었다.&lt;br /&gt;
&lt;br /&gt;
◇ 애플 iOS11, iOS12의 애니모티콘, 미모지&lt;br /&gt;
&lt;br /&gt;
애플 사의 애니모티콘(애니모지)은 전면 카메라로 촬영한 인물사진을 기반으로 사용자의 표정을 읽은 후, 기존에 있던 이모지에 투사하여 이모티콘을 만들 수 있는 기능이다. 사용자의 얼굴에 3만개 이상의 도트를 투사해 얼굴 맵을 만든 후, 3D 스캔 활용을 통해 50개 이상의 각기 다른 근육의 움직임을 포착하고 분석한다. 분석한 세밀한 표정을 외계인, 고양이, 닭, 개, 여우, 원숭이, 판다. 돼지, 곰돌이, 토끼, 로봇, 유니콘 등 내장된 12개의 애니모티콘에 투영시킨다. 하지만 최근 iOS12의 기능으로 애니모티콘의 개인화 버전인 미모지(memoji)가 발표되었는데, 한정된 캐릭터의 폭을 늘리고 얼굴, 머리, 장신구를 자신의 취향에 맞게 선택할 수 있다. 생성한 애니모티콘을 편집할 수 있으며 아이폰의 메시지 앱에서 이용할 수 있다. 또한 목소리를 녹음하여 오디오가 포함된 비디오 형태로 수신할 수도 있다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*특허조사 및 특허 전략 분석&lt;br /&gt;
&lt;br /&gt;
◇ SIFT(Scale Invariant Feature Transform) 알고리즘&lt;br /&gt;
&lt;br /&gt;
● Lowe David G 교수가 개발하였으며 97년도부터 연구하여 프로토 타입의 SIFT알고리즘을 99년도에 발표하였고, 04년도에는 이 알고리즘을 더욱 개량하여 완성된 SIFT알고리즘을 만들게 되었다.&lt;br /&gt;
&lt;br /&gt;
● 영상의 크기와 회전에 불변하는 특징점을 추출하는 알고리즘이다.&lt;br /&gt;
&lt;br /&gt;
1) Scale-space extrema detection &lt;br /&gt;
&lt;br /&gt;
● Gaussian Pyramid를 생성 한 후 DoG(Difference of Gaussian)을 구해서 극점인 부분을 특징점 후보자로 잡아 준다.&lt;br /&gt;
&lt;br /&gt;
● DoG의 상위와 하위 층까지 모두 합쳐 주변 26개 보다 크거나 모두 작을 때만 특징점 후보자로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이 방법은 특징점을 Scale별로 구하게 되어 Target 물체가 작아져도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) KeyPoint Localization &lt;br /&gt;
&lt;br /&gt;
● 테일러 급수를 사용하여 더 정확한 극점을 찾은 뒤 테일러 급수로 interpolation하여 그 점의 값을 구하여 특징점 후보자 중에서 정확하지 않는 특징점을 제거한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Orientation Assignment &lt;br /&gt;
&lt;br /&gt;
● 추출된 특징점마다 주 방향을 할당해 주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● 특징점 주변으로 16x16영역을 할당한 후 그 영역 이미지를 Gaussian Blurring을 적용하면 특징점 주변의 영역에 대한 Gradient의 방향과 크기를 결정하게 된다.&lt;br /&gt;
&lt;br /&gt;
● Gradient의 방향과 크기를 구하면 Orientation Histogram을 형성한 후, 가장 값이 큰 것을 해당 Orientation으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
● 회전에 대한 정보가 들어 있기 때문에 물체가 회전해도 인식할 수 있는 장점을 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
4) KeyPoint Descriptor&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 마다 서술자를 생성해주는 단계이다.&lt;br /&gt;
&lt;br /&gt;
● Gaussian Weight Function을 활용하여 서술자를 생성하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 각 특징점들 주변으로 16x16의 pixel 영역을 할당하여 아래의 &amp;lt;그림 14&amp;gt;과 같이 Image Gradients를 구한다. 그 후, 서술자 Window 크기의 반값을 Gaussian Weighted function에 곱해주게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● 다음으로 히스토그램을 그려주게 되는데 그 전에 먼저 앞에서 구한 Orientation을 빼줘서 Descriptor가 회전에 불변하도록 만들어 준다.&lt;br /&gt;
&lt;br /&gt;
● 객체인식을 할 때는 DB의 각 특징점의 Descriptor를 가지고, 인식할 물체 영상의 Descriptor와 비교하게 된다.&lt;br /&gt;
&lt;br /&gt;
● 이때 비슷하면 데이터가 비슷하게 나올 텐데 여기서 사용하는 방법은 유클리드 거리이다.&lt;br /&gt;
● 유클리드 거리의 방식은 연산식이 간단하여 많은 특징점 데이터를 비교하는데 속도면에서 성능이 좋아 많이 사용되는 방식이다. &lt;br /&gt;
&lt;br /&gt;
● 매칭 단계까지 수행되면 DB의 특징점들과 Target의 특징점들 중 매칭된 특징점들이 추출되어 원하는 물체가 어디에 위치하는지 알 수 있다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
◇SURF&lt;br /&gt;
&lt;br /&gt;
● 알고리즘 순서도 : 특징점 추출 → 주 방향 결정 → descriptor 생성&lt;br /&gt;
&lt;br /&gt;
1) 특징점 추출&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● 수식을 이용하여 적분 영상을 생성한다.&lt;br /&gt;
&lt;br /&gt;
● 적분 영상이란 픽셀 밝기 값을 누적한 형태를 뜻함&lt;br /&gt;
&lt;br /&gt;
● D영역의 밝기 누적 값을 알고 싶다면 ii(4)+ii(1)-ii(2)-ii(3)식을 이용하여 쉽게 D영역의 밝기 누적값을 구할 수 있다.&lt;br /&gt;
&lt;br /&gt;
● 적분영상을 만든 후 헤이시안(Hessian)검출기를 사용하여 특징점을 검출한다. (헤이시안 검출기는 헤이시안 행렬 기반인 특징점 검출 알고리즘으로써 정확성이 높고 행렬식이 최대값인 위치에서 blob을 검출 할 때 사용하게 된다)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● SURF에서는 Hessian_Laplace Detector를 사용하는 대신에 위의 공식대로 FAST Hessian Detector 을 사용하여 수행성능을 향상시킨다.&lt;br /&gt;
&lt;br /&gt;
2) Dxx, Dyy, Dxy박스 필터를 구하는 방법&lt;br /&gt;
&lt;br /&gt;
● Haar Wavelet을 이용 - Dxx와 Dyy를 구할 때는 검은 영역부분을 -2, 흰영역부분은 1을 곱하여 구하고 Dxy는 검은 영역을 -1, 흰영역을 1을 곱하여 구한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) 9x9 박스필터를 이용한 Dxx, Dyy, Dxy를 구하는 방식&lt;br /&gt;
&lt;br /&gt;
● Hessian Determinant 데이터를 이용하여 각 필터 사이즈 별로 특징점을 검출하게 된다. 필터 사이즈란 위의 Dxx, Dyy, Dxy를 구하는 박스필터 영역 사이즈를 의미한다. SURF에서는 박스 필터 영역을 Scale해서 특징점을 추출해 aliasing 이 없는 장점을 가지고 있다.  Hessian Determinant 데이터를 각 픽셀마다 구했으면 각각의 Threshold와 비교하게 된다. &lt;br /&gt;
&lt;br /&gt;
● Threshold보다 값이 크면, 인접한 8개의 픽셀의 Hessian Determinant를 비교하여 큰 값인지 비교하게 된다. 만약 큰 값이면 상하 박스 필터 사이즈의 3x3크기의 각 9개의 Hessina Determinant를 비교하여 가장 클 경우 특징점으로 검출하게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) 주 방향 결정&lt;br /&gt;
&lt;br /&gt;
● 특징점 중심으로 특징점이 검출된 스케일 정보 s를 이용하여 반지름이 6s의 원 안의 픽셀들에 대하여 x방향과 y방향으로 Haar Wavelet Response인 dx와 dy를 구하게 된다. 윈도우 5도 간격으로 회전하면서 60도 윈도우 내의 벡터의 크기를 더해 가장 큰 크기를 가지는 방향을 특징점의 주 방향으로 결정하게 된다. &lt;br /&gt;
&lt;br /&gt;
5) descriptor 생성&lt;br /&gt;
&lt;br /&gt;
● descriptor는 특징점 주변의 일정한 영역 내에 이웃하고 있는 픽셀의 밝기 변화를 나타낸다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
● 주 방향과 scale정보 s를 이용하여 특징점 중심으로 20s크기의 윈도우를 위의 그림처럼 구성하고, 구성된 윈도우를 4X4 영역으로 분할하여 16개의 영역으로 나눈다. 분할된 각 영역을 다시 한번 5X5크기로 분할하여 각 픽셀을 haar wavelet filter를 사용하여 각 를 구하여 16개의 영역에 각 위의 4개의 Descriptor를 생성하여 총 64개의 Descriptor를 생성할 수 있게 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*기술 로드맵&lt;br /&gt;
&lt;br /&gt;
====시장상황에 대한 분석====&lt;br /&gt;
&lt;br /&gt;
*경쟁제품 조사 비교&lt;br /&gt;
&lt;br /&gt;
 ◇ Avatar SDK&lt;br /&gt;
&lt;br /&gt;
하나의 2D 정면 얼굴 사진을 입력하면 3D 아바타 생성 SDK를 사용하여 개인의 아바타를 만들어준다. 딥러닝과 컴퓨터 그래픽 기술을 이용하여 개발하였고, 현재 cloud나 PC, Mac, Android, iOS 환경 모두 이용 가능하다. 아바타로의 변환에는 사진마다 차이가 있지만 약 10초가 소요된다. 만들어진 아바타는 Blendshape, 헤어스타일, 헤어컬러를 변경할 수 있고, 윙크, 웃음, 하품 등 몇몇 특정 표정 변화가 가능하다. &amp;lt;그림 17&amp;gt;은 Avatar SDK를 이용하여 왼쪽 상단의 사진을 입력으로 아바타를 생성한 사진이다.&lt;br /&gt;
&lt;br /&gt;
◇ Mirror AI&lt;br /&gt;
&lt;br /&gt;
스마트폰으로 한장의 셀프 사진을 찍으면, 이를 바탕으로 자신의 모습을 한 몇 백개의 이모지를 생성하여 메신저에서 사용할 수 있는 키보드 어플리케이션이다. 현재 다양한 언어를 지원하고, iOS 10.0 버전 이상만 사용할 수 있다. 학습한 모델을 통해 사람의 얼굴 특징을 식별하고, 이에 맞게 수초 내에 사람의 얼굴 특징을 추려내어 이모티콘을 만든다. 생성된 이모티콘은 이 키보드 어플리케이션을 사용하여 어떤 메신저에서든 사용할 수 있다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*마케팅 전략 제시&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===개발과제의 기대효과===&lt;br /&gt;
====기술적 기대효과====&lt;br /&gt;
&lt;br /&gt;
◇ 영화 촬영시 기존에는 모션 센서들을 부착하여 배우들의 표정을 읽어와 캐릭터의 표정과 매핑시켜 부착하는데까지 시간이 오래 걸렸고 많은 기술들이 필요되었는데 만약 이 프로젝트가 성공하게 될 경우, 배우가 표정을 짓는 것만으로 쉽게 캐릭터에 매핑될 수 있도록 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자기가 원하는 캐릭터나 다른 인물 모습의 자신과 같은 표정을 짓는 영상을 만들 수 있을 것이다.&lt;br /&gt;
&lt;br /&gt;
====경제적, 사회적 기대 및 파급효과====&lt;br /&gt;
&lt;br /&gt;
◇ 기존에 영화 촬영시 모션 캡쳐에 필요했던 장비들이 없어도 원하는 캐릭터의 표정을 구현할 수 있어 제작비 절감의 효과가 기대된다. &lt;br /&gt;
&lt;br /&gt;
◇ 현재 실존하지 않는 배우의 모습에 표정을 매핑하여 실제로 연기하는 것처럼 보이게 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
◇ 자신의 표정을 다른 캐릭터로 매핑함으로써 원래 영상보다 감정 표현을 훨씬 극대화할 수 있다.&lt;br /&gt;
&lt;br /&gt;
===기술개발 일정 및 추진체계===&lt;br /&gt;
====개발 일정====&lt;br /&gt;
내용&lt;br /&gt;
====구성원 및 추진체계====&lt;br /&gt;
&lt;br /&gt;
◇ 전ㅇㅇ(팀장) &lt;br /&gt;
&lt;br /&gt;
● &lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원)&lt;br /&gt;
&lt;br /&gt;
● &lt;br /&gt;
&lt;br /&gt;
◇ 김ㅇㅇ(팀원) &lt;br /&gt;
&lt;br /&gt;
● &lt;br /&gt;
&lt;br /&gt;
◇ 전원&lt;br /&gt;
&lt;br /&gt;
●&lt;br /&gt;
&lt;br /&gt;
==설계==&lt;br /&gt;
===설계사양===&lt;br /&gt;
====제품의 요구사항====&lt;br /&gt;
내용&lt;br /&gt;
====설계 사양====&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===개념설계안===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 동영상을 ‘Free Video to JPG Converter’를 이용하여 동영상에서 사진을 원하는 프레임 수를 지정하여 JPG파일을 추출한다. &lt;br /&gt;
&lt;br /&gt;
◇ 추출한 JPG파일에 SURF 알고리즘을 이용하여 얼굴의 특징점을 인식한다.&lt;br /&gt;
&lt;br /&gt;
SURF(Speeded Up Robust Features)는 대표적인 특징점 추출 알고리즘으로 2차원 영상의 일정 지역에 해당하는 화소를 이용하여 특징점을 추출한다. OpenCV에서 제공하는 함수를 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ Optical Flow 알고리즘을 이용하여 특징점들의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
Optical Flow 알고리즘을 이용하여 이전 프레임이랑 다음 프레임, 두 개의 연속된 얼굴 프레임 사이에 동작 패턴을 추적한다. Optical Flow 알고리즘 중 Lucas-Kanade(LK)는 코너와 같이 두드러지는 특징점을 사용하여 optical flow를 추적하기 때문에 연산량이 적어 비교적 속도가 빠르기 때문에 Lucas-Kanade를 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ TwinGAN을 이용하여 사람의 얼굴 사진을 캐릭터로 변환한다.&lt;br /&gt;
&lt;br /&gt;
GAN(Generative Adversarial Network)은 상반되는 목적을 가진 두 모듈(판별망, 생성망)이 대결하는 구조를 통해 이미지 생성을 학습하는 이미지 생성 기술의 한 종류이다. 기존 GAN의 단점을 보완하고 paired data가 아닌 unpaired data를 사용했을 때 도메인 간의 매끄러운 변환을 이끌어낼 수 있는 TwinGAN을 사용한다.&lt;br /&gt;
&lt;br /&gt;
◇ 추적한 특징점의 벡터를 각 프레임 아바타에 적용한다.&lt;br /&gt;
&lt;br /&gt;
◇ 위 방법이 어려울 경우 TwinGAN으로 각 프레임의 얼굴 이미지를 아바타로 변환하고, 변환한 아바타 사진을 연결하여 gif파일로 만든다. 마찬가지로 사람의 표정 변화를 캐릭터가 똑같이 따라할 수 있도록 한다.&lt;br /&gt;
&lt;br /&gt;
===이론적 계산 및 시뮬레이션===&lt;br /&gt;
&lt;br /&gt;
◇ 표정이 변화하는 사람의 얼굴 동영상 입력 -&amp;gt; 표정을 따라하는 캐릭터 영상 출력&lt;br /&gt;
&lt;br /&gt;
===소프트웨어 설계===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;전체 설계도&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. ‘Free Video to JPG Converter’를 이용하여 동영상을 여러 프레임의 사진으로 전환한다. &lt;br /&gt;
2. 각각의 사진들로부터 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
3. 특징점들의 변화를 이용하여 Optical Flow를 이용하여 특징점의 움직임을 추적한다.&lt;br /&gt;
&lt;br /&gt;
4. 1번의 결과 추출된 여러 사진들 중 첫 번째 사진을 TwinGAN을 이용하여 캐릭터로 변환 후 변환된 캐릭터의 특징점을 추출한다.&lt;br /&gt;
&lt;br /&gt;
5. 3번에서 추적한 Optical Flow를 4번에 적용하여 gif파일로 변환한다.&lt;br /&gt;
&lt;br /&gt;
==결과 및 평가==&lt;br /&gt;
===완료 작품의 소개===&lt;br /&gt;
====프로토타입 사진 혹은 작동 장면====&lt;br /&gt;
내용&lt;br /&gt;
====포스터====&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===관련사업비 내역서===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===완료작품의 평가===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===향후계획===&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
===특허 출원 내용===&lt;br /&gt;
내용&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=%EC%B1%8C%EB%A6%B0%EC%A0%80%EC%8A%A4%EC%A1%B0&amp;diff=943</id>
		<title>챌린저스조</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=%EC%B1%8C%EB%A6%B0%EC%A0%80%EC%8A%A4%EC%A1%B0&amp;diff=943"/>
				<updated>2018-12-20T14:54:57Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: /* 완료작품의 평가 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==프로젝트 개요==&lt;br /&gt;
=== 기술개발 과제 ===&lt;br /&gt;
''' 국문 : ''' 블록체인 기반의 군수 관리 시스템&lt;br /&gt;
&lt;br /&gt;
''' 영문 : ''' A blockchain-based military logistics management system&lt;br /&gt;
&lt;br /&gt;
===과제 팀명===&lt;br /&gt;
챌린저스 (Challengers)&lt;br /&gt;
&lt;br /&gt;
===지도교수===&lt;br /&gt;
이병정 교수님&lt;br /&gt;
&lt;br /&gt;
===개발기간===&lt;br /&gt;
2018년 9월 ~ 2018년 12월 (총 4개월)&lt;br /&gt;
&lt;br /&gt;
===구성원 소개===&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20119200** 오*찬(팀장)&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20119200** 최*성&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20139200** 정*곤&lt;br /&gt;
&lt;br /&gt;
==서론==&lt;br /&gt;
===개발 과제의 개요===&lt;br /&gt;
====개발 과제 요약====&lt;br /&gt;
◇ 군에서 정보에 중요성은 매우 높다. 정보는 하나하나의 전투와 이를 넘어 전략, 심지어는 전쟁 그 자체의 승패에 곧장 직결되기 때문이다. 그렇기에 군은 정보의 획득과 기밀성 유지에 심대한 노력을 기울이고 있다. 군이 관리하는 정보에는 여러 종류가 있는데, 적군에 대한 정보, 부대의 작전 지역과 세부 전투 작전에 대한 정보, 군수품에 대한 정보, 부대원과 부대 자산의 배치 상태 등 그 종류가 매우 다양하다. 그 중에서도 군수품에 대한 정보는 그 중요성에 비해 관리가 까다로워 작성된 정보와 실제 군수품의 수량이 일치하지 않는 경향이 많다. 또 현재 한국군은 각 부대별로 각각의 서버를 따로 두고 관리하고 있으며, 군 특성상 연결망이 민간에 비해 전송 용량과 속도가 좋지 않아 필요한 정보가 통합되기 어렵다는 단점도 갖고 있다. 이에 대해 우리는 블록체인이 제공해주는 투명성과 분산 원장 기술에 주목하여 이를 군수물품 관리에 적용하려고 한다. 우리 조가 제시한 목표는 그 중에서도 군 차량과 이에 속한 군의 인적, 물적 자산 이동에 대한 정보를 블록체인에 적용시키는 것이다.부대에서 군수품이 이동을 할 때 부대원이 부대장에게 해당 군수품에 대하여 불출을 요구한다. 이 때 블록체인 거래가 시도되며 부대장이 이를 허가하는 순간 스마트 컨트랙트에 의해서 거래가 성사되게 된다. 부대마다 각각 군사기밀을 갖고 있으며 군수품 목록과 이동 현황도 군사기밀에 속한다. 따라서 이 정보들은 해당되는 상위 권한자만이 열람할 수 있어야 한다. 이에 따라 ACL(Access Control List)를 작성하여 군수품의 이동 현황을 마음대로 열람할 수 없도록 해야 한다. UI는 구글맵에서 이루어지며 차량을 이동시키는 것으로 한다. 차량은 기본적으로 차량 제원(차량 종류)이 있으며, 구성원과 갖고 있는 군수품목은 같을 수도, 다를 수도 있다. 또한 맵에서 비주기적으로 임의의 상황이 발생하여 군수품 목록이 변동하고 이를 블록체인에 적용할 수 있어야 한다.&lt;br /&gt;
====개발 과제의 배경====&lt;br /&gt;
◇ 블록체인 기반으로 군수품을 더욱 투명하고 효율적으로 관리할 수 있도록 한다. 기존의 군수품의 불출 절차는 대략 소요가 정식으로 제기되면 이에 대한 권한을 가진 사람이 승인하고 이후에 군수품이 실제로 불출하는 형태이다. 이를 블록체인의 스마트 컨트랙트로 구현할 수 있다. 그렇게 되면 먼저 소요품을 제기하는 측에서 해당 책임자에게 거래를 신청한다. 책임자가 이 거래에 응하면 거래가 이루어지고 이에 대한 트랜잭션이 블록체인에 기록된다. &amp;lt;br/&amp;gt;&lt;br /&gt;
◇ 군수 차량의 이동정보를 GPS로 받아들여 위치를 바로 알 수 있다. 차량에 군수품을 적재하여 이동시킬 때 해당 차량의 종류, 차 번호, 이동 인원, 내부 물품 등에 대한 정보가 블록체인에 입력된다. 이후해당 차량에 부착된 OBD를 통해 차량의 실시간 위치와 상태를 지속적으로 수신하여 관리한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
◇ 블록체인의 분산원장 기술을 활용하여 각 부대가 갖고 있는 서버의 정보를 통합하는 효과가 발생한다. 군은 작게는 대대 단위, 크게는 군, 사령부, 본부 단위로 각각 다른 서버를 운영하고 있다. 서버들은 각기 다른 체계와 표준을 갖고 있기에 각 부대별로 정보를 통합하려면 통합용 서버와 표준이 따로 있어야 한다. 또한 군용 인트라넷망도 각 부대마다 전송용량이 달라 정보 전송에 걸리는 시간도 천차만별이다. 블록체인의 분산원장 기술을 적용한다면 모든 서버가 같은 하나의 원장을 가질 수 있기에 비용과 시간이 훨씬 절약될 수 있다.&lt;br /&gt;
====개발 과제의 목표 및 내용====&lt;br /&gt;
1) 블록체인 개발&amp;lt;br/&amp;gt;&lt;br /&gt;
하이퍼레저를 이용하여 군수품의 목록과 이동 현황을 블록체인의 형태로 저장한다. private 형태로 허가된 사용자만이 블록체인에 접근할 수 있도록 하고 적절한 분산합의 알고리즘을 사용하여 효율적인 작동이 이루어지도록 한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
2) Smart Contract &amp;lt;br/&amp;gt;&lt;br /&gt;
개발 중개자가 없이 P2P로 쉽고 편리하게 계약을 체결하고 수정할 수 있어야 한다. 블록체인의 분산원장기술이라는 특성을 이용하여 다양한 형태의 계약과 계약의 결과에 대한 신뢰를 쌓아나갈 수 있는 자동화된 계약 처리의 형태를 개발하도록 한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
3) 클라이언트 구축 &amp;lt;br/&amp;gt;&lt;br /&gt;
JavaScript에서 대표적인 프론트엔드 라이브러리, 프레임워크는 vue.js, react.js, angular.js가 있다. vue.js 기반인 nuxt.js를 이용하여 클라이언트를 구축하도록 한다. nuxt.js는 클라이언트 사이드 렌더링(CSR)인 vue.js를 서버 사이드 렌더링(SSR)이 가능하도록 만든 프레임워크이다. 클라이언트 사이드 렌더링(CSR)은 빈 페이지를 받아와 JavaScript를 실행하여 렌더링하는 방식이고 서버 사이드 렌더링(SSR)은 서버에서 JavaScript가 실행된 결과를 렌더링하는 방식이다. 프레임워크로서 nuxt.js는 비동기 데이터, 미들웨어, 레이아웃 등과 같이 클라이언트 측과 서버 측 사이에서 개발하는 데 도움이 되는 많은 기능을 제공한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
4) 서버 구축 &amp;lt;br/&amp;gt;&lt;br /&gt;
JavaScript에서 가장 대표적인 서버 엔진은 node.js이다. node.js에서는 express, koa, hapi를 사용하여 서버를 만드는데, express를 활용하여 서버를 구축하도록 한다. express는 MVC 모델에 기반을 두며, node.js 패키지로 제공되고 있다. npm에서 간단히 설치하고, 이를 통합한 서버 프로그램을 만들 수 있다. express에는 웹 응용 프로그램을 위한 기본적인 시스템이 구축되어 있으며, 이에 필요한 처리를 추가하는 것이다. node.js에서만의 구현과 동일하게 이벤트 처리를 통합해 간다는 기본적인 개발 스타일은 변함이 없지만, 준비되어 있는 다양한 객체를 이용하여 아주 쉽게 필요한 처리를 조합할 수 있다.&amp;lt;br/&amp;gt;&lt;br /&gt;
5) 데이터베이스 구축 &amp;lt;br/&amp;gt;&lt;br /&gt;
MySQL을 이용하여 데이터베이스를 구축한다. MySQL은 다중 스레드, 다중 사용자를 지원하는 구조 질의어 형식의 데이터베이스 관리 시스템이다. MySQL을 선택한 이유는 고성능이면서 상대적으로 단순한 DBMS이고 또한 설치 및 관리도 쉬운 편이기 때문이다. 그리고 응용 프로그램에서 MySQL 데이터베이스에 접근하기 위해 C, C++, JAVA, Python 등 다양한 프로그래밍 언어로 된 API를 사용할 수 있다는 장점도 있다.&amp;lt;br/&amp;gt;&lt;br /&gt;
6) 서버/데이터베이스 연동 &amp;lt;br/&amp;gt;&lt;br /&gt;
서버 구축에 사용될 프레임워크인 node.js는 MySQL 연동 모듈을 지원한다. 먼저 npm을 이용하여 MySQL 모듈을 설치한 후 node.js와 MySQL을 연동함으로써 서버와 데이터베이스를 연동한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
7) RBAC &amp;lt;br/&amp;gt;&lt;br /&gt;
시스템 보안을 위한 접근통제를 위해 역할 기반 접근통제(Role-Based Access Control)를 사용한다. 역할 기반 접근통제란, 조직의 사용자가 수행해야 하는 직무(역할)와 직무 권한 등급을 기준으로 객체에 대한 접근을 제어하는 접근통제 방식이다. 접근 권한은 직무(역할)에 허용된 연산을 기준으로 허용하므로 조직의 기능 변화에 따른 관리적 업무의 효율성을 높일 수 있다. 사용자가 적절한 직무(역할)에 할당되고, 직무에 적합한 접근 권한이 할당된 경우에만 자원에 접근할 수 있다.&lt;br /&gt;
&lt;br /&gt;
===관련 기술의 현황===&lt;br /&gt;
====관련 기술의 현황 및 분석(State of the art)====&lt;br /&gt;
*전 세계적인 기술현황&lt;br /&gt;
◇ 블록체인&amp;lt;br/&amp;gt;&lt;br /&gt;
블록체인은 데이터를 ‘블록’이라고 하는 소규모 데이터들이 체인 형태의 연결고리 기반 분산 데이터 저장환경에 저장되어 누구라도 임의로 수정할 수 없고 누구나 변경의 결과를 열람할 수 있는 분산 컴퓨팅 기반 데이터 위변조 방지 기술이다. 블록체인의 구조는 다음과 같다. &amp;lt;br/&amp;gt;&lt;br /&gt;
[[파일:blockchain.png]]&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
◇ 구글맵&amp;lt;br/&amp;gt;&lt;br /&gt;
구글맵은 세계의 지리학적인 지역에 대한 정보를 제공하는 웹 기반 서비스이다. 기존 로드 맵에 더하여, 구글맵은 많은 장소의 공중과 위성에서 바라본 뷰를 제공한다. 몇몇 도시에서, 구글맵은 차량에서 찍은 사진으로 구성된 스트리트 뷰도 제공한다. 이러한 구글 스트리트 뷰는 사용자들이 세계의 다양한 도시의 개괄적인 스트리트 뷰를 수평, 수직으로 볼 수 있도록 해준다. 또한 구글맵은 운전자, 자전거 타는 사람, 거리를 걷는 사람, 대중교통을 이용하는 사람들에게 방향을 제시해준다. 구글맵 API는 부동산 가이드나 커뮤니티 서비스 페이지 같은 곳의 웹 사이트 관리자들이 사이트에 구글맵을 넣을 수 있도록 해주며, 모바일에서의 구글맵은 모바일 장치의 GPS기능과 무선, 셀룰러 네트워크를 이용하여 운전자에게 위치 서비스를 제공한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
◇ 하이퍼래저(Hyperledger)&amp;lt;br/&amp;gt;&lt;br /&gt;
리눅스 재단에서 주관하는 블록체인 오픈소스 프로젝트로 현재 10가지 블록체인 관련 프로젝트를 진행 중이다. 5개의 프레임워크(Frameworks)와 5개의 툴(Tools)이 포함된다. 금융, IoT, 물류, 제조, 기술 산업 등 여러 산업에 걸쳐 응용 가능한 블록체인 기술을 만드는 것이 목표이다.&amp;lt;br/&amp;gt;&lt;br /&gt;
- 하이퍼레저 패브릭&amp;lt;br/&amp;gt;&lt;br /&gt;
하이퍼레저 패브릭은 모듈형 아키텍처 기반의 블록체인 애플리케이션 또는 솔루션 개발을 위한 근간으로 고안된 비즈니스 블록체인 프레임워크이다. 하이퍼레저 패브릭은 합의, 멤버십 서비스 등 구성요소의 플러그 앤 플레이를 지원한다. 하이퍼레저 패브릭의 기본적인 특징은 다음과 같다.&amp;lt;br/&amp;gt;&lt;br /&gt;
1) 허가형 네트워크 집단으로 정의된 멤버십과 접근권한을 비즈니스 네트워크에 제공한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
2) 거래의 기밀유지 비즈니스의 유연성과 보안성을 제공하여 정확한 암호화 키를 가지고 있는 당사자들에게만 거래가 보이도록 한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
3) 암호화폐 불필요 거래를 확인하기 위해 채굴이나 값비싼 컴퓨팅을 요구하지 않는다.&amp;lt;br/&amp;gt;&lt;br /&gt;
4) 설정 가능 스마트 계약의 탑재 논리를 활용하여 네트워크 상의 비즈니스 프로세스를 자동화한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
하이퍼레저 패브릭과 기존 블록체인 기술과의 대표적인 차이점은 다음과 같다. 하이퍼레저 패브릭이 사용하는 대표적인 합의 알고리즘은 PBFT가 있다. 이러한 합의 알고리즘은 기본적으로 작업증명 방법에 비해 훨씬 빠르다. 하지만, 모든 노드를 알고 있어야 하고 전원의 의사 소통이 필요하기 때문에 노드가 증가할 수록 성능은 감소한다.. PoW나 PoS는 수천 개의 노드를 운영할 수 있지만 PBFT는 수십 개의 노드가 한계이다. 하이퍼레저 패브릭은 다양한 업무에 적용될수 있도록 PBFT 합의알고리즘에 한정하지 않고, 임의의 합의 알고리즘을 실현할 수있는 플러그인 구조를 채용하고 있다. 하이퍼레저를 이용하는 기술자는 업무 이용에 따른 합의 알고리즘을 실현하는 추가 플러그인을 개발하고 하이퍼레저에 통합 할 수 있다.&lt;br /&gt;
하이퍼레저 외에도 다른 블록체인 플랫폼들이 있지만 하이퍼레저만의 장점과 하이퍼레저를 사용하여 개발을 하는 이유는 다음과 같다.&lt;br /&gt;
1) 표준화기술&lt;br /&gt;
비영리 단체인 리눅스 재단에서 운영하고 있는 블록체인 오픈소스 프로젝트로 130여개의 회원사가 가입하여 운영되고 있다.&lt;br /&gt;
기업들의 다양한 비즈니스 영역에 사용될 수 있는 허가형 (permissioned)블록체인 플랫폼이다.&lt;br /&gt;
2) 뛰어난아키텍처&lt;br /&gt;
산업 표준에 따른 오픈소스 기반으로 사용자 정의 스마트 컨트랙트(SmartContract), 강력한 암호화 지원 및 인증(Identity) 기능을 제공한다.&lt;br /&gt;
플러거블(pluggable) 분산형 합의(consensus)을 지원하는 모듈러(modular) 아키텍처로 설계되었으며, 20년이상 검증된 PBFT (PracticalByzantine Fault Tolerance) 알고리즘 제공등 V1.0에서는 합의 알고리즘의 재정의를 통해 1000 tps 이상의 성능이 지원받는 아키텍처를 제공한다.&lt;br /&gt;
3) 거버넌스&lt;br /&gt;
하이퍼레저 프로젝트의 거버넌스를 기반으로 개방적이고 투명한 개발 프로세스를 통하여 향후 로드맵을 지원하고 가속화한다.&lt;br /&gt;
IBM은 OBC(Open BlockChain)를 하이퍼레저 프로젝트에 기부하였으며, 하이퍼레저를 기반으로 100개 이상의 글로벌 기관들과 First 프로젝트 수행경험이 많다.&lt;br /&gt;
&lt;br /&gt;
*특허조사 및 특허 전략 분석&amp;lt;br/&amp;gt;&lt;br /&gt;
가. 특허조사&amp;lt;br/&amp;gt;&lt;br /&gt;
◇ 블록체인 기반의 개인 데이터 처리 방법 및 시스템 (1020180077340)&amp;lt;br/&amp;gt;&lt;br /&gt;
블록체인 기반의 개인 데이터 처리 방법 및 시스템을 제공한다. 본 발명의 실시 예들에 따른 개인 데이터 처리 방법을 통해, 동일한 사용자를 서로 다른 식별자로 식별하는 서로 다른 서비스들에서 해당 사용자에 대해 등록되는 블록체인 네트워크에서의 개인 식별키를 활용하여 해당 사용자에 대한 개인 데이터를 블록체인 네트워크상에 제공함으로써 서로 다른 서비스들에서의 해당 사용자에 대한 개인 데이터를 개인 식별키를 통해 추적 및 활용할 수 있다.&amp;lt;br/&amp;gt;&lt;br /&gt;
◇ 블록체인 기반 분산 저장 방법 및 이를 이용한 장치 (1020160113774)&amp;lt;br/&amp;gt;&lt;br /&gt;
블록체인 기술을 이용하여 하나 이상의 노드들 간에 거래내역을 유지하는 방법에 있어서, 네트워크 트래픽을 감소하고 지연시간을 조절하는 방법을 제공한다. 블록체인을 기반으로 하여 블록을 하나 이상의 노드들 간에 분산 저장하는 방법에 있어서, 블록생성 주기에 해당하면, 해당하는 하나 이상의 트랜잭션들을 하나의 블록으로 생성하는 단계 및 상기 블록헤더를 매개변수로 하여서, 상기 하나 이상의 노드들 간에 합의를 수행하는 단계를 포함한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
◇ 특허 현황&amp;lt;br/&amp;gt;&lt;br /&gt;
2018년 1월 기준 한국·미국·일본·중국·유럽 등 지식재산 선진 5개국(IP5)에 출원돼 공개된 블록체인 관련 특허출원은 모두 1천248건이었다. 건수는 많지 않지만 2009년 블록체인이 처음 구현된 이후 2013년 27건에서 매년 2∼3배 증가해 2015년에는 258건, 2016년에는 594건에 달했다.&lt;br /&gt;
블록체인의 기본 개념은 이미 공개돼 누구도 특허를 갖지 못하는 자유 기술이다. 따라서 특허출원은 주로 보안, 운용, 활용 등 주변 기술을 중심으로 이뤄진다.&amp;lt;br/&amp;gt;&lt;br /&gt;
나. 특허전략&amp;lt;br/&amp;gt;&lt;br /&gt;
◇ 상기 팀이 개발하려는 블록체인 기반의 군수 관리 플랫폼은 그 구성 요소 중 대부분이 소프트웨어를 기반으로 하고 있다. 그런데 소프트웨어 산업이 전 세계적으로 오픈 소스화 되고 있는 추세라는 점에서, 그리고 상기 팀이 개발하려는 플랫폼 또한 상당 부분 오픈 소스를 활용해 개발된다는 점에서, 상기 팀이 개발한 소프트웨어적 플랫폼 자체를 특허 등록을 해야 하는가에 대해서는 고민을 조금 더 해볼 필요가 있다. 그리고 그것이 과연 가능한 것인가에 대해서도 특허 전문가에게 자문하여 알아볼 필요가 있다. 다만, 개발 과정에서 나올 수 있는 독창적인 아이디어나 특허 등록의 가치가 있을 것으로 판단되는 하드웨어적인 요소, 그리고 블록체인이라는 소프트웨어적 기술을 비즈니스에 적용하는 비즈니스 방법으로서의 특허에 대해서는 특허 전문가에게 자문하여 특허 등록을 하면 될 것이다.&lt;br /&gt;
&lt;br /&gt;
*기술 로드맵&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
====시장상황에 대한 분석====&lt;br /&gt;
*경쟁제품 조사 비교&lt;br /&gt;
◇ 한화디펜스&amp;lt;br/&amp;gt;&lt;br /&gt;
한화디펜스는 무기체계의 효과적이고 경제적인 군수지원을 보장하기 위하여 소요제기에서부터 설계, 개발, 획득, 운영 및 폐기 시까지의 제반 종합군수지원 요소 개발 및 지원 활동을 통해 무기체계의 가동률과 군의 전투력 향상에 기여하고 있다. 그리고 무기체계 수명주기 전반에 걸친 책임을 PM에게 부여하여 개발, 획득, 운영, 폐기까지의 책임을 일원화하는 정부의 총수명주기체계관리(TLCSM) 제도에 적극 참여하여 방위산업 선진화에 기여하고 있다. 또한 장비체계의 운용 및 정비에 관련된 정보를 디지털화하여 정비요원이 장비의 고장진단 및 정비에 필요한 기술정보를 컴퓨터와 상호 대화에 의해 접근할 수 있도록 최적화한 전자식 기술교범(IETM)을 개발하여 군에 보급하고 있다. 그리고 군이 제시한 목표가동률, 군수반응시간 등 성과지표를 기준으로 성과 정도에 따라 비용이 정산되는 성과기반군수(PBL) 제도에 적극 참여하여, 전투준비태세 향상 및 무기 체계의 수명주기비용 절감에 기여하고 있다.&amp;lt;br/&amp;gt;&lt;br /&gt;
◇ 케이엘티시스템즈&amp;lt;br/&amp;gt;&lt;br /&gt;
케이엘티시스템즈는 장비의 수명주기 기간에 필요로 하는 제반 군수지원 요소를 적시에 적절하게 획득하고, 유지하여 전투준비태세를 극대화하고, 장비의 수명주기 비용을 최소화하기 위해 종합군수지원(ILS)의 11대 요소를 개발한다. 그 11대 요소는 “연구 및 설계반영 - 표준화 및 호환성 - 정비 계획 - 지원 장비 - 보급 지원 - 군수 인력 운용 – 군수 지원 교육 – 포장, 취급, 저장 및 수송 – 정비 및 보급 시설 – 기술 교범 – 기술 자료 관리”이다. 케이엘티시스템즈의 사업 영역은 종합군수지원(ILS) 이외에도 RAM 분석, 군수지원분석(LSA), 기술교범, 전자식 기술교범(IETM), 전자식 교보재(CBT) 등이 있다.&lt;br /&gt;
*마케팅 전략 제시&amp;lt;br/&amp;gt;&lt;br /&gt;
[[파일:SWOT.png]]&amp;lt;br/&amp;gt;&lt;br /&gt;
1) Strength: 블록체인과 스마트 컨트랙트를 활용한 투명하고 효율적인 군수 관리&amp;lt;br/&amp;gt;&lt;br /&gt;
본 플랫폼이 가지는 강점은 바로 블록체인과 스마트 컨트랙트 기술을 활용하여 군수품을 더욱 투명하고 효율적으로 관리할 수 있게 한다는 점이다. 기존의 군수품의 불출 절차는 대략 소요가 정식으로 제기되면 이에 대한 권한을 가진 사람이 승인하고 이후에 군수품이 실제로 불출되는 형태이다. 이를 블록체인의 스마트 컨트랙트로 구현하면 기존의 전통적인 군수품 신청/허가 절차보다 더 빠르고 효율적으로 군수 관리가 이루어질 수 있다. 또한 블록체인의 분산 원장 기술을 활용하면, 각 부대가 갖고 있는 서버의 정보를 통합하는 효과가 발생한다. 군은 작게는 대대 단위, 크게는 군, 사령부, 본부 단위로 각각 다른 서버를 운영하고 있다. 서버들은 각기 다른 체계와 표준을 갖고 있기에 각 부대별로 정보를 통합하려면 통합용 서버와 표준이 따로 있어야 한다. 또한 군용 인트라넷도 각 부대마다 전송 용량이 달라 정보 전송에 걸리는 시간도 천차만별이다. 블록체인의 분산 원장 기술을 적용한다면 모든 서버가 같은 하나의 원장을 가질 수 있기에 비용과 시간이 훨씬 절약될 수 있다.&amp;lt;br/&amp;gt;&lt;br /&gt;
2) Weakness: 군 관련 정보 수집의 어려움 등 민간 기업으로서의 각종 어려움&amp;lt;br/&amp;gt;&lt;br /&gt;
본 플랫폼이 가지는 약점은 바로 민간 기업으로서의 각종 어려움이다. 사실 여러 국방 관련 프로젝트들은 대부분 국가 기관 및 국책 연구소를 중심으로 진행되는 경우가 많다. ‘국방과학연구소(ADD)’라는 대규모의 국방 관련 연구소를 비롯하여 다양한 국책 연구소들이 존재하는데, 상기 팀은 이러한 국책 연구소들에 비해 군수 관련 정보나 기타 군 내부 정보 수집에 있어 현저히 뒤질 수밖에 없다. 이는 상기 팀이 개발하려는 플랫폼의 기능 및 품질 저하로 이어질 수 있다.&amp;lt;br/&amp;gt;&lt;br /&gt;
3) Opportunity: 군수 관리 투명성에 대한 국민적 요구 증대, 시장 개척의 기회&amp;lt;br/&amp;gt;&lt;br /&gt;
본 플랫폼이 가지는 기회 요인으로 첫 번째는 군수 관리 투명성 요구의 증대이다. 군 내부에서의 군수 관련 비리는 전 국민적 관심을 끄는 중요한 이슈이다. 이로 인해 군수 관리의 투명성에 대한 국민들의 요구는 늘 있어 왔고 앞으로도 점점 증가될 것이다. 이러한 점은 블록체인 기술을 활용한 군수 관리의 투명성을 제공할 수 있는 본 플랫폼에 좋은 기회가 될 수 있다. 또 다른 기회 요인으로는 바로 시장 개척의 기회이다. 만약 이미 시장을 강력하게 지배하고 있는 기존의 선도적인 플랫폼들이 존재한다면, 그 사이를 비집고 들어가 시장을 점유한다는 것은 매우 어려운 일이 될 수 있다. 그러나 현재 상기 팀이 개발하려는 플랫폼과 유사한 서비스를 제공하는 어떤 선도적인 플랫폼은 아직 나와 있지 않다고 볼 수 있다. 이는 본 플랫폼이 성공적으로 출시된다면 시장에서 나름의 선도적인 위치를 선점할 수 있다는 것을 의미한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
4) Threat: 비교적 적은 규모의 시장&amp;lt;br/&amp;gt;&lt;br /&gt;
본 플랫폼이 가지는 위협 요인은 바로 비교적 적은 규모의 시장이다. 상기 팀이 개발하려는 플랫폼의 대상 시장은 군대라는 조직 딱 한 군데라고 볼 수 있다. 이는 만약 경쟁 업체가 상기 팀보다 높은 경쟁 우위를 점하여 국방 군수 관리 플랫폼으로 선정된다면, 혹은 꼭 경쟁 업체가 없다하더라도 상기 팀이 개발한 플랫폼이 국방 군수 관리 플랫폼으로 선정되지 못한다면 본 플랫폼의 무용성(無用性)으로 이어질 수 있다. 물론 플랫폼에 변형을 가해 민간 시장의 물류관리 플랫폼으로 변화시킬 수도 있겠지만, 이는 프로젝트 변화로 인한 많은 추가 비용을 수반할 것이다.&lt;br /&gt;
&lt;br /&gt;
===개발과제의 기대효과===&lt;br /&gt;
====기술적 기대효과====&lt;br /&gt;
◇ 투명성&amp;lt;br/&amp;gt;&lt;br /&gt;
블록체인의 분산 원장 기술은 블록에 저장되는 트랜잭션 정보들에 대한 투명성을 제공한다. 군수 품목의 위치 정보, 이동 정보 등을 포함한 각종 군수 정보들은 블록체인 형태로 저장되어, 정당한 권한을 가진 사용자들에게 투명하게 제공될 것이다.&amp;lt;br/&amp;gt;&lt;br /&gt;
◇ 보안성&amp;lt;br/&amp;gt;&lt;br /&gt;
블록체인이 사이버 보안 위협이 증대되고 있는 현재 더 나은 신뢰성과 보안을 제공할 수 있다. 누군가가 거래 기록을 위조하려고 하더라도 블록체인에 의해 위·변조를 바로 탐지할 수 있어서 사이버 위협에 대비가 가능하다.&amp;lt;br/&amp;gt;&lt;br /&gt;
◇ 각 부대 서버 정보의 통합효과&amp;lt;br/&amp;gt;&lt;br /&gt;
블록체인의 분산원장 기술을 활용하여 각 부대가 갖고 있는 서버의 정보를 통합하는 효과가 발생한다. 군은 작게는 대대 단위, 크게는 군, 사령부, 본부 단위로 각각 다른 서버를 운영하고 있다. 서버들은 각기 다른 체계와 표준을 갖고 있기에 각 부대별로 정보를 통합하려면 통합용 서버와 표준이 따로 있어야 한다. 또한 군용 인트라넷망도 각 부대마다 전송용량이 달라 정보 전송에 걸리는 시간도 천차만별이다. 블록체인의 분산원장 기술을 적용한다면 모든 서버가 같은 하나의 원장을 가질 수 있기에 비용과 시간이 훨씬 절약될 수 있다.&amp;lt;br/&amp;gt;&lt;br /&gt;
====경제적, 사회적 기대 및 파급효과====&lt;br /&gt;
◇ 군수 관리 투명성에 대한 국민적 요구에 부응&amp;lt;br/&amp;gt;&lt;br /&gt;
군 내부에서의 군수 관련 비리는 전 국민적 관심을 끄는 중요한 이슈이다. 이로 인해 군수 관리의 투명성에 대한 국민들의 요구는 늘 있어 왔고 앞으로도 점점 증가될 것이다. 상기 팀이 개발하려는 블록체인 기반 군수 관리 플랫폼은 이러한 국민들의 요구에 부응할 수 있을 것이다.&amp;lt;br/&amp;gt;&lt;br /&gt;
◇ 군 조직의 신뢰 회복&amp;lt;br/&amp;gt;&lt;br /&gt;
군 조직은 국가 조직으로서 국민들로부터의 신뢰를 반드시 유지해야만 한다. 그러나 지금까지 있어 왔던 여러 국방 군수 관련 비리들은 군에 대한 국민들의 신뢰를 계속해서 떨어뜨려왔다. 군이 블록체인 기반의 군수 관리 플랫폼을 도입하여 군수 관리의 투명성을 제고한다면 국민들로부터의 신뢰를 어느정도 회복하는 효과를 가질 수 있을 것이다.&lt;br /&gt;
&lt;br /&gt;
===기술개발 일정 및 추진체계===&lt;br /&gt;
====개발 일정====&lt;br /&gt;
[[파일:table.png]]&lt;br /&gt;
&lt;br /&gt;
====구성원 및 추진체계====&lt;br /&gt;
◇ 오*찬&amp;lt;br/&amp;gt;&lt;br /&gt;
· 보고서 작성&amp;lt;br/&amp;gt;&lt;br /&gt;
· 요구사항 분석&amp;lt;br/&amp;gt;&lt;br /&gt;
· 블록체인 및 스마트 컨트랙트 구현&amp;lt;br/&amp;gt;&lt;br /&gt;
· 시스템 통합 및 테스트&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
◇ 최*성&amp;lt;br/&amp;gt;&lt;br /&gt;
· 보고서 작성&amp;lt;br/&amp;gt;&lt;br /&gt;
· 요구사항 분석&amp;lt;br/&amp;gt;&lt;br /&gt;
· 데이터베이스 설계 및 구현&amp;lt;br/&amp;gt;&lt;br /&gt;
· 시스템 통합 및 테스트&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
◇ 정*곤&amp;lt;br/&amp;gt;&lt;br /&gt;
· 보고서 작성&amp;lt;br/&amp;gt;&lt;br /&gt;
· 요구사항 분석&amp;lt;br/&amp;gt;&lt;br /&gt;
· UI 설계 및 구현&amp;lt;br/&amp;gt;&lt;br /&gt;
· 시스템 통합 및 테스트&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==설계==&lt;br /&gt;
===설계사양===&lt;br /&gt;
====제품의 요구사항====&lt;br /&gt;
[[파일:requirement.png]]&amp;lt;br/&amp;gt;&lt;br /&gt;
1. DB에 회원정보 저장 및 관리&amp;lt;br/&amp;gt;&lt;br /&gt;
- Private한 시스템이기에 사용자가 회원가입을 하는 것이 아니라 신원이 확인된 인원에게 직급과 권한에 맞는 회원정보를 생성하여 ID와 PW를 사용자에게 지급하도록 한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
- 회원정보를 사용자가 임의로 수정할 수 없도록 한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
2. Website로 사용자 UI 제공&amp;lt;br/&amp;gt;&lt;br /&gt;
- 사용자의 환경에 맞춰 불편함 없이 최적의 UI를 제공하도록 한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
- 여러 Web browser 상에서 문제없이 호환될 수 있도록 한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
3. Blockchain 형태로 데이터 저장&amp;lt;br/&amp;gt;&lt;br /&gt;
- Hyperledger Fabric을 사용하여 private blockchain을 구현하고, 차량과 군수품의 상태와 이동, 변동 사항을 기록하도록 한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
- 적절한 합의 알고리즘을 사용하여 보안성과 속도에 있어서 효율적으로 작동하도록 한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
4. Smart Contract로 물품 요청과 허가&amp;lt;br/&amp;gt;&lt;br /&gt;
- 부대원이 부대장에게 해당 군수품에 대하여 불출을 요구하면, 부대장이 이를 허가하는 순간 스마트 컨트랙트에 의해서 거래가 성사되게 된다.&amp;lt;br/&amp;gt;&lt;br /&gt;
5. Google Maps에 정보 띄우기&amp;lt;br/&amp;gt;&lt;br /&gt;
- Google Maps API를 이용하여 지도 위에 차량들을 표시하고 차량의 기본적인 정보들과 그에 포함된 구성원, 군수품목 등을 나타낸다.&amp;lt;br/&amp;gt;&lt;br /&gt;
- 차량이 지도 위에서 실시간으로 이동할 수 있도록 한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
===상세설계 내용===&lt;br /&gt;
◇ 전체 상태도&amp;lt;br/&amp;gt;&lt;br /&gt;
[[파일:state.png]]&amp;lt;br/&amp;gt;&lt;br /&gt;
먼저 웹사이트에 접속하면 로그인 화면이 나온다. 로그인을 성공하면 Google Map 지도를 중심으로 한 UI가 나온다. 이제 사용자는 원하는 차량을 선택하여 신청자, 인원, 사용 목적, 수하물 등을 입력하여 상급자에게 배차를 요청한다. 배차가 요청되면 상급자에게 배차 요청이 전달되며 상급자는 배차를 허가할지 결정하게 된다. 허가가 되면 합의를 거쳐 트랜잭션이 성사되며 이는 곧바로 분산 원장에 업데이트된다. 이제 차량이 운행하기 시작되면 이 차량의 위치 정보가 지속적으로 업데이트되며, 원장에서 업데이트 된 차량의 정보가 UI에도 반영되어 차량의 움직임이 나타나도록 한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
◇ 유즈케이스 다이어그램&amp;lt;br/&amp;gt;&lt;br /&gt;
[[파일:usecase3.png]]&amp;lt;br/&amp;gt;&lt;br /&gt;
- 사용자는 크게 배차를 요청하는 Requester와 Commander가 있다. Requester는 로그인과 배차 요청을 할 수 있고, Commander는 Messsage_Send를 통해 요청을 확인하고, 허가할 것인지 말 것인지에 대한 메시지를 보낼 수 있다. Requester와 Commander는 둘 다 Client_Google_API로 Google Map을 볼 수 있다. Google Map은 상급자일수록 더 많은 차량의 현황을 볼 수 있다. System에서는 Client의 정보를 종합하여 Chain code에 따라 Peer Ledger에 해당 내용을 반영하고, 이 정보를 다시 Client와 지속적으로 연동하는 역할을 한다. 또한 Something_Happen을 통해 임의적인 상황을 발생시켜 차량에 대한 정보가 변경될 수 있음을 확인하도록 한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
◇ 전체 아키텍쳐&amp;lt;br/&amp;gt;&lt;br /&gt;
[[파일:architecture.png]]&amp;lt;br/&amp;gt;&lt;br /&gt;
- Hyperledger Fabric에 포함된 Node.js를 이용하여 서비스를 하도록 하며, Hyperledger에서 분산 네트워크(Peer)를 구성하여 Distributed System을 구축하도록 한다. Configx.yml에는 ACL(Access Control List)이 저장되어 있다. 이 ACL에 따라 Peer간 Policy가 설정된다. Google Map은 Node.js에서 제공되는 Client와 Server용 API를 사용하여 나타내도록 한다. 사용자 측에서 Require을 하면 허가 여부를 결정하여 MySQL에 있는 Vehicle과 사용자에 대한 정보를 토대로 Transaction을 생성한다. 이 Transaction은 Chaincode에 따라 각 Peer의 Ledger에 반영되며, Update된 정보는 Google Map에도 적용하도록 한다.&lt;br /&gt;
&lt;br /&gt;
==결과 및 평가==&lt;br /&gt;
===완료 작품의 소개===&lt;br /&gt;
====프로토타입 사진 혹은 작동 장면====&lt;br /&gt;
[[파일:map.png]]&lt;br /&gt;
&lt;br /&gt;
===관련사업비 내역서===&lt;br /&gt;
[[파일:bill.png]]&lt;br /&gt;
&lt;br /&gt;
===완료작품의 평가===&lt;br /&gt;
[[파일:eval.png]]&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	<entry>
		<id>https://capstone.uos.ac.kr/cdc/index.php?title=%EC%B1%8C%EB%A6%B0%EC%A0%80%EC%8A%A4%EC%A1%B0&amp;diff=942</id>
		<title>챌린저스조</title>
		<link rel="alternate" type="text/html" href="https://capstone.uos.ac.kr/cdc/index.php?title=%EC%B1%8C%EB%A6%B0%EC%A0%80%EC%8A%A4%EC%A1%B0&amp;diff=942"/>
				<updated>2018-12-20T14:54:49Z</updated>
		
		<summary type="html">&lt;p&gt;챌린저스조: /* 완료작품의 평가 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==프로젝트 개요==&lt;br /&gt;
=== 기술개발 과제 ===&lt;br /&gt;
''' 국문 : ''' 블록체인 기반의 군수 관리 시스템&lt;br /&gt;
&lt;br /&gt;
''' 영문 : ''' A blockchain-based military logistics management system&lt;br /&gt;
&lt;br /&gt;
===과제 팀명===&lt;br /&gt;
챌린저스 (Challengers)&lt;br /&gt;
&lt;br /&gt;
===지도교수===&lt;br /&gt;
이병정 교수님&lt;br /&gt;
&lt;br /&gt;
===개발기간===&lt;br /&gt;
2018년 9월 ~ 2018년 12월 (총 4개월)&lt;br /&gt;
&lt;br /&gt;
===구성원 소개===&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20119200** 오*찬(팀장)&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20119200** 최*성&lt;br /&gt;
&lt;br /&gt;
서울시립대학교 컴퓨터과학부 20139200** 정*곤&lt;br /&gt;
&lt;br /&gt;
==서론==&lt;br /&gt;
===개발 과제의 개요===&lt;br /&gt;
====개발 과제 요약====&lt;br /&gt;
◇ 군에서 정보에 중요성은 매우 높다. 정보는 하나하나의 전투와 이를 넘어 전략, 심지어는 전쟁 그 자체의 승패에 곧장 직결되기 때문이다. 그렇기에 군은 정보의 획득과 기밀성 유지에 심대한 노력을 기울이고 있다. 군이 관리하는 정보에는 여러 종류가 있는데, 적군에 대한 정보, 부대의 작전 지역과 세부 전투 작전에 대한 정보, 군수품에 대한 정보, 부대원과 부대 자산의 배치 상태 등 그 종류가 매우 다양하다. 그 중에서도 군수품에 대한 정보는 그 중요성에 비해 관리가 까다로워 작성된 정보와 실제 군수품의 수량이 일치하지 않는 경향이 많다. 또 현재 한국군은 각 부대별로 각각의 서버를 따로 두고 관리하고 있으며, 군 특성상 연결망이 민간에 비해 전송 용량과 속도가 좋지 않아 필요한 정보가 통합되기 어렵다는 단점도 갖고 있다. 이에 대해 우리는 블록체인이 제공해주는 투명성과 분산 원장 기술에 주목하여 이를 군수물품 관리에 적용하려고 한다. 우리 조가 제시한 목표는 그 중에서도 군 차량과 이에 속한 군의 인적, 물적 자산 이동에 대한 정보를 블록체인에 적용시키는 것이다.부대에서 군수품이 이동을 할 때 부대원이 부대장에게 해당 군수품에 대하여 불출을 요구한다. 이 때 블록체인 거래가 시도되며 부대장이 이를 허가하는 순간 스마트 컨트랙트에 의해서 거래가 성사되게 된다. 부대마다 각각 군사기밀을 갖고 있으며 군수품 목록과 이동 현황도 군사기밀에 속한다. 따라서 이 정보들은 해당되는 상위 권한자만이 열람할 수 있어야 한다. 이에 따라 ACL(Access Control List)를 작성하여 군수품의 이동 현황을 마음대로 열람할 수 없도록 해야 한다. UI는 구글맵에서 이루어지며 차량을 이동시키는 것으로 한다. 차량은 기본적으로 차량 제원(차량 종류)이 있으며, 구성원과 갖고 있는 군수품목은 같을 수도, 다를 수도 있다. 또한 맵에서 비주기적으로 임의의 상황이 발생하여 군수품 목록이 변동하고 이를 블록체인에 적용할 수 있어야 한다.&lt;br /&gt;
====개발 과제의 배경====&lt;br /&gt;
◇ 블록체인 기반으로 군수품을 더욱 투명하고 효율적으로 관리할 수 있도록 한다. 기존의 군수품의 불출 절차는 대략 소요가 정식으로 제기되면 이에 대한 권한을 가진 사람이 승인하고 이후에 군수품이 실제로 불출하는 형태이다. 이를 블록체인의 스마트 컨트랙트로 구현할 수 있다. 그렇게 되면 먼저 소요품을 제기하는 측에서 해당 책임자에게 거래를 신청한다. 책임자가 이 거래에 응하면 거래가 이루어지고 이에 대한 트랜잭션이 블록체인에 기록된다. &amp;lt;br/&amp;gt;&lt;br /&gt;
◇ 군수 차량의 이동정보를 GPS로 받아들여 위치를 바로 알 수 있다. 차량에 군수품을 적재하여 이동시킬 때 해당 차량의 종류, 차 번호, 이동 인원, 내부 물품 등에 대한 정보가 블록체인에 입력된다. 이후해당 차량에 부착된 OBD를 통해 차량의 실시간 위치와 상태를 지속적으로 수신하여 관리한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
◇ 블록체인의 분산원장 기술을 활용하여 각 부대가 갖고 있는 서버의 정보를 통합하는 효과가 발생한다. 군은 작게는 대대 단위, 크게는 군, 사령부, 본부 단위로 각각 다른 서버를 운영하고 있다. 서버들은 각기 다른 체계와 표준을 갖고 있기에 각 부대별로 정보를 통합하려면 통합용 서버와 표준이 따로 있어야 한다. 또한 군용 인트라넷망도 각 부대마다 전송용량이 달라 정보 전송에 걸리는 시간도 천차만별이다. 블록체인의 분산원장 기술을 적용한다면 모든 서버가 같은 하나의 원장을 가질 수 있기에 비용과 시간이 훨씬 절약될 수 있다.&lt;br /&gt;
====개발 과제의 목표 및 내용====&lt;br /&gt;
1) 블록체인 개발&amp;lt;br/&amp;gt;&lt;br /&gt;
하이퍼레저를 이용하여 군수품의 목록과 이동 현황을 블록체인의 형태로 저장한다. private 형태로 허가된 사용자만이 블록체인에 접근할 수 있도록 하고 적절한 분산합의 알고리즘을 사용하여 효율적인 작동이 이루어지도록 한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
2) Smart Contract &amp;lt;br/&amp;gt;&lt;br /&gt;
개발 중개자가 없이 P2P로 쉽고 편리하게 계약을 체결하고 수정할 수 있어야 한다. 블록체인의 분산원장기술이라는 특성을 이용하여 다양한 형태의 계약과 계약의 결과에 대한 신뢰를 쌓아나갈 수 있는 자동화된 계약 처리의 형태를 개발하도록 한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
3) 클라이언트 구축 &amp;lt;br/&amp;gt;&lt;br /&gt;
JavaScript에서 대표적인 프론트엔드 라이브러리, 프레임워크는 vue.js, react.js, angular.js가 있다. vue.js 기반인 nuxt.js를 이용하여 클라이언트를 구축하도록 한다. nuxt.js는 클라이언트 사이드 렌더링(CSR)인 vue.js를 서버 사이드 렌더링(SSR)이 가능하도록 만든 프레임워크이다. 클라이언트 사이드 렌더링(CSR)은 빈 페이지를 받아와 JavaScript를 실행하여 렌더링하는 방식이고 서버 사이드 렌더링(SSR)은 서버에서 JavaScript가 실행된 결과를 렌더링하는 방식이다. 프레임워크로서 nuxt.js는 비동기 데이터, 미들웨어, 레이아웃 등과 같이 클라이언트 측과 서버 측 사이에서 개발하는 데 도움이 되는 많은 기능을 제공한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
4) 서버 구축 &amp;lt;br/&amp;gt;&lt;br /&gt;
JavaScript에서 가장 대표적인 서버 엔진은 node.js이다. node.js에서는 express, koa, hapi를 사용하여 서버를 만드는데, express를 활용하여 서버를 구축하도록 한다. express는 MVC 모델에 기반을 두며, node.js 패키지로 제공되고 있다. npm에서 간단히 설치하고, 이를 통합한 서버 프로그램을 만들 수 있다. express에는 웹 응용 프로그램을 위한 기본적인 시스템이 구축되어 있으며, 이에 필요한 처리를 추가하는 것이다. node.js에서만의 구현과 동일하게 이벤트 처리를 통합해 간다는 기본적인 개발 스타일은 변함이 없지만, 준비되어 있는 다양한 객체를 이용하여 아주 쉽게 필요한 처리를 조합할 수 있다.&amp;lt;br/&amp;gt;&lt;br /&gt;
5) 데이터베이스 구축 &amp;lt;br/&amp;gt;&lt;br /&gt;
MySQL을 이용하여 데이터베이스를 구축한다. MySQL은 다중 스레드, 다중 사용자를 지원하는 구조 질의어 형식의 데이터베이스 관리 시스템이다. MySQL을 선택한 이유는 고성능이면서 상대적으로 단순한 DBMS이고 또한 설치 및 관리도 쉬운 편이기 때문이다. 그리고 응용 프로그램에서 MySQL 데이터베이스에 접근하기 위해 C, C++, JAVA, Python 등 다양한 프로그래밍 언어로 된 API를 사용할 수 있다는 장점도 있다.&amp;lt;br/&amp;gt;&lt;br /&gt;
6) 서버/데이터베이스 연동 &amp;lt;br/&amp;gt;&lt;br /&gt;
서버 구축에 사용될 프레임워크인 node.js는 MySQL 연동 모듈을 지원한다. 먼저 npm을 이용하여 MySQL 모듈을 설치한 후 node.js와 MySQL을 연동함으로써 서버와 데이터베이스를 연동한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
7) RBAC &amp;lt;br/&amp;gt;&lt;br /&gt;
시스템 보안을 위한 접근통제를 위해 역할 기반 접근통제(Role-Based Access Control)를 사용한다. 역할 기반 접근통제란, 조직의 사용자가 수행해야 하는 직무(역할)와 직무 권한 등급을 기준으로 객체에 대한 접근을 제어하는 접근통제 방식이다. 접근 권한은 직무(역할)에 허용된 연산을 기준으로 허용하므로 조직의 기능 변화에 따른 관리적 업무의 효율성을 높일 수 있다. 사용자가 적절한 직무(역할)에 할당되고, 직무에 적합한 접근 권한이 할당된 경우에만 자원에 접근할 수 있다.&lt;br /&gt;
&lt;br /&gt;
===관련 기술의 현황===&lt;br /&gt;
====관련 기술의 현황 및 분석(State of the art)====&lt;br /&gt;
*전 세계적인 기술현황&lt;br /&gt;
◇ 블록체인&amp;lt;br/&amp;gt;&lt;br /&gt;
블록체인은 데이터를 ‘블록’이라고 하는 소규모 데이터들이 체인 형태의 연결고리 기반 분산 데이터 저장환경에 저장되어 누구라도 임의로 수정할 수 없고 누구나 변경의 결과를 열람할 수 있는 분산 컴퓨팅 기반 데이터 위변조 방지 기술이다. 블록체인의 구조는 다음과 같다. &amp;lt;br/&amp;gt;&lt;br /&gt;
[[파일:blockchain.png]]&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
◇ 구글맵&amp;lt;br/&amp;gt;&lt;br /&gt;
구글맵은 세계의 지리학적인 지역에 대한 정보를 제공하는 웹 기반 서비스이다. 기존 로드 맵에 더하여, 구글맵은 많은 장소의 공중과 위성에서 바라본 뷰를 제공한다. 몇몇 도시에서, 구글맵은 차량에서 찍은 사진으로 구성된 스트리트 뷰도 제공한다. 이러한 구글 스트리트 뷰는 사용자들이 세계의 다양한 도시의 개괄적인 스트리트 뷰를 수평, 수직으로 볼 수 있도록 해준다. 또한 구글맵은 운전자, 자전거 타는 사람, 거리를 걷는 사람, 대중교통을 이용하는 사람들에게 방향을 제시해준다. 구글맵 API는 부동산 가이드나 커뮤니티 서비스 페이지 같은 곳의 웹 사이트 관리자들이 사이트에 구글맵을 넣을 수 있도록 해주며, 모바일에서의 구글맵은 모바일 장치의 GPS기능과 무선, 셀룰러 네트워크를 이용하여 운전자에게 위치 서비스를 제공한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
◇ 하이퍼래저(Hyperledger)&amp;lt;br/&amp;gt;&lt;br /&gt;
리눅스 재단에서 주관하는 블록체인 오픈소스 프로젝트로 현재 10가지 블록체인 관련 프로젝트를 진행 중이다. 5개의 프레임워크(Frameworks)와 5개의 툴(Tools)이 포함된다. 금융, IoT, 물류, 제조, 기술 산업 등 여러 산업에 걸쳐 응용 가능한 블록체인 기술을 만드는 것이 목표이다.&amp;lt;br/&amp;gt;&lt;br /&gt;
- 하이퍼레저 패브릭&amp;lt;br/&amp;gt;&lt;br /&gt;
하이퍼레저 패브릭은 모듈형 아키텍처 기반의 블록체인 애플리케이션 또는 솔루션 개발을 위한 근간으로 고안된 비즈니스 블록체인 프레임워크이다. 하이퍼레저 패브릭은 합의, 멤버십 서비스 등 구성요소의 플러그 앤 플레이를 지원한다. 하이퍼레저 패브릭의 기본적인 특징은 다음과 같다.&amp;lt;br/&amp;gt;&lt;br /&gt;
1) 허가형 네트워크 집단으로 정의된 멤버십과 접근권한을 비즈니스 네트워크에 제공한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
2) 거래의 기밀유지 비즈니스의 유연성과 보안성을 제공하여 정확한 암호화 키를 가지고 있는 당사자들에게만 거래가 보이도록 한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
3) 암호화폐 불필요 거래를 확인하기 위해 채굴이나 값비싼 컴퓨팅을 요구하지 않는다.&amp;lt;br/&amp;gt;&lt;br /&gt;
4) 설정 가능 스마트 계약의 탑재 논리를 활용하여 네트워크 상의 비즈니스 프로세스를 자동화한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
하이퍼레저 패브릭과 기존 블록체인 기술과의 대표적인 차이점은 다음과 같다. 하이퍼레저 패브릭이 사용하는 대표적인 합의 알고리즘은 PBFT가 있다. 이러한 합의 알고리즘은 기본적으로 작업증명 방법에 비해 훨씬 빠르다. 하지만, 모든 노드를 알고 있어야 하고 전원의 의사 소통이 필요하기 때문에 노드가 증가할 수록 성능은 감소한다.. PoW나 PoS는 수천 개의 노드를 운영할 수 있지만 PBFT는 수십 개의 노드가 한계이다. 하이퍼레저 패브릭은 다양한 업무에 적용될수 있도록 PBFT 합의알고리즘에 한정하지 않고, 임의의 합의 알고리즘을 실현할 수있는 플러그인 구조를 채용하고 있다. 하이퍼레저를 이용하는 기술자는 업무 이용에 따른 합의 알고리즘을 실현하는 추가 플러그인을 개발하고 하이퍼레저에 통합 할 수 있다.&lt;br /&gt;
하이퍼레저 외에도 다른 블록체인 플랫폼들이 있지만 하이퍼레저만의 장점과 하이퍼레저를 사용하여 개발을 하는 이유는 다음과 같다.&lt;br /&gt;
1) 표준화기술&lt;br /&gt;
비영리 단체인 리눅스 재단에서 운영하고 있는 블록체인 오픈소스 프로젝트로 130여개의 회원사가 가입하여 운영되고 있다.&lt;br /&gt;
기업들의 다양한 비즈니스 영역에 사용될 수 있는 허가형 (permissioned)블록체인 플랫폼이다.&lt;br /&gt;
2) 뛰어난아키텍처&lt;br /&gt;
산업 표준에 따른 오픈소스 기반으로 사용자 정의 스마트 컨트랙트(SmartContract), 강력한 암호화 지원 및 인증(Identity) 기능을 제공한다.&lt;br /&gt;
플러거블(pluggable) 분산형 합의(consensus)을 지원하는 모듈러(modular) 아키텍처로 설계되었으며, 20년이상 검증된 PBFT (PracticalByzantine Fault Tolerance) 알고리즘 제공등 V1.0에서는 합의 알고리즘의 재정의를 통해 1000 tps 이상의 성능이 지원받는 아키텍처를 제공한다.&lt;br /&gt;
3) 거버넌스&lt;br /&gt;
하이퍼레저 프로젝트의 거버넌스를 기반으로 개방적이고 투명한 개발 프로세스를 통하여 향후 로드맵을 지원하고 가속화한다.&lt;br /&gt;
IBM은 OBC(Open BlockChain)를 하이퍼레저 프로젝트에 기부하였으며, 하이퍼레저를 기반으로 100개 이상의 글로벌 기관들과 First 프로젝트 수행경험이 많다.&lt;br /&gt;
&lt;br /&gt;
*특허조사 및 특허 전략 분석&amp;lt;br/&amp;gt;&lt;br /&gt;
가. 특허조사&amp;lt;br/&amp;gt;&lt;br /&gt;
◇ 블록체인 기반의 개인 데이터 처리 방법 및 시스템 (1020180077340)&amp;lt;br/&amp;gt;&lt;br /&gt;
블록체인 기반의 개인 데이터 처리 방법 및 시스템을 제공한다. 본 발명의 실시 예들에 따른 개인 데이터 처리 방법을 통해, 동일한 사용자를 서로 다른 식별자로 식별하는 서로 다른 서비스들에서 해당 사용자에 대해 등록되는 블록체인 네트워크에서의 개인 식별키를 활용하여 해당 사용자에 대한 개인 데이터를 블록체인 네트워크상에 제공함으로써 서로 다른 서비스들에서의 해당 사용자에 대한 개인 데이터를 개인 식별키를 통해 추적 및 활용할 수 있다.&amp;lt;br/&amp;gt;&lt;br /&gt;
◇ 블록체인 기반 분산 저장 방법 및 이를 이용한 장치 (1020160113774)&amp;lt;br/&amp;gt;&lt;br /&gt;
블록체인 기술을 이용하여 하나 이상의 노드들 간에 거래내역을 유지하는 방법에 있어서, 네트워크 트래픽을 감소하고 지연시간을 조절하는 방법을 제공한다. 블록체인을 기반으로 하여 블록을 하나 이상의 노드들 간에 분산 저장하는 방법에 있어서, 블록생성 주기에 해당하면, 해당하는 하나 이상의 트랜잭션들을 하나의 블록으로 생성하는 단계 및 상기 블록헤더를 매개변수로 하여서, 상기 하나 이상의 노드들 간에 합의를 수행하는 단계를 포함한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
◇ 특허 현황&amp;lt;br/&amp;gt;&lt;br /&gt;
2018년 1월 기준 한국·미국·일본·중국·유럽 등 지식재산 선진 5개국(IP5)에 출원돼 공개된 블록체인 관련 특허출원은 모두 1천248건이었다. 건수는 많지 않지만 2009년 블록체인이 처음 구현된 이후 2013년 27건에서 매년 2∼3배 증가해 2015년에는 258건, 2016년에는 594건에 달했다.&lt;br /&gt;
블록체인의 기본 개념은 이미 공개돼 누구도 특허를 갖지 못하는 자유 기술이다. 따라서 특허출원은 주로 보안, 운용, 활용 등 주변 기술을 중심으로 이뤄진다.&amp;lt;br/&amp;gt;&lt;br /&gt;
나. 특허전략&amp;lt;br/&amp;gt;&lt;br /&gt;
◇ 상기 팀이 개발하려는 블록체인 기반의 군수 관리 플랫폼은 그 구성 요소 중 대부분이 소프트웨어를 기반으로 하고 있다. 그런데 소프트웨어 산업이 전 세계적으로 오픈 소스화 되고 있는 추세라는 점에서, 그리고 상기 팀이 개발하려는 플랫폼 또한 상당 부분 오픈 소스를 활용해 개발된다는 점에서, 상기 팀이 개발한 소프트웨어적 플랫폼 자체를 특허 등록을 해야 하는가에 대해서는 고민을 조금 더 해볼 필요가 있다. 그리고 그것이 과연 가능한 것인가에 대해서도 특허 전문가에게 자문하여 알아볼 필요가 있다. 다만, 개발 과정에서 나올 수 있는 독창적인 아이디어나 특허 등록의 가치가 있을 것으로 판단되는 하드웨어적인 요소, 그리고 블록체인이라는 소프트웨어적 기술을 비즈니스에 적용하는 비즈니스 방법으로서의 특허에 대해서는 특허 전문가에게 자문하여 특허 등록을 하면 될 것이다.&lt;br /&gt;
&lt;br /&gt;
*기술 로드맵&lt;br /&gt;
내용&lt;br /&gt;
&lt;br /&gt;
====시장상황에 대한 분석====&lt;br /&gt;
*경쟁제품 조사 비교&lt;br /&gt;
◇ 한화디펜스&amp;lt;br/&amp;gt;&lt;br /&gt;
한화디펜스는 무기체계의 효과적이고 경제적인 군수지원을 보장하기 위하여 소요제기에서부터 설계, 개발, 획득, 운영 및 폐기 시까지의 제반 종합군수지원 요소 개발 및 지원 활동을 통해 무기체계의 가동률과 군의 전투력 향상에 기여하고 있다. 그리고 무기체계 수명주기 전반에 걸친 책임을 PM에게 부여하여 개발, 획득, 운영, 폐기까지의 책임을 일원화하는 정부의 총수명주기체계관리(TLCSM) 제도에 적극 참여하여 방위산업 선진화에 기여하고 있다. 또한 장비체계의 운용 및 정비에 관련된 정보를 디지털화하여 정비요원이 장비의 고장진단 및 정비에 필요한 기술정보를 컴퓨터와 상호 대화에 의해 접근할 수 있도록 최적화한 전자식 기술교범(IETM)을 개발하여 군에 보급하고 있다. 그리고 군이 제시한 목표가동률, 군수반응시간 등 성과지표를 기준으로 성과 정도에 따라 비용이 정산되는 성과기반군수(PBL) 제도에 적극 참여하여, 전투준비태세 향상 및 무기 체계의 수명주기비용 절감에 기여하고 있다.&amp;lt;br/&amp;gt;&lt;br /&gt;
◇ 케이엘티시스템즈&amp;lt;br/&amp;gt;&lt;br /&gt;
케이엘티시스템즈는 장비의 수명주기 기간에 필요로 하는 제반 군수지원 요소를 적시에 적절하게 획득하고, 유지하여 전투준비태세를 극대화하고, 장비의 수명주기 비용을 최소화하기 위해 종합군수지원(ILS)의 11대 요소를 개발한다. 그 11대 요소는 “연구 및 설계반영 - 표준화 및 호환성 - 정비 계획 - 지원 장비 - 보급 지원 - 군수 인력 운용 – 군수 지원 교육 – 포장, 취급, 저장 및 수송 – 정비 및 보급 시설 – 기술 교범 – 기술 자료 관리”이다. 케이엘티시스템즈의 사업 영역은 종합군수지원(ILS) 이외에도 RAM 분석, 군수지원분석(LSA), 기술교범, 전자식 기술교범(IETM), 전자식 교보재(CBT) 등이 있다.&lt;br /&gt;
*마케팅 전략 제시&amp;lt;br/&amp;gt;&lt;br /&gt;
[[파일:SWOT.png]]&amp;lt;br/&amp;gt;&lt;br /&gt;
1) Strength: 블록체인과 스마트 컨트랙트를 활용한 투명하고 효율적인 군수 관리&amp;lt;br/&amp;gt;&lt;br /&gt;
본 플랫폼이 가지는 강점은 바로 블록체인과 스마트 컨트랙트 기술을 활용하여 군수품을 더욱 투명하고 효율적으로 관리할 수 있게 한다는 점이다. 기존의 군수품의 불출 절차는 대략 소요가 정식으로 제기되면 이에 대한 권한을 가진 사람이 승인하고 이후에 군수품이 실제로 불출되는 형태이다. 이를 블록체인의 스마트 컨트랙트로 구현하면 기존의 전통적인 군수품 신청/허가 절차보다 더 빠르고 효율적으로 군수 관리가 이루어질 수 있다. 또한 블록체인의 분산 원장 기술을 활용하면, 각 부대가 갖고 있는 서버의 정보를 통합하는 효과가 발생한다. 군은 작게는 대대 단위, 크게는 군, 사령부, 본부 단위로 각각 다른 서버를 운영하고 있다. 서버들은 각기 다른 체계와 표준을 갖고 있기에 각 부대별로 정보를 통합하려면 통합용 서버와 표준이 따로 있어야 한다. 또한 군용 인트라넷도 각 부대마다 전송 용량이 달라 정보 전송에 걸리는 시간도 천차만별이다. 블록체인의 분산 원장 기술을 적용한다면 모든 서버가 같은 하나의 원장을 가질 수 있기에 비용과 시간이 훨씬 절약될 수 있다.&amp;lt;br/&amp;gt;&lt;br /&gt;
2) Weakness: 군 관련 정보 수집의 어려움 등 민간 기업으로서의 각종 어려움&amp;lt;br/&amp;gt;&lt;br /&gt;
본 플랫폼이 가지는 약점은 바로 민간 기업으로서의 각종 어려움이다. 사실 여러 국방 관련 프로젝트들은 대부분 국가 기관 및 국책 연구소를 중심으로 진행되는 경우가 많다. ‘국방과학연구소(ADD)’라는 대규모의 국방 관련 연구소를 비롯하여 다양한 국책 연구소들이 존재하는데, 상기 팀은 이러한 국책 연구소들에 비해 군수 관련 정보나 기타 군 내부 정보 수집에 있어 현저히 뒤질 수밖에 없다. 이는 상기 팀이 개발하려는 플랫폼의 기능 및 품질 저하로 이어질 수 있다.&amp;lt;br/&amp;gt;&lt;br /&gt;
3) Opportunity: 군수 관리 투명성에 대한 국민적 요구 증대, 시장 개척의 기회&amp;lt;br/&amp;gt;&lt;br /&gt;
본 플랫폼이 가지는 기회 요인으로 첫 번째는 군수 관리 투명성 요구의 증대이다. 군 내부에서의 군수 관련 비리는 전 국민적 관심을 끄는 중요한 이슈이다. 이로 인해 군수 관리의 투명성에 대한 국민들의 요구는 늘 있어 왔고 앞으로도 점점 증가될 것이다. 이러한 점은 블록체인 기술을 활용한 군수 관리의 투명성을 제공할 수 있는 본 플랫폼에 좋은 기회가 될 수 있다. 또 다른 기회 요인으로는 바로 시장 개척의 기회이다. 만약 이미 시장을 강력하게 지배하고 있는 기존의 선도적인 플랫폼들이 존재한다면, 그 사이를 비집고 들어가 시장을 점유한다는 것은 매우 어려운 일이 될 수 있다. 그러나 현재 상기 팀이 개발하려는 플랫폼과 유사한 서비스를 제공하는 어떤 선도적인 플랫폼은 아직 나와 있지 않다고 볼 수 있다. 이는 본 플랫폼이 성공적으로 출시된다면 시장에서 나름의 선도적인 위치를 선점할 수 있다는 것을 의미한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
4) Threat: 비교적 적은 규모의 시장&amp;lt;br/&amp;gt;&lt;br /&gt;
본 플랫폼이 가지는 위협 요인은 바로 비교적 적은 규모의 시장이다. 상기 팀이 개발하려는 플랫폼의 대상 시장은 군대라는 조직 딱 한 군데라고 볼 수 있다. 이는 만약 경쟁 업체가 상기 팀보다 높은 경쟁 우위를 점하여 국방 군수 관리 플랫폼으로 선정된다면, 혹은 꼭 경쟁 업체가 없다하더라도 상기 팀이 개발한 플랫폼이 국방 군수 관리 플랫폼으로 선정되지 못한다면 본 플랫폼의 무용성(無用性)으로 이어질 수 있다. 물론 플랫폼에 변형을 가해 민간 시장의 물류관리 플랫폼으로 변화시킬 수도 있겠지만, 이는 프로젝트 변화로 인한 많은 추가 비용을 수반할 것이다.&lt;br /&gt;
&lt;br /&gt;
===개발과제의 기대효과===&lt;br /&gt;
====기술적 기대효과====&lt;br /&gt;
◇ 투명성&amp;lt;br/&amp;gt;&lt;br /&gt;
블록체인의 분산 원장 기술은 블록에 저장되는 트랜잭션 정보들에 대한 투명성을 제공한다. 군수 품목의 위치 정보, 이동 정보 등을 포함한 각종 군수 정보들은 블록체인 형태로 저장되어, 정당한 권한을 가진 사용자들에게 투명하게 제공될 것이다.&amp;lt;br/&amp;gt;&lt;br /&gt;
◇ 보안성&amp;lt;br/&amp;gt;&lt;br /&gt;
블록체인이 사이버 보안 위협이 증대되고 있는 현재 더 나은 신뢰성과 보안을 제공할 수 있다. 누군가가 거래 기록을 위조하려고 하더라도 블록체인에 의해 위·변조를 바로 탐지할 수 있어서 사이버 위협에 대비가 가능하다.&amp;lt;br/&amp;gt;&lt;br /&gt;
◇ 각 부대 서버 정보의 통합효과&amp;lt;br/&amp;gt;&lt;br /&gt;
블록체인의 분산원장 기술을 활용하여 각 부대가 갖고 있는 서버의 정보를 통합하는 효과가 발생한다. 군은 작게는 대대 단위, 크게는 군, 사령부, 본부 단위로 각각 다른 서버를 운영하고 있다. 서버들은 각기 다른 체계와 표준을 갖고 있기에 각 부대별로 정보를 통합하려면 통합용 서버와 표준이 따로 있어야 한다. 또한 군용 인트라넷망도 각 부대마다 전송용량이 달라 정보 전송에 걸리는 시간도 천차만별이다. 블록체인의 분산원장 기술을 적용한다면 모든 서버가 같은 하나의 원장을 가질 수 있기에 비용과 시간이 훨씬 절약될 수 있다.&amp;lt;br/&amp;gt;&lt;br /&gt;
====경제적, 사회적 기대 및 파급효과====&lt;br /&gt;
◇ 군수 관리 투명성에 대한 국민적 요구에 부응&amp;lt;br/&amp;gt;&lt;br /&gt;
군 내부에서의 군수 관련 비리는 전 국민적 관심을 끄는 중요한 이슈이다. 이로 인해 군수 관리의 투명성에 대한 국민들의 요구는 늘 있어 왔고 앞으로도 점점 증가될 것이다. 상기 팀이 개발하려는 블록체인 기반 군수 관리 플랫폼은 이러한 국민들의 요구에 부응할 수 있을 것이다.&amp;lt;br/&amp;gt;&lt;br /&gt;
◇ 군 조직의 신뢰 회복&amp;lt;br/&amp;gt;&lt;br /&gt;
군 조직은 국가 조직으로서 국민들로부터의 신뢰를 반드시 유지해야만 한다. 그러나 지금까지 있어 왔던 여러 국방 군수 관련 비리들은 군에 대한 국민들의 신뢰를 계속해서 떨어뜨려왔다. 군이 블록체인 기반의 군수 관리 플랫폼을 도입하여 군수 관리의 투명성을 제고한다면 국민들로부터의 신뢰를 어느정도 회복하는 효과를 가질 수 있을 것이다.&lt;br /&gt;
&lt;br /&gt;
===기술개발 일정 및 추진체계===&lt;br /&gt;
====개발 일정====&lt;br /&gt;
[[파일:table.png]]&lt;br /&gt;
&lt;br /&gt;
====구성원 및 추진체계====&lt;br /&gt;
◇ 오*찬&amp;lt;br/&amp;gt;&lt;br /&gt;
· 보고서 작성&amp;lt;br/&amp;gt;&lt;br /&gt;
· 요구사항 분석&amp;lt;br/&amp;gt;&lt;br /&gt;
· 블록체인 및 스마트 컨트랙트 구현&amp;lt;br/&amp;gt;&lt;br /&gt;
· 시스템 통합 및 테스트&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
◇ 최*성&amp;lt;br/&amp;gt;&lt;br /&gt;
· 보고서 작성&amp;lt;br/&amp;gt;&lt;br /&gt;
· 요구사항 분석&amp;lt;br/&amp;gt;&lt;br /&gt;
· 데이터베이스 설계 및 구현&amp;lt;br/&amp;gt;&lt;br /&gt;
· 시스템 통합 및 테스트&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
◇ 정*곤&amp;lt;br/&amp;gt;&lt;br /&gt;
· 보고서 작성&amp;lt;br/&amp;gt;&lt;br /&gt;
· 요구사항 분석&amp;lt;br/&amp;gt;&lt;br /&gt;
· UI 설계 및 구현&amp;lt;br/&amp;gt;&lt;br /&gt;
· 시스템 통합 및 테스트&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==설계==&lt;br /&gt;
===설계사양===&lt;br /&gt;
====제품의 요구사항====&lt;br /&gt;
[[파일:requirement.png]]&amp;lt;br/&amp;gt;&lt;br /&gt;
1. DB에 회원정보 저장 및 관리&amp;lt;br/&amp;gt;&lt;br /&gt;
- Private한 시스템이기에 사용자가 회원가입을 하는 것이 아니라 신원이 확인된 인원에게 직급과 권한에 맞는 회원정보를 생성하여 ID와 PW를 사용자에게 지급하도록 한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
- 회원정보를 사용자가 임의로 수정할 수 없도록 한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
2. Website로 사용자 UI 제공&amp;lt;br/&amp;gt;&lt;br /&gt;
- 사용자의 환경에 맞춰 불편함 없이 최적의 UI를 제공하도록 한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
- 여러 Web browser 상에서 문제없이 호환될 수 있도록 한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
3. Blockchain 형태로 데이터 저장&amp;lt;br/&amp;gt;&lt;br /&gt;
- Hyperledger Fabric을 사용하여 private blockchain을 구현하고, 차량과 군수품의 상태와 이동, 변동 사항을 기록하도록 한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
- 적절한 합의 알고리즘을 사용하여 보안성과 속도에 있어서 효율적으로 작동하도록 한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
4. Smart Contract로 물품 요청과 허가&amp;lt;br/&amp;gt;&lt;br /&gt;
- 부대원이 부대장에게 해당 군수품에 대하여 불출을 요구하면, 부대장이 이를 허가하는 순간 스마트 컨트랙트에 의해서 거래가 성사되게 된다.&amp;lt;br/&amp;gt;&lt;br /&gt;
5. Google Maps에 정보 띄우기&amp;lt;br/&amp;gt;&lt;br /&gt;
- Google Maps API를 이용하여 지도 위에 차량들을 표시하고 차량의 기본적인 정보들과 그에 포함된 구성원, 군수품목 등을 나타낸다.&amp;lt;br/&amp;gt;&lt;br /&gt;
- 차량이 지도 위에서 실시간으로 이동할 수 있도록 한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
===상세설계 내용===&lt;br /&gt;
◇ 전체 상태도&amp;lt;br/&amp;gt;&lt;br /&gt;
[[파일:state.png]]&amp;lt;br/&amp;gt;&lt;br /&gt;
먼저 웹사이트에 접속하면 로그인 화면이 나온다. 로그인을 성공하면 Google Map 지도를 중심으로 한 UI가 나온다. 이제 사용자는 원하는 차량을 선택하여 신청자, 인원, 사용 목적, 수하물 등을 입력하여 상급자에게 배차를 요청한다. 배차가 요청되면 상급자에게 배차 요청이 전달되며 상급자는 배차를 허가할지 결정하게 된다. 허가가 되면 합의를 거쳐 트랜잭션이 성사되며 이는 곧바로 분산 원장에 업데이트된다. 이제 차량이 운행하기 시작되면 이 차량의 위치 정보가 지속적으로 업데이트되며, 원장에서 업데이트 된 차량의 정보가 UI에도 반영되어 차량의 움직임이 나타나도록 한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
◇ 유즈케이스 다이어그램&amp;lt;br/&amp;gt;&lt;br /&gt;
[[파일:usecase3.png]]&amp;lt;br/&amp;gt;&lt;br /&gt;
- 사용자는 크게 배차를 요청하는 Requester와 Commander가 있다. Requester는 로그인과 배차 요청을 할 수 있고, Commander는 Messsage_Send를 통해 요청을 확인하고, 허가할 것인지 말 것인지에 대한 메시지를 보낼 수 있다. Requester와 Commander는 둘 다 Client_Google_API로 Google Map을 볼 수 있다. Google Map은 상급자일수록 더 많은 차량의 현황을 볼 수 있다. System에서는 Client의 정보를 종합하여 Chain code에 따라 Peer Ledger에 해당 내용을 반영하고, 이 정보를 다시 Client와 지속적으로 연동하는 역할을 한다. 또한 Something_Happen을 통해 임의적인 상황을 발생시켜 차량에 대한 정보가 변경될 수 있음을 확인하도록 한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
◇ 전체 아키텍쳐&amp;lt;br/&amp;gt;&lt;br /&gt;
[[파일:architecture.png]]&amp;lt;br/&amp;gt;&lt;br /&gt;
- Hyperledger Fabric에 포함된 Node.js를 이용하여 서비스를 하도록 하며, Hyperledger에서 분산 네트워크(Peer)를 구성하여 Distributed System을 구축하도록 한다. Configx.yml에는 ACL(Access Control List)이 저장되어 있다. 이 ACL에 따라 Peer간 Policy가 설정된다. Google Map은 Node.js에서 제공되는 Client와 Server용 API를 사용하여 나타내도록 한다. 사용자 측에서 Require을 하면 허가 여부를 결정하여 MySQL에 있는 Vehicle과 사용자에 대한 정보를 토대로 Transaction을 생성한다. 이 Transaction은 Chaincode에 따라 각 Peer의 Ledger에 반영되며, Update된 정보는 Google Map에도 적용하도록 한다.&lt;br /&gt;
&lt;br /&gt;
==결과 및 평가==&lt;br /&gt;
===완료 작품의 소개===&lt;br /&gt;
====프로토타입 사진 혹은 작동 장면====&lt;br /&gt;
[[파일:map.png]]&lt;br /&gt;
&lt;br /&gt;
===관련사업비 내역서===&lt;br /&gt;
[[파일:bill.png]]&lt;br /&gt;
&lt;br /&gt;
===완료작품의 평가===&lt;br /&gt;
[[파일:eval.jpg]]&lt;/div&gt;</summary>
		<author><name>챌린저스조</name></author>	</entry>

	</feed>