基于python的人脸识别技术的实现,python人脸识别-从入门到工程实践 pdf

  基于python的人脸识别技术的实现,python人脸识别:从入门到工程实践 pdf

  猪脸

  这个存储库用于保存竞赛的代码

  1.操作环境

  Ubuntu 16.04 python 2 . 7 . 12 cuda 8.0 cud nn 6.0 tensor flow 1 . 3 . 0

  GPU 4 *泰坦XP

  2.从视频中剪下猪:

  (1)为了消除背景数据对模型的影响,我们使用yolo-9000算法提取每一帧视频中的猪。代码来自https://github.com/philipperemy/yolo-9000.我们已经修改了它的代码。把yolo解压包的代码解压后,我们就可以把同名文件盖在darknet/src下了。

  (2)观察后发现,虽然yolo-9000对猪的识别不一定属于猪类,但基本上视频中所有帧都会以猪为主。所以在选择帧的时候,我们不使用hog类帧作为输出图像,而是使用置信度作为参考标准。

  (3)我们保留置信度大于0.1的所有窗口。

  (4)每个视频可以获得10000多张ROI图片。我们按大小排序,选取前4000张图片,剔除无关物体和背景干扰大的图片(比如猪身上没有框的猪,或者只有极小一部分被框了),作为训练集和验证集。

  (5)最终获得94,677幅图像。

  3、预处理和生成数据集

  (1)运行raw_data/image_process.py,通过填充将上一步得到的图片变成正方形,以保证后续步骤中的调整大小操作不会扭曲图片。

  (2)运行raw_data/get_data_txt.py对数据进行划分,将数据划分为50个存储文件,存储在txt文件中,方便大数据的分步读取。

  (3)运行raw_data/create_h5_dataset.h5,根据数据生成h5文件。这一步之后,50。h5文件存储训练集和50个。将获得存储验证集的h5文件。

  4.模型

  (1)该模型基于细粒度识别模型双线性cnn的改进,参考源代码来自vis-www.cs.umass.edu/bcnn/docs/bcnn_iccv15.pdf, https://github.com/abhaydoke09/Bilinear-CNN-TensorFlows参考论文双线性CNN,这是一个端到端的网络模型。该模型在CUB200-2011数据集上取得了弱监督细粒度分类模型的最佳分类精度。

  (2)双线性cnn对最后一个卷积核的输出做外积(其实是内积),从而达到融合不同特征的目的。

  (3)受resnet结构的启发,我们团队改进了双线性cnn算法,将最后一个卷积核的输出与前面其他卷积核的输出进行融合,从而达到融合不同层次特征的目的。然后将获得的向量与原始双线性向量融合。我们在conv5_3中加入了conv4_1和conv5_1的内积(只加入这两层是因为它们的滤波器数相同,合并后可以做内积,所以不需要额外加入卷积核)。我们的思路是,不同的卷积层侧重不同的特征,对应的感知场也不同(即有高低之分)。在识别相似图像时,仅仅考虑特征是不够的。

  (5)在训练过程中加入了实时数据增强,包括旋转、随机改变对比度、随机改变亮度、随机裁剪。在训练期间,所有连接层的退出概率是0.5。

  4.结构

  (1)train/read_data.py是读取数据的结构。实现大数据分阶段加载。

  (2)train/resvgg_model.py定义了网络结构和读取保存的权重的方法。

  (3)train/train_resvgg.py定义了训练过程。

  (4)train/predict_resvgg.py输出预测结果。

  5.加载预训练模型并进行微调。

  (1)读取resvgg模型时,使finetune=False,这样可以只训练最后一个全连接层。并调用load_initial_weights(sess)读取预训练vgg的卷积层参数。

  (2)训练设置优化器=tf.train.momentum优化器(learning _ rate=0.2,momentum=0.5)。最小化(损失),50次训练。

  (3)保存过程中得到的最优模型。

  6.全网络培训

  (1)读取resvgg模型时,使finetune=True。调用load _ own _ weight (sess,model _ path)读取上一步得到的模型。

  (2)训练设置优化器=tf。火车。GradientEscentOptimizer(learning _ rate=0.001)。最小化(损失),训练200次。

  (3)保存过程中得到的最优模型。

  7.后期调整

  在实际训练过程中,只有第一次会在所有数据上训练200次。得到保存的模型后,在后续的参数调整过程中,只取1/4左右的数据进行进一步的训练。

  8.预报

  (1)运行predict_resvgg.py预测结果。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: