关于Celeba人脸数据集的介绍
CeleA是香港中文大學的開放數據,包含10177個名人身份的202599張圖片,并且都做好了特征標記,這對人臉相關的訓練是非常好用的數據集。
官網鏈接
網盤鏈接
別看只是一堆人臉,他們很貼心地做好了特征標記,也就是說,你可以找到類似下面這些標簽:
40種屬性:
01 5_o_Clock_Shadow 胡子,(清晨刮臉的人傍晚已長出的短髭 ) -1?
02 Arched_Eyebrows 柳葉眉 1?
03 Attractive 有魅力的 1?
04 Bags_Under_Eyes 眼袋 -1?
05 Bald 禿頭的 -1?
06 Bangs 劉海 -1?
07 Big_Lips 大嘴唇 -1?
08 Big_Nose 大鼻子 -1?
09 Black_Hair 黑發 -1?
10 Blond_Hair 金發 -1?
11 Blurry 睡眼惺松的 -1?
12 Brown_Hair 棕發 1?
13 Bushy_Eyebrows 濃眉 -1?
14 Chubby 豐滿的 -1?
15 Double_Chin 雙下巴 -1?
16 Eyeglasses 眼鏡 -1?
17 Goatee 山羊胡子 -1?
18 Gray_Hair 白發,灰發 -1?
19 Heavy_Makeup 濃妝 1?
20 High_Cheekbones 高顴骨 1?
21 Male 男性 -1?
22 Mouth_Slightly_Open 嘴輕微的張開 1?
23 Mustache 胡子 -1?
24 Narrow_Eyes 窄眼 -1?
25 No_Beard 沒有胡子 1?
26 Oval_Face 瓜子臉,鵝蛋臉 -1?
27 Pale_Skin 白皮膚 -1?
28 Pointy_Nose 尖鼻子 1?
29 Receding_Hairline 發際線; 向后梳得發際線 -1?
30 Rosy_Cheeks 玫瑰色的臉頰 -1?
31 Sideburns 連鬢胡子,鬢腳 -1?
32 Smiling 微笑的 1?
33 Straight_Hair 直發 1?
34 Wavy_Hair 卷發; 波浪發 -1?
35 Wearing_Earrings 戴耳環 1?
36 Wearing_Hat 帶帽子 -1?
37 Wearing_Lipstick 涂口紅 1?
38 Wearing_Necklace 帶項鏈 -1?
39 Wearing_Necktie 戴領帶 -1?
40 Young 年輕人 1
文件含義
進入百度網盤可以看到多個文件,但是都是干什么的呢?應該下載哪個來用呢?
在動手下載之前,最好先讀讀README文件,里面有比較詳細的描述,這里只簡單介紹一下:
- Img文件夾下是所有圖片,圖片又分三類文件:
| img_celeba.7z | 純“野生”文件,也就是從網絡爬取的沒有做裁剪的圖片 |
| img_align_celeba_png.7z | 把“野生”文件裁剪出人臉部分之后的圖片,png格式 |
| img_align_celeba.zip | jpg格式的,比較小(推薦使用,直接解壓即可) |
圖中可以看到,人臉圖片的名字只是簡單的編號,那膚色、發色、眼鏡、性別等特征標簽在哪呢,在之前的“Anno”文件夾中:
第一個“list_attr_celeba.txt”文本文件就記錄了每一張圖片的特征標簽:
如圖所示,第一行表示圖片個數,第二行是特征類型,以空格分開,可以看到有超多特征。下面的行就是每張圖片的標記了,第一列是圖片名,后面的每個數字對應每一個特征,1表示正例,-1表示反例。
這樣我們就有了圖片和特征描述了,那怎么篩選出我們要的人臉圖片呢?
假設我們要把所有人臉分成戴了眼鏡的和沒戴眼鏡的兩份集合,來訓練從戴眼鏡到不戴眼鏡的轉換。一個個地人眼去看去分類顯然是不現實的,描述文件的意義就在于此。
我們可以寫一份Python代碼來遍歷txt中每一張圖片對應的“Eyeglasses”屬性列,看是不是1,從而判斷對應圖片是否戴了眼鏡。
數一數可以知道“Eyeglasses”是第16個屬性,這樣,我們可以讀取這份屬性描述txt,遍歷每一行,看對應列是否是1,從而將圖片名篩分到兩個txt中去:
篩選圖片
得到兩個記錄了有無戴眼鏡的圖片名集合txt后,我們就可以根據這個來篩選圖片了。
圖片共二十多萬張,我們如果采用針對一個txt中每個圖片名都去從頭到尾到文件夾里找一次的方案,處理起來就太慢了。
這里我們采取更快速的方法,遍歷文件夾中所有圖片,對于遇到的每個圖片名(當然,因為文件夾中不止圖片,所以先判斷是否是圖片,也就是后綴是否是.jpg),去記錄有無戴眼鏡的兩個txt中分別找是否包含該圖片名,哪個包含,則把該圖片移動到對應文件夾下去。
這里還可以優化的是,在txt中找圖片名時,也不能每次要找都從頭到尾找,而要記錄上次找到的位置,因為圖片名時按順序排好的,所以下一張要找的圖片名一定會在下面的行,而不會在之前出現過的行,這樣也可以提速。
由于兩個txt中行數不一致(有無戴眼鏡的圖片數量不同),所以要判斷當一個txt全部找完后,之后就不要再去該txt中找了,更不要繼續往后移動行,這樣會出錯的。
整體優化完成后代碼如下:
方形臉部截取
?
這份代碼就是遍歷文件夾中的所有圖片,用face_recognition庫去識別出人臉位置的上下左右坐標,基本識別得出的坐標就已經是方形的了,特殊情況下會有一個像素的誤差,所以我強制對比了一次寬高,不一樣就改成一樣的,對裁剪的影響也不會很大。需注意的是要運行這份代碼需要安裝face_recognition庫和PIL庫,如何安裝就可以直接搜索教程了。
這里我們就得到了所有高寬相等的人臉二次裁剪圖片。
還要注意的一點是這里只保證了每張圖片自身高寬相等,圖片之間的尺寸并不一定是同樣大小的。
參考:
https://blog.csdn.net/Cloudox_/article/details/78432517
總結
以上是生活随笔為你收集整理的关于Celeba人脸数据集的介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 水深6到9米有鱼吗_我国四大家鱼之一,营
- 下一篇: C#实现扫脸登陆 ---百度API