0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

以《猫和老鼠》为例,计算任意视频中汤姆猫和杰瑞鼠的出镜时长

DPVg_AI_era 来源:未知 作者:李倩 2018-10-04 08:49 次阅读

本文作者Pulkit Sharma分享了一篇有趣的项目,以《猫和老鼠》为例,计算任意视频中汤姆猫和杰瑞鼠的出镜时长。这一模型也可以用于其他电影,轻松统计各演员的上镜时间。

简介

当我开始接触深度学习时,学到的第一件事就是图像分类。这个话题非常有趣,包括我在内的很多人都沉浸在它的魅力之中。但是在我处理图像分类时总会思考,如果我能将学到的东西迁移到视频上就好了。

是否有一种模型能在特定时间内自动识别视频中的某个人物呢?结果证明的确可以做到,下面就将我的方法分享给你们!

影视明星的出镜时间是非常重要的,直接影响他们的片酬。举个例子,在《蜘蛛侠:英雄归来》中,小罗伯特唐尼仅仅出镜15分钟就有高达1000万美元的片酬。

如果我能计算任意影片中所有演员的出镜时间,那就太棒了!在这篇文章中,我将帮你理解如何在视频数据中使用深度学习。我们就用《猫和老鼠》作为例子,计算任意视频中,汤姆和杰瑞的出现时间。

目录

读取视频并提取帧

如何用Python处理视频文件

计算出镜时间——一种简单的解决方案

我的收获

读取视频并提取帧

如上面的动图所示,,每一页纸上都有不同的画面,随着我们翻动书页,可以看到一只跳舞的鲨鱼,而且翻动的速度越快,效果越好。这也可以看作一种视频,换句话说,这种视觉效果是不同图像以特定顺序排列在一起产生的。

同样的,视频也是由一系列图片组成的,这些图片称为“帧”,可以通过组合得到原始视频。所以与视频数据有关的问题和图像分类或者目标检测问题并没有什么不同。只是从视频中提取帧需要多一个步骤。

我们这次的目的试计算汤姆和杰瑞在视频中各自的出镜时间,首先让我们确定一下文中要做的步骤:

导入并读取视频,从中提取帧,将它们保存为图片

标记一些图片用于模型的训练(这一步我已经做好了)

在训练数据上搭建自己的模型

对剩余图片进行预测

计算汤姆和杰瑞各自的出镜时间

跟着以下步骤学习,将会帮助你解决很多深度学习相关的问题。

如何用Python处理视频文件

首先要下载所有必需的库:

NumPy

Pandas

Matplotlib

Keras

Skimage

OpenCV

第一步:读取视频并从中提取帧,将其保存为图像

现在我们要下载视频,并将它转换成帧的形式。首先我们可以用VideoCapture( )函数从给定目录中提取视频,然后从视频中提取帧,用imwrite( )函数将它们保存为图像。

视频下载地址:drive.google.com/file/d/1_DcwBhYo15j7AU-v2gN61qGGd1ZablGK/view

这个过程完成后,屏幕上会出现“Done!”的字样。下面我们试着对图像(帧)进行可视化,首先用matplotlib中的imread( )函数读取图像,然后用imshow( )函数显示图像。

这就是视频中的第一帧。我们从每秒中提取一帧,由于视频时长为4:58(共298秒),我们现在一共有298张照片。

我们的任务时确定哪张照片上有汤姆,哪张有杰瑞。如果我们提取出的图像能和常见的ImageNet数据集中的图片有很大的相似性,那么这个问题就能轻而易举地解决了。但是这样的乐趣在哪里?

我们的是动画片,所以要让任何预训练模型在给定的视频中定位汤姆和杰瑞还是有难度的。

第二步:标记图片训练模型

要实现标记图片,一种可能的方案是手动贴标签。一旦模型学会了特定模式,我们就能用它在之前没见过的图像上作出预测。

要记住的一点是,有些帧里可能没有汤姆和杰瑞的镜头,所以我们要将其看成是多种类的分类问题:

0:没有汤姆和杰瑞的镜头

1:杰瑞

2:汤姆

我已经给所有图片打上了标签,所以直接在mapping.csv文件中下载即可。

映射文件包含两部分:

image_ID:包含每张照片的名称

Class.Image_ID:含有每张图对应的种类

下一步是读取图片信息,即他们的Image_ID部分:

现在我们就有了图片,记住,我们要用两部分训练模型:

训练图片

