京东金融大数据竞赛猪脸识别(1)-从视频提取图像

2017年11月的京东金融大数据竞赛参与人数最多的是猪脸识别的算法比赛,参加整个大数据比赛的有四千多人,而猪脸识别算法组就有一千多人。可见,搞图像识别的的人很多啊。想要提升自己价值的小伙伴们,向语音、文本、机器人等领域进发吧,有了机器学习的基础,入门这些领域应该都不是太难。
比赛给的数据是30头猪的视频,做识别的第一步还是从视频中去图像吧。本想用以前写过的视频取帧程序。看Matlab示例的时候发现用Matlab取帧更简便易行,那就用它吧。这样又省了很多时间。代码如下:

%exam1.m extract frame from video
clc;
close all;
imtool close all;
clear;
%30段视频在本代码同级目录video文件夹下,格式为mp4
fpath = [pwd,‘\video\*.mp4‘];
fname = dir(fpath);
fnum = numel(fname);
vidpath = [pwd,‘\video‘];
try
    for i=1:fnum
        videoname = fullfile(vidpath,fname(i).name);
                %读取视频数据
        videoObject = VideoReader(videoname);
        % 获取视频中帧数.
        numberOfFrames = videoObject.NumberOfFrames;
        vidHeight = videoObject.Height;
        vidWidth = videoObject.Width;
        numberOfFramesWritten = 0;

        figure;
        writeToDisk = true;
        %对视频文件全路径进行分离.
        [folder, baseFileName, extentions] = fileparts(videoname);
        %获取当前路径
        folder = pwd;
        %在当前路径下建立子文件夹image,并在image下为各视频建立以文件名命名的子文件夹,用以存放该视频提取的帧
        outputFolder = sprintf(‘%s/image/%s‘, folder, baseFileName);
        if ~exist(outputFolder, ‘dir‘)
            mkdir(outputFolder);
        end
        %每分钟约为30帧图像,每隔15帧取一帧
       for frame = 1 :15: numberOfFrames
            %读取帧数据
            thisFrame = read(videoObject, frame);
            image(thisFrame);
            caption = sprintf(‘Frame %4d of %d.‘, frame, numberOfFrames);
            title(caption, ‘FontSize‘, fontSize);
            drawnow; % Force it to refresh the window.
            %将图像帧数据写入文件
            if writeToDisk
                % 创建图像名,格式为“视频名-帧序号”
                imgName = sprintf(‘%s-%04d.jpg‘,baseFileName, frame);
                outputFullFileName = fullfile(outputFolder, imgName);
                text(5, 15, imgName, ‘FontSize‘, 20);
                % Extract the image with the text "burned into" it.
                frameWithText = getframe(gca);  .
                imwrite(frameWithText.cdata, outputFullFileName, ‘jpg‘);
            end  

            % 输出提取信息.
            if writeToDisk
                progressIndication = sprintf(‘Wrote frame %4d of %d.‘, frame, numberOfFrames);
            else
                progressIndication = sprintf(‘Processed frame %4d of %d.‘, frame, numberOfFrames);
            end
            disp(progressIndication);
            numberOfFramesWritten = numberOfFramesWritten + 1;
       end
    end
catch
        warning(‘Problem using function.  Assigning a value of 0.‘);
        a = 0;
end  

该程序运行完后,就得到了30头猪的图像信息。若需增加数据量,可将提取帧的间隔减小。

原文地址:http://blog.51cto.com/8764888/2085918

时间: 2024-10-14 09:28:44

京东金融大数据竞赛猪脸识别(1)-从视频提取图像的相关文章

京东金融大数据竞赛猪脸识别(7)- 识别方法之四

除了softmax层构建的深度网络,Matlab还有一个简单的构建数据分类的函数,那就是patternnet,其用法类似.可以直接对图像特征数据处理,也可以对图像集处理.代码如下: %exam1.m 用训练图像特征构建深度网络并计算测试图像得分 clear; load('JDPig_mlhmslbp_spyr.mat'); m = numel(classe_name); n = length(y); label = [] for i=1:n label(:,i) = zeros(m,1); la

京东金融大数据竞赛猪脸识别(3)-方法选取

