【Coursera】Deep Learning Specialization - Course 4: Week4 Face recognition & Neural style transfer
今回はWeek4です.前回の記事はこちらです. smygw.hatenablog.com
Face Recognition
What is face recognition?
- デモでは顔の判定と生きた人間かどうかの判定を同時に行っていたが、今回は顔の判定に焦点を当てる.
- 顔の判定には顔検証(Face verification)と顔認証(Face recognition)の2種類がある.
- 前者は画像とラベルを入力し、正解かどうかを出力する.(の問題)
- 後者は画像のみを入力し、人のデータベースに正解があればそのラベルを出力する.(の問題)
- 後者の方が難しく、前者に比べて正確さがより求められる.
One Shot Learning
- 1枚の顔写真から個人を判断できるように学習することをOne shot learningというが、これまでと同じようにSoftmaxを出力層としたCNNで学習することは出来ない.
- 1枚のデータだけではロバストなネットワークを学習できないから.
- 新しい人物をデータベースに加える際に出力層のサイズが変わり、毎回学習し直す必要があるから.
- 2枚の画像の類似関数(Similarity function) を計算することで、ハイパーパラメータ以下であれば「同一」であり、そうでなければ「異なる」と判断できる.
- Face recognitionへ応用する際も、全ての人物に対して類似度を計算することで判断できる.
Siamese Network
- Siamese networkでは、Softmax層は組み込まずにFC層の出力を用いて適切な類似関数になるように学習する.
- FC層の出力をとすると、 のように定義される.
Triplet Loss
- ある人物画像(Anchor)に着目したときに、同一人物の画像をPositiveとよび、異なる人物の画像をNegativeとよぶ(この3つの組み合わせがTripletの由来である.)
- それぞれ省略してと表記する.
- 満たすべき式は
- ハイパーパラメータはマージンを表し、のように常に同じ出力になるのを防ぐために導入している.
- これをトレーニングデータ全体でとるため、と書ける.
- のセットをどのように選べばよいか?
- ランダムに選んでしまうと高い確率でが大きくなってしまい、効率よく学習できない.
- となるような学習するのが難しいを選ぶ必要がある.
- 詳しくはFaceNetを読もう(ちなみにこの論文がきっかけでHogeNet, Deep Hogeという命名が流行るようになった.)
Face Verification and Binary Classification
- Triplet lossを計算する代わりにロジスティック回帰を用いて分類問題として扱う方法もある.
- データベースの各画像についてを事前計算しておくことでリアルタイムの計算コストが減る.
- これはTriplet lossの方法でも同様のことが言える.
Neural Style Transfer
What is neural style transfer?
- コンテンツ画像とスタイル画像の2つの画像を入力し、コンテンツを維持したままスタイル画像がもつスタイルで描かれた画像を出力(Generate)することをNeural Style Transferとよぶ.
- それぞれと表記する.
What are deep ConvNets learning?
- 層が深くなるにつれてどんなことをしているのかを可視化する.
- ユニットの出力が最大になる画像について調べる.
- 浅い層ではエッジや色など比較的シンプルな特徴を計算している.深くなるにつれてテクスチャ、物体の一部など複雑な特徴の計算を行う.
Cost Function
Content Cost Fucntion
- 中間層に焦点を当ててコンテンツのコスト関数を定義すると、と書ける.
- が小さいとコンテンツ画像を忠実に再現してしまうし、大きいと物体認識を行うだけになってしまう.そのため、中間層におけるとの出力を比較する.
- VGGなどの訓練済みモデルを用いる.
Style Cost Function
- 中間層におけるチャンネル間の相関をスタイルと定義する.
- 特定のパターン(テクスチャや色など)がある領域が異なるパターンも持つ場合に相関が高いと言える.
- Gの相関をSが持つ相関に近づける.
- チャンネル間の相関をスタイル行列を使って表す.
- ある層の位置における出力をとすると、
- スタイル行列は代数学的にはGram matrixと呼ばれる
- のスタイル行列をとすると、と書ける(正規化定数はあまり重要じゃない.)
- 最終的に計算すべきコスト関数は