爲了加快開發速度,使用了開源框架,開源框架有不少,這裏僅選擇其中一個作介紹。Keraspython
首先,也是第一步,須要作的是預處理,該步驟的目標是把圖像整理成可以直接塞入網絡的圖片的樣子。git
什麼樣子的圖片格式纔是一個網絡須要的呢?github
好比,你未通過處理的圖像是下面的圖像的樣子(Input,X_train,X)。網絡
而後你想要獲得的輸出圖片的樣子是下面的樣子(Output,Y_train,Y):框架
那麼,你要作的工做來了。手動的把上面的未通過處理的圖片的整理成下面圖片的樣子(或者藉助其餘工具)。工具
而你須要注意的是,這兩張圖片的大小是同樣的(保證像素點的個數一致),由於咱們要獲得的神經網絡輸出圖片(也叫作掩膜圖)須要和神經網絡的輸入圖片的像素點一一對應。學習
神經網絡會根據某種對應法則,將上面的圖片\(X\),映射到下面的圖片\(Y\)中,即\(Y = f(x)\) ,這個映射法則\(f\)咱們沒法用一個公式準確的表達,可是確實是在神經網絡內部實現了這種一一映射。若是真的要表達的話,那麼只能用一個網絡結構來講明這種映射關係了。測試
若是下面的圖片的每一個像素點都是一個機率值,那麼這個圖片就是一個由機率組成的一個矩陣,也叫作機率矩陣。spa
接下來,須要完成的就是須要把這個圖片整理成可以輸入網絡的形式(統一格式):3d
關於這個步驟的處理過程能夠先Copy 預處理的代碼,該步驟用到了Keras的一個類庫:ImageDataGenerator,從這個文檔中,能夠更加詳細的瞭解到如何使用現有的方法解決你的問題了。官方解釋的很到位,更重要的是還有實例。
預處理作完了,那麼就開始訓練吧。
關於shape,是咱們必需要掌握的一個常識性問題,看下圖:
鑑於智商問題,看圖理解,不作解釋。
如何製做網絡模型呢?在圖像分割上,有一個目前效果較好的模型叫作U-net,能夠先用他們的模型直接訓練,而後在前人的基礎上作修改,以此下降學習成本,讓成就感更高,從而促進學習興趣(有點扯)。
模型框架作(Copy)好了,怎麼來使用這個模型來訓練本身的圖片呢?Keras給出了一個方法叫作fit_generator,它能夠激活你的模型,開始你的訓練,裏面的參數須要根據須要本身設置了,每一個參數都是什麼意思能夠參考官方文檔提供的幫助。這裏也是有一個能夠用來參考的實例代碼可使用。
激動人心的時刻就是當你運行了python train.py
以後,接下來,就是漫長的等待它訓練完成,而後對結果進行測試。
如何使用已經創建的網絡模型進行測試?過程十分簡單,使用load_model加載已經保存的模型,而後使用predict方法進行預測。使用方式及參數說明參考官方文檔load_model和predict。這裏也能夠參考實際應用中使用的代碼。