chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

從數(shù)據(jù)結(jié)構(gòu)到Python實現(xiàn):如何使用深度學(xué)習(xí)分析醫(yī)學(xué)影像

人工智能實訓(xùn)營 ? 2018-08-01 15:45 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群


運(yùn)用深度學(xué)習(xí)技術(shù)進(jìn)行圖像和視頻分析,并將它們用于自動駕駛汽車、無人機(jī)等多種應(yīng)用場景中已成為研究前沿。近期諸如《A Neural Algorithm of Artistic Style》等論文展示了如何將藝術(shù)家的風(fēng)格轉(zhuǎn)移并應(yīng)用到另一張圖像中,而生成新的圖像。其他如《Generative Adversarial Networks》(GAN)以及「Wasserstein GAN」等論文為開發(fā)能學(xué)習(xí)生成類似于我們所提供的數(shù)據(jù)的模型做了鋪墊。因此,它們在半監(jiān)督學(xué)習(xí)領(lǐng)域打開了新世界的大門,也為將來的無監(jiān)督學(xué)習(xí)奠定了基礎(chǔ)。

盡管這些研究領(lǐng)域處于通用圖像層面,但我們的目標(biāo)是將它們應(yīng)用于醫(yī)學(xué)圖像以輔助醫(yī)療。我們需要從基礎(chǔ)開始。本文第一部分將從圖像處理的基礎(chǔ)、醫(yī)學(xué)圖像格式化數(shù)據(jù)的基礎(chǔ)以及一些可視化的醫(yī)療數(shù)據(jù)談起。而后一部分文章將深入探究卷積神經(jīng)網(wǎng)絡(luò),并使用 Keras 來預(yù)測肺癌。

基本圖像處理
(利用 python
實現(xiàn))

圖像處理庫有很多,但 OpenCV(開源計算機(jī)視覺庫,open computer vision)憑借其廣泛的支持且可用于 C++java 和 python 的優(yōu)點而成為主流。而我更偏向于使用 jupyter notebook 導(dǎo)入 OpenCV。

你可以使用 pip install opencv-python,也可以從 opencv.org 網(wǎng)站直接進(jìn)行安裝。

640?wx_fmt=png
安裝 opencv

現(xiàn)在打開 Jupyter notebook 并確認(rèn)能夠?qū)?cv2。你還需要 numpy 和 matplotlib 庫來在 notebook 內(nèi)查看圖片。

640?wx_fmt=png

現(xiàn)在來檢查能否打開并通過鍵入下述代碼在筆記本上查看圖像。


通過 OpenCV 進(jìn)行圖像加載的示例

基本人臉識別

我們來做點有意思的事情吧,比如人臉識別。我們將使用一種最初由 Rainer Lienhart 開發(fā)的正面人臉識別器,它使用了基于開源 xml 殘基(stump-based)的 20x20 柔和 adaboost 算法。

關(guān)于 Haar-cascade 檢測的詳細(xì)范例:http://docs.opencv.org/trunk/d7/d8b/tutorial_py_face_detection.html


使用 OpenCV 進(jìn)行人臉識別

在文檔區(qū)使用 opencv 進(jìn)行圖像處理的例子不勝枚舉。

我們已經(jīng)了解了圖像處理的基礎(chǔ),下面來了解醫(yī)學(xué)圖像格式吧。

醫(yī)學(xué)圖像數(shù)據(jù)格式

醫(yī)學(xué)圖像以數(shù)字成像和通信(DICOM)為存儲與交換醫(yī)學(xué)圖像數(shù)據(jù)的標(biāo)準(zhǔn)解決方案。該標(biāo)準(zhǔn)的第一版發(fā)布于 1985 年,之后有少許修改;它使用了文件格式和通信協(xié)議如下。

  • 文件格式:所有患者的醫(yī)療圖像都以 DICOM 文件格式進(jìn)行保存。該格式不僅具有與圖像相關(guān)的數(shù)據(jù)(如用于捕獲圖像的設(shè)備和醫(yī)療處理情境),還具有關(guān)于患者的 PHI (受保護(hù)的健康信息,protected health information),如姓名、性別、年齡等。醫(yī)療影像設(shè)備可以創(chuàng)建 DICOM 文件,而醫(yī)生可以使用 DICOM 查看器以及可顯示 DICOM 圖像的計算機(jī)應(yīng)用程序來讀取并診斷從圖像獲得的結(jié)果。

  • 通信協(xié)議:DICOM 通信協(xié)議用于搜索檔案中的成像研究,并將成像研究恢復(fù)到工作站來顯示。連接到醫(yī)院網(wǎng)絡(luò)的全部醫(yī)學(xué)成像應(yīng)用程序都使用 DICOM 協(xié)議來交換信息,其中大部分信息是 DICOM 圖像,但還包括患者和手術(shù)信息。此外還有更先進(jìn)的網(wǎng)絡(luò)命令用于控制并跟蹤治療、調(diào)整進(jìn)程、報告狀態(tài),并在醫(yī)生和成像設(shè)備之間共享工作負(fù)載。

現(xiàn)有篇博文很細(xì)致地描述了 DICOM 標(biāo)準(zhǔn),此處為鏈接:http://dicomiseasy.blogspot.com/

分析 DICOM 圖像

Pydicom 是一個 python 包,它很適合分析 DICOM 圖像。本節(jié)將闡述如何在 Jupyter notebook 上呈現(xiàn) DICOM 圖像。

安裝 Pydicom 使用:pip install pydicom。

安裝 pydicom 包之后,回到 Jupyter notebook 進(jìn)行操作。在 notebook 中導(dǎo)入 dicom 包以及其他包,如下所示:

640?wx_fmt=png

我們也能使用 pandas、scipy、skimage 以及 mpl_toolkit 等其他的包來進(jìn)行數(shù)據(jù)處理與分析。

640?wx_fmt=png

你可以在線獲得很多免費(fèi)的 DICOM 數(shù)據(jù)集,但下述數(shù)據(jù)集在入門階段定能有所幫助:

  • Kaggle Competitions and Datasets:它是我的最愛。請查閱肺癌競爭和糖尿病視網(wǎng)膜病變的數(shù)據(jù):https://www.kaggle.com/c/data-science-bowl-2017/data

  • Dicom Library:面向教育和科學(xué)的 DICOM 庫,其提供免費(fèi)的在線醫(yī)療 DICOM 圖像或視頻文件共享服務(wù)。

  • Osirix Datasets:提供通過各種成像模式獲取的大量人類數(shù)據(jù)集。

  • Visible Human Datasets:在這里可視化人類計劃的一部分?jǐn)?shù)據(jù)可以免費(fèi)利用,這很奇怪,因為獲取這些數(shù)據(jù)既不免費(fèi)也不輕松。

  • The Zubal Phantom:該網(wǎng)站免費(fèi)提供 CT 和 MRI 這兩種男性的多個數(shù)據(jù)集。

請下載 dicom 文件并加載到 jupyter notebook 中。

640?wx_fmt=png

現(xiàn)在將 DICOM 圖像加載到列表中。

640?wx_fmt=png

第一步:在 Jupyter 中進(jìn)行 DICOM 圖像的基本查看操作

640?wx_fmt=png

在第一行加載第一個 DICOM 文件來提取元數(shù)據(jù),這個文件將賦值為 RefDs,其文件名會列在 lstFilesDCM 列表的頂端。

640?wx_fmt=png

然后來計算 3D NumPy 數(shù)組的總維度,它等于在笛卡爾坐標(biāo)軸中(每個切片的像素行數(shù)*每個切片的像素列數(shù)*切片數(shù))。最后,使用 PixelSpacing 和 SliceThickness 屬性來計算三個軸之間的像素間距。我們將把數(shù)組維度儲存在 ConstPixelDims 中,把空間儲存在 ConstPixelSpacing [1] 中。

640?wx_fmt=png

第二步:查看 DICOM 格式的細(xì)節(jié)

CT 掃描中的測量單位是亨氏單位(Hounsfield Unit,HU),它是輻射強(qiáng)度的度量。CT 掃描儀經(jīng)過高度校準(zhǔn)以精確測量。

每個像素都被分配了一個數(shù)值(CT 號),它是包含在相應(yīng)體素(corresponding voxel)中的所有衰減值的平均數(shù)。將這個數(shù)字與水的衰減值進(jìn)行比較,并以任意單位中的亨氏單位(HU)為刻度進(jìn)行顯示。

這個刻度將水的衰減值(HU)標(biāo)為 0。CT 數(shù)量的范圍是 2000HU,但一些現(xiàn)代掃描儀具有較高的 HU 范圍,最高可達(dá) 4000。每個數(shù)字表示在光譜的其中一端會出現(xiàn)+1000(白色)和-1000(黑色)的灰色陰影。

一些掃描儀具有圓柱形掃描范圍,但其輸出圖像卻是矩形。落在這些邊界之外的像素具有-2000 的固定值。

第一步通常是將這些值設(shè)置為 0。接著,通過與重新縮放的斜率相乘并添加截距來返回到亨氏單位(斜率和截距均很方便地存儲在掃描的元數(shù)據(jù)中!)。

下部分將會用到 Kaggle 的肺癌數(shù)據(jù)集,并使用 Keras 卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行建模;它將以上文所提供的的信息為基礎(chǔ)。

在上一部分文章中,我們介紹了一些使用 OpenCV 進(jìn)行圖像處理的基礎(chǔ)知識,以及 DICOM(醫(yī)學(xué)數(shù)字影像和通訊)圖像基礎(chǔ)。下面我們將從卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Nets)的視角來談一談深度學(xué)習(xí)基礎(chǔ)。在第三部分文章里,我們將以 Kaggle 的肺癌數(shù)據(jù)集為實例,來研究一下在一個肺癌 DICOM 圖像中要尋找的關(guān)鍵信息,并使用 Kera 開發(fā)出一個預(yù)測肺癌的模型。

