기술·개발

웹 폰트 추출기

웹사이트를 둘러보다 마음에 드는 폰트가 있으면 다운로드할 수 있도록 (지나치게) 간단한 툴을 제작해보았다.

폰트 정보가 담긴 CSS stylesheet를 찾아 서버 내 웹폰트 경로를 추출하여 다운로드한다. 폰트 다운로드 링크가 닫혀있는 경우에는 메뉴에 폰트명이 표시되지만 다운받을 수는 없다.

Python 3가 설치되어있다는 전제하에 딱 한 줄이면 사이트에서 폰트를 다운받을 수 있다.

예를 들어 카카오서체를 다운받고 싶다면 카카오서체가 적용되어있는 카카오 같이가치 사이트를 다음과 같이 스크립트에 입력하면 된다.

./extract_webfont.py 'https://together.kakao.com'

툴은 여기에서 다운로드할 수 있다. 아파치 2.0 라이센스로 공개된 스크립트의 확장이다.
서체마다 저작권에 유의하여 사용할 것.


Google Duplex: 인공지능-인간간 대화를 꿈꾸다

3일쯤 전에 있었던 구글 IO 2018 키노트에서는 구글 포토의 신기능, 어시스턴트의 새로운 목소리, 새로 디자인된 TPU 3.0 등등 많은 업데이트가 있었다.

아니나 다를까 AI와 딥러닝은 이 모든 업데이트들을 관통하는 핵심 제재였다. 안드로이드 신기능 중 상당수는 어시스턴트, 렌즈와 같이 AI에 뿌리를 두는 기술들이었고 새로 발표한 TPU 역시 딥러닝에 특화된 하드웨어라는 점에서 그러했다.

이처럼 AI 관련 업데이트가 많을거라 예상은 했지만, 개 중에서 특히나 눈을 휘둥그레지게 한 기능이 있어 간단히 다뤄보고자 한다. 바로 Google Duplex라 명명된 기능인데, 상용화된다면/혹은 상용화되기 전부터 상당히 큰 파장을 일으킬 것으로 생각된다.

 

Google Duplex?

OpenTable 등 온라인 예약 서비스 시장이 꽤나 활발한 북미 시장에서도 소규모 영업장과 같이 온라인 예약을 지원하지 않는 경우에는 사람이 직접 전화를 걸어서 예약을 해야했다. 그런데 Google Duplex는 사람에게 명령을 받은 구글 어시스턴트가 직접 영업장에 전화를 걸어서 예약을 한다.

백문이 불여일견이다.

 

영상에서 소개된 실제 Duplex-사람간 통화에서 주목할만한 점은

  1. 액센트, 인토네이션이 완벽에 가깝다. 타사의 음성 기반 어시스턴트를 사용할 때 느껴지는 약간의 어색함이 없다.
  2. hmm, um.. uh, 같은, 사람이 생각할 때에 사용할만한, 의미 전달과는 관계가 없는 표현을 사용할 수 있다. (자연어처리, 음성생성 분야에서는 이런 단어들을 speech disfluency라 한다)
  3. 상대의 발화에 따라 대답까지의 딜레이 시간을 조절한다. “여보세요?”같은 짧은 발화에는 빠르게 대답하는 한편, “정오에는 예약이 불가능해요”같은 긴 발화에 대해서는 대답하기까지의 딜레이가 조금 더 길다.
  4. 뜻 밖의 시나리오에도 대응할 수 있다. “5명 이상인 경우에만 예약이 가능해요. 그냥 매장에 오세요”라는 말에 “그냥 가면 오래 기다리나요?”라고 물어볼 수 있다.

사실 대화 내용 전체가 주목할 만 하다. 그저 놀랍다.

 

Duplex의 아키텍처

개인적으로는 알파고 이상의 충격을 받았던 터라 그 아키텍처가 심히 궁금해서 찾아보았는데, 아직까지 공식적으로 공개된 디테일은 거의 없었다.

구글 공식 AI 블로그에 공개된 매우 단순화된 아키텍처는 다음과 같다.

