使って、生成される顔画像の向きをコントロールしてみます。サンプルプロジェクトがあります。いう働きをしているのでしょうか。本物と間違わせるような偽物を作成することを学習します。本物と偽物を間違えないように学習します。偽物だと分かっちゃう様な気もしますよね。何も学習してませんから、砂嵐が来ようが、本物が来ようが分かりゃしません。そのうち、両者の切磋琢磨が始まる、というわけです。Imageが自動生成されるモデルが完成します。側の基本構造がこれです(実際には、これにラベル付与機能が追加されます)。して全結合層につなげています。どのカテゴリーの画像を生成するか、コントロールするための工夫が加えられたモデルです。GANと呼ばれるモデルで、通常のGANはランダムノイズから画像を生成するため生成画像のカテゴリーを制御することはできないのですが、ラベルを付与して条件付きモデルとすることでこれを可能にしています。ラベル付与機能を見てみましょう。赤で囲んだ部分が、ラベルを生成する部分です。それに対応して特定の要素だけを1にし、残りは全部0にした10次元ベクトルを作成します。掛けて行くと、7×7、14×14、28×28のサイズの画像が10枚づつ作成されます。各10枚の画像は、いずれも10枚の内1枚だけが1で埋め尽くされ(真っ黒)、残り9枚は0で埋め尽くされています(真っ白)。Affine、Deconvolution、Convolutionでラベルとして機能します。7×7サイズの画像64枚と7×7サイズのラベル10枚が入力されます。ラベルの5枚目が1で埋め尽くされている(真っ黒)ならば、yラベル=4という条件で、7×7サイズの画像64枚を学習することになります。顔画像の向きをコントロールするこの画像生成のカテゴリーをコントロールする機能というのは、良く考えるとかなりのポテンシャルを持っていて、色々な応用が考えられると思います。今回は、顔画像を生成する時に、右向きか、左向きか、正面か、をコントロールすることをやってみます。画像収集してOpenCVで顔画像を切り取り(詳細はこのブログ参照)、その後顔の向きによって3種類に分類しました。やってみると、この顔の向きによって分類するというのは結構手間で、3種類ともほぼ同数にしたいという事情もある中、結果的にはかなりアバウトなものとなりました。右向き2,400枚です。^^;左向き2,400枚です。;正面2,400枚です。どこまでを正面とするかは、悩みます。機能で、データセットを作成します。学習用:評価用=8:2に振り分けました。EDIT画面は、入出力データをモノクロ28×28からカラー28×28に変更するだけです。バッチ64、エポック100で学習をスタートします。2時間51分で学習完了です。上昇の一途を辿ったので、少し心配でしたが、この後評価したら顔画像はちゃっと生成されました。全体的に見るとまだ不十分な部分もありますが、概ねこんな形でラベルの指示に沿った顔の向きで画像が生成されました。今回は、カテゴリーとして顔の向きを選びましたが、顔だけで言っても、「表情」でカテゴリーに分けするとか、「アクセサリー(メガネ、サングラス、帽子など)」でカテゴリー分けするとか、色々考えられます。カテゴリーの選び方によっては結構面白い使い方ができそうです。コメントをキャンセルメールアドレスが公開されることはありません。date*日本語が含まれない投稿は無視されますのでご注意ください。メガネ女子のメガネを取った顔を推定するRECOMMENDこちらの記事も人気です。一目惚れして、ディープラーニングを始めました。初心者の試行錯誤をブログにしています。