[問題] 關於每一層conv所辨識的特徵

看板DataScience作者 (哈哈哈哈呵呵呵嗚嗚嗚嗚)時間6年前 (2018/09/06 08:27), 6年前編輯推噓7(7030)
留言37則, 6人參與, 6年前最新討論串1/1
大家好,小弟是最近剛開始接觸CV的學渣, 以下若有觀念錯誤的地方,還請不吝指教! https://zhuanlan.zhihu.com/p/42904109 (知乎連結) 剛剛看到這篇提到「利用調整圖片,使某層有最大輸出, 再去看該層的feature map,可看出該層所辨識的特徵」 小弟不懂的地方是: 1. 去看一個CNN在某層負責的特徵, 應該是這個model經過training之後吧? 也就是說,用一大堆車子圖片訓練完的model,它的第某層負責的特徵, 和用一大堆乳牛圖片訓練完的model,它的第某層負責的特徵,會有不同? (可能差不多,畢竟低層數就是簡單特徵,高層數就是複雜特徵,相去不遠) 還沒train的model裡面參數都是random沒有意義的, 好像不太有看的意義? 2. 假設我是要看第三層所負責的特徵, 我是要用一張圖片從頭傳入,然後不斷調整使第三層有最大輸出, 當它有最大輸出時,其他層的輸出通常不會是最大, 因為每一層負責的特徵不同,這樣對吧? 3. 要看第三層負責的特徵是看第三層產生的feature map們, 如果很多張都出現很多直條紋,表示這層的filter們負責的特徵是直條紋, 對直條紋比較敏感,這樣對吧? 那這個時候看傳入的那張圖片也會是傾向於出現直條紋嗎? 我知道的是:相似的東西convolution後會有大的輸出, 但第三層的input是第二層的output,當第三層有大的輸出時, 跟第三層filter們相似的應該會是第二層產生的feature map們, 所以代表第二層的feature map們會有很多直條紋? 打到這裡我又開始懷疑自己:那這樣的話應該是看第二層的feature maps來 得知第三層的負責特徵才對呀? 以上有錯歡迎指正, 打得有點亂還請見諒, 實在不知道有什麼更適合的板可以問這種基本問題, 打擾各位了QQ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.114.212.6 ※ 文章網址: https://www.ptt.cc/bbs/DataScience/M.1536193666.A.7DE.html

09/06 13:03, 6年前 , 1F
3 的第一句話不對吧
09/06 13:03, 1F

09/06 13:44, 6年前 , 2F
我覺得3這種分析可能很難說 我看了keras的code
09/06 13:44, 2F

09/06 13:45, 6年前 , 3F
我覺得唯一能得出的結論是深層的filter 傾向獲取複雜的
09/06 13:45, 3F

09/06 13:46, 6年前 , 4F
feature 畢竟他先引入vgg
09/06 13:46, 4F
什麼意思 所以文中提到利用梯度「上升」找到能產生最大輸出結果的圖片 這個方法不見 得可行? ※ 編輯: y956403 (101.9.193.107), 09/06/2018 14:48:22

09/06 15:04, 6年前 , 5F
是對某一個filter的最大輸出 不是某一層吧
09/06 15:04, 5F

09/06 15:15, 6年前 , 6F
3的確不對 feature map看不出filter長怎樣
09/06 15:15, 6F
所以原文在分析每一層時,都放上若干張圖片,是指對那層的若干個filter而言,這些圖 片分別能使那些filter各別有最大輸出,而這些圖片就只是原圖,這樣嗎? ※ 編輯: y956403 (101.9.193.107), 09/06/2018 15:50:30

09/06 16:09, 6年前 , 7F
對 就是random noise對若干個filter做gradient ascent
09/06 16:09, 7F

09/06 16:09, 6年前 , 8F
的結果
09/06 16:09, 8F

09/06 18:12, 6年前 , 9F
史丹佛的CS231有一整堂課在講visualization可以去看
09/06 18:12, 9F

09/06 18:34, 6年前 , 10F
“有最大輸出才看得出特徵”有這種事??第一次聽說ㄟ
09/06 18:34, 10F

09/06 18:34, 6年前 , 11F
有根據ㄇ
09/06 18:34, 11F

09/06 18:35, 6年前 , 12F
1 應該沒什麼問題
09/06 18:35, 12F

09/06 18:38, 6年前 , 13F
2 為什麼某一層有最大輸出時其他層不是最大?
09/06 18:38, 13F
我的想法是:當圖片跟某個filter很相似時,convolution出來的輸出會很大,這時候看 圖片才有意義(否則不相似,看了圖片也不代表什麼) 讓某個filter有最大輸出的圖片,不代表會讓其他filter有最大輸出,因為它是對這個fi lter的輸出做gradient ascent,不是對那個filter 有錯請用力指正!! ※ 編輯: y956403 (101.9.193.107), 09/06/2018 18:44:41

