python格式的Caffe圖片數(shù)據(jù)均值計算學習
引言
圖片減去均值后,再進行訓練和測試,會提高速度和精度。因此,一般在各種模型中都會有這個操作。
那么這個均值怎么來的呢,實際上就是計算所有訓練樣本的平均值,計算出來后,保存為一個均值文件,在以后的測試中,就可以直接使用這個均值來相減,而不需要對測試圖片重新計算。
一、二進制格式的均值計算
caffe中使用的均值數(shù)據(jù)格式是binaryproto, 作者為我們提供了一個計算均值的文件compute_image_mean.cpp,放在caffe根目錄下的tools文件夾里面。
編譯后的可執(zhí)行體放在 build/tools/ 下面,我們直接調(diào)用就可以了
# sudo build/tools/compute_image_mean examples/mnist/mnist_train_lmdb examples/mnist/mean.binaryproto
帶兩個參數(shù):
第一個參數(shù):examples/mnist/mnist_train_lmdb, 表示需要計算均值的數(shù)據(jù),格式為lmdb的訓練數(shù)據(jù)。
第二個參數(shù):examples/mnist/mean.binaryproto, 計算出來的結果保存文件。
二、python格式的均值計算
如果我們要使用python接口,或者我們要進行特征可視化,可能就要用到python格式的均值文件了。首先,我們用lmdb格式的數(shù)據(jù),計算出二進制格式的均值,然后,再轉換成python格式的均值。
我們可以編寫一個python腳本來實現(xiàn):
#!/usr/bin/env python
import numpy as np
import sys,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
調(diào)用格式為:
# sudo python convert_mean.py mean.binaryproto mean.npy
其中的 mean.binaryproto 就是經(jīng)過前面步驟計算出來的二進制均值。
mean.npy就是我們需要的python格式的均值。
以上就是python格式的Caffe圖片數(shù)據(jù)均值計算學習的詳細內(nèi)容,更多關于python格式Caffe均值計算的資料請關注腳本之家其它相關文章!
相關文章
np.concatenate()函數(shù)數(shù)組序列參數(shù)的實現(xiàn)
本文主要介紹了np.concatenate()函數(shù)數(shù)組序列參數(shù)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-03-03
Python解析JSON數(shù)據(jù)的方法簡單例子
這篇文章主要給大家介紹了關于Python解析JSON數(shù)據(jù)的方法,解析JSON文件是Python中非常常見的操作,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2023-09-09
詳解django的serializer序列化model幾種方法
序列化是將對象狀態(tài)轉換為可保持或傳輸?shù)母袷降倪^程。這篇文章主要介紹了詳解django的serializer序列化model幾種方法。具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-10-10

