想做圖像特徵提取,有預訓練好的alexnet模型嗎?(TensorFlow或Keras)?
有預訓練好的alexnet模型嗎?
Keras, https://keras.io/applications/
- Xception
- VGG16
- VGG19
- ResNet, ResNetV2, ResNeXt
- InceptionV3
- InceptionResNetV2
- MobileNet
- MobileNetV2
- DenseNet
- NASNet
from keras.applications.vgg19 import preprocess_input
from keras.applications.vgg19 import VGG19base_model = VGG19(weights=imagenet)model=Model(input=base_model.input,output=base_model.get_layer(block4_pool).output)
#x.shape=[batch_size,224,224,3]x = preprocess_input(x)features = model.predict(x)
keras換不同的模型函數和get_layer的名稱就可以提取出想要層的輸出,具體領域也有一些公開的模型參數,作特徵提取盡量不要使用太簡單的卷積網路,特徵提取出來的表達性不一定好。
太多了。
CNN經典演算法AlexNet介紹 | 數據學習者官方網站(Datalearner)?www.datalearner.com
這個博客裡面有AlexNet相關的解釋,最後一部分是代碼和預訓練的模型。
PaddlePaddle/PaddleHub?github.com
PaddlePaddle的預訓練工具PaddleHub可以關注一下
謝邀。keras自帶用imagenet預訓練好的各種網路,可以瞭解一下。github上開源的代碼有很多搜過了都用不了嗎?
Alexnet 成名是 2012 年呀,為啥要用這麼」古老「的模型?
高層特徵提取的話 VGG19 都嫌老,可以參考一下,Google 給的 Youtube-8M 實在太大,所以準備了預抽取圖像特徵,用的 Inception-V3 再用 PCA 壓縮。
這事我前些日子做過,首先沒有找到tf版現成的預訓練模型,你需要這樣做:
- 下載 http://www.cs.toronto.edu/~guerzhoy/tf_alexnet/bvlc_alexnet.npy
- 參考下方代碼載入,注意:
- 對齊scope_name、network
- Alexnet包含group=2卷積,但是npy中只有一個group對應的參數,因此這裡我給每個group相同的參數。
import tensorflow
import numpy
loads alexnet npy
WEIGHTS_PATH = ROOT/bvlc_alexnet.npy
weights_dict = np.load(WEIGHTS_PATH, encoding=bytes).item()
variable_names = [v.name for v in tf.trainable_variables()]
for op_name in weights_dict:
if op_name in [fc8]:
continue
with tf.variable_scope(SCOPE_NAME, reuse=True):
with tf.variable_scope(op_name, reuse=True):
for data in weights_dict[op_name]:
print(op_name)
if len(data.shape) == 1:
var = tf.get_variable(biases, trainable=False)
sess.run(var.assign(data))
else:
if op_name in [conv2, conv4, conv5]:
data = np.concatenate([data, data], axis=2) # group 2x
var = tf.get_variable(weights, trainable=False)
sess.run(var)
sess.run(var.assign(data))
為什麼不用更強的預訓練模型?
應有盡有吧。
推薦閱讀: