FCN中各檔案的作用
1.net.py用於構建網路,即執行net.py可以直接生成所需要的train.prototxt和val.prototxt。
即當需要修改網路時,不需要自己逐個修改train.prototxt和val.prototxt,只需要修改net.py中的相應內容,執行後即可重新全盤生成所修改後的網路。
2.voc_layers.py是FCN中利用python寫的資料層(即使用caffe的Python API 寫的資料輸入層),其格式是相對固定的,包含setup()、reshape()、forward()、backward()四個必要函式。
3.infer.py是FCN中用於測試的python檔案,每次可以單獨測試一張圖片在訓練好的模型下的分割效果(直觀上的以圖片形式展示的分割效果)。
4.surgery.py是FCN中用於轉換模型權重的python檔案。實際上網路卷積層的引數與卷積核的步長和填充數是沒有關係的,只與卷積核的大小,以及該層的輸入通道數和輸出通道數(輸出特徵圖的數目)有關,且最大池化層無需訓練引數。所以可以採用直接將VGG16訓練好的模型引數初始化FCN32s網路各層的權重和偏置,但由於VGG16的fc6和fc7是全連線層,其引數需要經過一定的排列才能賦值給FCN32s的fc6和fc7層(FCN32s這兩層是卷積層)。由此需要surgery.py來實現VGG16引數賦值給FCN32s網路。
5.vis.py用於測試時輸出視覺化分割影象,可以選擇兩種視覺化輸出,一種為直接視覺化的彩色分割圖(左圖);一種為含有掩膜的分割圖(原圖與分割彩色圖的加權融合,右圖)。
6.score.py是FCN中用於測試測試集/驗證集的,並輸出相應的畫素準確度、平均準確度、mean IU和頻率加權交併比(frequency weighted IU)四個指標的python檔案。
7.solve.py是FCN中解決方案檔案,即通過執行solve.py檔案可以實現FCN模型的訓練和測試過程。