AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

流行人臉檢測和模糊算法的實戰較量,誰是王者?

來源: 責編: 時間:2023-10-08 07:05:39 236觀看
導讀譯者 | 朱先忠審校 | 重樓在當今這個數據驅動的世界里,保護個人的隱私和匿名是至關重要的事情。從保護個人身份到遵守GDPR(General Data Protection Regulation,即《通用數據保護條例》,為歐盟制訂的條例)等嚴格法規,對各

譯者 | 朱先忠kef28資訊網——每日最新資訊28at.com

審校 | 重樓kef28資訊網——每日最新資訊28at.com

在當今這個數據驅動的世界里,保護個人的隱私和匿名是至關重要的事情。從保護個人身份到遵守GDPR(General Data Protection Regulation,即《通用數據保護條例》,為歐盟制訂的條例)等嚴格法規,對各種媒體格式的人臉匿名化高效可靠解決方案的需求前所未有。kef28資訊網——每日最新資訊28at.com

簡介

在本文提供的這個實戰項目中,我們將探索并比較人臉模糊算法相關的幾種解決方案,并開發了一個用于比較評估這幾種算法的網絡應用程序。kef28資訊網——每日最新資訊28at.com

首先,讓我們來介紹這樣一個應用程序的系統需求:kef28資訊網——每日最新資訊28at.com

  • 保護隱私
  • 駕馭監管環境:隨著監管環境的快速發展,世界各地的行業和地區都在實施更嚴格的規范,以保護個人身份信息。
  • 訓練數據保密性:機器學習模型在多樣化和準備充分的訓練數據上蓬勃發展。然而,共享此類數據通常需要謹慎的匿名化。

總體來看,這個實戰項目可以劃分成兩個基本部分:kef28資訊網——每日最新資訊28at.com

  • 人臉檢測
  • 面部模糊技術

人臉檢測

為了解決匿名化挑戰,首先要解決的問題是定位圖像中存在人臉的區域。為此,我測試了三個用于圖像檢測的模型。kef28資訊網——每日最新資訊28at.com

Haar Cascade算法

kef28資訊網——每日最新資訊28at.com

圖1:類哈爾特征算法(來源——原始論文)kef28資訊網——每日最新資訊28at.com

Haar Cascade是一種機器學習方法,用于圖像或視頻中的人臉等對象的檢測。它通過利用一組被稱為“類哈爾特征”(圖1)的訓練特征進行操作,這些特征是簡單的矩形濾波器,專注于圖像區域內像素強度的變化。這些特征可以捕捉人臉中常見的邊緣、角度和其他特征。kef28資訊網——每日最新資訊28at.com

訓練過程包括為算法提供正面樣本(包含人臉的圖像)和負面樣本(不包含人臉的圖片)。然后,該算法通過調整特征的權重來學習區分這些樣本。經過訓練后,Haar Cascade本質上變成了一個分類器的層次結構,每個階段都逐步完善檢測過程。kef28資訊網——每日最新資訊28at.com

為了實現人臉檢測,我使用了一個預先訓練的Haar Cascade模型,該模型是在人臉的前向圖像上訓練的。關鍵實現代碼如下所示:kef28資訊網——每日最新資訊28at.com

import cv2face_cascade = cv2.CascadeClassifier('./configs/haarcascade_frontalface_default.xml')def haar(image):    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)    faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))    print(len(faces) + " total faces detected.")    for (x, y, w, h) in faces:        print(f"Face detected in the box {x} {y} {x+w} {y+h}")

MTCNN算法

kef28資訊網——每日最新資訊28at.com

圖2:MTNN算法中的人臉檢測過程(來源——原始論文:)kef28資訊網——每日最新資訊28at.com

MTNN(Multi-Task Cascaded Convolutional Networks,多任務級聯卷積網絡)是一種復雜且高度準確的人臉檢測算法,超過了前面的Haar Cascades算法的能力。MTCNN算法設計在具有不同面部大小、方向和照明條件的場景中表現出色,它利用了一系列神經網絡,每個神經網絡都適合執行面部檢測過程中的特定任務。kef28資訊網——每日最新資訊28at.com

  • 第一階段——提案生成:MTNN通過一個小型神經網絡生成大量潛在的人臉區域(邊界框)來啟動這一過程。
  • 第二階段——細化:在第一階段生成的候選信息在此步驟中進行篩選。算法中的第二個神經網絡用來評估所提出的邊界框,調整它們的位置,以便與真實面部邊界更精確地對齊。這有助于提高準確性。
  • 第三階段——識別和定位面部特征點:該階段負責識別面部標志,如眼角、鼻子和嘴巴。然后,使用神經網絡來精確定位這些特征。

