AIA學員提問紀錄
為什麼YOLO論文(v1)裡面,經過第一層卷積層以後,448x448的image size會變成224x224
根據論文介紹
==> K (Kernel size) = 7
==> S (stride) = 2
關鍵應該是在於,雖然論文只有寫這兩個參數,不過實作的source code裡面,有偷偷針對某些層(包括第一層)做padding,對第一層而言,其padding的大小是3
==> P (padding) = 3
然後輸入圖片的size是448x448
==> W = 448
所以根據公式: output width = [ W — K + 2xP ]/ S +1
第一層卷積的輸出size應該是:
[ 448–7 + 2x3] / 2 + 1
= 223.5 + 1
然後根據卷積(conv.)計算方式,當stride != 1,並且得到的結果有小數點的時候,最後面的那個卷積核不能完整計算的部分會被捨去,所以上面得到的223.5會無條件捨去,變成223。
所以為了讓原始影像的資訊完整的被輸入,source code才會有3的padding。犧牲掉padding出來的像素點就可以保持原始影像的完整。
最後被向下取整的223 + 1 = 224,變成第一層卷積層的輸出
以上。
學員問我的時候我還愣了一下,想說怎麼會問這個,這才發現論文寫的實在潦草。
另外也發現之乎那邊好像找不到答案,想說分享一下。
btw: 之乎那邊還有人在唬爛,手寫了一串公式然後偷偷在中間突然+1
ㄎㄎ
ref:
https://stackoverflow.com/....../how-to-calculate-the......
https://blog.csdn.net/caomin1hao/article/details/80601255