Caffe簡單例程,影像處理,Netscope視覺化方法
一個簡單的caffe網路
name: "convolution"
input: "data"
input_dim: 1
input_dim: 1
input_dim: 100
input_dim: 100
layer {
name: "conv"
type: "Convolution"
bottom: "data"
top: "conv"
convolution_param {
num_output: 2
kernel_size: 5
stride: 1
weight_filler {
type: "gaussian"
std: 0.01
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "conv2"
type: "Convolution"
bottom: "conv"
top: "conv2"
convolution_param {
num_output: 3
kernel_size: 5
stride: 1
weight_filler {
type: "gaussian"
std: 0.01
}
bias_filler {
type: "constant"
value: 0
}
}
}
執行程式
net =caffe. Net('conv.prototxt', caffe.TEST) #載入剛剛定義的網路
print(net.inputs) # 列印網路的輸入
print('\n')
# net有兩個重要的輸出。blobs和params
# net.blobs['data'] 指輸入資料,在該例子中,它是大小為 (1,1,100,100)的4維矩陣
# net.blobs['conv'] 指第一個卷積層的計算值,它是大小為(1,3,96,96)的4為矩陣
# net.blobs['conv2'] 指第一個卷積層的計算值,它是大小為(1,3,92,92)的4為矩陣
for k, v in net.blobs.items():
print(k, v.data.shape)
print(net.blobs['conv'].data.shape) # shape指資料的維度或大小
print(net.blobs['conv'].data[0][0].shape)
print('\n')
for k, v in net.params.items():
print (k, v[0].data.shape, v[1].data.shape)
print('\n')
print(net.params['conv'][0].data.shape)
print(net.params['conv'][1].data.shape)
上面五行為網路層和資料維數,第二個為輸出通道數,也就是卷積核數
下面四行為卷積核,第一個為核數,第二個為輸入通道數
Caffe讀取顯示影像
1、cv2.imread()介面讀影像,讀進來直接是BGR 格式資料格式在 0~255,通道格式為(W,H,C)
2、caffe.io.load_image()讀進來是RGB格式和 0~1(float)
因此,cv2.imread()讀取的資料,需要進過轉換後,才和caffe.io.load_image()相同,例如:
image = caffe.io.load_image(caffe_root + 'examples/images/cat.jpg')
image1=cv2.imread(caffe_root + 'examples/images/cat.jpg')
image1=cv2.cvtColor(image1,cv2.COLOR_BGR2RGB)
image1=image1/255.
Caffe視覺化方法
可以將prototxt檔案貼在下面網頁上,直接在遠端視覺化
https://cwlacewe.github.io/netscope/#/gist/e65799e70358c6782b1b
亦可以使用下面的方法本機安裝
https://github.com/cwlacewe/netscope
下載後解壓到netscope
Installation
sudo apt install npm
sudo apt install http-server
sudo npm install http-server -g
#start server, 進入到netscope資料夾
cd netscope -- http-server
#open in the browser
http://localhost:8080
[print(k, v.data.shape) for k, v in net.blobs.items()]
[print(k, v[0].data.shape) for k, v in net.params.items()]
圖片卷積後的尺寸計算公式
竹如海 2018-08-10 19:36:31 11636 收藏 4
分類專欄: 影像處理 數學概念
輸入圖片大小 W×W
Filter大小 F×F
步長 S
padding的畫素數 P
N = (W − F + 2P )/S+1
輸出圖片大小為 N×N
data (1, 3, 512, 1024)
data_data_0_split_0 (1, 3, 512, 1024)
data_data_0_split_1 (1, 3, 512, 1024)
ConvNd_1 (1, 13, 256, 512)
MaxPool2d_1 (1, 3, 256, 512)
Concat_1 (1, 16, 256, 512)
BatchNorm_1 (1, 16, 256, 512)
BatchNorm_1_Threshold_1_0_split_0 (1, 16, 256, 512)
BatchNorm_1_Threshold_1_0_split_1 (1, 16, 256, 512)
ConvNd_1 (13, 3, 3, 3)
BatchNorm_1 (1, 16, 1, 1)
layer {
name: “ConvNd_1”
type: “Convolution”
bottom: “data”
top: “ConvNd_1”
convolution_param {
num_output: 13
bias_term: false
pad: 1
kernel_size: 3
group: 1
stride: 2
dilation: 1
}
}
layer {
name: “MaxPool2d_1”
type: “Pooling”
bottom: “data”
top: “MaxPool2d_1”
pooling_param {
pool: MAX
kernel_size: 3
stride: 2
pad: 0
}
(512-3+21)/2+1 = 256
(1024-3+21)/2+1 = 512
相關文章
- 視覺化影像處理 | 視覺化訓練器 | 影像分類視覺化
- TensorFlow進行簡單的影像處理
- 基於Opencv的簡單影像處理OpenCV
- Python 計算機視覺(十五)—— 影像特效處理Python計算機視覺特效
- 視覺化學習:如何使用後期處理通道增強影像效果視覺化
- 圖形影像處理之簡單圖片
- 計算機視覺 の1. 影像預處理計算機視覺
- 影像預處理方法
- 音訊錄製及視覺化處理音訊視覺化
- 視覺化醫學影像CT視覺化
- Tableau簡單的資料視覺化操作視覺化
- Android影像灰度化、線性灰度變化、二值化處理方法Android
- 包含(處理)HTML的最簡單方法包括HTML
- OpenCV計算機視覺學習(12)——影像量化處理&影像取樣處理(K-Means聚類量化,區域性馬賽克處理)OpenCV計算機視覺聚類
- 4種更快更簡單實現Python資料視覺化的方法Python視覺化
- pythonPIL影像處理庫簡介(一)Python
- 淺析機器視覺在醫療影像處理中的應用視覺
- 數字孿生汙水處理廠 助力資料採集視覺化處理視覺化
- 機器視覺中常用影像處理庫都有哪些?重點關注.net視覺
- 數字影像處理實驗(四)影像銳化
- 影像處理--影像特效特效
- MNIST資料集詳解及視覺化處理(pytorch)視覺化PyTorch
- 簡單的字串處理字串
- Python影像處理丨5種影像處理特效Python特效
- webgl 影像處理2---影像畫素處理Web
- 影像資料不足時的處理方法
- Boris FX Optics for mac(影像視覺特效處理)支援Lrc2024 2024.0.1.63啟用版Mac視覺特效
- 計算機視覺實戰的深度學習實戰二:影像預處理計算機視覺深度學習
- Python 影像處理 OpenCV (6):影像的閾值處理PythonOpenCV
- Python 影像處理 OpenCV (7):影像平滑(濾波)處理PythonOpenCV
- FxFactory pro 8 for Mac(視覺特效處理)Mac視覺特效
- pytorch訓練簡單的CNN(visdom進行視覺化)PyTorchCNN視覺化
- 「影像分類」 實戰影像分類網路的視覺化視覺化
- 影像預處理
- 簡單實現批處理
- JDK視覺化故障處理工具JDK視覺化
- Redash視覺化BI系統部署安裝及簡單使用視覺化
- 讓資料視覺化變得簡單 – JavaScript 圖形庫視覺化JavaScript