日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

60万元奖金 “人脸攻防战”,怎么打?丨独家公开课实录(附baseline)

發(fā)布時間:2024/10/8 pytorch 124 豆豆
生活随笔 收集整理的這篇文章主要介紹了 60万元奖金 “人脸攻防战”,怎么打?丨独家公开课实录(附baseline) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

近幾年,機器學習的安全問題逐漸被研究者們所重視。而人臉識別也展現(xiàn)了弱人工智能向強人工智能的轉(zhuǎn)化。

人臉識別是基于人的臉部特征信息進行身份識別的一種生物識別技術(shù)。人臉與人體的其它生物特征(指紋、虹膜等)一樣與生俱來,它的唯一性和不易被復制的良好特性為身份鑒別提供了必要的前提,與其它類型的生物識別比較,人臉識別具非強制性、非接觸性、及并發(fā)性,除此之外,還符合視覺特性。但這項技術(shù)也并非牢不可破。

近日,biendata平臺邀請科大訊飛金牌講師阿水,共同打造一門針對人臉識別的 AI 對抗攻防系列課程,主題囊括對抗樣本介紹、人臉識別對抗樣本、對抗防御、視頻人臉檢測與對抗防御等。

除對抗攻防的知識講解外,課程還設有實戰(zhàn)項目演練:以時下兩個熱門的AI對抗主題的競賽為案例,詳細講解賽題及baseline模型代碼,讓參與學習的同學能夠?qū)W以致用,快速上手實戰(zhàn)。

本文為第二講課程演講實錄整理(第一講見:它為什么是人臉識別中的 “不定時炸彈”?丨獨家公開課實錄),主要針對【OPPO安全AI挑戰(zhàn)賽】的賽題和baseline進行講解,本篇baseline利用開源的人臉識別模型生成對抗樣本進行黑盒攻擊。

點擊文末“閱讀原文”可獲取視頻,“數(shù)據(jù)實戰(zhàn)派”后臺按指示獲取ppt。獲取代碼、加入課程及競賽討論群可添加小助手。

?第二講分享大綱如下:

一、?人臉識別原理

在很多場景下,人臉識別需要具備人臉檢測和關(guān)鍵點檢測。

人臉檢測是檢測原始的圖片里面人臉具體的位置。關(guān)鍵點檢測是識別出人臉的關(guān)鍵區(qū)域位置,例如眉毛、眼睛以及輪廓等關(guān)鍵點。?

由于人臉是3D的,但是模型是根據(jù)2D平面上的點去擬合的,如果人臉角度朝向不同,有一些關(guān)鍵點就可能檢測不到。并且需要注意的是,在不同的數(shù)據(jù)集中,關(guān)鍵點的個數(shù)也是不同的,有的可能只有幾十個,有的可能會達到上萬個,所以關(guān)鍵點檢測也是一件比較難的事情。?

關(guān)鍵點檢測的作用,是在得到關(guān)鍵點的信息后,通過識別面部的區(qū)域完成人臉對齊的操作。?如果輸入圖片中的人臉角度不規(guī)整,那么通過關(guān)鍵點的信息可以將人臉轉(zhuǎn)換到水平的角度。有時也會運用到活體檢測上,通過人臉關(guān)鍵點定位和人臉追蹤等技術(shù),來驗證用戶是否為真實活體本人操作。

人臉識別的本質(zhì)就是細粒度圖像分類的過程。大多數(shù)情況下,我們利用深度學習神經(jīng)網(wǎng)絡來提取人臉的特征,提取完成后做相似度的比較來確定人的身份。

完整的步驟就是先完成人臉識別,再逐步到特征提取,最后進行相似度比較。

現(xiàn)在人臉檢測和關(guān)鍵點檢測這兩個任務可以在模型內(nèi)部完成,可以將人體的姿態(tài)估計和人臉關(guān)鍵點進行統(tǒng)一檢測。

在檢測到人臉之后,通過關(guān)鍵點對人臉進行對齊,接下來通過卷積神經(jīng)網(wǎng)絡得到中間的映射。可以理解為提取中間的feature map,用ImageNet預訓練好的resnet18或者resnet50都可以用來提取特征。

