【caffe】用训练好的imagenet模型分类图像
2024-10-19 00:23:37
因为毕设需要,我首先是用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,太牛了!
最新文章
- 移动平台对于META标签的定义[转]
- 用PHP+H5+Boostrap做简单的音乐播放器(进阶版)
- java集合练习——Bank
- [Microsoft Dynamics CRM 2016]Invalid Action – The selected action was not valid 错误的诱因及解决方法
- NOIP 2011 Day 1 部分题解 (Prob#1 and Prob#2)
- AxMicrosoft.Office.Interop.Owc11.AxSpreadsheet控件在C#中的引用
- 8.3 LIS LCS LCIS(完结了==!)
- freemarker判断记录集是不是为空
- 向Python女神推荐这些年我追过的经典书籍
- dump_stack的简单使用 +CALL TREE
- 流动python - 自然装饰
- 编写一个简单的Web Server
- File类实现文件夹和文件复制
- JEECG 3.7 Memory Leak
- 怎样写一个PC端使用的操盘手软件(用来买卖股票,查看报表,行情)
- node获取windows pc 机器的标示
- LeetCode 4.反转整数
- Applet初次使用
- SpringMVC(1)
- 如何恢复VS2013代码实时校验功能
热门文章
- webstorm配置内存参数,解决卡顿
- org.apache.hadoop.yarn.exceptions.InvalidAuxServiceException: The auxService: mapreduce_shuffle do
- java的list集合如何根据对象中的某个字段排序?
- 160420、zTree获取所有选中节点数据
- AOP通知无法切入指定方法
- HDU5667—Sequence(对数转化)
- netty 网关 flume 提交数据 去除透明 批处理 批提交 cat head tail 结合 管道显示行号
- python学习笔记(二)— 元组(tuple)
- Python高级特性(1):Iterators、Generators和itertools(转)
- linux系统centOS在虚拟机下的自定义安装