Project Icon

neurvps

神经消失点扫描算法及其实现

NeurVPS是一种用于图像消失点检测的深度学习算法。该算法采用几何启发的卷积运算符,结合数据驱动方法和几何先验,在多个数据集上超越了现有方法。项目提供PyTorch实现,包含模型训练、评估和预训练模型,便于研究人员复现实验。

NeurVPS: 基于圆锥卷积的神经消失点扫描

本仓库包含论文《NeurVPS: 基于圆锥卷积的神经消失点扫描》的官方PyTorch实现。作者:Yichao ZhouHaozhi QiJingwei HuangYi Ma。NeurIPS 2019。

简介

NeurVPS是一个端到端可训练的深度网络,它使用几何启发的卷积算子来检测图像中的消失点。结合数据驱动方法和几何先验的优势,NeurVPS能够超越之前最先进的消失点检测方法,如LSD/J-LinkageContour (TMM17)

主要结果

定性评估

随机采样的结果可以在论文的补充材料中找到。

定量评估

这里,x轴表示检测到的消失点的角度精度,y轴表示误差小于该值的结果的百分比。我们的圆锥卷积网络优于所有基准方法和之前最先进的消失点检测方法,而简单的CNN实现可能会表现不如这些传统方法,尤其是在高精度区域。

代码结构

以下是每个文件功能的快速概览。

########################### 数据 ###########################
data/                           # 存放数据的默认文件夹
    su3/                        # SU3数据集文件夹
    tmm17/                      # TMM17数据集文件夹
    scannet-vp/                 # ScanNet数据集文件夹
logs/                           # 训练过程中存储输出的默认文件夹
########################### 代码 ###########################
config/                         # 神经网络超参数和配置
    su3.yaml                    # SU3数据集的默认参数
    tmm17.yaml                  # TMM17数据集的默认参数
    scannet.yaml                # scannet数据集的默认参数
dataset/                        # 所有与数据生成相关的脚本
    su3.py                      # 预处理SU3数据集为npz的脚本
misc/                           # 不太重要的杂项脚本
    find-radius.py              # 生成图形网格的脚本
neurvps/                        # neurvps模块,可以在其他脚本中"import neurvps"
    models/                     # 神经网络架构
        cpp/                    # 可变形卷积的CUDA内核
        deformable.py           # 可变形卷积层的Python包装器
        conic.py                # 圆锥卷积层
        hourglass_pose.py       # 骨干网络
        vanishing_net.py        # 主网络
    datasets.py                 # 读取训练数据
    trainer.py                  # 训练器
    config.py                   # 配置的全局变量
    utils.py                    # 杂项函数
train.py                        # 训练神经网络的脚本
eval.py                         # 从检查点评估数据集的脚本

复现结果

安装

为了便于复现,建议您在执行以下命令之前安装miniconda(或者如果您喜欢的话,可以安装anaconda)。

git clone https://github.com/zhou13/neurvps
cd neurvps
conda create -y -n neurvps
source activate neurvps
# 将cudatoolkit=10.1替换为您的CUDA版本:https://pytorch.org/get-started/
conda install -y pytorch cudatoolkit=10.1 -c pytorch
conda install -y tensorboardx gdown -c conda-forge
conda install -y pyyaml docopt matplotlib scikit-image opencv tqdm
mkdir data logs

下载处理好的数据集

确保您的系统已安装curl,然后执行

cd data
wget https://huggingface.co/yichaozhou/neurvps/resolve/main/Data/scannet-vp/scannet-vp.z0{1..7}
wget https://huggingface.co/yichaozhou/neurvps/resolve/main/Data/scannet-vp/scannet-vp.zip
zip -FF scannet-vp.zip --out scannet-vp-full.zip
unzip -FF scannet-vp-full.zip
wget https://huggingface.co/yichaozhou/neurvps/resolve/main/Data/su3.tar.xz
wget https://huggingface.co/yichaozhou/neurvps/resolve/main/Data/tmm17.tar.xz
tar xf su3.tar.xz
tar xf tmm17.tar.xz
rm *.tar.xz *.z*
cd ..

或者,您可以从我们的Hugging Face仓库手动下载处理好的数据集,然后相应地进行操作。

训练

执行以下命令,使用默认参数在2个GPU(GPU 0和GPU 1,通过-d 0,1指定)上从头开始训练神经网络:

python ./train.py -d 0,1 --identifier su3 config/su3.yaml
python ./train.py -d 0,1 --identifier tmm17 config/tmm17.yaml
python ./train.py -d 0,1 --identifier scannet config/scannet.yaml

检查点和日志将相应地写入logs/目录。

注意: 对于TMM17数据集,由于其规模较小,模型对初始化更为敏感。您可能需要多次训练才能达到与预训练模型相同的性能。对于SU3,有报告称使用4个GPU训练可能会比论文中报告的性能更高,尽管训练过程更不稳定。

预训练模型

您可以从我们的Hugging Face仓库下载我们的参考预训练模型。这些预训练模型应该能够重现我们论文中的数据。

评估

执行以下命令,使用训练好的网络检查点计算并绘制角度精度(AA)曲线:

python eval.py -d 0 logs/YOUR_LOG/config.yaml logs/YOUR_LOG/checkpoint_best.pth.tar

常见问题

我想要一个关于消失点的快速教程。

答: 我有一篇关于消失点和"高斯球表示"的博客文章。

我不理解你们的消失点格式。

答: 取消注释这些行这些行以可视化叠加在2D图像上的消失点。

yaml中焦距的单位是什么,为什么我需要它?

答: 在我们的实现中,焦距的单位是2/w像素(w是图像宽度,仅支持方形图像)。这遵循OpenGL投影矩阵的惯例,使其与分辨率无关。焦距用于均匀采样消失点的位置。如果不知道焦距,您可以为您的图像类别设置一些常见的焦距,就像我们在config/tmm17.yaml中所做的那样。

您还可以查看to_labelto_pixel函数,它们使用焦距将3D线方向从2D消失点转换过来或转换过去。

我有一个问题。如何获得帮助?

答: 您可以在Github上发布一个issue,这可能会帮助其他有同样问题的人。如果您认为更适合的话,也可以给我发送电子邮件。

致谢

我们感谢上海交通大学的李奕恺和麻省理工学院的吴嘉俊指出TMM17自然场景数据集数据增强中的一个错误。本工作得到了索尼研究院研究资助的支持。

引用NeurVPS

如果您在研究中发现NeurVPS有用,请考虑引用:

@inproceedings{zhou2019neurvps,
 author={Zhou, Yichao and Qi, Haozhi and Huang, Jingwei and Ma, Yi},
 title={{NeurVPS}: Neural Vanishing Point Scanning via Conic Convolution},
 booktitle={{NeurIPS}},
 year={2019}
}
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

稿定AI

稿定设计 是一个多功能的在线设计和创意平台,提供广泛的设计工具和资源,以满足不同用户的需求。从专业的图形设计师到普通用户,无论是进行图片处理、智能抠图、H5页面制作还是视频剪辑,稿定设计都能提供简单、高效的解决方案。该平台以其用户友好的界面和强大的功能集合,帮助用户轻松实现创意设计。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号