뉴럴넷에 인풋으로 들어가는 Feature는 세 가지 정도로 분류할 수 있다. (1) 대화 상대방의 음성 신호. (2) 1의 음성 신호로부터 추출한 발화 텍스트. 텍스트 추출에는 구글이 직접 개발한 ASR(automatic speech recognition)이 사용된다. (3) 발화가 이루어진 환경, 문맥과 관련된 정보들. 이전까지 나눈 대화라던가, 어시스턴트가 사람에게 하달받은 명령, 대화 중인 영업장의 업종, 대화 중인 시간 등의 정보가 사용되는 듯하다.

이 Feature들로 RNN(recurrent neural network)을 돌린다고 한다. (아직 개발 중이니 당연하겠지만 디테일이라곤 찾아볼 수 없는 설명이다. 나중에라도 세부 내용을 좀 더 알려줬으면 좋겠다) RNN은 인풋으로 들어온 상대방의 발화에 대해 어시스턴트가 대답할 내용을 텍스트 형태로 출력한다.

RNN에서 출력된 텍스트를 구글의 TTS(text-to-speech) 시스템이 음성 신호로 변환한다, 즉 “읽는다”. 사람만큼이나 자연스럽게 말하게 하기 위해 딥마인드의 WaveNet과 구글브레인의 Tacotron을 사용하는 음성합성 엔진을 사용한다고 한다.

요약하자면 그냥 [음성신호와 발화내용과 문맥 -> RNN -> 대답할 텍스트 -> TTS -> 대답 음성]이 전부다. Duplex의 실제 통화 음성을 들었을 때의 충격에 비하면, 현재까지 발표된 내용에서는 기술적으로 대단한 부분은 딱히 없다. 이후의 발표가 더욱 기대되는 이유다.

추가적으로 실제 통화가 이루어지는 중에 사람이 개입해서 올바른 대화를 지시할 수 있도록 real-time supervised learning을 사용했다고 한다.

 

한계

Duplex도 한계는 명확하다. Duplex가 이렇게 자연스러운 대화를 할 수 있는 도메인은 오직 “특정 영업장에 서비스를 예약하고자 할 때”, “영업시간 등의 영업장 정보를 묻고자 할 때 뿐이다. 상기된 것과 다른 목적의 대화 또는 목적이 없이 시작되는 일상 대화(small talk)는 할 수 없다.

사실 이건 Duplex의 문제라기보다는 현 시대 인공지능의 한계, 또는 자연어처리 문제의 내재적인 복잡성이라고 생각할 수 있다. 작년 11월에 아마존이 주최한 Alexa Prize 2017에서는 음성 어시스턴트 알렉사가 가장 오랫동안 일상적인 대화를 이어나가게 하는 팀에 총 백만달러의 상금을 걸기도 했었다 (1등 팀이 10분 22초라는 성적을 냈다). 50만 달러를 가져갈 수 있었던 이유가 고작 10분간의 대화라니, 이 문제가 얼마나 어려운 문제인지 알려주는 예시라 할 수 있겠다. 누군가는 사람과 20분 자유대화를 할 수 있는 프로그램을 개발하는 것은 “달 착륙 수준이 아니라, 화성 여행을 하는 것이나 마찬가지”라고 평가했었다.

 

의의와 영향

Duplex가 발표됨에 따라 기술과 규제의 측면과 사회윤리적 측면에서 다양한 논의를 해볼 수 있는 주제가 던져졌다고 본다. 여기서는 짧은 시간동안 생각해본 몇 가지만 다뤄보았다.

첫 번째는 인공지능이 할 수 있는 것의 영역에 대한 이야기다.

인공지능과 딥러닝이 일궈온 놀라운 성과가 있었음에도, 지금까지 혁신적인 성과가 있었던 것은 주로 이미지/영상 인식 및 생성 분야였다 (CNN, DCGAN). 물론 문맥이 있는 데이터, 특히 자연어 처리에서도 이에 버금가는 성과가 있었다고 알고는 있었지만, 사람이 대화 상대가 기계일지도 모른다는 생각조차 하지 못할 정도로 발전했는지는 미처 알지 못했다.

인공지능이 뭔가를 할 때마다 나오는 말 같아서 식상하지만, Duplex는 이런 점에서 다시 한 번 ‘인공지능이 할 수 있는 것’의 영역을 크게 넓혔다고 생각된다. 어쩌면 이번에 넓힌 영역의 크기는 알파고가 했던 것 그 이상일지도 모른다.

두 번째는 사회적, 윤리적 영향에 대한 이야기다.

1)

Duplex가 발표되고 나서, 트위터를 비롯한 몇몇 포럼에서는 많은 의견이 오갔다. 기술 발전에 놀라워 하는 의견이 대부분이었지만 몇몇은 끔찍한 아이디어라고 평가하기도 했다. Duplex를 끔찍해하는 사람들의 의견에는 인간 특유의 것이라 믿었던, 즉 인간성에 대한 배신감이 서려있다. 더 이상 실시간 대화는 (특정 분야의 대화에 한해서는) 사람만의 것이 아니다.

바둑에서도 한 차례 이런 일이 있었지만 그 때는 이처럼 거부감이 크지는 않았다. Google Duplex에 대한 거부감이 큰 것은 Duplex가 정복한(것으로 보이는) 분야가 하필 대화이기 때문일 것이다.

인간의 언어를 사용한 대화는 실로 인간만 하는 행위이(었)다. 지능이 높은 동물들도 대화를 한다고는 알려져 있지만, 우리의 언어를 사용하지는 않았다. 사람의 말로 자연스럽게 대화할 수 있는 능력은 곧 인간성을 구성하는 핵심 중 하나였다. 곧, 대화에 자연스럽게 참여하는 모든 대상은 사람으로 간주할 수 있다는 뜻이었다.

물론 Google Duplex 이전의 어시스턴트도 자연스러운 대화가 가능했다. 하지만 이때는 목적을 가지고 대화를 시작하는 주체가 항상 사람이었다. 어시스턴트는 인간의 명령을 대기하고 있을 뿐이었다. 초기발화주체가 항상 사람이라는 일방성이 존재했기 때문에 우리는 발화 상대가 인간이 아님을 알 수 있었고, 따라서 거부감이 느껴지지 않았다.

Google Duplex를 탑재한 어시스턴트는 “인간성”을 획득함과 동시에, 기존 어시스턴트에 존재했던 발화의 일방성을 깨버렸기 때문에 문제가 된다. 이제는 인공지능이 먼저 목적을 가지고 발화를 시작한다. 경우에 따라서는 사람을 수동적인 존재로 만드는 듯한 느낌까지 준다. 사람(영업장의 직원)이 인공지능(구글 어시스턴트)의 발화를 기다리는 것 같은 상황이 연출된다.

2)

요즘들어 젊은 세대의 통화공포증에 대해 연구가 진행 중이라고 한다. ‘공포증’이라 이름붙일만한 수준은 아니지만 본인도 통화를 꺼리고 메신저를 선호하는데, 비슷한 생각을 하는 이들의 의견을 종합해보면 그 이유는 이렇다.

  • 발화는 수정이 불가능하다.
  • 물음과 답변 사이의 긴 딜레이가 용납되지 않는다. 준비할 수 없는 느낌이다.
  • 주로 메신저를 사용하는 등, 안하다보니 통화가 필요한 상황에서도 하기가 겁난다.

Duplex는 마치 이 문제를 해결하기 위해서 개발된 듯하다. 대부분의 “통화가 필요한 상황”은 예약이나 영업시간 질문 등을 위한 것이니, 어시스턴트가 전화를 대신 해주면 전부 해결된다. 유일한 문제는 이게 근본적인 해결책이 아니라는 데에 있다.

 

혼란 속에서 커뮤니티엔 이런 토의주제가 등장했었다:
“당신이 대화하는 대상이 사람이 아니라는 것을 의무적으로 밝히도록 해야 하는가?”

 

맺으며

구글에 의하면 Duplex 기능은 지난 몇 년간 개발되어 왔고, 앞으로도 상용화까지는 상당한 시간이 더 필요할 것이라고 한다.

