LoginSignup
2
6

More than 5 years have passed since last update.

TensorFlow(keras)の使い方

Last updated at Posted at 2018-11-15

まえがき

今回の利用するプログラムはGitHubのプログラムを使います。
このプログラムは、リアルタイムでの性別判別などを行うことができます。
入力データは、ビデオファイルや画像、webカメラの3つが使えます。

主に学習させたmodelの使い方を解説します。

数式なものは触れずに、kerasの使い方になります。

必要なライブラリーのインストール

pip3 install tensorflow
pip3 install cvlib
pip3 install opencv-python
pip3 install matplotlib

STEP1 教師データの配置

教師データとなる、画像データを以下のようなディレクトリ構成で作成する。
Imageフォルダの場所はどこでもいいです。
画像サイズもバラバラで大丈夫です。

Image
├ man
├ woman

STEP2 学習させる

モデルを学習させるます。
その前に、1点だけ解説します。
train.pyの中
model.save(args.model)
で学習されたモデルを保存させています。args.modelのところの名前を変更していけば、
いろいろ試した結果を保存させておくことができるので、覚えておきましょう。
文字列で名前を指定する場合は拡張子が「.h5」になります。
例) model.save('gender_detect_model.h5')

では、ターミナルでtrain.pyのあるディレクトリに移動します。
以下のコードを打てば動くはずです。

 python train.py -d 先程作ったフォルダのパス

STEP3 モデルを使ってみる

今回の記事のメイン部分にです。
まずは、先程保存したmodelを読み込みます。
ここで、少しプログラムに変更を加えます。
gitからクローンしてきた状態ですと、学習済みモデルをawsからとってきているためです。
下記の部分を消します。

detect_gender_webcam.py
# download pre-trained model file (one-time download)
dwnld_link = "https://s3.ap-south-1.amazonaws.com/arunponnusamy/pre-trained-weights/gender_detection.model"
model_path = get_file("gender_detection.model", dwnld_link,
                     cache_subdir="pre-trained", cache_dir=os.getcwd())

そのあとに、モデルの読み込みの部分を変更していきます。

detect_gender_webcam.py
# load model
model = load_model(model_path)

#↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓以下のように変更↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
# load model
model = load_model('先程保存したモデルのパス')

これで、モデルの読み込みは終了です。
実行すれば動きますが、少し解説していきます。

まずは、Kerasではないですがopencvのところです。
先程のload_modelの下にcv2.VideoCaptureがあると思います。
その引数が0になっています。0はパソコンで設定されているwebカメラのことをさします。
引数に、ビデオのパスを指定すればビデオでも使えます。使える拡張子は、自分で調べてください。
aviとmp4は使えることを確認済みです。
例) video = cv2.VideoCapture('test.mp4')

VideoCapture~predictまでの大まかな流れは以下のとおりです。

ビデオをフレームごとに切り出す
    ↓
フレームをcvlibのdetect_faceにかけ、顔検出
    ↓
検出した顔を矩形で囲む
    ↓
顔の部分を切り出し、サイズなどを変更

次に、切り出した顔画像を使い、性別判断させます。

detect_gender_webcam.py
model.predict(予測させたいもの)

返り値は、今回sigmoid関数を利用しているので確率です。
例) [0.4, 0.6] (男性:女性)

そのあと、テキストを表示する処理等を行い最後に
cv2.imshow()
を行えば、結果をみることができます。

実行方法
qで終了できます。

 python detect_gender_webcam.py

まとめ

基本的に、予測をするときは.predictでできます。

2
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
6