SlideShare a Scribd company logo
Mosaicer
: 얼굴 자동 인식 모자이크 처리 시스템
시스템 목적 및 소개
기술의 발전과 더불어 많은 CCTV 를 거리뿐만 아니라 실내, 심지어 가정집 안까지 설치하는
경우가 증가하고 있다. 또한 현재 대부분의 자동차에는 블랙박스가 설치된다. 이로 인해 사생활
침해 문제가 심각하게 드러나고 있다. 예를 들어, 범죄 현장에 증거 영상으로 사용하기 위해 경찰
혹은 검찰에서 영상을 가져가는 경우가 있다. 이때 범죄자가 아닌 다른 사람들이 영상에 함께
나와 그들이 무슨 일을 하는지 드러나게 된다. 블랙박스 혹은 CCTV 영상뿐만 아니라 방송으로
나오는 자료 영상 혹은 인터뷰 영상에서도 사생활 침해 문제를 볼 수 있다. 실례로 뉴스에서
사용한 영상에 지나가는 행인이 찍혀 방송사가 고소를 당한 경우가 있다. 또한 우리나라는 보통
범죄자의 얼굴을 모자이크 처리를 하고 형사나 기자들의 얼굴은 모자이크 처리를 하지 않는다.
이로 인해 보복 범죄가 일어나는 경우가 있다.
이러한 문제들을 해결하기 위해 주요인물을 제외한 모든 사람들의 얼굴을 모자이크 처리를
해야 하는 과정이 필요하다. 지금까지는 사람이 모자이크 처리할 부분에 대해 지정하면 선택된
영역에 대해 모자이크 처리를 한다. 따라서 현실적으로 모든 영상에 대해 모자이크 작업을 하는
것은 불가능하다. 이를 대체하고자 영상에 나온 당사자에게 영상의 사용 허가를 받아 사용을
한다.
이와 같은 과정을 줄이기 위해 본 프로젝트는 얼굴인식을 통한 자동 모자이크 처리 시스템을
제안한다. 경찰이나 검찰에서 증거용 영상을 가져가기 전 혹은 인터뷰 영상으로 촬영된 영상을
활용하기 전 얼굴을 모자이크 처리를 하면 안 되는 사람에 대한 얼굴 사진을 DB 에 넣는다. 이
DB 를 바탕으로 컴퓨터는 학습을 진행한다. 학습이 끝나면 사용자는 영상을 본 시스템에
입력한다. 입력된 영상에 원하는 사람을 제외한 나머지 사람들의 얼굴에 대해 모자이크 처리를
한다. 따라서 사용자가 원하는 사람의 얼굴 사진 DB 만 갖고 있다면 모자이크 처리가 자동으로
된 영상을 얻을 수 있다.
본 시스템은 블랙박스, CCTV 회사에서 응용하여 자동적으로 모자이크 처리를 해주는 것으로
사용 가능하다. 또한 방송사에서도 인터뷰 영상 혹은 자료 영상으로 사용할 때 자동적으로
시스템을 거치도록 설계하여 사용할 수 있다. 또한 DB 에 범죄자의 사진을 넣어서 학습시킨 후
인터뷰 영상 혹은 자료 화면에서 사용한다면 자동적으로 범죄자의 얼굴은 가리지 않고 주변의
형사나 기자들의 얼굴을 가리는 영상을 얻어내어 방송할 수 있다. 로드뷰 서비스를 제공하는
업체에서도 사람의 얼굴을 자동으로 모자이크 처리를 해줌으로써 활용할 수 있을 것이다.
제안된 알고리즘
본 시스템은 크게 Tensorflow 라이브러리를 통해 얼굴을 분류하는 딥러닝 모듈과 동영상을
OpenCV 라이브러리를 통해 처리하는 동영상 처리 모듈로 구성되어있다. 딥러닝 모듈은 모자이크
처리하고자 하는 사람의 얼굴 사진을 학습하고 새로 입력되는 얼굴 사진에 대해 classification 을
한다. 동영상 처리 모듈은 OpenCV 라이브러리를 통해 동영상을 입력 받아 얼굴영역을 추출하고
모자이크 처리를 담당한다.
1) Training
딥러닝 모듈을 이용하여 training 을 진행한다. 모든 과정에서 영상, 음성 분야에 좋은
성능을 보이는 Tensorflow 의 CNN 알고리즘을 사용한다. 먼저 학습단계에서 모자이크
처리를 원하지 않는 얼굴과 기타 다른 사람들의 얼굴로 라벨을 나누어 모델링을 한다. 이때
모자이크 처리를 원하지 않는 얼굴의 라벨을 target 이라 한다.
2) Test
먼저 사용자로부터 동영상을 입력 받는다. 동영상 처리 모듈에 입력 받은 동영상의 각
프레임에서 Face Detection 을 진행하여 프레임에서 얼굴인 부분을 추출하고 미리 지정된
위치에 사진으로 저장한다. 추출된 얼굴 사진은 딥러닝 모듈의 입력 값으로 사용된다.
딥러닝 모듈은 저장된 사진을 불러와 classification 을 진행한다. Classification 이 종료되면
입력 받은 얼굴이 기존의 training 해놓은 모델에서 각각의 라벨에 속할 확률을 반환한다.
Target 라벨과의 일치율이 미리 정해놓은 Threshold 를 초과할 경우 동영상 모듈은
모자이크를 처리를 하지 않고 다음 얼굴 부분으로 넘어간다. 반면 Threshold 를 초과하지
않을 경우 해당 얼굴 부분에 대해 모자이크 처리를 한다. 모든 프레임, 모든 추출된 얼굴
부분에 대해 처리를 마치면 해당 동영상을 반환하여 저장한다.
적용된 주요 기술
1) Tensorflow
머신러닝을 위해 구글에서 만든 오픈소스 라이브러리로 기본적으로 CNN알고리즘을 이용
하고 있다. CNN의 주요 목적은 테두리(edge), 선(line), 색깔 등 이미지의 시각적 특징이나
성질을 감지하는 것이다. Random forest
나 다른 supervised 알고리즘들과는 달
리 CNN은 사용자가 직접 feature를 추
출하지 않기 때문에 좀 더 의미 있는
feature 추출이 가능해진다. 따라서 사
진을 이용한 물체 혹은 다양한 인식에
탁월한 성능을 보이고 있다. 왼쪽 사진
은 CNN 알고리즘의 계략적인 과정을
보이고 있다.
2) Haarcascade
OpenCV에서 사용하는 Face Detection 함수인 Haarcascade는 다음과 같은 4가지의 과정
으로 구성되어있다.
① Haar-like feature
사람의 얼굴에는 특정한 패턴이 있다. 왼쪽 그림
과 같이 일정 부분은 밝고 일정 부분은 어둡다. 이
러한 모양이 모든 얼굴에서 발견된다. 이와 같은 패
턴을 미리 학습하여 정해진 모델을 OpenCV는 xml
파일에 미리 저장해두고 있다. 개발자는 해당 xml파
일을 불러와 자신이 갖고 있는 사진의 패턴과 비교
하여 해당 사진에 얼굴이 있는지 없는지를 판단한다.
② Integral Image
위의 ①의 계산을 좀 더 쉽게 하기 위한 방법이다. 매 순간 동일한 패턴인지 판단하기
위한 계산을 하려면 많은 시간이 소요 된다. 따라서 이미지 전체에 대해 미리 기본 연산
을 해놓고 그때 그때 필요한 부분에 대해 간단한 연산으로 값을 얻어내는 방식이다.
③ Adaboost
엉뚱한 곳을 얼굴이라고 인식하는 문제를 해결하기 위해 사람의 얼굴에 대한 여러 가
지 패턴을 만들어 여러번 classify를 한다. 가중치를 이용하여 좀 더 나은 결과물을 만들
어낸다.
④ Cascade classifier
위의 여러 가지 결과를 두고 그 모든 결과들이 만장일치로 통과하지 않는다면 부결하
는 방식이다.
[출처] http://msnayana.blog.me/220659604108
출처]http://blog.naver.com/ocllos/194366766
시스템 적용 예시
- Mosaicer Cloud (https://github.com/seongahjo/Mosaicer/tree/master/node)
본 시스템은 모든 기능을 REST API로 제공하여 타 개발자들이 쉽게 사용할 수 있도록 만든
웹 모듈을 포함하고 있다. Mosaicer Cloud는 웹 모듈을 이용하여 만들어진 머신러닝 클라우
드 서비스이다. Tensorflow에 대해 잘 모르는 일반 사용자도 손쉽게 머신러닝을 사용할 수
있도록 만들어진 서비스이다. 아래의 사진과 같이 간단한 인터페이스로 사용자는 학습시킬
사진들을 업로드하고 업로드된 사진을
바탕으로 모델을 생성할 수 있다. 또한
학습된 모델을 바탕으로 사진을 입력받
아 classification이 가능하다. 뿐만 아니
라 모자이크 모듈을 추가로 적용하여
동영상을 입력하면 모자이크 처리할 수
있는 기능을 제공한다.
이 서비스를 사용하면 단 두 번의 버튼
클릭을 통해 딥러닝 이미지 학습, 분류
를 할 수 있다.
위와 같이 본 시스템 적용이 가능하며 간단히 REST API 호출을 통해 다양한 분야에 적용 가능하
다.
이후 개선할 사항
현재 본 시스템은 OpenCV의 Face Detection 함수에 종속적이다. 따라서 만약 OpenCV의 함수
가 얼굴을 찾아내지 못한다면 해당 시스템은 동작하지 못한다. 실제 데모 영상에서도 볼 수 있듯
이 얼굴이 측면으로 나오거나 눈을 완전히 감는 상황에서 얼굴로 인식하지 못해 모자이크 처리가
되지 않는 것을 확인할 수 있다. 혹은 얼굴이 아님에도 얼굴로 인식되어 모자이크 처리가 되는
부분을 확인할 수 있다. 따라서 이러한 부분을 개선하고자 OpenCV의 함수 보다 나은 알고리즘을
이용하여 수정하는 작업이 필요하다.
현 알고리즘은 동영상의 매 프레임마다 얼굴을 찾고 딥러닝 모듈을 이용하여 target이 맞는지
확인한 후 모자이크 처리를 하는 과정을 거치고 있다. 이 모든 과정이 매우 오래 걸리기 때문에
시스템이 종료되는데 매우 오래 걸린다. 따라서 이러한 단점을 보안하고자 매 프레임을 처리하지
않고 3 프레임당 처리하는 방식으로 알고리즘을 수정하는 부분이 필요하다.

More Related Content

Similar to Mosaicer

스마트폰 위의 딥러닝
스마트폰 위의 딥러닝스마트폰 위의 딥러닝
스마트폰 위의 딥러닝
NAVER Engineering
 
Google Cloud Machine Learning을 이용한 Motion Detection 및 Notification 구현
Google Cloud Machine Learning을 이용한 Motion Detection 및 Notification 구현Google Cloud Machine Learning을 이용한 Motion Detection 및 Notification 구현
Google Cloud Machine Learning을 이용한 Motion Detection 및 Notification 구현
Alex (TaeHo) Kang
 
Android Test Recorder & Profiler 구축 이야기
Android  Test Recorder & Profiler 구축 이야기 Android  Test Recorder & Profiler 구축 이야기
Android Test Recorder & Profiler 구축 이야기
YoungSu Son
 
유니티에서 MMD 사용해보기
유니티에서 MMD 사용해보기유니티에서 MMD 사용해보기
유니티에서 MMD 사용해보기
flashscope
 
NDC2011 - 카메라 시스템을 통해 살펴보는 인터랙티브 시스템 개발의 문제점
NDC2011 - 카메라 시스템을 통해 살펴보는 인터랙티브 시스템 개발의 문제점NDC2011 - 카메라 시스템을 통해 살펴보는 인터랙티브 시스템 개발의 문제점
NDC2011 - 카메라 시스템을 통해 살펴보는 인터랙티브 시스템 개발의 문제점Jubok Kim
 
Tiny ml study 20201031
Tiny ml study 20201031Tiny ml study 20201031
Tiny ml study 20201031
ByoungHern Kim
 
Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1
Dong Chan Shin
 
델켐매거진5호
델켐매거진5호델켐매거진5호
델켐매거진5호
kr_delcam
 
OpenJigWare(V02.00.04)
OpenJigWare(V02.00.04)OpenJigWare(V02.00.04)
OpenJigWare(V02.00.04)
Jinwook On
 
딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투
Ubuntu Korea Community
 
PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)
PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)
PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)
Haezoom Inc.
 
