Interspecies Knowledge Transfer for Facial Keypoint Detection关键点检测
Github地址:Interspecies Knowledge Transfer for Facial Keypoint Detection(迁移学习检测动物头部关键点)
基于torch进行论文中想法的实现
1. Torch的安装部分
不得不说torch要比caffe好配置多了,emm , 祝愿你们可以一次性顺利配置好,话不多说开始了
Torch的github库https://github.com/torch/distro
git clone https://github.com/torch/distro.git ~/torch --recursive
# 国内git clone特别慢,建议参考前一篇博客https://www.cnblogs.com/pprp/p/9450512.html进行加速,或者采用我的git lab(git clone https://gitlab.com/pprp/distro.git ~/torch --recursive)
# 假设在~/torch下进行配置,你也可以更改位置
cd ~/torch
# 安装依赖(如果失败了,记得查看有哪些失败了,然后手动重装)
bash install-deps
# 安装
./install.sh
source ~/.bashrc
uninstall 卸载
rm -rf ~/torch
./clean.sh
可以使用命令行中的Luarocks安装新软件包:
# run luarocks WITHOUT sudo
$ luarocks install image
$ luarocks list
安装完成后,您可以使用命令来运行火炬th
Th简介详细介绍
$ th
______ __ | Torch7
/_ __/__ ________/ / | Scientific computing for Lua.
/ / / _ / __/ __/ _ |
/_/ \___/_/ \__/_//_/ | https://github.com/torch
| http://torch.ch
th> torch.Tensor{1,2,3}
1
2
3
[torch.DoubleTensor of dimension 3]
th>
要退出交互式会话,请键入^c
两次 - 控制键以及c
键,两次或键入os.exit()
。一旦用户输入了完整的表达式,例如1 + 2
,并且命中输入,交互式会话将评估表达式并显示其值。
要评估在源文件file.lua
中编写的表达式,请编写 dofile "file.lua"
。
要以非交互方式在文件中运行代码,可以将其作为th
命令的第一个参数::
$ th file.lua
有多种方法可以运行Lua代码并提供选项,类似于可用于perl
和ruby
程序的选项:
$ th -h
Usage: th [options] [script.lua [arguments]]
Options:
-l name load library name
-e statement execute statement
-h,--help print this help
-a,--async preload async (libuv) and start async repl (BETA)
-g,--globals monitor global variables (print a warning on creation/access)
-gg,--gglobals monitor global variables (throw an error on creation/access)
-x,--gfx start gfx server and load gfx env
-i,--interactive enter the REPL after executing a script
2. 具体用法
Update
To update your already installed distro to the latest master
branch of torch/distro
simply run:
./update.sh
Cleaning
To remove all the temporary compilation files you can run:
./clean.sh
To remove the installation run:
# Warning: this will remove your current installation
rm -rf ./install
You may also want to remove the torch-activate
entry from your shell start-up script (~/.bashrc
or ~/.profile
).
Test
You can test that all libraries are installed properly by running:
./test.sh
3. 继续配置animal_human_kp
1. 安装一些其他配置
Install Torch requirements:
luarocks install torchx
- npy4th (You may need to checkout commit from 5-10-16)
git clone https://github.com/htwaijry/npy4th.git
cd npy4th
luarocks make
Install Python requirements if needed:
Install the Spatial Tranformer module provided:
cd stnbhwd-master
luarocks make
2. 数据集
cd ~/animal_human_kp
cd data
wget https://www.dropbox.com/s/9t770jhcjqo3mmg/release_data.zip
unzip *.zip
3.模型下载
cd ~/animal_human_kp
cd models
wget https://www.dropbox.com/s/44ocinlmx8mp8v2/release_models.zip
unzip *.zip
4. 开始数据的测试
cd ~/animal_human_kp
mkdir output
cd torch
th test.th -out_dir_images ../output/
打开output文件夹
#会出现一些结果文件
results.html
stats.txt
bar.pdf
5. 训练模型
开始训练整个模型:
cd torch
th train_full_model.th
训练翘曲网络:
th torch/train_warping_net.th
测试数据的调整:
解释参数:
Options
-mean_im_path mean image for image preprocessing for keypoint network training [../data/aflw_cvpr_224_mean.png]
-std_im_path std image for image preprocessing for keypoint network training [../data/aflw_cvpr_224_std.png]
-limit num of test data to read. negative means all [-1] # 设置多少张图片测试,-1代表全部
-val_data_path validation data file path [../data/our_horse.txt] # 设置读取图片的路径以及对应的npy文件的路径
-model_path [../models/horse_full_model_tps.dat] # 训练生成模型的位置
-out_dir_images [../scratch/test_images] # 结果的输出
-gpu gpu to run the training on [1] # 选取哪个gpu
-iterations num of iterations to run [2] # 设置迭代的层数
-batchSize batch size [100]
-bgr [true]
-face true if testing a model with no warping network [false]
在/animal_human_kp/torch test.th
中找到-val_data_path的设置,修改为需要的txt形式,
其中对应文件的形式为 对应的图片地址+空格+对应的npy文件地址
合成代码如下:
cd /animal_human_kp/data/horse/im/ inria-horses
# 生成完整的路径
ls | sed "s:^:`pwd`/:" > test_minLoss_horse.txt
cp test_minLoss_horse.txt test_minLoss_horse_npy.txt
# 然后通过vim的替换命令s进行替换,以下是一个示例
vim test_minLoss_horse_npy.txt
:%s/im/npy/ig
:%s/jpg/npy/ig
# 将两个文件进行合成
paste -d' ' test_minLoss_horse.txt test_minLoss_horse_npy.txt > our_horse.txt
# 注意最后再次检查合成文件的内容,进行排查
将our_horse.txt放到/animal_human_kp/data文件下
然后到torch文件夹下运行代码:
# out 是我新建的文件夹,你也可以指定到你需要的位置
th test.th -out_dir_images ../out -val_data_path ../data/our_horse.txt -iterations 100