HumanPartSegmentation : 人物の部位をセグメンテーションする機械学習モデル
ailia SDKで使用できる機械学習モデルである「HumanPartSegmentation」のご紹介です。エッジ向け推論フレームワークであるailia SDKとailia MODELSに公開されている機械学習モデルを使用することで、簡単にAIの機能をアプリケーションに実装することができます。
HumanPartSegmentationの概要
Self-Correction for Human ParsingはBaiduResearchが2019年の10月に発表した、人物の部位ごとにセグメンテーションを行うことができる機械学習モデルです。
対応している部位は下記になります。
CATEGORY = (
‘Background’, ‘Hat’, ‘Hair’, ‘Glove’, ‘Sunglasses’, ‘Upper-clothes’, ‘Dress’, ‘Coat’,
‘Socks’, ‘Pants’, ‘Jumpsuits’, ‘Scarf’, ‘Skirt’, ‘Face’, ‘Left-arm’, ‘Right-arm’,
‘Left-leg’, ‘Right-leg’, ‘Left-shoe’, ‘Right-shoe’
)
入力と出力の例は下記になります。
HumanPartSegmentationのアーキテクチャ
HumanPartSegmentationはLIPデータセットの50000画像から学習を行ないますが、HumanPartSegmentationにはデータセットが不完全であるという問題があります。通常のセグメンテーションでは、1つの物体に1つのカテゴリを使用しますが、HumanPartSegmentationでは1つの物体に2つのカテゴリを割り当てるため、アノテーションのコストが高く、ノイズやラベル間違いなどがGT(Ground Truth)のデータに含まれてしまいます。
SCHP(Self-Correction for Human Parsning)では、データセットにノイズが含まれることを前提に、セグメンテーションのクラス間のエッジに対するLossを使用した学習を行うと共に、GTのラベルデータをRefineしながら学習を行うことで、より高精度なセグメンテーションを実現します。
ネットワークアーキテクチャはbackbone networkにresnet101を使用したCE2Pとなっています。2018年9月に発表されたDevil in the Details: Towards Accurate Single and Multiple Human Parsingのアーキテクチャで、セグメンテーションのクラス間のエッジに関するLossを加えることで精度を改善する手法です。従来はセグメンテーションのGTは正しい前提で学習をしていましたが、CE2PではセグメンテーションのGTにノイズが含まれることを前提として、特定のクラスのセグメンテーション内に孤立して現れる別クラスのノイズに対処しています。
SCHPの特徴的な手法として、自己修正学習サイクルを使用して、GTのラベルを修正しながら学習を行っています。2015年3月に発表された蒸留の論文であるDistilling the Knowledge in a Neural Networkで示されたように、マルチクラスのラベルにはDark informationが含まれていることが知られています。preudo-maskを使用することで、正解ラベルのみを含むOne-Hotのラベルに対して、Dark informationが含まれるSoft-Targetのラベルを生成することができます。
SCHPでは、GTのラベルで学習した後、学習したモデルでラベルを付け直し、新しいラベルで学習することを繰り返していくことで、よりノイズの少ない教師ラベルを生成し、より精度の高いモデルを生成します。
学習されたモデルはCVPR2019LIPチャレンジでSOTAを達成しています。
HumanPartSegmentationの使用方法
ailia SDKでHumanPartSegmentationを使用する場合、下記のコマンドでWEBカメラ入力に対して処理を適用することができます。
python3 human_part_segmentation.py -v 0
実行例です。
ax株式会社はAIを実用化する会社として、クロスプラットフォームでGPUを使用した高速な推論を行うことができるailia SDKを開発しています。ax株式会社ではコンサルティングからモデル作成、SDKの提供、AIを利用したアプリ・システム開発、サポートまで、 AIに関するトータルソリューションを提供していますのでお気軽にお問い合わせください。