[問題] 關於每一層conv所辨識的特徵
大家好,小弟是最近剛開始接觸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
09/06 13:03, 1F
推
09/06 13:44,
6年前
, 2F
09/06 13:44, 2F
→
09/06 13:45,
6年前
, 3F
09/06 13:45, 3F
→
09/06 13:46,
6年前
, 4F
09/06 13:46, 4F
什麼意思 所以文中提到利用梯度「上升」找到能產生最大輸出結果的圖片 這個方法不見
得可行?
※ 編輯: y956403 (101.9.193.107), 09/06/2018 14:48:22
推
09/06 15:04,
6年前
, 5F
09/06 15:04, 5F
推
09/06 15:15,
6年前
, 6F
09/06 15:15, 6F
所以原文在分析每一層時,都放上若干張圖片,是指對那層的若干個filter而言,這些圖
片分別能使那些filter各別有最大輸出,而這些圖片就只是原圖,這樣嗎?
※ 編輯: y956403 (101.9.193.107), 09/06/2018 15:50:30
推
09/06 16:09,
6年前
, 7F
09/06 16:09, 7F
→
09/06 16:09,
6年前
, 8F
09/06 16:09, 8F
→
09/06 18:12,
6年前
, 9F
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
09/06 18:35, 12F
→
09/06 18:38,
6年前
, 13F
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
09/06 18:41, 14F
→
09/06 18:41,
6年前
, 15F
09/06 18:41, 15F
→
09/06 18:43,
6年前
, 16F
09/06 18:43, 16F
→
09/06 18:43,
6年前
, 17F
09/06 18:43, 17F
取決於kernel的weight,那如果這個kernel負責的特徵是直條紋,當圖片跟它做convolut
ion以後,直條紋會比其他特徵更明顯,以上敘述A是正確的嗎
然後如果我調整圖片使convolution的結果最大,這個時候看圖片會有很多直條紋,以上
敘述B是正確嗎
→
09/06 18:45,
6年前
, 18F
09/06 18:45, 18F
推
09/06 18:54,
6年前
, 19F
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
09/06 18:57, 21F
推
09/06 19:02,
6年前
, 22F
09/06 19:02, 22F
→
09/06 19:02,
6年前
, 23F
09/06 19:02, 23F
→
09/06 19:02,
6年前
, 24F
09/06 19:02, 24F
我指的相似是圖片有大量該filter負責的特徵,不是直接長得像,filter不能畫出來,圖
片可以,不可能用人眼就說:哦,長得很像。這樣對嗎
推
09/06 19:54,
6年前
, 25F
09/06 19:54, 25F
→
09/06 19:55,
6年前
, 26F
09/06 19:55, 26F
→
09/06 19:57,
6年前
, 27F
09/06 19:57, 27F
不太懂「很難說」的原因,如果feature map出現很多直條紋,不就是對應的那個filter
是負責直條紋的特徵,才會留下這些直條紋嗎
→
09/06 21:28,
6年前
, 28F
09/06 21:28, 28F
→
09/06 21:28,
6年前
, 29F
09/06 21:28, 29F
→
09/06 21:28,
6年前
, 30F
09/06 21:28, 30F
respond跟原圖的關係我就不太懂了,剛好最近在看傳統計算機視覺的課程,會去看看這
些的!
→
09/06 21:31,
6年前
, 31F
09/06 21:31, 31F
→
09/06 21:31,
6年前
, 32F
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
09/07 07:14, 33F
→
09/07 07:14,
6年前
, 34F
09/07 07:14, 34F
→
09/07 07:16,
6年前
, 35F
09/07 07:16, 35F
→
09/07 07:17,
6年前
, 36F
09/07 07:17, 36F
→
09/07 07:18,
6年前
, 37F
09/07 07:18, 37F
DataScience 近期熱門文章
PTT數位生活區 即時熱門文章
-4
30