自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

圖像識別沒你想的那么難!看完這篇你也能成專家

原創(chuàng)
人工智能
本地生活場景中包含大量極富挑戰(zhàn)的計(jì)算機(jī)視覺任務(wù),如菜單識別,招牌識別,菜品識別,商品識別,行人檢測與室內(nèi)視覺導(dǎo)航等。

【51CTO.com原創(chuàng)稿件】本地生活場景中包含大量極富挑戰(zhàn)的計(jì)算機(jī)視覺任務(wù),如菜單識別,招牌識別,菜品識別,商品識別,行人檢測與室內(nèi)視覺導(dǎo)航等。

這些計(jì)算機(jī)視覺任務(wù)對應(yīng)的核心技術(shù)可以歸納為三類:物體識別,文本識別與三維重建。

2018 年 11 月 30 日-12 月 1 日,由 51CTO 主辦的 WOT 全球人工智能技術(shù)峰會在北京粵財(cái) JW 萬豪酒店隆重舉行。

本次峰會以人工智能為主題,阿里巴巴本地生活研究院人工智能部門的負(fù)責(zé)人李佩和大家分享他們在圖像識別的過程中所遇到各種問題,以及尋求的各種解法。

什么是本地生活場景

我們所理解的本地生活場景是:從傳統(tǒng)的 O2O 發(fā)展成為 OMO(Online-Merge-Offline)。

對于那些打車應(yīng)用和餓了么外賣之類的 O2O 而言,它們的線上與線下的邊界正在變得越來越模糊。

傳統(tǒng)的線上的訂單已不再是只能流轉(zhuǎn)到線下,它們之間正在發(fā)生著互動和融合。

在 2018 年,我們看到滴滴通過大量投入,組建并管理著自己的車隊(duì)。他們在車?yán)镅b了很多監(jiān)控設(shè)備,試圖改造線下的車與人。

同樣,對于餓了么而言,我們不但對線下物流的配送進(jìn)行了改造,而且嘗試著使用機(jī)器人,來進(jìn)行無人配送、以及引入了智能外賣箱等創(chuàng)新。

可見在本地生活場景中,我們的核心任務(wù)就是將智能物聯(lián)(即 AI+IoT)應(yīng)用到 OMO 場景中。

上圖是阿里巴巴本地生活餓了么業(yè)務(wù)的人工智能應(yīng)用的邏輯架構(gòu)。和其他所有人工智能應(yīng)用計(jì)算平臺類似,我們在底層用到了一些通用的組件,包括:數(shù)據(jù)平臺、GPU 平臺、特征工程平臺、以及 AB 測試平臺。

在此之上,我們有:智能配送、分單調(diào)度和智能營銷等模塊。同時(shí),算法人員也進(jìn)行了各種數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)和認(rèn)準(zhǔn)優(yōu)化。

目前對于阿里巴巴的本地生活而言,我們的圖像視覺團(tuán)隊(duì)承擔(dān)著整個(gè)本地生活集團(tuán)內(nèi)部,與圖像及視覺相關(guān)的所有識別和檢測任務(wù)。而所有的圖像處理都是基于深度學(xué)習(xí)來實(shí)現(xiàn)的。

我將從如下三個(gè)方面介紹我們的實(shí)踐:

  • 物體的識別。
  • 文本的識別。此處特指對于菜單、店鋪招牌、商品包裝圖片文字的識別,而非傳統(tǒng)意義上對于報(bào)紙、雜志內(nèi)容的識別。
  • 三維重建。

物體識別

在我們的生活場景中,有著大量對于物體識別的需求,例如:

  • 餓了么平臺需要檢測騎手的著裝是否規(guī)范。由于騎手眾多,光靠人工管控,顯然是不可能的。

因此在騎手的 App 中,我們增加了著裝檢測的功能。騎手每天只需發(fā)送一張包含其帽子、衣服、餐箱的自拍照到平臺上,我們的圖像算法便可在后臺自動進(jìn)行檢測與識別。

通過人臉的檢測,我們能夠認(rèn)清是否騎手本人,進(jìn)而檢查他的餐箱和頭盔。

  • 場景目標(biāo)識別。通過檢測行人、辦公區(qū)的桌椅、以及電梯的按鈕,保障機(jī)器人在無人配送的生活場景中認(rèn)識各種物體。
  • 合規(guī)檢測。由于餓了么平臺上有著大量的商品、餐品和招牌圖片,營業(yè)執(zhí)照,衛(wèi)生許可證,以及健康證等。

