ディープラーニングは、少数のクラス(猫、犬、車、飛行機など)の分類のためのいくつかの大きなデータセットにうまく適用され、 SIFT、カラーヒストグラムなどの特徴を持つバッグ事前学習(Tensorflow)を使用した特徴の抽出CNN
しかし、このようなネットワークを訓練するには、クラスごとに多くのデータと多くの訓練時間が必要です。しかしながら、非常にしばしば、十分なデータがないか、畳み込みニューラルネットワークが、そのようなデバイスを設計し訓練し、訓練データを収集する時間を費やす前に、畳み込みニューラルネットワークがいかにうまくいくかを知りたい。
この特定のケースでは、最先端の出版物で使用されているベンチマークデータセットを使用してネットワークを構成し、訓練し、機能として持つ可能性のあるデータセットにネットワークを適用するのが理想的かもしれません抽出器。 1を訓練するための十分なデータがない場合
これは、1つは、SVMのような古典的な分類方法、などが特に
ロジスティック回帰、ニューラルネットワークに送り込むことができ、各画像のための機能のセットになりCNNは、CNNがいくつかのサンプルで訓練されたパイプラインを上回ることを期待しています。
私はテンソルフローチュートリアルを見ていましたが、彼らは常に明確なトレーニング/テストフェーズを持っているようです。私はあらかじめ設定されたCNNの特徴抽出子でピクルファイル(または同様のもの)を見つけることができませんでした。
私の質問は次のとおりです。事前に訓練されたネットワークが存在し、どこでそれらを見つけることができるか。あるいは、このアプローチは意味がありますか? CNN +ウエイトはどこで見つけることができますか?
編集 w.r.t. (:S)私は'DecodeJpeg:0'
と'DecodeJpeg/contents:0'
を使用してみましたし、異なる出力をチェック@ジョンさんのコメント
import cv2, requests, numpy
import tensorflow.python.platform
import tensorflow as tf
response = requests.get('https://i.stack.imgur.com/LIW6C.jpg?s=328&g=1')
data = numpy.asarray(bytearray(response.content), dtype=np.uint8)
image = cv2.imdecode(data,-1)
compression_worked, jpeg_data = cv2.imencode('.jpeg', image)
if not compression_worked:
raise Exception("Failure when compressing image to jpeg format in opencv library")
jpeg_data = jpeg_data.tostring()
with open('./deep_learning_models/inception-v3/classify_image_graph_def.pb', 'rb') as graph_file:
graph_def = tf.GraphDef()
graph_def.ParseFromString(graph_file.read())
tf.import_graph_def(graph_def, name='')
with tf.Session() as sess:
softmax_tensor = sess.graph.get_tensor_by_name('pool_3:0')
arr0 = numpy.squeeze(sess.run(
softmax_tensor,
{'DecodeJpeg:0': image}
))
arr1 = numpy.squeeze(sess.run(
softmax_tensor,
{'DecodeJpeg/contents:0': jpeg_data}
))
print(numpy.abs(arr0 - arr1).max())
だから、最大絶対差が1.27649
あり、そして一般的にはすべての要素が、特に平均ので、(異なりますarr0
およびarr1
の値は0〜0.5の間にある)。
また、'DecodeJpeg:0'
にはnumpyの配列ではなくjpeg-stringが必要であると予想されますが、なぜ名前に 'Jpeg'が含まれているのでしょうか。 @john:あなたのコメントについてどうすればいいですか?
私は訓練されたニューラルネットワークが決定論的である(しかし、ほとんどが混乱している)と期待しているので、何が何であるかはわかりません。
ラバーダック:「CNNトレーニングを受けたImageNet」でgoogleingしたとき、私はこれを発見しました:http://www.vlfeat.org/matconvnet/pretrained/ – Herbert
私のラップトップでこのネットワークをコンパイルして実行することができました。画像を識別/分類するためのウェブカメラgithub。com/sermanet/OverFeat –