brunch

매거진 AI

You can make anything
by writing

C.S.Lewis

[카카오AI리포트]사진에서 사람을 읽다

[AI in Kakao] 카카오맵 로드뷰(Roadview)의  AI 객체

저희는 왜 ‘카카오 AI 리포트'를 내고 있을까요. 이번 호는 이 같은 질문에 대해 또 다른 답을 찾아가는 과정 같습니다. 카카오는 인공지능(AI) 기술을 활용해 새로운 혁신에 도전하고자 하는 기업이지만, 저희 힘 만으로는 부족합니다. 저희는 세상을 바꾸는 AI 기술 동향과 흐름에 대해 국내에서도 더 많은 관심과 논의가 필요하다고 생각합니다. 훌륭한 인재들이 AI 연구에 더 적극적으로 뛰어들어 서로 지식을 교환하면서 새로운 가능성을 탐색할 수 있지 않을까요.


[카카오 AI 리포트] Vol. 3 는 다음 내용으로 구성되어 있습니다.


[1] Research - AI 연구 지금까지의 발자취

01. 정수헌, 김대원 : ICML과 NIPS 발표논문 6,163건 메타 분석

02. 김진화 : AI연구자들이 열광하는 ICML, NIPS 

03. 엄태웅 : 딥러닝 연구의 현재와 미래 part 1.(1/2)


[2] Industry - AI, 혁명의 주역

04. 노명철, 이주영 : [AI in kakao] 사진에서 사람을 읽다 (이번글)

05. 최예림 : 산업 현장 속으로 들어간 AI


[3] Information

06. AI 유튜브 강의 모음


[카카오 AI 리포트] Vol. 3 전체글 다운받기 


내용 중간의 [ ] 는 뒷부분에 설명 및 관련 문헌의 소개 내용이 있음을 알리는 부호입니다. 예를 들어, [1]에 대한 설명은 '설명 및 참고문헌'의 첫 번째에 해당합니다. 





카카오맵  로드뷰는 전국 각지의 실제 거리 모습을 확인할 수 있도록 해준다. 로드뷰로 제공되는 화면은 DSLR 카메라를 활용하여 고해상도 파노라마 방식으로 거리를 촬영한 것이다.[1] 촬영은 특정 장소를 360도를 찍는 방식으로 진행된다. 차가 다닐 수 있는 도로에서는 차량 위에 고정한 특수 촬영장비로, 차가 다닐 수 없는 좁은 도로나 공원, 아파트 단지 등은 특수 제작된 세그웨이(segway)[2]나 파노캠을 사용하여 촬영이 이뤄진다. 


[그림 1] 다음 로드뷰 예시


이렇게 촬영된 화면을 그대로 서비스에 활용할 수는 없다. 촬영된 화면 안의 사람 얼굴이나 자동차 번호판을 공개하는 것은 사생활 침해가 될 수 있기 때문이다. 카카오는 프라이버시를 보호하기 위해 사람의 얼굴과  차량의 번호판 식별을 어렵게 하기 위해 흐릿하게 처리(blurring)한다. [그림 1]에도 사람의 얼굴과 차량의 번호판이 흐릿하게 처리된 모습을 확인할 수 있다. 문제는 여기에서 발생한다. 전국 곳곳에서 찍은 수많은 양의 사진을 사람이 일일이 확인하고, 흐리게 처리하는 것은 엄청난 비용과 시간이 소요되는 일이다. 

이를 카카오에서는 객체 검출(object detection) 기술로 해결하고 있다. 이 기술은 영상 내에서 얼굴과 차량 번호판을 인공지능(AI)이 스스로 찾아낸 뒤, 일반인이 해당 개체(object, 사물)를 식별이 불가능하게 흐릿하게 만드는 것이다. 객체 검출 기술의 도입으로 기존의 수동 방법 대비 90% 이상의 작업량 감소 효과가 발생됐다. 부연하면, 한 장의 영상에 100개의 얼굴 또는 번호판이 있다면, 이전에는 100개의 위치를 일일이 표시하고 확인해야 했다. 객체 검출 방법 도입 후에는 90여 개 이상이 자동으로 처리되고, 10개 이하의 객체만 사람이 수동으로 확인하면 되어 그만큼 작업량과 시간을 절약할 수 있게 됐다.[3]



객체검출의 개념과 특징