MTNN算法引入的級聯架構使其能夠在過程的早期快速丟棄沒有人臉的區域,將計算集中在包含人臉概率較高的區域。與Haar Cascades算法相比,它能夠處理不同比例(縮放級別)的人臉和旋轉,非常適合復雜場景下的應用。然而,這種算法的計算強度源于其基于神經網絡的順序方法。kef28資訊網——每日最新資訊28at.com

為了實現MTNN,我使用了MTCNN庫。關鍵實現代碼如下所示:kef28資訊網——每日最新資訊28at.com

import cv2from mtcnn import MTCNNdetector = MTCNN()def mtcnn_detector(image):    faces = detector.detect_faces(image)    print(len(faces) + " total faces detected.")    for face in faces:        x, y, w, h = face['box']        print(f"Face detected in the box {x} {y} {x+w} {y+h}")

YOLOv5算法

kef28資訊網——每日最新資訊28at.com

圖3:YOLO目標檢測過程(來源——原始論文)kef28資訊網——每日最新資訊28at.com

YOLO(You Only Look Once)算法是一種用于檢測包括人臉在內的大量對象的算法。與前代產品不同,YOLO通過神經網絡進行單次檢測,使其更快、更適合實時應用程序和視頻場景。總體來看,使用YOLO檢測媒體中人臉的過程可以分為四個部分:kef28資訊網——每日最新資訊28at.com

  • 圖像網格劃分:輸入圖像被劃分為單元格網格。每個單元負責預測位于其邊界內的對象。對于每個單元,YOLO算法預測邊界框、對象概率和類概率。
  • 邊界框預測:在每個單元格中,YOLO算法預測一個或多個邊界框及其相應的概率。這些邊界框表示潛在的對象位置。每個邊界框由其中心坐標、寬度、高度以及對象存在于該邊界框內的概率來定義。
  • 類別預測:對于每個邊界框,YOLO預測對象可能屬于的各種類別(例如,“臉”、“車”、“狗”)的概率。
  • 非極大值抑制(NMS):為了消除重復的邊界框,YOLO應用了NMS子算法。該過程通過評估冗余邊界框的概率來丟棄冗余邊界框,并與其他框重疊,只保留最可靠和不重疊的邊界框。

YOLO算法的主要優勢在于它的速度。由于它通過神經網絡在一次前向傳遞中處理整個圖像,因此它比涉及滑動窗口或區域建議的算法快得多。然而,這種速度可能會與精度略有權衡,尤其是對于較小的對象或擁擠的場景。kef28資訊網——每日最新資訊28at.com

YOLO算法可以通過在人臉特定數據上對其進行訓練并修改其輸出類別以便僅包括一個類別(“臉”)來適應人臉檢測。為此,我使用了基于YOLOv5算法構建的一個名叫“yoloface”的開源庫。關鍵實現代碼如下所示:kef28資訊網——每日最新資訊28at.com

import cv2from yoloface import face_analysisface=face_analysis()def yolo_face_detection(image):    img,box,conf=face.face_detection(image, model='tiny')    print(len(box) + " total faces detected.")    for i in range(len(box)):        x, y, h, w = box[i]        print(f"Face detected in the box {x} {y} {x+w} {y+h}")

面部模糊(Face blurring)

在識別出圖像中潛在人臉周圍的邊界框后,下一步是對其進行模糊處理以刪除這些邊界標識。對于這個任務,我開發了兩個實現版本。用于演示這個任務的參考圖像如圖4所示。kef28資訊網——每日最新資訊28at.com

圖4:參考圖片(Ethan Hoover引自提供免費高清圖片素材資源的Unsplash網站)圖4:參考圖片(Ethan Hoover引自提供免費高清圖片素材資源的Unsplash網站)kef28資訊網——每日最新資訊28at.com

高斯模糊(Gaussian Blur)