因此我們需要配合政府部門通過水印和二維碼,來檢查各家餐館的營業(yè)執(zhí)照和衛(wèi)生許可證是否被篡改過。

另外,我們也要求餐館的菜品圖片中不能出現(xiàn)餐館的招牌字樣。這些都會涉及到大量的計(jì)算機(jī)視覺處理。

  • 場景文本識別。在物體識別的基礎(chǔ)上,通過目標(biāo)檢測的應(yīng)用,對物體上的文字進(jìn)行識別,如:菜單里的菜品和菜價(jià)。

對于圖片目標(biāo)的檢測評價(jià),目前業(yè)界有兩個(gè)指標(biāo):

  • 平均檢測精度。即物體框分類的準(zhǔn)確性。先計(jì)算每個(gè)類別的準(zhǔn)確性,再求出所有類別的準(zhǔn)確性。
  • IOU(交并比)。即預(yù)測物體框與實(shí)際標(biāo)準(zhǔn)物體框之間覆蓋度的比例,也就是交集和并集的比例。

上圖列出了目標(biāo)檢測的常用基礎(chǔ)算法,它們分為兩類:

  • 兩步法
  • 一步法

兩步法歷史稍久一些,它源于傳統(tǒng)的滑窗法。2014 年,出現(xiàn)了采用深度學(xué)習(xí)進(jìn)行目標(biāo)檢測的 R-CNN。

之后又有了金字塔池化的 SPP 方法,以及在此之上研發(fā)出來的 Fast R-CNN 和 Faster R-CNN 兩個(gè)版本。

當(dāng)然,F(xiàn)aster R-CNN 算法在被運(yùn)用到機(jī)器人身上進(jìn)行實(shí)時(shí)檢測時(shí),為了達(dá)到毫秒級檢測結(jié)果的反饋,它往往會給系統(tǒng)的性能帶來巨大的壓力。

因此,有人提出了一步法,其中最常用的是在 2016 年被提出的 SSD 算法。

雖然 2017 年、2018 年也出現(xiàn)了一些新的算法,但是尚未得到廣泛的認(rèn)可,還需進(jìn)一步的“沉淀”。

下面,我們來討論那些針對不同場景目標(biāo)的解決算法。在此,我不會涉及任何的公式,也不會涉及任何的推導(dǎo),僅用簡單淺顯的語言來描述各個(gè)目標(biāo)檢測算法背后的核心思想。

R-CNN 的簡單思路是:

  • Region Proposal。首先,將目標(biāo)圖像劃分成許多個(gè)網(wǎng)格單元,這些網(wǎng)格被稱為超像素;然后,將同樣顏色或紋理的相似相鄰超像素進(jìn)行聚類,并找出外切的矩形框。該矩形框便稱為 Region Proposal。
  • Classification。首先用 CNN 提取特征;再得到卷積的線性圖,然后再用 SoftMax 或者其他的分類方法進(jìn)行普通分類。

各種上述 R-CNN 流程的問題在于:產(chǎn)生的候選框數(shù)量過多。由于矩形框的形狀,包括長度、寬度、中心坐標(biāo)等各不相同,因此如果一張圖中包含的物體過多,則找出來的矩形框可達(dá)成千上萬個(gè)。

鑒于每個(gè)候選框都需要單獨(dú)做一次 CNN 分類,其整體算法的效率并不高。當(dāng)然,作為后期改進(jìn)算法的基礎(chǔ),R-CNN 提供了一種全新的解決思路。

SPP(空間金字塔池化)的特點(diǎn)是:

  • 所有的候選框共享一次卷積網(wǎng)絡(luò)的前向計(jì)算。即:先將整張圖進(jìn)行一次性 CNN 計(jì)算,并提取特征后,然后在特征響應(yīng)圖上進(jìn)行后續(xù)的操作。由于僅作卷積計(jì)算,其性能提升了不少。
  • 通過金字塔結(jié)構(gòu)獲得在不同尺度空間下的 ROI 區(qū)域。即:通過將圖片分成許多不同的分辨率,在不同的尺度上去檢測物體。

例如:某張圖片上既有大象,又有狗,由于大象與狗的體積差異較大,因此傳統(tǒng) R-CNN 檢測,只能專注大象所占的圖像面積。

而 SPP 會將圖像縮小,以定位較小的圖片。它可以先檢測出大象,再通過圖像放大,檢測出狗。可見它能夠獲取圖像在不同尺度下的特征。

  • FastR-CNN 在簡化 SPP 的同時(shí),通過增加各種加速的策略,來提升性能。不過,它在算法策略上并無太大的變動。
  • FasterR-CNN 創(chuàng)造性地提出了使用神經(jīng)網(wǎng)絡(luò) RPN(Region Proposal Networks),來代替?zhèn)鹘y(tǒng)的 R-CNN 和 SPP,并得到了廣泛的應(yīng)用。

