欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

卷積神經(jīng)網(wǎng)絡(luò)如何實(shí)現(xiàn)提取特征

 更新時(shí)間:2023年04月05日 09:58:02   作者:IT__learning  
這篇文章主要介紹了卷積神經(jīng)網(wǎng)絡(luò)如何實(shí)現(xiàn)提取特征問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

圖像在計(jì)算機(jī)中的存儲(chǔ)

圖像其實(shí)就是一個(gè)像素值組成的矩陣。

1、黑白或灰度圖像如何存儲(chǔ)在計(jì)算機(jī)中

在這里,我們已經(jīng)采取了黑白圖像,也被稱為一個(gè)灰度圖像。

這是數(shù)字8的圖像。現(xiàn)在,如果我們進(jìn)一步放大并且仔細(xì)觀察,你會(huì)發(fā)現(xiàn)圖像變得失真,并且你會(huì)在該圖像上看到一些小方框。

這些小方框叫做 Pixels。我們經(jīng)常使用的圖像維度是X x Y。這實(shí)際上是什么意思?

這意味著圖像的尺寸就是圖像的高度(x)和寬度(y)上的像素?cái)?shù)。

在這種情況下,高度為24像素,寬度為16像素。因此,此圖像的尺寸將為24 x 16。盡管我們看到的是這種格式的圖像,但計(jì)算機(jī)以數(shù)字的形式存儲(chǔ)圖像。

這些像素中的每一個(gè)都表示為數(shù)值,而這些數(shù)字稱為像素值,這些像素值表示像素的強(qiáng)度。

對(duì)于灰度或黑白圖像,我們的像素值范圍是 0 到 255 :接近零的較小數(shù)字表示較深的陰影,而接近255的較大數(shù)字表示較淺或白色的陰影。

因此,計(jì)算機(jī)中的每個(gè)圖像都以這種形式保存,其中你具有一個(gè)數(shù)字矩陣,該矩陣也稱為Channel。

總結(jié):

  • 圖像以數(shù)字矩陣的形式存儲(chǔ)在計(jì)算機(jī)中,其中這些數(shù)字稱為像素值。
  • 這些像素值代表每個(gè)像素的強(qiáng)度:0代表黑色,255代表白色。
  • 數(shù)字矩陣稱為通道,對(duì)于灰度圖像,我們只有一個(gè)通道。

2、彩色圖像如何存儲(chǔ)在計(jì)算機(jī)中

現(xiàn)在我們有了關(guān)于如何將灰度圖像存儲(chǔ)在計(jì)算機(jī)中的想法,讓我們看一個(gè)彩色圖像的示例。讓我們以彩色圖像為例,這是一條美女的圖像:

該圖像由許多顏色組成,幾乎所有顏色都可以從三種原色(紅色,綠色和藍(lán)色)生成。

我們可以說每個(gè)彩色圖像都是由這三種顏色或3個(gè)通道(紅色,綠色和藍(lán)色)生成。

這意味著在彩色圖像中,矩陣的數(shù)量或通道的數(shù)量將會(huì)更多。

在此特定示例中,我們有3個(gè)矩陣:1個(gè)用于紅色的矩陣,稱為紅色通道。

另一個(gè)綠色的稱為綠色通道。

最后是藍(lán)色的矩陣,也稱為藍(lán)色通道。

這些像素都具有從0到255的值,其中每個(gè)數(shù)字代表像素的強(qiáng)度,或者你可以說紅色,綠色和藍(lán)色的陰影。最后,所有這些通道或所有這些矩陣都將疊加在一起,這樣,當(dāng)圖像的形狀加載到計(jì)算機(jī)中時(shí),它會(huì)是

N * H * W

其中 N 表示通道數(shù)(彩色圖像 N 為 3),H 是整個(gè)高度上的像素?cái)?shù),W 是整個(gè)寬度上的像素?cái)?shù)。在這種情況下,我們有3個(gè)通道R、G和B。在我們的示例中,彩色圖像的形狀將是 6 x 5 x 3,因?yàn)槲覀冊(cè)诟叨壬嫌?個(gè)像素,在寬度上有5個(gè)像素,并且存在3個(gè)通道。

