Deep Visual-Semantic Alignments for Generating Image Descriptions从环境配置到得出结果Chapter3

Chapter3.使用自己的图片来跑这个实例
这个过程是最繁琐了,花了我大概三天才调通。在此做个分享。
neuraltalk-master\example_images目录下给出了示例,包括task.txt和vgg_feats.mat。其中taks.txt是需要处理的图片名称的一个合集,vgg_feats.mat是通过CNN后(这里用的是vggnet)生成的图片特征值。
这里写图片描述
在开始之前,你可以点result.html直观地看到对示例图片的预测效果。
之后,开始新的征程。将你希望预测的图片做一个适当的压缩后(比如兆大小的图片压缩到几百kb),放到某个文件夹(这里我还是放在了example_images文件夹下,你可以自己更改,不过在使用MATLAB时需要注意cd到你的目录下。)在task.txt中写下你的图片名称,按给出的示例那样,注意了,每个.jpg/.png与后一个图片的名字之间其实隐藏了一个不可见字符,我刚开始没发现,所以MATLAB处理后cmd跑预测的时候一直出问题。你可以把光标移到每两个图片名之间,会发现确实如此。看下图那个红绿闪烁的光标。查了一下,应该是字符编码中的隐藏字符,具体是啥我也不清楚,不过能知道的是它起到了分隔两个图片文件名的作用,便于后面的处理。
这里写图片描述
好了,tasks.txt完成后,打开你的MATLAB,cd到你的neuraltalk-master目录下:
这里写图片描述
添加caffe_.mexw64路径,可以在.m文件中添加下面的代码,也可以在MATLAB的命令窗口输入。

addpath(‘D:\caffe-windows-master\matlab’);

这里写图片描述
如果你不读懂这个抓取特征的.m文件直接运行它的话,会遇到很多问题,可以自己试试去一个个解决,这样收获更大。
这里我说一下需要对这个特征抓取的.m文件做的修改。
调用的model和weights需要做修改,
这里写图片描述
这里model用的是VGG_ILSVRC_16_layers.caffemodel,进入网站http://www.robots.ox.ac.uk/~vgg/software/very_deep/caffe/VGG_ILSVRC_16_layers.caffemodel下载,500多兆。这是vggnet的模型。
这里写图片描述
这里写图片描述
model下下来后放到caffe的models文件夹下的vgg_ilsvrc_16(自己新建)中。对于weights,我原以为也是用的对应的官方deploy.prototxt文件,但是后来看了实例里面的说明才发现做了更改,它将softmax去掉了。这就尴尬了。。。怪不得MATLAB一直报赋值下标不匹配,原先vgg官方prototxt生成的是一个1000的大小,但是.m文件中定义的是4096的大小。这也说明.md文件必须认真看啊!
这里写图片描述
好了,知道原因后将weights换掉,用matlab_features_reference文件夹下的deploy_features.prototxt。
这里写图片描述
MATLAB中做如下修改:
这里写图片描述
将数据输入部分的代码做修改:
这里写图片描述
这里说一下代码里的内容,
这里写图片描述
scores是我们要的东西,tic和toc是用来获取代码运行时间的。
最后的写出文件中_hdf5.mat可以注释掉。
这里写图片描述
好,一切准备就绪,开始跑代码。
这里写图片描述
因为就三张图片,也就9秒搞定。当然这里容易报错,一般报caffe错误可能是你C盘内存不够了(当然排除了你的caffe配置和相关调用文件的生成问题),MATLAB处理过程中产生的数据量还是很惊人的。清理一下就好了。
这里写图片描述
打开cmd,cd到..\neuraltalk-master目录后输入:

python predict_on_images.py cv\flickr8k_cnn_lstm_v1.p -r example_images

这里写图片描述
等待处理完成,在example_images文件夹下生成了result_struct.json和result.html。
这里写图片描述
这里写图片描述
最后为人工智能而颤抖吧!
这里写图片描述
(图片说明:1.jpg是我家的狗,2.jpg是以前寝室的猫,3.jpg…嗯,全篇到此结束。)


版权信息

发布了24 篇原创文章 · 获赞 26 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/TracelessLe/article/details/54376236
今日推荐