【論文學(xué)習(xí)筆記】PSENet:Shape Robust Text Detection with Progressive Scale Expansion Network

論文地址:https://arxiv.org/pdf/1903.12473.pdf

論文翻譯:https://blog.csdn.net/m0_38007695/article/details/96425198?depth_1-utm_source=distribute.pc_relevant_right.none-task&utm_source=distribute.pc_relevant_right.none-task

Pytorch代碼實(shí)現(xiàn):https://github.com/whai362/PSENet


最新一版是19年的CVPR群凶,由南京大學(xué)鸽照、同濟(jì)大學(xué)和face++合作,代碼已開(kāi)源睬关。

介紹

?????????? 針對(duì)現(xiàn)在主流的一些實(shí)現(xiàn)文本檢測(cè)的方法,一種是基于回歸(regression-based)的毡证,例如圖1(b)所示电爹,該方法需要四邊形的bounding box,并不能處理具有任意形狀的文本料睛;另一種是基于分割(segmentation-based)的方法丐箩,如圖1(c)所示,該方法是基于像素級(jí)分類來(lái)定位文本實(shí)例恤煞,其可以檢測(cè)不規(guī)則的文本屎勘,效果也不錯(cuò),但是不容易將相鄰文本區(qū)分開(kāi)來(lái)居扒,從而可能會(huì)導(dǎo)致多個(gè)不同的文本區(qū)域會(huì)被預(yù)測(cè)為一個(gè)挑秉。圖1(d)是本文提出的PSENet方法(本質(zhì)也是一種基于語(yǔ)義分割的改進(jìn)版文本檢測(cè)方法),有圖可見(jiàn)苔货,該方法能同時(shí)很好的解決上述兩個(gè)問(wèn)題犀概,即可以準(zhǔn)確的檢測(cè)出任意形狀的不規(guī)則文本且能將其區(qū)分開(kāi)來(lái)

???????? 對(duì)于基于分割的方法夜惭,相較于基于回歸姻灶,可以較好的實(shí)現(xiàn)對(duì)彎曲不規(guī)則文本的檢測(cè),但由于語(yǔ)義分割只關(guān)心每個(gè)像素的分類問(wèn)題诈茧,所以即使文字區(qū)域的一些邊緣像素分類錯(cuò)誤产喉,其對(duì)loss的影響也不大。針對(duì)這個(gè)問(wèn)題,一個(gè)直接的思路是:增大文字塊之間的距離曾沈,使它們離得遠(yuǎn)一點(diǎn)这嚣。基于這個(gè)思路塞俱,PSENet 方法引入了新的概念“kernel”姐帚,即文字塊的核心。

????? ? ?? 進(jìn)一步介紹一下“kernel”在本文中起到的作用障涯,這個(gè)“kernel”只是文字塊的核心罐旗,并不是完整的文字塊,故不能作為最終的檢測(cè)結(jié)果唯蝶。那么九秀,如何通過(guò)“kernel”來(lái)構(gòu)建完整的文字塊呢?本文通過(guò)一種基于廣度優(yōu)先搜索(BFS)的漸進(jìn)擴(kuò)展算法來(lái)構(gòu)建完整的文字塊粘我。這個(gè)算法的核心思想是:從每個(gè)“kernel”出發(fā)鼓蜒,利用廣度優(yōu)先搜索來(lái)不斷地合并周圍的像素,使得“kernel”不斷地?cái)U(kuò)展征字,最后得到完整的文字塊友酱。

圖1? 不同方法的文本檢測(cè)結(jié)果

PSENet 方法簡(jiǎn)介

主干網(wǎng)絡(luò)ResNet,基本框架FPN柔纵。


【補(bǔ)充】FPN詳解:? https://blog.csdn.net/WZZ18191171661/article/details/79494534


亮點(diǎn):提出了內(nèi)核(把S1,S2,...,Sn?中的文本實(shí)例的分割區(qū)域稱為內(nèi)核kernels)和漸進(jìn)式擴(kuò)展算法(Progressive Scale Expansion )缔杉。

優(yōu)勢(shì):

① 是一個(gè)基于像素分割的方法,能夠精確地定位任意形狀的文本實(shí)例搁料。

② 提出了漸進(jìn)式擴(kuò)展算法或详,即使兩個(gè)文本實(shí)例離得很近也可以分開(kāi),從而保證文本實(shí)例的精準(zhǔn)定位郭计。

PSENet 方法流程

圖 2? 網(wǎng)絡(luò)架構(gòu)

1. 輸入圖像霸琴,從主干網(wǎng)絡(luò)獲得四個(gè)256通道特征圖(即P2,P3,P4,P5)。

2. 通過(guò)函數(shù)C(?)?用1024個(gè)通道融合四個(gè)特征映射得到feature? map? F?(進(jìn)一步將語(yǔ)義特征從低級(jí)別升級(jí)到高級(jí)別):