它通過神經(jīng)網(wǎng)絡(luò)來獲取物體框,然后再使用后續(xù)的 CNN 來對物體框進(jìn)行檢測,進(jìn)而實(shí)現(xiàn)了端到端的訓(xùn)練。

上圖是我整理的 Faster R-CNN 執(zhí)行邏輯框架圖,其流程為:

  • 使用 CNN 計(jì)算出圖像的卷積響應(yīng)圖。
  • 執(zhí)行 3×3 的卷積。
  • 使用兩個(gè)全連接層,預(yù)測每個(gè)像素所對應(yīng)的位置是否有物體框的出現(xiàn),進(jìn)而產(chǎn)生兩個(gè)輸出(“是”的概率和“否”的概率)。

如果有物體框的輸出,則預(yù)測物體框中心坐標(biāo)與大小。此處有四個(gè)輸出(中心坐標(biāo)的 X 和 Y,以及長和寬)。因此,對于每個(gè)物體框來說,共有六個(gè)輸出。

  • 使用通用的 NMS 進(jìn)行后處理,旨在對一些重疊度高的物體框進(jìn)行篩選。例如:圖中有一群小狗,那么檢測出來的物體框就可能會重疊在一起。

通過采用 NMS,我們就能對這些重合度高的框進(jìn)行合并或忽略等整理操作,并最終輸出物體的候選框。

  • 采用 CNN 進(jìn)行分類。

可見,上述提到的各種兩步方法雖然精度高,但是速度較慢。而在許多真實(shí)場景中,我們需要對目標(biāo)進(jìn)行實(shí)時(shí)檢測。

例如:在無人駕駛時(shí),我們需要實(shí)時(shí)地檢測周圍的車輛、行人和路標(biāo)等。因此,一步方法正好派上用場。YOLO 和 SSD 都屬于此類。

YOLO 方法的核心思想是:對于整張圖片只需要掃描一次,其流程為:

  • 使用 CNN 獲取卷積響應(yīng)圖。
  • 將該響應(yīng)圖劃分成 S*S 個(gè)格子。
  • 使用兩個(gè)全連接層來預(yù)測物體框的中心坐標(biāo)與大小,以及格子在物體類別上的概率。
  • 將圖片中所有關(guān)于物體檢測的信息存入一個(gè) Tensor(張量)。
  • 使用后處理,輸出物體的類別與框。

由于此方法較為古老,因此在實(shí)際應(yīng)用中,一般不被推薦。

SSD 采用了一種類似于金字塔結(jié)構(gòu)的處理方法。它通過循環(huán)來對給定圖片不斷進(jìn)行降采樣,進(jìn)而得到分辨率更低的另外一張圖片。

同時(shí),在降采樣之后的低分辨率圖片上,該方法還會反復(fù)進(jìn)行物體檢測,以發(fā)覺物體的信息。

因此,SSD 的核心思想是:將同一張圖片分成了多個(gè)級別,從每個(gè)級別到其下一個(gè)級別采用降采樣的方式,從而檢測出每個(gè)級別圖片里的物體框,并予以呈現(xiàn)。

可見,對于 YOLO 而言,SSD 能夠發(fā)現(xiàn)不同分辨率的目標(biāo)、發(fā)掘更多倍數(shù)的候選物體框,在后續(xù)進(jìn)行重排序的過程中,我們會得到更多條線的預(yù)定。

當(dāng)然 SSD 也是一種非常復(fù)雜的算法,里面含有大量有待調(diào)整的細(xì)節(jié)參數(shù),因此大家可能會覺得不太好控制。

另外,SSD 畢竟還是一種矩形框的檢測算法,如果目標(biāo)物體本身形狀并不規(guī)則,或呈現(xiàn)為長條形的話,我們就需要使用語音分割來實(shí)現(xiàn)。

文本識別

除了通過傳統(tǒng)的 OCR 方法,來對健康證、營業(yè)執(zhí)照進(jìn)行識別之外,我們還需要對如下場景進(jìn)行 OCR 識別:

  • 通過識別店鋪的招牌,以保證該店鋪上傳的照片與其自身描述相符。
  • 通過對小票和標(biāo)簽之類票據(jù)的識別,把靠人流轉(zhuǎn)的傳統(tǒng)物流過程,變成更加自動化的過程。
  • 對各式各樣的菜單進(jìn)行識別。

