0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

卷積神經(jīng)網(wǎng)絡(luò)的介紹和應(yīng)用用歐姆蛋來詳細(xì)介紹

8g3K_AI_Thinker ? 來源:未知 ? 作者:易水寒 ? 2018-07-01 10:13 ? 次閱讀

▌介紹

關(guān)于卷積神經(jīng)網(wǎng)絡(luò)從交通燈識(shí)別到更實(shí)際的應(yīng)用,我經(jīng)常聽到這樣一個(gè)問題:“會(huì)否出現(xiàn)一種深度學(xué)習(xí)“魔法”,它僅用圖像作為單一輸入就能判斷出食物質(zhì)量的好壞?”簡而言之,在商業(yè)中需要的就是這個(gè):

當(dāng)企業(yè)家面對(duì)機(jī)器學(xué)習(xí)時(shí),他們是這樣想的:歐姆蛋的“質(zhì)量(quality)”是好的。

這是一個(gè)不適定問題的例子:解決方案是否存在,解決方案是否唯一且穩(wěn)定還沒辦法確定,因?yàn)椤巴瓿伞钡亩x非常模糊(更不用說實(shí)現(xiàn)了)。雖然這篇文章并不是關(guān)于高效溝通或是項(xiàng)目管理,但有一點(diǎn)是很有必要的:永遠(yuǎn)不要對(duì)沒有明確范圍的項(xiàng)目作出承諾。解決這種模棱兩可的問題,一個(gè)好辦法是先構(gòu)建一個(gè)原型模式,然后再專注于完成后續(xù)任務(wù)的架構(gòu),這就是我們的策略。

▌問題定義

在我的原型實(shí)現(xiàn)中關(guān)注的是歐姆蛋(omelette),并構(gòu)建了一個(gè)可擴(kuò)展的數(shù)據(jù)管道,該管道輸出煎蛋的感知“質(zhì)量”??梢赃@樣來概括:

問題類型:多類別分類,6 種離散的質(zhì)量類別:[good, broken_yolk, overroasted, two_eggs, four_eggs, misplaced_pieces]。

數(shù)據(jù)集:人工收集了 351 個(gè) DSLR 相機(jī)拍攝的各種煎蛋,其中:訓(xùn)練集包含 139 張圖像;訓(xùn)練過程中的測試集包含 32 張圖像;測試集包含 180 張圖像。

標(biāo)簽:每張照片都標(biāo)有主觀的質(zhì)量等級(jí)。

度量標(biāo)準(zhǔn):分類交叉熵。

必要的知識(shí):三個(gè)蛋黃沒有破損,有一些培根和歐芹,沒有燒焦或殘碎的食物,則可以定義為“好的”煎蛋。

完成的定義:在兩周的原型模式設(shè)計(jì)后,測試集上產(chǎn)生的最佳交叉熵。

結(jié)果可視化:用于測試集上低維度數(shù)據(jù)展示的 t-SNE 算法。

相機(jī)采集的輸入圖像

本文的主要目標(biāo)就是用一個(gè)神經(jīng)網(wǎng)絡(luò)分類器獲取提取的信號(hào),并對(duì)其進(jìn)行融合,讓分類器就測試集上每一項(xiàng)的類概率進(jìn)行 softmax 預(yù)測。下面是一些我們提取并發(fā)現(xiàn)有用的信號(hào):

關(guān)鍵成分掩碼(Mask R-CNN):Signal #1.

按照每個(gè)成分分組的關(guān)鍵成分計(jì)數(shù)(基本上是不同成分計(jì)數(shù)的矩陣):Signal #2.

移除盛歐姆蛋盤子的 RGB 顏色和背景,不添加到模型中。這就比較明顯了:只需用損失函數(shù)在這些圖像上訓(xùn)練一個(gè)卷積網(wǎng)絡(luò)分類器,在低維嵌入一個(gè)選定模型圖像到當(dāng)前圖像之間的 L2 距離。但是這次訓(xùn)練只用了 139 張圖像,因此無法驗(yàn)證這一假設(shè)。