矩陣的特征值與特征向量

這個(gè)式子要怎么理解呢?

首先得先弄清矩陣的概念:一個(gè)矩陣代表的是一個(gè)線性變換規(guī)則,而一個(gè)矩陣的乘法運(yùn)行代表的是一個(gè)變換。

也就是說,我們有一個(gè)方陣(n x n),總能找到一些向量,這個(gè)矩陣跟這些向量的作用效果,只是對(duì)這個(gè)向量造成了拉伸的作用,換句話說,矩陣的作用跟一個(gè)系數(shù)的作用是等價(jià)的。

也就是如下這個(gè)式子:

在圖像處理中,有一種方法就是特征值分解。

我們都知道圖像其實(shí)就是一個(gè)像素值組成的矩陣,假設(shè)有一個(gè)100x100的圖像,對(duì)這個(gè)圖像矩陣做特征值分解,其實(shí)是在提取這個(gè)圖像中的特征,這些提取出來的特征是一個(gè)個(gè)的向量,即對(duì)應(yīng)著特征向量。

而這些特征在圖像中到底有多重要,這個(gè)重要性則通過特征值來表示。

比如 100x100 的圖像矩陣A分解之后,會(huì)得到一個(gè)100x100的特征向量組成的矩陣Q,以及一個(gè)100x100的只有對(duì)角線上的元素不為0的矩陣E,這個(gè)矩陣E對(duì)角線上的元素就是特征值,而且還是按照從大到小排列的(取模,對(duì)于單個(gè)數(shù)來說,其實(shí)就是取絕對(duì)值),也就是說這個(gè)圖像A提取出來了100個(gè)特征,這100個(gè)特征的重要性由100個(gè)數(shù)字來表示,這100個(gè)數(shù)字存放在對(duì)角矩陣E中。在實(shí)際中我們發(fā)現(xiàn),提取出來的這100個(gè)特征從他們的特征值大小來看,大部分只有前20(這個(gè)20不一定,有的是10,有的是30或者更多)個(gè)特征對(duì)應(yīng)的特征值很大,后面的就都是接近0了,也就是說后面的那些特征對(duì)圖像的貢獻(xiàn)幾乎可以忽略不計(jì)。我們知道,圖像矩陣A特征值分解后可以得到矩陣Q和矩陣E:

那么反推出去,把右邊的三個(gè)矩陣相乘肯定也能得到矩陣A。既然已經(jīng)知道了矩陣E中只有前20個(gè)特征值比較重要,那么我們不妨試試把E中除了前20個(gè)后面的都置為0,即只取圖像的前20個(gè)主要特征來恢復(fù)圖像,剩下的全部舍棄,看看此時(shí)會(huì)發(fā)生什么:

原圖:【注意:特征值分解要求必須是nxn的方陣,如果不是行列相等的方陣,請(qǐng)使用奇異值分解】

只取前10個(gè)特征值:

只取前20個(gè)特征值:

只取前50個(gè)特征值:

只取前100個(gè)特征值:

我們可以看到,在只取前20個(gè)特征值和特征向量對(duì)圖像進(jìn)行恢復(fù)的時(shí)候,基本上已經(jīng)可以看到圖像的大體輪廓了,而取到前50的時(shí)候,幾乎已經(jīng)和原圖像無異了。明白了吧,這就是所謂的矩陣的特征向量和特征值的作用。

所以歸根結(jié)底,特征向量其實(shí)反應(yīng)的是矩陣A本身固有的一些特征,本來一個(gè)矩陣就是一個(gè)線性變換,當(dāng)把這個(gè)矩陣作用于一個(gè)向量的時(shí)候,通常情況絕大部分向量都會(huì)被這個(gè)矩陣A變換得“面目全非”,但是偏偏剛好存在這么一些向量,被矩陣A變換之后居然還能保持原來的樣子,于是這些向量就可以作為矩陣的核心代表了。于是我們可以說:一個(gè)變換(即一個(gè)矩陣)可以由其特征值和特征向量完全表述,這是因?yàn)閺臄?shù)學(xué)上看,這個(gè)矩陣所有的特征向量組成了這個(gè)向量空間的一組基底。而矩陣作為變換的本質(zhì)其實(shí)不就把一個(gè)基底下的東西變換到另一個(gè)基底表示的空間中么?

