Laboro

エンジニアコラム

広い技術領域をカバーする当社の機械学習エンジニアが、アカデミア発のAI&機械学習技術を紹介&解説いたします。

“木を見て森を見る”ように。「キーポイント検出」を解説

2020年10月7日
株式会社Laboro.AI リード機械学習エンジニア 濱本 雅史

概 要

画像に写っている人などの対象物の特徴点を検出する「キーポイント検出」は、画像解析の領域でも主要なトピックの一つです。オープンソースで公開されているモデルも多くあるほか、ビジネスシーンでも人体等の骨格検出や姿勢推定に利用されるなど多くの事例が生まれています。

このコラムでは、キーポイント検出の概要と、そこで用いられる代表的な手法について最新の研究も踏まえてご紹介していきたいと思います。

目 次

キーポイント検出とは
キーポイント検出のビジネス応用例
キーポイント検出の全体像
キーポイント検出の2つのアプローチ
 ・Top-Downアプローチ
 ・Bottom-Upアプローチ
Top-Downアプローチの代表的な手法
 ・DeepPose
 ・Mask R-CNN
 ・Cascaded Pyramid Network(CPN)
 ・SimpleBaseline
 ・HRNet
Bottom-Upアプローチの代表的な手法
 ・OpenPose
 ・PoseNet(PersonLab)
 ・Associative Embedding
 ・PifPaf
 ・HigherHRNet
まとめ
参考文献

キーポイント検出とは

キーポイント検出(keypoint detection)は、応用範囲によっては姿勢推定(pose estimation)とも呼ばれ、入力された画像から複数の座標点(keypoint)を出力し、その全体像を捉える技術です。

言うなれば「木(点)を見て、森(全体)を見る」ことを得意とする技術ですが、検出のイメージとしてよく人の骨格がカラフルな線で示されることがあります。ですが、キーポイント検出技術そのものは点を出力するモデルのため、これらの線は、実は視認性を上げるための工夫としてモデルとは別に表示されています。

またキーポイント検出では、目や肩、手といった人のパーツを検出するにあたっては、その周囲のパターンを見れば推測できるはずという仮定がベースになっており、「肩と肘はつながっている」というような点同士の接続情報は、通常使用されません。

キーポイント検出のイメージ

これが意味するところは、人体の検出のみに使用できると思われがちなキーポイント検出ですが、物体の点の特徴がわかれば、人体以外への応用もできるということです。実際にごく一部ではあるものの、人体以外への活用例もみられるようになってきています。

(人体以外のキーポイント検出については、こちらのコラム『対象は人だけじゃない。「非人体キーポイント検出」の可能性と実例』でご紹介しています。)

キーポイント検出のビジネス応用例

キーポイント検出は、様々な用途でビジネスシーンで活用されています。例えば、

・運輸業 → 運転者の異常検知
・スポーツ、医療、教育等 → 人体の動作解析
・アミューズメント →バーチャルキャラクターへの動作マッピング
・安全保障 → 異常行動の検知

また、国内のAI開発企業も、キーポイント検出技術を活用した以下をはじめとする様々な研究開発を行っています。

・ 競走馬の姿勢推定・歩行動作差分の比較技術
・サッカーのシーン推定と選手の姿勢推定
・野球特化の姿勢推定アプリケーション

キーポイント検出の全体像

キーポイント検出は、「画像から特徴点を検出する技術」と言えますが、そもそも何を検出ターゲットにするのかでタスクが異なります。人の顔のみに対象を絞り、細かく特徴点を検出する顔のランドマーク検出(facial landmark detection)や、顔も含んだ体全体の特徴点による姿勢推定(pose estimation)などです。以下からは、姿勢推定に絞って解説していきます。

キーポイント検出は、2Dと3Dでもタスクが分かれます。2Dの場合は、推定したい点の\((x, y)\)座標を推定しますが、3Dの場合は\((x, y, z)\)の3点の座標を推定することが必要になります。当然3Dの方が難易度が高い一方で、近年は3Dキーポイント検出に関する研究が盛んに行われるようになっています。

3D姿勢推定のイメージ
(出典:In the Wild Human Pose Estimation Using
Explicit 2D Features and Intermediate 3D Representations

さらに、推定対象となる人数でも、一人のみの検出(Single-Person)か、複数人(Multi-Person)の検出かが異なります。

Multi-Person検出のイメージ
(出典:Youtube, Recurrent Spatio-Temporal Affinity Fields (STAF)

また、最終的な出力方法についても2つのアプローチがあります。座標を直接出力する回帰、またピクセル単位でスコア(確率)を与えるヒートマップです。最近のメジャーな手法の多くはヒートマップで行われています。

ヒートマップからのキーポイント検出のイメージ
(出典:Vehicle Pose and Shape Estimation through Multiple Monocular Vision

キーポイント検出の2つのアプローチ

上で紹介した様々なタスクのうち、ディープラーニングをベースにした複数対象の検出には大きく2つのアプローチがあります。

Top-Downアプローチ

Top-Downアプローチは、まず画像中の対象物を検出してから、その後に対象物ごとの座標点を推論する手法です。

Multi-PersonからSingle-Personに問題を落とすやり方で、Faster R-CNNなどの既存の物体検出手法を利用することが基本です。

後述するBottom-Upアプローチに対して、人物部分の切り出しと拡大縮小を行えるため、人物の大小の影響を受けづらく精度が出やすい手法です。一方で検出人数が増えると検出速度が低下する上、人が密集していると重なりの影響で物体検出自体に苦戦するというデメリットがあります。

Bottom-Upアプローチ

一方のBottom-Upアプローチは、画像中の座標点を“対象物の違いを考えずに”全部検出し、その後に座標点同士をグルーピングし、ここの対象物の座標点として出力する手法です。

Top-Downアプローチのように物体検出を行わないため、人数に影響されず比較的高速に行える点にメリットがありますが、人物の大小に影響を受けやすいというデメリットがあり、特に画像中に小さく写っている人物の検出が難関になるケースが少なくありません。

高速であるため、リアルタイムでの検出が求められる場合にはBottom-Upアプローチが有効ですが、検出対象が一つしかない場合には、返ってTop-Downアプローチよりも遅くなる場合もあることが報告されています(参考文献⑥)。そのほか、グルーピング(クラスタリング)というTop-Downアプローチにはない問題を解く必要があるなど、それぞれのシーンに応じて使い分けることが必要になります。

次からは、Top-DownアプローチとBottom-UPアプローチのそれぞれについて、代表的な手法を紹介していきたいと思います。

Top-Downアプローチの代表的な手法

DeepPose

DeepPose(参考文献①)は、キーポイント検出にディープラーニングを適用した最初の手法です。その手順は、最初に画像全体からおおまかな関節点を予測し、その後に各点の周辺を切り出して再度検出し・・・と多段で精密化(refinement)を行い、検出された点は回帰として出力されます。ディープラーニングを用いているものの、精度はそれ以前の手法と比べてそれほど大きく改善はしていません。

(出典:参考文献①

Mask R-CNN

Mask R-CNN(参考文献②)は物体検出分野でよく知られる手法ですが、maskを推論する代わりに、各座標点のヒートマップを推論することでキーポイント検出を実現します。世界的にも比較実験などでよく用いられる手法ですが、Top-Downアプローチの中では最下位ランクに位置付けられることもあり、現在ではそれほど高精度な手法とは言えません。

Mask R-CNNによるキーポイント検出のアーキテクチャとイメージ
(出典:
Deep Learning for Instance-level Object Understanding

Cascaded Pyramid Network(CPN)

ここ1〜2年のTop-Downアプローチの論文で必ずと言っていいほどベンチマークとして出てくるのが、このCascaded Pyramid Network(参考文献③)という手法です。CPNは、物体検出におけるFeature Pyramid Networkを前段(GlobalNet)で行い、後段(RefineNet)でその特徴量を組み合わせて推論することで、高い精度を実現した手法です。

(出典:参考文献③

SimpleBaseline

名前からはネットワークには見えませんが、このSimpleBaseline(参考文献④)もれっきとしたTop-Downアプローチの手法の一つです。ネットワークとしては非常にシンプルで、単に畳み込み(convolution)と逆畳み込み(deconvolution)をしただけですが、結果的に既存の手法を上回る結果を残している手法です。(※厳密にはバックボーンネットワークの種類や畳込み/逆畳み込みの数によります。)

HRNet

コンピュータービジョンの世界的なカンファレンスCVPR2019で採択された論文で提案されたのが、HRNet(参考文献⑤)です。

これまでの手法は低解像度(ResNetの1/32)の特徴マップから高解像度に復元するネットワーク構成が主流でしたが、HRNetでは高解像度の特徴マップをベースにしたネットワークが提案されました。

具体的には、最初に2回畳み込みを行い、入力を1/4の解像度のstemにしますが、以降はこの1/4解像度を保ち続けるネットワークパスをベースにするというものです。

HRNet自体は姿勢推定に限定されるものではなく、画像分類(image clasification)、物体検出(object detection)、セマンティックセグメンテーション(semantic segmentation)も可能なネットワークです。

(出典:参考文献⑤

Bottom-Upアプローチの代表的な手法

OpenPose

Bottom-Upアプローチの一つ目の手法としてご紹介するのが、OpenPose(参考文献⑥)です。この手法は、処理速度が入力画像中の人物の数に依存せず、非常に高速にキーポイント検出ができる特徴があります。

多人数のリアルタイム2D姿勢推定ソフトウェアとして初めてオープンソースとして公開されたとされています。(非商用のみ無料)

PoseNet(PersonLab)

次に紹介するPoseNet(参考文献⑦)は、論文としてはPersonLabという名前で提案されている手法で、姿勢推定とインスタンスセグメンテーション(instance segmentation)を同時に行うことが可能です。

TensorflowのJavascript用フレームワークであるTensorFlow.js公式のモデルの一つとして公開されており、Webカメラからの画像を即座にブラウザ上で解析してリアルタイム表示できるというデモが公開されています。

(出典:Tensorflow

Associative Embedding

Associative Embedding(参考文献⑧)は、機械学習のトップカンファレンスNeurIPS2017で提案された手法です。 ネットワークの出力として、通常利用する各関節点らしさのヒートマップに加え、グルーピングに利用するタグ値を与える埋め込みヒートマップ (embedding heatmap)を別チャネルとして出力します。

実装上は既存のBottom-Upモデルの出力ヒートマップのチャネルを2倍し、タグ値を計算するための損失関数を追加するだけとシンプルですが、実験結果ではSOTAを達成しています。なお、One-Stageの物体検出で2019年にSOTAを達成したCornerNetもこのAssociative Embeddingに影響された手法です。

(出典:参考文献⑧

PifPaf

CVPR2019で発表されたPifPaf(参考文献⑨)は、コラムのはじめに通常使用されないとお伝えした点同士の接続情報を使用する例外的な手法です。Part Intensity Fields(PIF:キーポイント情報)とPart Association Field(PAF:接続情報)の2種類の情報を同時に並列計算することで高速・高精度を達成した手法です。

特徴マップの各セルにおいて計算されるPAFの接続情報は、接続している関節点のペア毎に、各関節点方向へのベクトル\((x, y)\)と幅\(b\)、 およびその確信度の計7つの値(7チャネル)で表現されます。PIFで得られる各関節点に対してこのPAFによる接続情報を使って連結対象を見つけることで、最終的な結果が得られます。

公式実装(OpenPifPaf)が公開されており、PoseNet同様にWebカメラとブラウザで動くリアルタイムデモがあります。

HigherHRNet

今年の6月に開催されたCVPR2020で報告されたばかりの手法が、HRNetを改良したHigherHRNet(参考文献⑩)です。

HihgerHRNetは、HRNetをバックボーンとし、Bottom-Up用の出力をチャネル・ネットワークを追加したものです。 HRNetでは最終的な特徴マップの解像度が入力画像の1/4でしたが、 HigherHRNetではさらに逆畳み込みをした1/2の解像度の特徴マップも生成します(ここが“Higher”なる部分)。この2種類の解像度の特徴マップから得られるヒートマップを集約することで、Bottom-Upアプローチの課題だった画像中の小さいサイズの人物に対する検出も、高精度に推論できることを狙っています。

論文では、HRNetの出力特徴マップに、Associative Embeddingと同様に関節点らしさのヒートマップとタグ値の埋め込みヒートマップを追加しただけのものを、ベースラインのBottom-Up HRNetとして比較実験しており、これだけでも良い精度を示しており、少なくともOpenPoseには完勝しています。

これまでのBottom-Upアプローチの手法よりも高精度な結果(SOTA)を達成しており、とくにCrowdPoseデータセットという、既存のベンチマークデータセットより多人数にフォーカスしたデータセットについてはTop-Down手法にも優っています。

(出典:参考文献⑩からの抜粋に筆者加筆)

まとめ

このコラムではキーポイント検出と呼ばれる技術について、その概要と代表的なアプローチと手法をご紹介してきました。キーポイント検出の技術は引き続き様々な手法が検討されていて、より精緻な検出に向けて日々進化しており、様々なシーンでの活用が今後も見込まれます。

また、冒頭にも書きましたが、主に人体に限って用いられがちなキーポイント検出ですが、実際には車や機械をはじめ、様々な対象の検出への応用も期待されます。人体以外のキーポイント検出については、機会を改めてご紹介したいと思います。

参考文献

DeepPose: Human Pose Estimation via Deep Neural Networks
Mask R-CNN
Cascaded Pyramid Network for Multi-Person Pose Estimation
Simple Baselines for Human Pose Estimation and Tracking
Deep High-Resolution Representation Learning for Human Pose Estimation
OpenPose: Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields
PersonLab: Person Pose Estimation and Instance Segmentation with a Bottom-Up, Part-Based, Geometric Embedding Model
Associative Embedding: End-to-End Learning for Joint Detection and Grouping
PifPaf: Composite Fields for Human Pose Estimation
HigherHRNet: Scale-Aware Representation Learning for Bottom-Up Human Pose Estimation

コラム執筆者

機械学習エンジニア 濱本 雅史

筑波大学大学院 システム情報工学研究科 博士後期課程修了。博士(工学)。在学中にデータマイニング・テキストマイニングの研究に従事。2008年よりエンジニアとして自然言語処理の研究開発を6年半経験。2015年よりBPM/EAIミドルウェアの製品導入コンサルタントを3年半経験。2018年10月よりLaboro.AIに参画。日本データベース学会 正会員。

その他の執筆コラム

対象は人だけじゃない。「非人体キーポイント検出」の可能性と実例