▌通用 50K 管道視圖(50K Pipeline Overview)

我省略了幾個(gè)重要步驟,諸如數(shù)據(jù)發(fā)現(xiàn)和探索性分析,基線和 MASK R-CNN 的主動(dòng)標(biāo)記管道(這是我為半監(jiān)督的實(shí)例注釋所起的名稱,啟發(fā)來自Polygon-RNN demo video-https://www.youtube.com/watch?v=S1UUR4FlJ84)。50K 管道視圖如下:

卷積神經(jīng)網(wǎng)絡(luò)的介紹和應(yīng)用用歐姆蛋來詳細(xì)介紹

Mask R-CNN 以及管道的分類步驟

主要有三個(gè)步驟:[1]用于成分掩碼推斷的 MASK R-CNN,[2]基于 Keras 的卷積網(wǎng)絡(luò)分類器,[3]t-SNE 算法的結(jié)果數(shù)據(jù)集可視化。

步驟一:Mask R-CNN 和掩碼推斷

MaskR-CNN 最近較為流行。從最初的Facebook’s 論文開始,再到 Kaggle 上的 Data Science Bowl 2018,MASK R-CNN 證明了其強(qiáng)大的體系結(jié)構(gòu),比如分割(對(duì)象感知分割)。本文所使用的基于 Keras 的MRCNN代碼結(jié)構(gòu)良好、文檔完整、工作迅速,但是速度比預(yù)期的要慢。

卷積神經(jīng)網(wǎng)絡(luò)的介紹和應(yīng)用用歐姆蛋來詳細(xì)介紹

最新論文所展現(xiàn)的 MRCNN 框架

MRCNN 由兩個(gè)部分組成:主干網(wǎng)絡(luò)和網(wǎng)絡(luò)頭,它繼承了FasterR-CNN架構(gòu)。不管是基于特征金字塔網(wǎng)絡(luò)(FPN)還是 ResNet 101,卷積主干網(wǎng)絡(luò)都是整個(gè)圖像的特征提取器。在此之上的是區(qū)域提議網(wǎng)絡(luò)(RPN),它為頭部采樣感興趣區(qū)域(ROI)。網(wǎng)絡(luò)頭部對(duì)每個(gè) ROI 進(jìn)行包圍盒識(shí)別和掩碼預(yù)測。在此過程中,RoIAlign 層精細(xì)地將 RPN 提取的多尺度特征與輸入內(nèi)容進(jìn)行匹配。

在實(shí)際應(yīng)用中,特別是在原型設(shè)計(jì)中,經(jīng)過預(yù)先訓(xùn)練的卷積神經(jīng)網(wǎng)絡(luò)是其關(guān)鍵所在。在許多實(shí)際場景中,數(shù)據(jù)科學(xué)家通常有數(shù)量有限的注釋數(shù)據(jù)集,有些甚至沒有任何注釋。相反,卷積網(wǎng)絡(luò)需要大量的標(biāo)記數(shù)據(jù)集進(jìn)行收斂(如 ImageNet 數(shù)據(jù)集包含 120 萬標(biāo)記圖像)。這就是需要遷移學(xué)習(xí)的用處所在:凍結(jié)卷積層的權(quán)重,只對(duì)分類器進(jìn)行再訓(xùn)練。對(duì)于小型數(shù)據(jù)集來說,凍結(jié)卷積層權(quán)重可以避免過擬合。

經(jīng)過一次(epoch )訓(xùn)練所取得的樣本如下圖所示:

實(shí)例分割的結(jié)果:所有關(guān)鍵成分都被檢測

下一步是裁剪碟子部分,并從中為每一成分提取二維二進(jìn)制掩碼:

帶有目標(biāo)碟子及如二進(jìn)制掩碼一樣關(guān)鍵成分部分

這些二進(jìn)制掩碼緊接著組成一個(gè) 8 通道圖像( MRCNN 定義了 8 個(gè)掩碼類別)。Signal #1 如下圖所示:

Signal #1:由二進(jìn)制掩碼組成的 8 通道圖像。不同的顏色只為了能更好進(jìn)行可視化觀察。

對(duì)于 Signal #2,MRCNN 推斷出每一種成分的量,并將其打包成一個(gè)特征向量。

步驟二:基于 Keras 的卷積神經(jīng)網(wǎng)絡(luò)分類器

我們已經(jīng)使用 Keras 從頭構(gòu)建了一個(gè) CNN 分類器。其目標(biāo)是整合幾個(gè)信號(hào)(Signal#1 和 Signal#2,未來還會(huì)再添加更多數(shù)據(jù)),并讓網(wǎng)絡(luò)對(duì)食物的質(zhì)量類別做出預(yù)測。真實(shí)的體系結(jié)構(gòu)如下:

卷積神經(jīng)網(wǎng)絡(luò)的介紹和應(yīng)用用歐姆蛋來詳細(xì)介紹

分類器架構(gòu)的特點(diǎn)如下:

多尺度卷積模塊:最初,卷積層的內(nèi)核大小為 5*5,結(jié)果不如人意,但有幾種不同內(nèi)核(3*3,5*5,7*7,11*11)的卷積層的 AveragePooling2D 效果更好。另外,在每層前增加了大小為 1*1 的卷積層來降低維度,它類似于Inception 模塊。

更大的內(nèi)核:更大的內(nèi)核更容易從輸入圖像中提取更大范圍的特征(本身可以看作一個(gè)具有 8 個(gè)濾波器的激活層:每個(gè)部分的二進(jìn)制掩碼基本上就是一個(gè)濾波器)。

信號(hào)整合:該模型只使用了一個(gè)非線性層對(duì)兩個(gè)特征集合:處理過的二進(jìn)制掩碼(Signal#1)和成分?jǐn)?shù)(Signal#2)。Signal#2 提高了交叉熵(將交叉熵從 0.8 提高到[0.7,0.72]))

Logits:在 TensorFlow 中,這是tf.nn.softmax_cross_entropy_with_logits計(jì)算 batch 損失的層。

步驟三:使用 t-SNE 對(duì)結(jié)果進(jìn)行可視化處理

使用 t-SNE 算法對(duì)結(jié)果進(jìn)行可視化處理,它是一種較為流行的數(shù)據(jù)可視化技術(shù)。t-SNE 最小化了低維嵌入數(shù)據(jù)點(diǎn)和原始高維數(shù)據(jù)(使用非凸損失函數(shù))的聯(lián)合概率之間的 KL 散度。

為了將測試集的分類結(jié)果可視化,我導(dǎo)出了測試集圖像,提取了分類器的 logits 層,并將 t-SNE 算法應(yīng)用于結(jié)果數(shù)據(jù)集。效果相當(dāng)不錯(cuò),如下圖所示:

卷積神經(jīng)網(wǎng)絡(luò)的介紹和應(yīng)用用歐姆蛋來詳細(xì)介紹

分類器測試集預(yù)測結(jié)果的 t-SNE 算法可視化效果

雖然結(jié)果并不是特別完美,但這種方法確實(shí)有效。 亟待改進(jìn)的地方如下:

更多數(shù)據(jù)。卷積神經(jīng)網(wǎng)絡(luò)需要大量的數(shù)據(jù),而這里用于訓(xùn)練的樣本只有 139 個(gè),本文使用的數(shù)據(jù)增強(qiáng)技術(shù)特別好(使用 D4 或 dihedral, symmetry產(chǎn)生 2 千多張?jiān)鰪?qiáng)圖像)。但是,想要一個(gè)良好的性能,更多真實(shí)的數(shù)據(jù)尤為重要。

合適的損失函數(shù)。為了簡單起見,本文使用了分類交叉熵?fù)p失函數(shù)。也可以使用更合適的損失函數(shù)——三重?fù)p失函數(shù)(triplet loss),它能夠更好地利用類內(nèi)差異。

