一度にたくさんの画像を開きたい傲慢な人向けのプログラミングの書き方
最近はプログラミングの勉強してるんですけど、TensorflowにてCNNを用いた文字認識モデルを作成してます。
こういう文字認識の正解率を問うときってMNIST(http://yann.lecun.com/exdb/mnist/)っていうデータセットが用意されていて、そちらを使う場合が多いみたいです。でも、やっぱり自分で描いた文字で認識させたいってのがありまして。
ここのサイトで実際にそれをやってます。
ただ問題なのはいちいち1~9まで引数として渡して実行~ってなると面倒くさい(やり方が分からない。その為毎回学習の過程からさせちゃってて1つの文字認識させるのに1時間半くらいかかっちゃう)ので、全部一気にさせる方法というか、複数の画像を一気に読み込む方法を紹介。
one.jpg two.jpg eight.jpg
みたいな感じで読み込ませたい画像のファイル名を入力したmath.txtというファイルを作ります。以下がpythonにて作成したソースコードです。
# coding:utf-8 from PIL import Image import numpy as np import sys import matplotlib.pyplot as plt #ファイルを開く f = open('math.txt', 'r') #1行毎に画像を読み込む for line in f: print line #改行削除 name = line.rstrip() print name #画像の読み込み img = Image.open(name) print img #画像をarrayに変換 img = np.asarray(img) print img #貼り付け plt.imshow(img) #表示 plt.show()
ポイントは
#改行削除
name = line.rstrip()
の部分。pythonは改行されるのが仕様?みたいなんでここで改行を削除しないとちゃんと実行出来ません。
そんで実行結果がこちら。
lineの表示では改行されてますが、nameを表示してみるとちゃんと改行が削除されてるのが分かりますね。
画像表示のコードはおまけ、というか備忘録代わりに。
/python$ python math.py one.jpg one.jpg <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=28x28 at 0x7F9EE973C320> [[[255 255 255] [255 255 255] [255 255 255] ..., [255 255 255] [255 255 255] [255 255 255]] [[255 255 255] [255 255 255] [255 255 255] ..., [255 255 255] [255 255 255] [255 255 255]] [[255 255 255] [255 255 255] [255 255 255] ..., [255 255 255] [255 255 255] [255 255 255]] ..., [[255 255 255] [255 255 255] [255 255 255] ..., [255 255 255] [255 255 255] [255 255 255]] [[255 255 255] [255 255 255] [255 255 255] ..., [255 255 255] [255 255 255] [255 255 255]] [[255 255 255] [255 255 255] [255 255 255] ..., [255 255 255] [255 255 255] [255 255 255]]]
こんな感じで複数の画像ファイルをリストにでも突っ込んでfor文回して1つずつ評価させればいいんじゃないですかね。
まだ実装してないんですが。
2017/02/08
だいぶ放置してましたが近いうちに実装したやつとかのいろいろを更新しようかと思います
やりました。
fuchami.hatenadiary.jp