Caffe学習シリーズ(2):画像データの平均値を計算する

1376 ワード

引用する
画像から平均値を引いた後、トレーニングとテストを行うと、速度と精度が向上します.したがって,この操作は一般に様々なモデルで行われる.平均値の計算は実際にはすべての訓練サンプルの平均値を計算し、計算した後、平均ファイルとして保存します.以降のテストでは、テストピクチャの再計算を必要とせずに、この平均値を直接使用して減算することができます.
一、バイナリフォーマットの平均計算
Caffeで使用される平均データフォーマットはbinaryprotoであり、著者らは平均を計算するファイルcompute_を提供した.image_mean.cppは、caffeルートディレクトリの下にあるtoolsフォルダに入れます.コンパイルされた実行可能ファイルはbuild/toolsに保存され、直接呼び出すことができます.
sudo build/tools/compute_image_mean examples/mnist/mnist_train_lmdb examples/mnist/mean.binaryproto

#  :
#  : examples/mnist/mnist_train_lmdb, ,  lmdb  
#  : examples/mnist/mean.binaryproto, 

二、pythonフォーマットの平均計算
pythonインタフェースを使用するか、フィーチャーの可視化を行う場合は、python形式の平均ファイルを使用する可能性があります.まずlmdb形式のデータを用いてバイナリ形式の平均値を計算し,python形式の平均値に変換する.
pythonスクリプトを作成して実装できます.
#! /usr/bin/env python

import numpy as np
import sys
import caffe

if len(sys.argv)!=3:
    print "Usage: python convert_mean.py mean.binaryproto mean.npy"
    sys.exit()

blob = caffe.proto.caffe_pb2.BlobProto()
bin_mean = open( sys.argv[1] , 'rb' ).read()
blob.ParseFromString(bin_mean)
arr = np.array( caffe.io.blobproto_to_array(blob) )
npy_mean = arr[0]
np.save( sys.argv[2] , npy_mean )

このスクリプトをconvert_として保存mean.py. 呼び出しの形式は次のとおりです.
sudo python convert_mean.py mean.binaryproto mean.npy

#   mean_binaryproto  
# mean.npy   python