傳統(tǒng)的 OCR 流程一般分為三步:

  • 簡單的圖像處理。例如:根據(jù)拍攝的角度,進(jìn)行幾何校正。
  • 提取數(shù)字圖像的特征,進(jìn)行逐個(gè)字符的切割。
  • 對于單個(gè)字符采用 AdaBoost 或 SVM 之類的統(tǒng)計(jì)式機(jī)器學(xué)習(xí),進(jìn)而實(shí)現(xiàn)光學(xué)文字識別。

但是鑒于如下原因,該流程并不適合被應(yīng)用到店鋪的菜單識別上:

  • 由于過多地依賴于攝像角度和幾何校正之類的規(guī)則,因此在處理手機(jī)拍攝時(shí),會涉及到大量半人工的校正操作。
  • 由于目標(biāo)文字大多是戶外的廣告牌,會受到光照與陰影的影響,同時(shí)手機(jī)的抖動也可能引發(fā)模糊,所以傳統(tǒng)識別模型不夠健壯,且抗干擾能力弱。
  • 由于上述三步走的模型串聯(lián)過多,因此每一步所造成的誤差都可能傳遞和累積到下一步。
  • 傳統(tǒng)方法并非端到端模式,且文字行識別必須進(jìn)行單字符切分,因此無法實(shí)現(xiàn)對整行進(jìn)行識別。

因此,我們分兩步采取了基于深度學(xué)習(xí)的識別方案:文字行檢測+文字行識別。

即先定位圖片中的文字區(qū)域,再采用端到端的算法,實(shí)現(xiàn)文字行的識別。

如上圖所示,文字行的檢測源于物體識別的算法,其中包括:

  • 由 Faster R-CNN 引發(fā)產(chǎn)生了 CTPN 方法,專門進(jìn)行文字行的檢測。
  • 由 SSD 引出的 Textboxes 和 Textboxes++。
  • 由全卷積網(wǎng)絡(luò)或稱為 U-Net 引出的 EAST 等。

說到全卷積網(wǎng)絡(luò)(FCN),它經(jīng)常被用來進(jìn)行語義分割,而且其 OCR 的效果也不錯(cuò)的。

從原理上說,它采用卷積網(wǎng)絡(luò),通過提取特征,不斷地進(jìn)行卷積與池化操作,使得圖像越來越小。

接著再進(jìn)行反卷積與反池化操作,使圖像不斷變大,進(jìn)而找到圖像物體的邊緣。因此,整個(gè)結(jié)構(gòu)呈U字型,故與 U-Net 關(guān)聯(lián)性較強(qiáng)。

如上圖所示:我們通過將一張清晰的圖片不斷縮小,以得到只有幾個(gè)像素的藍(lán)、白色點(diǎn),然后再將其逐漸放大,以出現(xiàn)多個(gè)藍(lán)、白色區(qū)域。

接著,我們基于該區(qū)域,使用 SoftMax 進(jìn)行分類。最終我們就能找到該圖像物體的邊緣。

經(jīng)過實(shí)踐,我們覺得基于全卷積網(wǎng)絡(luò)的 EAST效果不錯(cuò)。如上圖所示,其特點(diǎn)是能夠檢測任意形狀的四邊形,而不局限于矩形。

EAST 的核心原理為:我們對上圖左側(cè)的區(qū)域不斷地進(jìn)行卷積操作,讓圖像縮小。在中間綠色區(qū)域,我們將不同尺度的特征合并起來。

而在右側(cè)藍(lán)色區(qū)域中,我們基于取出的特征,進(jìn)行兩種檢測:

  • RBOX(旋轉(zhuǎn)的矩形框),假設(shè)某個(gè)文字塊仍為矩形,通過旋轉(zhuǎn)以顯示出上面的文字。
  • QUAD(任意四邊形),給定四個(gè)點(diǎn),連成一個(gè)四邊形,對其中的文字進(jìn)行檢測。

對于文字行的識別,目前業(yè)界常用的方法是 CTC+Bi-LSTM+CNN。如上圖所示,我們應(yīng)該從下往上看:首先我們用 CNN 提取給定圖像的卷積特征響應(yīng)圖。

接著將文字行的卷積特征轉(zhuǎn)化為序列特征,并使用雙向 LSTM 將序列特征提取出來;然后采用 CTC 方法,去計(jì)算該圖像的序列特征與文本序列特征之間所對應(yīng)的概率。

值得一提的是,CTC 方法的基本原理為:首先通過加入空白字符,采用 SoftMax 進(jìn)行步長特征與對應(yīng)字符之間的分類。

