【導讀】任何類型的癌症,即使不致命,也是非常嚴重的。分析癌症從來就不是一件簡單事,而需要深入研究。該項目基於TF2.0 的tflite框架,開發了一個檢測皮膚癌的工程。
Github地址:
https://github.com/AakashKumarNain/skin_cancer_detection
簡介
超過50%的癌變是通過組織病理學(組織病理學)確認的,其餘病例是隨訪檢查(follow_up),專家共識(共識),或通過體內共聚焦顯微鏡確認(共聚焦) 。缺乏專家(放射科醫生)一直是瓶頸。現在我們需要考慮三件事:
鑑於專家數量有限,我們如何才能提高效率呢?我們可以使用最先進的機器學習技術來幫助他們嗎?如果有,怎麼做?
用於自動診斷色素性皮膚病變的神經網絡的訓練受到皮膚鏡圖像的可用數據集的小尺寸和缺乏多樣性的阻礙。醫療保健中的標籤數據是另一個瓶頸。有了可用的有限數據,我們可以做多少?
作為機器學習工程師,如果我們無法幫助醫生並最終幫助社會,那麼我們擅長什麼?醫療保健是一個複雜的領域,在這個領域使用機器學習有其自身的優點和缺點。
數據集
數據集是Kaggle數據集(https://www.kaggle.com/kmader/skin-cancer-mnist-ham10000)的一部分,它由存放在兩個文件夾中的10000張圖片組成,數據格式如下所示:
數據集中總共有7個類型的皮膚癌,除去重複的圖片,共有約8k張圖片,數據集非常不均衡,這也帶來一定的難度,數據集的分布如下圖所示。
模型結構
項目的最終目的是學到一個能在手機上運行的模型,考慮到這點,我能能用的架構只有Mobilenet_v1, MobileNet_v2, M-Nasnet, 和Shufflenet這幾個,我們最終選取mobilenets ,因為他們在keras model zoo中有,我們最終選取了MobileNetv2 因為它比Mobilenet_v1快。模型的架構如下所示:
基礎的網絡用語特徵提取,而最高几層用於分類,我們丟棄mobilenet 最後一個特徵提取層 global average pooling以上層,訓練模型可以分成以下兩個階段:
遷移學習:在基礎網絡的基礎上增加用於分類的層,訓練的時候固定基礎網絡的參數。
微調:不固定基礎網絡某些層的參數,微調來提升效果。
Demo
最終的模型可以在安卓app上用CPU運行。
如下為正確運行的demo:
實驗效果
最終訓練誤差:0.4029
最終驗證誤差:0.6417
訓練類別準確度(top-1): 0.8627
驗證類別準確度(top-1): 0.7897
訓練類別準確度(top-2): 0.9612
驗證類別準確度(top-2): 0.9123
混淆矩陣
每個類別的分類精度
precision recall f1-score support
akiec 0.44 0.50 0.47 34bcc 0.62 0.80 0.70 49bkl 0.62 0.45 0.52 109df 0.33 0.18 0.24 11mel 0.60 0.45 0.52 93nv 0.86 0.94 0.90 540vasc 1.00 0.57 0.73 14
micro avg 0.78 0.78 0.78 850macro avg 0.64 0.56 0.58 850weighted avg 0.77 0.78 0.77 850-END-
專知,專業可信的人工智慧知識分發,讓認知協作更快更好!歡迎登錄www.zhuanzhi.ai,註冊登錄專知,獲取更多AI知識資料!
歡迎微信掃一掃加入專知人工智慧知識星球群,獲取最新AI專業乾貨知識教程視頻資料和與專家交流諮詢!
請加專知小助手微信(掃一掃如下二維碼添加),加入專知人工智慧主題群,諮詢技術商務合作~