CNN解決皮膚病分類問題
來自(未來的科技)煉丹小白師的專案,希望大家喜歡!
目錄
- CNN解決皮膚病分類問題
- 前言
- 一、題目描述
- 二、資料庫
- 1. 公開資料集:kaggle競賽平臺提供Datasets,Skin Cancer: Malignant vs. Benign
- 2. 公開資料集:專案使用了阿里云天池資料集,該資料集包含ISIC 2019挑戰賽的訓練資料,它已經包含了前幾年(2018和2017)的資料,ISIC 2019的資料集包含25,331張影像,可用于對9種不同診斷類別中的皮膚鏡影像進行分類,每類資料樣本數不同采用20%的部分作為測驗,
- 三、任務建模
- 1.資料預處理部分
- 2.模型選擇部分
- 3.模型訓練部分
- 4.模型優化部分
- 四、評價指標
- 五、實驗程序和討論分析
- 2 基于ResNet-50分類
- 六、總結
- 1 Resnet50使用心得
- 2 FCNN的使用心得
- 七、參考文獻
- 看到這里的您,為您準備了一顆大彩蛋
前言
提示:這里可以添加本文要記錄的大概內容:
例如:隨著人工智能的不斷發展,機器學習這門技術也越來越重要,很多人都開啟了學習機器學習,本文就介紹了機器學習的基礎內容,
提示:以下是本篇文章正文內容,下面案例可供參考
一、題目描述
皮膚作為人體免疫系統的第一道防線,對人體疾病防護有著非常重要的作用,現如今社會,由于環境,飲食等問題,皮膚病的發病率逐漸增高,病種也越來越多,目前已知的皮膚病有四千多種,而黑色素瘤、基底細胞癌等癌癥腫瘤類是惡性程度最高、發病率增長最快的,相比于其他物體瘤,其致死年齡更低,缺乏特效治療,因此,早期診斷和治療極其重要,所以當下皮膚檢測技術越來越受社會關注,然而,正確診斷一種皮膚病具有挑戰性,由于皮膚科專家的不同經驗,用皮膚病鏡像圖片鑒別的皮膚病可能是不準確的,在實踐程序中,專家通過對黑色素瘤皮膚病鏡像圖片的診斷準確率達到75%到84%之間,但是由于診斷具有嚴重的主觀性,不同的專家差異可能很大,導致專家診斷具有一定的局限性,
要求:
1、實作典型皮膚病識別,可根據采集的圖片選擇哪些典型的皮膚病綱入識別范圍,識別結果中應包含正常類別,
2、須包含圖片的預處理,并給出預處理操作對識別結果的影響分析,
3、要采用至少三種深度學習模型進行識別,其中至少一種為近5年提出的方法,識別準確率應高于85%,
4、要設計充分的實驗,例如模型引數的選擇、模型的魯棒性、各模型之間的對比、資料集的比較、模型對特殊圖片(模糊、暗光、臟污等)的識別效果等,并對結果進行詳細的分析,
二、資料庫
1. 公開資料集:kaggle競賽平臺提供Datasets,Skin Cancer: Malignant vs. Benign
每類資料樣本數不同采用20%的部分作為測驗,
2. 公開資料集:專案使用了阿里云天池資料集,該資料集包含ISIC 2019挑戰賽的訓練資料,它已經包含了前幾年(2018和2017)的資料,ISIC 2019的資料集包含25,331張影像,可用于對9種不同診斷類別中的皮膚鏡影像進行分類,每類資料樣本數不同采用20%的部分作為測驗,
沖鴨:——> 資料集傳送門
三、任務建模
本次任務建立一個用于分類皮膚病資料的模型,并以此為基礎去實作皮膚病種類識別,
本次任務分為四個部分:
1.資料預處理部分
對于圖片精確獲取ROI區域,對比10類皮膚病樣本特征,我們本打算對其做影像級特征分析,經過前期分析,我們得到幾個強特征,如病變區域邊緣及內容,而強干擾特征如:毛發資訊等,
綜上所述,我們提出了一種采用ostu閾值自動分割的方法將毛發噪聲磨平,并借此將病變特征強化,并更強化深度學習模型,
2.模型選擇部分
我們的方法采用先易后難,采用FCNN、Faster-CNN、YOLO-v5深度學習模型作為基礎模型,首先檢驗效果,我負責FCNN的架構和訓練,效果訓練的準確率近乎于60%,不合于當前效果,故后期做了提升,
3.模型訓練部分
我們采用GPU機器進行訓練
采用的GPU型號如下:
NVIDIA Geforce RTX1050Ti
NVIDIA Geforce RTX2080Ti
NVIDIA Geforce RTX3080Ti
NVIDIA Geforce RTX3090Ti
隨著型號顯卡的升級,我們的訓練時間也相應縮短,從而提供給我們優化的基礎,
4.模型優化部分
模型優化我們采用增加一層帶權重的block層,從而大幅度降低梯度,更改預處理部分并且增強圖片內容特征,根據網路內部結構,從而使模型更為注意病變區域,從而將準確率提高了10%,前一階段的過擬合問題也得到了解決,
四、評價指標
Time 單批次運行時間
ACC 準確率
Val_accuracy 測驗集準確率
Loss 損失函式
Val_Loss 測驗集損失函式
五、實驗程序和討論分析
詳細架構如下:
采用Relu作為激活函式,防止出現梯度下降的情況,ReLu函式的改進就是它使得保證深層梯度傳遞到淺度,
采用Adam作為優化器,目的在于Adam在深度學習領域是一種很受歡迎的演算法,因為它能很快取得好的成果,實證結果表明:在實踐中,Adam的作業表現良好,并優于其他隨機優化方法,在原論文中,通過實證證明了該方法的收斂性滿足了理論分析的期望,Adam采用了邏輯回歸演算法,利用大型模型和資料集,Adam可以有效地解決實際的深度學習問題,邊緣特征和內容特征將在第一層之中得到Dropout收斂,并在flatten層壓縮特征,在dense層進行分類,

