caffe原始碼分析 DataTransformer

2021-08-28 18:39:28 字數 2369 閱讀 3735

datum型別或者cv::mat, 轉化為caffeblob,並按照transformation``parameter引數對影象做處理,例如scale,mirro

推斷blobshape

proto定義如下:

// to the data layer's data

message transformationparameter

使用示例1:

layer 

transform_param

data_param

}

使用示例2:

transform_param
下面看其核心的資料成員以及函式定義:

template class datatransformer ;
下面僅僅給出將datum型別轉化為caffe的blob, cv::mat的轉化同理.

templatevoid datatransformer::transform(const datum& datum,

dtype* transformed_data)

if (has_mean_values) }}

int height = datum_height;

int width = datum_width;

int h_off = 0;

int w_off = 0;

if (crop_size) else

}dtype datum_element;

int top_index, data_index;

for (int c = 0; c < datum_channels; ++c) else

if (has_uint8) else

if (has_mean_file) else else }}}}}

本系列深度學習框架caffe原始碼分析主要內容如下:

1. caffe原始碼分析-cmake 工程構建:

caffe原始碼分析-cmake 工程構建主要內容:

2. caffe的資料記憶體分配類syncedmemory, 以及類blob資料傳輸的媒介.

主要內容:

caffe原始碼分析-syncedmemory

caffe原始碼分析-blob

其中blob分析給出了其直接與opencv的相互轉化以及操作,可以使得我們更好的理解blob.

3. caffelayer的原始碼分析,包括從整體上說明了layer類別以及其proto定義與核心函式.

內容如下:

caffe原始碼分析-layer

caffe原始碼分析-relulayer

caffe原始碼分析-inner_product_layer

caffe原始碼分析-layer_factory

首先分析了最簡單的layerrelu,然後在是inner_product_layer全連線層, 最後是layer_factorycaffe中 以此工廠模式create各種layer.

4. 資料輸入層,主要是多執行緒+blockingqueue的方式讀取資料訓練:

內容如下:

caffe原始碼分析-blockingqueue

caffe原始碼分析-internalthread

caffe原始碼分析-datareader

5. io處理例如讀取proto檔案轉化為網路,以及網路引數的序列化

內容如下:

caffe原始碼分析-datatransformer

caffe原始碼分析-db, io

6. 最後給出了使用純c++結合多層感知機網路訓練mnist的示例

內容如下:

caffe c++示例(mnist 多層感知機c++訓練,測試)

類似與caffe一樣按照layer、solver、loss、net等模組構建的神經網路實現可以見下面這篇blog,相信看懂了這個python的**理解caffe框架會更簡單點.

神經網路python實現

caffe原始碼分析 IoU計算

iou pre dict 檢測框與 grou nd t ruth 檢測框的 交集pr edic t檢測框 與gro und trut h檢測框 的的並集 iou frac iou pr edic t檢測框 與gro und trut h檢測框 的的並集 pred ict檢 測框與g roun d t...

Caffe引數交換原始碼分析

對境準備 對於多個gpu而言,一台機器2個gpu,引數交換的流程圖 引數交換從main 進入train 函式,在train函式中找到對應原始碼為 1 2if gpus.size 1 else 因為gpu的個數 1,所以執行sync solver,null,solver param 和run 函式,首...

Caffe原始碼分析隨筆 二 Blob

blob是caffe中每一層的基本型別。檢視標頭檔案 template class blob protected shared ptr data shared ptr diff shared ptr shape data vector shape int count int capacity blo...