3. 隨后將F通過(guò)Conv(3,3)? BN ? ReLU? 層昭伸,并減少至256個(gè)通道梧乘。 接下來(lái),它通過(guò)n?個(gè)Conv(1,1)?Up?Sigmoid??層庐杨,并產(chǎn)生n?個(gè)分割結(jié)果S1,S2,...,Sn?选调。

補(bǔ)充說(shuō)明:Si是圖像文字的分割結(jié)果,S1是最小的文字區(qū)域分割結(jié)果灵份,而Sn給出的是最大的文字區(qū)域分割結(jié)果(理想情況下就是GroundTruth)

4. 使用漸進(jìn)式算法將Si中的所有實(shí)例的內(nèi)核逐漸擴(kuò)展到它們?cè)赟n中的完整形狀仁堪,并獲得最終的檢測(cè)結(jié)果R。

對(duì)于訓(xùn)練步驟:執(zhí)行1,2,3, 得到n個(gè)分割結(jié)果S1,S2,...,Sn之后填渠,對(duì)每一個(gè)分割結(jié)果和其對(duì)應(yīng)的ground truth計(jì)算損失弦聂,反向傳播鸟辅,更新參數(shù)。

對(duì)于推理步驟:執(zhí)行1,2,3,4得出最終的檢測(cè)結(jié)果莺葫。


PSENet 方法細(xì)節(jié)

1匪凉、漸進(jìn)擴(kuò)展算法(Progressive Scale Expansion)

??????? 漸進(jìn)擴(kuò)展算法的主要思想就是利用BFS(廣度優(yōu)先搜索)算法逐漸擴(kuò)展kernel(就是下圖中的白色的部分捺檬,預(yù)測(cè)的文本行區(qū)域)的大小再层,最終擴(kuò)增到原始文本行大小(如S3)。

???????? 漸進(jìn)擴(kuò)展算法的輸入是不同的kernel scale 的分割圖S1,S2,...Sn欺冀,輸出是最后的檢測(cè)結(jié)果R树绩。

圖3? 漸進(jìn)尺度擴(kuò)展算法的流程萨脑。其中CC表示求連通區(qū)域隐轩,EX表示擴(kuò)展操作。

???????? 令n=3個(gè)不同尺度的kernel(如圖a,e,f)則其漸進(jìn)擴(kuò)展的算法過(guò)程如圖3所示渤早。

?????????? 首先职车,對(duì)S1(上圖a,代表最小kernel的分割結(jié)果)求連通區(qū)域鹊杖,其內(nèi)部有四個(gè)連通域C={c1,c2,c3,c4}悴灵,經(jīng)CC操作后得到不同的連通域,即圖b(四個(gè)連通區(qū)域使用不同顏色標(biāo)記)÷畋停現(xiàn)在我們已經(jīng)得到了圖b中的四個(gè)連通域(小kernel积瞒,不同文本行之間的margin很大,很容易區(qū)分開(kāi))登下,且我們已知S2中的kernel是比S1中的kernel大的茫孔,也就是可以說(shuō)S2中的kernel是包含S1中的kernel的。現(xiàn)在我們的任務(wù)就是將屬于S2中的kernel的但不屬于S1中的kernel的像素點(diǎn)(即圖g左圖中的灰色的部分被芳,藍(lán)色和橘色部分分別表示S1中的兩個(gè)連通域)進(jìn)行分配缰贝。如圖所示,在灰色區(qū)域(S2的kernel范圍)內(nèi)畔濒,將b圖所找到的連通域的每個(gè)pixel以BFS的方式剩晴,逐個(gè)向上下左右擴(kuò)展,即相當(dāng)于把S1中預(yù)測(cè)的文本行的區(qū)域逐漸變寬(或者換種說(shuō)法:對(duì)于S2中kernel的每個(gè)像素點(diǎn)侵状,把它們都分別分配給S1中的某個(gè)連通域)赞弥。這里還有一個(gè)問(wèn)題,如圖g右圖所示趣兄,圖中值為2的點(diǎn)為沖突點(diǎn)嗤攻,例子中的兩個(gè)連通域都可能擴(kuò)展到這個(gè)pixel,論文中對(duì)這種沖突的解決方法就是“先到先得”原則诽俯,這對(duì)最后的結(jié)果沒(méi)什么影響妇菱。

??????? 后面的S3同理承粤,最終我們抽取圖d中不同顏色標(biāo)注的連通區(qū)域作為最后的文本行檢測(cè)結(jié)果。

漸進(jìn)式擴(kuò)展算法的偽代碼見(jiàn)下圖:

