基于caffe的人脸检测项目实战之制作数据源

    技术2024-11-18  8

    人脸检测项目实战的目的:检测到人脸框

    1.数据源制作

    数据获取

    benchmark 是一个行业的基准,里面包含很多数据库、论文、源码和结果(经典论文)。 facedetection benchmark:WIDER Face、FDDB等。

    优秀论文 通常实验阶段都会介绍它所使用的数据集,公开数据集可以下载。申请数据集时候,最好使用学校的,以edu结尾的邮箱。

    论坛或者交流社区 例如,thinkface。

    数据量 越大越好,至少以万为单位。

    下载包含有人脸的原始数据,标注保存的格式: 路径/***.jpg 40,60,250,300

    实战项目是一个二分类项目,第一类是人脸,第二类是非人脸(只要不是人脸都可以)

    对于正样本的制作: 对于原始数据,根据标注的坐标和OpenCV把人脸裁剪出来,完成正样本的制作。在完成裁剪之后,需要人工地对数据进行检查,如果存在问题,要对数据进行数据清洗。对于负样本的制作 在原始数据上进行一个随机地裁剪,设定IOU(Intersection over Union)< 0.3 为一个负样本,但是这种方法可能存在将人脸数据裁剪成负样本,所以可以另外寻找不包含人脸的图像数据来制作负样本。
    制作LMDB数据源

    (一种Caffe支持的用于分类的数据源)

    制作LMDB准备: 将制作的人脸正样本数据分成两部分,一部分用于训练,一部分用于验证,通常训练样本个数远远大于验证样本个数;负样本数据也按照同样的方式分成两部分。分好的数据分别放于train和val文件夹下,train文件夹包含0和1两个子文件夹,分别放置用于训练的负样本和正样本,val文件夹下放置验证集。将数据分好之后,我们还需要写两个txt文档(脚本实现),train.txt和val.txt,对应作为训练集和验证集的标签。 制作LMDB数据源,用caffe提供的脚本文件进行制作。 #!/usr/bin/env sh # Create the face_48 lmdb inputs # N.B. set the path to the face_48 train + val data dirs EXAMPLE=/home/×××/face_detect DATA=/home/×××/face_detect TOOLS=/home/×××/caffe/build/tools TRAIN_DATA_ROOT=/home/×××/face_detect/train/ VAL_DATA_ROOT=/home/×××/face_detect/val/ # Set RESIZE=true to resize the images to 60 x 60. Leave as false if images have # already been resized using another tool. RESIZE=true if $RESIZE; then RESIZE_HEIGHT=227 RESIZE_WIDTH=227 else RESIZE_HEIGHT=0 RESIZE_WIDTH=0 fi if [ ! -d "$TRAIN_DATA_ROOT" ]; then echo "Error: TRAIN_DATA_ROOT is not a path to a directory: $TRAIN_DATA_ROOT" echo "Set the TRAIN_DATA_ROOT variable in create_face_48.sh to the path" \ "where the face_48 training data is stored." exit 1 fi if [ ! -d "$VAL_DATA_ROOT" ]; then echo "Error: VAL_DATA_ROOT is not a path to a directory: $VAL_DATA_ROOT" echo "Set the VAL_DATA_ROOT variable in create_face_48.sh to the path" \ "where the face_48 validation data is stored." exit 1 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/face_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/face_val_lmdb echo "Done." Status API Training Shop Blog About

    执行脚本文件,完成人脸LMDB数据源的制作。

    Processed: 0.531, SQL: 9