「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
- 従来は特徴量を設計する必要があった(特徴抽出+分類器)。
詳細 †
体系 †
目的軸 †
ステップがある
時間軸 †
次元軸 †
- 2D:画角の影響を受ける。
- 3D:画角の影響を受けず汎用的だが、難易度が高い。
手順 †
前処理 †
対象認識 †
対象領域を切り出す。
情報抽出 †
対象が何かを認識する。
事前学習 †
対象にラベル付けして学習する。
事例適用 †
人画像に対して適用する。
アルゴリズム †
物体識別 †
画像認識中の物体に関する画像認識(≒ 分類)、物体認識とも。
- 注
ラベルが追加されていくオペレーションには向かない。
(店舗における商品分類など、新商品の追加)
- 古くは、
- テンプレートマッチング
- 特徴抽出器
HOG特徴量を抽出しSVMを用いて分類
- DNN以降
- CNN
- CapsNet?
・CNNのプーリングは様々な情報、特に特徴間の空間的な関係を失う。
・CapsNet?はニューロンがスカラーを出力するのに対しベクトルを出力する。
シーン識別 †
画像認識中のシーンに関する画像認識(≒ 分類)、シーン認識とも。
- 2015、CNNを用い「シーン」(つまり映像の意味)を認識させることに成功。
- 例えば、「この写真は、公園 / 夜景 / 遊園地」など。
物体検出 †
制約を置かない実世界の画像に対する認識タスク
- 物体が
- 画像中のどの位置にあるか?(≒ 検出)
- 事前に与えられたどのラベルに属するか?(≒ 物体識別 / 分類)
- 注
- 同様に、ラベルが追加されていくオペレーションには向かない。
- あくまで画像中の位置(バウンディングボックス)しか示さない。
- Sliding window approach時代
- 画像の左上から右下にかけてウィンドウをスライドして
- 画像のすべての領域をウィンドウで探索し検出して
- そして逐一ウィンドウ内の物体に対して物体識別を行う手法
- Region proposal method + CNN時代
- 画像中から物体らしさの高い領域を見つけるRegion proposal methodで提案領域を検出。
- 提案領域をCNNの入力として物体識別を行う2段構え
- 全部の提案領域をCNNで処理するため時間がかかる。
- End-to-end時代
- Region proposalをDNNの一レイヤとして組み込んだEnd-to-endな物体検出手法
- Faster R-CNNが初めてこのend-to-endの物体検出手法を実装
- R-CNN(Regional CNN)
Region proposal method + CNN時代、物体検出タスクと物体識別タスクを順次行う。
- Fast R-CNN
中間の時代(クラス分類とBBox回帰だけEnd-to-end)
- Faster R-CNN
End-to-end時代、物体検出タスクと物体識別タスクを順次行う。
- 画像を、学習済みVGG16などに入力し、畳み込み層の最後の出力を、特徴マップとして出力(図中①)。
- 次に、物体の候補領域を見つけるAnchor(格子点のようなもの)を作成し、Anchorを中心に、
ハイパーパラメタで指定した数、Anchor boxes(矩形≒四角の領域)を作る。
- RPN(Resion Proposal Network)層で、候補領域に、
3*3 Conv → 1*1 Convを行い、以下の2項目を出力&学習(図中②)
・Ground truth(認識対象の物体)とAnchor boxesのIoUを計算し物体か?背景か?
・Ground truthとAnchor boxが、どのくらいズレているのか?
- 物体の候補領域をRoI Poolingで固定長ベクトルにする(図中③)。
- 固定長ベクトルを全結合層に2回通し最後に、以下の2項目を出力&学習(図中④)
・クラス分類用
・矩形ズレ回帰用
#ref(): File not found: "FasterR-CNN.png" at page "画像処理とコンピュータビジョン(AI)"
| #ref(): File not found: "FasterR-CNN2.png" at page "画像処理とコンピュータビジョン(AI)"
|
- YOLO(You Only Look Once)
End-to-end時代、物体検出タスクと物体識別タスクを同時並行で行う。
- 物体検出タスクが、図5
- 物体識別タスクが、図3, 4
図1 |
#ref(): File not found: "yolo1.png" at page "画像処理とコンピュータビジョン(AI)"
|
入力画像 |
図2 | 図3 | 図4 |
#ref(): File not found: "yolo2.png" at page "画像処理とコンピュータビジョン(AI)"
| #ref(): File not found: "yolo3.png" at page "画像処理とコンピュータビジョン(AI)"
| #ref(): File not found: "yolo4.png" at page "画像処理とコンピュータビジョン(AI)"
|
グリッドセルに分割 | それぞれのグリッドセルでクラス予測 | グリッドセルのクラス |
図5 | 図6 | 図7 |
#ref(): File not found: "yolo5.png" at page "画像処理とコンピュータビジョン(AI)"
| #ref(): File not found: "yolo6.png" at page "画像処理とコンピュータビジョン(AI)"
| #ref(): File not found: "yolo7.png" at page "画像処理とコンピュータビジョン(AI)"
|
BBoxとConfidenceを推測 | 図4, 5を合わせ信頼度スコアを得る | 信頼度スコアに基づいて判断 |
- SSD(Single Shot Detector)
End-to-end時代、物体検出タスクと物体識別タスクを一度の演算にまとめて行う。
領域検出 †
背景の切り出しなどに利用する技術
- 物体が
- 事前に与えられたどのラベルに属するか?
- 画像中のどの領域にあるか(ピクセル単位で)?
- セマンティック・セグメンテーション
- 物体領域を画素単位で切り出し、各画素にクラスを割り当てる。
- 物体が重なっている場合の区別(境界線 / 輪郭線を描く)に高密度な予測が必要。
- インスタンス・セグメンテーションより不定な形状を検出できる。
- FCN (Fully Convolutional Network)
- 全ての層が畳み込み層、全結合層を有しない
- 画素ごとにラベル付した教師データを与えて学習
- 未知画像も画素単位でカテゴリを予測する
- 入力画像のサイズは可変で良い
特定物体検出 †
物体検出+領域検出
- 物体が
- 画像中のどの位置にあるか?
- 事前に与えられたどのラベルに属するか?
- 画像中のどの領域にあるか(ピクセル単位で)?
- インスタンス・セグメンテーション
- 物体検出+領域検出を統合し、
- 同一クラスに属する物体毎の区別(境界線 / 輪郭線を描く)ができる。
- Google:インスタンス・セグメンテーションと組み合わせたパノプティック・セグメンテーション
- YOCLACT
ワンステップでインスタンス・セグメンテーションを行う。
- Mask R-CNN
- 物体検出のFaster R-CNNにセグメンテーションを加えインスタンス・セグメンテーションを実現
- 「物体(インスタンス)らしさ」が閾値以上の領域毎に最も確率が高いクラスでセグメンテーション
- Fast/Faster R-CNNのRoI Poolingでは解像度の低下で領域とずれるので、
Mask R-CNNでは新しい手法 RoI Align を導入すると補間処理によって
固定サイズでRoI特徴ベクトル化ができマスク推定の精度を上げられる。
姿勢推定 †
人や関節位置を検出し姿勢位置を出力
- 2D
- 2Dで出力
- ボトムアップ:関節点から人を構成
- トップダウン:人を検出してから関節点を推定し人を構成
- 3D
- 3Dで出力
- 画角の影響を受けない。
- 速度と精度が課題。
トラッキング(物体追跡) †
深層学習の画像認識(CNN)で交差時も見失わなくなる。
ロボット・ビジョン †
活用例 †
パターン認識 †
物体識別、物体検出、領域検出を専門的に(部位に特化して)行う系
- 顔検出(ベースの技術)
- 顔認識
- 表情認識(2D, 3D顔特徴点抽出)
- 顔向き推定、視線推定(2D)
- 瞬き検知(動画、眠気・集中力の検知・測定)
- 顔認証(顔特徴点抽出と高速マッチング)
- 感情推定(学習させるので、プロが見ても解らない事は解らない)
- 性別・年齢推定(あくまで見た目でしかない、人種の差もある)
- 医療診断
- がん診断
- CTやMRIの診断
- グラム染色による細菌の分類や同定
OCR・文書構造化 †
- 言語識別
- テキスト抽出
- 文字起こし
- OCR文字校正
エンリッチメント系 †
画像・映像アノテーション
※ Googleフォトの機能など。
姿勢推定 †
Kinect等を使用した動作計測、解析
人物行動分析 †
自動車の自動運転 †
- カメラやレーダー、LIDAR、超音波センサー、GPS等で周囲の環境を認識し、行き先を指定するだけで自律的に走行する。
- 磁気マーカー(磁気ネイル)を埋込方式はコストや、積雪や除雪の問題から普及していない。
- 一般人が公道で走行できる(自動運転レベル4・5の)自動運転車は、現在の段階では市販されていない。
- レベル0:自動運転なし
ドライバーが常にすべての主制御系統(加速、操舵、制動)の操作を行う。
- レベル1:運転支援
加速、操舵、制動のいずれか一つをシステムが支援的に行う状態。
- レベル2:部分運転自動化
同時に複数の操作をシステムが行う状態。
- レベル3:条件付き運転自動化
限定的な環境・状況で自動運転(機能限界時は、ドライバーに権限移譲)。
- レベル4:高度自動運転
レベル3は権限移譲に備える必要があるが、レベル4では不要
- レベル5:完全自動運転
考え得る全ての状況下及び、極限環境で無人運転。
- 実用化に向けての2つのアプローチ
- 段階的発展のアプローチ
- 挑戦的アプローチ(レベル3以上を目指す
- 欧州の都市:ヘルシンキ、Easymile EZ10、Whim
- アメリカにおける「3大州」は隣り合っている
- カリフォルニア州:有料での無人による自動運転車配車サービスを許可
- アリゾナ州:自動運転タクシーの商用サービスをスタート
- ネバダ州:米国初のレベル3自動運転車
ライブラリ †
オープンソース †
プロダクト †
サービス †
顔認識 †
まだまだ、精度は低いもよう。
- スマホネイティブ組込
まだ、笑顔情報程度しか取得できないもよう。
- Google Face API
正確な名称が不明だが、Google Play servicesの、
Face Detection とか、Face API などと呼ばれている。
画像内の顔が笑顔であるかどうかを0から1の数値で取得できるもよう。
- Swift Core Image(iOS)
hasSmileプロパティで true or false のデータとして取得するもよう。
- Windows.Media.FaceAnalysis?(Windows)
- クラウドサービス型
AIと連動しており、もう少々、高度なことができるもよう(年齢・性別の推定など)。
- Microsoft Cognitive Services - Face API and Emotion API
- IBM Bluemix の AlchemyAPI Face Detection
IBM に統合された AlchemyAPI 社の人工知能 API が IBM Bluemix で公開されている。
... †
ソリューション †
... †
参考 †
Wikipedia †