圖5:具有高斯模糊的模糊參考圖像圖5:具有高斯模糊的模糊參考圖像kef28資訊網——每日最新資訊28at.com

高斯模糊是一種用于減少圖像噪聲和污跡細節的圖像處理技術。這在人臉模糊領域尤其有用,因為它可以從圖像的這一部分中刪除細節。這種算法計算每個像素附近的像素值的平均值。該平均值以被模糊的像素為中心,并使用高斯分布進行計算,從而為附近的像素賦予更多權重,而為遠處的像素賦予更少權重。其結果是生成一個減少高頻噪聲和精細細節的軟化圖像。應用高斯模糊的結果如前面圖5所示。kef28資訊網——每日最新資訊28at.com

高斯模糊采用三個參數:kef28資訊網——每日最新資訊28at.com

1. 要模糊的圖像部分。kef28資訊網——每日最新資訊28at.com

2. 內核大小:用于模糊操作的矩陣。較大的內核大小會導致更強的模糊。kef28資訊網——每日最新資訊28at.com

3. 標準偏差:值越高,模糊效果越強。kef28資訊網——每日最新資訊28at.com

f = image[y:y + h, x:x + w]blurred_face = cv2.GaussianBlur(f, (99, 99), 15)  #你可以調整模糊參數image[y:y + h, x:x + w] = blurred_face

像素化(Pixelization)

圖6:帶像素化的模糊參考圖像圖6:帶像素化的模糊參考圖像kef28資訊網——每日最新資訊28at.com

像素化是一種圖像處理技術,其中圖像中的像素被替換為單一顏色的較大塊。這種效果是通過將圖像劃分為單元格網格來實現的,其中每個單元格對應于一組像素。然后,將該單元中所有像素的顏色或強度作為該單元中全部像素的顏色的平均值,并將該平均值應用于該單元中的所有像素。此過程可創建簡化的外觀,從而降低圖像中精細細節的級別。應用像素化的結果如圖6所示。正如你所觀察到的,像素化使識別一個人的身份變得非常復雜。kef28資訊網——每日最新資訊28at.com

像素化算法使用一個主要的參數,該參數決定了一個特定區域應該有多少分組像素。例如,如果我們有一個包含人臉的圖像的(10,10)部分,它將被10x10像素組所取代。越小的數字結果越模糊。kef28資訊網——每日最新資訊28at.com

f = image[y:y + h, x:x + w]f = cv2.resize(f, (10, 10), interpolation=cv2.INTER_NEAREST)image[y:y + h, x:x + w] = cv2.resize(f, (w, h), interpolation=cv2.INTER_NEAREST)

實驗結果與評估

我將從兩個角度評估不同的上述算法:實時性能分析和特定的圖像場景。kef28資訊網——每日最新資訊28at.com

實時性能

使用相同的參考圖像(如圖4所示)的情況下,我計算了每個人臉檢測算法在圖像中定位人臉邊界框所需的時間。結果數據基于每種算法的10個測量值的平均值。模糊算法所需的時間可以忽略不計,在評估過程中不會考慮。kef28資訊網——每日最新資訊28at.com

圖7:每個算法檢測人臉所需的平均時間(秒)花銷圖7:每個算法檢測人臉所需的平均時間(秒)花銷kef28資訊網——每日最新資訊28at.com

可以觀察到,YOLOv5由于其通過神經網絡的單程處理而實現了最佳性能(速度)。相比之下,像MTNN這樣的方法需要通過多個神經網絡進行順序遍歷。這進一步使算法的并行化過程復雜化。kef28資訊網——每日最新資訊28at.com

基于場景的性能

為了評估上述算法的性能,除了參考圖像(圖4)外,我還選擇了幾張在各種場景中測試算法的圖像:kef28資訊網——每日最新資訊28at.com

1. 參考圖像(圖4)kef28資訊網——每日最新資訊28at.com

2. 一群人靠得很近——以評估算法捕捉不同人臉大小的能力,有些更近,有些更遠(圖8)kef28資訊網——每日最新資訊28at.com

3. 側視人臉——測試算法檢測不直視相機的人臉的能力(圖10)kef28資訊網——每日最新資訊28at.com

4. 翻轉的人臉,180度——測試算法檢測旋轉180度人臉的能力(圖11)kef28資訊網——每日最新資訊28at.com

