吳恩達(dá)深度學(xué)習(xí)筆記(96)-目標(biāo)檢測之Bounding Box預(yù)測

Bounding Box預(yù)測(Bounding box predictions)

在上一篇筆記中汞舱,你們學(xué)到了滑動窗口法的卷積實現(xiàn)蚁阳,這個算法效率更高稠茂,但仍然存在問題谈宛,不能輸出最精準(zhǔn)的邊界框芥映。在這個筆記中吐根,我們看看如何得到更精準(zhǔn)的邊界框逮矛。

在滑動窗口法中鲫售,你取這些離散的位置集合,然后在它們上運(yùn)行分類器径筏,在這種情況下,這些邊界框沒有一個能完美匹配汽車位置障陶,也許這個框(編號1)是最匹配的了滋恬。還有看起來這個真實值,最完美的邊界框甚至不是方形抱究,稍微有點長方形(紅色方框所示)恢氯,長寬比有點向水平方向延伸,有沒有辦法讓這個算法輸出更精準(zhǔn)的邊界框呢鼓寺?

其中一個能得到更精準(zhǔn)邊界框的算法是YOLO算法勋拟,YOLO(You only look once)意思是你只看一次,這是由Joseph Redmon妈候,Santosh Divvala敢靡,Ross Girshick和Ali Farhadi提出的算法。

這個算法是這么做的:

比如你的輸入圖像是100×100的苦银,然后在圖像上放一個網(wǎng)格啸胧。為了介紹起來簡單一些,我用3×3網(wǎng)格幔虏,實際實現(xiàn)時會用更精細(xì)的網(wǎng)格纺念,可能是19×19∠肜ǎ基本思路是使用圖像分類和定位算法(前幾個筆記中介紹過的)陷谱,然后將算法應(yīng)用到9個格子上。(基本思路是瑟蜈,采用圖像分類和定位算法烟逊,本周第一個筆記介紹過的,逐一應(yīng)用在圖像的9個格子中踪栋。)

更具體一點焙格,你需要這樣定義訓(xùn)練標(biāo)簽,所以對于9個格子中的每一個指定一個標(biāo)簽y夷都,y是8維的眷唉,和你之前看到的一樣予颤,

p_c等于0或1取決于這個綠色格子中是否有圖像。

然后b_x冬阳、b_y蛤虐、b_h和b_w作用就是,如果那個格子里有對象肝陪,那么就給出邊界框坐標(biāo)驳庭。

然后c_1、c_2和c_3就是你想要識別的三個類別氯窍,背景類別不算饲常,所以你嘗試在背景類別中識別行人、汽車和摩托車狼讨,那么c_1贝淤、c_2和c_3可以是行人、汽車和摩托車類別政供。這張圖里有9個格子播聪,所以對于每個格子都有這么一個向量。

我們看看左上方格子布隔,這里這個(編號1)离陶,里面什么也沒有,所以左上格子的標(biāo)簽向量y是

然后這個格子(編號2)的輸出標(biāo)簽y也是一樣衅檀,這個格子(編號3)招刨,還有其他什么也沒有的格子都一樣。

現(xiàn)在這個格子呢哀军?

講的更具體一點计济,這張圖有兩個對象,YOLO算法做的就是排苍,取兩個對象的中點沦寂,然后將這個對象分配給包含對象中點的格子

所以左邊的汽車就分配到這個格子上(編號4)淘衙,然后這輛Condor(車型:神鷹)中點在這里传藏,分配給這個格子(編號6)。所以即使中心格子(編號5)同時有兩輛車的一部分彤守,我們就假裝中心格子沒有任何我們感興趣的對象毯侦,所以對于中心格子,分類標(biāo)簽y和這個向量類似具垫,和這個沒有對象的向量類似侈离,即

而對于這個格子,這個用綠色框起來的格子(編號4)筝蚕,目標(biāo)標(biāo)簽就是這樣的卦碾,這里有一個對象铺坞,p_c=1,然后你寫出b_x洲胖、b_y济榨、b_h和b_w來指定邊界框位置,然后還有

類別1是行人绿映,那么c_1=0擒滑,

類別2是汽車,所以c_2=1叉弦,

類別3是摩托車丐一,則數(shù)值c_3=0,即

右邊這個格子(編號6)也是類似的淹冰,因為這里確實有一個對象钝诚,它的向量應(yīng)該是這個樣子的,

作為目標(biāo)向量對應(yīng)右邊的格子榄棵。