소프트웨어설계론
소프트웨어설계론소프트웨어설계론
소프트웨어설계론
JeongDong Kim
 
Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여
Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여
Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여
Dong Chan Shin
 
Android Developer JeongJaeyun
Android Developer JeongJaeyunAndroid Developer JeongJaeyun
Android Developer JeongJaeyun
jaeyunjeong1
 
SKHUFEEDS 소개 발표자료(노트 포함)
SKHUFEEDS 소개 발표자료(노트 포함)SKHUFEEDS 소개 발표자료(노트 포함)
SKHUFEEDS 소개 발표자료(노트 포함)
Youngbin Han
 
싱크로 4D BIM 서비스
싱크로 4D BIM 서비스싱크로 4D BIM 서비스
싱크로 4D BIM 서비스
Taiheon Choi
 
Codex project
Codex projectCodex project
Codex project
Lee Jungpyo
 
Sw개발 hw제작설계서 임베부스러기
Sw개발 hw제작설계서 임베부스러기Sw개발 hw제작설계서 임베부스러기
Sw개발 hw제작설계서 임베부스러기
21HG020
 
기술적 변화를 이끌어가기
기술적 변화를 이끌어가기기술적 변화를 이끌어가기
기술적 변화를 이끌어가기
Jaewoo Ahn
 
