交通標誌識別 語句筆記

2021-10-01 14:43:51 字數 3628 閱讀 8471

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還是非常不錯的.交通場景圖...