卷積神經(jīng)網(wǎng)絡(luò) (CNN) 基礎(chǔ)

為了理解卷積神經(jīng)網(wǎng)絡(luò)的基礎(chǔ),我們首先要搞清楚什么是卷積。

什么是卷積?

那么在泛函分析中,卷積(Convolution)是通過兩個函數(shù) f 和 g 生成第三個函數(shù)的一種數(shù)學(xué)算子,表征函數(shù) f 與 g 經(jīng)過翻轉(zhuǎn)和平移的重疊部分的面積。所以在簡單定義下,設(shè) f(x)、g(x) 是 R 上的兩個可積函數(shù),作積分:

則代表卷積。理解這個定義的簡單方式就是把它想象成應(yīng)用到一個矩陣上的滑動窗方程。


有著 3×3 過濾器的卷積

在上面的圖片中,應(yīng)用到矩陣上的滑動窗是綠色,而滑動窗矩陣則是紅色。輸出就是卷積特征矩陣。下面的圖片顯示了兩個矩形脈沖(藍(lán)色和紅色)的卷積運(yùn)算及其結(jié)果。

640?wx_fmt=gif

Jeremy Howard 在他的 MOOC 上用一個電子表格解釋了卷積,這是理解基礎(chǔ)原理的一種很好的方式?,F(xiàn)在有兩個矩陣,f 和 g。f 和 g 進(jìn)行卷積運(yùn)算的結(jié)果,是第三個矩陣「Conv layer 1」,它由兩個矩陣的點積給出。如下所示,這兩個矩陣的點積是一個標(biāo)量。

640?wx_fmt=png
兩個矩陣的點積

現(xiàn)在讓我們按照 Jeremy 的建議用電子表格來演示一下,輸入矩陣是函數(shù) f(),滑動窗矩陣是過濾器方程 g()。那么這兩個矩陣元素的乘積和就是我們要求的點積,如下所示。

讓我們把這個擴(kuò)展到一個大寫字母「A」的圖片。我們知道圖片是由像素點構(gòu)成的。這樣我們的輸入矩陣就是「A」。我們選擇的滑動窗方程是一個隨機(jī)的矩陣 g。下圖顯示的就是這個矩陣點積的卷積輸出。

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

在我看來,一個簡單的卷積神經(jīng)網(wǎng)絡(luò) (CNN) 就是一系列神經(jīng)網(wǎng)絡(luò)層。每一層都對應(yīng)著一個特定的函數(shù)。每個卷積層是三維的(RGB),所以我們用體積作為度量。更進(jìn)一步的,CNN 的每一層都通過一個微分方程向另一層傳遞一個體積量的激活。這個微分方程被稱為激活函數(shù)或傳遞函數(shù)。

CNN 的實體有多種:輸入,濾波器(或核函數(shù))、卷積層、激活層、池化層、以及批量歸一化層。這些層在不同排列和不同規(guī)則下的組合形成了不同的深度學(xué)習(xí)算法。

輸入層:通常一個 CNN 的輸入是一個 n 維陣列。對于一個圖像來說,就是三個維度的輸入——長度,寬度和深度(即顏色通道)。

過濾器或核函數(shù):正如下面這張來自 RiverTrail 的圖像所示,一個過濾器或核函數(shù)會滑到圖像的每個位置上并計算出一個新的像素點,這個像素點的值是它經(jīng)過的所有像素點的加權(quán)和。在上面的電子表格例子中,我們的過濾器就是 g,它經(jīng)過了 f 的輸入矩陣。

640?wx_fmt=png

卷積層:輸入矩陣和過濾器的點積形成的一個新矩陣,稱為卷積矩陣或卷積層。

640?wx_fmt=png

下面的網(wǎng)址中有一個很好的解釋填補(bǔ)、跨步和轉(zhuǎn)置是如何工作的視覺圖表。

640?wx_fmt=png

激活層:

激活函數(shù)可根據(jù)是否飽和分為兩種類型。

640?wx_fmt=png

飽和激活函數(shù)都是雙曲型和雙曲正切型,而非飽和激活函數(shù)都是修正線性單元(ReLU)及其變體函數(shù)。使用非飽和激活函數(shù)有兩方面的優(yōu)勢:

  • 第一是可以解決所謂的「爆炸/消失梯度(exploding/vanishing gradient)」。

  • 第二是可以加快函數(shù)收斂速度。

雙曲函數(shù):把一個實數(shù)值輸入擠壓到 [0,1] 區(qū)間范圍內(nèi)

σ(x) = 1 / (1 + exp(?x))

雙曲正切函數(shù):把一個實數(shù)值輸入擠壓到 (-1,1)區(qū)間內(nèi)

tanh(x) = 2σ(2x) ? 1

ReLU