籍此,對于每個(gè)圖像序列,它都能得到字符序列出現(xiàn)的概率。然后通過后處理,將空白字符和重復(fù)符號刪除掉,并最終輸出效果。

三維重建

在無人駕駛的場景中,我們有時(shí)候可能需要通過移動攝像頭,將采集到的數(shù)據(jù)構(gòu)建出建筑物的三維結(jié)構(gòu)。

如上圖所示,其核心框架為:首先對各種給定的圖片進(jìn)行不只是 CNN 的特征提取,我們還可以用 SIFT 方法(見下文)提取其中的一些角點(diǎn)特征。

然后,我們對這些角點(diǎn)進(jìn)行三角定位,通過匹配找到攝像頭所在的空間位置。

我們使用光束平差,來不斷地構(gòu)建空間位置與攝像頭本身的關(guān)系,進(jìn)而實(shí)現(xiàn)三維構(gòu)建。

上面提到了 SIFT 特征提取,它的特點(diǎn)是本身的速度比較慢。因此為了滿足攝像頭在移動過程中進(jìn)行近實(shí)時(shí)地三維構(gòu)建,我們需要對該算法進(jìn)行大量的調(diào)優(yōu)工作。

同時(shí),在三維重建中,我們需要注意重投影誤差的概念。其產(chǎn)生的原因是:通常,現(xiàn)實(shí)中的三維點(diǎn)落到攝像機(jī)上之后,會被轉(zhuǎn)化成平面上的點(diǎn)。

如果我們想基于平面的圖像,構(gòu)建出一個(gè)三維模型的話,就需要將平面上的點(diǎn)重新投放到三維空間中。

然而,如果我們對攝像機(jī)本身參數(shù)的估算不太準(zhǔn)確,因此會造成重新投放的點(diǎn)與它在三維世界的真正位置之間出現(xiàn)誤差。

如前所述,我們還可以使用光束平差來求解矩形的線性方程組。通常它會用到稀疏 BFGS(擬牛頓法)去進(jìn)行求解,進(jìn)而將各個(gè)三維的點(diǎn)在空間上予以還原。

關(guān)于離群點(diǎn)的過濾。由于我們在做三維重建的過程中,會碰到大量的噪點(diǎn),那么為了過濾它們,我們會使用 RANSAC 方法來進(jìn)行離群點(diǎn)的過濾。

從原理上說,它會不斷隨機(jī)地抽取部分點(diǎn),并構(gòu)建自由模型,進(jìn)而評比出較好的模型。

如上圖所示,由于上方兩張圖里有著大量的邊緣位置特征,我們可以通過 RANSAC 離群點(diǎn)過濾,將它們的特征點(diǎn)對應(yīng)起來,并最終合成一張圖。而且通過算法,我們還能自動地發(fā)覺第二張圖在角度上存在著傾斜。

總的說來,我們在物體識別、文本識別、以及三維重建領(lǐng)域,都嘗試了大量的算法。希望通過上述分析,大家能夠?qū)Ω鞣N算法的效果有所認(rèn)識與了解。

作者:李佩

簡介:阿里巴巴本地生活研究院人工智能部門負(fù)責(zé)人

【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請注明原文作者和出處為51CTO.com】

 

責(zé)任編輯:武曉燕 來源: 51CTO技術(shù)棧
相關(guān)推薦

2015-04-30 10:12:13

開源云平臺OpenStack

2024-04-30 10:40:11

2018-08-30 17:28:52

TCP三次握手HTTP

2017-08-09 14:49:03

WebHTTPS瀏覽器

2022-10-20 09:33:35

2024-11-20 08:09:19

RabbitMQ項(xiàng)目客戶端

2014-03-14 09:35:56

內(nèi)存優(yōu)化軟件內(nèi)存優(yōu)化

2014-03-31 15:32:36

AndroidNDK開發(fā)

2020-03-18 21:12:22

Nginx網(wǎng)站Linux

2012-12-21 09:31:52

Windows 8

2014-11-03 18:22:53

2021-07-01 07:34:09

LinuxIO模型

2018-07-31 14:03:09

JVM內(nèi)存數(shù)據(jù)

2018-03-28 21:40:03

2024-10-31 11:49:41

Kafka管理死信隊(duì)列

2016-01-07 10:17:48

2024-06-07 11:24:20

2022-07-11 12:37:15

安全運(yùn)營網(wǎng)絡(luò)攻擊

2023-07-30 16:09:38

數(shù)字經(jīng)濟(jì)數(shù)字化轉(zhuǎn)型

2019-07-25 14:52:51

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號