使用神經網路VGG16識別海賊王人物角色

2021-09-11 01:13:14 字數 3774 閱讀 1071

寒假過程中,畫了3天採集海賊王角色資料並進行標註,然後花了1天時間使用神經網路訓練資料集,並進行驗證

序號資料夾

含義數量

0lufei

路飛117 張

1suolong

索隆90 張

2namei

娜美84 張

3wusuopu

烏索普77張

4qiaoba

喬巴102 張

5shanzhi

山治47 張

6luobin

羅蘋105張

對人臉部分進行提取

使用matlab軟體的 imcrop 函式對整張進行部分截圖,並將不同的角色儲存至不同的資料夾中,詳見

/blob/master/hzw/imc.m

使用方法:

在matlab命令列介面輸入角色名稱

使用vgg16網路進行訓練,詳見我的vgg16_notebook

對進行預處理

# 引數設定

from matplotlib import pyplot

from keras.preprocessing.image import imagedatagenerator

datagen = imagedatagenerator(rotation_range=

30,

width_shift_range=

0.1, height_shift_range=

0.1,

brightness_range=

[0.8

,1.5],

zoom_range=

[0.8

,1.2],

horizontal_flip=

false

, vertical_flip=

false

, rescale=1/

128.0

, featurewise_center=

true

)# 看一下增強的結果

datagen.fit(train_data)

for batch_data, batch_label in datagen.flow(train_data, train_label, batch_size=9)

: batch_data = batch_data

batch_data = np.clip(batch_data,0,

1)print

(batch_data.

max())

print

(batch_data.

min())

for i in

range(9

):pyplot.imshow(batch_data[i]

) pyplot.show(

)break

增強的結果

匯入keras中的vgg16模型, 並修改為自己的網路

from keras.layers import input, dense, dropout, activation, flatten

from keras.models import model

import numpy as np

tbatchsize =

64'''第一步:選擇模型'''

#vgg16要求大小最少48

model_vgg = vgg16(include_top=

false

, input_shape=

(128

,128,3

))for layer in model_vgg.layers:

layer.trainable =

false

model = flatten(name=

'flatten'

)(model_vgg.output)

model = dense(

500, activation=

'relu'

, name=

'fc1'

)(model)

model = dense(

500, activation=

'relu'

, name=

'fc2'

)(model)

model = dropout(

0.5)

(model)

model = dense(

7, activation=

'softmax'

)(model)

model = model(inputs=model_vgg.

input

, outputs = model, name =

'vgg16'

)model.

compile

(loss=

'categorical_crossentropy'

, optimizer=

'adam'

, metrics=

['accuracy'

])

實驗結果

將以及識別的結果使用 matplotlib列印出來

同時使用inception v3實驗了一下,發現效果不好,有同學明白的話希望能幫助我一下.

經典卷積神經網路之 VGG16

命名 16表示除pooling layer外使用conv layer的層數 1.vggnet探索了卷積神經網路的深度與其效能之間的關係,通過反覆堆疊3 3的小型卷積核和2 2的最大池化層,vggnet成功地構築了16 19層深的卷積神經網路 2.vggnet結構簡潔,整個網路都使用了同樣大小的卷積核...

卷積神經網路 經典神經網路模型之VGG 16

vgg 16其中的16含義為 含有權重引數的有16層,共包含引數約為1.38億,這是乙個相當大的網路。但是其網路結構很規整簡潔,沒有那麼多的超引數,專注於構建簡單的網路結構 都是幾個卷積層後面跟乙個最大池化層 通過不斷的加深網路結構來提公升效能 但是由此也會帶來訓練的特徵數量非常大的缺點。其網路結構...

深入理解卷積神經網路 VGG16

二 分析 vgg16 的過程 三 理解神經網路 vgg 16 四 用vgg16 來做乙個影象識別案例 vgg是由simonyan 和zisserman在文獻 very deep convolutional networks for large scale image recognition 中提出卷...