圖像特征與特征向量

假設(shè)我們要判斷一個(gè)人是男的還是女的,第一反應(yīng)可能是“頭發(fā)”,其次是“聲音”,或者“衣著”之類的,一般通過以上3個(gè)特征就能非常直觀地判斷出來是男的還是女的。

但是呢,出題人A特別壞,出題人A說:這個(gè)人,他有一雙明亮的大眼睛,有一頭烏黑的頭發(fā),喜歡出入酒吧,一般十點(diǎn)鐘上班,聲音比較細(xì)膩,走路比較急,還有,喜歡吃零食,喜歡穿淺色衣服。

出題人B比較好,出題人B說:他頭發(fā)比較長,說話比較溫柔,穿的比較陽光,聲線比較細(xì)。

我們一聽B的說法,就很直觀地覺得這個(gè)人八九不離十是位女生,而從A的判斷中,我們還是模棱兩個(gè)。這個(gè)就涉及到信息量的問題。A給的特征非常多,信息量很大,但是。。。似乎沒什么用,而B給的特征少,但是基本足夠了。就像圖1,他的數(shù)據(jù)分布特別散漫,而圖3的分布相對(duì)集中,是一個(gè)道理的。相對(duì)于信息量大的特征,我們?nèi)ヌ暨x特征、做出判斷是非常困難的。

所以?。?!我們就需要想辦法對(duì)特征做特征提取。也就是說,提取主要的、關(guān)鍵的特征就夠了?。?!而這個(gè)提取的方法就是:特征向量!??!

以橢圓舉例:

以上幾個(gè)圖,全都可以分類為橢圓,但是因?yàn)樾螤罡鳟?,?dǎo)致數(shù)據(jù)也是不對(duì)稱的,尤其體現(xiàn)在rgb值上(當(dāng)然在對(duì)圖像的數(shù)據(jù)處理,還有很多,比如subtraction,BN),其次體現(xiàn)在在各個(gè)軸的投影。但是,如果如果我們可以對(duì)它做旋轉(zhuǎn),縮放,平移等操作,變成如下的圖:

那,是不是就非常好辨認(rèn)了,而且數(shù)據(jù)也非常集中,至少在某一維度上。于是乎,我們就需要去找這么一個(gè)特征向量。卷積的過程,就是通過反向傳播,無限去擬合這么一個(gè)非常非常非常逼近的特征向量集(這個(gè)特征向量集其實(shí)就是咱們的卷積核)?。。。槭裁词翘卣飨蛄考兀ㄆ鋵?shí)單個(gè)特征向量(一個(gè)列向量或者行向量)也行)?因?yàn)橐粋€(gè)列向量,我們只能在一種維度做變換,多個(gè)列向量,就意味著多個(gè)維度聯(lián)合進(jìn)行特征提取或者曰之為特征映射。

總結(jié)一下:卷積核 ≈ 特征向量集,反向傳播 ≈ 求解特征向量集,我們的圖片 ≈ 矩陣A,注意,這些概念不是等價(jià)的,只是用易懂的方式去解釋這些原理。

卷積神經(jīng)網(wǎng)絡(luò)中,第一步一般用卷積核去提取特征,這些初始化的卷積核會(huì)在反向傳播的過程中,在迭代中被一次又一次的更新,無限地逼近我們的真實(shí)解。其實(shí)本質(zhì)沒有對(duì)圖像矩陣求解,而是初始化了一個(gè)符合某種分布的特征向量集,然后在反向傳播中無限更新這個(gè)特征集,讓它能無限逼近數(shù)學(xué)中的那個(gè)概念上的特征向量,以致于我們能用特征向量的數(shù)學(xué)方法對(duì)矩陣進(jìn)行特征提取。

卷積提取特征

卷積核(濾波器,convolution kernel)是可以用來提取特征的。圖像和卷積核卷積,就可以得到特征值,就是 destination value。