ReLU 代表單調(diào)線性單元(Rectified Linear Unit)。它是輸入為 x 的最值函數(shù) (x,0),比如一個卷積圖像的矩陣。ReLU 接著把矩陣 x 中的所有負(fù)值置為零,并保持所有其他值不變。ReLU 是在卷積之后計算出來的,因此會出現(xiàn)一個非線性的激活函數(shù),如雙曲正切或雙曲函數(shù)。Geoff Hinton 在他的 nature 論文里第一次討論這個問題。

ELUs

指數(shù)線性單元(Exponential linear units)試圖使平均激活接近于零,這樣就能加速學(xué)習(xí)。ELUs 也能通過正值認(rèn)定避免消失梯度的出現(xiàn)。研究顯示,ELUs 比 ReLUs 有更高的分類準(zhǔn)確性。

640?wx_fmt=png
來源:http://image-net.org/challenges/posters/JKU_EN_RGB_Schwarz_poster.pdf[(1×96×6, 3×512×3, 5×768×3, 3×1024×3, 2×4096×FC, 1×1000×FC) 層 × 單元 × 接受域或完全連接(FC)的堆疊構(gòu)成的 15 層 CNN。2×2 的最大池化,每次堆疊后有 2 步幅,第一個 FC 之前有 3 層的空間金字塔池。]

640?wx_fmt=png
來源:維基百科

滲漏 ReLU

ReLU 中的負(fù)值部分完全被拋棄,與之相反,滲漏 ReLU 給負(fù)值部分賦了一個非零斜率。滲漏修正線性激活在聲子模型(Maas et al., 2013)中第一次被引入。數(shù)學(xué)上,我們有

640?wx_fmt=png
來源:卷積網(wǎng)絡(luò)中修正激活的經(jīng)驗主義演化

其中 ai 是在 (1, 正無窮) 區(qū)間內(nèi)的固定參數(shù)。

參數(shù)化修正線性單元 (PReLU)

PReLU 可被視為滲漏 ReLU 的一個變體。在 PReLU 中,負(fù)值部分的斜率是從數(shù)據(jù)中學(xué)習(xí)得來的,而非預(yù)先定義好的。PReLU 的創(chuàng)作者們聲稱它是 ImageNet 歸類(Russakovsky et al., 2015) 任務(wù)中(機(jī)器)超越人類水平的關(guān)鍵因素。它與滲漏 ReLU 基本相同,唯一的區(qū)別就是 ai 是通過反向傳播訓(xùn)練學(xué)習(xí)到的。

隨機(jī)滲漏修正線性單元 (RReLU)

隨機(jī)滲漏單調(diào)線性單元 (RReLU) 也是滲漏 ReLU 的一種變體。在 RReLU 中,負(fù)值部分的斜率是在給定訓(xùn)練范圍內(nèi)的隨機(jī)取值的,然后在測試中固定下來。RReLU 最顯著的特征是在訓(xùn)練過程中,aji 是一個從一致分布 U(l,u) 上取樣得到的隨機(jī)數(shù)。正式數(shù)學(xué)表達(dá)如下:

640?wx_fmt=png

下面顯示了 ReLU, 滲漏 ReLU, PReLU 和 ReLU 的對比。

640?wx_fmt=pngReLU, 滲漏 ReLU, PReLU 和 ReLU,對于 PReLU,ai 是學(xué)習(xí)到的;而對于滲漏 ReLU,ai 是固定的。對于 RReLU,aji 是一個在給定區(qū)間內(nèi)取樣的隨機(jī)變量,在測試中保持不變。

噪聲激活函數(shù)

這些都是拓展后包括了 Gaussian 噪聲(Gaussian noise)的激活函數(shù)。

640?wx_fmt=png
來源:維基百科

池化層

池化層的目標(biāo)是逐漸地減少矩陣的尺寸,以減少網(wǎng)絡(luò)中參數(shù)的數(shù)量和計算,這樣也就能控制過擬合。池化層在輸入的每個深度切片上獨立操作,并使用最大化和平均運(yùn)算來重置其空間尺寸。最常見的形式,一個采用了步幅 2,尺寸 2x2 過濾器的池化層,同時沿著寬度和高度,以幅度 2 將輸入中的每個深度切片向下取樣,丟棄了激活值的 75%。在此情況下,每個最大值運(yùn)算都取了 4 個數(shù)字(某些深度切片中的小 2x2 區(qū)域)的最大值。深度方向的維度保持不變。更一般的來說,池化層就是:

640?wx_fmt=png

640?wx_fmt=png

注意:這里我們把 2 x 2 window 滑動了兩個細(xì)胞(也被叫做步幅),并取了每個區(qū)域的最大值。

批歸一化層:

批歸一化是歸一化每個中間層的權(quán)重和激活函數(shù)的有效方式。批歸一化有兩個主要的好處:

1. 對一個模型加入批歸一化能使訓(xùn)練速度提升 10 倍或更多

