ailia MODELSの用途別の推奨モデル
ailia MODELSはアイリア株式会社が提供するOSSをベースとしたモデルライブラリです。本記事では、用途別の推奨モデルを紹介します。
ailia MODELSについて
ailia MODELSはアイリア株式会社が提供するOSSをベースとしたモデルライブラリです。240種類以上のモデルをONNXに変換して提供しており、静止画や動画を入力して、簡単に色々なモデルを試すことが可能です。本記事では、用途別の推奨モデルを紹介します。

ailia MODELS(画像の出典:Pixabay)
物体検出
物体検出は、画像から2DのBounding Boxとクラスラベルを計算します。
YOLOX
物体検出で広く使用されているYOLOの2021年版です。YOLOXはApache Licenseで使用しやすく、学習時にStrong Augumentationが適用されており、汎化性能に優れています。nano、tiny、s、m、l、xの6モデルがあり、要求される精度に応じて切り替え可能です。yolox-sのM1 Mac + ailia SDKでの参考推論速度は20msです。

ailia-models/object_detection/yolox at master · ailia-ai/ailia-models(Image from…github.com
少し変わった使い方としては、-dwと-dhオプションを付与することで、認識解像度を変更することが可能です。小さい物体を検出したい場合に使用します。
$ python3 yolox.py -dw 1280 -dh 1280
DETIC
YOLOXの80カテゴリに含まれる物体以外を認識したい場合は、DETICが使用可能です。基盤モデルであり、推論には時間がかかりますが、大抵のものを認識可能です。認識対象のクラスは、lvisとin21kから選択可能です。M1 Mac (CPU) + ailia SDKでの参考推論速度は4110msです。

Image from https://web.eecs.umich.edu/~fouhey/fun/desk/desk.jpg
Deticは重いモデルですが、-dwオプションを付与することで、認識解像度を小さくして高速化することが可能です。
$ python3 detic.py -dw 320
また、opset16オプションを使用することで、TorchのGridSamplerではなく、ONNXのGridSamplerを使用することが可能です。
$ python3 detic.py --opset16
物体追跡
物体追跡は、画像から2DのBounding Boxを計算し、Bounding Boxを追跡してIDを付与します。
DeepSort
カルマンフィルタによるSortアルゴリズムと、同一人物かどうかを判定するReIDモデルを併用した物体追跡モデルです。YOLOで人物を検出した後、SortアルゴリズムとReIDモデルで人物にIDを付与します。通過人数をカウントしたり、動線を検知したい場合に使用可能です。ReIDのモデルのM1 Mac + ailia SDKでの参考推論速度は一人の特徴抽出につき4msです。この値にYOLOの推論時間が加算されます。

Video from http://www.robots.ox.ac.uk/~lav/Research/Projects/2009bbenfold_headpose/project.html
ByteTrack
カルマンフィルタによる追跡に、低いConfidence値を持つBounding Boxとの照合を加えることで高精度化した物体追跡モデルです。追跡対象として人以外にも適用可能であるため、キャリーカートなどの追跡に向いています。ByteTrack自体は非常に高速に動作するため、処理時間はYOLOの処理時間とほぼ等価になります。

Video from https://vimeo.com/60139361
セグメンテーション
セグメンテーションは、画像からクラスごとの領域をセグメンテーションします。
HRNet
高解像度の情報を低解像度に並列に接続することで高精度化したセグメンテーションモデルです。M1 Mac + ailia SDKでの参考推論速度は31.25msです。

Image from https://www.cityscapes-dataset.com/
PaddleSeg
Baiduの開発した高精度にセグメンテーションを行うモデルです。負荷が高いため、高精度な出力が必要な場合に使用します。道路以外の画像にも適用可能です。M1 Mac + ailia SDKでの参考推論速度は19555msです。

Image from https://www.cityscapes-dataset.com/downloads/
2D骨格検出
2D骨格検出は、画像から2Dのキーポイントを計算します。
LightWeightHumanPoseEstimation
1フレームから複数人のキーポイントを検出し、キーポイントをマージしていくBottomUp型のモデルとなります。推論速度が1フレーム内の人数に依存しないため、速度が重要な用途で使用します。M1 Mac + ailia SDKでの参考推論速度は11msです。

PoseResNet
1人の骨格を検出するTopDown型のモデルとなります。Microsoftの開発したベースラインであり、ResNetベースで安定した出力が得られます。高精度な出力が必要な場合に使用します。M1 Mac + ailia SDKでの参考推論速度は一人当たり27.5msです。この値にYOLOによる物体検出の時間が加算されます。

ailia-models/pose_estimation/pose_resnet at master · ailia-ai/ailia-models(Image from…github.com
MoveNet
1人の骨格を検出するTopDown型のモデルとなります。Googleが開発したモデルであり、動きの速い映像に対してロバストであるため、フィットネスアプリなどに向いたモデルになります。M1 Mac + ailia SDKでの参考推論速度は一人当たりThunderで27.75ms、Lightningで23.25msです。

ailia-models/pose_estimation/movenet at master · ailia-ai/ailia-models(Image from…github.com
AnimalPose
動物に対する骨格検出モデルです。犬、猫、牛、馬、羊に適用可能です。YOLOで動物を検出した後、HRNetを使用した骨格検出モデルを適用します。M1 Mac + ailia SDKでの参考推論速度は一体あたり40msです。これにYOLOの処理時間が加算されます。

ailia-models/pose_estimation/animalpose at master · ailia-ai/ailia-models(Image from…github.com
3D骨格検出
3D骨格検出は、画像から3Dのキーポイントを計算します。3Dの骨格検出はデータセットのカメラパラメータなどに強く依存しているモデルが多く、実用的なモデルはMediaPipeのモデルとなります。
BlazePoseFullbody
Googleの開発したモデルで、Z値を含む3Dの骨格を取得可能です。Z値はローカル座標です。M1 Mac + ailia SDKでの参考推論速度は一人当たり59.5msです。

MediaPipeWorldLandmarks
Googleの開発したモデルで、メートル単位のワールド座標での3Dの骨格を取得可能です。M1 Mac + ailia SDKでの参考推論速度は一人当たり175.25msです。

顔と手のキーポイント検出
画像から人物の顔と手のキーポイントを計算します。
FaceMesh
Googleの開発したモデルで、顔の896点のキーポイントを取得可能です。従来のモデルと、Attentionを使用した新しいモデルを選択可能です。M1 Mac + ailia SDKでの参考推論速度は一人当たり、通常モデルで17.0ms、Attensionモデルで98.0msです。

Image from https://pixabay.com/photos/person-human-male-face-man-view-829966/
BlazeHand
Googleの開発したモデルで、手の位置と、手のキーポイントを取得可能です。M1 Mac + ailia SDKでの参考推論速度は11.75msです。

Image from https://pixabay.com/photos/stop-no-photo-no-photographing-hand-565609/
MediapipeHolistic
BlazePose、FaceMesh、BlazeHandを使用して、骨格・顔・手のキーポイントをまとめて取得します。

出典:https://colab.research.google.com/drive/1uCuA6We9T5r0WljspEHWPHXCT_2bMKUy
detectorオプションを付与することで、複数人検知が可能です。
$ python3 mediapipe_holistic.py --detector
道路検出
道路検出は、画像から道路の領域をセグメンテーションします。
RoadSegmentationAdas
Intelの開発したモデルで、日本の道路でも高精度に走行可能領域と車線を検知可能です。M1 Mac + ailia SDKでの参考推論速度は43.5msです。

Image from https://www.pexels.com/ja-jp/video/854669/
不良検知
不良検知は、正常品の画像から学習し、不良箇所の領域をセグメンテーションします。
PaDiM
200枚程度の正常品の学習でデータの分布を作成し、共分散行列によるマハラノビス距離で不良検知を行えるモデルです。特徴抽出にResNetを使用します。M1 Mac + ailia SDKでの参考推論速度は379.25msです。うち、ResNet18の処理時間が6ms、EmbeddingVectorsの取得が40ms、マハラノビス距離の計算が333msです。

Image from MVTec AD datasets https://www.mvtec.com/company/research/datasets/mvtec-ad/
PaDiMでは、axで独自に開発したGUIによる実行も可能です。Train imagesで正常品画像を与え、Test imagesで不良画像を与え、Trainボタンを押して学習したあと、Testボタンを押すことで、不良検知の結果を取得することが可能です。

PaDiM GUI
GUIの実行には下記のコマンドを使用します。
$ python3 padim_gui.py
背景切り抜き
背景切り抜きは、画像から前景部分をセグメンテーションし、前景を切り出します。
U2Net
画像から背景を切り抜けるモデルです。人に限らず、安定して背景分離を行うことが可能です。M1 Mac + ailia SDKでの参考推論速度はU2Netで47.5ms、U2NetP(-a small)で24.0msです。

Image from https://github.com/NathanUA/U-2-Net/blob/master/test_data/test_images/girl.png
compositeオプションを付与すると、背景を切り抜いたPNGを生成することも可能です。
$ python3 u2net.py --input input.png --savepath output.png --composite
RemBG
U2Netの出力から、TRIMAP(背景、中間、前景の3値を持つ画像)を作成し、AlphaMattingによって高精度化するモデルです。U2Netに後処理を加えることで、高精度化が可能です。M1 Mac + ailia SDKでの参考推論速度は511.75msです。うち、U2Netの処理時間は50.25msです。

Image from https://github.com/danielgatis/rembg/blob/main/examples/animal-1.jpg
深度推定
震度推定は、画像から奥行きを示すデプスマップを計算します。
Midas
単眼の画像から、奥行きを推定するモデルです。複数のデータセットを混ぜて学習しており、高い汎化性能があります。M1 Mac + ailia SDKでの参考推論速度は60.5msです。

Image from kitti dataset http://www.cvlibs.net/datasets/kitti/raw_data.php
OCR
OCRは、画像から文字を読み取ります。
PaddleOCR
Baiduの開発した日本語も認識できるリアルタイムOCRモデルです。CRAFTを使用して文字の位置を検知し、検出した文字を読み取ります。また、日本語に対しては、axで独自に学習した高精度サーバモデルも使用可能です。M1 Mac + ailia SDKでの参考推論速度は2667msです。うち、文字の位置の検出に148ms、54単語の方向の検出に437ms、54単語の読み取りが1398msです。文字の方向と読み取りの処理時間は、単語数に比例します。

from https://github.com/PaddlePaddle/PaddleOCR/tree/dygraph/doc/imgs
PaddleOCRでは、axで独自に学習した日本語向けの高精度モデルも使用可能です。
$ python paddleocr.py -i input.png -c server
音声認識
音声認識では、音声ファイルやマイクから文字起こしや個人識別を行います。
Whisper
OpenAIが開発した日本語を含む99言語の文字起こしを行える音声認識モデルです。音声ファイルを入力として、テキストを出力可能です。680000時間という膨大な音声データから学習することで、日本語を含む99言語で、高精度な音声認識を実現しています。
AutoSpeech
声から同一人物判定を行える音声認識モデルです。声から特徴ベクトルを取得し、特徴ベクトル同士の距離計算を行うことで、同一人物判定を行います。Whisperと合わせて使用することで、話者分離に利用することができます。
ailia MODELSについて
セットアップ
ailia MODELSのセットアップ方法については、下記のチュートリアルを参照してください。
ランチャー
ailia MODELSにはランチャーが含まれており、任意の画像や動画に対して簡単にAI処理が可能です。
python3 launcher.py

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