Fuse소개
Fuse소개Fuse소개

Similar to Mosaicer (20)

스마트폰 위의 딥러닝
스마트폰 위의 딥러닝스마트폰 위의 딥러닝
스마트폰 위의 딥러닝
 
Google Cloud Machine Learning을 이용한 Motion Detection 및 Notification 구현
Google Cloud Machine Learning을 이용한 Motion Detection 및 Notification 구현Google Cloud Machine Learning을 이용한 Motion Detection 및 Notification 구현
Google Cloud Machine Learning을 이용한 Motion Detection 및 Notification 구현
 
Android Test Recorder & Profiler 구축 이야기
Android  Test Recorder & Profiler 구축 이야기 Android  Test Recorder & Profiler 구축 이야기
Android Test Recorder & Profiler 구축 이야기
 
유니티에서 MMD 사용해보기
유니티에서 MMD 사용해보기유니티에서 MMD 사용해보기
유니티에서 MMD 사용해보기
 
NDC2011 - 카메라 시스템을 통해 살펴보는 인터랙티브 시스템 개발의 문제점
NDC2011 - 카메라 시스템을 통해 살펴보는 인터랙티브 시스템 개발의 문제점NDC2011 - 카메라 시스템을 통해 살펴보는 인터랙티브 시스템 개발의 문제점
NDC2011 - 카메라 시스템을 통해 살펴보는 인터랙티브 시스템 개발의 문제점
 
