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

1.抽取关键帧的命令:

E:\graduation design\FFMPEG\bin>ffmpeg -i .\.mp4 -vf select='eq(pict_type\,I)',setpts='N/(25*TB)' .\%09d.jpg

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

抽取得到的视频关键帧都存放在文件夹"/home/sunshineatnoon/Downloads/dogs/dogs/"中,利用python的walk函数遍历文件夹中的图像并分类。

代码如下:

 import numpy as np
import matplotlib.pyplot as plt
import os caffe_root = '/home/sunshineatnoon/Downloads/caffe/'
import sys
sys.path.insert(0,caffe_root+'python') import caffe MODEL_FILE = caffe_root+'models/bvlc_reference_caffenet/deploy.prototxt'
PRETRAINED = caffe_root+'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel' #cpu模式
caffe.set_mode_cpu()
#定义使用的神经网络模型
net = caffe.Classifier(MODEL_FILE, PRETRAINED,
mean=np.load(caffe_root + 'python/caffe/imagenet/ilsvrc_2012_mean.npy').mean(1).mean(1),
channel_swap=(2,1,0),
raw_scale=255,
image_dims=(256, 256))
imagenet_labels_filename = caffe_root + 'data/ilsvrc12/synset_words.txt'
labels = np.loadtxt(imagenet_labels_filename, str, delimiter='\t') #对目标路径中的图像,遍历并分类
for root,dirs,files in os.walk("/home/sunshineatnoon/Downloads/dogs/dogs/"):
for file in files:
#加载要分类的图片
IMAGE_FILE = os.path.join(root,file).decode('gbk').encode('utf-8');
input_image = caffe.io.load_image(IMAGE_FILE) #预测图片类别
prediction = net.predict([input_image])
print 'predicted class:',prediction[0].argmax() # 输出概率最大的前5个预测结果
top_k = net.blobs['prob'].data[0].flatten().argsort()[-1:-6:-1]
print labels[top_k]

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

分类结果:

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

还有一张特别惊讶的:

分类结果:

这样都能检测出giant panda和cat,太牛了!

最新文章

  1. 移动平台对于META标签的定义[转]
  2. 用PHP+H5+Boostrap做简单的音乐播放器(进阶版)
  3. java集合练习——Bank
  4. [Microsoft Dynamics CRM 2016]Invalid Action – The selected action was not valid 错误的诱因及解决方法
  5. NOIP 2011 Day 1 部分题解 (Prob#1 and Prob#2)
  6. AxMicrosoft.Office.Interop.Owc11.AxSpreadsheet控件在C#中的引用
  7. 8.3 LIS LCS LCIS(完结了==!)
  8. freemarker判断记录集是不是为空
  9. 向Python女神推荐这些年我追过的经典书籍
  10. dump_stack的简单使用 +CALL TREE
  11. 流动python - 自然装饰
  12. 编写一个简单的Web Server
  13. File类实现文件夹和文件复制
  14. JEECG 3.7 Memory Leak
  15. 怎样写一个PC端使用的操盘手软件(用来买卖股票,查看报表,行情)
  16. node获取windows pc 机器的标示
  17. LeetCode 4.反转整数
  18. Applet初次使用
  19. SpringMVC(1)
  20. 如何恢复VS2013代码实时校验功能

热门文章

  1. webstorm配置内存参数,解决卡顿
  2. org.apache.hadoop.yarn.exceptions.InvalidAuxServiceException: The auxService: mapreduce_shuffle do
  3. java的list集合如何根据对象中的某个字段排序?
  4. 160420、zTree获取所有选中节点数据
  5. AOP通知无法切入指定方法
  6. HDU5667—Sequence(对数转化)
  7. netty 网关 flume 提交数据 去除透明 批处理 批提交 cat head tail 结合 管道显示行号
  8. python学习笔记(二)— 元组(tuple)
  9. Python高级特性(1):Iterators、Generators和itertools(转)
  10. linux系统centOS在虚拟机下的自定义安装