[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"tool-zhou13--lcnn":3,"similar-zhou13--lcnn":109},{"id":4,"github_repo":5,"name":6,"description_en":7,"description_zh":8,"ai_summary_zh":8,"readme_en":9,"readme_zh":10,"quickstart_zh":11,"use_case_zh":12,"hero_image_url":13,"owner_login":14,"owner_name":15,"owner_avatar_url":16,"owner_bio":17,"owner_company":18,"owner_location":19,"owner_email":20,"owner_twitter":19,"owner_website":21,"owner_url":22,"languages":23,"stars":36,"forks":37,"last_commit_at":38,"license":39,"difficulty_score":40,"env_os":41,"env_gpu":42,"env_ram":43,"env_deps":44,"category_tags":56,"github_topics":59,"view_count":70,"oss_zip_url":19,"oss_zip_packed_at":19,"status":71,"created_at":72,"updated_at":73,"faqs":74,"releases":108},9073,"zhou13\u002Flcnn","lcnn","LCNN: End-to-End Wireframe Parsing","lcnn 是一款基于 PyTorch 开发的开源深度学习模型，专注于实现从单张图像中端到端地解析线框结构。它主要解决了传统算法在复杂场景下难以精准提取直线段及其交点、导致线框重建不完整或噪声过多的难题。通过直接输出结构化的线框表示，lcnn 能够高效地将照片转化为简洁的几何线条图。\n\n该工具特别适合计算机视觉领域的研究人员、算法开发者以及需要处理建筑图纸或场景理解任务的工程师使用。对于希望复现前沿论文结果或构建线框检测基线的团队，lcnn 提供了易于上手且可复现的代码实现。\n\n其核心技术亮点在于概念简洁却效果显著的网络架构。在权威的 ShanghaiTech 数据集测试中，lcnn 在多项关键指标上大幅超越了 LSD、AFM 等此前的最先进方法，展现了卓越的检测精度与鲁棒性。作为 ICCV 2019 收录论文的官方实现，它不仅性能出众，还具备良好的代码结构性，方便用户进行数据预处理、模型训练及结果可视化，是线框解析领域极具参考价值的基础工具。","# End-to-End Wireframe Parsing\n\nThis repository contains the official PyTorch implementation of the paper: _[Yichao Zhou](https:\u002F\u002Fyichaozhou.com), [Haozhi Qi](http:\u002F\u002Fhaozhi.io), [Yi Ma](https:\u002F\u002Fpeople.eecs.berkeley.edu\u002F~yima\u002F). [\"End-to-End Wireframe Parsing.\"](https:\u002F\u002Farxiv.org\u002Fabs\u002F1905.03246) ICCV 2019_.\n\n## Introduction\n\n[L-CNN](https:\u002F\u002Farxiv.org\u002Fabs\u002F1905.03246) is a conceptually simple yet effective neural network for detecting the wireframe from a given image. It outperforms the previous state-of-the-art wireframe and line detectors by a large margin. We hope that this repository serves as an easily reproducible baseline for future researches in this area.\n\n## Main Results\n\n### Qualitative Measures\n\n|     \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzhou13_lcnn_readme_5da08efb89e5.png\" width=\"180\">      |    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzhou13_lcnn_readme_5eeff2dba372.png\" width=\"180\">    |     \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzhou13_lcnn_readme_f7a5f6d32e3c.png\" width=\"180\">      | \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzhou13_lcnn_readme_f8b47f9ca083.png\" width=\"180\"> | \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzhou13_lcnn_readme_2daa17fc0221.png\" width=\"180\"> |\n| :--------------------------------------------------: | :-----------------------------------------------: | :-------------------------------------------------: | :------------------------------------------: | :----------------------------------------: |\n| [LSD](https:\u002F\u002Fieeexplore.ieee.org\u002Fdocument\u002F4731268\u002F) | [AFM](https:\u002F\u002Fgithub.com\u002FcherubicXN\u002Fafm_cvpr2019) | [Wireframe](https:\u002F\u002Fgithub.com\u002Fhuangkuns\u002Fwireframe) |                  **L-CNN**                   |                Ground Truth                |\n\nMore random sampled results can be found in the [supplementary material](https:\u002F\u002Fyichaozhou.com\u002Fpublication\u002F1904lcnn\u002Fappendix.pdf) of the paper.\n\n### Quantitative Measures\n\nThe following table reports the performance metrics of several wireframe and line detectors on the [ShanghaiTech dataset](https:\u002F\u002Fgithub.com\u002Fhuangkuns\u002Fwireframe).\n\n|                                                      | ShanghaiTech (sAP\u003Csup>10\u003C\u002Fsup>) | ShanghaiTech (AP\u003Csup>H\u003C\u002Fsup>) | ShanghaiTech (F\u003Csup>H\u003C\u002Fsup>) | ShanghaiTech (mAP\u003Csup>J\u003C\u002Fsup>) |\n| :--------------------------------------------------: | :-----------------------------: | :---------------------------: | :--------------------------: | :----------------------------: |\n| [LSD](https:\u002F\u002Fieeexplore.ieee.org\u002Fdocument\u002F4731268\u002F) |                \u002F                |             52.0              |             61.0             |               \u002F                |\n|  [AFM](https:\u002F\u002Fgithub.com\u002FcherubicXN\u002Fafm_cvpr2019)   |              24.4               |             69.5              |             77.2             |              23.3              |\n| [Wireframe](https:\u002F\u002Fgithub.com\u002Fhuangkuns\u002Fwireframe)  |               5.1               |             67.8              |             72.6             |              40.9              |\n|                      **L-CNN**                       |            **62.9**             |           **82.8**            |           **81.2**           |            **59.3**            |\n\n### Precision-Recall Curves\n\n\u003Cp align=\"center\">\n\u003Cimg src=\"figs\u002FPR-APH.svg\"  width=\"400\">\n\u003Cimg src=\"figs\u002FPR-sAP10.svg\" width=\"400\">\n\u003C\u002Fp>\n\n## Code Structure\n\nBelow is a quick overview of the function of each file.\n\n```bash\n########################### Data ###########################\nfigs\u002F\ndata\u002F                           # default folder for placing the data\n    wireframe\u002F                  # folder for ShanghaiTech dataset (Huang et al.)\nlogs\u002F                           # default folder for storing the output during training\n########################### Code ###########################\nconfig\u002F                         # neural network hyper-parameters and configurations\n    wireframe.yaml              # default parameter for ShanghaiTech dataset\ndataset\u002F                        # all scripts related to data generation\n    wireframe.py                # script for pre-processing the ShanghaiTech dataset to npz\nmisc\u002F                           # misc scripts that are not important\n    draw-wireframe.py           # script for generating figure grids\n    lsd.py                      # script for generating npz files for LSD\n    plot-sAP.py                 # script for plotting sAP10 for all algorithms\nlcnn\u002F                           # lcnn module so you can \"import lcnn\" in other scripts\n    models\u002F                     # neural network structure\n        hourglass_pose.py       # backbone network (stacked hourglass)\n        line_vectorizer.py      # sampler and line verification network\n        multitask_learner.py    # network for multi-task learning\n    datasets.py                 # reading the training data\n    metrics.py                  # functions for evaluation metrics\n    trainer.py                  # trainer\n    config.py                   # global variables for configuration\n    utils.py                    # misc functions\ndemo.py                         # script for detecting wireframes for an image\neval-sAP.py                     # script for sAP evaluation\neval-APH.py                     # script for APH evaluation\neval-mAPJ.py                    # script for mAPJ evaluation\ntrain.py                        # script for training the neural network\npost.py                         # script for post-processing\nprocess.py                      # script for processing a dataset from a checkpoint\n```\n\n## Reproducing Results\n\n### Installation\n\nFor the ease of reproducibility, you are suggested to install [miniconda](https:\u002F\u002Fdocs.conda.io\u002Fen\u002Flatest\u002Fminiconda.html) before following executing the following commands.\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fzhou13\u002Flcnn\ncd lcnn\nconda create -y -n lcnn\nsource activate lcnn\n# Modify the command with your CUDA version: https:\u002F\u002Fpytorch.org\u002F\nconda install -y pytorch cudatoolkit=10.1 -c pytorch\nconda install -y tensorboardx -c conda-forge\nconda install -y pyyaml docopt matplotlib scikit-image opencv\nmkdir data logs post\n```\n\n### Pre-trained Models\n\nYou can download our reference pre-trained models from our [HuggingFace Repo](https:\u002F\u002Fhuggingface.co\u002Fyichaozhou\u002Flcnn\u002Ftree\u002Fmain\u002FPretrained). Those models were\ntrained with `config\u002Fwireframe.yaml` for 312k iterations. Use `demo.py`, `process.py`, and\n`eval-*.py` to evaluate the pre-trained models.\n\n### Detect Wireframes for Your Own Images\n\nTo test LCNN on your own images, you need download the pre-trained models and execute\n\n```Bash\npython .\u002Fdemo.py -d 0 config\u002Fwireframe.yaml \u003Cpath-to-pretrained-pth> \u003Cpath-to-image>\n```\n\nHere, `-d 0` is specifying the GPU ID used for evaluation, and you can specify `-d \"\"` to force CPU inference.\n\n### Downloading the Processed Dataset\n\nMake sure `curl` is installed on your system and execute\n\n```bash\ncd data\nwget https:\u002F\u002Fhuggingface.co\u002Fyichaozhou\u002Flcnn\u002Fresolve\u002Fmain\u002FData\u002Fwireframe.tar.xz\ntar xf wireframe.tar.xz\nrm wireframe.tar.xz\ncd ..\n```\n\nAlternatively, you can download the pre-processed dataset\n`wireframe.tar.xz` manually from our [HuggingFace Repo](https:\u002F\u002Fhuggingface.co\u002Fyichaozhou\u002Flcnn\u002Ftree\u002Fmain\u002FData) and proceed\naccordingly.\n\n#### Processing the Dataset\n\n_Optionally_, you can pre-process (e.g., generate heat maps, do data augmentation) the dataset from\nscratch rather than downloading the processed one. **Skip** this section if you just want to use\nthe pre-processed dataset `wireframe.tar.xz`.\n\n```bash\ncd data\nwget https:\u002F\u002Fhuggingface.co\u002Fyichaozhou\u002Flcnn\u002Fresolve\u002Fmain\u002FData\u002Fwireframe_raw.tar.xz\ntar xf wireframe_raw.tar.xz\nrm wireframe_raw.tar.xz\ncd ..\ndataset\u002Fwireframe.py data\u002Fwireframe_raw data\u002Fwireframe\n```\n\n### Training\n\nThe default batch size assumes your have a graphics card with 12GB video memory, e.g., GTX 1080Ti or RTX 2080Ti. You may reduce the batch size if you have less video memory.\n\nTo train the neural network on GPU 0 (specified by `-d 0`) with the default parameters, execute\n\n```bash\npython .\u002Ftrain.py -d 0 --identifier baseline config\u002Fwireframe.yaml\n```\n\n## Testing Pretrained Models\n\nTo generate wireframes on the validation dataset with the pretrained model, execute\n\n```bash\n.\u002Fprocess.py config\u002Fwireframe.yaml \u003Cpath-to-checkpoint.pth> data\u002Fwireframe logs\u002Fpretrained-model\u002Fnpz\u002F000312000\n```\n\n### Post Processing\n\nTo post process the outputs from neural network (only necessary if you are going to evaluate AP\u003Csup>H\u003C\u002Fsup>), execute\n\n```bash\npython .\u002Fpost.py --plot --thresholds=\"0.010,0.015\" logs\u002FRUN\u002Fnpz\u002FITERATION post\u002FRUN-ITERATION\n```\n\nwhere `--plot` is an _optional_ argument to control whether the program should also generate\nimages for visualization in addition to the npz files that contain the line information, and\n`--thresholds` controls how aggressive the post processing is. Multiple values in `--thresholds`\nis convenient for hyper-parameter search. You should replace `RUN` and `ITERATION` to the\ndesired value of your training instance.\n\n### Evaluation\n\nTo evaluate the sAP (recommended) of all your checkpoints under `logs\u002F`, execute\n\n```bash\npython eval-sAP.py logs\u002F*\u002Fnpz\u002F*\n```\n\nTo evaluate the mAP\u003Csup>J\u003C\u002Fsup>, execute\n\n```bash\npython eval-mAPJ.py logs\u002F*\u002Fnpz\u002F*\n```\n\nTo evaluate AP\u003Csup>H\u003C\u002Fsup>, you first need to post process your result (see the previous section).\nIn addition, **MATLAB is required for AP\u003Csup>H\u003C\u002Fsup> evaluation** and `matlab` should be under your\n`$PATH`. The **parallel computing toolbox** is highly suggested due to the usage of `parfor`.\nAfter post processing, execute\n\n```bash\npython eval-APH.py post\u002FRUN-ITERATION\u002F0_010 post\u002FRUN-ITERATION\u002F0_010-APH\n```\n\nto get the plot, where `0_010` is the threshold used in the post processing, and `post\u002FRUN-ITERATION-APH`\nis the temporary directory storing intermediate files. Due to the usage of pixel-wise matching,\nthe evaluation of AP\u003Csup>H\u003C\u002Fsup> **may take up to an hour** depending on your CPUs.\n\nSee the source code of `eval-sAP.py`, `eval-mAPJ.py`, `eval-APH.py`, and `misc\u002F*.py` for more\ndetails on evaluation.\n\n### Citing End-to-End Wireframe Parsing\n\nIf you find L-CNN useful in your research, please consider citing:\n\n```\n@inproceedings{zhou2019end,\n author={Zhou, Yichao and Qi, Haozhi and Ma, Yi},\n title={End-to-End Wireframe Parsing},\n booktitle={ICCV 2019},\n year={2019}\n}\n```\n","# 端到端线框解析\n\n本仓库包含论文的官方 PyTorch 实现：_[Yichao Zhou](https:\u002F\u002Fyichaozhou.com), [Haozhi Qi](http:\u002F\u002Fhaozhi.io), [Yi Ma](https:\u002F\u002Fpeople.eecs.berkeley.edu\u002F~yima\u002F). [\"End-to-End Wireframe Parsing.\"](https:\u002F\u002Farxiv.org\u002Fabs\u002F1905.03246) ICCV 2019_。\n\n## 简介\n\n[L-CNN](https:\u002F\u002Farxiv.org\u002Fabs\u002F1905.03246) 是一种概念简单但高效的神经网络，用于从给定图像中检测线框。它在性能上大幅超越了先前的最先进线框和线条检测器。我们希望本仓库能为该领域的未来研究提供一个易于复现的基准。\n\n## 主要结果\n\n### 定性评估\n\n|     \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzhou13_lcnn_readme_5da08efb89e5.png\" width=\"180\">      |    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzhou13_lcnn_readme_5eeff2dba372.png\" width=\"180\">    |     \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzhou13_lcnn_readme_f7a5f6d32e3c.png\" width=\"180\">      | \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzhou13_lcnn_readme_f8b47f9ca083.png\" width=\"180\"> | \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzhou13_lcnn_readme_2daa17fc0221.png\" width=\"180\"> |\n| :--------------------------------------------------: | :-----------------------------------------------: | :-------------------------------------------------: | :------------------------------------------: | :----------------------------------------: |\n| [LSD](https:\u002F\u002Fieeexplore.ieee.org\u002Fdocument\u002F4731268\u002F) | [AFM](https:\u002F\u002Fgithub.com\u002FcherubicXN\u002Fafm_cvpr2019) | [Wireframe](https:\u002F\u002Fgithub.com\u002Fhuangkuns\u002Fwireframe) |                  **L-CNN**                   |                Ground Truth                |\n\n更多随机采样的结果可在论文的[补充材料](https:\u002F\u002Fyichaozhou.com\u002Fpublication\u002F1904lcnn\u002Fappendix.pdf)中找到。\n\n### 定量评估\n\n下表报告了多个线框和线条检测器在[上海科技大学数据集](https:\u002F\u002Fgithub.com\u002Fhuangkuns\u002Fwireframe)上的性能指标。\n\n|                                                      | 上海科技大学 (sAP\u003Csup>10\u003C\u002Fsup>) | 上海科技大学 (AP\u003Csup>H\u003C\u002Fsup>) | 上海科技大学 (F\u003Csup>H\u003C\u002Fsup>) | 上海科技大学 (mAP\u003Csup>J\u003C\u002Fsup>) |\n| :--------------------------------------------------: | :-----------------------------: | :---------------------------: | :--------------------------: | :----------------------------: |\n| [LSD](https:\u002F\u002Fieeexplore.ieee.org\u002Fdocument\u002F4731268\u002F) |                \u002F                |             52.0              |             61.0             |               \u002F                |\n|  [AFM](https:\u002F\u002Fgithub.com\u002FcherubicXN\u002Fafm_cvpr2019)   |              24.4               |             69.5              |             77.2             |              23.3              |\n| [Wireframe](https:\u002F\u002Fgithub.com\u002Fhuangkuns\u002Fwireframe)  |               5.1               |             67.8              |             72.6             |              40.9              |\n|                      **L-CNN**                       |            **62.9**             |           **82.8**            |           **81.2**           |            **59.3**            |\n\n### 精度-召回率曲线\n\n\u003Cp align=\"center\">\n\u003Cimg src=\"figs\u002FPR-APH.svg\"  width=\"400\">\n\u003Cimg src=\"figs\u002FPR-sAP10.svg\" width=\"400\">\n\u003C\u002Fp>\n\n## 代码结构\n\n以下是各文件功能的简要概述。\n\n```bash\n########################### 数据 ###########################\nfigs\u002F\ndata\u002F                           # 默认数据存放目录\n    wireframe\u002F                  # 上海科技大学数据集（Huang 等人）存放目录\nlogs\u002F                           # 训练过程中输出的默认存储目录\n########################### 代码 ###########################\nconfig\u002F                         # 神经网络超参数及配置\n    wireframe.yaml              # 上海科技大学数据集的默认参数\ndataset\u002F                        # 所有与数据生成相关的脚本\n    wireframe.py                # 将上海科技大学数据集预处理为 npz 格式的脚本\nmisc\u002F                           # 不重要的辅助脚本\n    draw-wireframe.py           # 生成图格的脚本\n    lsd.py                      # 为 LSD 生成 npz 文件的脚本\n    plot-sAP.py                 # 绘制所有算法 sAP10 曲线的脚本\nlcnn\u002F                           # lcnn 模块，可在其他脚本中“import lcnn”\n    models\u002F                     # 神经网络结构\n        hourglass_pose.py       # 主干网络（堆叠沙漏网络）\n        line_vectorizer.py      # 抽样及线条验证网络\n        multitask_learner.py    # 多任务学习网络\n    datasets.py                 # 读取训练数据\n    metrics.py                  # 评估指标相关函数\n    trainer.py                  # 训练器\n    config.py                   # 全局配置变量\n    utils.py                    # 辅助函数\ndemo.py                         # 用于检测单张图像线框的脚本\neval-sAP.py                     # sAP 评估脚本\neval-APH.py                     # APH 评估脚本\neval-mAPJ.py                    # mAPJ 评估脚本\ntrain.py                        # 神经网络训练脚本\npost.py                         # 后处理脚本\nprocess.py                      # 从检查点处理数据集的脚本\n```\n\n## 结果复现\n\n### 安装\n\n为便于复现，建议您在执行以下命令之前先安装 [miniconda](https:\u002F\u002Fdocs.conda.io\u002Fen\u002Flatest\u002Fminiconda.html)。\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fzhou13\u002Flcnn\ncd lcnn\nconda create -y -n lcnn\nsource activate lcnn\n# 根据您的 CUDA 版本修改命令：https:\u002F\u002Fpytorch.org\u002F\nconda install -y pytorch cudatoolkit=10.1 -c pytorch\nconda install -y tensorboardx -c conda-forge\nconda install -y pyyaml docopt matplotlib scikit-image opencv\nmkdir data logs post\n```\n\n### 预训练模型\n\n您可以从我们的[HuggingFace 仓库](https:\u002F\u002Fhuggingface.co\u002Fyichaozhou\u002Flcnn\u002Ftree\u002Fmain\u002FPretrained)下载参考预训练模型。这些模型使用 `config\u002Fwireframe.yaml` 训练了 312k 次迭代。请使用 `demo.py`、`process.py` 和 `eval-*.py` 来评估预训练模型。\n\n### 检测您自己的图像中的线框\n\n要测试 LCNN 在您自己的图像上的效果，您需要下载预训练模型并执行以下命令：\n\n```Bash\npython .\u002Fdemo.py -d 0 config\u002Fwireframe.yaml \u003C预训练模型路径> \u003C图像路径>\n```\n\n其中，`-d 0` 指定了用于评估的 GPU ID，您也可以指定 `-d \"\"` 强制使用 CPU 进行推理。\n\n### 下载处理后的数据集\n\n请确保您的系统已安装 `curl`，然后执行以下命令：\n\n```bash\ncd data\nwget https:\u002F\u002Fhuggingface.co\u002Fyichaozhou\u002Flcnn\u002Fresolve\u002Fmain\u002FData\u002Fwireframe.tar.xz\ntar xf wireframe.tar.xz\nrm wireframe.tar.xz\ncd ..\n```\n\n或者，您也可以从我们的 [HuggingFace 仓库](https:\u002F\u002Fhuggingface.co\u002Fyichaozhou\u002Flcnn\u002Ftree\u002Fmain\u002FData) 手动下载预处理好的数据集 `wireframe.tar.xz`，并按照相应步骤进行操作。\n\n#### 数据集的预处理\n\n_可选地_，您可以从头开始对数据集进行预处理（例如生成热力图、进行数据增强），而不是直接下载已经处理好的数据集。如果您只想使用预处理好的数据集 `wireframe.tar.xz`，请**跳过**本节。\n\n```bash\ncd data\nwget https:\u002F\u002Fhuggingface.co\u002Fyichaozhou\u002Flcnn\u002Fresolve\u002Fmain\u002FData\u002Fwireframe_raw.tar.xz\ntar xf wireframe_raw.tar.xz\nrm wireframe_raw.tar.xz\ncd ..\ndataset\u002Fwireframe.py data\u002Fwireframe_raw data\u002Fwireframe\n```\n\n### 训练\n\n默认的批处理大小假设您使用的是显存为 12GB 的显卡，例如 GTX 1080Ti 或 RTX 2080Ti。如果您的显存较少，可以适当减小批处理大小。\n\n要在 GPU 0 上（通过 `-d 0` 指定）使用默认参数训练神经网络，请执行以下命令：\n\n```bash\npython .\u002Ftrain.py -d 0 --identifier baseline config\u002Fwireframe.yaml\n```\n\n## 测试预训练模型\n\n要使用预训练模型在验证数据集中生成线框图，请执行以下命令：\n\n```bash\n.\u002Fprocess.py config\u002Fwireframe.yaml \u003Ccheckpoint.pth路径> data\u002Fwireframe logs\u002Fpretrained-model\u002Fnpz\u002F000312000\n```\n\n### 后处理\n\n要对神经网络的输出进行后处理（仅在需要评估 AP\u003Csup>H\u003C\u002Fsup> 时才需要），请执行以下命令：\n\n```bash\npython .\u002Fpost.py --plot --thresholds=\"0.010,0.015\" logs\u002FRUN\u002Fnpz\u002FITERATION post\u002FRUN-ITERATION\n```\n\n其中，`--plot` 是一个_可选_参数，用于控制程序是否在生成包含线条信息的 npz 文件之外，还生成用于可视化的图像；`--thresholds` 则用于控制后处理的激进程度。`--thresholds` 中可以指定多个值，便于超参数搜索。您需要将 `RUN` 和 `ITERATION` 替换为您训练实例的具体值。\n\n### 评估\n\n要评估 `logs\u002F` 目录下所有检查点的 sAP（推荐），请执行以下命令：\n\n```bash\npython eval-sAP.py logs\u002F*\u002Fnpz\u002F*\n```\n\n要评估 mAP\u003Csup>J\u003C\u002Fsup>,请执行以下命令：\n\n```bash\npython eval-mAPJ.py logs\u002F*\u002Fnpz\u002F*\n```\n\n要评估 AP\u003Csup>H\u003C\u002Fsup>,您首先需要对结果进行后处理（参见上一节）。此外，**AP\u003Csup>H\u003C\u002Fsup> 的评估需要 MATLAB**，并且 `matlab` 应位于您的 `$PATH` 中。由于使用了 `parfor`，强烈建议安装 **并行计算工具箱**。后处理完成后，执行以下命令以获取图表：\n\n```bash\npython eval-APH.py post\u002FRUN-ITERATION\u002F0_010 post\u002FRUN-ITERATION\u002F0_010-APH\n```\n\n其中，`0_010` 是后处理时使用的阈值，而 `post\u002FRUN-ITERATION-APH` 是用于存储中间文件的临时目录。由于采用了逐像素匹配的方式，AP\u003Csup>H\u003C\u002Fsup> 的评估时间**可能长达一小时**，具体取决于您的 CPU 性能。\n\n更多关于评估的详细信息，请参阅 `eval-sAP.py`、`eval-mAPJ.py`、`eval-APH.py` 以及 `misc\u002F*.py` 的源代码。\n\n### 引用端到端线框解析\n\n如果您在研究中发现 L-CNN 非常有用，请考虑引用以下文献：\n\n```\n@inproceedings{zhou2019end,\n author={Zhou, Yichao and Qi, Haozhi and Ma, Yi},\n title={End-to-End Wireframe Parsing},\n booktitle={ICCV 2019},\n year={2019}\n}\n```","# L-CNN 快速上手指南\n\nL-CNN 是一个用于端到端线框解析（Wireframe Parsing）的 PyTorch 实现，能够高效地从图像中检测线框结构，性能优于传统的线检测器。\n\n## 环境准备\n\n在开始之前，请确保您的系统满足以下要求：\n- **操作系统**: Linux (推荐) 或 macOS\n- **Python**: 3.6+\n- **GPU**: 支持 CUDA 的 NVIDIA 显卡（训练推荐显存 12GB+，如 GTX 1080Ti\u002FRTX 2080Ti；推理可酌情降低）\n- **依赖软件**: `git`, `curl`, `wget`\n\n> **注意**：若需评估 $AP^H$ 指标，必须安装 **MATLAB** 并将其加入系统 `$PATH`，同时建议安装 Parallel Computing Toolbox。\n\n## 安装步骤\n\n推荐使用 `miniconda` 管理环境以保证复现性。\n\n1. **克隆仓库并创建环境**\n   ```bash\n   git clone https:\u002F\u002Fgithub.com\u002Fzhou13\u002Flcnn\n   cd lcnn\n   conda create -y -n lcnn python=3.7\n   source activate lcnn\n   ```\n\n2. **安装深度学习依赖**\n   请根据您的 CUDA 版本调整 `cudatoolkit` 版本号（参考 [PyTorch 官网](https:\u002F\u002Fpytorch.org\u002F)）。以下示例适用于 CUDA 10.1：\n   ```bash\n   # 安装 PyTorch (国内用户可使用清华源加速：-c https:\u002F\u002Fmirrors.tuna.tsinghua.edu.cn\u002Fanaconda\u002Fcloud\u002Fpytorch\u002F)\n   conda install -y pytorch cudatoolkit=10.1 -c pytorch\n   \n   # 安装其他依赖\n   conda install -y tensorboardx -c conda-forge\n   conda install -y pyyaml docopt matplotlib scikit-image opencv\n   ```\n\n3. **创建必要目录**\n   ```bash\n   mkdir data logs post\n   ```\n\n## 基本使用\n\n### 1. 下载预训练模型\n从 HuggingFace 下载官方提供的预训练权重（基于 ShanghaiTech 数据集训练 312k 次迭代）：\n- 下载地址：[HuggingFace Repo](https:\u002F\u002Fhuggingface.co\u002Fyichaozhou\u002Flcnn\u002Ftree\u002Fmain\u002FPretrained)\n- 将下载的 `.pth` 文件放置在任意方便访问的路径。\n\n### 2. 检测自定义图像的线框\n使用预训练模型对单张图片进行线框检测是最简单的用法。\n\n**命令格式：**\n```bash\npython .\u002Fdemo.py -d \u003CGPU_ID> config\u002Fwireframe.yaml \u003Cpath-to-pretrained-pth> \u003Cpath-to-image>\n```\n\n**示例：**\n假设您使用 GPU 0，预训练模型路径为 `pretrained.pth`，待检测图片为 `test.jpg`：\n```bash\npython .\u002Fdemo.py -d 0 config\u002Fwireframe.yaml pretrained.pth test.jpg\n```\n\n- `-d 0`: 指定使用的 GPU ID。\n- `-d \"\"`: 强制使用 CPU 进行推理（速度较慢）。\n- 输出结果通常包含可视化的线框图及对应的数据文件。\n\n### 3. (可选) 使用处理好的数据集\n如果您计划复现论文结果或进行微调，可下载已预处理好的 ShanghaiTech 数据集：\n```bash\ncd data\nwget https:\u002F\u002Fhuggingface.co\u002Fyichaozhou\u002Flcnn\u002Fresolve\u002Fmain\u002FData\u002Fwireframe.tar.xz\ntar xf wireframe.tar.xz\nrm wireframe.tar.xz\ncd ..\n```","某建筑数字化团队正致力于将大量老旧的手绘建筑草图转化为可编辑的矢量 CAD 图纸，以便进行后续的 BIM 建模。\n\n### 没有 lcnn 时\n- **线条断裂严重**：传统算法（如 LSD）难以处理手绘图中的断点和噪点，导致生成的墙体和梁柱线条支离破碎，无法形成闭合轮廓。\n- **拓扑关系缺失**：检测到的线段仅仅是独立的几何元素，缺乏端点连接信息，工程师必须手动逐条拼接才能还原房间结构。\n- **后处理成本高昂**：为了修复错误的连接和剔除冗余短线，团队需编写复杂的启发式规则代码，且仍需大量人工介入校正。\n- **泛化能力弱**：面对不同笔触风格或光照条件的草图，现有模型效果波动极大，难以满足批量自动化处理的需求。\n\n### 使用 lcnn 后\n- **端到端完整解析**：lcnn 直接输出结构完整的线框图，能智能补全手绘中的微小断裂，精准还原连续的墙体与门窗轮廓。\n- **自动构建拓扑网络**：模型天然理解线段间的交点与连接关系，直接生成带有节点信息的矢量数据，无需额外算法拼接。\n- **流程极简高效**：凭借在 ShanghaiTech 数据集上超越前代模型的大幅精度提升（sAP 从 24.4 跃升至 62.9），团队省去了繁琐的规则清洗步骤，实现“输入图片即得矢量”。\n- **鲁棒性显著增强**：无论是铅笔素描还是扫描件，lcnn 均能保持稳定的高召回率与精确率，大幅降低了人工复核的工作量。\n\nlcnn 通过端到端的深度学习架构，将非结构化的图像像素直接转化为高精度的结构化线框数据，彻底打通了从手绘草图到数字孪生的关键路径。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzhou13_lcnn_5da08efb.png","zhou13","Yichao Zhou","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fzhou13_69b2e0ff.png","Apple Inc. | Ph.D. at UC Berkeley","University of California, Berkeley",null,"broken.zhou@gmail.com","https:\u002F\u002Fyichaozhou.com","https:\u002F\u002Fgithub.com\u002Fzhou13",[24,28,32],{"name":25,"color":26,"percentage":27},"Python","#3572A5",98,{"name":29,"color":30,"percentage":31},"MATLAB","#e16737",1.8,{"name":33,"color":34,"percentage":35},"Shell","#89e051",0.2,561,104,"2026-03-19T15:56:51","MIT",3,"Linux","需要 NVIDIA GPU，推荐显存 12GB+（如 GTX 1080Ti 或 RTX 2080Ti），支持 CUDA 10.1；也可通过参数强制使用 CPU 推理","未说明",{"notes":45,"python":46,"dependencies":47},"建议使用 Miniconda 管理环境。评估 AP^H 指标时必须安装 MATLAB 并配置到系统路径，且强烈建议安装 MATLAB 并行计算工具箱 (Parallel Computing Toolbox)。默认批处理大小基于 12GB 显存设定，显存较小需手动调整。","未说明 (需通过 conda 安装)",[48,49,50,51,52,53,54,55],"pytorch","cudatoolkit=10.1","tensorboardx","pyyaml","docopt","matplotlib","scikit-image","opencv",[57,58],"开发框架","数据工具",[60,61,48,62,63,64,65,66,67,68,69],"cnn","wireframe","deep-learning","deep-neural-networks","line","line-detection","line-detector","corner","corner-detection","corner-detector",2,"ready","2026-03-27T02:49:30.150509","2026-04-19T03:05:57.382699",[75,80,85,90,95,100,104],{"id":76,"question_zh":77,"answer_zh":78,"source_url":79},40707,"在 Windows 上训练时遇到 'BoxKeyError' 或对象属性缺失错误怎么办？","这是因为 Python 在 Windows 上的多进程实现与 Linux 不同，无法继承父进程的变量。解决方案是修改配置文件（yaml），将 `num_workers` 设置为 0 以禁用多进程，然后重新尝试训练。","https:\u002F\u002Fgithub.com\u002Fzhou13\u002Flcnn\u002Fissues\u002F15",{"id":81,"question_zh":82,"answer_zh":83,"source_url":84},40708,"输入数据字典中的 lmap, jmap, joff, Lpos, Lneg 等变量具体代表什么含义？","lmap 代表线加热图（line heatmap），jmap 代表交点加热图（junction heatmap），joff 代表交点偏移图（junction offset map）。关于数据集的具体结构和更多细节，建议参考 Wireframe 数据集的官方仓库：https:\u002F\u002Fgithub.com\u002Fhuangkuns\u002Fwireframe。","https:\u002F\u002Fgithub.com\u002Fzhou13\u002Flcnn\u002Fissues\u002F2",{"id":86,"question_zh":87,"answer_zh":88,"source_url":89},40709,"训练过程中验证损失（validation loss）不下降甚至震荡怎么办？","如果严格按照说明操作仍出现问题，建议重新开始，使用原始的配置文件和代码，不要进行任何修改。确保完全遵循 README 中的指令。此外，确认是否误解了微调（finetune）的概念，通常指在其他数据集上预训练后再在目标数据集（如 wireframe）上训练，或者直接加载提供的预训练模型进行评估。","https:\u002F\u002Fgithub.com\u002Fzhou13\u002Flcnn\u002Fissues\u002F31",{"id":91,"question_zh":92,"answer_zh":93,"source_url":94},40710,"如何可视化模型的输出结果？","请查看更新后的 README 文件以获取最新的可视化指南。通常可以使用 `post.py` 脚本配合生成的 `.npz` 文件进行绘图。如果遇到问题，可以尝试直接使用项目提供的 `.npz` 文件放在图片附近进行测试，或者参考 `dataset\u002Fwireframe.py` 来构建自定义数据集。","https:\u002F\u002Fgithub.com\u002Fzhou13\u002Flcnn\u002Fissues\u002F4",{"id":96,"question_zh":97,"answer_zh":98,"source_url":99},40711,"如何将其他方法（如 AFM）的结果转换为 lcnn 评估所需的 npz 格式？","虽然具体转换脚本未在片段中完全展示，但复现评估结果的关键在于确保预测线与真实值（GT）在传入 `lcnn.metric.msTPFP` 函数前正确匹配。如果遇到 sAP 分数显著低于论文报告值的情况，请检查线条匹配逻辑及可视化结果，确保输入格式与 lcnn 内部处理逻辑一致。建议参考项目中用于处理预训练模型的 `process.py` 和 `eval-*.py` 脚本逻辑。","https:\u002F\u002Fgithub.com\u002Fzhou13\u002Flcnn\u002Fissues\u002F24",{"id":101,"question_zh":102,"answer_zh":103,"source_url":89},40712,"在哪里可以下载预训练模型以及如何评估它们？","可以从 Google Drive 下载参考预训练模型。这些模型是使用 `config\u002Fwireframe.yaml` 配置训练了 312k 次迭代得到的。请使用 `demo.py`, `process.py`, 和 `eval-*.py` 脚本来评估这些预训练模型。",{"id":105,"question_zh":106,"answer_zh":107,"source_url":94},40713,"测试或验证阶段是否需要 Ground Truth (GT) 数据？","静态和动态采样器在测试期间不使用。如果在测试时遇到需要 GT 长度 N 的错误，可以通过修改代码逻辑，将 `lines` 的内容更改为任意值，或者初始化一个不包含 GT 信息的张量（如 `torch.zeros`）并调整索引逻辑，以实现训练与测试的完全分离。",[],[110,120,128,137,145,154],{"id":111,"name":112,"github_repo":113,"description_zh":114,"stars":115,"difficulty_score":40,"last_commit_at":116,"category_tags":117,"status":71},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,"2026-04-06T06:32:30",[118,57,119,58],"Agent","图像",{"id":121,"name":122,"github_repo":123,"description_zh":124,"stars":125,"difficulty_score":40,"last_commit_at":126,"category_tags":127,"status":71},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[57,119,118],{"id":129,"name":130,"github_repo":131,"description_zh":132,"stars":133,"difficulty_score":70,"last_commit_at":134,"category_tags":135,"status":71},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",160015,"2026-04-18T11:30:52",[57,118,136],"语言模型",{"id":138,"name":139,"github_repo":140,"description_zh":141,"stars":142,"difficulty_score":70,"last_commit_at":143,"category_tags":144,"status":71},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",109154,"2026-04-18T11:18:24",[57,119,118],{"id":146,"name":147,"github_repo":148,"description_zh":149,"stars":150,"difficulty_score":70,"last_commit_at":151,"category_tags":152,"status":71},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[153,118,119,57],"插件",{"id":155,"name":156,"github_repo":157,"description_zh":158,"stars":159,"difficulty_score":70,"last_commit_at":160,"category_tags":161,"status":71},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[153,57]]