利用搜索引擎和ffmpeg生成深度学习图片数据集

现在我们利用tensorflow 的slim,object detect api,darknet yolo等框架,可以很容易的训练自己的图像识别模型,数据集的好坏多少影响着模型的准确性,以及训练的成本。如何获取到优质的样本呢?这是大家都会思考的问题。今天我们来讲几个获取图片样本的途径及方法。

1、使用图片搜索引擎
比如百度图片,google图片等,我们知道搜索引擎上有很多图片,但也存在重复和无效图片,我们需要设计一款爬虫,具有把图片批量抓取下来,统一改名,转换格式,分辨率(有些模型对图片分辨率是要求的比如一定要300*300)还有去重等功能,比如 这款小工具(https://github.com/sanfooh/tensorflow_label_tool )就有从百度图片下载,统一改名,简单去重,转jpg及改大小格式等功能


2、从视频中获取
我们知道视频其实是由一帧帧画面组成,比如帧率为25的视频,代表它一秒有25张画面,对我们来说,如果从一个视频里一秒取一个画面,一个小时的视频,我们就能取到3600张图片,有些珍贵的视频,能给我们提供大量的珍贵数据源。要从视频里截图,我们需要ffmpeg这个工具,下面介绍在windows里如使用ffmepg来定时截图:
1)打开ffmpegp官网的下载页面 http://ffmpeg.org/download.html



下载后解压开得到文件

其中ffmpeg.exe就是我们需要的工具,将ffmpeg.exe的目录加到环境变量PATH中(在现有的PATH后面加分号再加ffmpeg的路径,比如我的ffmpeg.exe位置在c:\ffmpeg\ffmpeg.exe)

打开一个cmd,输入ffmpeg 回车,如果没有错,则如下所示:

假如我们有一个视频叫“1.avi”,我们可以祭出神奇的ffmpeg命令如下:
ffmpeg -ss 00:10 -i "C:\ffmpeg\1.avi"  -f image2 -r 2 -t 04:00   -vf  "scale =w=300:h= 300:force_original_aspect_ratio=decrease,pad=300:300:(ow-iw)/2:(oh-ih)/2"   C:\ffmpeg\test\%4d.jpg 
-ss 00:10 是指我们跳开片头从10秒开始
-f image2 是指输出的格式是image2即图片格式
-r 2 帧率,越高越清楚
-t 04:00 到4分结束,跳开片尾
-vf "scale =w=300:h= 300:force_original_aspect_ratio=decrease,pad=300:300:(ow-iw)/2:(oh-ih)/2"
这是个滤镜,主要是等比输出300*300,不足地方填黑。

切好的图片:


3、使用公开的数据集
比如imagenet,open image,mnist等等,它们各有各的存储及使用方式,网上的资料很多,我们就不多做介绍了。

其它深度学习相关文章:

深度学习tensorflow object detect 之识别社会人小猪佩奇

滴滴云GPU服务器做深度学习之tensorflow object detect 对象检测 实践

如何利用YOLO训练自己的模型

YOLO图像快速标注工具



猜你喜欢

转载自blog.csdn.net/wulala789/article/details/80616797