5. 翻轉人臉,90度——測試算法檢測側向旋轉90度人臉的能力(圖12)kef28資訊網——每日最新資訊28at.com

圖8:尼古拉斯·格林提供的在Unsplash網站上的人群相片圖8:尼古拉斯·格林提供的在Unsplash網站上的人群相片kef28資訊網——每日最新資訊28at.com

圖9:Naassom Azevedo提供的在Unsplash網站上的多重面孔照片圖9:Naassom Azevedo提供的在Unsplash網站上的多重面孔照片kef28資訊網——每日最新資訊28at.com

圖10:Unsplash網站上的來自Kraken Images的側面圖圖10:Unsplash網站上的來自Kraken Images的側面圖kef28資訊網——每日最新資訊28at.com

圖11:將圖4照片翻轉180度圖11:將圖4照片翻轉180度kef28資訊網——每日最新資訊28at.com

圖12:將圖4照片翻轉90度圖12:將圖4照片翻轉90度kef28資訊網——每日最新資訊28at.com

Haar Cascade算法

Haar Cascade算法通常在匿名人臉方面表現良好,只有少數例外。它成功地檢測到了參考圖像(圖4)和“多張臉”場景(圖9)。在“人群”場景(圖8)中,它可以很好地處理任務,盡管有些人臉沒有被完全檢測到或距離更遠。Haar Cascade算法遇到了人臉不直接面對相機(圖10)和旋轉人臉(圖11和12)的挑戰,無法完全識別人臉。kef28資訊網——每日最新資訊28at.com

圖13:Haar Cascade算法的運算結果圖13:Haar Cascade算法的運算結果kef28資訊網——每日最新資訊28at.com

MTCNN算法

MTCNN算法設法實現了與Haar Cascade算法非常相似的結果,具有相同的優勢和劣勢。此外,MTNN算法很難檢測到圖9中膚色較深的人臉。kef28資訊網——每日最新資訊28at.com

圖14:MTCNN算法的運算結果圖14:MTCNN算法的運算結果kef28資訊網——每日最新資訊28at.com

YOLOv5算法

YOLOv5算法產生的結果與Haar Cascade算法和MTCNN算法略有不同。它成功地檢測到人們沒有直視相機的一張臉(圖10),以及旋轉了180度的臉(圖11)。然而,在“人群”圖像(圖8)中,它并沒有像前面提到的算法那樣有效地檢測更遠的人臉。kef28資訊網——每日最新資訊28at.com

圖15:YOLOv5算法的運算結果。圖15:YOLOv5算法的運算結果。kef28資訊網——每日最新資訊28at.com

隱私問題

在解決圖像處理中的隱私挑戰時,需要考慮的一個關鍵方面是在保持圖像自然外觀的同時,在使人臉無法識別之間保持微妙的平衡。kef28資訊網——每日最新資訊28at.com

高斯模糊

高斯模糊有效地模糊了圖像中的面部區域(如圖5所示)。然而,它的成功取決于用于模糊效應的高斯分布的參數。在圖5中,很明顯,面部特征仍然是可辨別的,這表明需要更高的標準差和內核大小來實現最佳結果。kef28資訊網——每日最新資訊28at.com

像素化

與高斯模糊相比,像素化(如圖6所示)作為一種人臉模糊方法,通常看起來更符合人眼的視覺感受。用于像素化的像素數量在這種情況下起著關鍵作用,因為較小的像素數量會使面部不太容易識別,但可能導致不太自然的外觀。kef28資訊網——每日最新資訊28at.com

總的來說,相對于高斯模糊算法,像素化算法一直是人們更喜歡的選擇。理由在于人們更為熟悉這種算法以及這種算法語境的自然性,其在隱私和美學之間取得了較好的平衡。kef28資訊網——每日最新資訊28at.com

逆向工程

隨著人工智能工具的興起,預測旨在從模糊圖像中去除隱私過濾器的逆向工程技術的潛力變得至關重要。然而,模糊面部的行為不可逆轉地用更廣義的面部細節取代了特定的面部細節。到目前為止,人工智能工具只能在呈現同一個人的清晰參考圖像時對模糊的人臉進行逆向工程。不過,這里也存在一個矛盾問題:這首先與逆向工程的必要性相矛盾,因為使用逆向工程的話必須以了解個人身份為前提。因此,面對不斷發展的人工智能技術,人臉模糊是保護隱私的一種比較有效和必要的手段。kef28資訊網——每日最新資訊28at.com

