-
大小: 225KB文件類型: .zip金幣: 2下載: 0 次發布日期: 2021-05-13
- 語言: Python
- 標簽:
資源簡介
基于VGG19的圖像風格遷移,如果沒有vgg-19文件 運行utils代碼是會下載。 在styles文件夾中選擇更改要遷移的圖,包含了風格圖片,內容圖片替換成自己要進行操作的圖片即可。是可以直接運行跑通的。有疑問的話可以留言詢問。

代碼片段和文件信息
import?numpy?as?np
import?scipy.io
import?tensorflow?as?tf
import?utils
#?VGG-19?parameters?file
VGG_DOWNLOAD_link?=?“http://www.vlfeat.org/matconvnet/models/imagenet-vgg-verydeep-19.mat“
VGG_FILENAME?=?“imagenet-vgg-verydeep-19.mat“
EXPECTED_BYTES?=?534904783??#?文件大小
class?VGG(object):
????def?__init__(self?input_img):
????????#?下載文件
????????utils.download(VGG_DOWNLOAD_link?VGG_FILENAME?EXPECTED_BYTES)
????????#?加載文件
????????self.vgg_layers?=?scipy.io.loadmat(VGG_FILENAME)[“layers“]
????????self.input_img?=?input_img
????????#?VGG在處理圖像時候會將圖片進行mean-center,所以我們首先要計算RGB三個channel上的mean
????????self.mean_pixels?=?np.array([123.68?116.779?103.939]).reshape((1?1?1?3))
????def?_weights(self?layer_idx?expected_layer_name):
????????“““
????????獲取指定layer層的pre-trained權重
????????:param?layer_idx:?VGG中的layer?id
????????:param?expected_layer_name:?當前layer命名
????????:return:?pre-trained權重W和b
????????“““
????????W?=?self.vgg_layers[0][layer_idx][0][0][2][0][0]
????????b?=?self.vgg_layers[0][layer_idx][0][0][2][0][1]
????????#?當前層的名稱
????????layer_name?=?self.vgg_layers[0][layer_idx][0][0][0][0]
????????assert?layer_name?==?expected_layer_name
????????print(“layer?name?error!“)
????????return?W?b.reshape(b.size)
????def?conv2d_relu(self?prev_layer?layer_idx?layer_name):
????????“““
????????采用relu作為激活函數的卷積層
????????:param?prev_layer:?前一層網絡
????????:param?layer_idx:?VGG中的layer?id
????????:param?layer_name:?當前layer命名
????????“““
????????with?tf.variable_scope(layer_name):
????????????#?獲取當前權重(numpy格式)
????????????W?b?=?self._weights(layer_idx?layer_name)
????????????#?將權重轉化為tensor(由于我們不需要重新訓練VGG的權重,因此初始化為常數)
????????????W?=?tf.constant(W?name=“weights“)
????????????b?=?tf.constant(b?name=“bias“)
????????????#?卷積操作
????????????conv2d?=?tf.nn.conv2d(input=prev_layer
??????????????????????????????????filter=W
??????????????????????????????????strides=[1?1?1?1]
??????????????????????????????????padding=“SAME“)
????????????#?激活
????????????out?=?tf.nn.relu(conv2d?+?b)
????????setattr(self?layer_name?out)
????def?avgpool(self?prev_layer?layer_name):
????????#“““
????????#average?pooling層(這里參考了原論文中提到了avg-pooling比max-pooling效果好,所以采用avg-pooling)
???????#?:param?prev_layer:?前一層網絡(卷積層)
????????#:param?layer_name:?當前layer命名
????????#“““
????????with?tf.variable_scope(layer_name):
????????????#?average?pooling
????????????out?=?tf.nn.avg_pool(value=prev_layer
?????????????????????????????????ksize=[1?2?2?1]
?????????????????????????????????strides=[1?2?2?1]
?????????????????????????????????padding=“SAME“)
????????setattr(self?layer_name?out)
????def?load(self):
????????“““
????????加載pre-trained的數據
????????“““
????????self.conv2d_relu(self.input_img?0?“conv1_1“)
????????self.conv2d_relu(self.conv1_1?2?“conv1_2“)
????????self.avgpool(self.conv1_2?“avgpool1“)
????????self.conv2d_relu(self.avgpool1?5?“conv2_1“)
????????self.conv2d_relu(self.c
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2019-07-26?21:54??圖像風格遷移?Python?vgg\
?????文件????????4227??2019-07-09?13:08??圖像風格遷移?Python?vgg\load_vgg.py
?????目錄???????????0??2019-07-26?21:53??圖像風格遷移?Python?vgg\st
?????目錄???????????0??2019-07-26?21:55??圖像風格遷移?Python?vgg\st
?????文件???????19875??2019-07-09?19:24??圖像風格遷移?Python?vgg\st
?????文件???????31984??2019-07-09?15:22??圖像風格遷移?Python?vgg\st
?????文件???????33499??2019-07-09?21:17??圖像風格遷移?Python?vgg\st
?????文件???????57785??2019-07-09?15:04??圖像風格遷移?Python?vgg\st
?????文件???????34430??2019-07-09?13:26??圖像風格遷移?Python?vgg\st
?????文件???????23973??2019-07-09?17:03??圖像風格遷移?Python?vgg\st
?????文件???????22993??2019-07-09?14:52??圖像風格遷移?Python?vgg\st
?????文件????????8386??2019-07-11?18:56??圖像風格遷移?Python?vgg\st
- 上一篇:pyton 實現學生信息管理系統
- 下一篇:高效爬取微博數據python3實現
評論
共有 條評論