GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

davidsandberg

facenet – Tensorflowを使用した顔認識

投稿日:

Tensorflowを使用した顔認識

Tensorflowによる顔認識

これは、 「FaceNet:顔認識とクラスタリングのための統合された埋め込み」の論文で説明されている顔認識装置のTensorFlow実装です。 このプロジェクトでは、オックスフォードのビジュアルジオメトリグループの論文「ディープ ・フェイス認識」と同様に、 「ディープ・フェイス認識のための差別的特徴学習アプローチ」という論文のアイデアを使用しています。

互換性

コードはUbuntu 14.04の下でTensorflow r1.2を使ってPython 2.7とPython 3.5でテストされています。 テストケースはここにあり、結果はここにあります

ニュース

日付 更新
2017-05-13 古いノンスリムモデルを削除しました。 最後のボトルネックレイヤーをそれぞれのモデルに移動しました。 センターロスの正規化を修正しました。
2017-05-06 自分の画像に分類子訓練するためのコードを追加しました。 facenet_train.pyをtrain_tripletloss.pyに変更し、facenet_train_classifier.pyをtrain_softmax.pyに変更しました。
2017-03-02 128次元埋め込みを生成する事前学習モデルが追加されました。
2017-02-22 Tensorflow r1.0に更新されました。 Travis-CIを使用した継続的な統合を追加しました。
2017-02-03 訓練可能な変数のみがチェックポイントに格納されているモデルを追加しました。 したがって、これらはかなり小さい。
2017-01-27 MS-Celeb-1Mデータセットのサブセットに訓練されたモデルを追加しました。 このモデルのLFW精度は約0.994です。
2017-01-02 Tensorflow r0.12で実行するコードに更新されました。 Tensorflowの古いバージョンで動作するかどうかはわかりません。

事前訓練を受けたモデル

モデル名 LFW精度 トレーニングデータセット 建築
20170511-185253 0.987 CASIA-WebFace インセプションResNet v1
20170512-110547 0.992 MS-Celeb-1M インセプションResNet v1

インスピレーション

このコードは、 OpenFaceの実装に大きな影響を受けています。

トレーニングデータ

CASIA-WebFaceデータセットはトレーニングに使用されています。 このトレーニングセットは、顔検出後の10個の575個のアイデンティティにわたる合計453個の453個の画像からなる。 トレーニング前にデータセットがフィルタリングされていれば、パフォーマンスの改善が見られました。 これがどのように行われたかについてのさらに詳しい情報が後で出てくるでしょう。 最高性能のモデルは、 MS-Celeb-1Mデータセットのサブセットで訓練されています。 このデータセットはかなり大きく、ラベルノイズも大幅に多いため、このデータセットにデータセットフィルタリングを適用することが重要です。

前処理

MTCNNを使用したフェイスアライメント

上記のアプローチの1つの問題は、Dlib顔検出器がいくつかの難しい例(部分的なオクルージョン、シルエットなど)を失っているようです。 これにより、トレーニングが「容易」に設定され、モデルが他のベンチマークで悪化します。 これを解決するために、他の顔ランドマーク検出器がテストされている。 この設定で非常にうまく動作することが証明された1つの顔のランドマーク検出器はマルチタスクCNNです。 Matlab / Caffeの実装はここで見つけることができ、これは非常に良い結果で顔の位置合わせに使用されています。 MTCNNのPython / Tensorflow実装がここにあります この実装はMatlab / Caffe実装には同じ結果を与えませんが、パフォーマンスは非常に似ています。

ランニングトレーニング

現在のところ、最良の結果は、 センター損失を追加してモデルを分類子として訓練することによって達成されます モデルを分類子として訓練する方法の詳細は、Inception-ResNet-v1のClassifier trainingページにあります。

事前訓練を受けたモデル

インセプション – ResNet-v1モデル

いくつかの事前トレーニングされたモデルが用意されています。 彼らはInception-Resnet-v1モデルでsoftmaxの損失を使用して訓練されています。 データセットはMTCNNを使用して整列されています

パフォーマンス

モデル20170512-110547の LFWの精度は0.992±0.003です。 テストの実行方法の説明は、LFWでの検証ページに記載されています。







-davidsandberg
-, , , , , ,

執筆者: