用shell 脚本创建lfw的正负样本对

我们在lfw上做测试的时候,第一步就是创建lfw正负样本对。

现在总结如下

#!/bin/bash
# create the lfw postive pairs
# usage: In this file ,you should create a lfw_name_list.txt (13233 lines)
#        for each line in lfw_name_list.txt ,format should be as :
#        number name_0001.jpg :
#   eg:  13202  Zhang_Ziyi_0003.jpg
#        the only change you may do in this file is :
#        yourNameList="lfw_name_list.txt" 
#    
#        output: POSTIVE_PAIR.txt & NEGATIVE_PAIR.txt 
# tricy: how to add number at begin of you own *.txt
#        :let i=1
#        :g/^/ s//\=i . ' '/ |let i=i+1
#
# Author: bin.wang
# Date  : 2016/12/19

     echo "preparing pos_result.txt..."
     cat ./pos_pairs.txt | awk '{print $1}'                 > ./leftImge_pos_p1.txt
     cat ./pos_pairs.txt | awk '{printf("_%04d.jpg\n",$2)}' > ./leftImge_pos_p2.txt

     cat ./pos_pairs.txt | awk '{print $1}'                 > ./rightImge_pos_p1.txt
     cat ./pos_pairs.txt | awk '{printf("_%04d.jpg\n",$3)}' > ./rightImge_pos_p2.txt

     paste leftImge_pos_p1.txt  leftImge_pos_p2.txt --delimiters=""  > leftImage_pos.txt
     paste rightImge_pos_p1.txt rightImge_pos_p2.txt --delimiters="" > rightImage_pos.txt
     paste leftImage_pos.txt rightImage_pos.txt --delimiters="    " > pos_result.txt
     echo "pos_result.txt done !!!"
# create the lfw negative pairs
#
     echo "preparing neg_resut.txt..."
     cat ./neg_pairs.txt | awk '{print $1}'                  > ./leftImage_neg_p1.txt
     cat ./neg_pairs.txt | awk '{printf("_%04d.jpg\n",$2)}'  > ./leftImage_neg_p2.txt

     cat ./neg_pairs.txt | awk '{print $3}'                  > ./rightImge_neg_p1.txt
     cat ./neg_pairs.txt | awk '{printf("_%04d.jpg\n",$4)}'  > ./rightImge_neg_p2.txt


     paste rightImge_neg_p1.txt rightImge_neg_p2.txt --delimiters="" > rightIamge_neg.txt
     paste leftImage_neg_p1.txt leftImage_neg_p2.txt --delimiters="" > leftImage_neg.txt

     paste leftImage_neg.txt rightIamge_neg.txt --delimiters="    "    > neg_result.txt #delimiters=4 backSpace
     echo "neg_result.txt done !!!"

rm -rf  *_neg.txt *_pos.txt
rm -rf  *p1.txt *p2.txt
rm -rf num1.txt num2.txt
#############################
i=0 #for debug
yourNameList="./lfwlists.txt"
cat pos_result.txt | while read line
do
     i=`expr $i + 1`

     right_pos_pair=""   
     left_pos_pair=""    

     eval $(echo $line |awk '{printf("left_pos_pair=%s;right_pos_pair=%s;",$1,$2)}')
     cat $yourNameList | grep " $left_pos_pair"  |  awk '{print $1}' >> num1.txt   
     cat $yourNameList | grep " $right_pos_pair" |  awk '{print $1}' >> num2.txt

done

paste num1.txt num2.txt  --delimiters=" " >POSTIVE_PAIR.txt
#########################################################################################
echo " You may wait a few minutes ..."
j=0
cat neg_result.txt | while read line
do
    j=`expr $j + 1`
    left_neg_pair=""
    right_neg_pair=""

    eval $(echo $line |awk '{printf("left_neg_pair=%s;right_neg_pair=%s;",$1,$2)}')

    cat $yourNameList | grep " $left_neg_pair"  |  awk '{print $1}' >> num3.txt   
    cat $yourNameList | grep " $right_neg_pair" |  awk '{print $1}' >> num4.txt
done
paste num3.txt num4.txt --delimiters=" " >NEGATIVE_PAIR.txt
rm -rf num1.txt num2.txt num3.txt num4.txt

############################################################################

cp POSTIVE_PAIR.txt NEGATIVE_PAIR.txt ../test_lfw/featureMat/
echo "DONE!"

Notice: 这个shell脚本需要的输入: neg_pairs.txt pos_pairs.txt

格式为

【pos_pairs.txt】 

   1 Abel_Pacheco    1   4                                                                                          
   2 Akhmed_Zakayev  1   3
   3 Akhmed_Zakayev  2   3
   4 Amber_Tamblyn   1   2
   5 Anders_Fogh_Rasmussen   1   3
   6 Anders_Fogh_Rasmussen   1   4
   7 Angela_Bassett  1   5
   8 Angela_Bassett  2   5
   9 Angela_Bassett  3   4
  10 Ann_Veneman 3   5
  11 Ann_Veneman 6   10
  12 Ann_Veneman 10  11
  ...
  ...
【neg_pairs.txt】 

   1 Abdel_Madi_Shabneh  1   Dean_Barker 1                                                                          
   2 Abdel_Madi_Shabneh  1   Giancarlo_Fisichella    1
   3 Abdel_Madi_Shabneh  1   Mikhail_Gorbachev   1
   4 Abdul_Rahman    1   Portia_de_Rossi 1
   5 Abel_Pacheco    1   Jong_Thae_Hwa   2
   6 Abel_Pacheco    2   Jean-Francois_Lemounier 1
   7 Afton_Smith 1   Dwayne_Wade 1
   8 Ahmad_Jbarah    1   James_Comey 1
   9 Akhmed_Zakayev  2   Donna_Morrissey 1
  10 Alan_Dershowitz 1   Bertrand_Bonello    1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MTCNN(Multi-Task Cascaded Convolutional Networks)是一种用于人脸检测的深度学习算法,在实际应用中具有较高的准确率和速度。如果你想使用lfw数据集来训练MTCNN模型,可以按照以下步骤进行: 1. 准备数据集 LFW数据集是一个包含多个人的人脸图像数据集,你需要将其转换为适合训练MTCNN的数据集格式,即包含人脸框和关键点标注信息的图片和标注文件。可以使用LFW数据集的官方代码进行转换。 2. 安装MTCNN 可以使用Python的pip包管理器安装MTCNN模块: ``` pip install mtcnn ``` 3. 训练模型 使用MTCNN模块提供的train函数进行训练,示例代码如下: ```python from mtcnn import train # 加载数据集 dataset = load_dataset('path/to/dataset') # 设置训练参数 model = train('path/to/save/model', dataset, batch_size=32, epochs=100) # 保存训练好的模型 model.save('path/to/save/model') ``` 4. 测试模型 使用MTCNN模块提供的detect_faces函数进行测试,示例代码如下: ```python from mtcnn import MTCNN import cv2 # 加载训练好的模型 mtcnn = MTCNN() mtcnn.load_model('path/to/saved/model') # 读取测试图片 img = cv2.imread('path/to/test/image') # 进行人脸检测 faces = mtcnn.detect_faces(img) # 显示检测结果 for face in faces: x, y, w, h = face['box'] cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2) for key, value in face['keypoints'].items(): cv2.circle(img, value, 2, (0, 0, 255), -1) cv2.imshow('result', img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 以上就是使用lfw数据集训练MTCNN模型的大致流程。需要注意的是,MTCNN模型的训练是一个比较耗时的过程,需要具备一定的计算资源和时间。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值