天天看點

能去碼也能打碼!OpenCV實時檢測視訊流人臉并馬賽克之,視訊後期福音什麼是人臉模糊?如何在實時視訊中通過AI實作人臉自動模糊?微軟曾提出一種可在視訊中通過AI實作人臉模糊的方法

雲栖号資訊:【 點選檢視更多行業資訊

在這裡您可以找到不同行業的第一手的上雲資訊,還在等什麼,快來!

能去碼也能打碼!OpenCV實時檢測視訊流人臉并馬賽克之,視訊後期福音什麼是人臉模糊?如何在實時視訊中通過AI實作人臉自動模糊?微軟曾提出一種可在視訊中通過AI實作人臉模糊的方法

我們現在經常用到的馬賽克其實起源于建築上的圖案裝飾,如今馬賽克常用于圖像或視訊的模糊處理。随着技術的進步,打碼與去碼變成了一種常見的技術研究方向,同時也掀起了一場技術與道德的“戰争”。

那麼為什麼要打馬賽克?其實是處于一種隐私保護,例如新聞上出現犯罪嫌疑人的畫面時是需要打碼的,因為尚未定罪時需要維護嫌疑人的肖像權。

現如今,大部分打馬賽克的工作都需要我們手動來打,比如在圖像/視訊制作軟體裡添加馬賽克。那麼這種工作能不能交給AI呢?如果AI可以自動對圖像/視訊進行實時處理,無疑會幫人類減輕很大的工作量。

答案是可以!Adrian Rosebrock博士在部落格中分享了通過OpenCV實作“人臉自動馬賽克”這一教程,而這個項目是受到了他的一位部落格讀者的啟發。事實上,這個項目有很大的現實意義。

那麼,AI究竟是如何做到自動實時打碼的?說到這裡,首先需要介紹一下什麼是人臉模糊。

什麼是人臉模糊?

Adrian Rosebrock博士在部落格中詳細的分享了技術實作方法,從介紹人臉檢測器,人臉模糊的簡單步驟,到分别用OpenCV對人臉進行高斯模糊和像素化模糊的詳細操作。

Adrian Rosebrock博士的詳細教程:

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

簡單來說,實作人臉模糊可以分為以下4步:

能去碼也能打碼!OpenCV實時檢測視訊流人臉并馬賽克之,視訊後期福音什麼是人臉模糊?如何在實時視訊中通過AI實作人臉自動模糊?微軟曾提出一種可在視訊中通過AI實作人臉模糊的方法

第一步:人臉檢測

在這一步可以使用任何的人臉檢測器,隻要它能在圖像或視訊中生成人臉的邊界框坐标就行。

能去碼也能打碼!OpenCV實時檢測視訊流人臉并馬賽克之,視訊後期福音什麼是人臉模糊?如何在實時視訊中通過AI實作人臉自動模糊?微軟曾提出一種可在視訊中通過AI實作人臉模糊的方法

有一些常見的人臉檢測工具可以供你參考:

  • Haar cascades
  • HOG + Linear SVM
  • Deep learning-based face detectors

一旦識别到人臉,就可以進入到第二步了。

第二步:圖像/視訊的ROI提取

臉探測器會給出一個邊界框,也就是圖像中人臉的坐标(x, y)。

這些坐标通常表示:

  • 人臉邊界框的起始坐标x
  • 面部截止的坐标x
  • 人臉位置的起始坐标y
  • 面部截止的坐标y

然後就可以用這些資訊來提取人臉ROI(感興趣區域),如下圖所示:

能去碼也能打碼!OpenCV實時檢測視訊流人臉并馬賽克之,視訊後期福音什麼是人臉模糊?如何在實時視訊中通過AI實作人臉自動模糊?微軟曾提出一種可在視訊中通過AI實作人臉模糊的方法

接下來就開始進行人臉模糊啦。

第三步:人臉模糊

說到打碼這件事,有兩種常用的模糊方式,一個是高斯模糊,一個是像素化模糊。高斯模糊的效果比較“溫柔”,但很可能面臨着模糊不徹底的問題,而像素化模糊就相當簡單粗暴,是我們最常見的馬賽克樣式。

能去碼也能打碼!OpenCV實時檢測視訊流人臉并馬賽克之,視訊後期福音什麼是人臉模糊?如何在實時視訊中通過AI實作人臉自動模糊?微軟曾提出一種可在視訊中通過AI實作人臉模糊的方法