卷積核放在神經(jīng)網(wǎng)絡(luò)里,就代表對(duì)應(yīng)的權(quán)重(weight)。

卷積核和圖像進(jìn)行點(diǎn)乘(dot product),就代表卷積核里的權(quán)重單獨(dú)對(duì)相應(yīng)位置的Pixel進(jìn)行作用。

至于為什么要把點(diǎn)乘完所有結(jié)果加起來,實(shí)際上就是把所有作用效果疊加起來。就好比前面提到的RGB圖片,紅綠藍(lán)分量疊加起來產(chǎn)生了一張真正意義的美女圖。

假設(shè)我們已經(jīng)知道 RGB 的三個(gè)對(duì)應(yīng)分量以及卷積核(里面的數(shù)字即相當(dāng)于權(quán)重):

于是發(fā)生以下過程:

我們卷積輸出的特征圖(feature map),除了特征值本身外,還包含相對(duì)位置信息,比如人臉檢測(cè),眼睛,鼻子,嘴巴都是從上到下排列的,那么提取出的相應(yīng)的特征值也是按照這個(gè)順序排列的。

因此我們實(shí)現(xiàn)卷積運(yùn)算的方式就是:從左到右,每隔 stride(步幅)列 Pixel,向右移動(dòng)一次卷積核進(jìn)行卷積;從上到下,每隔 stride(步幅)行 pixel,向下移動(dòng)一次卷積核,移動(dòng)完成。

就這樣,我們先從左到右,再從上到下,直到所有 pixels 都被卷積核過了一遍,完成輸入圖片的第一層卷積層的特征提取。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python文件系統(tǒng)模塊pathlib庫

    Python文件系統(tǒng)模塊pathlib庫

    這篇文章介紹了Python中的文件系統(tǒng)模塊pathlib庫,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • Python中的Selenium異常處理

    Python中的Selenium異常處理

    這篇文章介紹了Python中的Selenium異常處理,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Django如何使用jwt獲取用戶信息

    Django如何使用jwt獲取用戶信息

    這篇文章主要介紹了Django如何使用jwt獲取用戶信息,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Selenium及python實(shí)現(xiàn)滾動(dòng)操作多種方法

    Selenium及python實(shí)現(xiàn)滾動(dòng)操作多種方法

    這篇文章主要介紹了Selenium及python實(shí)現(xiàn)滾動(dòng)操作多種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • django 使用 PIL 壓縮圖片的例子

    django 使用 PIL 壓縮圖片的例子

    今天小編就為大家分享一篇django 使用 PIL 壓縮圖片的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • numpy之多維數(shù)組的創(chuàng)建全過程

    numpy之多維數(shù)組的創(chuàng)建全過程

    這篇文章主要介紹了numpy之多維數(shù)組的創(chuàng)建全過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • python中如何使用樸素貝葉斯算法

    python中如何使用樸素貝葉斯算法

    本文主要介紹了python中如何使用樸素貝葉斯算法的相關(guān)知識(shí)。具有很好的參考價(jià)值。下面跟著小編一起來看下吧
    2017-04-04
  • Python實(shí)現(xiàn)拼接多張圖片的方法

    Python實(shí)現(xiàn)拼接多張圖片的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)拼接多張圖片的方法,以具體的實(shí)際應(yīng)用引出Python拼接圖片的思路并給出了實(shí)現(xiàn)的具體方法,需要的朋友可以參考下
    2014-12-12
  • 基于Python實(shí)現(xiàn)拉格朗日插值法

    基于Python實(shí)現(xiàn)拉格朗日插值法

    拉格朗日插值法是以法國十八世紀(jì)數(shù)學(xué)家約瑟夫·拉格朗日命名的一種多項(xiàng)式插值方法。本文將利用Python語言實(shí)現(xiàn)這一插值法,需要的可以參考一下
    2022-12-12
  • pytorch自定義二值化網(wǎng)絡(luò)層方式

    pytorch自定義二值化網(wǎng)絡(luò)層方式

    今天小編就為大家分享一篇pytorch自定義二值化網(wǎng)絡(luò)層方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01

最新評(píng)論