最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

原創(chuàng) | RoI Pooling 系列方法介紹(文末附源碼)

2020-12-03 18:46 作者:深藍(lán)學(xué)院  | 我要投稿

作者簡(jiǎn)介

CW,廣東深圳人,畢業(yè)于中山大學(xué)(SYSU)數(shù)據(jù)科學(xué)與計(jì)算機(jī)學(xué)院,畢業(yè)后就業(yè)于騰訊計(jì)算機(jī)系統(tǒng)有限公司技術(shù)工程與事業(yè)群(TEG)從事Devops工作,期間在AI LAB實(shí)習(xí)過(guò),實(shí)操過(guò)道路交通元素與醫(yī)療病例圖像分割、視頻實(shí)時(shí)人臉檢測(cè)與表情識(shí)別、OCR等項(xiàng)目。

目前也有在一些自媒體平臺(tái)上參與外包項(xiàng)目的研發(fā)工作,項(xiàng)目專注于CV領(lǐng)域(傳統(tǒng)圖像處理與深度學(xué)習(xí)方向均有)。

前言

RoI Pooling 是目標(biāo)檢測(cè)任務(wù)中的常見(jiàn)手段,最早在 Faster R-CNN 中提出,作用是將一系列大小不同的 RoI 投影至特征圖上,然后通過(guò)池化操作將它們處理為一致大小,從而方便后面的網(wǎng)絡(luò)層進(jìn)行處理(歷史原因,以前的網(wǎng)絡(luò)結(jié)構(gòu)中最后幾層往往是全連接層,因此需要固定的輸入尺寸),同時(shí)起到了加速計(jì)算的作用。

本文先對(duì) RoI Pooling 進(jìn)行介紹,該方法由于量化誤差而帶來(lái)了精度上的損失,后來(lái)有大神基于該方法提出了 RoI Align 和 Precise RoI Pooling,本文后半部分會(huì)讓大伙瞧瞧這倆個(gè)家伙的玩法。

文末會(huì)附上以上三部分相應(yīng)的源碼鏈接,其中 RoI Pooling 和 RoI Align 是自己手寫的純 py 實(shí)現(xiàn),作為學(xué)習(xí)參考使用;Precise RoI Pooling 是作者的原版,基于 cuda 編寫,在使用時(shí)需要編譯。

本文框架

01.RoI Pooling -- 將不同的尺寸變?yōu)橐恢?/strong>

02.RoI Align -- 沒(méi)有量化誤差

03.Precise RoI Pooling -- 無(wú)需超參,每個(gè)像素點(diǎn)均有梯度貢獻(xiàn)


(以下為正文內(nèi)容,可點(diǎn)贊加關(guān)注;原創(chuàng)來(lái)之不易,大家的支持是我們輸出高質(zhì)內(nèi)容的動(dòng)力)


一、Rol?Pooling——將不同的尺寸變?yōu)橐恢?/strong>

先來(lái)概述下 RoI Pooling 的操作:

i). RoI 的尺寸通常是對(duì)應(yīng)輸入圖像的,特征圖是輸入圖像經(jīng)過(guò)一系列卷積層后的輸出,因此,首先將 RoI 映射到特征圖上的對(duì)應(yīng)區(qū)域位置;

ii). 最終需要將尺寸不一的 RoI 變?yōu)楣潭ǖ?n x n 大小,于是將 RoI 平均劃分為 n x n 個(gè)區(qū)域;

iii). 取每個(gè)劃分而來(lái)的區(qū)域的最大像素值,相當(dāng)于對(duì)每個(gè)區(qū)域做 max pooling 操作,作為每個(gè)區(qū)域的“代表”,這樣每個(gè) RoI 經(jīng)過(guò)操作后就變?yōu)?n x n 大小。

結(jié)合一個(gè)例子說(shuō)明下 RoI Pooling 帶來(lái)的量化誤差:

如下圖,假設(shè)輸入圖像經(jīng)過(guò)一系列卷積層下采樣32倍后輸出的特征圖大小為8x8,現(xiàn)有一 RoI 的左上角和右下角坐標(biāo)(x, y 形式)分別為(0, 100) 和 (198, 224),映射至特征圖上后坐標(biāo)變?yōu)椋?, 100 / 32)和(198 / 32,224 / 32),由于像素點(diǎn)是離散的,因此向下取整后最終坐標(biāo)為(0, 3)和(6, 7),這里產(chǎn)生了第一次量化誤差。

假設(shè)最終需要將 RoI 變?yōu)楣潭ǖ?x2大小,那么將 RoI 平均劃分為2x2個(gè)區(qū)域,每個(gè)區(qū)域長(zhǎng)寬分別為 (6 - 0 + 1) / 2 和 (7 - 3 + 1) / 2 即 3.5 和 2.5,同樣,由于像素點(diǎn)是離散的,因此有些區(qū)域的長(zhǎng)取3,另一些取4,而有些區(qū)域的寬取2,另一些取3,這里產(chǎn)生了第二次量化誤差。

二、RoI Align——沒(méi)有量化誤差?

RoI Align 是在 Mask R-CNN 中提出來(lái)的,基本流程和 RoI Pooling 一致,但是沒(méi)有量化誤差,下面結(jié)合一個(gè)例子來(lái)說(shuō)明:

如上圖,輸入圖像分辨率為800x800,其中一個(gè) RoI 大小為 665x665,輸入圖像經(jīng)過(guò) VGG16 下采樣32倍后輸出分辨率為25x25的特征圖。

1). 將 RoI 映射至特征圖上,大小為 (665/32)x( 665/32) 即 20.78x20.78,注意這里不進(jìn)行取整;

2). 最終需要將 RoI 輸出為7x7大小,因此將 20.78x20.78大小的 RoI 均分為7x7個(gè)區(qū)域,每個(gè)區(qū)域大小為2.97x2.97,注意這里也沒(méi)有取整操作;

3). RoI Align 需要設(shè)置一個(gè)超參,代表每個(gè)區(qū)域的采樣點(diǎn)數(shù),即每個(gè)區(qū)域取幾個(gè)點(diǎn)來(lái)計(jì)算“代表”這個(gè)區(qū)域的值,通常為4;

4). 對(duì)每個(gè)劃分后的區(qū)域長(zhǎng)寬各劃分為一半,“十字交叉”變?yōu)?等份,取每份中心點(diǎn)位置作為其“代表”,中心點(diǎn)位置的像素值利用雙線性插值計(jì)算獲得,這樣就得到4個(gè)中心點(diǎn)像素值,采樣點(diǎn)數(shù)為4就是這個(gè)意思;

2.97x2.97區(qū)域劃分為4等份,每份利用雙線性插值計(jì)算其中心點(diǎn)像素值

5).每個(gè)2.97x2.97的區(qū)域都有4個(gè)中心點(diǎn)像素值,它們分別取4個(gè)中心點(diǎn)像素值中的最大值作為其“代表”,這樣7x7個(gè)區(qū)域就產(chǎn)生7x7個(gè)值,最終將 RoI 變?yōu)榱?x7大小。

、Precise RoI Pooling ——無(wú)需超參?????

oI Align 雖然沒(méi)有量化損失,但是卻需要設(shè)置超參,對(duì)于不同大小的特征圖和 RoI 而言這個(gè)超參的取值難以自適應(yīng),于是就有人提出 Precise RoI Pooling 來(lái)解決這一問(wèn)題,真是人才輩出吶!

Precise RoI Pooling 和 RoI Align 類似,將 RoI 映射到特征圖以及劃分區(qū)域時(shí)都沒(méi)有量化操作,不同的是,Precise RoI Pooling 沒(méi)有再次劃分子區(qū)域,而是對(duì)每個(gè)區(qū)域計(jì)算積分后取均值來(lái)“代表”每個(gè)區(qū)域,因而不需要進(jìn)行采樣。

另外,由上述公式可知,區(qū)域內(nèi)的每點(diǎn)在反向傳播中對(duì)梯度都是有貢獻(xiàn)的,而對(duì) RoI Align 和 RoI Pooling 來(lái)說(shuō),只有區(qū)域內(nèi)最大值那點(diǎn)才對(duì)梯度有貢獻(xiàn),相當(dāng)于“浪費(fèi)”了大部分的點(diǎn)。

四、總結(jié)

以上操作的原理不難理解,很多人看完后或許都有這樣的feel——咦,挺簡(jiǎn)單的嘛!但是如果試著從代碼層面去實(shí)現(xiàn)的話或許就會(huì)發(fā)現(xiàn)不是那么容易了,特別是,要能應(yīng)用到生活場(chǎng)景中。這里我手?jǐn)]的 RoI Pooling 和 RoI Align 也僅是基于原理去實(shí)現(xiàn)的,用作學(xué)習(xí)參考,真正業(yè)界上應(yīng)用的通常是用C或C++實(shí)現(xiàn)和編譯的,純 py 的版本通常由于性能原因難以落地到工程中。另外,這里附上的 Precise RoI Pooling 源碼是原作者的版本,但是我使用時(shí)一直出現(xiàn)編譯錯(cuò)誤,各位大俠可以試試,如果有類似問(wèn)題或者解決方案希望可以和我一起探討,謝謝!?

源碼參考

https://www.cnblogs.com/wangyong/p/8523814.html

https://blog.csdn.net/m_buddy/article/details/85110124

深藍(lán)學(xué)院(https://www.shenlanxueyuan.com/) 是專注人工智能的在線教育?平臺(tái),致力于構(gòu)建前沿科技課程培養(yǎng)體系的業(yè)界標(biāo)準(zhǔn),涵蓋人工智能基礎(chǔ)、機(jī)器學(xué)習(xí)、計(jì)算機(jī)視覺(jué)、自然語(yǔ)言處理、智能機(jī)器人等領(lǐng)域。

原創(chuàng) | RoI Pooling 系列方法介紹(文末附源碼)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
平凉市| 吴桥县| 如皋市| 莎车县| 宁远县| 迁安市| 南充市| 海阳市| 嘉善县| 桐乡市| 宣化县| 广西| 常宁市| 铁岭市| 林周县| 大关县| 祁东县| 友谊县| 丹巴县| 贡觉县| 苏尼特右旗| 嘉祥县| 西乡县| 东港市| 安泽县| 醴陵市| 连江县| 宜昌市| 涞源县| 杂多县| 富蕴县| 宕昌县| 定襄县| 贺州市| 自贡市| 闵行区| 枝江市| 东方市| 德格县| 巢湖市| 靖边县|