复现GraspNet, 基于'30系显卡'
折腾了许久,终于复现,权当记个笔记,以防遗忘。
参考:https://github.com/graspnet/graspnet-baseline
0.重要
本机环境,ubuntu20.04,显卡是3080,由于graspnet是20年发布的,使用的是torch1.6,当时使用的GPU架构是compute_86,30系显卡(sm_86)无法编译通过,cuda11.3是是第一个支持30系显卡的,因此,我们需要两个cuda;
conda新建环境安装pytorch1.7,python版本3.8,下载安装torch对应的cuda11.0,cudnn8.0.1.13;
conda再新建环境安装pytorch1.13,python版本3.8,下载安装torch对应的cuda11.3;
1.拉取GraspNet
用Git拉取代码
git clone https://github.com/graspnet/graspnet-baseline.git
cd graspnet-baseline
pip安装依赖包
打开requirements.txt,修改torch==1.6为torch>=1.6,保存;注意在conda新建的pytorch1.7和pytorch1.13环境中,都需要pip安装:
pip install -r requirements.txt
编译并安装pointnet2
在torch1.13的环境中,切换到cuda11.3的 环境中
cd pointnet2
pip install .
编译并安装 knn
在torch1.7,切换到cuda11.3的环境的中
进入knn文件夹,先修改setup.py文件中部分代码:
extra_compile_args["nvcc"] = [
"-DCUDA_HAS_FP16=1",
"-D__CUDA_NO_HALF_OPERATORS__",
"-D__CUDA_NO_HALF_CONVERSIONS__",
"-D__CUDA_NO_HALF2_OPERATORS__",
"-gencode=arch=compute_86,code=sm_86"
]
修改为:
extra_compile_args["nvcc"] = [
"-DCUDA_HAS_FP16=1",
"-D__CUDA_NO_HALF_OPERATORS__",
"-D__CUDA_NO_HALF_CONVERSIONS__",
"-D__CUDA_NO_HALF2_OPERATORS__",
"-gencode=arch=compute_86,code=sm_86"
]
保存后
cd knn
pip install .
2.安装graspnetAPI
在graspnet-baseline目录下
git clone https://github.com/graspnet/graspnetAPI.git
cd graspnetAPI
修改graspnetAPI目录下的setup.py中的numpy版本修改为’numpy==1.23.5’,然后
pip install .
3.生成标签
从 Google Drive/Baidu Pan 下载
下载到graspnet-baseline目录下:
mv tolerance.tar dataset/
cd dataset
tar -xvf tolerance.tar
4.下载权重
预训练权重可以从以下位置下载:
realsense相机的相关的训练权重 checkpoint-rs.tar Google Drive /Baidu Pan
在graspnet-baseline目录下,新建目录/logs/log_kn
mkdir -p ./logs/log_kn
mv ./checkpoint-rs.tar ./logs/log_kn/checkpoint.tar
5.运行代码
sh command_demo.sh
大功告成