更全面的分類器體系結(jié)構(gòu)。當(dāng)前的分類器基本上是一個(gè)原型模式,旨在解釋輸入二進(jìn)制掩碼,并將多個(gè)特征集整合到單個(gè)推理管道。

更好的標(biāo)簽。我在手動(dòng)圖像標(biāo)記(6 種類別的質(zhì)量)方面的確不在行:分類器在十幾個(gè)測試集圖像上的表現(xiàn)超出了我的預(yù)期。

▌反思

在實(shí)際應(yīng)用中,企業(yè)沒有數(shù)據(jù)、注釋,也沒有需要完成的明確任務(wù),但這種現(xiàn)象非常普遍,這不可否認(rèn)。這對(duì)你來說是一件好事:你要做的就是擁有工具和足夠多的 GPU 硬件、商業(yè)和技術(shù)知識(shí)、預(yù)訓(xùn)練模型以及其他對(duì)企業(yè)有價(jià)值的東西。

從小事做起:一個(gè)可以用 LEGO 代碼塊構(gòu)建的原型模式,可以進(jìn)一步提高交流的效率——為企業(yè)提供這種方案,這是作為一位數(shù)據(jù)科學(xué)家的職責(zé)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 分類器
    +關(guān)注

    關(guān)注

    0

    文章

    152

    瀏覽量

    13162
  • cnn
    cnn
    +關(guān)注

    關(guān)注

    3

    文章

    350

    瀏覽量

    22132
  • 卷積神經(jīng)網(wǎng)絡(luò)

    關(guān)注

    4

    文章

    359

    瀏覽量

    11831
  • ROI
    ROI
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    6214