Adam 迭代公式程序如下:

分類結果如下:


根據trainacc與testacc的結果與train-loss與test-loss出現的結果,由此證明前期階段出現過擬合,故提出來改進方案,一個是提高準確率的方法,第二是削弱前期的過擬合問題,
基于OSTU閾值自動分割后,將訓練資料圖片分離三通道并減去OSTU閾值再合并,使圖片的特征更為明顯,由此增強了深度學習模型學習病變內容的特征學習效率,

原圖

預處理后圖片
改進預處理部分的訓練效果如下:


2 基于ResNet-50分類
輸入同上,前期加載預訓練模型,池化層定義為平均池化,ResNet-50,數字代表的是網路的深度,50指定的是帶有權重的50層,包括卷積層和全連接層,不包括池化層和BN層,ResNet及其變體網路系列,對于一般的影像識別任務表現優異,要根據具體在皮膚病特征資訊,進行具體網路結構改進,如增加權重,更改激活函式等,但是考慮到梯度問題,而且對于訓練Resnet網路自身前期訓練就可以的到結果,[1]采用的resnet50方法及應用領域,在皮膚特征上也可使用,
Loss函式數學公式:


訓練效果如下:
在這里插入圖片描述


六、總結
1 Resnet50使用心得
梯度彌散(當使用反向傳播方法計算導數的時候,隨著網路的深度的增加,反向傳播的梯度(從輸出層到網路的最初幾層)的幅度值會急劇地減小,結果就造成了整體的損失函式相對于最初幾層的權重的導數非常小,這樣,當使用梯度下降法的時候,最初幾層的權重變化非常緩慢,以至于它們不能夠從樣本中進行有效的學習)和梯度爆炸(差梯度在網路訓練時被用來得到網路引數更新的方向和幅度,進而在正確的方向上以合適的幅度更新網路引數,在深層網路或遞回神經網路中,誤差梯度在更新中累積得到一個非常大的梯度,這樣的梯度會大幅度更新網路引數,進而導致網路不穩定,在極端情況下,權重的值變得特別大,以至于結果會溢位(NaN值,無窮與非數值),當梯度爆炸發生時,網路層之間反復乘以大于1.0的梯度值使得梯度值成倍增長),這兩點常常困擾著卷積神經網路的設計者和使用者,也成為人們不得不思考的問題,但是所幸的是,一些網路的出現很好的解決了這些問題,Resnet就有效的解決了這個問題,Resnet的提出目的并不是為了解決梯度彌散,有效的消除梯度彌散(意外識訓),卷積神經網路(CNN),導致depth隨著層數增加,就出現了學習退化的問題,
2 FCNN的使用心得
配合學習[4]的方法,啟發了我對傳統FCN的改進方法,對于傳統的CNN網路在卷積層后使用全連接層得到固定長度的特征向量進行分類(全連接層+SoftMax輸出)不同,FCNN網路可以接受任意尺寸的輸入影像,采用反卷積層對最后一個卷積層的feature map進行上采樣,使它恢復到與輸入影像想通的尺寸,從而可以對每個像素都產生了一個預測,同時保留了原始輸入影像的空間資訊,最后在上采樣的特征圖上進行逐像素分類,最后逐個像素計算softmax分類的損失,相當于每一個像素對應一個訓練樣本,
七、參考文獻
[1]宋京,段惠斌 . 基于改進卷積神經網路的手勢識別 [J]. 物聯網技 術,2020,10(7):26-27.
[2] KRIZHEVSKY A,SUTSKEVER I,HINTON G. Imagenet classification with deep convolutional neural networks [J]. Advances in neural information processing systems,2012,25(2).
[3] SIMONYAN K,ZISSERMAN A. Very deep convolutional networks for large-scale image recognition
歡迎大家學習交流,附上小白師的QQ
看到這里的您,為您準備了一顆大彩蛋
最近在Kaggle上打比賽,這是傳感器壓力預測的相關特征的展示圖!
采用樹模型分析的哦!詳細教程很快就和大家見面了!!!!!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/313191.html
標籤:AI
上一篇:如果掃描二維碼后得到相同型別的盒子,我如何增加相同型別盒子的計數?
下一篇:如何使用白色疊加修復或平衡影像?
