減損現実(DR)の実現へTweetPocketはじめにこにちは、次世代システム研究室のB.M.Kです。この数年、深層学習の普及により深層学習を用いたセマンティックセグメンテーションの研究が盛んになってきました。減損現実)にもよく利用されます。今回は深層学習を用いたセマンティックセグメンテーションの紹介、そしてモバイル上(iOS)の実証実験の結果を共有したいと思います。DR)とは実際に存在しないものを現実に重ねて見せる拡張現実(AR)とは逆に実際にあるはずものを無かったことにする(減損する)技術と言います。減損現実を用いて画像修復やビデオ又はカメラで取ったストリームの映像にて不要なオブジェクト等をリアルタイムに消したりすることがより簡単に実現できるようになりました。減損現実は拡張現実と結合することもでき、その結合による多くの用途が生まれます。例として住宅リフォームやリノベーション事業にて部屋の一部又は全部のものを減損現実で消しながら拡張現実(AR)を利用してバチャールなものを差し替え、再配置等を実施し、プレビューすることができます。これによりリフォームを行う前にリフォーム後の状態の確認ができ、新家具の購入やリフォームの決断等を促進することへの貢献を期待できます。減損現実の実現に向けて主なステップ減損現実を実現するために、主な三つのステップを経過します。セマンティックセグメンテーションを行い、次にプクセルレベルの削除の実施、そして最後に画像修復(背景復元等)を行うことになります。三つのステップの中、セマンティックセグメンテーションが最も重要なステップだと言え、今回はマンティックセグメンテーションを中心に紹介したいと思います。セマンティックセグメンテーションとは領域分割という意味で、入力画像のプクセルレベルでカテゴリ分類する手法です。例として図1にて切り取った10×10ピクセルの範囲でどのピクセルがどのカテゴリ(皿、机)に配属するか明確にすることはセマンティックセグメンテーションのアウトプットです。深層学習(ディープラーニング)がコンピュータビジョン分野に普及する前にセマンティックセグメンテーションを行う際にはテクストンフォレストのようなものを使用していました。初期のディープラーニングの一般的なアプローチの1つに、パッチ分類があります。大きな変化を示すのは2014年バーグレーのLongらによる全増畳み込みニューラルネットワーク(FCN)の発表でした。全結合層を使わない畳み込みニューラルネットワーク(CNN)アーキテクチャの利用というFCNの特徴が普及しました。出典セグメンテーションのためにCNNを利用する際の主要な問題の1つはプーリング層です。プーリング層によって特徴の強調、コンテキストの集約そして計算量の減少に役に立ちますが、”位置”情報が破棄されます。セマンティックセグメンテーションは正確なクラスマップの配置を必要とするため、”位置”情報の保存が必要になります。この問題に取り組むため、2つの異なるアーキテクチャのクラスが進化されました。1つ目は、エンコーダ・デコーダアーキテクチャです。出典エンコーダは特徴抽出及び分類を行う役割を持ち、FCNの特徴抽出の部分と同構成で、全連結層を持ちません。抽出した特徴マップと元画像のピクセル位置の対応関係をマッピングすることがデコーダの役割です。デコーダはエンコーダと連結して対称構造のようなネットワーク構成になります。FCNアーキテクチャでは、途中の各プーリング層の特徴マップをアップサンプリングの際に利用していましたが、そのために各特徴マップを一時的に保持する必要があり、メモリ効率が悪かったです。index)として記憶しておき、デコーダで記憶したインデクスだけを利用してアップサンプリングするのでメモリ効率を高めています。indexの記憶及び使用2つ目はDilated/Atrous畳み込みと呼ばれるものでプーリング層を使いません。間隔(Dilation)を変えて処理を行います。プが捉える空間領域を拡大します。用いる場合、画像サイズが小さくなり、情報の損失が生じます。畳み込み層を用いることで画像を極端に小さくすることなく情報を集約でき、広範囲の特徴を捉えることができます。フィルターの重みにレートというハイパーパラメーターで指定したゼロの数を入れてフィルターのサイズを拡張することができます。入れるゼロの数は以下の式で計算します。Dilated/Atrous畳み込み。出典DeepLab(V3)DeepLabはGoogleが作ったセマンティックセグメンテーション向け多層ニューラルネットワークアーキテクチャです。DeepLabは一般画像分類用のニューラルネットワークのアーキテクチャ(ResNet)のバックボーンの利用とDilated/Atrous畳み込みアーキテクチャを使用します。Pooling)というものを利用して複数のスケールでコンテキスト情報を同時に集約します。任意な入力画像のサイズとオブジェクトのマルチスケールの問題を解決することができます。VOC2012というデータセットを利用して学習します。Classes」の省略で画像認識用のデータセットです。20クラスのラベル付けがされています。DeepLabのモデルを学習させる際、学習データは以下のように画像の種類とフォーマットを用意する必要となります。1つのシーンについて2種類の画像を用意する必要です。元画像の中の識別したい領域を既定の色で塗りつぶした画像この2種類を1セットとして、複数セットの画像を用意してデータセットを構成します。DeepLabモデルを学習させる際の学習データ(元画像とラベル画像)画像のサイズは任意で良いですが元画像とラベル画像は同じサイズでなければなりません。元画像のフォーマットはjpegまたはpngでラベル画像のフォーマットはpngでカラー画像で良いです。読み込み時にモノクロに変換されます。2012既定の色で識別領域をマスクした画像を用意します。ラベル画像には無効色で物体の境界線が描かれていますが、必須ではないです。モバイル上(iOS)の実証実験DeepLabV3はTensorFlowで実装されたPC向けのモデルであるので、iOSに利用したい場合、iOSがサポートする深層学習フレームワーク(CoreML)の形式への変換は必要となります。CoreMLとは、Appleが提供している機械学習のフレームワークです。CoreMLはiOSのデバイス上で実行できる為、外部との通信をする必要はないかつデバイスのCPU、GPUを活用するので最大限のパフォーマンスが発揮できます。MLフォーマットに変換されたモデルです。Exchange)フォーマットを経由して行う方法です。それぞれの方法はサポートする機械学習フレームワークが違うので以下の図を参照して下さい。デモを作成するのに以下の環境とコンポーネントを使用しました。静止画像のセマンティックセグメンテーションまず、静止画像のセマンティックセグメンテーションの結果を見てみましょう。静止画像のセマンティックセグメンテーション1図11は非常に単純な入力画像とDeepLabV3でセグメンテーションを行った後の結果画像です。モデルのベンチマークテスト結果と同様に、画像内の人物と背景は綺麗に分離されています。静止画像のセマンティックセグメンテーション2次に図12の入力画像は、さまざまなオブジェクト(人物、テーブルなど)を含むより複雑な画像ですが、アルゴリズムは画像内のオブジェクトを正確に各カテゴリに分類しました。料理などの学習されていないものを分類しません。結果によると動的映像に対しても人物と背景等を綺麗に分類できました。セグメンテーションの結果をリアルタイムにレンダリングする際、スマホの処理性能により遅延が発生してしまいました。スマホの現状の性能でスマホ上リアルタイムにセマンティックセグメンテーションを行いながらARKitセクションを開始するのが困難であることを実験で分かりました。ARKitと結合できるようにいくつかの違うアプローチを検討しており、別の機会に共有します。まとめ今回、減損現実の実現に向けて深層学習を用いたセマンティックセグメンテーションの手法の調査と纏めをしました。その中、セマンティックセグメンテーション用の代表的な多層ニューラルネットワークアーキテクチャ(FCN、エンコーダデコーダ、Dilated畳み込み)を紹介しました。実証実験を行い、結果を考察しました。セマンティックセグメンテーションは多くの用途があり、今後のアルゴリズムの改善及びモバイル端末の計算処理能力の発展とともに実用の高いアプリが誕生することを期待できます。最後に次世代システム研究室では、アプリケーション開発や設計を行うアーキテクトを募集しています。アプリケーション開発者の方、次世代システム研究室にご興味を持って頂ける方がいらっしゃいましたら、ぜひ募集職種一覧からご応募をお願いします。