原文標(biāo)題:雞蛋煎的好不好?Mask R-CNN幫你一鍵識(shí)別

文章出處:【微信號(hào):AI_Thinker,微信公眾號(hào):人工智能頭條】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    卷積神經(jīng)網(wǎng)絡(luò)如何使用

    卷積神經(jīng)網(wǎng)絡(luò)(CNN)究竟是什么,鑒于神經(jīng)網(wǎng)絡(luò)在工程上經(jīng)歷了曲折的歷史,您為什么還會(huì)在意它呢? 對(duì)于這些非常中肯的問題,我們似乎可以給出相對(duì)簡明的答案。
    發(fā)表于 07-17 07:21

    什么是圖卷積神經(jīng)網(wǎng)絡(luò)?

    卷積神經(jīng)網(wǎng)絡(luò)
    發(fā)表于 08-20 12:05

    卷積神經(jīng)網(wǎng)絡(luò)CNN介紹

    【深度學(xué)習(xí)】卷積神經(jīng)網(wǎng)絡(luò)CNN
    發(fā)表于 06-14 18:55

    卷積神經(jīng)網(wǎng)絡(luò)一維卷積的處理過程

    。本文就以一維卷積神經(jīng)網(wǎng)絡(luò)為例談?wù)勗趺?b class='flag-5'>來進(jìn)一步優(yōu)化卷積神經(jīng)網(wǎng)絡(luò)使用的memory。文章(卷積
    發(fā)表于 12-23 06:16

    卷積神經(jīng)網(wǎng)絡(luò)模型發(fā)展及應(yīng)用

    介紹卷積 神經(jīng)網(wǎng)絡(luò)的發(fā)展歷史,然后分析了典型的卷積神經(jīng) 網(wǎng)絡(luò)模型通過堆疊結(jié)構(gòu)、網(wǎng)中網(wǎng)結(jié)構(gòu)、殘
    發(fā)表于 08-02 10:39

    【科普】卷積神經(jīng)網(wǎng)絡(luò)(CNN)基礎(chǔ)介紹

    對(duì)卷積神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)進(jìn)行介紹,主要內(nèi)容包括卷積神經(jīng)網(wǎng)絡(luò)概念、卷積
    發(fā)表于 11-16 01:00 ?1.1w次閱讀
    【科普】<b class='flag-5'>卷積</b><b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>(CNN)基礎(chǔ)<b class='flag-5'>介紹</b>

    什么是神經(jīng)網(wǎng)絡(luò)?什么是卷積神經(jīng)網(wǎng)絡(luò)?

    介紹卷積神經(jīng)網(wǎng)絡(luò)之前,我們先回顧一下神經(jīng)網(wǎng)絡(luò)的基本知識(shí)。就目前而言,神經(jīng)網(wǎng)絡(luò)是深度學(xué)習(xí)算法的核心,我們所熟知的很多深度學(xué)習(xí)算法的背后其實(shí)都
    的頭像 發(fā)表于 02-23 09:14 ?3306次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)的應(yīng)用 卷積神經(jīng)網(wǎng)絡(luò)通常用來處理什么

    神經(jīng)網(wǎng)絡(luò)卷積神經(jīng)網(wǎng)絡(luò)廣泛用于圖像識(shí)別、自然語言處理、視頻處理等方面。本文將對(duì)卷積神經(jīng)網(wǎng)絡(luò)的應(yīng)用進(jìn)行詳盡、詳實(shí)、細(xì)致的
    的頭像 發(fā)表于 08-21 16:41 ?4823次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)模型有哪些?卷積神經(jīng)網(wǎng)絡(luò)包括哪幾層內(nèi)容?

    、視頻等信號(hào)數(shù)據(jù)的處理和分析。卷積神經(jīng)網(wǎng)絡(luò)就是一種處理具有類似網(wǎng)格結(jié)構(gòu)的數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò),其中每個(gè)單元只處理與之直接相連的神經(jīng)元的信息。本文將對(duì)卷積
    的頭像 發(fā)表于 08-21 16:41 ?1868次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)的工作原理 卷積神經(jīng)網(wǎng)絡(luò)通俗解釋

    。CNN可以幫助人們實(shí)現(xiàn)許多有趣的任務(wù),如圖像分類、物體檢測、語音識(shí)別、自然語言處理和視頻分析等。本文將詳細(xì)介紹卷積神經(jīng)網(wǎng)絡(luò)的工作原理并用通俗易懂的語言解釋。 1.概述
    的頭像 發(fā)表于 08-21 16:49 ?3664次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)介紹 什么是卷積神經(jīng)網(wǎng)絡(luò)算法

    卷積神經(jīng)網(wǎng)絡(luò)介紹 什么是卷積神經(jīng)網(wǎng)絡(luò)算法 卷積神經(jīng)網(wǎng)絡(luò)
    的頭像 發(fā)表于 08-21 16:49 ?1803次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)模型搭建

    卷積神經(jīng)網(wǎng)絡(luò)模型搭建 卷積神經(jīng)網(wǎng)絡(luò)模型是一種深度學(xué)習(xí)算法。它已經(jīng)成為了計(jì)算機(jī)視覺和自然語言處理等各種領(lǐng)域的主流算法,具有很大的應(yīng)用前景。本篇文章將
    的頭像 發(fā)表于 08-21 17:11 ?912次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)主要包括哪些 卷積神經(jīng)網(wǎng)絡(luò)組成部分

    ,并且在處理圖像、音頻、文本等方面具有非常出色的表現(xiàn)。本文將從卷積神經(jīng)網(wǎng)絡(luò)的原理、架構(gòu)、訓(xùn)練、應(yīng)用等方面進(jìn)行詳細(xì)介紹。 一、卷積
    的頭像 發(fā)表于 08-21 17:15 ?1508次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)的原理是什么

    卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,簡稱CNN)是一種深度學(xué)習(xí)模型,廣泛應(yīng)用于圖像識(shí)別、語音識(shí)別、自然語言處理等領(lǐng)域。本文將詳細(xì)介紹
    的頭像 發(fā)表于 07-02 14:44 ?520次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練的是什么

    卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,簡稱CNN)是一種深度學(xué)習(xí)模型,廣泛應(yīng)用于圖像識(shí)別、視頻分析、自然語言處理等領(lǐng)域。本文將詳細(xì)介紹
    的頭像 發(fā)表于 07-03 09:15 ?319次閱讀