在吴恩达深度学习系列视频:卷积神经网络第三周作业中,加载预训练模型时:
yolo_model = load_model("model_data/yolo.h5")
你会遇到yolo.h5
文件找不到的情况,而当你去网上下载了一个yolo.h5
文件时,可能会遇到unknown opcode
等其他错误。
下面让我们来自己生成一个全新的yolo.h5文件。
下载预训练的权重:
Linux
wget /media/files/yolo.weights
Window
/media/files/yolo.weights
点击上面链接之后自动下载
下载配置文件:
/pjreddie/darknet/tree/master/cfg
找到yolov2.cfg
下载下来,并改名成yolo.cfg(调用该文件时,使用的名字是这个)。
下载需要脚本
/allanzelener/YAD2K
点击
下载zip。
当然你使用git命令下载下来也可以。
准备工作
复制或剪切yolo.weights
和yolo.cfg
以及yad2k.py
三个文件,以及一个文件夹yad2k
到我的文档(桌面上那个我的文档,它是命令行执行的默认路径,这样你就不需要cd
进下载目录执行操作了)。
注意文件夹吴恩达提供的作业里已经有yad2k
文件夹,所有windows会提示你是否替换原有文件,点击替换。
打开Anaconda Prompt
(tensorflow) C:\Users\wangh>python yad2k.py yolo.cfg yolo.weights model_data/yolo.h5
注意,我是在tensorflow虚拟环境下进行的,你在什么环境下运行都可以,它本质上是调用yad2k.py使用yolo.weights
和yolo.cfg
去生成yolo.py
,需要有keras包。
结果
(tensorflow) C:\Users\wangh>python yad2k.py yolo.cfg yolo.weights model_data/yolo.h5Using TensorFlow backend.Loading weights.Weights Header: [ 0 1 0 3312]Parsing Darknet config.Creating Keras model.Parsing section net_0Parsing section convolutional_0conv2d bn leaky (3, 3, 3, 32)-12-26 14:39:43.768410: I tensorflow/core/platform/:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2Parsing section maxpool_0Parsing section convolutional_1conv2d bn leaky (3, 3, 32, 64)Parsing section maxpool_1Parsing section convolutional_2conv2d bn leaky (3, 3, 64, 128)Parsing section convolutional_3conv2d bn leaky (1, 1, 128, 64)Parsing section convolutional_4conv2d bn leaky (3, 3, 64, 128)Parsing section maxpool_2Parsing section convolutional_5conv2d bn leaky (3, 3, 128, 256)Parsing section convolutional_6conv2d bn leaky (1, 1, 256, 128)Parsing section convolutional_7conv2d bn leaky (3, 3, 128, 256)Parsing section maxpool_3Parsing section convolutional_8conv2d bn leaky (3, 3, 256, 512)Parsing section convolutional_9conv2d bn leaky (1, 1, 512, 256)Parsing section convolutional_10conv2d bn leaky (3, 3, 256, 512)Parsing section convolutional_11conv2d bn leaky (1, 1, 512, 256)Parsing section convolutional_12conv2d bn leaky (3, 3, 256, 512)Parsing section maxpool_4Parsing section convolutional_13conv2d bn leaky (3, 3, 512, 1024)Parsing section convolutional_14conv2d bn leaky (1, 1, 1024, 512)Parsing section convolutional_15conv2d bn leaky (3, 3, 512, 1024)Parsing section convolutional_16conv2d bn leaky (1, 1, 1024, 512)Parsing section convolutional_17conv2d bn leaky (3, 3, 512, 1024)Parsing section convolutional_18conv2d bn leaky (3, 3, 1024, 1024)Parsing section convolutional_19conv2d bn leaky (3, 3, 1024, 1024)Parsing section route_0Parsing section convolutional_20conv2d bn leaky (1, 1, 512, 64)Parsing section reorg_0Parsing section route_1Concatenating route layers: [<tf.Tensor 'space_to_depth_x2/SpaceToDepth:0' shape=(?, 19, 19, 256) dtype=float32>, <tf.Tensor 'leaky_re_lu_20/LeakyRelu:0' shape=(?, 19, 19, 1024) dtype=float32>]Parsing section convolutional_21conv2d bn leaky (3, 3, 1280, 1024)Parsing section convolutional_22conv2d linear (1, 1, 1024, 425)Parsing section region_0__________________________________________________________________________________________________Layer (type)Output Shape Param #Connected to==================================================================================================input_1 (InputLayer) (None, 608, 608, 3) 0__________________________________________________________________________________________________conv2d_1 (Conv2D)(None, 608, 608, 32) 864 input_1[0][0]__________________________________________________________________________________________________batch_normalization_1 (BatchNor (None, 608, 608, 32) 128 conv2d_1[0][0]__________________________________________________________________________________________________leaky_re_lu_1 (LeakyReLU) (None, 608, 608, 32) 0 batch_normalization_1[0][0]__________________________________________________________________________________________________max_pooling2d_1 (MaxPooling2D) (None, 304, 304, 32) 0 leaky_re_lu_1[0][0]__________________________________________________________________________________________________conv2d_2 (Conv2D)(None, 304, 304, 64) 18432 max_pooling2d_1[0][0]__________________________________________________________________________________________________batch_normalization_2 (BatchNor (None, 304, 304, 64) 256 conv2d_2[0][0]__________________________________________________________________________________________________leaky_re_lu_2 (LeakyReLU) (None, 304, 304, 64) 0 batch_normalization_2[0][0]__________________________________________________________________________________________________max_pooling2d_2 (MaxPooling2D) (None, 152, 152, 64) 0 leaky_re_lu_2[0][0]__________________________________________________________________________________________________conv2d_3 (Conv2D)(None, 152, 152, 128 73728 max_pooling2d_2[0][0]__________________________________________________________________________________________________batch_normalization_3 (BatchNor (None, 152, 152, 128 512 conv2d_3[0][0]__________________________________________________________________________________________________leaky_re_lu_3 (LeakyReLU) (None, 152, 152, 128 0 batch_normalization_3[0][0]__________________________________________________________________________________________________conv2d_4 (Conv2D)(None, 152, 152, 64) 8192 leaky_re_lu_3[0][0]__________________________________________________________________________________________________batch_normalization_4 (BatchNor (None, 152, 152, 64) 256 conv2d_4[0][0]__________________________________________________________________________________________________leaky_re_lu_4 (LeakyReLU) (None, 152, 152, 64) 0 batch_normalization_4[0][0]__________________________________________________________________________________________________conv2d_5 (Conv2D)(None, 152, 152, 128 73728 leaky_re_lu_4[0][0]__________________________________________________________________________________________________batch_normalization_5 (BatchNor (None, 152, 152, 128 512 conv2d_5[0][0]__________________________________________________________________________________________________leaky_re_lu_5 (LeakyReLU) (None, 152, 152, 128 0 batch_normalization_5[0][0]__________________________________________________________________________________________________max_pooling2d_3 (MaxPooling2D) (None, 76, 76, 128) 0 leaky_re_lu_5[0][0]__________________________________________________________________________________________________conv2d_6 (Conv2D)(None, 76, 76, 256) 294912max_pooling2d_3[0][0]__________________________________________________________________________________________________batch_normalization_6 (BatchNor (None, 76, 76, 256) 1024 conv2d_6[0][0]__________________________________________________________________________________________________leaky_re_lu_6 (LeakyReLU) (None, 76, 76, 256) 0 batch_normalization_6[0][0]__________________________________________________________________________________________________conv2d_7 (Conv2D)(None, 76, 76, 128) 32768 leaky_re_lu_6[0][0]__________________________________________________________________________________________________batch_normalization_7 (BatchNor (None, 76, 76, 128) 512 conv2d_7[0][0]__________________________________________________________________________________________________leaky_re_lu_7 (LeakyReLU) (None, 76, 76, 128) 0 batch_normalization_7[0][0]__________________________________________________________________________________________________conv2d_8 (Conv2D)(None, 76, 76, 256) 294912leaky_re_lu_7[0][0]__________________________________________________________________________________________________batch_normalization_8 (BatchNor (None, 76, 76, 256) 1024 conv2d_8[0][0]__________________________________________________________________________________________________leaky_re_lu_8 (LeakyReLU) (None, 76, 76, 256) 0 batch_normalization_8[0][0]__________________________________________________________________________________________________max_pooling2d_4 (MaxPooling2D) (None, 38, 38, 256) 0 leaky_re_lu_8[0][0]__________________________________________________________________________________________________conv2d_9 (Conv2D)(None, 38, 38, 512) 1179648max_pooling2d_4[0][0]__________________________________________________________________________________________________batch_normalization_9 (BatchNor (None, 38, 38, 512) 2048 conv2d_9[0][0]__________________________________________________________________________________________________leaky_re_lu_9 (LeakyReLU) (None, 38, 38, 512) 0 batch_normalization_9[0][0]__________________________________________________________________________________________________conv2d_10 (Conv2D) (None, 38, 38, 256) 131072leaky_re_lu_9[0][0]__________________________________________________________________________________________________batch_normalization_10 (BatchNo (None, 38, 38, 256) 1024 conv2d_10[0][0]__________________________________________________________________________________________________leaky_re_lu_10 (LeakyReLU)(None, 38, 38, 256) 0 batch_normalization_10[0][0]__________________________________________________________________________________________________conv2d_11 (Conv2D) (None, 38, 38, 512) 1179648leaky_re_lu_10[0][0]__________________________________________________________________________________________________batch_normalization_11 (BatchNo (None, 38, 38, 512) 2048 conv2d_11[0][0]__________________________________________________________________________________________________leaky_re_lu_11 (LeakyReLU)(None, 38, 38, 512) 0 batch_normalization_11[0][0]__________________________________________________________________________________________________conv2d_12 (Conv2D) (None, 38, 38, 256) 131072leaky_re_lu_11[0][0]__________________________________________________________________________________________________batch_normalization_12 (BatchNo (None, 38, 38, 256) 1024 conv2d_12[0][0]__________________________________________________________________________________________________leaky_re_lu_12 (LeakyReLU)(None, 38, 38, 256) 0 batch_normalization_12[0][0]__________________________________________________________________________________________________conv2d_13 (Conv2D) (None, 38, 38, 512) 1179648leaky_re_lu_12[0][0]__________________________________________________________________________________________________batch_normalization_13 (BatchNo (None, 38, 38, 512) 2048 conv2d_13[0][0]__________________________________________________________________________________________________leaky_re_lu_13 (LeakyReLU)(None, 38, 38, 512) 0 batch_normalization_13[0][0]__________________________________________________________________________________________________max_pooling2d_5 (MaxPooling2D) (None, 19, 19, 512) 0 leaky_re_lu_13[0][0]__________________________________________________________________________________________________conv2d_14 (Conv2D) (None, 19, 19, 1024) 4718592max_pooling2d_5[0][0]__________________________________________________________________________________________________batch_normalization_14 (BatchNo (None, 19, 19, 1024) 4096 conv2d_14[0][0]__________________________________________________________________________________________________leaky_re_lu_14 (LeakyReLU)(None, 19, 19, 1024) 0 batch_normalization_14[0][0]__________________________________________________________________________________________________conv2d_15 (Conv2D) (None, 19, 19, 512) 524288leaky_re_lu_14[0][0]__________________________________________________________________________________________________batch_normalization_15 (BatchNo (None, 19, 19, 512) 2048 conv2d_15[0][0]__________________________________________________________________________________________________leaky_re_lu_15 (LeakyReLU)(None, 19, 19, 512) 0 batch_normalization_15[0][0]__________________________________________________________________________________________________conv2d_16 (Conv2D) (None, 19, 19, 1024) 4718592leaky_re_lu_15[0][0]__________________________________________________________________________________________________batch_normalization_16 (BatchNo (None, 19, 19, 1024) 4096 conv2d_16[0][0]__________________________________________________________________________________________________leaky_re_lu_16 (LeakyReLU)(None, 19, 19, 1024) 0 batch_normalization_16[0][0]__________________________________________________________________________________________________conv2d_17 (Conv2D) (None, 19, 19, 512) 524288leaky_re_lu_16[0][0]__________________________________________________________________________________________________batch_normalization_17 (BatchNo (None, 19, 19, 512) 2048 conv2d_17[0][0]__________________________________________________________________________________________________leaky_re_lu_17 (LeakyReLU)(None, 19, 19, 512) 0 batch_normalization_17[0][0]__________________________________________________________________________________________________conv2d_18 (Conv2D) (None, 19, 19, 1024) 4718592leaky_re_lu_17[0][0]__________________________________________________________________________________________________batch_normalization_18 (BatchNo (None, 19, 19, 1024) 4096 conv2d_18[0][0]__________________________________________________________________________________________________leaky_re_lu_18 (LeakyReLU)(None, 19, 19, 1024) 0 batch_normalization_18[0][0]__________________________________________________________________________________________________conv2d_19 (Conv2D) (None, 19, 19, 1024) 9437184leaky_re_lu_18[0][0]__________________________________________________________________________________________________batch_normalization_19 (BatchNo (None, 19, 19, 1024) 4096 conv2d_19[0][0]__________________________________________________________________________________________________conv2d_21 (Conv2D) (None, 38, 38, 64) 32768 leaky_re_lu_13[0][0]__________________________________________________________________________________________________leaky_re_lu_19 (LeakyReLU)(None, 19, 19, 1024) 0 batch_normalization_19[0][0]__________________________________________________________________________________________________batch_normalization_21 (BatchNo (None, 38, 38, 64) 256 conv2d_21[0][0]__________________________________________________________________________________________________conv2d_20 (Conv2D) (None, 19, 19, 1024) 9437184leaky_re_lu_19[0][0]__________________________________________________________________________________________________leaky_re_lu_21 (LeakyReLU)(None, 38, 38, 64) 0 batch_normalization_21[0][0]__________________________________________________________________________________________________batch_normalization_20 (BatchNo (None, 19, 19, 1024) 4096 conv2d_20[0][0]__________________________________________________________________________________________________space_to_depth_x2 (Lambda)(None, 19, 19, 256) 0 leaky_re_lu_21[0][0]__________________________________________________________________________________________________leaky_re_lu_20 (LeakyReLU)(None, 19, 19, 1024) 0 batch_normalization_20[0][0]__________________________________________________________________________________________________concatenate_1 (Concatenate)(None, 19, 19, 1280) 0 space_to_depth_x2[0][0]leaky_re_lu_20[0][0]__________________________________________________________________________________________________conv2d_22 (Conv2D) (None, 19, 19, 1024) 11796480 concatenate_1[0][0]__________________________________________________________________________________________________batch_normalization_22 (BatchNo (None, 19, 19, 1024) 4096 conv2d_22[0][0]__________________________________________________________________________________________________leaky_re_lu_22 (LeakyReLU)(None, 19, 19, 1024) 0 batch_normalization_22[0][0]__________________________________________________________________________________________________conv2d_23 (Conv2D) (None, 19, 19, 425) 435625leaky_re_lu_22[0][0]==================================================================================================Total params: 50,983,561Trainable params: 50,962,889Non-trainable params: 20,672__________________________________________________________________________________________________NoneSaved Keras model to model_data/yolo.h5Read 50983561 of 50983561.0 from Darknet weights.
然后model_data文件下多出了一个文件yolo.h5
,就可以正常使用了。