책 커버 표지
니케이로보틱스_2018/03_소니 ‘aibo’의 소프트웨어와 IT 기반, 철저 해부
  • 저자 : 日経テクノロジーオンライン
  • 발행일 : 20180210
  • 페이지수/크기 : 39page/28cm

요약

Nikkei Robotics_2018. 3. No.32 (p6~15)

Sexy Technology
소니 ‘aibo’의 소프트웨어와 IT 기반, 철저 해부
500개 이상의 OSS탑재, Open-R을 방불케 하는 시험도

소니가 2018년 1월 11일에 발매한 가정용 강아지형 로봇, ‘aibo’. 당사가 원조 모델인 ’AIBO’를 2006년도에 생산 중지한 이래, 12년만에 부활시킨 신형 로봇이다. 2011년 11월 발매 이래, 수 차례 실시된 예약 접수분은 단 30분만에 완판 될 정도로 인기가 높다.

같은 가정용 로봇이라도 로봇 청소기와 같이 이용자의 생활에 직접적인 도움이 되는 ‘기능’을 어필하는 것이 아니라, 펫(Pet) 로봇으로서의 오락성을 앞세운 제품의 컨셉트는 기본적으로 선대 AIBO의 뒤를 잇고 있다.

그러나, 선대 AIBO의 최초 기종인 ‘ERS-110’이 발매된 것은 1999년. 그 이후, 지금의 aibo가 투입되기까지 약 20년 동안 눈부신 발전을 일궈냈다. 단순히 CPU의 연산 능력이 향상된 것이 아니라, 오픈 소스 소프트웨어의 임베디드 용도의 보급, 딥러닝 기술 및 클라우드의 대두, SLAM 기술의 확립 등, 특히 IT 면이나 소프트웨어 면에서의 기술 혁신은 20년 전과는 그 차이가 역력하다. 하드웨어 면에서도 거리 화상 센서의 보급 등 로봇공학을 일신시키는 일은 최근 20년에 걸쳐 일어나고 있지만, 로봇을 구성하는 요소 기술의 변화로서 가장 영향이 큰 것은 소프트웨어∙ IT 라고 할 수 있겠다.

따라서 이번 기사에서는 신형 aibo의 소프트웨어와 IT를 철저히 분석하여 설명하겠다. 신형 aibo 사업의 대표로서 소니의 ‘AI 로보틱스 비즈니스 그룹’의 부문장을 맡고 있는 가와니시(川西) 씨의 취재 결과를 바탕으로 aibo의 내부 소프트웨어, 딥러닝, 클라우드 기반의 3가지 관점으로부터 aibo의 진상을 살펴보기로 하겠다. 이번 호는 전편으로서, 내부 소프트웨어와 딥러닝에 대해 거론하겠다. 또한 aibo의 하드웨어 면에 대해서는 본 기사의 마지막 부분에 aibo 내부의 분석사진을 게재하고 있다. 주요 부품의 구성∙형번(型番), 내부 구조 등에 대해서는 그것들을 참조하길 바란다.

-- aibo의 내부 소프트웨어는 어떤 식으로 되어 있을까? --
우선은 aibo 내부에 내장된 소프트웨어의 구성부터 살펴보도록 하겠다. 신형 aibo는 내장된 기기에서도 오픈 소스를 사용하는 것이 당연시되는 현대의 추세를 충분히 반영시킨 로봇이다. 소니는 2000년대 초반에 TV 등의 디지털 가전에 있어서 보다 빨리 내장형 리눅스(Linux)를 채택한 해당 분야에서는 리더적 존재였으나, aibo에서는 OS인 리눅스뿐만 아니라 실제로 500개 이상의 오픈소스 소프트웨어(OSS)가 aibo의 체내에 내장되어 있다.

-- ROS를 수정한 소니 --
aibo는 2017년 11월의 제품 발표 시에 소니가 이미 공표한 것처럼 로봇용 프레임워크로 ‘ROS’를 이용하고 있다(버전은 Kinetic). 시기는 미정이지만, 당사는 장기적으로 aibo의 SDK(소프트웨어 개발 키트)를 공개하려고 하고 있다.

소니의 가와니시(川西)씨는 “로봇용 소프트웨어로서 튜닝을 철저히 하려고 한다면, 자체적으로 소프트웨어를 짜 넣는 것이 좋다. 상당히 고민한 끝에, 회사 외부로부터의 개발자가 aibo의 소프트웨어를 개발할 때 쉽게 익숙해질 수 있도록 로봇 분야에서 보급되고 있는 ROS를 일부러 채택했다”(가와니시 씨)고 말한다. 페퍼(Pepper) 등과 같이, 앱 개발에서의 에코 시스템을 형성한다는 것을 명확하게 알려주고 있는 로봇이다.

ROS에서는 모듈 간의 의존관계를 자동적으로 해결하는 ‘rosdep’ 및 건축용 도구인 ‘catkin’, 가시화 소프트웨어인 ‘RViz’ 등, 개발∙조작용 툴이 잘 갖춰져 있다. 따라서 특정의 로봇용으로 소프트웨어 개발에 에코 시스템을 가동시키는데 있어서도 ROS가 적합하다고 할 수 있다.

그러나 ROS는 연구개발용의 프로토 타입으로는 보급이 되고 있지만, 원래 학술적 용도로 많이 사용되어, 일반적으로 적용하는 소프트웨어에 비해 코드의 품질이 높지 않다고 한다. 예를 들어, 작동 계획 등이 들어있는 ROS의 머니퓰레이션(조작)용 소프트웨어인 ‘MoveIt!’을 개발한 Sachin Chitta 씨 조차 자신이 창업한 기업에서는 ROS의 MoveIt!을 사용하지 않았으며 다시 임베디드 할 정도이다.

따라서 이런 ROS의 문제점을 개선하거나 새로운 기능을 추가하기 위해 소니는 ROS의 기존 실장에 대해 일부 변화를 주고 있다. 예를 들어 ‘Rostopicproxy’라는 ROS의 패키지가 그것이다. 그 소프트웨어는 처음에는 미국 스텐포드 대학이 2012년에 개발한 것이나, 2016~2017년에 걸쳐 소니가 수정을 가했다. 그 시기는 소니가 aibo를 개발하고 있었던 시기와 정확하게 맞아떨어진다. aibo용으로 소니의 소프트웨어 기술자가 수정한 것으로 보인다.

-- 이용은 낮은 레이어가 대부분 --
ROS를 사용한다고 해도 ROS 커뮤니티에는 수천 개 이상의 기존 모듈이 있어(ARM용에서는 500개정도), 그 중에서 어떤 것을 사용하는가로 ROS의 이용의 스탠스는 달라진다. Aibo의 경우, 점군 처리 라이브러리 ‘OpenCV’용의 인터페이스 등 유명한 모듈을 포함해 160개 이상의 ROS 모듈을 사용하고 있으나, “어디까지나 낮은 레이어의 모듈 이용이 많다는 느낌이다. ROS에는 SLAM과 같이 로봇의 어플리케이션의 기존 모듈이 있으나, 그것들은 사용되지 않는다”(ROS 전문 기술자).

낮은 레이러 모듈 및 ROS의 pub/sub 형 통신 프레임워크, 개발 툴 등에 대해서는 ROS의 기존 자산을 살리면서, 핵심인 애플리케이션 부분 및 부족한 기능에 대해서는 ROS 상에서 소니가 비(非) OSS의 자사 소프트웨어로서 명예회복을 위해 자체 개발을 한 것으로 보인다.

-- H-ROS의 기업에 출자 --
-- RX631측에서도 ROS 작동 --

ROS가 aibo 안에서 어떻게 작동하고 있는지 개요를 살펴보겠다. Ubuntu 리눅스가 작동하는 메인 CPU/SoC는 스마트폰에서 사용되는 어플리케이션 프로세서와 공통된 것이다. 구체적으로는 미국 퀄컴 테크놀로지사의 4코어(쿠앗도코아) ARM계 SoC ’Snapdragon 850’(2.2g)이다. 거리화상 센서 및 RGB 카메라 등, aibo의 대부분의 센서는 이 SoC에 접속되어 있다.