2. 由于歸一化極大降低了偏遠(yuǎn)輸入的小數(shù)字過度影響訓(xùn)練的能力,它也能降低過擬合。

全連接層:

全連接層是一個傳統(tǒng)的多層感知器(Multi Layer Perceptron),它在輸出層使用了一個Softmax 函數(shù)?!溉B接」這個術(shù)語就說明了前一層和后一層的每個神經(jīng)元都是連接起來的。Softmax 函數(shù)即對數(shù)函數(shù)(logistic function)的一般化情況,它把一個取值區(qū)間為任意實數(shù)的 K 維向量「擠壓」成一個取值區(qū)間在(0,1)內(nèi)且和為1的 K 維向量。

640?wx_fmt=png

Sofxmax 激活一般被用于最終的完全連接層,隨著它的值在 0 和 1 之間不停變化,得到概率。

現(xiàn)在我們對 CNN 中不同的層次都有了一定的概念。運(yùn)用這些知識我就能開發(fā)出肺癌探測所需的深度學(xué)習(xí)算法。

第三部分

在最后一部分中,我們將透過卷積神經(jīng)網(wǎng)絡(luò)討論一些深度學(xué)習(xí)的基礎(chǔ)知識。在本文中,我們將側(cè)重于使用 Keras 和 Theano 的基礎(chǔ)深入學(xué)習(xí)。我們將給出兩個范例,一個使用 Keras 進(jìn)行基本預(yù)測分析,另一個使用 VGG 的圖像分析簡單樣例。

我已經(jīng)意識到這個話題的廣度和深度,它需要更多的文章來解讀。在之后的文章中,我們將討論處理中 DICOM 和 NIFTI 在醫(yī)學(xué)成像格式中的不同,進(jìn)一步擴(kuò)大我們的學(xué)習(xí)范圍并對如何對 2 維肺分割分析使用深度學(xué)習(xí)進(jìn)行討論。然后轉(zhuǎn)到 3 維肺分割。我們同樣會討論如何在深度學(xué)習(xí)之前進(jìn)行醫(yī)學(xué)圖像分析以及我們現(xiàn)在可以如何做。我非常開心也非常感謝我的新合作伙伴將這一切聚在一起——Flavio Trolese(4Quant 的合作伙伴)、 Kevin Mader(4Quant 的聯(lián)合創(chuàng)始人)以及 Cyriac Joshy(瑞士蘇黎世聯(lián)邦理工的講師)。

在本文中,我們將要討論 Keras 并使用兩個范例來展示如何使用 Keras 進(jìn)行簡單的預(yù)測分析任務(wù)以及圖像分析。

什么是 Keras?

Keras 網(wǎng)站是這么介紹的——Keras 是 Theano 和 TensorFlow 的深度學(xué)習(xí)庫。

640?wx_fmt=png
Keras API 在 Theano 和 TensorFlow 之上運(yùn)行

Keras 是高級的神經(jīng)網(wǎng)絡(luò) API,由 Python 編寫并可以在 TensorFlow 和 Theano 之上運(yùn)行。其開發(fā)目的是使快速實驗成為可能。

什么是 Theano 和 TensorFlow?

James Bergstra 博士等人在 Scipy 2010 發(fā)布的 Theano 是一個 CPUGPU 數(shù)學(xué)表達(dá)式編譯器。它是一個 Python 庫,允許你有效地定義、優(yōu)化和評估涉及多維數(shù)組的數(shù)學(xué)表達(dá)式。Theano 由 Yoshua Bengio 等一些高級研究員和蒙特利爾學(xué)習(xí)算法研究所(MILA)共同完成。在 Scipy 2010 上一個非常棒的 Theano 教程。下圖顯示了截至 2010 年,Theano 在 GPU 和 CPU 與其他工具的對比。該結(jié)果最初在《Theano: A CPU and GPU Math Compiler in Python》一文中發(fā)表。

640?wx_fmt=png

還有一些在 Theano 之上的建立其它的庫,包括 Pylearn2 和 GroundHog(同樣由 MILA 開發(fā))、Lasagne、Blocks 和 Fuel.

TensorFlow 由 Google Brain 團(tuán)隊的研究員與工程師開發(fā)。其被開發(fā)用于進(jìn)行機(jī)器學(xué)習(xí)和深度神經(jīng)網(wǎng)絡(luò)研究,但是該系統(tǒng)也足以適用于其它領(lǐng)域。如其網(wǎng)站介紹的那樣,TensorFlow 是一個使用數(shù)據(jù)流圖的數(shù)值計算開源軟件庫。圖中的節(jié)點表示數(shù)學(xué)運(yùn)算,圖的邊表示在其之間傳遞的多維數(shù)據(jù)數(shù)組(張量)。代碼的可視化如下圖所示。

640?wx_fmt=png
TensorFlow:在異構(gòu)分布式系統(tǒng)上的大規(guī)模機(jī)器學(xué)習(xí)

使用 Keras 的預(yù)測分析示例

在這個示例中,我們將使用 UCI 網(wǎng)站的 Sonar 數(shù)據(jù)集構(gòu)建一個簡單的預(yù)測模型。在下面的代碼中,我們將會直接從 UCI 網(wǎng)站中得到數(shù)據(jù)并以 60:40 的比例將其分為訓(xùn)練集與測試集。我們在預(yù)測模型中使用 Keras 并在標(biāo)簽編碼中使用 sklearn。

640?wx_fmt=png

在下一段代碼中,我們讀取數(shù)據(jù)集,并使用上面定義的函數(shù)查看數(shù)據(jù)。我們打印數(shù)據(jù)集,并找出需要編碼的因變量。

640?wx_fmt=png

我們使用 scikit-learn 中的 LabelEncoder 進(jìn)行標(biāo)簽編碼,將 R 和 M 隱藏到數(shù)字 0 和 1 中。這樣的操作被稱為 one-hot 編碼。one-hot 編碼可將分類特征轉(zhuǎn)換為對算法更友好的格式。在這個示例中,我們使用使用「R」值 和「M」值分類我們的 Y 變量。使用標(biāo)簽編碼器,它們分別被轉(zhuǎn)換為「1」和「0」。

640?wx_fmt=png
scikit-learn 中的 LabelEncoder

然后使用 Keras 創(chuàng)建模型:

640?wx_fmt=png

無預(yù)處理的簡單模型的精確度為 81.64%

使用 Keras 的圖像分析示例