对应的种类

由于这里有三种不同情况,我们将用keras.utils中的to_cateforical( )函数对他们进行独热编码。

图片再输入到VGG16训练前,尺寸需变为224×224×3,所以我们的图片在输入前要重设尺寸。我们要用到skimage.transform中的resize( )函数。

尺寸调整好后,我们还要对每个模型的需求进行预处理,否则模型就不会表现得很好。利用keras.applications.vgg16中的preprocess_input( )函数来完成这一步骤。

我们还需要一个验证集来检查模型在陌生图片上的性能,这里就需要用到sklearn.modelselection模块中的traintest_split( )函数来随机将图片分成训练集和验证集。

第三步:搭建模型

下一步就是搭建自己的模型。我们会用VGG16预训练模型来完成这一任务。首先导入所需的库:

下载VGG16与训练模型,并将其保存为base_model:

用该模型对X_train和X_valid进行预测,得到特征,再用特征重新训练模型。

Xtrain和Xvalid的尺寸分别为(208,7,7,512)和(90,7,7,512)。为了输入到神经网络,我们必须把它重新修改成1—D尺寸。

现在对图像进行预处理,去中心化,让模型收敛得更快。

最后,我们将搭建自己的模型,这一步可以分为三小步:

搭建模型

编译模型

训练模型

用summary( )函数检查模型的汇总信息:

模型中有一隐藏层,有1024个神经元,输出层有3个神经元(因为我们有3种不同的预测情况)。现在我们开始编译模型。

最后一步,我们要训练模型,并且用验证集检测它在陌生图像上的表现:

可以看到在验证集上的表现很不错,精确度达到85%。这就是我们如何在视频数据上训练模型,再对每一帧作出预测的步骤。

下面,我将计算汤姆和杰瑞在新视频中的出镜时间。

计算出镜时间——一种简单的解决方案

首先下载我们要用到的视频。一旦完成,可以从中提取帧:

从新视频中提取帧之后,我们就要下载test.csv文件,它包含每个提取出的帧的名字:

接着,我们将导入用于测试的图片,然后针对之前提到的预训练模型重新修改尺寸:

接着,我们还要对这些图片进行调整,就像之前处理训练图片那样:

由于我们之前训练了模型,就可以用它做出预测了。

第四步:对剩余图像进行预测

第五步:计算汤姆和杰瑞的出镜时间

刚刚我们规定了1代表杰瑞,2代表汤姆,这样就可以用上述的预测来计算两个角色的出镜时长了:

结果如上。

我的收获

为了完成这一项目,我遇到了很多问题。下面是我遇到的一些挑战及做出的应对对策。

首先,我尝试在没有删除最顶层的情况下使用预训练模型,结果并不理想。原因可能是由于我们的模型之前没有在动画片上接受训练。为了解决这个问题,我重新用图片训练模型,结果好了很多。

但是尽管用带有标记的图片训练,精确度仍然不理想。模型在训练图像上表现得并不好。所以,我试着增加图层数量。这种做法结果不错,但训练和验证精度之间并不对应。模型出现了过度拟合,它在陌生数据上表现得也不好。所以我在密集层之后增加了Dropout层,这样就解决了。

我注意到,汤姆的出镜时间更长,所以模型得出的很多结论都是汤姆。为了让模型平衡预测,我用了sklearn.utils.classweight模块中的computeclass_weight( )函数。它在数值计数较低的类别中分配了更高的权重,在较高的数值计数中分配较低权重。

另外,我还用Model Checkpoint保存了最佳模型。

最终,我们在验证数据上达到了88%左右的结果,在测试数据上达到了64%的精确度结果。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 视频
    +关注

    关注

    6

    文章

    1939

    浏览量

    72851
  • 图像分类
    +关注

    关注

    0

    文章

    90

    浏览量

    11909
  • python
    +关注

    关注

    56

    文章

    4785

    浏览量

    84514

原文标题:Python视频深度学习:计算任意影片中所有演员出镜时间(代码)