提取完特征之后,將這張圖片再通過網(wǎng)絡進行正向傳播,得到中間的結(jié)果,接下來可以對它進行一系列的任務,比如說一些人臉的聚類,或者是相似度的計算,也可以直接用中間提取的特征來完成分類的過程,都是可以的。

人臉識別在訓練的過程中,是借助這種分類的loss來進行訓練模型。人臉識別其實是提取它的中間層的feature map,然后計算相似度,最后根據(jù)相似度完成識別。?

人臉識別跟Reid方法在一些流程上是非常相通的。

假如拿到已經(jīng)訓練好的人臉識別模型,接下來給定一張圖片通過這個模型來提取特征,然后再和圖像庫里一些人臉的向量計算相似度,就可以得到具體的身份定位。

這個地方的相似度度量有很多種相似度的距離度量方法。比較常見的就是 Cosine similarity。?

二、對抗樣本的評價方法?

在攻擊對抗樣本過程中,主要運用到了黑盒攻擊和白盒攻擊。

但是如果想要做具體評價的時候,利用黑盒的模型在模型a上面產(chǎn)生對抗樣本,在模型b上做評價。此時模型a模型b可能是不一樣的,甚至模型b可能是黑盒的,所以要從兩個角度來衡量對抗樣本產(chǎn)生的優(yōu)劣。

第一個是 Test error能夠成功攻擊對抗樣本的比例。

比如說在OPPO的比賽里面,提交了一批大約2000張圖片,然后再去算一下這2000張圖片里面哪些圖片是被成功攻擊的。

首先要從對抗樣本能否成功攻擊的角度來衡量,也就是說對抗樣本能否讓模型b誤分類。當然,能否成功攻擊也和采取有目標攻擊還是無目標攻擊及相關(guān)的任務定義有關(guān)。

第二個就是從產(chǎn)生的樣本和原始樣本的差異性進行度量。在進行對抗樣本的定義時,其實是希望所產(chǎn)生的對抗樣本與原始樣本在像素上的差異性盡可能小。在保證能夠成功攻擊的情況下,將圖像視為矩陣時,要保證矩陣與矩陣之間的差異盡可能的小。

那么在這種情況下就會對添加的擾動有一定的限制。

第一種方法,可以對擾動的大小進行限制,比如平均的擾動到底在什么像素范圍內(nèi)。一般情況下假如像素的取值空間是在RGB空間內(nèi),那么像素的取值范圍應該是從0到接近于255,在這種情況下,可能是讓它在±20的范圍內(nèi)進行變化,不是所有的像素都是能夠讓像素隨機變化。

第二種方法,通過一些圖像的質(zhì)量進行限制,比如用SSIM或者其他圖像質(zhì)量的評價指標,比較兩張圖片之間語義上的差異性。圖像質(zhì)量可以理解為當一張圖片發(fā)生了一些變化,將圖片壓縮之后它的圖像質(zhì)量下降。當然,這也可以是距離度量函數(shù)。

Test Error和樣本的差異性非常關(guān)鍵。

下圖這兩個例子是兩類對抗樣本的產(chǎn)生方法。

左圖使用了BFGS方法,它產(chǎn)生的噪音大部分都是集中在物體主體的區(qū)域。

右圖使用了 FGSM方法,它產(chǎn)生的噪音可能遍布在圖片的各處,分布的范圍較為分散。

在這種情況下,不同的神經(jīng)網(wǎng)絡所產(chǎn)生的對抗樣本的噪音都是存在一定的差異的。在構(gòu)建對抗樣本的時候,就可以從多個模型的角度進行衡量。不同的深度學習網(wǎng)絡計算得到的噪音可能存在一定差異。

雖然不同的深度學習網(wǎng)絡,它的對抗樣本可能是有通用性或者牽引性,但是各自的網(wǎng)絡分別計算得到的 T或者噪音是存在一定差異的。?

本質(zhì)上, 黑盒攻擊不管是在比賽還是評價對抗樣本的遷移性的過程中,如果在模型a上產(chǎn)生的對抗樣本,同時希望這個樣本在模型b上也能夠起作用。

對抗樣本的產(chǎn)生步驟,首先要確定具體的處理過程。處理過程可以理解為神經(jīng)網(wǎng)絡針對輸入的圖片進行預處理。一些開源模型對于圖像約束力,它的方法是不一樣的。