당장의 문제는 아니지만 자율주행차 논의와 함께 대화봇 논의도 지금보다 활발히 진행될 필요가 있다고 본다. 충분히 대비해서 해로울 것은 없다.

Duplex가 끼칠 영향이 마음 한 켠에선 걱정되는 한편, 실은 이 기술이 가져다줄 미래가 기대되는 마음이 훨씬 더 크다. 당장 오늘 해야하는 전화도 Google Duplex가 있었다면 (그리고 한국어를 지원한다면) 난 주저않고 어시스턴트에게 부탁했을 것이다.

아키텍쳐가 더 자세하게 공개가 된다면 이 내용도 기회가 될 때 다루고싶다.

 

EFA로 내게 맞는 스마트폰 카메라 찾기

해를 거듭하면서 스마트폰 성능이 눈에 띄게 향상되고 있다. 특히나 아이폰에 탑재되는 A-시리즈 APU의 성능은 작년부터 PC를 위협해오더니 급기야 13인치 맥북 프로를 벤치마크 상에서 앞지르기에 이르렀다. 일정 가격 이상의 대부분의 스마트폰 성능이 상향 평준화 되어버린 지금, Kantar가 2014년 수행한 북미 시장에서의 설문조사를 보면 스마트폰 구매 선택은 성능 외적인 부분에서 주로 결정되는 것으로 보인다.

특히 카메라 성능은 고가의 스마트폰을 구입하는 데에 있어서 결정적인 역할을 하는 요인으로 생각된다. 2016년 이전에는 코빼기도 보이지 않던 DxOMark 카메라 벤치마크가 이제는 많은 리뷰에서 빠짐없이 등장하는 현상이 이를 뒷받침한다. 비록 DxOMark에서 다양한 성능 카테고리에 대해서 카메라를 테스트하기는 하지만, 벤치마크와 실제 사용자 경험은 차이가 있을 수 있다. 테스트 점수가 높다고해서 내게 만족스러운 카메라가 되는 것은 아니라는 의미이다.

어떤 카메라가 내게 맞는 카메라인지에 대해 대략의 답을 제공하기 위해 DxOMark 벤치마크 데이터에 대해 탐색적 요인 분석(exploratory factor analysis; EFA)을 해보았다.

분석을 시작하면서 답을 찾고자 한 질문들은 이렇다.

  1. 각 브랜드는 스마트폰 카메라를 제작할 때 어떤 성능요인(색감, 선명도, …)에 중점을 두는가
  2. 각 브랜드의 스마트폰 카메라는 시간에 따라 어떤 방향으로 발전해왔는가
  3. 어떤 스마트폰 브랜드끼리 서로 비슷한 사진을 찍어내는가

주로 애플과 삼성을 중점으로 분석을 진행했다. 이 외의 브랜드의 스마트폰 카메라 분석을 원한다면 다음 gist를 참조하시길. 분석과 코드를 정리해 두었다 [벤치마크 크롤러][노트북].

 

최근 데이터들의 3-factor EFA 결과

DxOMark는 2017년 9월에 새로운 테스트 프로토콜을 제시한 바 있다. 테스트 프로토콜에 따른 테스트 점수 변동이 있을 수 있으므로, 이전 프로토콜에서 만들어진 데이터(이 글에서는 “과거” 데이터라 호칭한다)와 새로운 프로토콜(“최근”)에서 만들어진 데이터를 따로 분석하기로 했다.

Varimax 방법으로 새 프로토콜에서 얻은 데이터들을 회전시킨 EFA 결과, 다음과 같은 factor loading을 얻을 수 있었다.

output_39_0

각 요인에 크게 연관되어 있는 manifest variable에 따라 요인을 해석해서 이름을 붙였다.
FA1: AF, texture, exposure&contrast 등에 강한 음의 상관관계가 있으므로 “Bad Focus”.
FA2: artifacts, noise 등에 강한 양의 상관관계가 있으므로 “Sharp, Clear”.
    FA3: flash, texture 등에 강한 양의 상관관계가 있으므로 “High Detail”.
