-->
Save your seat for Streaming Media NYC this May. Register Now!

Rotoscope with AI Assist

Article Featured Image

Rotoscope是一种跟踪视频帧的技术,它可以创建一个可以用来删除部分帧(通常是背景)的哑光图像,也可以根据摄像机捕获的内容创建动画. Invented in 1915 by animator Max Fleischer, 这种手法在拉尔夫·巴克希1978年的《百家乐软件》等作品中得到了广泛应用, Steve Barrons 1985 "Take On Me" video for A-Ha, and Richard Linklaters 2001 Waking Life. 在过去的几年里,随着人工智能在场景检测任务中的巨大进步, AI-assisted rotoscoping is now widely available.

For the matte-generation type of AI rotoscoping work, Personify was an early player, 最初使用微软Xbox Kinect摄像头(同时具有可见光和红外传感器)生成哑光,以识别画面中的人物. 该公司后来开发了一种软件,仅通过可见光摄像头就能识别出该人, 然后将该技术授权给罗技用于其C922网络摄像头. Similar techniques are now built into Zoom, Microsoft Teams, 以及其他视频会议软件,通过场景检测和哑光生成,在视频通话期间删除或模糊背景. 这些功能对于教育视频来说具有很大的价值,既可以保护隐私,又可以在背景中而不是在房间中显示信息丰富的数字视觉辅助工具.

There are other tools that can be of value to education, 例如那些使用旋转镜作为一种基于摄像机镜头生成动画的手段. One tool is EbSynth, which is currently free in beta. 电影制作人Joel Haver提供了一个非常有趣的教程, 他把自己的YouTube频道建立在了“滚动放映”(go2sm)带来的可能性之上.com/roto). 我使用的一种时间密集得多的技术是基于东京大学的王鑫瑞和于金泽的一篇论文,以及他们在GitHub (go2sm)上发表的TensorFlow实现.com/whitebox). TensorFlow是一个广泛使用的开源机器学习平台,通常与Python编程语言一起使用. 本文描述了在照片和这些照片的手绘漫画上训练生成对抗网络(GAN),以便GAN可以生成新的漫画. 通过在不同的照片/绘图对数据集上训练gan, you can tune the style of cartoon it produces, 尽管本文的结果来自同一个训练集.

Video is basically a flipbook, 所以我们可以使用王和余的技术将视频重新绘制为卡通, page by page and frame by frame. The first step is to probe our video. 为了简单起见,我将一个公共领域NOAA视频剪辑为15帧,并将其保存在GitHub上的项目测试代码文件夹中.

>ffmpeg -i NOAA_SharkClip_15.mp4

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from ‘NOAA_SharkClip_15.mp4:

Duration: 00:00:47.49, start: 0.000000, bitrate: 2582 kb/s

流#0:0[0x1](eng):视频:h264(主)(avc1 / 0x31637661), yuv420p(progressive), 960x540 [SAR 1:1 DAR 16:9], 2457 kb/s, 15 fps, 15 tbr, 30k tbn (default)

[0x2](eng):音频:aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 125 kb/s (default)

从这个输出中需要注意的重要一点是,第0个流是视频, and it is 15 fps and has a resolution of 960x540. 然后我把这个视频的所有帧都导出为PNG文件:

>ffmpeg -i NOAA_SharkClip_15.mp4 -an -r 15 -s 960x540 test_images/frame%06d.png

该命令的最后一个参数告诉它将PNG文件写入test_images文件夹,并将其命名为“frame”,然后是六位数的帧数,然后是 .png extension. 如果你的视频很长,你需要增加前导0的数量. After that, run the cartoonize.Py程序将test_images中的所有摄影图像转换为卡通图像,在cartoonized_images文件夹中具有相同的文件名. 这个过程可能需要很长时间,除非你有一个CUDA计算能力为3的显卡.5 or higher.

Using an older Tesla K20 card, 处理这段48秒视频的所有帧大约需要6分钟. Once cartoonize.py finishes its work, use FFmpeg to generate a new video from those frames, 在一个拷贝的音频流中从原始视频文件中提取.

>ffmpeg -r 15 -i cartoonized_images/frame%06d.png -i NOAA_SharkClip_15.mp4 -map 0:0 -map 1:1 -vcodec libx264 -tune animation -b:v 2M -s 960x540 - codec copy NOAA_SharkToon_15 . mp4.mp4

这里的关键是在输入上使用-r帧率标志,以便每秒只使用15帧来创建新的视频流, 和-map标志指示FFmpeg使用第0个输入流和第1个输入流(音频). 这个过程的并行结果可以在这里找到http://go2sm.com/noaa. I had two use cases in mind for this technique. 一种方法是在模拟事件的镜头中隐藏不相关的细节,这样学生就不会分心. 另一个是模糊背景镜头的类似动机:视频可以是一种亲密的教学模式, 许多老师不愿意向远程学生展示自己的脸.

Streaming Covers
Free
for qualified subscribers
Subscribe Now Current Issue Past Issues
Related Articles

如何选择高校视频管理系统

因此,您需要一个新的视频管理系统(VMS)? 这里有一些建议,以确保您的VMS不会危及您的学校或学生的数据.

Online Video Learning: Just as Good as In Person?

自疫情开始以来,有很多关于在线教育视频的文章, and the results are surprising, though far from conclusive.

How to Design a Hybrid Classroom

In-person or virtual? It's no longer one or the other, 学校和大学需要有明确的策略向学生提供混合教育.