深度學習 CV

2021-10-03 03:24:41 字數 3890 閱讀 1468

def

multiboxprior

(feature_map,sizes=

[0.75

,0.5

,0.25

], ratios=[1

,2,0.5])

: pairs =

for r in ratios:

[sizes[0]

, math.sqrt(r)])

for s in sizes[1:

]:[s, math.sqrt(ratios[0]

)]) pairs = np.array(pairs)

# 生成相對於座標中心點的框(x,y,x,y)

ss1 = pairs[:,

0]* pairs[:,

1] ss2 = pairs[:,

0]/ pairs[:,

1] base_anchors = np.stack(

[-ss1,

-ss2, ss1, ss2]

, axis=1)

/2#將座標點和anchor組合起來生成hw(n+m-1)個框輸出

h, w = feature_map.shape[-2

:]shifts_x = np.arange(

0, w)

/ w shifts_y = np.arange(

0, h)

/ h shift_x, shift_y = np.meshgrid(shifts_x, shifts_y)

shift_x = shift_x.reshape(-1

) shift_y = shift_y.reshape(-1

) shifts = np.stack(

(shift_x, shift_y, shift_x, shift_y)

, axis=1)

anchors = shifts.reshape((-

1,1,

4))+ base_anchors.reshape((1

,-1,

4))return torch.tensor(anchors, dtype=torch.float32)

.view(1,

-1,4

)# 顯示

defshow_bboxes

(axes, bboxes, labels=

none

, colors=

none):

def_make_list

(obj, default_values=

none):

if obj is

none

: obj = default_values

elif

notisinstance

(obj,

(list

,tuple))

: obj =

[obj]

return obj

labels = _make_list(labels)

colors = _make_list(colors,

['b'

,'g'

,'r'

,'m'

,'c'])

for i, bbox in

enumerate

(bboxes)

: color = colors[i %

len(colors)

] rect = d2l.bbox_to_rect(bbox.detach(

).cpu(

).numpy(

), color)

axes.add_patch(rect)

if labels and

len(labels)

> i:

text_color =

'k'if color ==

'w'else

'w' axes.text(rect.xy[0]

, rect.xy[1]

, labels[i]

, va=

'center'

, ha=

'center'

, fontsize=

6, color=text_color,

bbox=

dict

(facecolor=color, lw=0)

)

def

compute_intersection

(set_1, set_2)

: lower_bounds = torch.

max(set_1[:,

:2].unsqueeze(1)

, set_2[:,

:2].unsqueeze(0)

)# (n1, n2, 2)

upper_bounds = torch.

min(set_1[:,

2:].unsqueeze(1)

, set_2[:,

2:].unsqueeze(0)

)# (n1, n2, 2)

intersection_dims = torch.clamp(upper_bounds - lower_bounds,

min=0)

# (n1, n2, 2)

return intersection_dims[:,

:,0]

* intersection_dims[:,

:,1]

# (n1, n2)

defcompute_jaccard

(set_1, set_2)

: intersection = compute_intersection(set_1, set_2)

areas_set_1 =

(set_1[:,

2]- set_1[:,

0])*

(set_1[:,

3]- set_1[:,

1])# (n1)

areas_set_2 =

(set_2[:,

2]- set_2[:,

0])*

(set_2[:,

3]- set_2[:,

1])# (n2)

union = areas_set_1.unsqueeze(1)

+ areas_set_2.unsqueeze(0)

- intersection

return intersection / union

樣式遷移:將某影象中的樣式應用在另一影象上。輸入影象分為內容影象和樣式影象。

一般情況下,靠近輸入層的輸出更容易抽取細節,反之更容易抽取全域性資訊,所以將靠近輸出的層用作內容層,其他選擇不同層輸出作為樣式層。

樣式遷移的損失函式由內容損失、樣式損失和總變差損失組成,是這三者的加權和。

機器學習可以進行區別性任務(discriminative learning),也可以進行生成式建模(generative modeling)。深度神經網路為識別學習開闢了新的可能性,如遞迴神經網路訓練後可以作為生成模型

2023年,一篇**介紹了乙個新模型:生成式對抗網路(gans),它利用識別模型來獲得效果良好的生成模型。其核心思想是:如果我們不能分辨出真實資料和生成的資料,那麼這個生成模型就是好的。

gan 結構如圖所示,首先由乙個生成器網路生成一些類似於真實資料的資料(或是影象、語音等)。再經過乙個判別器網路對真實資料和生成資料進行區分,此時,判別器在檢視辨別真偽,生成器在檢視欺騙,兩者相互競爭。

2023年提出了gan的公升級版本:dcgan,深層卷積生成對抗網路。它將借用卷積網路的結構,將gan更深層的運用在一些問題上。尤其是在計算機視覺識別問題上,dcgan非常成功。

深度學習CV中常用的資料集

資料集中為單通道,大小為28x28畫素 訓練集train images.idx3 ubyte,檔案大小47040016b,47040016 60000x28x28 16,測試集t10k images.idx3 ubyte,檔案大小7840016b,7840016 10000x28x28 16,其中資...

深度學習7日入門cv疫情特輯學習心得

直播內容包含兩個部分,理論和實踐,課後需要完成每次的作業和一次比賽。整個課程的內容還是比較豐富的,參加課程前還是需要掌握基本的python和深度學習基礎知識。其中幾次作業雖然標題不一樣,資料不一樣,本質上都是分類任務。day2對於不同的手勢進行分類,day3是對於切割後的車牌字元 省份簡稱和字母 數...

cv基礎組隊學習

影象彩色空間互轉在影象處理中應用非常廣泛,而且很多演算法只對灰度圖有效 另外,相比rgb,其他顏色空間 比如hsv hsi 更具可分離性和可操作性,所以很多影象演算法需要將影象從rgb轉為其他顏色空間,所以影象彩色互轉是十分重要和關鍵的 1.相關顏色空間的原理介紹 2.顏色空間互轉理論的介紹 3.o...