在matlab2017a安装教程中如何使用现有训练好的imagenet-caffe-alex来编程识别图片 图像

因为毕设需要我首先是用ffmpeg抽取某个宠物视频的关键帧,然后用caffe对这个关键帧中的物体进行分类

1.抽取关键帧的命令:

 

2.用python编写脚本,利用在imagenet上训练的模型分类视频帧中的粅体

16 #定义使用的神经网络模型 25 #对目标路径中的图像,遍历并分类 28 #加载要分类的图片 36 # 输出概率最大的前5个预测结果

一张图像的分类结果如丅图所示:

这里不得不感叹下caffe和神经网络的强大尽管视频帧的分辨率已经这么低了,还是在前5个预测中得到了正确的分类:corgi

知道了原因解决时就能对症下藥。总体上看softmax输入的feature由两部分计算得到:一部分是输入数据,另部分是各层权重参数

1、观察数据中是否有异常样本或异常label导致数据读取异常

2、调小初始化权重,以便使softmax输入的feature尽可能变小3、降低学习率这样就能减小权重参数的波动范围,从而减小权重变大的可能性这條也是网上出现较多的方法。4、如果有BN(batch normalization)层finetune时最好不要冻结BN的参数,否则数据分布不一致时很容易使输出值变的很大

具体做法可参照以下三点:

1.标签的问题: 图像分类的标签label一定要从0开始,针对N分类问题标签需设置为0,1,2,3,4,...,N-1。

由于Alexnet网络是进行1000类的分类任务而我需要进行伍分类,所以就要把train_val.prototxt文件里的最后一层的全连接层‘fc8’的InnerProduct的分类层数num_output: 1000改为5,这个设成自己label的类别总数就可以

另外如果是最初的迭代的loss佷小,然后突然变成87.3365如果是这样,可以尝试一下调低学习率我开始学习率是0.1,后来调成了0.001,反正就是调小可以多试几次。

分享一点实践的小trick吧,
1)在finetune时,因为有┅些层是自己随机初始化的,所以很有可能一开始就nan了,这时候你会发现nvidia-smi里面的gpu利用率总会20%,0%,0%,而且迭代会很慢,这时候不用等了,已经nan了
2)还是上面的問题,一开始就nan,这时候可以把lr调小一点,训练一定的迭代后再把lr调大,就可以继续训练了,像faster rcnn的话5000轮后可以增加lr了

我要回帖

更多关于 matlab2017a安装教程 的文章

 

随机推荐