高斯模糊下的面部圖像

這兩個模糊方式都可以實作人臉自動模糊這個項目,練習時可以憑你的個人喜好選擇。

在進行人臉模糊之後,最後一步就是将模糊後的人臉放回原始圖像中。

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

能去碼也能打碼!OpenCV實時檢測視訊流人臉并馬賽克之,視訊後期福音什麼是人臉模糊?如何在實時視訊中通過AI實作人臉自動模糊?微軟曾提出一種可在視訊中通過AI實作人臉模糊的方法

使用來自人臉檢測的原始(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...           
能去碼也能打碼!OpenCV實時檢測視訊流人臉并馬賽克之,視訊後期福音什麼是人臉模糊?如何在實時視訊中通過AI實作人臉自動模糊?微軟曾提出一種可在視訊中通過AI實作人臉模糊的方法

高斯模糊實時視訊流

以可以通過method pixelated來進行像素化的人臉模糊:

$ python blur_face_video.py --face face_detector --method pixelated
[INFO] loading face detector model...
[INFO] starting video stream...           
能去碼也能打碼!OpenCV實時檢測視訊流人臉并馬賽克之,視訊後期福音什麼是人臉模糊?如何在實時視訊中通過AI實作人臉自動模糊?微軟曾提出一種可在視訊中通過AI實作人臉模糊的方法

像素化模糊實時視訊流

以上應用的人臉模糊方法,是假設輸入視訊流的每一幀中都可以檢測到人臉。

那麼,如果檢測器中途未能檢測到人臉會怎樣?顯然,在漏掉的幀中無法進行打碼,也就破壞了人臉模糊的目的。

在這種情況下我們該怎麼做呢?

通常,在人臉移動的比較慢的情況下,有一個簡單的方法是取最後一個已知的面部位置,然後模糊該區域。

還有一種進階的方法是使用專門的對象跟蹤器,如果人臉檢測器沒有識别到,則對象追蹤器可以補充提供面部位置,這個方法會複雜很多,因為要在人臉的多個角度建立跟蹤,但是這個方法也更加完善。

微軟曾提出一種可在視訊中通過AI實作人臉模糊的方法

早在2017年,微軟研究院就提出了一套基于AI算法的視訊人臉模糊解決方案。雖然該算法能夠對視訊進行自動處理,但是需要使用者點選想要打碼的人才能打上馬賽克。

這套算法能夠将源視訊中的人物提取出來,并傳回給使用者,然後使用者可以自由選擇給誰打碼。

能去碼也能打碼!OpenCV實時檢測視訊流人臉并馬賽克之,視訊後期福音什麼是人臉模糊?如何在實時視訊中通過AI實作人臉自動模糊?微軟曾提出一種可在視訊中通過AI實作人臉模糊的方法

要想打碼,首先需要找出所有人臉的出現位置,并把同一個人所有幀中的人臉連接配接起來。為此,需要有三個算法:人臉檢測、跟蹤、識别。

下圖更為詳細的展示了關于這套人臉模糊系統具體是如何工作的:

能去碼也能打碼!OpenCV實時檢測視訊流人臉并馬賽克之,視訊後期福音什麼是人臉模糊?如何在實時視訊中通過AI實作人臉自動模糊?微軟曾提出一種可在視訊中通過AI實作人臉模糊的方法

在時間複雜度方面,微軟研究院稱該系統在Azure的CPU伺服器上能夠實時處理720p的視訊,并且能夠以2倍時長處理1080p的高清視訊。

技術始終在進步,3年前就可以做到在視訊中通過AI進行人臉模糊,3年後已經可以利用AI在實時視訊流中自動打碼了,我們相信,科技還能做到更多。

盡管,目前AI實時打碼這一技術還尚未成熟,但總有一天技術能夠“承擔”起更多的社會責任,保護更多的人。

相關報道:

https://www.zhihu.com/question/21672713

【雲栖号線上課堂】每天都有産品技術專家分享!

課程位址:

https://yqh.aliyun.com/live

立即加入社群,與專家面對面,及時了解課程最新動态!

【雲栖号線上課堂 社群】

https://c.tb.cn/F3.Z8gvnK

原文釋出時間:2020-04-17

本文作者:文摘菌

本文來自:“

大資料文摘

”,了解相關資訊可以關注“