楼主: casey_c
1253 1

[程序分享] 面部识别应用案例 [推广有奖]

  • 0关注
  • 10粉丝

博士生

92%

还不是VIP/贵宾

-

威望
0
论坛币
96 个
通用积分
2.1003
学术水平
2 点
热心指数
15 点
信用等级
2 点
经验
11502 点
帖子
278
精华
0
在线时间
94 小时
注册时间
2016-11-22
最后登录
2022-5-2

楼主
casey_c 发表于 2017-7-18 11:40:32 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币



以下内容转自 数析学院,只节选了部分,有需要的同学可以直接查看原文


今天分享的人脸面部识别模型基于 HOG+SVM 的方法。


首先,我们需要设置 notebook ,导入相关可视化库:



  1. %matplotlib inline
  2. import matplotlib.pyplot as plt
  3. import seaborn as sns; sns.set()
  4. import numpy as np
复制代码


导入 skimage 库中的图像集,我们可以通过 skimage 库的 feature.hog 工具来直接提取图像的 HOG 特征,如下图所示:


  1. from skimage import data, color, feature
  2. import skimage.data

  3. image = color.rgb2gray(data.chelsea())
  4. hog_vec, hog_vis = feature.hog(image, visualise=True)

  5. fig, ax = plt.subplots(1, 2, figsize=(12, 6),
  6.                        subplot_kw=dict(xticks=[], yticks=[]))
  7. ax[0].imshow(image, cmap='gray')
  8. ax[0].set_title('input image')

  9. ax[1].imshow(hog_vis)
  10. ax[1].set_title('visualization of HOG features');
复制代码
1.jpg

导入 Scikit-Learn 库内置的人脸照片数据集,作为正样本:


  1. from sklearn.datasets import fetch_lfw_people
  2. faces = fetch_lfw_people()
  3. positive_patches = faces.images
  4. positive_patches.shape
复制代码
(13233, 62, 47)
接着我们来构造一组负样本数据集,这个数据集中的样本为 skimage 库图像集中的照片切割而成,每张照片的大小皆与上文中的正样本一致,即 62x47 像素:
  1. from skimage import data, transform

  2. imgs_to_use = ['camera', 'text', 'coins', 'moon',
  3.                'page', 'clock', 'immunohistochemistry',
  4.                'chelsea', 'coffee', 'hubble_deep_field']
  5. images = [color.rgb2gray(getattr(data, name)())
  6.           for name in imgs_to_use]
复制代码
  1. rom sklearn.feature_extraction.image import PatchExtractor

  2. def extract_patches(img, N, scale=1.0, patch_size=positive_patches[0].shape):
  3.     extracted_patch_size = tuple((scale * np.array(patch_size)).astype(int))
  4.     extractor = PatchExtractor(patch_size=extracted_patch_size,
  5.                                max_patches=N, random_state=0)
  6.     patches = extractor.transform(img[np.newaxis])
  7.     if scale != 1:
  8.         patches = np.array([transform.resize(patch, patch_size)
  9.                             for patch in patches])
  10.     return patches

  11. negative_patches = np.vstack([extract_patches(im, 1000, scale)
  12.                               for im in images for scale in [0.5, 1.0, 2.0]])
  13. negative_patches.shape
复制代码
(30000, 62, 47)
以上内容节选自 数析学院,原文内容较多,先搬运到这,后续有时间再补充,有需要的同学可以先直接到 数析学院 查看原文


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝


沙发
casey_c 发表于 2017-7-21 13:55:00

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-22 08:26