成人av在线资源一区,亚洲av日韩av一区,欧美丰满熟妇乱XXXXX图片,狠狠做五月深爱婷婷伊人,桔子av一区二区三区,四虎国产精品永久在线网址,国产尤物精品人妻在线,中文字幕av一区二区三区欲色
    您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗,強烈建議使用更快更安全的瀏覽器
    此為臨時鏈接,僅用于文章預(yù)覽,將在時失效
    人工智能開發(fā)者 正文
    發(fā)私信給高云河
    發(fā)送

    0

    想要訓(xùn)練專屬人臉識別模型?先掌握構(gòu)建人臉數(shù)據(jù)集的三種絕招

    本文作者: 高云河 編輯:汪思穎 2018-06-28 10:28
    導(dǎo)語:快來實戰(zhàn)操作,構(gòu)建你自己的專屬人臉識別模型吧!

    雷鋒網(wǎng) AI 研習(xí)社按,隨著深度學(xué)習(xí)的發(fā)展,很多技術(shù)已經(jīng)落地,成為我們每天都能接觸到的產(chǎn)品,人臉識別就是其中之一。人臉識別的應(yīng)用范圍很廣,涉及上下班打卡、門禁、設(shè)備登錄、機場、公共區(qū)域的監(jiān)控等多個領(lǐng)域。

    我們可以自己訓(xùn)練定制化的人臉識別模型,但在訓(xùn)練模型識別圖片或視頻中的人臉之前,最重要的一個步驟是收集人臉數(shù)據(jù)集。如果使用已經(jīng)設(shè)計好的公開數(shù)據(jù)集,比如 Labeled Faces in the Wild(LFW),這時候最難的一部分工作已經(jīng)完成了,大家可以直接使用各種模型創(chuàng)造自己的人臉識別應(yīng)用。

    但是對于大多數(shù)人來說,我們想要識別的并不是目前開源的人臉數(shù)據(jù)集中的人臉,而是我們自己、朋友、家人、同事等等的臉。為了實現(xiàn)這個目標(biāo),我們需要收集自己想要識別的人臉,并按照某種方式處理好它們。這個過程通常被稱為人臉登記,我們將用戶作為一個樣本『登記』或者『注冊』到我們的數(shù)據(jù)集中。下面會介紹三種方法進行人臉登記,大家可以根據(jù)自己的情況選擇最合適的方法。

    如何創(chuàng)建定制的人臉識別數(shù)據(jù)集

    首先我將介紹使用 OpenCV 和一顆攝像頭來檢測視頻流中的人臉,并將帶有人臉的圖像幀保存到硬盤上。接下來我會列舉幾種用程序自動從網(wǎng)上下載人臉圖片的方法。最后,我們將討論人工收集圖像,以及在什么情況下這種方法是合適的。

    現(xiàn)在開始構(gòu)建一個人臉識別數(shù)據(jù)集吧!

    方法 1:通過 OpenCV 和攝像頭登記人臉

    該方法適用于:

    1. 構(gòu)建一個某區(qū)域內(nèi)的人臉識別系統(tǒng)

    2. 對于目標(biāo)人臉,能夠找到特定的人并收集他們的人臉圖像

    這樣的系統(tǒng)適用于公司、學(xué)校或者其他組織,在這里人們會每天不定時的出現(xiàn)。

    為了得到這些人的人臉樣本,我們會在一個房間內(nèi)放置好電腦和攝像機,通過攝像機捕捉目標(biāo)人臉在攝像畫面中的人臉信息,將并包含人臉的圖像幀保存到硬盤中。

    收集不同條件下的目標(biāo)人臉樣本可能會需要幾天或幾周的時間,這樣能使得人臉數(shù)據(jù)集足夠豐富,很好地表示不同狀態(tài)下的人臉,保證訓(xùn)練出來模型有足夠的魯棒性,收集的人臉包括:

    • 不同亮度下的人臉

    • 每天不同時候,不同光線角度下的人臉

    • 不同表情和情緒狀態(tài)下的人臉

    接下來我們更進一步,寫一個簡單的 Python 腳本來構(gòu)建人臉識別數(shù)據(jù)集,這個腳本會做如下工作:

    1.  連接并控制攝像頭

    2.  檢測人臉

    3.  將包含人臉的圖像幀寫入硬盤

    打開一個叫 build_face_dataset.py 的 Python 腳本,首先導(dǎo)入一些必要的庫,包括 OpenCV 和 imutils 

    1 # import the necessary packages

    2 from imutils.video import VideoStream

    3 import argparse

    4 import imutils

    5 import time

    6 import cv2

    7 import os

    可以參考這篇文章安裝 OpenCV

    imutils 可以通過 pip 安裝:pip install --upgrade imutils

    如果使用的是 Python 虛擬環(huán)境,不要忘記使用 workon 命令

    現(xiàn)在環(huán)境已經(jīng)配置好了,接下來討論兩個必要的命令行參數(shù):

    9 # construct the argument parser and parse the arguments

    10 ap = argparse.ArgumentParser()

    11 ap.add_argument("-c", "--cascade", required=True,

    12 help = "path to where the face cascade resides")

    13 ap.add_argument("-o", "--output", required=True,

    14 help="path to output directory")

    15 args = vars(ap.parse_args())

    命令行參數(shù)可以通過 argparse 庫在運行時解析,這個庫是包含在 Python 安裝中的。

    我們有兩個命令行參數(shù):

    • --cascade:硬盤中的 Haar cascade 文件路徑,用于 OpenCV 檢測人臉

    • --output:輸出的文件路徑。人臉圖像將會被保存到該路徑中,因此最好按照人名將人臉分類保存,比如將『John Smith』的人臉圖像保存到 dataset/john_smith 的路徑下

    接下來加載人臉的 Haar cascade 文件并初始化視頻流:

    17 # load OpenCV's Haar cascade for face detection from disk

    18 detector = cv2.CascadeClassifier(args["cascade"])

    19

    20 # initialize the video stream, allow the camera sensor to warm up,

    21 # and initialize the total number of example faces written to disk

    22 # thus far

    23 print("[INFO] starting video stream...")

    24 vs = VideoStream(src=0).start()

    25 # vs = VideoStream(usePiCamera=True).start()

    26 time.sleep(2.0)

    27 total = 0

    在第 18 行,我們加載了 OpenCV 的 Haar 人臉檢測器 detector。 這個 detector 將會在接下來每幀的循環(huán)中檢測人臉;在 24 行會初始化并開啟視頻流 VideoStreem;如果使用的是樹莓派的話,注釋掉第 24 行的代碼,使用第 25 行的代碼;第 26 行讓攝像頭先熱個身,暫停兩秒鐘;這一段代碼也初始化了 total 計數(shù)器來表示保存的人臉圖片的數(shù)量。

    接下來,就開始對視頻流的每幀圖像進行處理:

    29 # loop over the frames from the video stream

    30 while True:

    31 # grab the frame from the threaded video stream, clone it, (just

    32 # in case we want to write it to disk), and then resize the frame

    33 # so we can apply face detection faster

    34 frame = vs.read()

    35 orig = frame.copy()

    36 frame = imutils.resize(frame, width=400)

    37

    38 # detect faces in the grayscale frame

    39 rects = detector.detectMultiScale(

    40 cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY), scaleFactor=1.1, 

    41 minNeighbors=5, minSize=(30, 30))

    42

    43 # loop over the face detections and draw them on the frame

    44 for (x, y, w, h) in rects:

    45 cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)

    在第 30 行, 開始循環(huán)(循環(huán)在『q』鍵被按下之后結(jié)束);34-36 行,捕捉一幀畫面:frame,創(chuàng)建一個copy,改變大小。

    接下來就是人臉檢測了!

    使用 detectMultiScale 方法在每幀畫面中檢測人臉,這個函數(shù)需要如下參數(shù):

    image:一個灰度圖像

    scaleFactor:指定在每個維度圖像尺寸減少的比例

    minNeighbor:該參數(shù)指定候選的檢測框數(shù)量,以保證檢測是有效的

    minSize:最小的人臉圖像尺寸

    在某些特殊場景下,可能需要精調(diào)這些參數(shù)以減少 false positive 的數(shù)量或提高人臉的檢測率,但是對于一些普通的人臉檢測任務(wù)來說,這些參數(shù)就可以很好的工作了。

    其實也還有一些其他更好的方法檢測人臉,比如在之前的文章中提到過,可以使用預(yù)訓(xùn)練好的深度學(xué)習(xí)模型來檢測人臉。但是本文里提到的使用 OpenCV 的方法的優(yōu)點是無需調(diào)參,而且速度非常快。

    人臉檢測的結(jié)果被保存在一個 rects 的列表中(矩形檢測框)。為了將這些矩形畫在圖像上,在 44、45 行中遍歷所有矩形框,并將他們畫在圖片上。

    最后一步就是將檢測框顯示在屏幕上,以及解決按鍵退出的問題:

    48 # show the output frame

    49 cv2.imshow("Frame", frame)

    50 key = cv2.waitKey(1) & 0xFF

    51 

    52 # if the `k` key was pressed, write the *original* frame to disk

    53 # so we can later process it and use it for face recognition

    54 if key == ord("k"):

    55 p = os.path.sep.join([args["output"], "{}.png".format(

    56 str(total).zfill(5))])

    57 cv2.imwrite(p, orig)

    58 total += 1

    59

    60 # if the `q` key was pressed, break from the loop

    61 elif key == ord("q"):

    62 break

    第 48 行執(zhí)行將該幀圖像顯示在屏幕上,第 49 行執(zhí)行捕捉鍵盤指令

    『k』、『q』鍵盤指令對應(yīng)不同的命令:

    • k:保留該幀圖像并保存到硬盤中(53-56 行),同時增加 total 計數(shù)器。對每個想要保存的圖像幀,都需要按『k』來保存。為了能夠更好地訓(xùn)練模型,最好要保存不同角度、人臉在畫面不同位置、帶/不帶眼鏡的圖像。

    • q:退出循環(huán),退出腳本

    最后,將保存的圖片數(shù)量打印到屏幕上,并清空緩存:

    64 # print the total faces saved and do a bit of cleanup

    65 print("[INFO] {} face images stored".format(total))

    66 print("[INFO] cleaning up...")

    67 cv2.destroyAllWindows()

    68 vs.stop()

    接下來,只需在終端里運行如下命令就可以了:

    $ python build_face_dataset.py --cascade haarcascade_frontalface_default.xml \

    --output dataset/adrian

    [INFO] starting video stream...

    [INFO] 6 face images stored

    [INFO] cleaning up...

    這里推薦將每個人的人臉數(shù)據(jù)保存在數(shù)據(jù)集下的一個子文件夾內(nèi),這樣能夠保證數(shù)據(jù)集條理清晰,易于管理。

    方法 2:使用程序自動下載人臉圖片

    ??想要訓(xùn)練專屬人臉識別模型?先掌握構(gòu)建人臉數(shù)據(jù)集的三種絕招

    在這種場景下,我們并不需要真的找到那個人拍攝圖片,只要他們經(jīng)常出現(xiàn)在網(wǎng)上,我們能夠在網(wǎng)上找到足夠多的圖片即可,這樣就可以寫腳本,通過各個平臺的 API 下載這些圖片了。

    具體使用哪些 API 主要取決于想要收集的人的人臉信息,比如一個人經(jīng)常在 Twitter 或者 Instagram 上發(fā)自拍,那么我們就可以使用這些平臺的 API 來抓取圖片。

    還可以使用 Google 和 Bing 等搜索引擎來抓取:

    在這篇博文中,可以找到使用 Google Images 手動或者使用腳本來下載圖片的方法。

    另一個更好的方法就是使用 Bing 的圖片搜索 API,這樣能夠全自動下載圖像,具體方法參見這篇博文

    使用 Bing 圖片搜索 API,我們能夠從侏羅紀公園和侏羅紀世界這兩部電影的海報中下載 218 張 Alan Grant 的臉部圖片。下面展示了通過 Bing 圖片搜索 API 下載演員 Owen Grady 的臉部圖片的代碼:

    1 $ mkdir dataset/owen_grady

    2 $ python search_bing_api.py --query "owen grady" --output dataset/owen_grady

    使用這種方法下載幾個人的人臉圖像之后,我們看看整個數(shù)據(jù)集長什么樣

    1 $ tree jp_dataset --filelimit 10

    2 jp_dataset

    3 ├── alan_grant [22 entries]

    4 ├── claire_dearing [53 entries]

    5 ├── ellie_sattler [31 entries]

    6 ├── ian_malcolm [41 entries]

    7 ├── john_hammond [36 entries]

    8 └── owen_grady [35 entries]

    9

    10 6 directories, 0 files

    只要 20 分鐘左右(包括手動挑出錯誤圖像的時間),就能夠做好一個侏羅紀公園的人臉數(shù)據(jù)集了。

    ??想要訓(xùn)練專屬人臉識別模型?先掌握構(gòu)建人臉數(shù)據(jù)集的三種絕招


    方法 3:手動收集人臉圖像

    ?想要訓(xùn)練專屬人臉識別模型?先掌握構(gòu)建人臉數(shù)據(jù)集的三種絕招

    最后一個方法就是全手動收集人臉數(shù)據(jù)集,這是最不推薦的方法。這種方法顯然是最繁瑣的,而且需要大量時間。但是在某些特殊情況下,可能不得不使用這些方法。

    手動收集的話,通常需要:

    • 使用搜索引擎搜索

    • 瀏覽社交媒體賬號(Ins, 微博,微信等)

    • 圖片分享服務(wù)(Google Photos, Flickr,500px 等)

    你需要手動將這些結(jié)構(gòu)圖片保存到硬盤上,通常只有需要收集少量圖片的時候才使用這種方法。

    總結(jié)

    在本篇博文中,一共回顧了構(gòu)建自有人臉數(shù)據(jù)集的三種方法,具體選擇哪種方法取決于你想要用這個數(shù)據(jù)集來做什么。

    如果你想要構(gòu)建一個某一區(qū)域內(nèi)的人臉識別系統(tǒng),例如用于教室、公司或者其他組織的人臉識別系統(tǒng),最好的方法是將需要識別的人請到一個房間里,通過第一種方法在攝像頭的視頻流中收集人臉數(shù)據(jù)。

    如果你想要構(gòu)建一個包含公眾人物、明星、運動員等的人臉識別系統(tǒng),那么可能只能夠在網(wǎng)上收集到他們的圖像。在這種情況下,最好的方法是使用各平臺的 API 自動下載樣本圖片(方法 2)

    最后,如果要收集的人并沒有公開社交賬號,或者社交賬號上很少發(fā)布圖片,那就可能需要手動收集并管理數(shù)據(jù)集了(方法 3)。這種方法顯然是最繁瑣的,但是在某些情況下,可能不得不這樣做。

    所有代碼和必要的庫都可以在原博文中下載到,只需填寫你的郵箱地址即可~

    via pyimagesearch

    雷鋒網(wǎng) AI 研習(xí)社編譯整理雷鋒網(wǎng)

    雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知

    想要訓(xùn)練專屬人臉識別模型?先掌握構(gòu)建人臉數(shù)據(jù)集的三種絕招

    分享:
    相關(guān)文章
    當(dāng)月熱門文章
    最新文章
    請?zhí)顚懮暾埲速Y料
    姓名
    電話
    郵箱
    微信號
    作品鏈接
    個人簡介
    為了您的賬戶安全,請驗證郵箱
    您的郵箱還未驗證,完成可獲20積分喲!
    請驗證您的郵箱
    立即驗證
    完善賬號信息
    您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
    立即設(shè)置 以后再說