由于可用的特征提取和分类器构造方法较多,为了确定选取方法.现在在视频提取的图像上进行算法验证,取这些图像的一部分进行训练,剩余部分进行测试,并进行交叉验证.找到准确率最高的方法后再将其用于测试集.以reco_toolbox为例,下面给出方法选取的代码: clc,close all, clear ,drawnow database_name = {'JDPig' }; database_ext = {'jpg' , 'jpg' , 'png'}; descriptors_name = {'dens

京东金融大数据竞赛猪脸识别(5)- 识别方法之二

该方法提取图像集的词袋(bag-of-features),然后根据词袋对各图像编码得出图像特征,再对测试图像在训练图像集上进行检索,最后根据检索出的图像类别判断测试图像所属类别.该方法直接对图像进行处理,不需要先提取特征,再将特征文件导入.不过该方法消耗内存很大,适用于小规模图像集.代码如下: clear; % 设置图象集路径 imgSetFolder = fullfile(pwd, 'image'); imgqueryFolder = fullfile(pwd, 'query'); %构造图像

京东金融大数据竞赛猪脸识别(3)- 图像特征提取之二

深度网络既然在图像识别方面有很高的准确率,那将某一层网络输出数据作为图像特征也应该是可行的.该程序给出了使用Alexnet第七层作为激活层提取图像特征的示例.代码如下: clear; trainPath = fullfile(pwd,'image'); trainData = imageDatastore(trainPath,... 'IncludeSubfolders',true,'LabelSource','foldernames'); [trainingImages,testImages]

京东金融大数据竞赛猪脸识别(2)- 图像特征提取之一

图像识别进入深度学习时代后,特征提取这个词的使用频率明显下降了.因为深度网络已经完成了从图像输入到分类结果输出的全过程,似乎不需要再关心特征的好坏和特征提取对于识别结果的影响.不过,不管从算法研究还是工程实现角度看,将特征提取独立出来应该更有利.这样我们可以对各种特征提取方法和各种识别算法进行组合,找出效果最好的方案.我们先考虑非神经网络提取的特征,在深度神经网络大热以前,局部特征.空间金字塔.稀疏编码的结合合应该是达到最高识别准确率的方案.它在一些应用场合能够以更低的代价带来不次于深度网络的识

京东金融大数据竞赛猪脸识别(9)- 识别方法之五

这里给出使用深度网络中间层输出结果作为图像特征,并构建分类模型和对训练数据进行识别的代码.相关内容可参看Matlab图像识别/检索系列(7)-10行代码完成深度学习网络之取中间层数据作为特征.代码如下: clear trainPath = fullfile(pwd,'image'); trainData = imageDatastore(trainPath,... 'IncludeSubfolders',true,'LabelSource','foldernames'); %对训练数据集进行划分

大数据竞赛平台——Kaggle 入门

大数据竞赛平台--Kaggle 入门篇 这篇文章适合那些刚接触Kaggle.想尽快熟悉Kaggle并且独立完成一个竞赛项目的网友,对于已经在Kaggle上参赛过的网友来说,大可不必耗费时间阅读本文.本文分为两部分介绍Kaggle,第一部分简单介绍Kaggle,第二部分将展示解决一个竞赛项目的全过程.如有错误,请指正! 1.Kaggle简介 Kaggle是一个数据分析的竞赛平台,网址:https://www.kaggle.com/ 企业或者研究者可以将数据.问题描述.期望的指标发布到Kaggle上

阿里巴巴天池大数据竞赛黄金联赛全面开战,全球同步报名,只为寻找最聪明的你!

阿里巴巴天池大数据竞赛黄金联赛全面开战,全球同步报名,只为寻找最聪明的你!        天池大数据竞赛是由阿里巴巴集团主办,面向全球新生代力量的高端算法竞赛.通过开放海量数据和"天池"分布式计算平台,大赛让所有参与者有机会运用其设计的算法解决各类社会生活问题和商业世界中的实际问题.特别优秀的解决方案将有机会直接上线阿里巴巴旗下各电商网站(含淘宝.天猫等)或第三方合作伙伴平台,服务中国乃至世界数以亿计的用户.        2015年天池大数据竞赛将全面升级为黄金联赛,包含三个不同场景

Excel催化剂开源第42波-与金融大数据TuShare对接实现零门槛零代码获取数据

在金融大数据功能中,使用了TuShare的数据接口,其所有接口都采用WebAPI的方式提供,本来还在纠结着应该搬那些数据接口给用户使用,后来发现,所有数据接口都有其通用性,结合Excel灵活友好的输入方式,将其输入参数统一在Excel界面进行维护,最终实现了所有接口均可由用户自己去维护参数的方式发出查询获得所有的结果,非常完美. 此篇对应的Excel催化剂功能实现:第98波-零代码零距离轻松接触并拥有金融大数据 - 简书 https://www.jianshu.com/p/3cd41a48344