其中闯团,T辛臊、P代表中間結(jié)果,Q是一個(gè)隊(duì)列房交,Neighbor(.)代表p的鄰近像素(4個(gè)方向 )彻舰。GroupByLabel(.)是根據(jù)按標(biāo)簽對(duì)中間結(jié)果T進(jìn)行分組的函數(shù)『蛭叮“Si[q]=True” 表示Si?中像素q的預(yù)測(cè)值屬于文本部分刃唤。C和E分別表示擴(kuò)展前后的內(nèi)核。

這里需要解釋一下上圖中畫(huà)線的部分白群,if的三個(gè)條件分別表示的是:q是p的鄰居尚胞,q沒(méi)有被打標(biāo)簽(還沒(méi)有被擴(kuò)展到),q是一個(gè)前景像素點(diǎn)(在當(dāng)前的Si預(yù)測(cè)的kernel內(nèi)帜慢,即擴(kuò)展是僅在灰色區(qū)域內(nèi)進(jìn)行的)

2笼裳、標(biāo)簽生成


圖5 標(biāo)簽生成

??????? 首先從網(wǎng)絡(luò)結(jié)構(gòu)中可以看出,我們需要生成不同尺度的kernel粱玲,這是需要有標(biāo)簽的圖像來(lái)進(jìn)行訓(xùn)練的躬柬。為了生成訓(xùn)練時(shí)不同尺寸kernels所對(duì)應(yīng)的ground truths,作者采用Vatti clipping 算法將原始多邊形Pn縮放di個(gè)像素從而得到Pi抽减,其中每個(gè)縮放的Pi都是使用0/1的二進(jìn)制mask來(lái)表示分割后的標(biāo)簽的允青。

????????? 假設(shè)縮放的比例為ri,則Pn和Pi之間的余量(margin)di為:

????????? 其中Area(.)代表多邊形的面積卵沉,而Perimeter(.)代表多邊形的周長(zhǎng)颠锉。

對(duì)于ri的定義為:

???????? 其中n是不同尺度的kernel的個(gè)數(shù)(即S1,S2偎箫,…木柬,Sn),m代表最小的縮放比例淹办,取值范圍為(0,1]眉枕。由上面兩式可以看出,ri由超參數(shù)n和m來(lái)決定怜森,當(dāng)i=1時(shí)速挑,ri為m,當(dāng)i=n時(shí)副硅,ri為1姥宝,因此ri的取值范圍為[m,1]。

?????????? 作者也分別將n和m取不同參數(shù)在ICDAR2015和CTW1500數(shù)據(jù)集上做了實(shí)驗(yàn)恐疲,結(jié)果如圖6所示:

圖6? 消融研究(ablation study)

???????? 固定內(nèi)核數(shù)量n=2腊满,令最小尺度m從1到0.1變化套么,從圖6(a)中我們可以發(fā)現(xiàn),當(dāng)m過(guò)大或者太小時(shí)碳蛋,測(cè)試集上的F-measures值下降胚泌。當(dāng)m太大時(shí),PSENet 很難分割離得很近的文本實(shí)例 肃弟;當(dāng)m太小時(shí)玷室,PSENet 經(jīng)常把一整個(gè)文本行錯(cuò)誤分割成不同的部分,從而造成訓(xùn)練不能很好的收斂笤受。

?????? 分別在ICDAR2015上設(shè)置m=0.4穷缤,在CTW1500上設(shè)置m=0.6,讓n從2到10增加箩兽,從圖6(b)中結(jié)果發(fā)現(xiàn)津肛,隨著n的增加,測(cè)試集上的F-measures也保持上升比肄,當(dāng)n≥5時(shí)開(kāi)始平穩(wěn)快耿。由此可知囊陡,采用多核的方法是有效的芳绩,但也不需要過(guò)多的kernels。

????????? 另外撞反,圖6(a)中的虛線表示n=1妥色,即僅使用最小尺度的內(nèi)核。由圖中可知遏片,因最小尺度的內(nèi)核不能覆蓋文本實(shí)例的完整面積嘹害,對(duì)文本的檢測(cè)和識(shí)別很不利,測(cè)試集上的F-measures也是糟糕的吮便。


3笔呀、損失函數(shù)

????????? 損失函數(shù)定義為:

?????????? 損失函數(shù)分為兩部分,其中LcLs分別代表整個(gè)文本實(shí)例(Sn)和縮放后文本實(shí)例(S1 ---> Sn-1)的損失髓需,而λ用于平衡Lc和Ls许师,本文設(shè)置為0.7。

????????? 通常文本實(shí)例可能只占自然場(chǎng)景圖像中很小的一部分僚匆,因此如果采用二進(jìn)制交叉熵?fù)p失會(huì)造成預(yù)測(cè)結(jié)果更加偏向于非文本區(qū)域微渠。這里我們采用dice 系數(shù)損失函數(shù):

