8
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Chainerのトレーニング済みimagenet modelの読み込みとテスト

Last updated at Posted at 2016-01-30

Chainerでトレーニングしたimagenet modelを読み込んでテストデータで評価したいです.環境はOS X(10.9.5 CPU), Chainer1.6.0, Python2.7.10です.
類似記事があるかもしれませんが5秒くらい探して見つからなかったので書きます,ご容赦ください.

モデルのトレーニング

まずモデルをトレーニングしないとテストできません.トレーニング方法については,http://hi-king.hatenablog.com/entry/2015/06/11/021144 などを参考に行って下さい.
ただし,↑のリンク先に付属しているコードをCaltech101からとってきた自前の画像で試してみると,画像の大きさ変更自体は正しく行われたのですが,得られた画像が以下のようにいびつなものになってしまいました.上が変更前の画像,下が変更後の画像です(同じ物体が複製されています).

image_0001.jpg

image_0001_conc_.jpg

このままでも特に問題ないのかもしれませんが,なんとなく気になったので少し前処理しました.細かい調整が面倒ならばPIL.Imageの.resize((256,256))を使ってもいいような気がします.

テストの準備

トレーニングが終わったらテストの準備をします.テストのために必要なものは以下の4つです.トレーニング時の前処理とほぼ同じです.

  • 256×256の大きさのテスト画像.test.txtに書かれたpathと一致するように置く.
  1. 平均画像ファイル(トレーニング時と同じものを使えばよいです).実行ディレクトリに置く.
  2. test.txtファイル(トレーニング時と同じフォーマットで用意します).実行ディレクトリに置く.
  3. トレーニング済みのimagenet model(トレーニングによってmodelという名前で保存しているはずです).実行ディレクトリに置く.

modelの評価

Chainerの公式ドキュメントとか他のexamplesのコードを見て書きました.chainer/examples/imagenet/train_imagenet.pyをテスト用に書き換えただけなので無駄な処理も多々あるように思いますが,手元の環境では一応動きました.
上の準備を行った後,↓のコードを置いて(※ 細かいところをサボったので,コマンドライン引数のtest_batchsizeは無視して下さい.これをdefault値(=1)以外にすると正しく評価できません)
https://github.com/fullflu/ML/blob/master/evaluate_chainer_imagenet.py

python evaluate_chainer_imagenet.py -g -1 test.txt

と打てば以下の感じでerror(平均でどれだけ予測を外したか)が表示されます.処理の中身は,modelをimportした後の serializers.load_npz(path_to_model,model) でモデルを読み込んで,予測と評価で model(x,t) を書くだけです.便利です.

Load model from model


{"iteration": 19, "loss": 0.7662104054501182, "type": "test", "error": 0.4736842105263158}

約半分は外しているので真面目に学習していないことがよくわかります.

8
9
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
8
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?