| [기고] 동작검색 위한 랜덤 포레스트법이란? | 2011.12.27 |
식별기 학습을 이용한 사람 동작의 분류법
사람의 움직임을 3차원으로 계측하여 얻을 수 있는 데이터는 리얼한 CG 캐릭터 애니메이션 제작은 물론 향후 보안용으로도 중요한 자료가 된다. 대량으로 축적된 데이터 군에서 움직임이 유사한 복수의 데이터를 수집할 수 있으면 보간(Interpolation)에 의해 새로운 데이터를 생성할 수 있기 때문에 움직임의 정밀도를 높이기도 하고 표현의 변화(variation)를 늘릴 수도 있다.
여기에서는 동작 데이터를 쿼리(query)로 사용하여 유사한 데이터를 높은 정밀도로 검색하는 방법을 소개한다. 이 방법에서는 같은 분류에 속하는 동작 데이터 군을 검출하기 위해 개인차의 영향을 받기 어려운 상대적인 다수 개의 동작 특징을 사용한다. 그리고 동작의 흔들림이나 측정 오차를 포함한 데이터를 고정밀도로 분류·식별하는 검색 기구를 랜덤 포레스트 법으로 구축함으로써 종래 방법에서는 어려웠던 고속 랭킹 검색을 실현할 수 있다. 머리말 : 배경
같은 분류의 데이터를 대규모의 데이터 군에서 검색할 수 있으면 그것들을 보간함으로써 계측할 때와는 다른 환경 조건이나 표현에 일치한 동작을 새롭게 생성할 수 있다. 동작 데이터의 검색 흐름은 그림 1에 나타나는 것처럼 쿼리(query)로 동작 데이터 파일을 의미 있는 길이로 구분한 동작 클립을 부여하여 그것과 움직임이 유사한 것을 등급을 매겨 데이터베이스에서 꺼낸다.
동작 데이터의 단순한 검색방법으로서는 각 데이터의 내용이나 의미를 나타내는 메타데이터(Meta Data)를 부여하여 그것을 텍스트로 검색하면 되지만, 움직임이 복잡한 데이터에 대하여 메타데이터를 자동 부여하는 것은 곤란하다. 예를 들면, 연기 등의 특수한 동작의 해석은 인간의 주관에 좌우되는 부분이 크기 때문에 다른 사람이 작성한 메타데이터에서는 의도하지 않은 검색 결과가 만들어지는 경우를 생각할 수 있다. 또한, 메타데이터에서는 동작의 언어적 혹은 정성적인 비교밖에 할 수 없기 때문에 동작간 유사도의 정량적인 비교에는 적합하지 않다.
동작 데이터 간의 정량적인 비교에 의거한 검색을 실현하기 위하여 동작 고유의 특징량을 사용하는 방법이 제안되고 있다. 예를 들면 신체 관절의 기하적인 위치 관계를 2치 벡터화한 자세 특징을 사용하는 방법과 그 특징의 생기 확률(Probability of Occurrence)을 학습하여 동작 분류마다 공통된 특징을 템플릿화하여 검색 정밀도를 높이는 방법 등이 제안되고 있다. 반면, 필자의 연구 그룹에서는 이전에 동작의 의미적인 구조에 주목한 검색 방법을 제안했으며, 참고문헌 2)의 방법과 같은 인덱스화된 자세와 타이밍의 특징을 기술하는 규칙을 자동 생성, 귀납 논리에 의거하여 검색엔진을 구축했다.
이들 종래 방법에서는 어떤 데이터에 대한 다른 데이터의 유사 정도를 바탕으로 순위 매기기를 할 수 있는, 흔히 말하는 랭킹은 고려되지 않았다. 그러나 여기에서 소개하는 방법에서는 보다 높은 검색 정밀도를 달성하면서 랭킹에도 적합한 유사도의 지표를 도입했다. 동작 데이터의 특징량
동작의 재현 정밀도는 데이터를 취득할 때의 관절 수와 시간 해상도를 증가시킴으로서 향상되지만, 검색 처리에 필요한 계산 비용은 데이터의 정보량에 따라 증가하기 때문에 공간적·시간적인 해상도는 낮게 설정하는 것이 바람직하다.
또한, 같은 의미를 가지는 동작이라 하더라도 연기자의 개성이나 시행마다의 흔들림(예를 들면 보행 동작의 경우, 보폭이나 진행 방향, 보행 주기, 타이밍 등의 차이)에 의해 데이터의 값은 다양한 의미로 해석될 수 있다. 그러므로 높은 식별 정밀도를 얻으려면 공통 특징을 정확하게 판단할 수 있는 양으로 변환해 둘 필요가 있다.
여기에서는 동작 데이터에서 산출되는 각 관절의 3차원 위치를 참조하지만, 신장 등이 다른 체형의 연기자 간에서는 동일한 움직임이라도 관절 위치에 차이가 발생한다. 그런 까닭으로 각 관절 위치를 신장의 값에 의거하여 정규화 함으로써 개인차를 제거한다. 또한, 동작 데이터에서 각 관절의 절대적인 위치는 같은 의미를 가지는 동작이라 하더라도 신체의 위치나 방향에 따라 다른 값을 취한다. 따라서 그림 2에 나타내는 것처럼 어떤 관절을 기준으로 한 타관절의 위치나 두 관절간의 거리, 몸 전체의 경사각도 등을 이용한 상대적인 위치·방향의 값을 자세의 특징량으로 하여 그 시계열 집합에서 동작의 특징을 산출한다.
동일 의미를 가진 동작이라도 같은 타이밍에서 자세가 변화한다고는 할 수 없기 때문에 동작 특징은 자세 특징량의 순간치가 아니라 국소적인 시간 구간에서의 평균값을 사용한다. 이렇게 함으로써 동작 타이밍의 미묘한 차이에 대해서도 확실하게 동작을 분류할 수 있다. 이 평균치를 계산하는 국소 구간(그림 3의 [t0, t1])을 다양하게 변화시킴으로써 순간적인 동작에서 완만한 동작까지 다양한 시간 해상도에서의 상태 값을 얻을 수 있다.
다만, 각 동작은 그 속도의 차이에 따라 소요 시간이 다르다. 따라서 동작의 개시부터 종료까지에 이르는 시간을 1단위로 정규화하여 이 단위 시간을 같은 간격으로 분할한 시각을 t0, t1의 값의 후보로서 국소 구간을 구성한다.
이번 방법에서 사용하는 동작 특징은 상술한 방법으로 구한 자세 특징량의 평균치에 대하여 개별적으로 마련한 역치와의 대소 관계로 얻어진다. 다만, 이 방법에서는 기존 방법2)3)처럼 이 대소 관계로 구성한 2치 벡터와 그 출현 확률을 템플릿화 한 것을 사용하는 것이 아니라 각 노드(node)에서 대소 관계를 판정하는 복수의 결정목(Decision Tree)을 도입하여 동작을 분류한다. 랜덤 포레스트법 랜덤 포레스트법5)이란, 집단 학습법의 일종이며, 그림 4에 나타나는 것처럼 다수의 결정목을 조합하여 정밀도가 높은 식별기를 얻는 방법이며, 집단 학습법 중에서도 특히 적은 계산량으로 높은 식별 성능을 얻을 수 있다.
각 결정목의 학습에 사용되는 교사 데이터와 분류 규칙은 무작위로 선택되기 때문에 각 결정목의 식별 성능은 비교적 낮다. 그러나 그것들을 다수 조합시킴으로써 흔들림이나 잡음을 많이 포함하는 데이터에 대해서도 고정밀도의 식별이 가능해진다.
동작 검색기를 구성하는 각 결정목의 노드는 전술한 것처럼 국소 구간[t0, t1]에서 계산된 자세 특징량의 평균치와 역치와의 대소 결과로 동작 특징을 판정한다. 그래서 각 노드에서의 식별 규칙은 착목하는 자세 특징량의 종류와 국소 구간의 조합(이후, 식별 조건이라 부른다)을 랜덤으로 선출하여 구성된다.
그러나 무작위로 생성되는 식별 조건으로 일정한 정밀도를 얻기 위해서는 방대한 수의 노드와 결정목이 필요하게 되며, 검색의 계산 비용도 증가한다. 따라서 각 노드에서의 식별 정밀도를 향상시키기 위하여 학습할 때에 정보 엔트로피의 이득을 최대로 하도록 식별 조건과 역치를 선택한다. 이하에 결정목의 구체적인 구축 수순을 나타낸다. 수순 1: 노드에 대하여 식별 조건을 무작위로 선택한다. 수순 2: 교사 데이터 집합을 이용하여 정보 엔트로피를 최소로 하는 역치를 산출한다. 수순 3: 수순 1, 2를 일정 회수 반복하여 정보 이득을 최대로 하는 식별 조건을 선택한다. 수순 4: 선택된 식별 조건으로 중간 노드를 구성하고, 이것을 이용하여 교사 데이터 집합을 2분할한다. 수순 5: 수순 4에서 2분할된 각각의 데이터 집합에 대하여 정보 엔트로피를 계산하여 그것들의 값이 일정치 이하가 될 때까지 수순 1~4의 노드의 구성을 반복한다. 전술한 정보 엔트로피란, 학습용 데이터가 동작 분류마다 분할됨에 따라 감소하는 값이며, 종단 노드에서 얻을 수 있는 학습 데이터군의 동작 분류마다의 출현 확률 분포(그림 4)로 계산된다.
즉, 이 출현 확률 분포의 값의 치우침이 클수록 엔트로피의 값은 작아진다. 또한 정보 이득이란, 학습 데이터가 각 노드에서 분할되는 전후에서의 정보 엔트로피의 총량의 감소량에 의해 산출된다. 따라서 데이터 분류가 진행되면 이득의 값도 증대된다.
검색의 쿼리로서 입력되는 동작 클립은 결정목의 근노드(root node)의 식별조건에서 시작되어 중간 노드의 각 식별조건에서 양분된다.
그 결과 도달하는 종단 노드에서 얻어지는 출현 확률 분포(즉, 그 종단 노드에 도달한 학습 데이터의 동작 분류마다의 개수의 비율)가 각 결정목의 출력이 된다. 쿼리의 동작 클립은 이 출력의 전 결정목에서의 총 합계로 최대의 출현 확률이 되는 동작 분류에 속하는 것으로 판정된다(그림 4). 랭킹 검색의 실현 전술한 식별 방법으로는 동작 분류는 판정할 수 있지만, 동작 간의 유사도에 의거한 등급 매김은 고려되어 있지 않다. 그런 까닭으로 쿼리와 검색 대상이 되는 전 데이터에 대하여 계산된 출현 확률 분포끼리의 유사도를 도입하여 등급을 매긴다. 즉, 동작 분류의 출현 확률 분포는 실수 벡터값으로 얻어지기 때문에 그 코사인 유사도를 내림차순으로 재배열함으로써 등급이 매겨진 검색 결과를 얻는다. 데이터 검색 실험 이번 실험에서 사용하는 동작 데이터군은 Muller가 구축한 모션 캡처 데이터집6)을 이용했다. 이 데이터집을 4,660개의 동작 클립으로 분할하여 각 클립을 78종으로 분류했다. 또한, 동작 분류마다 학습용과 평가 실험용의 데이터를 그 비율이 거의 동수가 되도록 무작위로 양분했다.
동작 특징의 산출에는 56종류의 자세 특징량을 정의하고, 동작의 소요 시간은 같은 간격으로 10분할한 3,080종류의 식별 조건의 후보에 대하여 결정목을 학습시켰다. 또한, 결정목의 각 노드에 대하여 12개의 식별 조건을 무작위로 생성하여 선택했다.
식별 정밀도는 정보 검색 분야에서 평가에 사용되는 재현율, 적합율 및 그것들의 값에서 산출되는 F척도로 나타내고 있다. 이 그림에서 약 30개로 식별 정밀도가 수렴되어 있음을 확인할 수 있다. 결정목을 (30, 100)개 사용했을 경우의 학습 시간은 각각 (656, 2375)초, 식별에 소요되는 시간은 (302, 980)밀리 초였다. 그러므로 정밀도를 보증하면서 처리의 고속화를 도모하려면 랜덤 포레스트의 결정목을 30개 정도로 설정하는 것이 적절하다.
그림 6에 기존 방법과 검색 정밀도를 비교한 결과를 나타냈다. 모션 템플릿이란, 참고문헌 7)에서 제안된 유전적 알고리즘으로 최적화된 템플릿에서 얻어진 결과이다. 또한 귀납 추론은 참고문헌 4)에서 제안된 동작 규칙의 귀납 추론을 사용한 검색 방법이다. 이 결과에서 여기서의 제안 방법이 가장 높은 재현율, 적합율, 및 F척도의 값이 얻어져 있음을 확인할 수 있다.
다음으로 출현 확률 분포의 코사인 유사도를 이용하여 랭킹을 출력하여 상위부터 그 유사도가 일정 이상의 동작을 동일 분류로서 검색 정밀도를 산출한 결과, 재현율 0.87, 적합율 0.93과 F척도 0.9라는, 그림 5 및 그림 6의 식별 결과와 동등한 높은 성능을 얻을 수 있었다. 따라서 이 방법은 동작 분류의 판정뿐만 아니라 분류의 유사도에 의거한 랭킹에도 응용할 수 있다. 맺음말 여기서는 동작의 다양한 특징량에서 식별에 유효한 것만을 자동 선택하기 때문에 동작에 관한 사전 지식이 없어도 효율적인 인덱스화와 고속 검색이 가능해진다. 랜덤 포레스트 법은 영상인식 등의 분야에서는 이미 널리 이용되고 있지만, 동작 데이터 검색에 대한 유효성도 확인된 것이다.
제안 방법은 학습하지 않은 미지의 분류에 속하는 동작에 대해서는 재학습이 필요해진다. 그러나 데이터군의 규모가 증대됨에 따라 재학습의 계산 비용도 증가하고 식별 정밀도도 저하될 가능성이 있다. 따라서 실용적 관점에서는 새로운 동작 분류에 대해서도 재학습이 불필요한 식별 기능이 필요하다는 점이다. <글 : 쿠리야마 시게루 / 토요하시 기술과학대학> <저작권자: 보안뉴스(http://www.boannews.com/) 무단전재-재배포금지> |
|
|
|