论文:End-to-End Human Object Interaction Detection with HOI Transformer
代码:GitHub - bbepoch/HoiTransformer: This is the code for HOI Transformer
硬件/系统:服务器GPU3090,Ubuntu20.。。(忘记了),CUDA11.2
虚拟环境:python3.6,torch1.10.0+cu113,torchaudio0.10.0+cu113,torchvision0.11.1+cu113
虚拟环境创建过程略
1.克隆代码(github难以直接克隆于是去gitee克隆了,最好克隆不要直接下载压缩包)
git clone https://gitee.com/hoi_xd/HoiTransformer
2.下载预训练模型
cd data/detr_coco && bash download_model.sh
3.下载注释文件
cd data && bash download_annotations.sh
4. 下载数据集
cd data && bash download_images.sh
5.安装相关依赖
pip install -r requirements.txt
6.可以把数据移到服务器机械硬盘上,只在目录下映射一个地址(可省略)
mv data /home/hoi/
ln -s /home/hoi/data data
7.训练模型
# Train on HICO-DET.
python3 -m torch.distributed.launch --nproc_per_node=8 --use_env main.py --epochs=150 --lr_drop=110 --dataset_file=hico --batch_size=2 --backbone=resnet50
# Train on HOI-A.
python3 -m torch.distributed.launch --nproc_per_node=8 --use_env main.py --epochs=150 --lr_drop=110 --dataset_file=hoia --batch_size=2 --backbone=resnet50
# Train on V-COCO.
python3 -m torch.distributed.launch --nproc_per_node=8 --use_env main.py --epochs=150 --lr_drop=110 --dataset_file=vcoco --batch_size=2 --backbone=resnet50
# Training longer can get even better performance.
8.测试模型
python3 test.py --backbone=resnet50 --batch_size=1 --dataset_file=vcoco --log_dir=./ --model_path=checkpoint/p_202205242249/checkpoint.pth
1、下载注释文件、部分数据集的时候,都是在driver.google上下载,会失败
解决方法:这里训练了vcoco2014,没有训练其他数据集,所有需要下载的部分直接在本机上下载好传到服务器,下载了以下三个文件,
vcoco压缩包为注释文件,挂梯子下载20M左右,网址:https://drive.google.com/uc?id=1vWVScXPsu0KVMtXW8QdLjb25NGLzEPhN
另两个数据集,可以直接下载,网址:
# File name: train2014.zip,16G
http://images.cocodataset.org/zips/train2014.zip
# File name: val2014.zip,6G
http://images.cocodataset.org/zips/val2014.zip
2、按以下目录结构,步骤6做了之后,地址会映射过来,目录结构不变
HoiTransformer/
├── data/
│ ├── detr_coco/
│ ├── hico/
│ │ ├── eval/
│ │ └── images/
│ │ ├── train2015/
│ │ └── test2015/
│ ├── hoia/
│ │ ├── eval/
│ │ └── images/
│ │ ├── trainval/
│ │ └── test/
│ └── vcoco/
│ ├── eval/
│ └── images/
│ ├── train2014/
│ └── val2014/
├── datasets/
├── models/
├── tools/
├── util/
├── engin.py
├── main.py
└── test.py
3、GPU和 pytorch算力不匹配
pytorch capability sm_86 is not compatible with the current PyTorch installation
解决方法,3090GPU,CUDA11.2 匹配pytorch版本也要高一点
所以下载cu113版本的pytorch,不用pip3下载会下载到实际anaconda环境,用pip下载
pip install torch==1.10.0+cu113 torchvision==0.11.1+cu113 torchaudio==0.10.0+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html
4、out of memory
GPU并行模式没调整好,学习怎么弄并行模式,或者直接关闭并行模式训练
# Train on V-COCO.
python main.py --epochs=150 --lr_drop=110 --dataset_file=vcoco --batch_size=2 --backbone=resnet50
经过学习学会了用分布式训练:
# 查看空余GPU,比如3,4,5,6四张卡空余
nvidia-smi
# 选择空余GPU训练
CUDA_VISIBLE_DEVICES=3,4,5,6 python3 -m torch.distributed.launch --nproc_per_node=4 --use_env main.py --epochs=150 --lr_drop=110 --dataset_file=vcoco --batch_size=2 --backbone=resnet101
并行模式学习参考:
PyTorch分布式DPP的基本概念(node&rank&local_rank&nnodes&node_rank&nproc_per_node&world_size)_hxxjxw的博客-CSDN博客_nproc_per_node
Pytorch中多GPU并行计算教程_太阳花的小绿豆的博客-CSDN博客_pytorch多gpu训练