本来是想在电脑上跑一下Gen6d的,所以就在之前的文章配置了深度学习的环境, 导致我的Gen6d文件夹没有放在虚拟环境中,不过没什么影响。

下载的安装包

Gen6d: 官方源文件 code和dataset

colmap

CloudCompare - Downloads 点云文件处理软件

Ffmpeg 安装教程 

Pytorch3d

我的网盘分享:
链接: https://pan.baidu.com/s/1M7DPBFXcAzW-kwLiQA8QLg?pwd=qypf 提取码: qypf

之前的文章在虚拟环境中安装了Cuda,可以参考下面这篇文章再系统中安装Cuda:cuda

Pytorch3d安装

在windows环境下安装pytorch3d(强推)

1、之前的文章配置了pytorch,首先激活虚拟环境

conda activate 虚拟环境的名字

2、安装pytorch3d的依赖包

conda install -c fvcore -c iopath -c conda-forge fvcore iopath

conda install jupyter

pip install scikit-image matplotlib imageio plotly opencv-python

pip install black usort flake8 flake8-bugbear flake8-comprehensions

3、安装NVIDIA CUB

根据自己的cuda tookit版本选择对应的cub realase版本 :下载,看下面这图下载对应的版本,我cuda11.3下载的CUB是1.11.0版本的。

将下载好的CUB压缩包,解压一下,添加系统变量

4、编译器

建议下载visual studio 2019,网盘里面有安装包。

5、下载Pytorch3d

找到于自己的pytroch兼容的版本,直接下载压缩包,不要解压在中文路径之下

6、编译pytorch3d

打开如下终端,这个是安装vs2019 自动安装的

激活虚拟环境

conda activate torch1.10

 切换文件夹

#自己的文件目录

cd D:\DeepStudy\pytorch3d-0.6.1

配置visual studio环境变量

set DISTUTILS_USE_SDK=1
set MSSdk=1

编译

python setup.py install

编译完成之后,检查conda包

conda list

安装完成 

测试

import torch

from pytorch3d.structures import Meshes

from pytorch3d.utils import ico_sphere

# 创建一个简单的3D球体

sphere_mesh = ico_sphere(3, device=torch.device("cuda"))

# 打印球体的顶点和面信息

print("顶点坐标:", sphere_mesh.verts_packed())

print("面索引:", sphere_mesh.faces_packed())

输出结果

 终端的警告没有影响,之前改了一下依赖包版本消失了,后来又有了,有大佬知道的话,可以告诉我一下怎么回事。

个人数据集

官方的数据集测试可以参考文章最后的参考教程和官方的教程:官方参考

数据集制作可以参考下面这篇

【6D位姿估计】【深度学习】Gen6D个人数据集制作(详细)-CSDN博客

1、下载安装colmap软件。下载链接【colmap

下载之后直接解压,双击文件中的colmap,显示如下界面

Path中添加环境变量

再之前下载好的Gen6d文件夹中新建data文件夹。如果想使用官方数据集的话直接下载

在data目录下新建custom文件夹,用于放置个人测试数据集,按照以下组织结构放置:

Gen6D
|-- data
    |-- model
    |-- GenMOP
    |-- LINEMOD
    |-- custom
        |-- yuguigou
            ...
 

2、在custom中新建video文件夹,存放拍摄的视频Gen6D\data\custom\video

拍摄视频的目标对象一定是要静止的,假如目标对象没有纹理,那背景的纹理必须要足够丰富。

# 激活虚拟环境
conda activate gen6d
# 进入Gen6D工程目录下
cd XXX
# 分割视频
# --transpose 解决图片颠倒
python prepare.py --action video2image --input data/custom/video/XXX.mp4 --output data/custom/XXX/images --frame_inter 10 --image_size 960 --transpose
# eg:python prepare.py --action video2image --input data/custom/video/duanzi.mp4 --output data/custom/duanzi/images --frame_inter 10 --image_size 960 --transpose

3、恢复相机姿势

# colmap假如没有添加环境变量就需要colmap.bat的完整路径(原作者这里写的是colmap.exe的路径,但是运行会报错,打不开colmap)

python prepare.py --action sfm --database_name custom/XXX--colmap <colmap.bat路径地址>

# eg:python prepare.py --action sfm --database_name custom/duanzi --colmap D:\DeepStudy\COLMAP\colmap.bat

这里我有个疑问为什么先用的是集成显卡的GPU,不够用才用NVIDA 独显的。

运行完成之后生成一个colmap文件夹

4、剪裁点云,确定Z正方向和Z正方向

使用CloudCompare打开Gen6D/data/custom/duanzi/colmap/pointcloud.ply

手动绘制目标区域:裁剪目标对象点云。

将裁剪后的目标对象点云导出:需要取消remaining部分,只选择segmented,用binary格式保存在Gen6D/data/custom/duanzi/目录下,命名为object_point_cloud.ply(名字不要修改)。

指定目标对象的X正方向和Z正方向

使用CloudCompar打开刚保存的Gen6D/data/custom/duanzi/object_point_cloud.ply。

1)Z正方向的向量:拟合一个平面,其法线作为Z正方向的向量。
同样先裁剪一片区域:

 只选择Tools—>Fit—>Plane拟合一个目标物体放置(平行)的水平面,使用其法线作为Z正方向的向量。

拟合平面是根据所有选中点云拟合的,因此点云的选取十分关键。我尝试了拍了两个视频,做出来效果比较一般,可能是拍的视频不好

2)X正方向的向量:通过选择俩个点计算出X正方向的向量。

在Gen6D/data/custom/duanzi/目录下创建meta_info.txt将X正方向和Z正方向记录下来(ctrl+c复制)。

5、生成识别后的视频

# 假如没有添加环境变量就需要ffmpeg.exe的完整路径
# --transpose 解决图片颠倒
python predict.py --cfg configs/gen6d_pretrain.yaml --database custom/XXX --video data/custom/video/XXX.mp4 --resolution 960 --transpose --output data/custom/XXX/test --ffmpeg ffmpeg.exe
# eg: python predict.py --cfg configs/gen6d_pretrain.yaml --database custom/duanzi --video data/custom/video/duanzi.mp4 --resolution 960 --transpose --output data/custom/duanzi/test --ffmpeg D:/DeepStudy/ffmpeg/bin/ffmpeg.exe

我尝试了两次,第一次效果能圈到,第二次圈不住和自己的有制作的视频有关系。

这两天又划水了。

参考教程

【深度学习】【三维重建】windows10环境配置PyTorch3d详细教程-CSDN博客

【6D位姿估计】【深度学习】windows10下Gen6D代码Pytorch实现-CSDN博客

【三维重建】【深度学习】【数据集】基于COLMAP制作个人Gen6D测试数据集_gen6d自定义数据集-CSDN博客

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