其次是要確定產(chǎn)生對抗樣本的方法。比如想使用的BFGS或者one pixel等方法,在這些方法中要關(guān)注一下的產(chǎn)生對抗樣本的速度。不同的方法一方面是誤分類的準確率存在差異,另一方面就是在復雜度越高花費的時間同樣存在差異,在做比賽時盡量優(yōu)先選擇稍微簡單的方法。

最后是確定網(wǎng)絡模型和流程。在進行人臉識別的時候可能有不同的網(wǎng)絡模型,確定需要進行攻擊的網(wǎng)絡模型以及步驟。通常使用鏡像模型在模型a上面產(chǎn)生對抗樣本,然后在模型b上進行驗證。

三、OPPO安全挑戰(zhàn)賽介紹

本次的【OPPO安全AI挑戰(zhàn)賽】主要聚焦在的人臉識別場景下AI的對抗攻擊,本次比賽的難度比普通的對抗攻擊會更難一點。因為在OPPO這個比賽針對評估模型有一定的防御效果。有線上評價的模型是黑盒模型,而且是由多個模型所組成的評價模型,最大的難點在于人臉輸入的尺寸是不規(guī)整的。

四、OPPO安全挑戰(zhàn)賽實踐??

步驟1:加載人臉模型

為了保證模型的便捷性,這里我們選擇了Pytorch版本的InsightFace實現(xiàn),安裝方法如下:

#?https://github.com/nizhib/pytorch-insightface pip?install?git+https://github.com/nizhib/pytorch-insightface

加載iresnet34人臉識別模型:

import?insightface model?=?insightface.iresnet34(pretrained=True) model.eval()

步驟2:提取比賽人臉特征

使用iresnet34模型對初賽數(shù)據(jù)集的2000張照片提取特征,這里只需要做正向傳播即可。

img_feats?=?torch.zeros(2000,?512).float().cuda() idx_img?=?0 with?torch.no_grad():for?img_data,?_?in?train_loader:feat?=?m(img_data.cuda())img_feats[idx_img,?:]?=?featidx_img?+=?1

進而對特征進行歸一化,保證計算人臉相似度保持在0-1之間:

import?torch.nn.functional?as?F img_feats?=?F.normalize(img_feats,?p=2,?dim=1)

步驟3:多步FGSM攻擊

FGSM(Fast Gradient Sign Method)是經(jīng)典有效的對抗樣本產(chǎn)生方法,具體思路如下:

  • 擾動變化量與梯度的變化方向一致,則誤差函數(shù)就會增大。

  • 使用Sign函數(shù)保證了擾動同梯度方向一致,對分類結(jié)果產(chǎn)生最大化改變。

由于比賽是無目標攻擊,所以具體的攻擊步驟如下:

  • 步驟1:計算人臉特征相似度,選擇與當前人臉最相似的人臉作為攻擊目標。

  • 步驟2:執(zhí)行單步FSGM產(chǎn)生對抗樣本,并對擾動大小進行截斷。

  • 步驟3:重復多次步驟2,直到目標人臉的概率值達到閾值。

具體實現(xiàn)代碼如下:

def?one_step_attack(source_idx,?aim_idx=10):#?計算人臉相似度,得到攻擊目標aim_idx?=?torch.matmul(img_feats[source_idx].view(1,?512),?img_feats.T)[0].argsort()[-5].item()#?讀取原始人臉圖片ori_image?=?cv2.imread(paths[source_idx])img?=?preprocess(transforms.ToPILImage()(ori_image))img?=?img.reshape(-1,?3,?112,?112).cuda()?img_ori?=?img.clone().detach()img_adv?=?Nonebest?=?0#?執(zhí)行多步擾動,記錄最優(yōu)結(jié)果for?_?in?range(50):#?每次對擾動后的圖像都需要重新計算特征img?=?Variable(img,?requires_grad=True)img_embedding?=?model(img.cuda())img_embedding?=?F.normalize(img_embedding,?p=2,?dim=1)feat_ids?=?torch.matmul(img_embedding,?img_feats.T)objective_aim?=?feat_ids[0][aim_idx]objective_source?=?feat_ids[0][source_idx]if?objective_aim.item()?-?objective_source.item()?>?best?and?objective_aim.item()?==?feat_ids[0].max().item():img_adv?=?img.clone().detach()model.zero_grad()objective_aim.backward()#?根據(jù)梯度信息,單步FGSMdata_grad?=?img.grad.data.sign()?*?0.0075with?torch.no_grad():delta_diff?=?img?+?Variable(data_grad)?-?img_oridelta_diff?=?torch.clamp(delta_diff,?min=-0.13,?max=0.13)img?=?img_ori?+?delta_diffreturn?img,?img_ori

