雲栖号資訊:【 點選檢視更多行業資訊】
在這裡您可以找到不同行業的第一手的上雲資訊,還在等什麼,快來!

我們現在經常用到的馬賽克其實起源于建築上的圖案裝飾,如今馬賽克常用于圖像或視訊的模糊處理。随着技術的進步,打碼與去碼變成了一種常見的技術研究方向,同時也掀起了一場技術與道德的“戰争”。
那麼為什麼要打馬賽克?其實是處于一種隐私保護,例如新聞上出現犯罪嫌疑人的畫面時是需要打碼的,因為尚未定罪時需要維護嫌疑人的肖像權。
現如今,大部分打馬賽克的工作都需要我們手動來打,比如在圖像/視訊制作軟體裡添加馬賽克。那麼這種工作能不能交給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步:
第一步:人臉檢測
在這一步可以使用任何的人臉檢測器,隻要它能在圖像或視訊中生成人臉的邊界框坐标就行。
有一些常見的人臉檢測工具可以供你參考:
- 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實時打碼這一技術還尚未成熟,但總有一天技術能夠“承擔”起更多的社會責任,保護更多的人。
相關報道:
https://www.zhihu.com/question/21672713【雲栖号線上課堂】每天都有産品技術專家分享!
課程位址:
https://yqh.aliyun.com/live立即加入社群,與專家面對面,及時了解課程最新動态!
【雲栖号線上課堂 社群】
https://c.tb.cn/F3.Z8gvnK
原文釋出時間:2020-04-17
本文作者:文摘菌
本文來自:“
大資料文摘”,了解相關資訊可以關注“
”