객체 검출은 사람, 차량, 건물 등과 같이 특정한 클래스(class)[4]에 속하는 객체를 영상에서 자동으로 찾는 컴퓨터 비전(computer vision)과 영상처리(image processing)의 컴퓨터 기술이다. 스마트폰, 로봇, 출입통제 시스템 등에서 널리 사용되고 있는 얼굴 검출, 자동 차량 주행에 사용되는 보행자 검출의 목적으로 객체 검출 기반의 기술이 최근 널리 활용되고 있다.


객체 검출의 수준을 대폭 개선시킨 것은 딥러닝(deep learning)[5]이었다. 딥러닝은 객체 검출 방식의 패러다임을 바꾸었다. 딥러닝 이전의 객체 검출 방법에서는 여러 클래스(multi-class)의 객체를 검출하고자 할 때, 각 클래스에 사용되는 특징(feature)을 다르게 사용해야 좋은 결과를 얻을 수 있기 때문에 각 클래스 별로 검출기를 설계하고 학습해야 했다. 즉, N개 클래스의 객체를 검출하기 위해서는 N개의 검출기가 필요로 했고 그와 비례하는 비용과 수고가 필요했다. 딥러닝은 이러한 수고를 덜어줬다. 딥러닝의 도입으로 영상 내에서 찾고자 하는 특징을 자동적으로 학습할 수 있게 되었고, 하나의 검출기 모델로 여러 클래스를 구분하고 검출할 수 있게 됐다. 


딥러닝의 단점도 존재한다. 딥러닝은 연산 시간의 측면에서 오랜 시간 동안 잘 다듬어져 왔고 상대적으로 훨씬 가벼운 기존의 객체 검출 방법에 비해 많은 연산 양을 필요로 한다. 이로 인해, 피라미드 표현(pyramid representation)[6]이나 슬라이딩 윈도우즈 기법(sliding windows)[7]과 같은 객체 검출용으로 사용됐던 전통적인 기법들은 딥러닝을 활용한 객체 검출 기법에는 적용하기 어렵다. 이러한 한계를 극복하기 위해, 효율성 높은 기존의 방법을 차용하여 객체가 있을만한 후보 영역을 먼저 찾아내고, 그 영역에 대해 딥러닝 기법을 적용하는 방법들이 제안되었다. 대표적인 예가 R-CNN(region with convolutional neural network)[8]이다. 이는 영상에 선택적 탐색(selective search)[9]이라는 방법을 적용하여, 객체가 있을 법한 후보 영역(region proposal, RP)을 찾고, 각 RP에 컨볼루션 신경망(convolutional neural network, CNN)을 적용하여 객체를 분류한 뒤, 객체의 위치를 보정하는 방법이다. R-CNN은 많은 연산 시간의 소모가 필요한 CNN이 각 RP마다 적용되어야 하기에, 전체적으로 검출을 위해 소요되는 시간이 길다는 단점이 있다. 반복되고 병렬 연산이 가능한 CNN 연산 속도는 그래픽스 처리장치(graphics processor unit, GPU) 덕에 개선됐지만, RP를 계산하는 부분은 여전히 계산 속도가 느려서 병목(bottleneck) 현상이 발생한다.



Fast R-CNN & Faster R-CNN


R-CNN의 시간문제를 개선한 방법이 Fast R-CNN[10]이다. 이 방법은 ROI Pooling (region of interest pooling)이라는 계층(layer)을 도입하여 CNN에서 얻어진 특징 지도(feature map)의 일부 영역으로부터 정규화된 특징을 추출한다. Fast R-CNN은 각 RP에 CNN을 반복적으로 적용하는 대신, 입력 영상에 CNN을 한 번만 적용하고 ROI Pooling으로 객체를 판별하기 위한 특징을 추출한다. 이 방법으로 Fast R-CNN은 CNN에 비해 특징을 추출하기 위한 시간을 대폭 줄였다. 

더 나아가, 선택적 탐색 등을 이용하여 RP를 추출하였던 기존 방법을 딥러닝 방법으로 대체하는 방안을 제안하여 속도를 획기적으로 개선한 Faster R-CNN[11]이 있다. 현재 카카오맵 로드뷰에서 사용되고 있는 딥러닝 기법이 Faster R-CNN이다. 이 방법은  RPN(regional proposal network)을 제안하고 CNN 이후 단계에 연결하여 이전의 방법들에서 사용했던 선택적 탐색을 대신하도록 하였다. RPN은 CNN에서 얻은 특징 지도로부터 객체가 있을 것으로 보이는 영역을 제안하고 해당 영역은 Faster R-CNN과 동일하게 ROI Pooling을 통해서 정규화된 특징을 추출하고 그 특징으로 객체를 판별하고 위치와 크기를 보정한다.



[그림 2] R-CNN, Fast R-CNN, Faster R-CNN 방법들의 차이


(a)의 CNNs 블록에서 보는 것처럼  겹쳐진 블록들은 반복되어 수행되어야 하는 연산을 나타낸다. 방법 (a)는 수많은 RP에 대해서 각각 CNNs 연산을 수행해야 하는 반면 (b)와 (c)는 한 번의 CNNs 연산만을 사용한다. (a)와 (b)는 연산량이 많은 선택적 탐색을 사용하는 반면 (c)는 FC를 사용함으로써 연산량을 크게 줄였다.



[그림 2]는 R-CNN, Fast R-CNN, Faster R-CNN의 구조 간 차이를 보여준다. R-CNN(그림 2.a)은 선택적 탐색을 통해 얻어진 각 영역에 대해서 CNN 연산을 하고 CNN에서 얻어진 특징을 이용하여 SVM(support vector machine)[12]과 regressor[13]로 객체 여부를 판단하고 위치를 보정한다. 연산량이 많은 CNN 연산이 반복되는 단점이 있어서 이를 극복하기 위해서 Fast R-CNN(그림 2.b)은 영상 전체에서 CNN 연산을 한번 하고, 선택적 탐색으로 얻어진 영역에 대해서 ROI pooling 기법을 이용하여 특징을 추출한다. 추출된 특징은 FC(fully connected layer)를 거쳐서 객체 여부와 위치를 얻는다. 그러나 선택적 탐색 방법 자체가 느린 단점이 있어서 Faster R-CNN(그림 2.c)과 CNN 으로부터 얻은 특징 값을 이용하여 RP를 얻을 수 있는 RPN를 설계함으로써 속도를 크게 높였다. Faster R-CNN의 또 하나의 장점은 End-to-End[14]학습이 가능하다는 것이다. Faster R-CNN이 일반적으로 우수한 성능을 보이지만, 큰 객체와 작은 객체를 같이 학습할 경우 작은 객체의 검출 성능이 상대적으로 떨어지는데, 이는 Faster R-CNN의 단점이다.



로드뷰로의 Faster R-CNN 적용


크기가 크고 특징이 많은 자동차, 사람 등의 객체가 번호판과 같이 작은 객체에 비하여 ‘객체 여부(objectness)'가 더 뚜렷하므로 일반적으로 큰 객체에 대해서 RPN이 더 잘 동작한다. 그러므로  번호판의 위치에 RP가 잘 주어질 가능성보다는 자동차 전체로 주어질 가능성이 더 크다. 자동차 전체 영상에서 번호판을 판단하는 것은 잘 추정된 얼굴이나 자동차의 RP에서 얼굴과 자동차를 판단하는 것보다 어려운 문제이므로 번호판의 성능이 상대적으로 떨어지게 된다. 이러한 단점을 개선하기 위해서 카카오는 정제 네트워크(refining network)[15]를 사용하였다.


정제 네트워크는 Faster R-CNN의 검출 결과로 나오는 객체 위치정보를 이용하여 다시 한번 검증하고 위치를 보정하는 역할을 한다. Faster R-CNN 부분으로부터 얻은 객체의 영역 정보에 해당하는 정규화된 특징을 특징 지도로부터 추출하고 그 특징으로 객체를 판단하고 위치를  재보정하여 성능을 높인다. 그림 3은 제안한 RF-RCNN(refining faster RCNN)의 네트워크 구조를 보여준다. Faster R-CNN (그림 2.c)와 비교하면, Faster R-CNN의 CNN 이후의 네트워크와 비슷한 구조가 다시 한번 반복되는 구조를 보여준다. Faster R-CNN부분에서 얻어진 위치로부터 다시 한번 ROI pooling과 FC 연산으로 이루어진다. 이때 Faster R-CNN에서 얻은 위치 정보는 한번 보정된 값이므로 보다 정확한 위치에 대해서 객체 여부를 판단할 수 있다. 



[그림 3] Faster R-CNN에서 얻어진 결과를 그대로 사용하는 대신, 추가적인 보정을 거쳐서 성능을 향상시킬 수 있는 RF-RCNN



로드뷰 객체검출기의 성능


