Project Icon

lcnn

高效的端到端线框解析神经网络

L-CNN是一种用于图像线框检测的高效神经网络。该项目在GitHub上开源了完整的PyTorch实现,包含数据处理、模型训练和评估等模块。L-CNN在多项定量指标上超越了现有方法,为线框解析领域提供了新的基准。项目还提供了预训练模型,方便研究者进行复现和进一步开发。

端到端线框解析

本仓库包含论文《端到端线框解析》的官方 PyTorch 实现,作者为 周一超、齐浩志、马毅。该论文发表于 ICCV 2019。

简介

L-CNN 是一个概念简单但有效的神经网络,用于从给定图像中检测线框。它的性能大幅超过了之前最先进的线框和线条检测器。我们希望这个仓库能作为该领域未来研究的一个易于复现的基准。

主要结果

定性评估

LSDAFMWireframeL-CNN真实标注

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

定量评估

下表报告了几种线框和线条检测器在上海科技大学数据集上的性能指标。

上海科技 (sAP10)上海科技 (APH)上海科技 (FH)上海科技 (mAPJ)
LSD/52.061.0/
AFM24.469.577.223.3
Wireframe5.167.872.640.9
L-CNN62.982.881.259.3

精确率-召回率曲线

代码结构

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

########################### 数据 ###########################
figs/
data/                           # 存放数据的默认文件夹
    wireframe/                  # 上海科技数据集(Huang et al.)的文件夹
logs/                           # 存储训练输出的默认文件夹
########################### 代码 ###########################
config/                         # 神经网络超参数和配置
    wireframe.yaml              # 上海科技数据集的默认参数
dataset/                        # 所有与数据生成相关的脚本
    wireframe.py                # 预处理上海科技数据集为npz的脚本
misc/                           # 不太重要的其他脚本
    draw-wireframe.py           # 生成图表网格的脚本
    lsd.py                      # 为LSD生成npz文件的脚本
    plot-sAP.py                 # 为所有算法绘制sAP10的脚本
lcnn/                           # lcnn模块,可以在其他脚本中"import lcnn"
    models/                     # 神经网络结构
        hourglass_pose.py       # 骨干网络(堆叠沙漏)
        line_vectorizer.py      # 采样器和线条验证网络
        multitask_learner.py    # 多任务学习网络
    datasets.py                 # 读取训练数据
    metrics.py                  # 评估指标函数
    trainer.py                  # 训练器
    config.py                   # 配置的全局变量
    utils.py                    # 其他函数
demo.py                         # 为图像检测线框的脚本
eval-sAP.py                     # sAP评估脚本
eval-APH.py                     # APH评估脚本
eval-mAPJ.py                    # mAPJ评估脚本
train.py                        # 训练神经网络的脚本
post.py                         # 后处理脚本
process.py                      # 从检查点处理数据集的脚本

复现结果

安装

为了便于复现,建议您在执行以下命令之前安装miniconda。

git clone https://github.com/zhou13/lcnn
cd lcnn
conda create -y -n lcnn
source activate lcnn
# 根据您的CUDA版本修改命令: https://pytorch.org/
conda install -y pytorch cudatoolkit=10.1 -c pytorch
conda install -y tensorboardx -c conda-forge
conda install -y pyyaml docopt matplotlib scikit-image opencv
mkdir data logs post

预训练模型

您可以从我们的HuggingFace仓库下载参考预训练模型。这些模型使用config/wireframe.yaml训练了312k次迭代。使用demo.pyprocess.pyeval-*.py来评估预训练模型。

为您自己的图像检测线框

要在您自己的图像上测试LCNN,您需要下载预训练模型并执行

python ./demo.py -d 0 config/wireframe.yaml <预训练pth路径> <图像路径>

这里,-d 0指定用于评估的GPU ID,您可以指定-d ""来强制CPU推理。

下载处理后的数据集

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

cd data
wget https://huggingface.co/yichaozhou/lcnn/resolve/main/Data/wireframe.tar.xz
tar xf wireframe.tar.xz
rm wireframe.tar.xz
cd ..

或者,你可以从我们的HuggingFace 仓库手动下载预处理好的数据集wireframe.tar.xz,然后按照相应步骤操作。

处理数据集

可选,你可以从头开始预处理(例如,生成热图,进行数据增强)数据集,而不是下载已处理好的数据集。如果你只想使用预处理好的数据集wireframe.tar.xz请跳过这一部分。

cd data
wget https://huggingface.co/yichaozhou/lcnn/resolve/main/Data/wireframe_raw.tar.xz
tar xf wireframe_raw.tar.xz
rm wireframe_raw.tar.xz
cd ..
dataset/wireframe.py data/wireframe_raw data/wireframe

训练

默认的批量大小假设你有一张具有12GB显存的显卡,例如GTX 1080Ti或RTX 2080Ti。如果你的显存较少,可以减小批量大小。

要使用默认参数在GPU 0(由-d 0指定)上训练神经网络,执行以下命令:

python ./train.py -d 0 --identifier baseline config/wireframe.yaml

测试预训练模型

要使用预训练模型在验证数据集上生成线框,执行以下命令:

./process.py config/wireframe.yaml <path-to-checkpoint.pth> data/wireframe logs/pretrained-model/npz/000312000

后处理

要对神经网络的输出进行后处理(仅在你需要评估APH时必要),执行以下命令:

python ./post.py --plot --thresholds="0.010,0.015" logs/RUN/npz/ITERATION post/RUN-ITERATION

其中--plot是一个_可选_参数,用于控制程序是否除了生成包含线条信息的npz文件外,还生成可视化图像,--thresholds控制后处理的激进程度。--thresholds中的多个值便于进行超参数搜索。你应该将RUNITERATION替换为你的训练实例的所需值。

评估

要评估logs/下所有检查点的sAP(推荐),执行以下命令:

python eval-sAP.py logs/*/npz/*

要评估mAPJ,执行以下命令:

python eval-mAPJ.py logs/*/npz/*

要评估APH,你首先需要对结果进行后处理(参见上一节)。此外,APH评估需要MATLAB,且matlab应该在你的$PATH中。由于使用了parfor,强烈建议使用并行计算工具箱。后处理完成后,执行以下命令:

python eval-APH.py post/RUN-ITERATION/0_010 post/RUN-ITERATION/0_010-APH

以获取图表,其中0_010是后处理中使用的阈值,post/RUN-ITERATION-APH是存储中间文件的临时目录。由于使用了像素级匹配,APH的评估可能需要长达一小时,具体取决于你的CPU。

有关评估的更多详细信息,请参阅eval-sAP.pyeval-mAPJ.pyeval-APH.pymisc/*.py的源代码。

引用端到端线框解析

如果你在研究中发现L-CNN有用,请考虑引用:

@inproceedings{zhou2019end,
 author={Zhou, Yichao and Qi, Haozhi and Ma, Yi},
 title={End-to-End Wireframe Parsing},
 booktitle={ICCV 2019},
 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

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

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