np.unique()
該函式是去除陣列中的重複數字,並進行排序之後輸出。計算label個數時適用。
from colletions import counter
求陣列中每個數字出現了幾次
from collections import counter
a =[1,
4,2,
3,2,
3,4,
2]
b = counter(a)
#求陣列中每個數字出現了幾次
print
(b)輸出
counter(
)
cv2.gaussianblur()
opencv高斯模糊
#(5, 5)表示高斯矩陣的長與寬都是5,標準差取0
blur=cv2.gaussianblur(img,(5
,5),
0)
opencv 疊加
1.cv2.add(img1, img2)
使用cv2.add()將兩個影象相加,可以使用numpy中的矩陣加法來實現。但是在opencv中加法是飽和操作,也就是有上限值,numpy會對結果取模。
2.cv2.addweighted(img1, a, img2, b, c)
實際上也是加法,只不過是按比例混合起來,有不同的權重 ,給人一種混合的或者透明的感覺
公式如下
output = img1a + img2b + c
opencv 直方圖
1.cv2.calchist(image,channels,mask,histsize,ranges)
繪製直方圖
2.cv2.equalizehist(img)
均衡化的直方圖
opencv 旋轉
cv2.warpaffine(src, m, dsize[, dst[, flags[, bordermode[, bordervalue]]]])
src - 輸入影象。
m - 變換矩陣。
dsize - 輸出影象的大小。
flags - 插值方法的組合(int 型別!)
bordermode - 邊界畫素模式(int 型別!)
bordervalue - (重點!)邊界填充值; 預設情況下,它為0。
m通過**rot_mat = cv2.getrotationmatrix2d(center, rotate_angle, scale)**得到
opencv縮放
cv2.resize(src,dsize,dst=none,fx=none,fy=none,interpolation=none)
scr:原圖
dsize:輸出影象尺寸
fx:沿水平軸的比例因子
fy:沿垂直軸的比例因子
interpolation:插值方法
conv2d函式
進行輸入張量與設定卷積核的卷積操作。
tf.nn.conv2d(
input
,filter
, strides,
padding,
use_cudnn_on_gpu=
true
, data_format=
'nhwc'
, dilations=[1
,1,1
,1],
name=
none
)
其中需要格外注意strides引數,這個引數有四個值[b,h,w,c]
分別代表對batch的步長、對高度的步長、對寬度的步長、對通道的步長。
tf.nn.max_pool()
tf.nn.max_pool(value, ksize, strides, padding, name=
none
)
***ksize***規定池化視窗大小,四維向量,同strides,[b,h,w,c]
tf.nn.dropout()
dropout就是在不同的訓練過程中隨機扔掉一部分神經元,防止或減輕過擬合。
tf.nn.dropout(
x,keep_prob,
noise_shape=
none
, seed=
none
, name=
none
)
其中:
x:指輸入,輸入tensor
keep_prob: float型別,每個元素被保留下來的概率,設定神經元被選中的概率,在初始化時keep_prob是乙個佔位符, keep_prob = tf.placeholder(tf.float32) 。tensorflow在run時設定keep_prob具體的值,例如keep_prob: 0.5
noise_shape : 乙個1維的int32張量,代表了隨機產生「保留/丟棄」標誌的shape
seed : 整形變數,隨機數種子
name:指定該操作的名字
tf.one_hot()
tf.one_hot(indices, depth, on_value=
none
, off_value=
none
, axis=
none
, dtype=
none
, name=
none
)
indices表示輸入的多個數值,通常是矩陣形式;depth表示輸出的尺寸。
由於one-hot型別資料長度為depth位,其中只用一位數字表示原輸入資料,這裡的on_value就是這個數字,預設值為1,one-hot資料的其他位用off_value表示,預設值為0。
tf.one_hot()函式規定輸入的元素indices從0開始,最大的元素值不能超過(depth - 1),因此能夠表示depth個單位的輸入。若輸入的元素值超出範圍,輸出的編碼均為 [0, 0 … 0, 0]。
indices = 0 對應的輸出是[1, 0 … 0, 0], indices = 1 對應的輸出是[0, 1 … 0, 0], 依次類推,最大可能值的輸出是[0, 0 … 0, 1]。
tf.argmax(input,axis)
根據axis取值的不同返回每行或者每列最大值的索引。
axis=0:每行的最大值的索引
axis=1:每列~
equal(x, y, name=none)
逐個元素的判斷兩個array的一致與否,相同則在其位置返回true,x和y必須維度相同。
返回形式示例:
[[ true false true]
[false true false]]
tf.cast()
cast(x, dtype, name=
none
)
第乙個引數 x: 待轉換的資料(張量)
第二個引數 dtype: 目標資料型別
第三個引數 name: 可選引數,定義操作的名稱
交通標誌識別
交通標誌識別實際上包括交通標誌的檢測和識別兩個過程,檢測是在影象中尋找到感興趣目標並定位,識別是對感興趣目標進行分類。現在r cnn系列 yolo ssd能夠很好的將檢測和分類兩個過程融合到一起,並且在pascal voc等資料集上取得了很好的效果,但對像交通標誌這種小目標的檢測效果並不好。就交通標...
PaddleHub實現交通標誌識別
完成深度學習的過程一般是這個樣子的 由於資料 模型 和算力的限制,我們很難在短時間內完成乙個快速準確的工程專案,所以我們會採用遷移學習 transfer learning paddlehub完成遷移學習的過程可以被描述為六個步驟 載入資料 載入模型 資料處理 優化策略 執行配置 finetune p...
交通標誌的檢測與識別
正在投稿中,專案已開源在github article,author journal number pages year publisher 如果本文幫助了您,請您引用我們的 本科畢業設計的時候曾經做過交通標誌的檢測與識別,這個作為很好的影象處理與識別領域的入門project還是非常不錯的.交通場景圖...