所以對于這里9個格子中任何一個,你都會得到一個8維輸出向量潘拱,因為這里是3×3的網(wǎng)格疹鳄,所以有9個格子,總的輸出尺寸是3×3×8芦岂,所以目標(biāo)輸出是3×3×8瘪弓。因為這里有3×3格子,然后對于每個格子禽最,你都有一個8維向量y腺怯,所以目標(biāo)輸出尺寸是3×3×8。

對于這個例子中川无,左上格子是1×1×8呛占,對應(yīng)的是9個格子中左上格子的輸出向量。所以對于這3×3中每一個位置而言懦趋,對于這9個格子晾虑,每個都對應(yīng)一個8維輸出目標(biāo)向量y,其中一些值可以是dont care-s(即仅叫?)帜篇,如果這里沒有對象的話。所以總的目標(biāo)輸出诫咱,這個圖片的輸出標(biāo)簽尺寸就是3×3×8笙隙。

如果你現(xiàn)在要訓(xùn)練一個輸入為100×100×3的神經(jīng)網(wǎng)絡(luò),現(xiàn)在這是輸入圖像坎缭,然后你有一個普通的卷積網(wǎng)絡(luò)竟痰,卷積層签钩,最大池化層等等,最后你會有這個凯亮,選擇卷積層和最大池化層边臼,這樣最后就映射到一個3×3×8輸出尺寸。

所以你要做的是假消,有一個輸入x柠并,就是這樣的輸入圖像,然后你有這些3×3×8的目標(biāo)標(biāo)簽y富拗。當(dāng)你用反向傳播訓(xùn)練神經(jīng)網(wǎng)絡(luò)時臼予,將任意輸入x映射到這類輸出向量y。

所以這個算法的優(yōu)點在于神經(jīng)網(wǎng)絡(luò)可以輸出精確的邊界框啃沪,所以測試的時候粘拾,你做的是喂入輸入圖像x,然后跑正向傳播创千,直到你得到這個輸出y缰雇。然后對于這里3×3位置對應(yīng)的9個輸出,我們在輸出中展示過的追驴,你就可以讀出1或0(編號1位置)械哟,你就知道9個位置之一有個對象。如果那里有個對象殿雪,那個對象是什么(編號3位置)暇咆,還有格子中這個對象的邊界框是什么(編號2位置)。只要每個格子中對象數(shù)目沒有超過1個丙曙,這個算法應(yīng)該是沒問題的爸业。一個格子中存在多個對象的問題,我們稍后再討論亏镰。但實踐中扯旷,我們這里用的是比較小的3×3網(wǎng)格,實踐中你可能會使用更精細(xì)的19×19網(wǎng)格索抓,所以輸出就是19×19×8薄霜。這樣的網(wǎng)格精細(xì)得多,那么多個對象分配到同一個格子得概率就小得多纸兔。

重申一下惰瓜,把對象分配到一個格子的過程是,你觀察對象的中點汉矿,然后將這個對象分配到其中點所在的格子崎坊,所以即使對象可以橫跨多個格子,也只會被分配到9個格子其中之一洲拇,就是3×3網(wǎng)絡(luò)的其中一個格子奈揍,或者19×19網(wǎng)絡(luò)的其中一個格子曲尸。在19×19網(wǎng)格中,兩個對象的中點(圖中藍(lán)色點所示)處于同一個格子的概率就會更低男翰。

所以要注意另患,首先這和圖像分類和定位算法非常像,我們在本周第一節(jié)課講過的蛾绎,就是它顯式地輸出邊界框坐標(biāo)昆箕,所以這能讓神經(jīng)網(wǎng)絡(luò)輸出邊界框,可以具有任意寬高比租冠,并且能輸出更精確的坐標(biāo)鹏倘,不會受到滑動窗口分類器的步長大小限制。其次顽爹,這是一個卷積實現(xiàn)纤泵,你并沒有在3×3網(wǎng)格上跑9次算法,或者镜粤,如果你用的是19×19的網(wǎng)格捏题,19平方是361次,所以你不需要讓同一個算法跑361次肉渴。相反公荧,這是單次卷積實現(xiàn),但你使用了一個卷積網(wǎng)絡(luò)黄虱,有很多共享計算步驟,在處理這3×3計算中很多計算步驟是共享的庸诱,或者你的19×19的網(wǎng)格捻浦,所以這個算法效率很高。

事實上YOLO算法有一個好處桥爽,也是它受歡迎的原因朱灿,因為這是一個卷積實現(xiàn),實際上它的運(yùn)行速度非衬扑模快盗扒,可以達(dá)到實時識別。在結(jié)束之前我還想給你們分享一個小細(xì)節(jié)缀去,如何編碼這些邊界框b_x侣灶、b_y、b_h和b_w缕碎,我們在下一張圖上討論褥影。

