MXnet-arcface数据集准备

众所周知,mxnet是一个沐神主导开发的一个深度学习框架,之前听李沐的讲论文时也听他说过很多次,但是已知没有机会使用,最近接触了一个项目,有机会感受了一些mxnet,但是也踩了很多坑。所有需要的脚本文件可以在https://github.com/StudyingLover/menet-Arcface-tools下载

image.png

mxnet 的数据与别处的是不同的,他的训练集是两个文件,分别以.idx.rec 结尾, 测试集是以.bin 结尾的一个二进制文件。

创建lst,idx,rec

我们需要按照特定方式放置图片,首先创建一个大的文件夹,里面创建一个个子文件夹,每个文件夹放置相同类别的图片

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/image_folder
├── 0_0_0000000
│   ├── 0_0.jpg
│   ├── 0_1.jpg
│   ├── 0_2.jpg
│   ├── 0_3.jpg
│   └── 0_4.jpg
├── 0_0_0000001
│   ├── 0_5.jpg
│   ├── 0_6.jpg
│   ├── 0_7.jpg
│   ├── 0_8.jpg
│   └── 0_9.jpg
├── 0_0_0000002
│   ├── 0_10.jpg
│   ├── 0_11.jpg
│   ├── 0_12.jpg
│   ├── 0_13.jpg
│   ├── 0_14.jpg
│   ├── 0_15.jpg
│   ├── 0_16.jpg
│   └── 0_17.jpg
├── 0_0_0000003
│   ├── 0_18.jpg
│   ├── 0_19.jpg
│   └── 0_20.jpg
├── 0_0_0000004

接下来先生成一个.lst 文件,这个文件包含了所有的文件,训练集和测试集按照8:2划分

1
python -m mxnet.tools.im2rec --list --recursive train 图片文件夹 –test-ratio 0.8

这段代码会生成两个文件夹train_train.lsttrain_test.lst

生成训练集文件

接下来生成训练集文件

1
python -m mxnet.tools.im2rec train_train.lst --quality 100 图片文件夹

需要给生成的文件改个名字

1
2
mv train_train.idx train.idx
mv train_train.rec train.rec

下面创建property配置文件

1
训练集图片数量 图片大小 图片大小

例如

1
10000 112 112

创建pair文件

这一步多少有点奇怪,pair文件里面的结构是

1
2
img1_path img2_path 0
img3_path img4_path 1
生成方式也很简单啦,运行
1
python3 generate_image_pairs.py --data-dir 图片文件夹路径 --outputtxt train.txt --num-samepairs 3000
num-samepairs 是个魔数,看心情写吧,这里我为了大量生成,我又写了个脚本,重复执行
1
2
3
python repeat_cmd.py
python detele_empty.py
cp train.txt 图片文件夹

生成验证集bin

1
python lfw2pack.py --data-dir 图片文件夹 --output test.bin --num-samepairs 300

ok就这样,我们生成了需要的train.idx train.rec,test.bin


MXnet-arcface数据集准备
https://studyinglover.com/2023/05/08/MXnet-arcface数据集准备/
作者
StudyingLover
发布于
2023年5月8日
许可协议