圖像風格轉移中神經網絡模型的使用

Neural Style 中使用其他的神經網絡模型

Taylor Guo, 2017年5月31日

Using Other Neural Models

圖像風格轉移中VGG-19和NIN模型都可以用,還有其他的模型也可以使用。這裏就把它們列出來,說明它們能做什麼,什麼時候使用它們,怎麼樣使用,它們的性能怎麼樣,去哪下載。

神經網絡模型

神經網絡模型比較複雜,有人認爲這是人工智能的開始,有人認爲這些只是一些小技巧。但對神經網絡風格轉移,它們可以將圖像轉移爲人畫的。

訓練好的模型 與 未訓練的模型

在神經網絡風格轉移中,神經網絡需要用圖像進行訓練才能使用。這類似於計算機沒有軟件或有軟件的差別,也就是一個神經網絡結構和完全訓練好的模型的區別。

比如,VGG 19,是指一個用prototxt文件定義好的神經網絡結構。談到神經網絡風格轉移時,VGG 19模型就指的是一個在ILSVRC圖像數據集上用以對圖像進行分類任務上訓練好的網絡。應該可以注意到,如果VGG 19網絡訓練任務不同,會使得它們在神經風格轉移中表現也有所不同。一個用不同數據訓練好的模型對圖像中特徵的響應也會不同。這裏將會講解VGG 16和VGG 19上幾個不同的訓練模型。它們有相同的結構(VGG 16 或 VGG 19, 所以有相同的prototxt文件),但.caffemodel文件中包含的權重是不同的,導致模型以不同的方式工作。權重指的是影響人工神經元運行的權重,而不是神經網絡風格轉移中的權重參數。

安裝新模型

神經網絡風格轉移可以以.caffemodel格式的模型方式工作,除非它們包含的特徵是torch不支持的,(比如AlexNet需要GROUP)。

一個模型有兩個文件:一個.caffemodel 和一個 .prototxt ,.caffemodel 文件就是模型本身, .prototxt描述的是神經網絡的結構。這些模型可以拷貝到任何神經網絡風格轉移項目的目錄中,推薦把它們拷貝到主項目的/model目錄下,使得文件更有組織一些。如果要拷貝到別處,需要修改命令。

注意:如果要用更多的模型做實驗,在/models目錄下創建子目錄會更好一些,因爲沒有約定俗成的方式來命名模型,所以可能會找到幾個不同的文件稱爲model.caffemodel和train.prototxt。

基本使用

爲了使用剛安裝的模型,需要用參數-model_file models/[modelname]和-proto_file models/[protoname]來調用它們,其中 [modelname] 和[protoname]是完整的文件名帶擴展名。

然後,用 -content_layers 和-style_layers 參數,調用不同的層,每個模型要調用哪個層可能會有差別。也可以在.prototxt文件中查看哪個層被調用了。比如:

layers {

bottom: "conv1_1"

top: "conv1_1"

name: "relu1_1" // 這裏的名字是: -content_layers 或 -style_layers

type: RELU //  需要做 RELU 的類型

}

寫下所有的類型:ReLU層,用逗號分開,應該像這個樣子:

-content_layers relu2,relu5,relu8,relu11 -style_layers relu2,relu5,relu8,relu11

注意:必須對內容和風格調用相同的層。
可以根據需要或想要做的實驗,隨意使用或忽略內容和風格。但是必須明確給風格和內容指定層。注意:越高的層可能損失值越小,所以當需要增加內容權重時,需要忽略比較低的層。

NIN 例子

th neural_style.lua -style_image [image1] -content_image [image2] -output_image [outimage] -model_file models/nin_imagenet_conv.caffemodel -proto_file models/train_val.prototxt -content_layers relu0,relu3,relu7,relu12 -style_layers relu0,relu3,relu7,relu12

模型列表

模型描述:
模型文件: fullmodelname.caffemodel
prototxt文件: fullprotoname.prototxt
使用的Layers: relulayer#, relulayer#, relulayer#, relulayer#, relulayer#

命令:

th neural_style.lua -style_image [image1] -content_image [image2] -output_image [outimage] -model_file models/fullmodelname.caffemodel -proto_file models/fullprotoname.prototxt -content_layers relulayer#,relulayer#,relulayer#,relulayer#,relulayer# -style_layers relulayer#,relulayer#,relulayer#,relulayer#,relulayer#

牛津視覺幾何組VGG-19
神經網絡風格轉移中的標準caffemodel。無需調整就能做出好的結果,但需要使用大量小圖片。
標準化版本如下:

Model file:      VGG_ILSVRC_19_layers.caffemodel 或 vgg_normalised.caffemodel

Proto file:      VGG_ILSVRC_19_layers_deploy.prototxt

Layers used:     relu1_1,relu2_1,relu3_1,relu4_1,relu5_1

這裏查看


DeepLab的DeepLab Pre-Trained Model

圖像使用量與VGG-16相當。如果只使用3層網絡,結果與PASCAL VOC FCN-32s類似,但可以生成更高分辨率的圖像。

Model file:      model.caffemodel

Proto file:      deploy_x30.prototxt

Layers used:     relu5_3,relu7,relu5_2,relu5_1,relu4_1,relu3_3,relu3_1,relu2_2,relu1_2,relu1_1

這裏下載

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章