Tiny ml study 20201031
Tiny ml study 20201031Tiny ml study 20201031
Tiny ml study 20201031
 
Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1
 
델켐매거진5호
델켐매거진5호델켐매거진5호
델켐매거진5호
 
OpenJigWare(V02.00.04)
OpenJigWare(V02.00.04)OpenJigWare(V02.00.04)
OpenJigWare(V02.00.04)
 
딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투
 
PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)
PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)
PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)
 
소프트웨어설계론
소프트웨어설계론소프트웨어설계론
소프트웨어설계론
 
Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여
Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여
Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여
 
Android Developer JeongJaeyun
Android Developer JeongJaeyunAndroid Developer JeongJaeyun
Android Developer JeongJaeyun
 
SKHUFEEDS 소개 발표자료(노트 포함)
SKHUFEEDS 소개 발표자료(노트 포함)SKHUFEEDS 소개 발표자료(노트 포함)
SKHUFEEDS 소개 발표자료(노트 포함)
 
싱크로 4D BIM 서비스
싱크로 4D BIM 서비스싱크로 4D BIM 서비스
싱크로 4D BIM 서비스
 
Codex project
Codex projectCodex project
Codex project
 
Sw개발 hw제작설계서 임베부스러기
Sw개발 hw제작설계서 임베부스러기Sw개발 hw제작설계서 임베부스러기
Sw개발 hw제작설계서 임베부스러기
 
