内容字号:默认大号超大号

段落设置:取消段首缩进段首缩进

字体设置:切换到微软雅黑切换到宋体

业界
软件
手机
数码
电脑
学院
测评
图赏
视频
游戏
原创
直播
 AI
5G
苹果
微软
iPhone
Win10
精准搜索请尝试:精确搜索

视频后期福音!OpenCV实时检测视频流人脸并打马赛克

2020/4/19 13:45:45来源:作者:牛婉杨责编:懒猫评论:

我们现在经常用到的马赛克其实起源于建筑上的图案装饰,如今马赛克常用于图像或视频的模糊处理。随着技术的进步,打码与去码变成了一种常见的技术研究方向,同时也掀起了一场技术与道德的“战争”。

那么为什么要打马赛克?其实是处于一种隐私保护,例如新闻上出现犯罪嫌疑人的画面时是需要打码的,因为尚未定罪时需要维护嫌疑人的肖像权。

现如今,大部分打马赛克的工作都需要我们手动来打,比如在图像/视频制作软件里添加马赛克。那么这种工作能不能交给AI呢?如果AI可以自动对图像/视频进行实时处理,无疑会帮人类减轻很大的工作量。

答案是可以!Adrian Rosebrock博士在博客中分享了通过OpenCV实现“人脸自动马赛克”这一教程,而这个项目是受到了他的一位博客读者的启发。事实上,这个项目有很大的现实意义。

那么,AI究竟是如何做到自动实时打码的?说到这里,首先需要介绍一下什么是人脸模糊。

什么是人脸模糊?

Adrian Rosebrock博士在博客中详细的分享了技术实现方法,从介绍人脸检测器,人脸模糊的简单步骤,到分别用OpenCV对人脸进行高斯模糊和像素化模糊的详细操作。

Adrian Rosebrock博士的详细教程:

http://www.pyimagesearch.com/2020/04/06/blur-and-anonymize-faces-with-opencv-and-python/

简单来说,实现人脸模糊可以分为以下4步:

第一步:人脸检测

在这一步可以使用任何的人脸检测器,只要它能在图像或视频中生成人脸的边界框坐标就行。

有一些常见的人脸检测工具可以供你参考:

  • Haar cascades

  • HOG + Linear SVM

  • Deep learning-based face detectors

一旦识别到人脸,就可以进入到第二步了。

第二步:图像/视频的ROI提取

脸探测器会给出一个边界框,也就是图像中人脸的坐标(x, y)。

这些坐标通常表示:

  • 人脸边界框的起始坐标x

  • 面部截止的坐标x

  • 人脸位置的起始坐标y

  • 面部截止的坐标y

然后就可以用这些信息来提取人脸ROI(感兴趣区域),如下图所示:

接下来就开始进行人脸模糊啦。

第三步:人脸模糊

说到打码这件事,有两种常用的模糊方式,一个是高斯模糊,一个是像素化模糊。高斯模糊的效果比较“温柔”,但很可能面临着模糊不彻底的问题,而像素化模糊就相当简单粗暴,是我们最常见的马赛克样式。

▲ 高斯模糊下的面部图像

这两个模糊方式都可以实现人脸自动模糊这个项目,练习时可以凭你的个人喜好选择。

在进行人脸模糊之后,最后一步就是将模糊后的人脸放回原始图像中。

第四步:将模糊后的照片整合到原始图像中

使用来自人脸检测的原始(x, y)坐标(步骤二中提到的),我们可以得到模糊/匿名化的人脸,然后将其存储到原始图像中(如果使用OpenCV和Python,则此步骤使用NumPy数组切片)。

至此,人脸模糊的部分就完成了。

如何在实时视频中通过AI实现人脸自动模糊?

文摘菌在这里简单展示一下如何使用OpenCV识别人脸,然后再将人脸模糊应用到实时视频流中。

首先需要从Adrian Rosebrock博士的这篇博文中获取源代码,然后打开OpenCV人脸检测器,使用以下命令启动blur_face_video.py:

$ python blur_face_video.py --face face_detector --method simple
[INFO] loading face detector model...
[INFO] starting video stream...

▲ 高斯模糊实时视频流

也可以通过method pixelated来进行像素化的人脸模糊:

$ python blur_face_video.py --face face_detector --method pixelated
[INFO] loading face detector model...
[INFO] starting video stream...

▲ 像素化模糊实时视频流

以上应用的人脸模糊方法,是假设输入视频流的每一帧中都可以检测到人脸。

那么,如果检测器中途未能检测到人脸会怎样?显然,在漏掉的帧中无法进行打码,也就破坏了人脸模糊的目的。

在这种情况下我们该怎么做呢?

通常,在人脸移动的比较慢的情况下,有一个简单的方法是取最后一个已知的面部位置,然后模糊该区域。

还有一种高级的方法是使用专门的对象跟踪器,如果人脸检测器没有识别到,则对象追踪器可以补充提供面部位置,这个方法会复杂很多,因为要在人脸的多个角度建立跟踪,但是这个方法也更加完善。

微软曾提出一种可在视频中通过AI实现人脸模糊的方法

早在2017年,微软研究院就提出了一套基于AI算法的视频人脸模糊解决方案。虽然该算法能够对视频进行自动处理,但是需要用户点击想要打码的人才能打上马赛克。

这套算法能够将源视频中的人物提取出来,并返回给用户,然后用户可以自由选择给谁打码。

要想打码,首先需要找出所有人脸的出现位置,并把同一个人所有帧中的人脸连接起来。为此,需要有三个算法:人脸检测、跟踪、识别。

下图更为详细的展示了关于这套人脸模糊系统具体是如何工作的:

在时间复杂度方面,微软研究院称该系统在Azure的CPU服务器上能够实时处理720p的视频,并且能够以2倍时长处理1080p的高清视频。

技术始终在进步,3年前就可以做到在视频中通过AI进行人脸模糊,3年后已经可以利用AI在实时视频流中自动打码了,我们相信,科技还能做到更多。  尽管,目前AI实时打码这一技术还尚未成熟,但总有一天技术能够“承担”起更多的社会责任,保护更多的人。

IT之家,软媒旗下科技门户网站 - 爱科技,爱这里。

Copyright (C)RuanMei.com, All Rights Reserved.

软媒公司版权所有    

德江县大唐广告制作中心 安般太极拳 衣购网 广州市鸿诗凯广告有限公司 盐城铸阳暖通服务有限公司 大连文润轴承有限公司 深圳市港澳信联国际旅行社有限公司 东莞市盛家橡塑科技有限公司 焦点刀具英 贵州佳亮宏机电设备有限公司 献县科宇高铁仪器设备厂 戴云大酒店 饰妮十字绣 六安新手游网络科技有限公司 贵阳和昌顺有限公司 深圳市宝联兴科技有限公司 郑州山丘文化传播有限公司 安徽信尔达通信技术有限公司 深圳市宝福汽车服务股份有限公司 潼南县梓潼街道商会 红棉小学 滁州硬笔书法家协会 成都天使之家社会工作服务中心 淄博宝森商贸有限公司 浦东机场停车场 河南中德塑钢型材有限公司 西安维度装饰设计有限公司 石家庄问道 海外购 房屋过户网 金沙县 刑侦推理有声小说 广西南宁文峻广告有限公司 深圳泰和门诊部 火热剧集站 佛山市南海中藤家具厂 厦门固得塑胶有限公司 北京中北亚汽车贸易有限公司 鹤壁华辰重工机械有限公司 北京兵润恒通汽车销售有限公司 ppnba直播吧飞飞CMS官网论道网洋创支付吧