Deep Image Matting : 物体の切り抜きを高精度化する機械学習モデル
ailia SDKで使用できる機械学習モデルである「Deep Image Matting」のご紹介です。エッジ向け推論フレームワークであるailia SDKとailia MODELSに公開されている機械学習モデルを使用することで、簡単にAIの機能をアプリケーションに実装することができます。
Deep Image Mattingの概要
Deep Image Mattingは2017年4月に発表された物体の切り抜きを高精度化する機械学習モデルです。
Deep Image Mattingでは、RGB画像とTRIMAP画像を入力として、高精度に物体の切り抜きを行うことができます。TRIMAPは、物体には255、背景には0、物体か背景か不明な場所には127を書き込んだ画像です。
TRIMAPは、手作業もしくはデプスカメラから作成する方法が一般的ですが、近年はセグメンテーションモデルで生成することもできます。
Deep Image Mattingのバージョン
Deep Image MattingにはKerasを使用したバージョン1と、Pytorchを使用したバージョン2の二種類があります。
KerasではBGRを入力とします。Keras版は320x320の解像度で学習しており、320x320以上の画像の場合は、入力画像をタイル化して、320x320ごとに処理します。
PytorchではRGBを入力とします。Pytorch版は入力解像度を可変にすることができ、タイル化は不要です。
AIモデルの入力は、RGB 3チャンネル + TRIMAP 1チャンネルの合計で4チャンネルを与えます。入力のレンジは0〜1に正規化して与えます。
AIモデルの出力はアルファチャンネルとなります。TRIMAPが0の領域は0、255の領域は1.0、127の領域は出力されたアルファチャンネルを使用するように加工して使用します。
Deep Image Mattingの入力と出力
入力画像

(出典:https://github.com/foamliu/Deep-Image-Matting/tree/master/images)
TRIMAP

(出典:https://github.com/foamliu/Deep-Image-Matting/tree/master/images)
出力画像

Deep Image Mattingの出力
ailia SDKでの実行
ailia SDKで使用できるサンプルは下記となります。
RGB画像とTRIMAP画像を引数に与えることで、アルファチャンネル付きのPNGを出力します。デフォルトでKerasです。
python3 deep-image-matting.py -i image.png -t trimap.png
セグメンテーションとの併用
セグメンテーションモデルと併用することで、TRIMAPの生成を自動化し、RGB画像のみからMattingを実行することができます。ailia SDKのサンプルでは、TRIMAPに空文字列を与えることで、セグメンテーションモデルの併用が可能です。
python3 deep-image-matting.py -i pixaboy.jpg -t “”
入力

セグメンテーション出力(DeeplabV3)

セグメンテーションを2値化

cv2.erodeとcv2.dilateによるTRIMAP生成

deep-image-mattingの適用

アイリア株式会社はAIを実用化する会社として、クロスプラットフォームでGPUを使用した高速な推論を行うことができるailia SDKを開発しています。アイリア株式会社ではコンサルティングからモデル作成、SDKの提供、AIを利用したアプリ・システム開発、サポートまで、 AIに関するトータルソリューションを提供していますのでお気軽にお問い合わせください。
ailia Tech BLOG