기술적 변화를 이끌어가기
기술적 변화를 이끌어가기기술적 변화를 이끌어가기
기술적 변화를 이끌어가기
 
Fuse소개
Fuse소개Fuse소개
Fuse소개
 

Mosaicer

  • 1. Mosaicer : 얼굴 자동 인식 모자이크 처리 시스템 시스템 목적 및 소개 기술의 발전과 더불어 많은 CCTV 를 거리뿐만 아니라 실내, 심지어 가정집 안까지 설치하는 경우가 증가하고 있다. 또한 현재 대부분의 자동차에는 블랙박스가 설치된다. 이로 인해 사생활 침해 문제가 심각하게 드러나고 있다. 예를 들어, 범죄 현장에 증거 영상으로 사용하기 위해 경찰 혹은 검찰에서 영상을 가져가는 경우가 있다. 이때 범죄자가 아닌 다른 사람들이 영상에 함께 나와 그들이 무슨 일을 하는지 드러나게 된다. 블랙박스 혹은 CCTV 영상뿐만 아니라 방송으로 나오는 자료 영상 혹은 인터뷰 영상에서도 사생활 침해 문제를 볼 수 있다. 실례로 뉴스에서 사용한 영상에 지나가는 행인이 찍혀 방송사가 고소를 당한 경우가 있다. 또한 우리나라는 보통 범죄자의 얼굴을 모자이크 처리를 하고 형사나 기자들의 얼굴은 모자이크 처리를 하지 않는다. 이로 인해 보복 범죄가 일어나는 경우가 있다. 이러한 문제들을 해결하기 위해 주요인물을 제외한 모든 사람들의 얼굴을 모자이크 처리를 해야 하는 과정이 필요하다. 지금까지는 사람이 모자이크 처리할 부분에 대해 지정하면 선택된 영역에 대해 모자이크 처리를 한다. 따라서 현실적으로 모든 영상에 대해 모자이크 작업을 하는 것은 불가능하다. 이를 대체하고자 영상에 나온 당사자에게 영상의 사용 허가를 받아 사용을 한다. 이와 같은 과정을 줄이기 위해 본 프로젝트는 얼굴인식을 통한 자동 모자이크 처리 시스템을 제안한다. 경찰이나 검찰에서 증거용 영상을 가져가기 전 혹은 인터뷰 영상으로 촬영된 영상을 활용하기 전 얼굴을 모자이크 처리를 하면 안 되는 사람에 대한 얼굴 사진을 DB 에 넣는다. 이 DB 를 바탕으로 컴퓨터는 학습을 진행한다. 학습이 끝나면 사용자는 영상을 본 시스템에 입력한다. 입력된 영상에 원하는 사람을 제외한 나머지 사람들의 얼굴에 대해 모자이크 처리를 한다. 따라서 사용자가 원하는 사람의 얼굴 사진 DB 만 갖고 있다면 모자이크 처리가 자동으로 된 영상을 얻을 수 있다. 본 시스템은 블랙박스, CCTV 회사에서 응용하여 자동적으로 모자이크 처리를 해주는 것으로 사용 가능하다. 또한 방송사에서도 인터뷰 영상 혹은 자료 영상으로 사용할 때 자동적으로 시스템을 거치도록 설계하여 사용할 수 있다. 또한 DB 에 범죄자의 사진을 넣어서 학습시킨 후 인터뷰 영상 혹은 자료 화면에서 사용한다면 자동적으로 범죄자의 얼굴은 가리지 않고 주변의 형사나 기자들의 얼굴을 가리는 영상을 얻어내어 방송할 수 있다. 로드뷰 서비스를 제공하는 업체에서도 사람의 얼굴을 자동으로 모자이크 처리를 해줌으로써 활용할 수 있을 것이다.
  • 2. 제안된 알고리즘 본 시스템은 크게 Tensorflow 라이브러리를 통해 얼굴을 분류하는 딥러닝 모듈과 동영상을 OpenCV 라이브러리를 통해 처리하는 동영상 처리 모듈로 구성되어있다. 딥러닝 모듈은 모자이크 처리하고자 하는 사람의 얼굴 사진을 학습하고 새로 입력되는 얼굴 사진에 대해 classification 을 한다. 동영상 처리 모듈은 OpenCV 라이브러리를 통해 동영상을 입력 받아 얼굴영역을 추출하고 모자이크 처리를 담당한다. 1) Training 딥러닝 모듈을 이용하여 training 을 진행한다. 모든 과정에서 영상, 음성 분야에 좋은 성능을 보이는 Tensorflow 의 CNN 알고리즘을 사용한다. 먼저 학습단계에서 모자이크 처리를 원하지 않는 얼굴과 기타 다른 사람들의 얼굴로 라벨을 나누어 모델링을 한다. 이때 모자이크 처리를 원하지 않는 얼굴의 라벨을 target 이라 한다. 2) Test 먼저 사용자로부터 동영상을 입력 받는다. 동영상 처리 모듈에 입력 받은 동영상의 각 프레임에서 Face Detection 을 진행하여 프레임에서 얼굴인 부분을 추출하고 미리 지정된 위치에 사진으로 저장한다. 추출된 얼굴 사진은 딥러닝 모듈의 입력 값으로 사용된다. 딥러닝 모듈은 저장된 사진을 불러와 classification 을 진행한다. Classification 이 종료되면 입력 받은 얼굴이 기존의 training 해놓은 모델에서 각각의 라벨에 속할 확률을 반환한다. Target 라벨과의 일치율이 미리 정해놓은 Threshold 를 초과할 경우 동영상 모듈은 모자이크를 처리를 하지 않고 다음 얼굴 부분으로 넘어간다. 반면 Threshold 를 초과하지 않을 경우 해당 얼굴 부분에 대해 모자이크 처리를 한다. 모든 프레임, 모든 추출된 얼굴 부분에 대해 처리를 마치면 해당 동영상을 반환하여 저장한다.
  • 3. 적용된 주요 기술 1) Tensorflow 머신러닝을 위해 구글에서 만든 오픈소스 라이브러리로 기본적으로 CNN알고리즘을 이용 하고 있다. CNN의 주요 목적은 테두리(edge), 선(line), 색깔 등 이미지의 시각적 특징이나 성질을 감지하는 것이다. Random forest 나 다른 supervised 알고리즘들과는 달 리 CNN은 사용자가 직접 feature를 추 출하지 않기 때문에 좀 더 의미 있는 feature 추출이 가능해진다. 따라서 사 진을 이용한 물체 혹은 다양한 인식에 탁월한 성능을 보이고 있다. 왼쪽 사진 은 CNN 알고리즘의 계략적인 과정을 보이고 있다. 2) Haarcascade OpenCV에서 사용하는 Face Detection 함수인 Haarcascade는 다음과 같은 4가지의 과정 으로 구성되어있다. ① Haar-like feature 사람의 얼굴에는 특정한 패턴이 있다. 왼쪽 그림 과 같이 일정 부분은 밝고 일정 부분은 어둡다. 이 러한 모양이 모든 얼굴에서 발견된다. 이와 같은 패 턴을 미리 학습하여 정해진 모델을 OpenCV는 xml 파일에 미리 저장해두고 있다. 개발자는 해당 xml파 일을 불러와 자신이 갖고 있는 사진의 패턴과 비교 하여 해당 사진에 얼굴이 있는지 없는지를 판단한다. ② Integral Image 위의 ①의 계산을 좀 더 쉽게 하기 위한 방법이다. 매 순간 동일한 패턴인지 판단하기 위한 계산을 하려면 많은 시간이 소요 된다. 따라서 이미지 전체에 대해 미리 기본 연산 을 해놓고 그때 그때 필요한 부분에 대해 간단한 연산으로 값을 얻어내는 방식이다. ③ Adaboost 엉뚱한 곳을 얼굴이라고 인식하는 문제를 해결하기 위해 사람의 얼굴에 대한 여러 가 지 패턴을 만들어 여러번 classify를 한다. 가중치를 이용하여 좀 더 나은 결과물을 만들 어낸다. ④ Cascade classifier 위의 여러 가지 결과를 두고 그 모든 결과들이 만장일치로 통과하지 않는다면 부결하 는 방식이다. [출처] http://msnayana.blog.me/220659604108 출처]http://blog.naver.com/ocllos/194366766
  • 4. 시스템 적용 예시 - Mosaicer Cloud (https://github.com/seongahjo/Mosaicer/tree/master/node) 본 시스템은 모든 기능을 REST API로 제공하여 타 개발자들이 쉽게 사용할 수 있도록 만든 웹 모듈을 포함하고 있다. Mosaicer Cloud는 웹 모듈을 이용하여 만들어진 머신러닝 클라우 드 서비스이다. Tensorflow에 대해 잘 모르는 일반 사용자도 손쉽게 머신러닝을 사용할 수 있도록 만들어진 서비스이다. 아래의 사진과 같이 간단한 인터페이스로 사용자는 학습시킬 사진들을 업로드하고 업로드된 사진을 바탕으로 모델을 생성할 수 있다. 또한 학습된 모델을 바탕으로 사진을 입력받 아 classification이 가능하다. 뿐만 아니 라 모자이크 모듈을 추가로 적용하여 동영상을 입력하면 모자이크 처리할 수 있는 기능을 제공한다. 이 서비스를 사용하면 단 두 번의 버튼 클릭을 통해 딥러닝 이미지 학습, 분류 를 할 수 있다. 위와 같이 본 시스템 적용이 가능하며 간단히 REST API 호출을 통해 다양한 분야에 적용 가능하 다. 이후 개선할 사항 현재 본 시스템은 OpenCV의 Face Detection 함수에 종속적이다. 따라서 만약 OpenCV의 함수 가 얼굴을 찾아내지 못한다면 해당 시스템은 동작하지 못한다. 실제 데모 영상에서도 볼 수 있듯 이 얼굴이 측면으로 나오거나 눈을 완전히 감는 상황에서 얼굴로 인식하지 못해 모자이크 처리가 되지 않는 것을 확인할 수 있다. 혹은 얼굴이 아님에도 얼굴로 인식되어 모자이크 처리가 되는 부분을 확인할 수 있다. 따라서 이러한 부분을 개선하고자 OpenCV의 함수 보다 나은 알고리즘을 이용하여 수정하는 작업이 필요하다. 현 알고리즘은 동영상의 매 프레임마다 얼굴을 찾고 딥러닝 모듈을 이용하여 target이 맞는지 확인한 후 모자이크 처리를 하는 과정을 거치고 있다. 이 모든 과정이 매우 오래 걸리기 때문에 시스템이 종료되는데 매우 오래 걸린다. 따라서 이러한 단점을 보안하고자 매 프레임을 처리하지 않고 3 프레임당 처리하는 방식으로 알고리즘을 수정하는 부분이 필요하다.