文章出处:【微信号:AI_era,微信公众号:新智元】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    电子仿声驱器电路设计

    老鼠的天敌,利用电子装置来模拟猫叫声驱是一种有效的方法。由于是电子装置,猫叫声可大可小,可快可慢,间隔时间可长可短,且电路结构简单、成本低廉,适合电子爱好者自制用于家庭。
    发表于 10-08 13:47 2660次阅读
    电子仿声驱<b class='flag-5'>鼠</b>器电路设计

    自做会说话的汤姆

    我想自己制作一个会说话的汤姆送人,不知道怎么做,各位高手可不可以帮帮小弟,不胜感激!!!有声音录入输出功能就行。我的邮箱wanganangelsnow@126.com
    发表于 03-30 17:12

    基于LabVIEW的会说话的汤姆程序

    点击学习>>《龙哥手把手教你学LabVIEW视觉设计》视频教程今晚无聊,就开起LabVIEW来鼓捣,就这么做出个会说话的汤姆来了…不对,应该是会说话的小圆点,没有汤姆
    发表于 06-26 22:58

    我的毕设是汤姆,大家可以给我一下这方面的建议吗

    我的毕设是汤姆,大家可以给我一下这方面的建议吗求指导程序
    发表于 01-10 15:52

    贴片天线设计的HFSS在天线设计的应用介绍

    /近场辐射方向图、天线增益、轴比、计划比、半功率波瓣宽度、内部电磁场场型、天线阻抗、电压驻波比、S参数等等。下面贴片天线设计介绍一下HFSS在天线设计的应用。
    发表于 06-27 07:05

    函数/任意波形发生器的带限噪声信号产生方法介绍

    /任意波形发生器利用其配套的任意波形编辑软件就可以直接实现满足不同需求的各种带限噪声信号的输出,真实模拟通信系统内部和实际信道的干扰环境,极大地方便了对系统进行有效、可靠的分析。  本文着重
    发表于 07-22 07:12

    什么原因视频显微的应用越来越广泛,华显光学您做解答!

    具体体现在哪里? 既然视频显微又被称为数码显微,所以其突出的特点就是可以将图像数模转换的方式呈现在计算机等终端上,这样的好处不仅仅是
    发表于 02-12 17:13

    仿猫叫电子驱器电路资料推荐

    本电路我们暂且称其为“仿声原理电子驱器”,它不是我们常见的利用高强度超声波驱赶老鼠的工作方式,而是利用电子电路产生一种逼真的猫叫声,用模拟出来的这种叫声吓阻老鼠不让其在一定范围内活动。至于这种驱
    发表于 04-28 06:36

    电脑概述

    Harrison新加坡 黄明吉先生个人主页2009人工智慧单晶片电脑即机器人竞赛教学视频中国***地区第14届人工智慧单晶片电脑竞赛3.电脑实验平台以及关键技术实验平台
    发表于 09-13 08:47

    制作驱剂的教程

    描述驱剂我的项目是关于驱剂的,我之所以成功是因为我的房间里有很多老鼠,我必须让它消失。我有想法制作驱剂。PCB
    发表于 08-26 06:58

    电子仿声驱

      老鼠的天敌,利用电子装置来模拟猫叫声驱是一种有效的方法。由于是电子装置,猫叫声
    发表于 04-16 22:19 1677次阅读
    电子仿声驱<b class='flag-5'>鼠</b>器

    开关电源在微型计算机中的应用(长城0520A)

    开关电源在微型计算机中的应用(长城0520A)
    发表于 11-03 11:25 1306次阅读
    开关电源在微型<b class='flag-5'>计算机中</b>的应用(<b class='flag-5'>以</b>长城0520A<b class='flag-5'>为</b><b class='flag-5'>例</b>)

    电子驱器工作原理及常见故障检修

    电子驱器一般置于存放各类食品、粮食的仓库等场所。它在工作时能产生逼真的猫叫声,起到驱作用,可避免因使用鼠药或机械灭鼠器而发生死老鼠对食品造成污染,保证食品安全。电子驱
    的头像 发表于 02-11 16:07 2.1w次阅读
    电子驱<b class='flag-5'>鼠</b>器工作原理及常见故障检修

    汤姆加速布局AI应用,接入OpenAI Sora模型,探索生成视频素材之道

    汤姆称,Sora是人工智能不断演进的里程碑之作。类似Sora的各类AI工具能够助其更高效率、更低成本创建丰富多样且用户体验佳的AI应用产品和服务。
    的头像 发表于 03-04 13:46 668次阅读

    汤姆正在推进申请接入OpenAI的Sora模型

    汤姆在互动平台上透露,公司正在积极推进申请接入OpenAI的Sora模型,并计划进行相关素材制作的测试。目前,汤姆尚未正式接入Sora模型。
    的头像 发表于 03-05 10:20 866次阅读