深度学习人脸识别实验---VGG模型

特别说明:本次实验步骤大部分来源于http://blog.csdn.net/wjmishuai/article/details/50658670

1、caffe环境配置

  主要参考:《深度学习 21天实战Caffe》

2、VGG人脸识别模型资料(提供论文和以及训练完的人脸模型)

  http://www.robots.ox.ac.uk/~vgg/software/vgg_face/

3、LMDB数据集的获取

  • 数据集划分

    #保存图片的路径
    PATH=/media/img
    echo "start..."
    #遍历文件夹
    for name in $PATH/webface_img/*;do
            var=0
    #遍历文件夹中的图片
            for file_name in $name/*;do
                var=$(($var+1));
                str=$file_name
                #保存图片路径
                str=${str#*img}
                #保存图片lable
                lable=${str#*/}
                lable=${lable%%/*}
                if [ "$var" = "1" ] || [ "$var" = "3" ] || [ "$var" = "5" ]; then
                #验证集
                echo $str" "$lable>>/home/gk/val.txt
                else
                #测试集
                echo $str" "$lable>>/home/gk/train.txt
                fi
    done
    done
    echo "Done."  

      

  • 转换为LMDB格式

    #保存生成的lmdb的目录
    EXAMPLE=/media/gk/img
    
    #train.txt和val.txt所在的目录
    DATA=/home/gk  
    
    #转换图片的工具所在的目录
    TOOLS=/home/gk/caffe-master/build/tools    
    
    #图片所在的目录
    TRAIN_DATA_ROOT=/media/gk/img/webface_img
    VAL_DATA_ROOT=/media/gk/img/webface_img  
    
    # 设置 RESIZE=true 可以把图片resize成想要的尺寸。
    RESIZE=true
    if $RESIZE; then
      RESIZE_HEIGHT=227
      RESIZE_WIDTH=227
    else
      RESIZE_HEIGHT=0
      RESIZE_WIDTH=0
    fi  
    
    echo "Creating train lmdb..."  
    
    GLOG_logtostderr=1 $TOOLS/convert_imageset \
        --resize_height=$RESIZE_HEIGHT \
        --resize_width=$RESIZE_WIDTH \
        --shuffle \
        $TRAIN_DATA_ROOT \
        $DATA/train.txt \
        $EXAMPLE/train_lmdb  
    
    echo "Creating val lmdb..."  
    
    GLOG_logtostderr=1 $TOOLS/convert_imageset \
        --resize_height=$RESIZE_HEIGHT \
        --resize_width=$RESIZE_WIDTH \
        --shuffle \
        $VAL_DATA_ROOT \
        $DATA/val.txt \
        $EXAMPLE/val_lmdb  
    
    echo "Done."  

4、mean文件,计算图像均值

#lmdb格式的文件所在的路径
EXAMPLE=/media/gk/img/lmdb_webface
#均值文件保存的路径
DATA=/media/gk/44CA719BCA718A46
#转换图片的工具所在的目录
TOOLS=/home/gk/caffe-master/build/tools    

$TOOLS/compute_image_mean $EXAMPLE/train_lmdb \
  $DATA/mean.binaryproto    

echo "Done."    

5、模型训练

./build/tools/caffe train --solver=models/bvlc_reference_caffenet/solver.prototxt
  • 主要是训练模型参数文件(slover.prototxt)和网络模型结构配置文件(tarin.prototxt)的编写。

6、模型的测试

  • 参考:

  http://nbviewer.jupyter.org/github/BVLC/caffe/tree/master/examples/

  http://blog.csdn.net/wjmishuai/article/details/50854168

  • 主要代码

    //模型加载
    net=caffe.Classifier(‘/home/gk/caffe-master/examples/VGG_net/deploy.prototxt‘,
        ‘/home/gk/caffe-master/examples/VGG_net/VGG_face.caffemodel‘) 
    
    def compar_pic(path1,path2):
        global net
        #加载验证图片
        X=read_image(path1)
        test_num=np.shape(X)[0]
        #X  作为 模型的输入
        out = net.forward_all(data = X)
        #fc7是模型的输出,也就是特征值
        feature1 = np.float64(out[‘fc7‘])
        feature1=np.reshape(feature1,(test_num,4096))
        #加载注册图片
        X=read_image(path2)
        #X  作为 模型的输入
        out = net.forward_all(data=X)
        #fc7是模型的输出,也就是特征值
        feature2 = np.float64(out[‘fc7‘])
        feature2=np.reshape(feature2,(test_num,4096))
        #求两个特征向量的cos值,并作为是否相似的依据
        predicts=pw.cosine_similarity(feature1,feature2)
        return  predicts  
    
    def read_image(filelist):  
    
        averageImg = [129.1863,104.7624,93.5940]
        X=np.empty((1,3,224,224))
        word=filelist.split(‘\n‘)
        filename=word[0]
        im1=skimage.io.imread(filename,as_grey=False)
        #归一化
        image =skimage.transform.resize(im1,(224, 224))*255
        X[0,0,:,:]=image[:,:,0]-averageImg[0]
        X[0,1,:,:]=image[:,:,1]-averageImg[1]
        X[0,2,:,:]=image[:,:,2]-averageImg[2]
        return

7、模型的微调

  参考:http://blog.csdn.net/hlx371240/article/details/51388022 

时间: 2024-10-24 10:24:28

深度学习人脸识别实验---VGG模型的相关文章

Dlib+OpenCV深度学习人脸识别

目录(?)[+] DlibOpenCV深度学习人脸识别 前言 人脸数据库导入 人脸检测 人脸识别 异常处理 Dlib+OpenCV深度学习人脸识别 前言 人脸识别在LWF(Labeled Faces in the Wild)数据集上人脸识别率现在已经99.7%以上,这个识别率确实非常高了,但是真实的环境中的准确率有多少呢?我没有这方面的数据,但是可以确信的是真实环境中的识别率并没有那么乐观.现在虽然有一些商业应用如员工人脸识别管理系统.海关身份验证系统.甚至是银行人脸识别功能,但是我们可以仔细想

深度学习文字识别

Blog:https://blog.csdn.net/implok/article/details/95041472 步骤: 文字识别是AI的一个重要应用场景,文字识别过程一般由图像输入.预处理.文本检测.文本识别.结果输出等环节组成. 分类:文字识别可根据待识别的文字特点采用不同的识别方法,一般分为定长文字.不定长文字两大类别. 定长文字(例如手写数字识别.验证码),由于字符数量固定,采用的网络结构相对简单,识别也比较容易: 不定长文字(例如印刷文字.广告牌文字等),由于字符数量是不固定的,因

小知识:深度学习的5大常用模型解读

自动编码器 AutoEncoder Deep Learning最简单的一种方法是利用人工神经网络的特点,人工神经网络(ANN)本身就是具有层次结构的系统,如果给定一个神经网络,我们假设其输出与输入是相同的,然后训练调整其参数,得到每一层中的权重. 自然地,我们就得到了输入I的几种不同表示(每一层代表一种表示),这些表示就是特征.自动编码器就是一种尽可能复现输入信号的神经网络. 为了实现这种复现,自动编码器AutoEncoder就必须捕捉可以代表输入数据的最重要的因素,就像PCA那样,找到可以代表

深度学习图像标注工具VGG Image Annotator (VIA)使用教程

VGG Image Annotator (VIA)是一款开源的图像标注工具,由Visual Geometry Group开发. 可以在线和离线使用,可标注矩形.圆.椭圆.多边形.点和线.标注完成后,可以导出为csv和json文件格式. 地址:http://www.robots.ox.ac.uk/~vgg/software/via/. 中文使用教程: 原文:https://blog.csdn.net/heiheiya/article/details/81530952 原文地址:https://ww

《刷脸背后:人脸检测 人脸识别 人脸检索 》PDF 学习下载

发现一本系统讲解人脸识别一系列技术的好书,叫做<刷脸背后:人脸检测 人脸识别 人脸检索>,这里给大家分享一下,共同学习. 本书高清PDF版下载链接:<刷脸背后:人脸检测 人脸识别 人脸检索 >高清带标签可复制PDF 1 内容介绍: 人脸识别是当今热门的研发方向,在安防.金融.旅游等领域具有十分广泛的应用.本书全面.系统地介绍“刷脸”背后的技术,包括人脸检测.人脸识别.人脸检索相关的算法原理和实现技术.本书中讲解的算法具有高度的可操作性和实用性.通过学习本书,研究人员.工程师能够在3

【60】什么是人脸识别;One-Shot学习;Similarity函数

1. 人脸识别现在可以看到很多产品在运用人脸识别,如手机解锁.车站身份识别认证.刷脸支付等 在人脸识别的相关文献中,人们经常提到 人脸验证(face verification)人脸识别(face recognition)人脸验证问题:如果有一张输入图片,以及某人的ID或者是名字这个系统要做的是,验证输入图片是否是这个人有时候也被称作1对1问题只需要弄明白这个人是否和他声称的身份相符 而人脸识别问题比人脸验证问题难很多因为这是1对多问题(1:K)假设有一个验证系统,准确率是99%,自我感觉还可以但

王文峰《人脸识别原理与实战以MATLAB为工具》PDF及代码+《人脸识别原理及算法(沈理)》PDF+学习参考

人脸识别是当今世界科技领域攻关的高精尖技术.<人脸识别原理及算法:动态人脸识别系统研究>系统介绍了人脸识别研究领域的研究状况以及作者在人脸识别领域的研究工作和研究成果,全书共分为3个部分. <人脸识别原理与实战以MATLAB为工具>作为该技术的进阶指南,在内容上尽可能涵盖人脸识别的各技术模块,立足于作者 在中国科学院.985工程大学国家重点实验室从事视频识别与智能监控项目开发的研究积累及实战体验,分享了作者对人脸识 别算法设计的一些最直观的感触和认识. 参考学习: <人脸识别

为什么深度学习几乎成了计算机视觉研究的标配?

https://zhuanlan.zhihu.com/p/21533690 标签: 深度学习计算机视觉研究标配 2016-07-09 16:38 1951人阅读 评论(0) 收藏 举报  分类: 计算机视觉CV(308)  目录(?)[+] 本次CVPR 2016上,深度学习几乎成了如今计算机视觉研究的标配,人脸识别.图像识别.视频识别.行人检测.大规模场景识别的相关论文里都用到了深度学习的方法,加上Google,Facebook这样的大企业助力,很多人疑惑,为什么深度学习相比其它的AI实现方法

深度学习卷积神经网络大事件一览

深度学习(DeepLearning)尤其是卷积神经网络(CNN)作为近几年来模式识别中的研究重点,受到人们越来越多的关注,相关的参考文献也是层出不穷,连续几年都占据了CVPR的半壁江山,但是万变不离其宗,那些在深度学习发展过程中起到至关重要的推动作用的经典文献依然值得回味,这里依据时间线索,对CNN发展过程中出现的一些经典文献稍作总结,方便大家在研究CNN时追本溯源,在汲取最新成果的同时不忘经典. 首先这里给出CNN在发展过程中的一些具有里程碑意义的事件和文献: 对于CNN最早可以追溯到1986