로드뷰 객체 검출기의 성능을 평가하기 위해서 실제로 카카오맵 로드뷰에 사용되는 900장의 초고해상도 영상을 사용했다.  [표 1]은 Faster R-CNN과 제안한 RF-RCNN의 결과를 보여준다. 수치는 EER(equal error rate)로, 작을수록 오류가 작음을 나타낸다. 표에서 보는 바와 같이 번호판 검출의 오류가 크게 줄어들었음을 알 수 있다. 사람 검출 오류가 1%가량 증가하였으나, 전체적인 오류 감소에 비해 미미하다고 할 수 있다.


[표 1] Faster R-CNN과 RF-RCNN의 검출 오류 비교 실험.

주: 숫자는 검출 오류를 나타내는 것으로 0~1사이의 값을 가진다.


[그림 4]는 Faster R-CNN과 RF-RCNN의 성능을 ROC 곡선(receiver operating characteristic curve)으로 나타낸 것이다. 곡선이 우측 상단으로 붙을수록 좋은 성능을 나타낸다. [그림 4]에서 x-축은 precision[16]을, y-축은 recall[17]을 나타낸다. 녹색 곡선은 Faster R-CNN을, 파란색 곡선은 RF-RCNN을 각각 나타낸다.  그림에서 보듯이, RF-RCNN이 사람 검출(그림 4.c)에서는 비슷하거나 미세하게 떨어지지만 번호판 검출(그림 4.b)에 있어서는 매우 우수한 성능을 보여주고 있다. 결과적으로 전체적인 성능 즉, 사람과 번호판 검출의 성능은 (그림 4.a)와 같이 상승하는 것을 볼 수 있다. 


[그림 4] Faster R-CNN과 RF-RCNN의 성능 비교를 위한 ROC 곡선




[그림 5]는 Faster R-CNN과 RF-RCNN 검출 결과를 비교하여 보여준다. 차량이 있는 영상 (위쪽)에서, Faster R-CNN의 번호판 검출 결과(왼쪽)에서는 오 검출(false positive)이 여러 개 보이는 반면 RF-RCNN(오른쪽)에서는 그런 오류가 나타나지 않음을 보여준다. 사람이 있는 영상(아래쪽)에서, Faster R-CNN(왼쪽)은 미검출(false negative)이 두 명 있는 반면 RF-RCNN(오른쪽)에서는 미검출이 한 명 있는 결과를 보여준다. RF-RCNN(오른쪽) 사진의 왼쪽 상단에 있는 마네킹은 오 검출의 사례이다.



[그림 5] Faster R-CNN과 RF-RCNN 검출 결과 비교



[그림 6]은 결과 영상의 예를 보여준다. 푸른색 사각형은  검출된 사람의 윗부분 (얼굴 영역에 해당하는 부분)을 나타내고 주황색은 검출된 자동차 번호판을 나타낸다. 사람들과 자동차가 많은 영상에서도 상당히 높은 수준의 검출 결과를 보여준다.



[그림 6] 다음 로드뷰 영상에서 검출된 번호판과 얼굴 위치



검출 성능 평가는 사전에 수동으로 만들어 놓은 정답의 위치와 검출 결과를 비교하여 자동평가를 수행한다. 이때, 해상도가 낮거나 작아서 식별이 불가능한 번호판과 얼굴은 정답에 포함시키지 않았다. 그러나, 검출기가 검출한 결과에는 이렇게 제외한 객체도 검출되는 경우가 종종 발생하고, 이는 자동평가 시에 오 검출로 평가된다. 실환경에서는 이렇게 검출된 객체도 틀렸다고 할 수는 없기 때문에, 오 검출의 개수가 줄어들어서 체감 성능은 더 좋다고 할 수 있다. 실제로, 수동으로 검증하여 평가하였을 경우 96%가량의 검출률을 보여주는 것으로 집계됐다.


결론


카카오맵 로드뷰 서비스에서 사생활 침해 방지를 위하여 사람 얼굴과 차량 번호판을 찾아서 흐릿하게 하는 작업이 필요한데, 이를 위하여 최근 AI에서 각광을 받고 있는 딥러닝을 이용하여 검출기를 개발한 과정을 공개했다. 최근에 가장 좋은 성능을 보이고 있는 Faster R-CNN 기반으로 하고, 작은 객체의 검출 성능을 향상할 수 있는 refining Faster R-CNN을 제안했다. 카카오맵 로드뷰의 흐림 처리 서비스에 적용하여 기존 대비 96% 이상의 효율 개선 효과를 볼 수 있었다. AI가 실제 서비스로 구현될 때, 어떤 역할을 할 수 있는지 참고가 되기 바란다.






