keras UNET視網膜血管分割除錯記錄
隨隨便便的廢話
跑自己的程式碼的時候發現CHASE_DB1資料集總是過擬合,即使是做了資料增強將影像增加到600+,驗證集準確率依舊達到0.99,懷疑是在資料預處理的時候簡單的參考別的開原始碼將影像簡單的劃分為無重疊的64*64 patch導致類不平衡,遂找到當年因為硬體查沒跑通的程式碼,開始除錯,學習如何在訓練集上隨機提取patch進行訓練。
除錯的程式碼來自這位大佬。
環境
老闆大手一揮給配了個3080,當初配置環境的時候簡直是摸著石頭過河,都說新版本容易碰壁,原先想要直接用上以前tensorflow1.6+keras的程式碼,就弄了個CUDA9,結果配的天昏地暗,還是報錯。想過在虛擬環境中配置CUDA,也不行。問了同學,同學答:我覺得pytorch不錯,你可以試試。 最後老老實實卸了重灌,按照網上不多的教程配置好了3080能執行的環境。
- GPU RTX 3080,cuda 11;
- tensorflow==2.5.0-dev;
- keras==2.3.0;
- opencv-python==4.4.0.46;
- scikit-learn==0.23.2;
- pillow==8.0.1;
- h5py==2.10.0;
- configparser==3.5.0
除錯記錄
1) Cannot Run Git & Invalid VCS root mapping
和github相關的報錯,可以按照網上下載並配置Git,不過我一直都傾向於自己新建工程,複製貼上。新建工程後不存在這個問題。
1.retinaNN_training.py
2) import
在tensorflow升級到2之後,相當於內建了keras,如果按照原始碼的import,如:
from keras.models import Model;
from keras.layers import Input, concatenate, Conv2D, MaxPooling2D, UpSampling2D, Reshape, core, Dropout
則可能會出現報錯:
或者出現No module named ’ tensorflow.keras ’ 的錯誤,大概率是tensorflow.keras和keras之間的相容性問題。之前在跑自己的程式碼的時候就已經碰上了這個坑,所以解決的思路還是很清晰的。這篇部落格給出的解決思路是非常清晰的。根據提供的思路,對import方式做修改就能正常執行了。
from tensorflow.python.keras.models import Model
from tensorflow.python.keras.layers import Input, concatenate, Conv2D, MaxPooling2D, UpSampling2D, Reshape, core, Dropout
from tensorflow.keras.optimizers import Adam
from tensorflow.python.keras.callbacks import ModelCheckpoint, LearningRateScheduler
3) FileNotFoundError: [Errno 2] No such file or directory: ‘./test/sample_input_imgs.png’
報錯如下:
需要根目錄下額外的建立一個空的資料夾test,程式碼作者部落格評論給出了方法。至此,retinaNN_training可正常執行。
2.retinaNN_predict.py
1) from sklearn.metrics import jaccard_similarity_score報錯
scikit-learn升級到0.2版本後,jaccard_similarity_score改名為jaccard_score,此外,還需要在呼叫的程式碼中將引數normalize=True刪除。即,
#Jaccard similarity index
jaccard_index = jaccard_score(y_true, y_pred)
print("\nJaccard similarity score: " +str(jaccard_index))
2) ValueError: Unknown layer: Functional
報錯截圖如下:
將錯誤Unknown layer: Functional在網上搜尋後,發現大多數問題是keras無法識別自定義層,然而在程式碼中並沒有自定義層。在https://stackoverflow.com/上也有看到類似的提問,感覺沒有一個比較符合我的問題的回答。本來想在training的程式碼中直接做predict,後面回過頭一看from keras.models import model_from_json ,還是出現了keras和tensorflow.keras的相容性錯誤。修改後即可成功執行。
from tensorflow.python.keras.models import model_from_json
執行結果
分割結果和ROC等指標都存放在test資料夾下
準確率和之前借鑑的程式碼 相近
相關文章
- 【論文筆記】UNet筆記
- Laravel 大檔案分塊上傳錯誤記錄Laravel
- Kafka錯誤記錄Kafka
- mongodb 報錯記錄MongoDB
- 記錄分庫分表的文章
- [記錄]在高光譜影像分類中遭遇的愚蠢錯誤
- 記錄錯誤並繼續執行:錯誤事件記錄子句 --轉事件
- GDB除錯使用記錄除錯
- C++錯誤記錄C++
- SpringMVC錯誤記錄SpringMVC
- 記錄Electron打包報錯
- 深度學習keras筆記深度學習Keras筆記
- 論文研讀Unet++
- 分組求TOP N記錄
- GitHub學習除錯記錄Github除錯
- Keras-TCN的API筆記KerasAPI筆記
- js記錄密碼出錯次數並鎖定賬號30分鐘JS密碼
- 得嘞,分頁外掛 PageHelper 返回記錄總數 total 竟然出錯了!
- 【記錄】SSH分頁查詢功能
- Laravel 分組獲取最新記錄Laravel
- MySQL 分組後取最新記錄MySql
- Supervisor 安裝除錯記錄除錯
- JS錯誤記錄 – dom操作 – 排序JS排序
- 假資料填充錯誤記錄
- Python 學習除錯記錄Python除錯
- 記錄一次Git報錯Git
- virtualbox 錯誤解決記錄
- 如何逆轉血管老化?
- 文字分類:Keras+RNN vs傳統機器學習文字分類KerasRNN機器學習
- MySQL學習記錄--分組與聚集MySql
- FCoE測試重啟除錯記錄除錯
- Java細緻末節小錯記錄Java
- MongoDB的一次錯誤記錄MongoDB
- 錯誤記錄(八)could not initialize proxy - no SessionSession
- postgresal使用錯誤解決 (記錄篇)
- Qt 錯誤記錄registered using qRegisterMetaType().QT
- 錯誤記錄:apache預設網頁訪問錯誤Apache網頁
- node-vue前後端分離記錄Vue後端