?????? 其中Si,x,yGi,x,y???分別代表了像素(x,y)在分割結(jié)果Si和Ground Truth Gi???中的值。

??????? 考慮到很多文本區(qū)域和柵欄咧擂、柵格很相似逞盆,為了避免誤檢,我們?cè)谟?xùn)練期間采用OHEM來(lái)更好的區(qū)分這些模式松申,其中負(fù)樣本-正樣本的比例設(shè)置為3:1.


對(duì)于OHEM可以參考文章:https://blog.csdn.net/u014380165/article/details/73148073


???????? 首先云芦,來(lái)看Lc的計(jì)算方式:

???????? 其中M代表OHEM的training mask俯逾,Lc主要用于區(qū)分文本和非文本區(qū)域。

?????????? 再來(lái)看Ls的計(jì)算方式:

????????? Ls主要是縮減文本區(qū)域的損失舅逸∩疵粒考慮到縮減后的文本區(qū)域均是被原始文本區(qū)域包圍的,故作者忽略了分割結(jié)果Sn中非文本區(qū)域的像素從而避免像素冗余的情況堡赔。其中W是Sn中忽視了非文本區(qū)域的文本區(qū)域mask识脆,Sn,x,y是Sn中(x,y)的像素值。

PSENet 實(shí)驗(yàn)細(xì)節(jié)

訓(xùn)練

1. 使用ImageNet預(yù)訓(xùn)練的ResNet善已,隨機(jī)梯度下降(SGD)

2. 數(shù)據(jù):ICDAR2017 MLT(7200訓(xùn)練圖像灼捂,1800張驗(yàn)證圖像)

3. Batch Size:16

4. 迭代次數(shù):180K

5. 學(xué)習(xí)率:1×10?3,在60K和120K迭代步數(shù)時(shí)分別除以10

6. 權(quán)重衰減:5×10?4换团,0.99的Nesterov動(dòng)量悉稠,沒(méi)有阻尼

其余數(shù)據(jù)集采用了兩種訓(xùn)練策略:

(1)從頭訓(xùn)練。

(2)在IC17-MLT上fine-tuning艘包。從頭開(kāi)始訓(xùn)練時(shí)的猛,batch size 16,迭代次數(shù)36K訓(xùn)練PSENet想虎,初始學(xué)習(xí)率為1×10?3卦尊,在12K和24K迭代步數(shù)時(shí)分別除以10。在IC17-MLT上fine-tuning時(shí)舌厨,迭代次數(shù)是24K岂却,初始學(xué)習(xí)率為1×10?4,在12K迭代次數(shù)時(shí)除以10裙椭。

損失函數(shù)

1. λ=0.7 躏哩;

2. OHEM 的負(fù)樣本比例設(shè)置為 3。

數(shù)據(jù)增強(qiáng)

1. 圖像隨機(jī)縮放{0.5,1.0,2.0,3.0}揉燃;

2. 圖像隨機(jī)的水平翻轉(zhuǎn)和在[?10°,10°]范圍內(nèi)隨機(jī)旋轉(zhuǎn)扫尺;

3. 從變換后的圖像中隨機(jī)裁剪出640×640大小的圖像。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末炊汤,一起剝皮案震驚了整個(gè)濱河市正驻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌婿崭,老刑警劉巖拨拓,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異氓栈,居然都是意外死亡渣磷,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)授瘦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)醋界,“玉大人竟宋,你說(shuō)我怎么就攤上這事⌒畏模” “怎么了丘侠?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)逐样。 經(jīng)常有香客問(wèn)我蜗字,道長(zhǎng),這世上最難降的妖魔是什么脂新? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任挪捕,我火速辦了婚禮,結(jié)果婚禮上争便,老公的妹妹穿的比我還像新娘级零。我一直安慰自己,他們只是感情好滞乙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布奏纪。 她就那樣靜靜地躺著,像睡著了一般斩启。 火紅的嫁衣襯著肌膚如雪序调。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,604評(píng)論 1 305
  • 那天浇垦,我揣著相機(jī)與錄音炕置,去河邊找鬼荣挨。 笑死男韧,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的默垄。 我是一名探鬼主播此虑,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼口锭!你這毒婦竟也來(lái)了朦前?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤鹃操,失蹤者是張志新(化名)和其女友劉穎韭寸,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體荆隘,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡恩伺,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了椰拒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晶渠。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡凰荚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出褒脯,到底是詐尸還是另有隱情便瑟,我是刑警寧澤,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布番川,位于F島的核電站到涂,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏颁督。R本人自食惡果不足惜养盗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望适篙。 院中可真熱鬧往核,春花似錦、人聲如沸嚷节。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)硫痰。三九已至衩婚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間效斑,已是汗流浹背非春。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留缓屠,地道東北人奇昙。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像敌完,于是被迫代替她去往敵國(guó)和親储耐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355