作成者 :(株)クラスキャット セールスインフォメーション
作成日 : 01/17/2019
ClassCat® TF/ONNX Hub とは
「ClassCat® TF/ONNX Hub」はクラスキャットが提供する実用性の高い機械学習モデルのレポジトリです。各モデルは TensorFlow 固有フォーマットと ONNX フォーマットの両者で提供されます。 [ClassCat® ONNX Hub 詳細]
- ONNX (Open Neural Network Exchange) は深層学習モデルのためのオープンなフォーマットで、異なるオープンソースの深層学習フレームワーク間の相互作用を可能にします。
「ClassCat TF/ONNX Hub」で提供されるモデルについてはクラスキャットが検証の上で仕様を公開致しますので、ユーザ企業は希望するモデルを自由に選択することができます。更に (ユーザ企業の保持するデータセットによる) 再調整も含めて配備・実運用するために必要なトータルサポートを提供致します。
◆ 本ページでは提供モデル群として GAN モデル (Part II) – StarGAN, ACGAN を紹介致します。
StarGAN は顔の表情変換を可能にするモデルとして知られています。
GAN とは
GAN は敵対的生成ネットワーク (Generative Adversarial Network) と呼称される生成モデルの一種で、深層学習におけるホットな領域の一つとして様々なモデルやその応用が活発に研究されています。
GAN は 2014 年に Ian Goodfellow 氏により創案されペーパー Generative Adversarial Nets で最初に紹介されました。
基本的には 2 つのネットワーク generator と discriminator から構成され、訓練データセットの分布をネットワークに学習させるための仕組みです。その分布から新しい有用なデータを生成することができます :
- generator のジョブは訓練画像のように見える ‘fake’ 画像を生むことです。
- discriminator のジョブは画像を見てそれが real 訓練画像か (generator からの) fake 画像かを出力することです。
訓練の間、generator はより良い fake を生成することにより絶えず discriminator を出し抜こうとします。
一方、discriminator はより良い探偵として機能し、real 画像と fake 画像を正しく分類するために動作しています。
このゲームの均衡は、generator が訓練データに直接由来するかのように見える完全な fake 画像を生成しているときに、discriminator が generator 出力について real か fake か常に 50% の信頼度で推測する状態になることです。
GAN モデル (Part II) の紹介
Part II では以下の GAN モデルを紹介します :
Part I については こちら を参照してください。
StarGAN
StarGAN は顔の表情変換で有名になった、画像変換を主目的とする GAN の一種です。
Cycle GAN では 1 組のドメイン間の画像変換を扱いましたが、StarGAN ではマルチ・ドメイン間の変換を統合的に 1 つのモデルで処理することができます (ここでドメインは同じ属性を持つデータセットを指します)。
“Star” はアーキテクチャのトポロジーがスター型であることを表しています。ドメイン間を総て交差させる非効率性を回避しています。
マルチ・ドメインを処理するためにはクラス (属性) 情報や ACGAN (Auxiliary Classifier) のテクニックを利用しています。
オリジナルのペーパーでは RaFD (Radboud Faces Database) データセットで学習したモデルを CelebA データセットに適用してもいますが、ここでは CelebA だけをを利用したモデルを紹介します。
CelebA ではセレブ (有名人) の画像を多数含むとともに、アノテーションとして属性が示されます。このデータセットでは喜怒哀楽などの表情変換のサポートは限定的ですが、髪の色などの他の属性を多く含みます。
髪色の変換
髪色の変換は比較的容易です。
左端の画像が元の入力画像で順次、ブロンド・黒髪・茶髪に変換しています :
眼鏡の着脱
眼鏡の装着も容易です :
![]() |
![]() |
(眼鏡をかけている元画像は少ないですが) 眼鏡をはずした画像も生成できます :
老若変換
より若く画像を変換することもできます :
![]() |
![]() |
逆に年齢を高く変換することもできます :
![]() |
![]() |
笑顔
普通の表情を笑顔に変換することができます :
![]() |
![]() |
逆に笑顔を普通の表情に変換することもできます :
![]() |
![]() |
魅力的に
(どういう規準でアノテーションを作成したのか分かりませんが、) 魅力的に変換することもできます :
![]() |
![]() |
![]() |
![]() |
ACGAN
StarGAN の説明で ACGAN (Auxiliary Classifier) に言及しましたので簡単に説明しておきます。
ACGAN は DCGAN のような (画像変換を目的としていない) 生成モデルです。
但しノイズ (あるいは潜在変数) だけを入力とする DCGAN とは違い、クラス情報を利用します。Conditional GAN や InfoGAN と同系統の GAN になります。
Generator への入力にクラス情報を与え、Discriminator にはクラスを識別させます。
ACGAN モデルで CIFAR-10 画像を生成してみます。元画像が小さく粗いので小動物は分かりにくいですが、上から飛行機、自動車、鳥、ネコ、鹿、犬、カエル、馬、船、トラックの画像です :
以上