09/06 18:41, 6年前 , 14F
3的敘述蠻模糊的 例如“相似的東西conv後有大的輸出
09/06 18:41, 14F

09/06 18:41, 6年前 , 15F
”,是什麼跟什麼相似
09/06 18:41, 15F

09/06 18:43, 6年前 , 16F
“conv(直條紋)=直條紋” 的說法並不成立,conv會出
09/06 18:43, 16F

09/06 18:43, 6年前 , 17F
來什麼完全取決於kernel weights
09/06 18:43, 17F
取決於kernel的weight,那如果這個kernel負責的特徵是直條紋,當圖片跟它做convolut ion以後,直條紋會比其他特徵更明顯,以上敘述A是正確的嗎 然後如果我調整圖片使convolution的結果最大,這個時候看圖片會有很多直條紋,以上 敘述B是正確嗎

09/06 18:45, 6年前 , 18F
回樓上,找filter最大輸出是一種幫人類理解CNN的方法
09/06 18:45, 18F

09/06 18:54, 6年前 , 19F
對 正如樓上所言 只是想辦法解釋這個模型 實際上filter
09/06 18:54, 19F

09/06 18:54, 6年前 , 20F
不會長那個樣子
09/06 18:54, 20F
fitler不會長那樣我大概知道,畢竟它是3D的矩陣,哪畫的出來。我好奇的是「解釋模型 」,最大輸出的時候去看原圖,這時候原圖跟filter的關係是什麼?

09/06 18:57, 6年前 , 21F
2我懂惹 仔細想的確是這樣
09/06 18:57, 21F

09/06 19:02, 6年前 , 22F
另外回原po 說圖片跟filter相似也有點問題 因為中間層
09/06 19:02, 22F

09/06 19:02, 6年前 , 23F
都是多個channel 實際做起來其實像三維的conv 所以不會
09/06 19:02, 23F

09/06 19:02, 6年前 , 24F
是你理解的"長的像"
09/06 19:02, 24F
我指的相似是圖片有大量該filter負責的特徵,不是直接長得像,filter不能畫出來,圖 片可以,不可能用人眼就說:哦,長得很像。這樣對嗎

09/06 19:54, 6年前 , 25F
我的意思是說 因為他是取其中一層的一個filter 在這之前
09/06 19:54, 25F

09/06 19:55, 6年前 , 26F
會經過預訓練的filter 所以既不知道input也不知道filter
09/06 19:55, 26F

09/06 19:57, 6年前 , 27F
這樣很難說某個f-map和對應的那個filter之間的關係
09/06 19:57, 27F
不太懂「很難說」的原因,如果feature map出現很多直條紋,不就是對應的那個filter 是負責直條紋的特徵,才會留下這些直條紋嗎

09/06 21:28, 6年前 , 28F
最大response在原圖的區域反應出該層該filter的target pat
09/06 21:28, 28F

09/06 21:28, 6年前 , 29F
tern,不清楚的話先去試試sobel或gabor filter這種比較單
09/06 21:28, 29F

09/06 21:28, 6年前 , 30F
09/06 21:28, 30F
respond跟原圖的關係我就不太懂了,剛好最近在看傳統計算機視覺的課程,會去看看這 些的!

09/06 21:31, 6年前 , 31F
普遍CNN是3D kernel做2D convolution,除了第一層以外的fi
09/06 21:31, 31F

09/06 21:31, 6年前 , 32F
lter都無法直接視覺化target pattern
09/06 21:31, 32F
如果convolution的結果看到很多直條紋,不就是代表該filter的target pattern是直條 紋嗎?還是你說的視覺化是指直接看filter的長相(如果是的話我大概懂,filter是3D的 ,無法畫出) ※ 編輯: y956403 (140.114.212.6), 09/06/2018 23:25:08

09/07 07:14, 6年前 , 33F
feature map查看到的結果是直條紋,代表該層該filter的
09/07 07:14, 33F

09/07 07:14, 6年前 , 34F
target pattern在原圖的分布是呈現直條紋狀
09/07 07:14, 34F

09/07 07:16, 6年前 , 35F

09/07 07:17, 6年前 , 36F
0:50 處有低層次filter的展示,該filter很接近sobel效果
09/07 07:17, 36F

09/07 07:18, 6年前 , 37F
一個是影像 gradient +x, 一個是-x
09/07 07:18, 37F
文章代碼(AID): #1Ra7I2VU (DataScience)
文章代碼(AID): #1Ra7I2VU (DataScience)