aibo에게는 이런 메인 SoC 이외에 ‘모션 프로세서’라는 CPU도 탑재되어 있다. 르네사스 일렉트로닉스의 32비트 CISC 마이크로컴퓨터 ‘RX631’(100㎒ 작동)로, 그 명성대로 관절의 동작 등을 맡는다. 이 RX631 상에서도 ROS가 일부 작동하고 있을 가능성이 있다고 한다.

-- 컨테이너 기술의 runC를 탑재 --
ROS이외의 OSS에 관해서도 간단하게 살펴보도록 하겠다. 가장 눈에 띄는 것은 얼굴인식 및 충전대 등의 인식에 사용하는 딥 뉴럴 넷 (DNN)이지만, 추후에 딥러닝 부분에서 설명하겠다. 또한 클라우드 측과의 연대를 위해 미국 아마존 웹서비스(AWS)사의 ‘AWS IoT device SDK’가 탑재되어 있으나, 이것도 다음 호에 게재예정인 클라우드 편에서 설명하겠다. 그 밖에 주목을 받고 있는 것이 컨테이너 실행기반(랜덤)인 ‘runC’ 이다. runC는 컨테이너 기술로 유명한 미국 Docker사가 개발한 것이다.

IT분야에서는 시스템의 운용을 특정의 하드웨어의 환경으로부터 분리하여 1대의 물리적인 서버 속을 복수의 시스템으로 단락 짓기 위해 하이퍼바이저(hypervisor) 상에서 가상머신(VM)이 사용되고 있다. 그러나 VM상에서는 게스트 OS가 독립적으로 동작하고 있으며 오버헤드가 크기 때문에 최근에는 보다 경량의 컨테이너 기술인 ‘Docker’가 사용되고 있다. 컨테이너에서는 OS 자체는 공용으로 하고 유저의 공간에서 VM과 비슷한 환경을 만들어 낸다. RunC는 그 Docker와 호환성이 있는 컨테이너 런타임으로서 2015년에 Docker사가 발표했다.

-- aibo의 딥러닝은 어떻게 되어있는 것일까? --
aibo에서는 눈부신 발전을 하고 있는 딥러닝 기술이 채택되었다. 주로 화상 인식과 음성 인식이 사용되고 있다. 화상인식에서는 사람의 얼굴을 검출하거나 자주 만나는 사람, 100명까지의 얼굴을 식별할 수 있다. 그 외에도 선대의 AIBO를 식별하거나 가정 내에 있는 물품의 일반 물체인식도 가능하다. 충전대에 자동으로 되돌아갈 때에도 충전대를 딥 뉴럴넷(DNN)으로 검출한다.

이것들 DNN에 의한 화상인식에는 소니가 내장한 OSS의 딥러닝 프레임워크인 ‘NNL(Neural network libraries)’을 사용하여 실장하고 있다. 앞에서 말한 것처럼 aibo에는 화상 인식용의 라이브러리인 OpenCV도 탑재되어 있으나, 이것은 주로 Visual SLAM에 있어서의 낮은 레벨의 특징 추출에 사용되고 있는 것으로 보인다.

aibo는 개의 형상을 하고 있기 때문에 사용자와 대화를 하는 기능은 없지만, ‘손 올려’ ‘사진 찍어줘’와 같이 어느 정도의 음성인식은 가능하다. aibo는 OSS의 음성인식 툴 키트인 ‘Kaldi’가 탑재되어 있기 때문에 그것을 이용하여 이와 같은 인식을 실현하고 있다고 한다. Kaldi에는 다양한 음성인식 알고리즘이 탑재되어 있을 뿐만 아니라, 디폴트(표준 설정)에서는 음향 모델부분에서 DNN이 채택되고 있다. 또한, 가와니시 씨는 당사 그룹의 AI스피커인 ‘Xperia Hello!’는 “aibo와 공통의 음성인식 시스템을 채택하고 있다”라는 것으로 보아, Xperia Hello!에도 Kaldi가 사용되고 있는 것으로 보인다.

-- Cogitai사의 기술은 채택하지 않아 --
소니는 aibo에 대해 “본체의 AI가 주인과의 커뮤니케이션을 학습하여 aibo를 개성적으로 성장시킨다”라고 설명하고 있다. 시스템이 스스로 새로운 Task를 배워, 학습해 가는 구조는 AI의 분야에서 ‘지속 학습(Continual Learning)‘이라고 부른다. 본지(本誌)에서 자주 설명하고 있는 강화학습(Reinforcement Learning)은 주로 단일 Task에 대해 스스로 비(非)교사 학습을 해 나가는 시스템이지만, 지속 학습은 강화학습을 발전시켜, 별도의 Task를 찾아 성질까지 확장한 것이다.

소니의 광고 카피를 참고하면, aibo는 일견 이런 지속 학습을 채택하고 있는 것처럼 보이지만, 그렇지 않다. 예를 들어 본지가 2016년 8월에 소개한 것처럼 소니는 로봇 등으로의 응용을 감안하여 지속 학습의 AI 벤처기업인 미국 Cogitai사에 출자하고 있다. aibo에도 Cogitai사의 성과를 이용할 가능성도 있었으나, 실제로는 채택하지 않았다. (가와니시 씨). Cogitai사의 기술이 가정용 제품으로 직접 활용할 수 있을 정도의 수준에는 미치지 못한다는 것이 그 이유였다. Aibo가 시간에 걸쳐 성장해 나가는 것처럼 보인다고 해도, 그것은 사전에 정의한 시나리오를 토대로 파라미터를 변화시켜 행동 등을 변화시킨 결과인 것으로 보인다.

-- DNN의 학습은 AWS 클라우드 측에서 --
화상 인식용 DNN은 aibo에서는 얼굴의 검출 등 추론을 시행하는 것뿐이며, DNN의 학습 자체는 AWS의 클라우드 쪽에서 시행한다. Aibo의 메인 SoC에서 DNN의 학습을 시행하기에는 연산 부담이 크기 때문이다.

만약에 aibo가 사람의 얼굴 영역을 검출하기만 하는 것이라면 미리 제품 출하 전에 학습시킨 DNN을 사용하기만 하면 된다. 그러나, aibo는 자주 만나는 100명의 얼굴을 식별하는 기능을 갖추고 있다. 그렇기 때문에 사전에 학습이 된 DNN을 이용하는 것만으로는 충분하지 못해, 출하 후에도 추가 학습을 실시할 필요가 있다.

소니는 자세한 내용은 공표하지 않고 있으나, 추가 학습의 단계는 다음과 같다고 보여진다. 먼저, 공장 출하시의 상태의 DNN으로 매일 만나는 사람들의 얼굴 화상을 검출해 낸다. 그 시점에서는 사람의 얼굴로 보이는 영역을 Bounding Box로서 검출하는 것뿐이며, 개인의 식별은 안 된다. 그 후에 그 얼굴 화상을 AWS의 오브젝트 스토리지 ‘S3’에 격납(格納)한다. 그리고 얼굴의 특징 벡터 등을 토대로 클러스터링(군집화)을 실시하여 비슷한 얼굴, 동일 인물로 보이는 얼굴 별로 그룹화시킨다. 마지막으로, 자주 만나는 사람의 상위 100명의 얼굴 화상과 그 클러스터 이름을 라벨화하여 aibo내에 있는 것과 동일한 구성의 DNN을 클라우드 상에서 학습시킨다. 완성된 학습 결과의 모델을 aibo안에 디플로이(네트워크로 제공되는 앱∙웹 서비스를 실제 운용 환경에서 이용할 수 있는 상태로 만드는 것)함으로써, 몰랐던 사람을 점차 식별할 수 있게 된다.

DNN에 의한 얼굴 검출은 aibo의 로컬로 약 10프레임/초 정도의 속도로 실시된다고 한다. 메인 SoC인 Snapdragon 820은 그 GPU인 ‘Adreno’로 OpenCL 2.0에 대응하고 있다. 소니의 NNL은 OSS판으로는 공식적으로 OpenCL에는 대응하지 않으나, 자사에서의 이용이라면, 대응하고 있을 가능성이 있다고 한다.

클라우드 기반의 구성에 대해서는 다음 호에서 설명하도록 하겠다.

 -- 끝 --

목차