向AI轉型的程序員都關注了這個號👇👇👇python
機器學習AI算法工程 公衆號:datayx程序員
一個分割網絡——Unet,Unet借鑑了FCN網絡,其網絡結構包括兩個對稱部分:前面一部分網絡與普通卷積網絡相同,使用了3x3的卷積和池化下采樣,可以抓住圖像中的上下文信息(也即像素間的關係);後面部分網絡則是與前面基本對稱,使用的是3x3卷積和上採樣,以達到輸出圖像分割的目的。此外,網絡中還用到了特徵融合,將前面部分下采樣網絡的特徵與後面上採樣部分的特徵進行了融合以得到更準確的上下文信息,達到更好的分割效果。web
Unet使用一種稱爲overlap-tile的的策略,使得任意大小輸入的圖片均可以得到一個無縫分割。over-tile策略以下圖所示:面試
該策略的思想是:對圖像的某一塊像素點(黃框內部分)進行預測時,須要該圖像塊周圍的像素點(藍色框內)提供上下文信息(context),以得到更準確的預測。算法
這樣的策略會帶來一個問題,圖像邊界的圖像塊沒有周圍像素,所以做者對周圍像素採用了鏡像擴充。下圖中紅框部分爲原始圖片,其周圍擴充的像素點均由原圖沿白線對稱獲得。這樣,邊界圖像塊也能獲得準確的預測。flask
另外一個問題是,這樣的操做會帶來圖像重疊問題,即第一塊圖像周圍的部分會和第二塊圖像重疊。所以做者在卷積時只使用有效部分(valid part of each convolution),雖然卷積的時候會用到周圍的像素點(藍色框內),但最終傳到下一層的只有中間原先圖像塊(黃色框內)的部分(可理解爲不加padding)。瀏覽器
至於爲何要對圖像分塊不輸入整張圖像則是由於內存的限制,有的機器內存比較小,須要分塊輸入。即使如此,相較以前的滑窗輸入,Unet已經快樂很是多了,其一是由於不用取那麼多塊,其二是由於取塊時候沒有那麼大的重疊。微信
另外一個比較有意思的點是對於細胞邊緣的分割像素點加大了損失權重,使得網絡更加劇視邊緣像素的學習。
UNet 實現文檔印章消除網絡
Requirement
pytorch==1.5app
opencv-python 4.2
numpy
代碼及運行教程 獲取:
關注微信公衆號 datayx 而後回覆 印章 便可獲取。
AI項目體驗地址 https://loveai.tech
data 的目錄結構以下圖:
test:測試集圖片的路徑
mytest:測試結果的輸出路徑
train:訓練集圖片的路徑,包含含印章的圖片以及標註印章位置的xml文件
train_cleaned:訓練集圖片人工去除印章後的標籤
valid:驗證集圖片的路徑,包含含印章的圖片以及標註印章位置的xml文件
valid_cleaned:驗證集圖片人工去除印章後的標籤
config.py 設置參數,包括文件路徑、模型結構參數和訓練的參數等。
train.py 運行 python train.py 訓練模型。
predict.py 運行 python predict.py 測試。
Note:
因爲做者所使用的圖像分辨率極高,在訓練和測試時從完整圖像中扣出包含印章的區域(ImageSize=512*512),而後進行訓練。若是圖片的分辨率適中或者顯存足夠大,能夠跳過此步驟,無需進行印章標註,直接使用原圖進行UNet訓練。
從原圖中扣出印章區域也能夠使用yolo代替。
閱讀過本文的人還看了如下文章:
基於40萬表格數據集TableBank,用MaskRCNN作表格檢測
《深度學習入門:基於Python的理論與實現》高清中文PDF+源碼
2019最新《PyTorch天然語言處理》英、中文版PDF+源碼
《21個項目玩轉深度學習:基於TensorFlow的實踐詳解》完整版PDF+附書代碼
PyTorch深度學習快速實戰入門《pytorch-handbook》
【下載】豆瓣評分8.1,《機器學習實戰:基於Scikit-Learn和TensorFlow》
李沐大神開源《動手學深度學習》,加州伯克利深度學習(2019春)教材
【Keras】完整實現‘交通標誌’分類、‘票據’分類兩個項目,讓你掌握深度學習圖像分類
如何利用全新的決策樹集成級聯結構gcForest作特徵工程並打分?
Machine Learning Yearning 中文翻譯稿
斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)
中科院Kaggle全球文本匹配競賽華人第1名團隊-深度學習與特徵工程
不斷更新資源
深度學習、機器學習、數據分析、python
搜索公衆號添加: datayx
機大數據技術與機器學習工程
搜索公衆號添加: datanlp
長按圖片,識別二維碼
本文分享自微信公衆號 - 機器學習AI算法工程(datayx)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。