視頻領域中的使用

由于視頻本質上是一系列圖像,因此修改每個算法以對視頻進行匿名化相對簡單。然而,在這里,處理耗費的時間變得至關重要。例如,對于以每秒60幀(每秒圖像)記錄的給定30秒視頻,算法將需要處理1800幀。在這種情況下,像MTNN這樣的算法是不可行的,盡管它們在某些場景中會有所改進。因此,我決定使用YOLO模型來實現視頻匿名化。kef28資訊網——每日最新資訊28at.com

import cv2from yoloface import face_analysisface=face_analysis()def yolo_face_detection_video(video_path, output_path, pixelate):    cap = cv2.VideoCapture(video_path)    if not cap.isOpened():        raise ValueError("Could not open video file")    #取得視頻屬性    fps = int(cap.get(cv2.CAP_PROP_FPS))    frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))    frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))    # 定義編解碼器并為輸出視頻創建VideoWriter對象    fourcc = cv2.VideoWriter_fourcc(*'H264')    out = cv2.VideoWriter(output_path, fourcc, fps, (frame_width, frame_height))    while cap.isOpened():        ret, frame = cap.read()        if not ret:            break        tm = time.time()        img, box, conf = face.face_detection(frame_arr=frame, frame_status=True, model='tiny')        print(pixelate)        for i in range(len(box)):            x, y, h, w = box[i]            if pixelate:                f = img[y:y + h, x:x + w]                f = cv2.resize(f, (10, 10), interpolation=cv2.INTER_NEAREST)                img[y:y + h, x:x + w] = cv2.resize(f, (w, h), interpolation=cv2.INTER_NEAREST)            else:                blurred_face = cv2.GaussianBlur(img[y:y + h, x:x + w], (99, 99), 30)  # 你可以調整模糊參數                img[y:y + h, x:x + w] = blurred_face        print(time.time() - tm)        out.write(img)    cap.release()    out.release()    cv2.destroyAllWindows()

Web應用程序

為了簡化對不同算法的比較與評估,我創建了一個Web版本的網絡應用程序,用戶可以在其中上傳任何圖像或視頻,選擇人臉檢測和模糊算法。處理后,結果返回給用戶。實現是使用Flask和Python在后端完成的,利用前面提到的庫以及OpenCV和React.js在前端進行用戶與模型的交互。完整的代碼可在鏈接https://github.com/dani2221/dpns處獲得。kef28資訊網——每日最新資訊28at.com

結論

在本文項目中,我對包括Haar Cascade、MTNN和YOLOv5在內的各種人臉檢測算法進行了不同方面的探索、比較和分析。此外,該項目還專注分析了圖像模糊技術。kef28資訊網——每日最新資訊28at.com

實驗數據證明,Haar Cascade算法在某些場景中被證明是一種有效的方法,通常表現出良好的時間性能。MTNN算法作為一種在各種條件下都具有實體人臉檢測能力的算法脫穎而出,盡管它在處理通常不處于傳統方向的人臉時遇到了困難。YOLOv5算法具有實時人臉檢測功能,是時間作為關鍵因素的場景(如視頻)應用的絕佳選擇,盡管在群組對象環境中的準確性略有下降。kef28資訊網——每日最新資訊28at.com

最后,我把所有算法和技術都集成到一個單獨的Web應用程序中。該應用程序提供了對所有人臉檢測和模糊方法的輕松訪問和利用,以及使用模糊技術處理視頻的能力。kef28資訊網——每日最新資訊28at.com

譯者介紹

朱先忠,51CTO社區編輯,51CTO專家博客、講師,濰坊一所高校計算機教師,自由編程界老兵一枚。kef28資訊網——每日最新資訊28at.com

原文標題:Exploration and Model Comparison,作者:Danilo Najkovkef28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-12325-0.html流行人臉檢測和模糊算法的實戰較量,誰是王者?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 深入探索FastAPI單元測試:使用TestClient輕松測試你的API

下一篇: Istio流量路由小試牛刀,這幾個方法超有效

標簽:
  • 熱門焦點
Top