這里有兩輛車,我們有個3×3網(wǎng)格咏雌,我們以右邊的車為例(編號1)凡怎,紅色格子里有個對象校焦,所以目標(biāo)標(biāo)簽y就是,p_c=1统倒,然后b_x寨典、b_y、b_h和b_w房匆,然后c_1=0耸成,c_2=1,c_3=0坛缕,即

你怎么指定這個邊界框呢墓猎?

Specify the bounding boxes:

在YOLO算法中,對于這個方框(編號1所示)赚楚,我們約定左上這個點是(0,0)毙沾,然后右下這個點是(1,1),要指定橙色中點的位置,b_x大概是0.4宠页,因為它的位置大概是水平長度的0.4左胞,然后b_y大概是0.3,然后邊界框的高度用格子總體寬度的比例表示举户,所以這個紅框的寬度可能是藍(lán)線(編號2所示的藍(lán)線)的90%烤宙,所以b_h是0.9,它的高度也許是格子總體高度的一半俭嘁,這樣的話b_w就是0.5躺枕。換句話說,b_x供填、b_y拐云、b_h和b_w單位是相對于格子尺寸的比例,所以b_x和b_y必須在0和1之間近她,因為從定義上看叉瘩,橙色點位于對象分配到格子的范圍內(nèi),如果它不在0和1之間粘捎,如果它在方塊外薇缅,那么這個對象就應(yīng)該分配到另一個格子上。這個值(b_h和b_w)可能會大于1攒磨,特別是如果有一輛汽車的邊界框是這樣的(編號3所示)泳桦,那么邊界框的寬度和高度有可能大于1。

指定邊界框的方式有很多娩缰,但這種約定是比較合理的蓬痒,如果你去讀YOLO的研究論文,YOLO的研究工作有其他參數(shù)化的方式,可能效果會更好梧奢,我這里就只給出了一個合理的約定狱掂,用起來應(yīng)該沒問題。不過還有其他更復(fù)雜的參數(shù)化方式亲轨,涉及到sigmoid函數(shù)趋惨,確保這個值(b_x和b_y)介于0和1之間,然后使用指數(shù)參數(shù)化來確保這些(b_h和b_w)都是非負(fù)數(shù)惦蚊,因為0.9和0.5器虾,這個必須大于等于0。還有其他更高級的參數(shù)化方式蹦锋,可能效果要更好一點兆沙,但我這里講的辦法應(yīng)該是管用的。

這就是YOLO算法莉掂,你只看一次算法葛圃,在接下來的幾個筆記中,我會告訴你一些其他的思路可以讓這個算法做的更好憎妙。在此期間库正,如果你感興趣,也可以看看YOLO的論文厘唾,在前幾張幻燈片底部引用的YOLO論文(Redmon, Joseph, et al. "You Only Look Once: Unified, Real-Time Object Detection." (2015):779-788.)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末褥符,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子抚垃,更是在濱河造成了極大的恐慌喷楣,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鹤树,死亡現(xiàn)場離奇詭異铣焊,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)魂迄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進(jìn)店門粗截,熙熙樓的掌柜王于貴愁眉苦臉地迎上來惋耙,“玉大人捣炬,你說我怎么就攤上這事≌篱唬” “怎么了湿酸?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長灭美。 經(jīng)常有香客問我推溃,道長,這世上最難降的妖魔是什么届腐? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任铁坎,我火速辦了婚禮蜂奸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘硬萍。我一直安慰自己扩所,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布朴乖。 她就那樣靜靜地躺著祖屏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪买羞。 梳的紋絲不亂的頭發(fā)上袁勺,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天,我揣著相機(jī)與錄音畜普,去河邊找鬼期丰。 笑死,一個胖子當(dāng)著我的面吹牛漠嵌,可吹牛的內(nèi)容都是我干的咐汞。 我是一名探鬼主播,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼儒鹿,長吁一口氣:“原來是場噩夢啊……” “哼化撕!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起约炎,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤植阴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后圾浅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掠手,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年狸捕,在試婚紗的時候發(fā)現(xiàn)自己被綠了喷鸽。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡灸拍,死狀恐怖做祝,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鸡岗,我是刑警寧澤混槐,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站轩性,受9級特大地震影響声登,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一悯嗓、第九天 我趴在偏房一處隱蔽的房頂上張望件舵。 院中可真熱鬧,春花似錦脯厨、人聲如沸芦圾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽个少。三九已至,卻和暖如春眯杏,著一層夾襖步出監(jiān)牢的瞬間夜焦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工岂贩, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留茫经,地道東北人。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓萎津,卻偏偏與公主長得像卸伞,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子锉屈,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,700評論 2 345

推薦閱讀更多精彩內(nèi)容