1. 程式人生 > >影象風格轉移中神經網路模型的使用

影象風格轉移中神經網路模型的使用

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

影象風格轉移中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

這裡下載