글 | 노명철  joshua.roh@kakaocorp.com
오랫동안 관련 분야에 몸 담아 온 사람으로, 최근 기술의 엄청난 급변을 보는 것이 흥미롭기도 하고 두렵기도 하네요. 이런 변화 사이에서 (치킨집 창업으로 떠밀리지 않기 위해) 열심히 연구하고 있습니다. 좋은 환경에서 훌륭한 동료들과 연구 할 수 있는 것에 감사하고 있고, 아이와 아내에게 자랑스러운 사람이 되고자 합니다.


글 | 이주영  michael.lee@kakacorp.com
놀기 좋아하고 궁금한거 많은 아주 평범한 이웃집 개발자 같은 개발 + 연구하는 사람입니다. 능력 좋고 성격 좋은 분들과 오랜 시간을 함께 하며 많이 배우고 또 앞으로 배울 것 같습니다. deitel & deitel’s 책 저자들 처럼 아이가 커서 성인이 되었을 때도 개발 + 연구하는 사람이 되는게 목표입니다.





[1] 설명 | 로드뷰는 국내 포털 지도 서비스에서는 최초로 시도된 서비스이다.

[2] 설명 | 전기를 동력으로 사용하는 1인용 소형 이륜차.

[3] 설명 | 로드뷰로 인한 사생활 침해가 발생할 가능성을 차단하고자, 영상은 자동 처리 된 이후에도 사람에 의해 최종적으로 검수된 이후에야 서비스 된다.

[4] 설명 | 객체를 지칭하는 추상적인 의미의 부류, 여기서는 검출하고자 하는 객체의 종류를 의미한다.

[5] 설명 | AI에 딥러닝 적용이 본격적으로 시작된 시점은 2012년 ILSVRC(ImageNet Large Scale Visual Recognition Challenge) 대회 이후이다. 딥러닝은 기존의 학습 방법보다 2배 이상의 성능을 보여줬다.

[6] 설명 | 하나의 영상으로부터 여러 단계의 크기로 늘리거나 줄인 영상들을 생성하는 영상처리 기법으로, 객체의 크기 변화에 강인한 검출을 위해서 흔히 사용되는 방법

[7] 설명 | 사각형 영역(윈도우)을 영상 전체로 훑어가면서, 찾고자하는 객체가 그 안에 존재하는지를 확인하여 검출하는 기법

[8] 논문 | Girshick, R., Donahue, J., Darrell, T., & Malik, J. (2014). Rich feature hierarchies for accurate object detection and semantic segmentation. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 580-587).

[9] 논문 | Uijlings, J. R., Van De Sande, K. E., Gevers, T., & Smeulders, A. W. (2013). Selective search for object recognition. International journal of computer vision, 104(2), 154-171.

[10] 논문 | Girshick, R. (2015). Fast r-cnn. In Proceedings of the IEEE International Conference on Computer Vision (pp. 1440-1448).

[11] 논문 | Ren, S., He, K., Girshick, R., & Sun, J. (2015). Faster r-cnn: Towards real-time object detection with region proposal networks. In Advances in neural information processing systems (pp. 91-99).

[12] 설명 | 기계학습의 분류(classification)문제에 많이 사용되는 알고리즘

[13] 설명 | regression이라는 기법으로 박스의 위치와 크기를 예측하는 방법

[14] 설명 | 여러 다른 기능들(RP, 분류기, regressor)을 각각 학습하는 대신, 처음부터 끝까지 한꺼번에 학습시키는 기법

[15] 논문 | M.-C. Roh, J.-Y. Lee, (2017) . “Refining Faster-RCNN for Accurate Object Detection,” In Proceedings of 15th IAPR International Conference on Machine Vision Applications.

[16] 설명 | 검출한 객체 중에서 제대로 검출된 객체의 비율

[17] 설명 | 검출해야할 객체 중에서 검출 성공한 객체의 비율




[카카오 AI 리포트] Vol. 3 는 다음 내용으로 구성되어 있습니다.


[1] Research - AI 연구 지금까지의 발자취

01. 정수헌, 김대원 : ICML과 NIPS 발표논문 6,163건 메타 분석

02. 김진화 : AI연구자들이 열광하는 ICML, NIPS 

03. 엄태웅 : 딥러닝 연구의 현재와 미래 part 1.(1/2)


[2] Industry - AI, 혁명의 주역

04. 노명철, 이주영 : [AI in kakao] 사진에서 사람을 읽다 (이번글)

05. 최예림 : 산업 현장 속으로 들어간 AI


[3] Information

06. AI 유튜브 강의 모음


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari