全3815文字
PR

みなさんはAI(人工知能)に対してどんなイメージを持っているでしょうか。興味はあるけど難しそう、ブラックボックスでよくわからない──。そんな印象を持っている人は少なくないのではないでしょうか。そこで本特集では人気ブロガーからあげ先生が「Google Colaboratory(Google Colab)」という無料のクラウドサービスを使った実習を通じて、AIを用いた姿勢推定技術について楽しく解説していきます。

姿勢推定技術とは?

 姿勢推定技術とは、人の頭、首、手などの体の部位を認識して、それらをつなぎ合わせて、人の骨格を検出する技術です。この技術を使うと、以下の画像のように、人の骨格を検出することが可能です。

モデル:ろんすたさん(https://twitter.com/monestar)@変デジ研究所(https://lab.hendigi.com/)
モデル:ろんすたさん(https://twitter.com/monestar)@変デジ研究所(https://lab.hendigi.com/)

 この技術は、ひと昔前までは高価な奥行きを推定できるカメラを使わないと不可能だったのですが、近年のAI技術の進歩により、安価な単眼カメラを用いて実現できるようになりました。

姿勢推定技術の仕組み

 AIを用いた姿勢推定技術の中でも、最もメジャーな「OpenPose」に関して簡単に紹介します注1

 「OpenPose」では、ディープラーニングを用いることで、複数人の姿勢を同時に推定する高度なタスクを実現しています。従来の技術では、人を1人ずつ検出して姿勢を検出していましたが、「OpenPose」では、最初に画像に映っている人の首・肘・肩といった身体の主要な部位の合計18カ所をそれぞれ検出します。

 画像に映っている人が1人なら、それぞれの部位をつなぐだけで人の姿勢が推定できます。一方、映っている人が複数だと、各部位がどの人のものかを判別する必要があり、問題がより複雑になります。

 この「部位を検出する」「部位同士の最適なつながりを見つける」という2つのStepを実現するために、ディープラーニングをうまく使っています。概要を図示すると以下のようになります。

引用元:https://arxiv.org/pdf/1611.08050.pdf
引用元:https://arxiv.org/pdf/1611.08050.pdf
[画像のクリックで拡大表示]

 上記の部位の検出と、それらのつながりを見つけるために「OpenPose」で用いられるディープラーニングのモデルは下図の通りです。

引用元:https://arxiv.org/pdf/1611.08050.pdf
引用元:https://arxiv.org/pdf/1611.08050.pdf
[画像のクリックで拡大表示]

 詳細な解説は割愛しますが、図に多く出てくるCは画像認識で広く使われている手法であるCNNのことです。すなわち、AIモデルの構造自体は、CNNの組み合わせが多くを占めていることが分かります。

注1 Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields。詳しくは以下を参照。
https://arxiv.org/pdf/1611.08050.pdf