(滑動查看完整代碼)

步驟4:保存測試集攻擊結(jié)果

對于測試集每張照片,重復上述操作得到對抗樣本,并進行保存為原始格式。

for?idx?in?range(len(paths)):????path1,?path2?=?paths[idx].split('/')[-2:]img1,?img2?=?one_step_attack(idx)img1?=?unorm(img1[0])img1?=?img1.data.cpu().numpy().round()img1?=?np.clip(img1,?1,?255)img1?=?img1.transpose([1,?2,?0])h,?w?=?cv2.imread(paths[idx]).shape[:2]img1?=?cv2.resize(img1,?(h,?w))cv2.imwrite(f'./images/{path1}/{path2}',?img1)

Baseline在初賽評測得分40分,模型下載鏈接:

https://pan.baidu.com/s/1QYJ5azudMqWMqKv57MjpzA

提取碼: cr9p

?往期推薦?

丨?Science 論文:諾獎經(jīng)濟學家的經(jīng)典決策模型,被 AI 挑戰(zhàn)

丨?CVPR 2021 當之無愧的最佳論文獎

丨??arXiv 時代,應如何看待那些互相矛盾的論文?

丨?“三巨頭” 聯(lián)合發(fā)布萬字長文,深度學習將通往何方?

丨這篇論文,透露谷歌團隊所構(gòu)想的 “未來搜索”

丨?449 頁 pdf,FaceBook 稱其邁出 “重塑 AI 科學的第一步”

丨我們可能已見證第一場人工智能戰(zhàn)爭

丨?斯坦福 AI Lab 好文:知識圖譜深度介紹

丨清華團隊最新成果:可致特朗普能詠比特幣,AI 寫古詩 “更上一層樓”

丨麻省理工團隊新突破,彌補深度學習在交通領(lǐng)域上的關(guān)鍵欠缺

丨分析 30 年大腦研究發(fā)現(xiàn),人腦并沒有男女之分

丨機器學習邁向量子化:范式轉(zhuǎn)變驚鴻一瞥

丨香奈兒們的 AI 實驗室都在做什么?

丨比 GPU 快 15 倍,CPU 算法訓練深度神經(jīng)網(wǎng)絡 “超車” 成功

丨?“從業(yè) 3 年后,我永遠離開 AI 行業(yè)的 5 個原因”

丨?Bengio 團隊因果學習論文反思:為何機器學習仍在因果關(guān)系中掙扎?

丨出乎意料,對抗訓練可對機器人產(chǎn)生重大負面影響

丨?貝葉斯網(wǎng)絡之父 Judea Pearl 推薦:邁向可解釋的知識驅(qū)動系統(tǒng)

丨陳天橋雒芊芊腦機接口中心等團隊新成果:超聲波 “讀腦”

丨聽李宏毅點評 GPT-3:來自獵人暗黑大陸的模型

丨麻省理工學院學者萬字長文:計算機作為一種通用技術(shù)的衰落

丨你的臉是這樣丟掉的:人臉數(shù)據(jù)集的史上最大規(guī)模調(diào)查

丨?MIT 機器人教父 Rodney Brooks:機械臂編程語言的起源

丨一家圖靈獎得主背書創(chuàng)企的隕落,暴露了 AI 弱國 “恒弱” 的困境?

關(guān)于數(shù)據(jù)實戰(zhàn)派

數(shù)據(jù)實戰(zhàn)派希望用真實數(shù)據(jù)和行業(yè)實戰(zhàn)案例,幫助讀者提升業(yè)務能力,共建有趣的大數(shù)據(jù)社區(qū)。

總結(jié)

以上是生活随笔為你收集整理的60万元奖金 “人脸攻防战”,怎么打?丨独家公开课实录(附baseline)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。