HOITrans 记录自己第一次使用服务器跑深度学习代码


前言

第一次在服务器跑深度学习模型,踩了挺多的坑,也想写一个博客来记录下这个过程,希望自己以后复现论文的道路越来越顺利。


一、准备工作

论文:End-to-End Human Object Interaction Detection with HOI Transformer
代码:https://github.com/bbepoch/HoiTransformer

二、环境搭建

1.搭建服务器平台

VScode服务器搭建

用vscode连接学校的服务器需要使用学校vpn easyconnect
登上去后 输入ssh命令以及密码 配置文件选择默认 建好之后就会出现ip地址(记得刷新一下)
接下来就跟本地运行一样了。

FileZilla

新建站点 建立连接 就可以从本地传文件到服务器了
由于有些数据集较大,使用wget命令在服务器上下载可能会中断,又或者像gdown(从google云盘下载文件的命令)在服务器上使用不了。因此建议数据集及github上的代码先在本地下载好了,再上传至服务器。

配置conda

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/

2.搭建Python环境平台

硬件/系统:服务器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一下就解决了,所以以后跑代码先看看有没有前人跑过做过总结吧,能少走点弯路就少走点,当然配环境的路还有很长要走,还是得经历的。

三.复现过程

1.克隆代码

建议直接下载zip压缩包 解压完了使用FileZilla上传至服务器

2.下载使用MS-COCO预训练的DETR模型

&&表示同时执行两个命令,第一个命令式切换目录,第二个是用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是可以下载的。

3.下载HICO-DET, V-COCO 和HOI-A的注释文件

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文件,之前就是不小心误删了数据集导致找不到数据集还又传了一次

4.下载数据集

cd data && bash download_images.sh

下载下来的HICO数据集是tar.gz格式的需要使用tar -xzf命令解压。

tar -xzf /home/jxy/program/HoiTransformer-master/data/hico_20160224_det.tar.gz

5.安装相关依赖

pip install -r requirements.txt
pip install pythonpy
conda install pandas
pip install opencv-python #opencv要用这条命令,不是cv2

报什么错就装什么包,貌似conda install不好用 这里直接用pip install下载的

6.可以把数据移到服务器机械硬盘上,只在目录下映射一个地址(可省略)

mv data /home/hoi/
ln -s /home/hoi/data data

7.训练模型

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

8.测试模型

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

猜你喜欢

转载自blog.csdn.net/weixin_62501745/article/details/128449751
今日推荐