為了用 Keras 解釋圖像處理,我們將使用來自 Kaggle 比賽的數(shù)據(jù)——狗和貓(https://www.kaggle.com/c/dogs-vs-cats)。該比賽的目的在于開發(fā)一種算法以區(qū)分圖像是否包含狗或貓。這個任務(wù)對人、狗和貓來說很簡單,但是計算機(jī)卻很難做到。在該項挑戰(zhàn)中,有 25,000 張標(biāo)記狗和貓的照片可用于訓(xùn)練,并且在測試集中有 12,500 張照片,我們必須在挑戰(zhàn)中嘗試為其加上標(biāo)簽。根據(jù) Kaggle 網(wǎng)站,當(dāng)該項比賽開始時(2013 年底):

當(dāng)前最佳:目前的文獻(xiàn)顯示,機(jī)器分類器在該任務(wù)上可以達(dá)到 80% 以上的準(zhǔn)確度。那么如果我們能夠超過 80%,我們將在 2013 年處于最前沿?!?/span>

我強(qiáng)烈推薦觀看 Fast.ai 的 MOOC 以了解更多的細(xì)節(jié),學(xué)習(xí)下一步和深度學(xué)習(xí)的前沿研究。我已經(jīng)在下列代碼中引用 fast.ai,這是一個很好的起點,鏈接:http://www.fast.ai/

步驟 1:設(shè)置

從 Kaggle 網(wǎng)站下載狗和貓的數(shù)據(jù),并存入你的筆記本電腦。本文中的示例均在 Mac 上運(yùn)行。

640?wx_fmt=png
基礎(chǔ)設(shè)置

Jeremy Howard 在他的班上提供了一個實用的 Python 文件,該文件有助于封裝基本函數(shù)。對于開始部分,我們將使用此實用文件。點擊下載:https://github.com/fastai/courses/blob/master/deeplearning1/nbs/utils.py。當(dāng)我們深入到更多細(xì)節(jié)時,我們將解壓該文件并查看其背后的內(nèi)容。

640?wx_fmt=png

步驟 2:使用 VGG

我們的第一步簡單地使用已經(jīng)為我們創(chuàng)建好的模型,它可以識別許多類別的圖片(1,000 種)。我們將使用『VGG』,它贏得了 2014 年 ImageNet 比賽,是一個非常簡單的創(chuàng)造理解的模型。VGG ImageNet 團(tuán)隊創(chuàng)造了更大、更慢、準(zhǔn)確性略有提高的模型(VGG 19)和更小、更快的模型(VGG 16)。我們將使用 VGG 16,因為 VGG 19 過慢的性能與其在準(zhǔn)確度上的微小提升不對等。

我們創(chuàng)建了一個 Python 類,Vgg16,這使得使用 VGG 16 模型非常簡單。Vgg 16 同樣可從 fast.ai 的 GitHub 中獲得:https://github.com/fastai/courses/blob/master/deeplearning1/nbs/vgg16.py

640?wx_fmt=png

步驟 3:實例化 VGG

640?wx_fmt=png

Vgg16 構(gòu)建在 Keras 之上(我們將在短時間內(nèi)學(xué)到更多內(nèi)容),Keras 是一個靈活易用的深度學(xué)習(xí)庫,該軟件庫是基于 Theano 或 Tensorflow 的一個深度學(xué)習(xí)框架。Keras 使用固定的目錄結(jié)構(gòu)在批量讀取圖像和標(biāo)簽組,每個類別的圖像必須放在單獨的文件夾中。

我們從訓(xùn)練文件夾中獲取批量數(shù)據(jù):

640?wx_fmt=png

步驟 4:預(yù)測狗 vs 貓

步驟 5:總結(jié)并編碼文件

總結(jié)一下這篇文章,我推薦的狗和貓分類方法為:

640?wx_fmt=png

總結(jié)

如果讀者跟著我們走到了這一步,那么其實已經(jīng)實現(xiàn)了上一部分文章中討論過的理論,并做了一些實際的編程工作。如果讀者們按照上述說明實現(xiàn)了這兩個案例,那么就已經(jīng)完成了使用 Keras 的第一個預(yù)測模型,也初步實現(xiàn)了圖像分析。由于代碼的長度,我們不在這里討論細(xì)節(jié)只給出了鏈接。如果你查看鏈接有任何疑問,請聯(lián)系 fast.ai。

至此,我們從最開始的數(shù)據(jù)庫安裝到醫(yī)學(xué)圖像數(shù)據(jù)格式的解釋,已經(jīng)有了醫(yī)學(xué)影像處理的基本知識。隨后我們從卷積的定義到 CNN 的詳細(xì)構(gòu)架與原理,進(jìn)一步實踐的理論基礎(chǔ)已經(jīng)完成了累積。最后一部分對前面的理論知識進(jìn)行實踐,用 Python 實現(xiàn)了這一令人激動的模型。因此,我們希望讀者朋友能在這一循序漸進(jìn)的過程中真正感受到醫(yī)學(xué)影像處理的樂趣。



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

    關(guān)注

    19

    文章

    885

    瀏覽量

    53064
  • 人工智能
    +關(guān)注

    關(guān)注

    1811

    文章

    49497

    瀏覽量

    258180
  • 機(jī)器學(xué)習(xí)

    關(guān)注

    66

    文章

    8528

    瀏覽量

    135865
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5586

    瀏覽量

    123637
  • 深度圖像
    +關(guān)注

    關(guān)注

    0

    文章

    19

    瀏覽量

    3665
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    【新啟航】深度學(xué)習(xí)在玻璃晶圓 TTV 厚度數(shù)據(jù)智能分析中的應(yīng)用

    。隨著深度學(xué)習(xí)數(shù)據(jù)處理領(lǐng)域展現(xiàn)出強(qiáng)大能力,將其應(yīng)用于玻璃晶圓 TTV 厚度數(shù)據(jù)智能分析,有助于實現(xiàn)
    的頭像 發(fā)表于 10-11 13:32 ?85次閱讀
    【新啟航】<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>在玻璃晶圓 TTV 厚度<b class='flag-5'>數(shù)據(jù)</b>智能<b class='flag-5'>分析</b>中的應(yīng)用

    智慧醫(yī)療:驅(qū)動醫(yī)療未來的創(chuàng)新引擎

    人工智能(AI)是智慧醫(yī)療的核心驅(qū)動力。通過機(jī)器學(xué)習(xí)算法,AI能夠海量醫(yī)療數(shù)據(jù)中提取關(guān)鍵信息,輔助診斷、預(yù)測疾病進(jìn)展并優(yōu)化治療方案。例如,在醫(yī)學(xué)影像
    的頭像 發(fā)表于 09-12 15:10 ?351次閱讀

    嵌入式入門進(jìn)階,怎么學(xué)?

    嵌入式入門進(jìn)階,怎么學(xué)? 嵌入式學(xué)習(xí)的核心是 “軟硬結(jié)合的技術(shù)壁壘”,科學(xué)分層才能高效突破。以下是入門高階的精簡路線,幫你避開彎路:
    發(fā)表于 09-02 09:44

    深度學(xué)習(xí)對工業(yè)物聯(lián)網(wǎng)有哪些幫助

    深度學(xué)習(xí)作為人工智能的核心分支,通過模擬人腦神經(jīng)網(wǎng)絡(luò)的層級結(jié)構(gòu),能夠自動海量工業(yè)數(shù)據(jù)中提取復(fù)雜特征,為工業(yè)物聯(lián)網(wǎng)(IIoT)提供了
    的頭像 發(fā)表于 08-20 14:56 ?532次閱讀

    程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)

    的地址)出發(fā),采用推導(dǎo)的方式,深入淺出的分析了廣大C程序員學(xué)習(xí)和開發(fā)中遇到的難點。 2. 方法論的高度對C語言在數(shù)據(jù)結(jié)構(gòu)和算法方面的應(yīng)用進(jìn)行了深入講解和闡述。 3. 講解了絕大多
    發(fā)表于 05-13 16:45

    東軟集團(tuán)入選國家數(shù)據(jù)數(shù)據(jù)標(biāo)注優(yōu)秀案例

    近日,東軟飛標(biāo)醫(yī)學(xué)影像標(biāo)注平臺在國家數(shù)據(jù)局發(fā)布數(shù)據(jù)標(biāo)注優(yōu)秀案例集名單中排名第一(案例名稱“多模態(tài)醫(yī)學(xué)影像智能數(shù)據(jù)標(biāo)注平臺”)。評選專家認(rèn)為東
    的頭像 發(fā)表于 05-09 14:37 ?861次閱讀

    嵌入式AI技術(shù)之深度學(xué)習(xí)數(shù)據(jù)樣本預(yù)處理過程中使用合適的特征變換對深度學(xué)習(xí)的意義

    ? 作者:蘇勇Andrew 使用神經(jīng)網(wǎng)絡(luò)實現(xiàn)機(jī)器學(xué)習(xí),網(wǎng)絡(luò)的每個層都將對輸入的數(shù)據(jù)做一次抽象,多層神經(jīng)網(wǎng)絡(luò)構(gòu)成深度學(xué)習(xí)的框架,可以
    的頭像 發(fā)表于 04-02 18:21 ?1166次閱讀

    Python入門精通背記手冊

    電子發(fā)燒友網(wǎng)站提供《Python入門精通背記手冊.pdf》資料免費(fèi)下載
    發(fā)表于 03-28 17:43 ?58次下載

    深度學(xué)習(xí)入門:簡單神經(jīng)網(wǎng)絡(luò)的構(gòu)建與實現(xiàn)

    深度學(xué)習(xí)中,神經(jīng)網(wǎng)絡(luò)是核心模型。今天我們用 Python 和 NumPy 構(gòu)建一個簡單的神經(jīng)網(wǎng)絡(luò)。 神經(jīng)網(wǎng)絡(luò)由多個神經(jīng)元組成,神經(jīng)元之間通過權(quán)重連接。我們構(gòu)建一個包含輸入層、隱藏層和輸出層的簡單
    的頭像 發(fā)表于 01-23 13:52 ?710次閱讀

    三維測量在醫(yī)療領(lǐng)域的應(yīng)用

    技術(shù)可以對CT(計算機(jī)斷層掃描)、MRI(磁共振成像)等醫(yī)學(xué)影像進(jìn)行三維重建,生成病灶或器官的三維模型。 這些模型為醫(yī)生提供了更為直觀、立體的視覺信息,有助于醫(yī)生更準(zhǔn)確地了解患者的解剖結(jié)構(gòu)和病變情況。 醫(yī)學(xué)影像
    的頭像 發(fā)表于 12-30 15:21 ?961次閱讀

    遙感影像分析的方法與步驟

    遙感影像分析是地理信息系統(tǒng)(GIS)和環(huán)境科學(xué)領(lǐng)域的一項關(guān)鍵技術(shù)。它涉及遙感數(shù)據(jù)中提取有用信息,以支持決策制定、環(huán)境監(jiān)測和資源管理。隨著遙感技術(shù)的發(fā)展,遙感
    的頭像 發(fā)表于 12-05 10:22 ?2082次閱讀

    東軟發(fā)布新一代醫(yī)學(xué)影像解決方案

    近日,東軟全新發(fā)布新一代醫(yī)學(xué)影像解決方案,以智能化為核心,以數(shù)據(jù)引擎為驅(qū)動,面向未來醫(yī)學(xué)影像行業(yè)的發(fā)展需求,全新定義醫(yī)學(xué)影像的產(chǎn)品價值,推動醫(yī)學(xué)影像
    的頭像 發(fā)表于 11-25 09:32 ?760次閱讀

    視覺軟件HALCON的數(shù)據(jù)結(jié)構(gòu)

    在研究機(jī)器視覺算法之前,我們需要先了解機(jī)器視覺應(yīng)用中涉及的基本數(shù)據(jù)結(jié)構(gòu)。Halcon數(shù)據(jù)結(jié)構(gòu)主要有圖像參數(shù)和控制參數(shù)兩類參數(shù)。圖像參數(shù)包括:image、region、XLD,控制參數(shù)包括:string、integer、real、handle、tuple數(shù)組等。
    的頭像 發(fā)表于 11-14 10:20 ?1752次閱讀
    視覺軟件HALCON的<b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>

    激光雷達(dá)技術(shù)的基于深度學(xué)習(xí)的進(jìn)步

    信息。這使得激光雷達(dá)在自動駕駛、無人機(jī)、機(jī)器人等領(lǐng)域具有廣泛的應(yīng)用前景。 二、深度學(xué)習(xí)技術(shù)的發(fā)展 深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個分支,它通過模擬人
    的頭像 發(fā)表于 10-27 10:57 ?1323次閱讀

    AI大模型與深度學(xué)習(xí)的關(guān)系

    人類的學(xué)習(xí)過程,實現(xiàn)對復(fù)雜數(shù)據(jù)學(xué)習(xí)和識別。AI大模型則是指模型的參數(shù)數(shù)量巨大,需要龐大的計算資源來進(jìn)行訓(xùn)練和推理。深度
    的頭像 發(fā)表于 10-23 15:25 ?3377次閱讀