需要のないページ

プログラミングや趣味や。

TensorFlowの学習済みモデルをいじってみる(1)

能書き

TensorFlowの学習済みモデルで遊ぼうと思ったら、いろいろとハマった。

同じようにハマることもあるだろう、記録は残しておいた方がよい。

 

環境

  • Windows 10 64bit
  • PyCharm 2017.1.3
  • Miniconda 3.6
  • Python 3.5
  • Tensorflow-gpu 1.1.0 <pip>

 

チュートリアルの実行

object_detectionのチュートリアルを試してみる。

 

私は実行ファイルを移動させてしまったので、sys.pathをいじる必要があった。

元のコードを次のように書き換える。


    # sys.path.append("..")
    LIBRARY_PATH = '[ダウンロード先のパス]/models'
    sys.path.append(LIBRARY_PATH)
    sys.path.append(LIBRARY_PATH + '/object_detection')

さらに、コードに散らばる相対パス絶対パスに置き換えていく。

これを怠ると、 次のようなメッセージを含んだエラーが吐かれる。

tensorflow.python.framework.errors_impl.NotFoundError: NewRandomAccessFile failed to Create/Open: data\mscoco_label_map.pbtxt : \udc8ew\udc92?\udc82?\udc83p\udc83X\udc82\udcaa\udc8c\udca9\udc82?\udca9\udc82\udce8\udc82?\udcb9\udc82\udcf1\udc81B
FileNotFoundError: [Errno 2] No such file or directory: 'test_images\\image1.jpg'

二回出たエラーを繋げて書いてみた。両方同時に出るわけではない。

 

パス問題を解消したが... 今度は次のエラーに泣かされた。

Traceback (most recent call last):
File "[LIBRARY_PATH]/models/ObjectDetection/objTest.py", line 18, in <module>
from utils import label_map_util
File "[LIBRARY_PATH]/models/object_detection\utils\label_map_util.py", line 22, in <module>
from object_detection.protos import string_int_label_map_pb2
ImportError: cannot import name 'string_int_label_map_pb2'

ディレクトリを見ると、.protoファイルはあっても.pyファイルがない。

 

.protoファイルから、.pyファイルを生成しなければいけないようだ。

 

このページの最新の圧縮ファイルのうち、win32.zipとついているものを落とす。

win64版が見当たらずにしばらく探したが、結局win32で妥協した。

Windows以外のOSを用いている場合、自力でビルドする必要があるらしい。

 

解凍して得られるprotoc.exeをmodelsに移し、次のコマンドをたたく。


    > protoc object_detection/protos/*.proto --python_out=.
    

そうすると、確かに.pyファイルがディレクトリに追加されていた。

 

実行結果

f:id:LouiS:20170624175046j:plain

もう一つ、海辺の画像が表示されるが、そのページは有名なので端折る。

/* コードブロック */