즉, FA1 값이 클수록 포커스가 잘 안잡히는 카메라, FA2가 클 수록 선명하고 또렷한 카메라다.

현재 시점 (2017/12/29)에 DxOMark에 올라온 모든 최근 스마트폰 카메라의 점수를 요인 점수로 변환해서 그래프로 나타내 보았다.

output_43_0

같은 색 포인트는 같은 회사에서 제작된 스마트폰이다. 이 그래프에서 각 브랜드의 장단점을 파악할 수 있다. 예를들어 구글의 경우 Sharp, Clear 점수가 조금 떨어지지만 포커싱과 디테일이 매우 우수하다. 반면 애플은 포커싱이 비교적 안좋은 반면 Sharp, Clear과 디테일이 우수한 것을 볼 수 있다. 삼성과 구글의 지향점이 서로 비슷한 듯하다.

각 브랜드의 최근 카메라 제작 트렌드를 좀 더 자세히 들여다보기 위해 삼성과 애플 제품만 따로 나타내보았다.

output_42_0

애플 아이폰 모델이 최신형에 이르면서 포커싱보다는 Sharp, Clear과 디테일에 중점을 두고 발전하는 것을 확인할 수 있다. 삼성 또한 갤럭시 S6 엣지에서 갤럭시 노트 8에 이르면서 Sharp, Clear보다는 포커싱과 디테일에 중점을 두는 모양새를 볼 수 있다.

 

과거 데이터들의 3-factor EFA 결과

최근 데이터와 동일한 방법으로 분석을 진행했다. Varimax rotated factor loading은 아래와 같다.

output_51_0

최신 데이터와는 조금 다른 해석을 사용해서 요인에 이름을 붙였다.
FA1: AF, texture, noise 등에 강한 음의 상관관계가 있으므로 “Bad Focus”.
FA2: color, exposure&contrast 등에 강한 양의 상관관계가 있으므로 “Colorful”.
    FA3: noise, flash, exposure&contrast 등에 강한 양의 상관관계가 있으므로 “Clear”.
즉, FA1 값이 클수록 포커스가 잘 안잡히는 카메라, FA2가 클 수록 선명하고 또렷한 카메라다.

DxOMark에서 테스트한 과거 모든 스마트폰 카메라를 스캐터플롯으로 나타내어 보았다.

output_54_0

삼성과 애플 제품들만 모아보았다.

output_55_0

삼성 제품들과 애플 제품들이 서로 다른 클러스터로 구별된다.
삼성은 포커스와 색감, 선명성에서 개선을 이뤄낸 것이 보인다. 최신 기종에 이를수록 개선 폭은 작아지는 것이 확인된다.
애플은 반면에 과거 기종부터 우수한 색감을 보인다. 주로 선명성과, 특히 포커싱 개선에 노력을 들인 것으로 보인다.

 

나에게 맞는 스마트폰 카메라 찾기

Moment라는 스마트폰 카메라 전문 렌즈 제작 스타트업은 “항상 휴대하는 카메라가 가장 좋은 카메라”라고 한 바 있다. 스마트폰 카메라의 우수한 휴대성을 강조한 말이다. “이왕 항상 휴대하는 거, 수치상으로 가장 좋은 카메라 대신, 내가 지향하는 사진을 찍을 수 있게 하는 카메라를 선택하는게 어떨까?”라는 생각에서 시작해서 벤치마크 숫자만으로는 파악할 수 없는 잠재적인 요인들을 요인분석으로 파악해 보았다.

색감을 중요시하는 사람은 전통적으로 우수한 색감을 자랑해온 애플 아이폰, 또는 세대가 거듭함에 따라 비약적인 색감 개선을 이뤄낸 삼성 제품을 선택할 수 있을 것이다. 또, 디테일을 중요하게 생각하는 사람은 디테일(FA1) 1위 제품을 만들어낸 구글 제품을 선택할 수 있을 것이다.

단순 벤치마크보다는 누군가의 스마트폰 선택에 도움이 되는 정보이기를 바란다.