第一次在服务器跑深度学习模型,踩了挺多的坑,也想写一个博客来记录下这个过程,希望自己以后复现论文的道路越来越顺利。
论文:End-to-End Human Object Interaction Detection with HOI Transformer
代码:https://github.com/bbepoch/HoiTransformer
用vscode连接学校的服务器需要使用学校 easyconnect
登上去后 输入ssh命令以及密码 配置文件选择默认 建好之后就会出现ip地址(记得刷新一下)
接下来就跟本地运行一样了。
新建站点 建立连接 就可以从本地传文件到服务器了
由于有些数据集较大,使用wget命令在服务器上下载可能会中断,又或者像gdown(从google云盘下载文件的命令)在服务器上使用不了。因此建议数据集及github上的代码先在本地下载好了,再上传至服务器。
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh
cd /home/jxy/env/conda
bash Miniconda3-latest-Linux-x86_64.sh
cd .\
source ~/.bashrc
vim /etc/profile
export PATH="/public/software/apps/miniconda3/bin:$PATH"
source /etc/profile
export PATH="/public/software/apps/miniconda3/bin:$PATH"
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
硬件/系统:服务器GPU3090 CUDA Version: 11.6
一开始搭建环境的时候还遇到了版本的问题
由于服务器里的CUDA版本是11.6,我就按照pytorch官方给的命令来下载对应的版本,但是这个版本太新了,以至于不能适配github作者的代码,出现了很多像下图的报错信息。
结果是不用管服务器里的CUDA版本,在虚拟环境里重新安装代码要求的cuda版本就可以了。
github官方给的环境要求如下
cython
torch>=1.5.0
torchvision>=0.6.0
scipy
所以就要求我们,不能高于作者的版本太多,给torch>=1.5.0装个1.10意思意思得了
另外 torch和torchvision的版本也要对应上,这个可以在torch官网里查看。
虚拟环境:Python 3.6.15 ,torch1.10.0+cu113
创建虚拟环境
conda create -n torch1.10 python=3.6
查看python版本 终端输入
python --version
# Python 3.6.15
查看torch版本:
python
import torch
print(torch.__version__)
# 1.10.0+cu113
下载torch对应版本
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
这里自己摸索了好久,看到这个blog一下就解决了,所以以后跑代码先看看有没有前人跑过做过总结吧,能少走点弯路就少走点,当然配环境的路还有很长要走,还是得经历的。
建议直接下载zip压缩包 解压完了使用FileZilla上传至服务器
&&表示同时执行两个命令,第一个命令式切换目录,第二个是用bash执行download_model.sh里的命令
cd /home/jxy/program/HoiTransformer-master/data/detr_coco && bash download_model.sh
download_model.sh里的命令如下
wget https://dl.fbaipublicfiles.com/detr/detr-r50-e632da11.pth
wget https://dl.fbaipublicfiles.com/detr/detr-r101-2c7b67e5.pth
wget是可以下载的。
cd /home/jxy/program/HoiTransformer-master/data && bash download_annotations.sh
download_annotations.sh命令如下
# download hico.zip
gdown 'https://drive.google.com/uc?id=1BanIpXb8UH-VsA9yg4H9qlDSR0fJkBtW'
unzip hico.zip
# download hoia.zip
gdown 'https://drive.google.com/uc?id=1OO7fE0N71pVxgUW7aOp7gdO5dDTmkr_v'
unzip hoia.zip
# download vcoco.zip
gdown 'https://drive.google.com/uc?id=1vWVScXPsu0KVMtXW8QdLjb25NGLzEPhN'
unzip vcoco.zip
rm -rf *.zip
试了一下gdown,这条命令是没有办法在服务器上下载的,还是需要在本地下载完后上传至服务器对应位置。
注意,这个文件里有rm -rf *.zip
会删除你目录里的所有zip文件,之前就是不小心误删了数据集导致找不到数据集还又传了一次
cd data && bash download_images.sh
下载下来的HICO数据集是tar.gz格式的需要使用tar -xzf
命令解压。
tar -xzf /home/jxy/program/HoiTransformer-master/data/hico_20160224_det.tar.gz
pip install -r requirements.txt
pip install pythonpy
conda install pandas
pip install opencv-python #opencv要用这条命令,不是cv2
报什么错就装什么包,貌似conda install不好用 这里直接用pip install下载的
mv data /home/hoi/
ln -s /home/hoi/data data
python3 -m torch.distributed.launch --nproc_per_node=1 --use_env main.py --epochs=150 --lr_drop=110 --dataset_file=hico --batch_size=2 --backbone=resnet50
nproc_per_node
表示使用的GPU数量,会稍微影响准确率。
查看服务器使用情况 nvidia-smi
每秒查看一次 watch -n 1 nvidia-smi
在训练的过程中,会遇到关掉VScode就会停止运行代码的情况,这时候就要使用tmux来让程序在后台运行。
下载tmux需要用到管理员的账户和密码,但只是使用不需要。
tmux new -s HOItrans
tmux ls
tmux attach -t HOItrans
python3 test.py --backbone=resnet50 --batch_size=1 --dataset_file=hico --log_dir=./ --model_path=/home/jxy/program/HoiTransformer-master/checkpoint/p_202212110053/checkpoint0149.pth
测试结果
final_report.txt
mAP Full: 0.2493814180286457
mAP rare: 0.15606208638526872 mAP nonrare: 0.2772560235844596
mAP inter: 0.2702455741938609 mAP noninter: 0.11376440295474695
max recall: 0.5146250156071043