[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-knazeri--edge-connect":3,"tool-knazeri--edge-connect":64},[4,17,27,35,43,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},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,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},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 真正成长为懂上",138956,2,"2026-04-05T11:33:21",[13,15,26],"语言模型",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":23,"last_commit_at":33,"category_tags":34,"status":16},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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[13,14,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":23,"last_commit_at":41,"category_tags":42,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,26],{"id":44,"name":45,"github_repo":46,"description_zh":47,"stars":48,"difficulty_score":23,"last_commit_at":49,"category_tags":50,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[14,51,52,53,15,54,26,13,55],"数据工具","视频","插件","其他","音频",{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[15,14,13,26,54],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":70,"readme_en":71,"readme_zh":72,"quickstart_zh":73,"use_case_zh":74,"hero_image_url":75,"owner_login":76,"owner_name":77,"owner_avatar_url":78,"owner_bio":79,"owner_company":80,"owner_location":81,"owner_email":82,"owner_twitter":76,"owner_website":83,"owner_url":84,"languages":85,"stars":94,"forks":95,"last_commit_at":96,"license":97,"difficulty_score":10,"env_os":98,"env_gpu":99,"env_ram":98,"env_deps":100,"category_tags":107,"github_topics":108,"view_count":23,"oss_zip_url":116,"oss_zip_packed_at":116,"status":16,"created_at":117,"updated_at":118,"faqs":119,"releases":158},2945,"knazeri\u002Fedge-connect","edge-connect","EdgeConnect: Structure Guided Image Inpainting using Edge Prediction, ICCV  2019 https:\u002F\u002Farxiv.org\u002Fabs\u002F1901.00212 ","EdgeConnect 是一款基于深度学习的开源图像修复工具，专为填补图片中缺失或损坏的区域而设计。它核心解决了传统修复方法在处理复杂纹理和精细结构时容易模糊、失真的难题，能够生成细节丰富且自然连贯的修复结果。\n\n该工具的独特之处在于模仿了艺术家“先勾勒线条，再填充色彩”的创作逻辑。它采用两阶段对抗生成网络架构：首先由边缘生成器预测并“幻觉”出缺失区域的轮廓结构，随后图像完成网络依据这些生成的边缘线索进行精准填充。这种“结构引导”的机制显著提升了修复画面的几何准确性和纹理真实感，尤其适用于处理不规则的大面积缺损。\n\nEdgeConnect 主要面向人工智能研究人员、计算机视觉开发者以及需要高质量图像修复算法的技术团队。由于项目基于 PyTorch 框架，并提供完整的训练与测试代码，使用者需具备一定的编程基础和深度学习环境配置能力（如 NVIDIA GPU 支持）。虽然普通用户难以直接通过命令行操作，但设计师可借助其生成的优质模型集成到工作流中，或作为技术参考理解前沿的图像生成原理。作为 ICCV 2019 的获奖成果，EdgeConnect 为图像编辑领域提供了重要的学术参考与工程实现","EdgeConnect 是一款基于深度学习的开源图像修复工具，专为填补图片中缺失或损坏的区域而设计。它核心解决了传统修复方法在处理复杂纹理和精细结构时容易模糊、失真的难题，能够生成细节丰富且自然连贯的修复结果。\n\n该工具的独特之处在于模仿了艺术家“先勾勒线条，再填充色彩”的创作逻辑。它采用两阶段对抗生成网络架构：首先由边缘生成器预测并“幻觉”出缺失区域的轮廓结构，随后图像完成网络依据这些生成的边缘线索进行精准填充。这种“结构引导”的机制显著提升了修复画面的几何准确性和纹理真实感，尤其适用于处理不规则的大面积缺损。\n\nEdgeConnect 主要面向人工智能研究人员、计算机视觉开发者以及需要高质量图像修复算法的技术团队。由于项目基于 PyTorch 框架，并提供完整的训练与测试代码，使用者需具备一定的编程基础和深度学习环境配置能力（如 NVIDIA GPU 支持）。虽然普通用户难以直接通过命令行操作，但设计师可借助其生成的优质模型集成到工作流中，或作为技术参考理解前沿的图像生成原理。作为 ICCV 2019 的获奖成果，EdgeConnect 为图像编辑领域提供了重要的学术参考与工程实现范本。","## EdgeConnect: Generative Image Inpainting with Adversarial Edge Learning\n[ArXiv](https:\u002F\u002Farxiv.org\u002Fabs\u002F1901.00212) | [BibTex](#citation)\n### Introduction:\nWe develop a new approach for image inpainting that does a better job of reproducing filled regions exhibiting fine details inspired by our understanding of how artists work: *lines first, color next*. We propose a two-stage adversarial model EdgeConnect that comprises of an edge generator followed by an image completion network. The edge generator hallucinates edges of the missing region (both regular and irregular) of the image, and the image completion network fills in the missing regions using hallucinated edges as a priori. Detailed description of the system can be found in our [paper](https:\u002F\u002Farxiv.org\u002Fabs\u002F1901.00212).\n\u003Cp align='center'>  \n  \u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fknazeri_edge-connect_readme_576c63b6f1ac.png' width='870'\u002F>\n\u003C\u002Fp>\n(a) Input images with missing regions. The missing regions are depicted in white. (b) Computed edge masks. Edges drawn in black are computed (for the available regions) using Canny edge detector; whereas edges shown in blue are hallucinated by the edge generator network. (c) Image inpainting results of the proposed approach.\n\n## Prerequisites\n- Python 3\n- PyTorch 1.0\n- NVIDIA GPU + CUDA cuDNN\n\n## Installation\n- Clone this repo:\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fknazeri\u002Fedge-connect.git\ncd edge-connect\n```\n- Install PyTorch and dependencies from http:\u002F\u002Fpytorch.org\n- Install python requirements:\n```bash\npip install -r requirements.txt\n```\n\n## Datasets\n### 1) Images\nWe use [Places2](http:\u002F\u002Fplaces2.csail.mit.edu), [CelebA](http:\u002F\u002Fmmlab.ie.cuhk.edu.hk\u002Fprojects\u002FCelebA.html) and [Paris Street-View](https:\u002F\u002Fgithub.com\u002Fpathak22\u002Fcontext-encoder) datasets. To train a model on the full dataset, download datasets from official websites. \n\nAfter downloading, run [`scripts\u002Fflist.py`](scripts\u002Fflist.py) to generate train, test and validation set file lists. For example, to generate the training set file list on Places2 dataset run:\n```bash\nmkdir datasets\npython .\u002Fscripts\u002Fflist.py --path path_to_places2_train_set --output .\u002Fdatasets\u002Fplaces_train.flist\n```\n\n### 2) Irregular Masks\nOur model is trained on the irregular mask dataset provided by [Liu et al.](https:\u002F\u002Farxiv.org\u002Fabs\u002F1804.07723). You can download publically available Irregular Mask Dataset from [their website](http:\u002F\u002Fmasc.cs.gmu.edu\u002Fwiki\u002Fpartialconv).\n\nAlternatively, you can download [Quick Draw Irregular Mask Dataset](https:\u002F\u002Fgithub.com\u002Fkarfly\u002Fqd-imd) by Karim Iskakov which is combination of 50 million strokes drawn by human hand.\n\nPlease use [`scripts\u002Fflist.py`](scripts\u002Fflist.py) to generate train, test and validation set masks file lists as explained above.\n\n## Getting Started\nDownload the pre-trained models using the following links and copy them under `.\u002Fcheckpoints` directory.\n\n[Places2](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F158ch9Psjop0mQEdeIp9DKjrYIGTDsZKN) | [CelebA](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F13JgMA5sKMYgRwHBp4f7PBc5orNJ_Cv-p) | [Paris-StreetView](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1hMGVz6Ck3erpP3BRNzG90HNCJl85kveN)\n\nAlternatively, you can run the following script to automatically download the pre-trained models:\n```bash\nbash .\u002Fscripts\u002Fdownload_model.sh\n```\n\n### 1) Training\nTo train the model, create a `config.yaml` file similar to the [example config file](https:\u002F\u002Fgithub.com\u002Fknazeri\u002Fedge-connect\u002Fblob\u002Fmaster\u002Fconfig.yml.example) and copy it under your checkpoints directory. Read the [configuration](#model-configuration) guide for more information on model configuration.\n\nEdgeConnect is trained in three stages: 1) training the edge model, 2) training the inpaint model and 3) training the joint model. To train the model:\n```bash\npython train.py --model [stage] --checkpoints [path to checkpoints]\n```\n\nFor example to train the edge model on Places2 dataset under `.\u002Fcheckpoints\u002Fplaces2` directory:\n```bash\npython train.py --model 1 --checkpoints .\u002Fcheckpoints\u002Fplaces2\n```\n\nConvergence of the model differs from dataset to dataset. For example Places2 dataset converges in one of two epochs, while smaller datasets like CelebA require almost 40 epochs to converge. You can set the number of training iterations by changing `MAX_ITERS` value in the configuration file.\n\n### 2) Testing\nTo test the model, create a `config.yaml` file similar to the [example config file](config.yml.example) and copy it under your checkpoints directory. Read the [configuration](#model-configuration) guide for more information on model configuration.\n\nYou can test the model on all three stages: 1) edge model, 2) inpaint model and 3) joint model. In each case, you need to provide an input image (image with a mask) and a grayscale mask file. Please make sure that the mask file covers the entire mask region in the input image. To test the model:\n```bash\npython test.py \\\n  --model [stage] \\\n  --checkpoints [path to checkpoints] \\\n  --input [path to input directory or file] \\\n  --mask [path to masks directory or mask file] \\\n  --output [path to the output directory]\n```\n\nWe provide some test examples under `.\u002Fexamples` directory. Please download the [pre-trained models](#getting-started) and run:\n```bash\npython test.py \\\n  --checkpoints .\u002Fcheckpoints\u002Fplaces2 \n  --input .\u002Fexamples\u002Fplaces2\u002Fimages \n  --mask .\u002Fexamples\u002Fplaces2\u002Fmasks\n  --output .\u002Fcheckpoints\u002Fresults\n```\nThis script will inpaint all images in `.\u002Fexamples\u002Fplaces2\u002Fimages` using their corresponding masks in `.\u002Fexamples\u002Fplaces2\u002Fmask` directory and saves the results in `.\u002Fcheckpoints\u002Fresults` directory. By default `test.py` script is run on stage 3 (`--model=3`).\n\n### 3) Evaluating\nTo evaluate the model, you need to first run the model in [test mode](#testing) against your validation set and save the results on disk. We provide a utility [`.\u002Fscripts\u002Fmetrics.py`](scripts\u002Fmetrics.py) to evaluate the model using PSNR, SSIM and Mean Absolute Error:\n\n```bash\npython .\u002Fscripts\u002Fmetrics.py --data-path [path to validation set] --output-path [path to model output]\n```\n\nTo measure the Fréchet Inception Distance (FID score) run [`.\u002Fscripts\u002Ffid_score.py`](scripts\u002Ffid_score.py). We utilize the PyTorch implementation of FID [from here](https:\u002F\u002Fgithub.com\u002Fmseitzer\u002Fpytorch-fid) which uses the pretrained weights from PyTorch's Inception model.\n\n```bash\npython .\u002Fscripts\u002Ffid_score.py --path [path to validation, path to model output] --gpu [GPU id to use]\n```\n\n### Alternative Edge Detection\nBy default, we use Canny edge detector to extract edge information from the input images. If you want to train the model with an external edge detection ([Holistically-Nested Edge Detection](https:\u002F\u002Fgithub.com\u002Fs9xie\u002Fhed) for example), you need to generate edge maps for the entire training\u002Ftest sets as a pre-processing and their corresponding file lists using [`scripts\u002Fflist.py`](scripts\u002Fflist.py) as explained above. Please make sure the file names and directory structure match your training\u002Ftest sets. You can switch to external edge detection by specifying `EDGE=2` in the config file.\n\n### Model Configuration\n\nThe model configuration is stored in a [`config.yaml`](config.yml.example) file under your checkpoints directory. The following tables provide the documentation for all the options available in the configuration file:\n\n#### General Model Configurations\n\nOption          | Description\n----------------| -----------\nMODE            | 1: train, 2: test, 3: eval\nMODEL           | 1: edge model, 2: inpaint model, 3: edge-inpaint model, 4: joint model\nMASK            | 1: random block, 2: half, 3: external, 4: external + random block, 5: external + random block + half\nEDGE            | 1: canny, 2: external\nNMS             | 0: no non-max-suppression, 1: non-max-suppression on the external edges\nSEED            | random number generator seed\nGPU             | list of gpu ids, comma separated list e.g. [0,1]\nDEBUG           | 0: no debug, 1: debugging mode\nVERBOSE         | 0: no verbose, 1: output detailed statistics in the output console\n\n#### Loading Train, Test and Validation Sets Configurations\n\nOption          | Description\n----------------| -----------\nTRAIN_FLIST     | text file containing training set files list\nVAL_FLIST       | text file containing validation set files list\nTEST_FLIST      | text file containing test set files list\nTRAIN_EDGE_FLIST| text file containing training set external edges files list (only with EDGE=2)\nVAL_EDGE_FLIST  | text file containing validation set external edges files list (only with EDGE=2)\nTEST_EDGE_FLIST | text file containing test set external edges files list (only with EDGE=2)\nTRAIN_MASK_FLIST| text file containing training set masks files list (only with MASK=3, 4, 5)\nVAL_MASK_FLIST  | text file containing validation set masks files list (only with MASK=3, 4, 5)\nTEST_MASK_FLIST | text file containing test set masks files list (only with MASK=3, 4, 5)\n\n#### Training Mode Configurations\n\nOption                 |Default| Description\n-----------------------|-------|------------\nLR                     | 0.0001| learning rate\nD2G_LR                 | 0.1   | discriminator\u002Fgenerator learning rate ratio\nBETA1                  | 0.0   | adam optimizer beta1\nBETA2                  | 0.9   | adam optimizer beta2\nBATCH_SIZE             | 8     | input batch size \nINPUT_SIZE             | 256   | input image size for training. (0 for original size)\nSIGMA                  | 2     | standard deviation of the Gaussian filter used in Canny edge detector \u003C\u002Fbr>(0: random, -1: no edge)\nMAX_ITERS              | 2e6   | maximum number of iterations to train the model\nEDGE_THRESHOLD         | 0.5   | edge detection threshold (0-1)\nL1_LOSS_WEIGHT         | 1     | l1 loss weight\nFM_LOSS_WEIGHT         | 10    | feature-matching loss weight\nSTYLE_LOSS_WEIGHT      | 1     | style loss weight\nCONTENT_LOSS_WEIGHT    | 1     | perceptual loss weight\nINPAINT_ADV_LOSS_WEIGHT| 0.01  | adversarial loss weight\nGAN_LOSS               | nsgan | **nsgan**: non-saturating gan, **lsgan**: least squares GAN, **hinge**: hinge loss GAN\nGAN_POOL_SIZE          | 0     | fake images pool size\nSAVE_INTERVAL          | 1000  | how many iterations to wait before saving model (0: never)\nEVAL_INTERVAL          | 0     | how many iterations to wait before evaluating the model (0: never)\nLOG_INTERVAL           | 10    | how many iterations to wait before logging training loss (0: never)\nSAMPLE_INTERVAL        | 1000  | how many iterations to wait before saving sample (0: never)\nSAMPLE_SIZE            | 12    | number of images to sample on each samling interval\n\n## License\nLicensed under a [Creative Commons Attribution-NonCommercial 4.0 International](https:\u002F\u002Fcreativecommons.org\u002Flicenses\u002Fby-nc\u002F4.0\u002F).\n\nExcept where otherwise noted, this content is published under a [CC BY-NC](https:\u002F\u002Fcreativecommons.org\u002Flicenses\u002Fby-nc\u002F4.0\u002F) license, which means that you can copy, remix, transform and build upon the content as long as you do not use the material for commercial purposes and give appropriate credit and provide a link to the license.\n\n\n## Citation\nIf you use this code for your research, please cite our papers \u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fabs\u002F1901.00212\">EdgeConnect: Generative Image Inpainting with Adversarial Edge Learning\u003C\u002Fa> or \u003Ca href=\"http:\u002F\u002Fopenaccess.thecvf.com\u002Fcontent_ICCVW_2019\u002Fhtml\u002FAIM\u002FNazeri_EdgeConnect_Structure_Guided_Image_Inpainting_using_Edge_Prediction_ICCVW_2019_paper.html\">EdgeConnect: Structure Guided Image Inpainting using Edge Prediction\u003C\u002Fa>:\n\n```\n@inproceedings{nazeri2019edgeconnect,\n  title={EdgeConnect: Generative Image Inpainting with Adversarial Edge Learning},\n  author={Nazeri, Kamyar and Ng, Eric and Joseph, Tony and Qureshi, Faisal and Ebrahimi, Mehran},\n  journal={arXiv preprint},\n  year={2019},\n}\n\n@InProceedings{Nazeri_2019_ICCV,\n  title = {EdgeConnect: Structure Guided Image Inpainting using Edge Prediction},\n  author = {Nazeri, Kamyar and Ng, Eric and Joseph, Tony and Qureshi, Faisal and Ebrahimi, Mehran},\n  booktitle = {The IEEE International Conference on Computer Vision (ICCV) Workshops},\n  month = {Oct},\n  year = {2019}\n}\n```\n","## EdgeConnect：基于对抗性边缘学习的生成式图像修复\n[ArXiv](https:\u002F\u002Farxiv.org\u002Fabs\u002F1901.00212) | [BibTex](#citation)\n### 引言：\n我们提出了一种新的图像修复方法，该方法能够更好地复原包含精细细节的填充区域。这一方法受到艺术家创作方式的启发——“先勾勒线条，再上色”。我们设计了一个两阶段的对抗模型EdgeConnect，它由一个边缘生成器和一个图像补全网络组成。边缘生成器会为图像中缺失的部分（包括规则和不规则的边缘）“幻化”出边缘信息，而图像补全网络则以这些“幻化”的边缘作为先验信息来填充缺失区域。系统的详细描述请参阅我们的论文[此处](https:\u002F\u002Farxiv.org\u002Fabs\u002F1901.00212)。\n\u003Cp align='center'>  \n  \u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fknazeri_edge-connect_readme_576c63b6f1ac.png' width='870'\u002F>\n\u003C\u002Fp>\n(a) 包含缺失区域的输入图像。缺失区域以白色显示。(b) 计算得到的边缘掩码。黑色线条是使用Canny边缘检测器计算得出的现有区域边缘；蓝色线条则是由边缘生成器“幻化”出来的边缘。(c) 提出方法的图像修复结果。\n\n## 前置条件\n- Python 3\n- PyTorch 1.0\n- NVIDIA GPU + CUDA cuDNN\n\n## 安装\n- 克隆本仓库：\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fknazeri\u002Fedge-connect.git\ncd edge-connect\n```\n- 从http:\u002F\u002Fpytorch.org安装PyTorch及其依赖项。\n- 安装Python所需的依赖包：\n```bash\npip install -r requirements.txt\n```\n\n## 数据集\n### 1) 图像\n我们使用了[Places2](http:\u002F\u002Fplaces2.csail.mit.edu)、[CelebA](http:\u002F\u002Fmmlab.ie.cuhk.edu.hk\u002Fprojects\u002FCelebA.html)以及[巴黎街景](https:\u002F\u002Fgithub.com\u002Fpathak22\u002Fcontext-encoder)数据集。若要在完整数据集上训练模型，请从官方网站下载相应数据集。\n\n下载完成后，运行[`scripts\u002Fflist.py`](scripts\u002Fflist.py)以生成训练集、测试集和验证集的文件列表。例如，在Places2数据集上生成训练集文件列表时，可执行以下命令：\n```bash\nmkdir datasets\npython .\u002Fscripts\u002Fflist.py --path path_to_places2_train_set --output .\u002Fdatasets\u002Fplaces_train.flist\n```\n\n### 2) 不规则掩码\n我们的模型是在[Liu等人](https:\u002F\u002Farxiv.org\u002Fabs\u002F1804.07723)提供的不规则掩码数据集上训练的。您也可以从他们的网站[此处](http:\u002F\u002Fmasc.cs.gmu.edu\u002Fwiki\u002Fpartialconv)下载公开可用的不规则掩码数据集。\n\n此外，您还可以下载Karim Iskakov提供的[Quick Draw不规则掩码数据集](https:\u002F\u002Fgithub.com\u002Fkarfly\u002Fqd-imd)，该数据集包含了5000万笔由人类手绘的笔触。\n\n请使用[`scripts\u002Fflist.py`](scripts\u002Fflist.py)按照上述说明生成训练集、测试集和验证集的掩码文件列表。\n\n## 快速入门\n请通过以下链接下载预训练模型，并将其复制到`.\u002Fcheckpoints`目录下。\n\n[Places2](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F158ch9Psjop0mQEdeIp9DKjrYIGTDsZKN) | [CelebA](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F13JgMA5sKMYgRwHBp4f7PBc5orNJ_Cv-p) | [巴黎街景](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1hMGVz6Ck3erpP3BRNzG90HNCJl85kveN)\n\n或者，您也可以运行以下脚本自动下载预训练模型：\n```bash\nbash .\u002Fscripts\u002Fdownload_model.sh\n```\n\n### 1) 训练\n要训练模型，请创建一个类似于[示例配置文件](https:\u002F\u002Fgithub.com\u002Fknazeri\u002Fedge-connect\u002Fblob\u002Fmaster\u002Fconfig.yml.example)的`config.yaml`文件，并将其复制到您的检查点目录下。有关模型配置的更多信息，请参阅[配置指南](#model-configuration)。\n\nEdgeConnect的训练分为三个阶段：1) 训练边缘模型，2) 训练修复模型，3) 训练联合模型。训练模型时，可执行以下命令：\n```bash\npython train.py --model [stage] --checkpoints [路径]\n```\n\n例如，在`.\u002Fcheckpoints\u002Fplaces2`目录下对Places2数据集的边缘模型进行训练：\n```bash\npython train.py --model 1 --checkpoints .\u002Fcheckpoints\u002Fplaces2\n```\n\n不同数据集的收敛速度有所差异。例如，Places2数据集通常在一到两个epoch内即可收敛，而规模较小的CelebA数据集则可能需要近40个epoch才能收敛。您可以通过修改配置文件中的`MAX_ITERS`值来设置训练迭代次数。\n\n### 2) 测试\n要测试模型，请创建一个类似于[示例配置文件](config.yml.example)的`config.yaml`文件，并将其复制到您的检查点目录下。有关模型配置的更多信息，请参阅[配置指南](#model-configuration)。\n\n您可以在三个阶段分别测试模型：1) 边缘模型，2) 修复模型，3) 联合模型。在每种情况下，都需要提供一张带有掩码的输入图像以及对应的灰度掩码文件。请确保掩码文件覆盖了输入图像中的整个掩码区域。测试模型时，可执行以下命令：\n```bash\npython test.py \\\n  --model [stage] \\\n  --checkpoints [路径] \\\n  --input [输入目录或文件路径] \\\n  --mask [掩码目录或文件路径] \\\n  --output [输出目录路径]\n```\n\n我们在`.\u002Fexamples`目录下提供了一些测试示例。请先下载[预训练模型](#getting-started)，然后运行以下命令：\n```bash\npython test.py \\\n  --checkpoints .\u002Fcheckpoints\u002Fplaces2 \n  --input .\u002Fexamples\u002Fplaces2\u002Fimages \n  --mask .\u002Fexamples\u002Fplaces2\u002Fmasks\n  --output .\u002Fcheckpoints\u002Fresults\n```\n\n此脚本将使用`.\u002Fexamples\u002Fplaces2\u002Fmask`目录中的对应掩码修复`.\u002Fexamples\u002Fplaces2\u002Fimages`目录中的所有图像，并将结果保存到`.\u002Fcheckpoints\u002Fresults`目录中。默认情况下，`test.py`脚本会在第三阶段（`--model=3`）运行。\n\n### 3) 评估\n要评估模型，首先需要以[测试模式](#testing)在您的验证集上运行模型，并将结果保存到磁盘上。我们提供了一个实用工具[`.\u002Fscripts\u002Fmetrics.py`](scripts\u002Fmetrics.py)，用于通过PSNR、SSIM和平均绝对误差来评估模型性能：\n\n```bash\npython .\u002Fscripts\u002Fmetrics.py --data-path [验证集路径] --output-path [模型输出路径]\n```\n\n若需测量弗雷歇起始距离（FID分数），可运行[`.\u002Fscripts\u002Ffid_score.py`](scripts\u002Ffid_score.py)。我们使用来自[此处](https:\u002F\u002Fgithub.com\u002Fmseitzer\u002Fpytorch-fid)的PyTorch实现版本，该版本采用了PyTorch Inception模型的预训练权重。\n\n```bash\npython .\u002Fscripts\u002Ffid_score.py --path [验证集路径、模型输出路径] --gpu [要使用的GPU编号]\n```\n\n### 替代边缘检测\n默认情况下，我们使用 Canny 边缘检测器从输入图像中提取边缘信息。如果您希望使用外部边缘检测方法（例如 [Holistically-Nested Edge Detection](https:\u002F\u002Fgithub.com\u002Fs9xie\u002Fhed)）来训练模型，则需要作为预处理步骤为整个训练\u002F测试集生成边缘图，并使用上述说明的 [`scripts\u002Fflist.py`](scripts\u002Fflist.py) 生成相应的文件列表。请确保文件名和目录结构与您的训练\u002F测试集一致。您可以通过在配置文件中指定 `EDGE=2` 来切换到外部边缘检测。\n\n### 模型配置\n\n模型配置存储在您的检查点目录下的 [`config.yaml`](config.yml.example) 文件中。以下表格提供了配置文件中所有可用选项的说明：\n\n#### 通用模型配置\n\n选项          | 描述\n----------------| -----------\nMODE            | 1: 训练，2: 测试，3: 评估\nMODEL           | 1: 边缘模型，2: 图像修复模型，3: 边缘-修复联合模型，4: 联合模型\nMASK            | 1: 随机块，2: 半幅，3: 外部掩码，4: 外部 + 随机块，5: 外部 + 随机块 + 半幅\nEDGE            | 1: Canny，2: 外部\nNMS             | 0: 不进行非极大值抑制，1: 对外部边缘进行非极大值抑制\nSEED            | 随机数生成器种子\nGPU             | GPU ID 列表，用逗号分隔，例如 [0,1]\nDEBUG           | 0: 不调试，1: 调试模式\nVERBOSE         | 0: 不输出详细信息，1: 在输出控制台中显示详细统计信息\n\n#### 加载训练、测试和验证集的配置\n\n选项          | 描述\n----------------| -----------\nTRAIN_FLIST     | 包含训练集文件列表的文本文件\nVAL_FLIST       | 包含验证集文件列表的文本文件\nTEST_FLIST      | 包含测试集文件列表的文本文件\nTRAIN_EDGE_FLIST| 包含训练集外部边缘文件列表的文本文件（仅当 EDGE=2 时）\nVAL_EDGE_FLIST  | 包含验证集外部边缘文件列表的文本文件（仅当 EDGE=2 时）\nTEST_EDGE_FLIST | 包含测试集外部边缘文件列表的文本文件（仅当 EDGE=2 时）\nTRAIN_MASK_FLIST| 包含训练集掩码文件列表的文本文件（仅当 MASK=3, 4, 5 时）\nVAL_MASK_FLIST  | 包含验证集掩码文件列表的文本文件（仅当 MASK=3, 4, 5 时）\nTEST_MASK_FLIST | 包含测试集掩码文件列表的文本文件（仅当 MASK=3, 4, 5 时）\n\n#### 训练模式配置\n\n选项                 | 默认值| 描述\n-----------------------|-------|------------\nLR                     | 0.0001| 学习率\nD2G_LR                 | 0.1   | 判别器\u002F生成器学习率比例\nBETA1                  | 0.0   | Adam 优化器的 beta1 参数\nBETA2                  | 0.9   | Adam 优化器的 beta2 参数\nBATCH_SIZE             | 8     | 输入批次大小\nINPUT_SIZE             | 256   | 训练时的输入图像尺寸。（0 表示原始尺寸）\nSIGMA                  | 2     | Canny 边缘检测中使用的高斯滤波器的标准差 \u003C\u002Fbr>（0: 随机，-1: 无边缘）\nMAX_ITERS              | 2e6   | 训练模型的最大迭代次数\nEDGE_THRESHOLD         | 0.5   | 边缘检测阈值（0-1）\nL1_LOSS_WEIGHT         | 1     | L1 损失权重\nFM_LOSS_WEIGHT         | 10    | 特征匹配损失权重\nSTYLE_LOSS_WEIGHT      | 1     | 风格损失权重\nCONTENT_LOSS_WEIGHT    | 1     | 知觉损失权重\nINPAINT_ADV_LOSS_WEIGHT| 0.01  | 对抗损失权重\nGAN_LOSS               | nsgan | **nsgan**: 非饱和 GAN，**lsgan**: 最小二乘 GAN，**hinge**: hinge 损失 GAN\nGAN_POOL_SIZE          | 0     | 假图像池大小\nSAVE_INTERVAL          | 1000  | 多少次迭代后保存一次模型（0: 永不保存）\nEVAL_INTERVAL          | 0     | 多少次迭代后对模型进行一次评估（0: 永不评估）\nLOG_INTERVAL           | 10    | 多少次迭代后记录一次训练损失（0: 永不记录）\nSAMPLE_INTERVAL        | 1000  | 多少次迭代后保存一次样本（0: 永不保存）\nSAMPLE_SIZE            | 12    | 每次采样时采集的图像数量\n\n## 许可证\n根据 [知识共享署名-非商业性使用 4.0 国际许可协议](https:\u002F\u002Fcreativecommons.org\u002Flicenses\u002Fby-nc\u002F4.0\u002F) 授权。\n\n除非另有说明，本内容以 [CC BY-NC](https:\u002F\u002Fcreativecommons.org\u002Flicenses\u002Fby-nc\u002F4.0\u002F) 许可协议发布，这意味着您可以复制、混编、转换和基于本内容进行创作，但不得将该材料用于商业目的，并需适当注明出处及提供许可协议链接。\n\n\n## 引用\n如果您在研究中使用此代码，请引用我们的论文 \u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fabs\u002F1901.00212\">EdgeConnect: 使用对抗式边缘学习的生成式图像修复\u003C\u002Fa> 或 \u003Ca href=\"http:\u002F\u002Fopenaccess.thecvf.com\u002Fcontent_ICCVW_2019\u002Fhtml\u002FAIM\u002FNazeri_EdgeConnect_Structure_Guided_Image_Inpainting_using_Edge_Prediction_ICCVW_2019_paper.html\">EdgeConnect: 基于边缘预测的结构引导图像修复\u003C\u002Fa>：\n\n```\n@inproceedings{nazeri2019edgeconnect,\n  title={EdgeConnect: Generative Image Inpainting with Adversarial Edge Learning},\n  author={Nazeri, Kamyar and Ng, Eric and Joseph, Tony and Qureshi, Faisal and Ebrahimi, Mehran},\n  journal={arXiv preprint},\n  year={2019},\n}\n\n@InProceedings{Nazeri_2019_ICCV,\n  title = {EdgeConnect: Structure Guided Image Inpainting using Edge Prediction},\n  author = {Nazeri, Kamyar and Ng, Eric and Joseph, Tony and Qureshi, Faisal and Ebrahimi, Mehran},\n  booktitle = {The IEEE International Conference on Computer Vision (ICCV) Workshops},\n  month = {Oct},\n  year = {2019}\n}\n```","# EdgeConnect 快速上手指南\n\nEdgeConnect 是一个基于对抗边缘学习的生成式图像修复（Inpainting）工具。其核心理念是“先线条，后颜色”，通过两阶段模型（边缘生成器 + 图像补全网络）来重建缺失区域的精细细节。\n\n## 环境准备\n\n在开始之前，请确保您的系统满足以下要求：\n\n*   **操作系统**: Linux (推荐) 或 macOS\n*   **Python**: 3.x\n*   **深度学习框架**: PyTorch 1.0+\n*   **硬件**: NVIDIA GPU 及对应的 CUDA 和 cuDNN 支持\n*   **依赖库**: 详见 `requirements.txt`\n\n> **国内开发者提示**：安装 PyTorch 时，建议访问 [PyTorch 官网](https:\u002F\u002Fpytorch.org\u002F) 选择对应环境的命令，或使用清华\u002F中科大镜像源加速 pip 包安装。\n\n## 安装步骤\n\n### 1. 克隆项目\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fknazeri\u002Fedge-connect.git\ncd edge-connect\n```\n\n### 2. 安装依赖\n首先根据官方指引安装 PyTorch，然后安装项目所需的其他 Python 包：\n```bash\npip install -r requirements.txt\n```\n*(注：国内用户可使用 `pip install -r requirements.txt -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple` 加速下载)*\n\n### 3. 获取预训练模型\n您可以手动下载模型并放入 `.\u002Fcheckpoints` 目录，或使用脚本自动下载：\n```bash\nbash .\u002Fscripts\u002Fdownload_model.sh\n```\n*支持的数据库集包括：Places2, CelebA, Paris-StreetView。*\n\n### 4. 准备数据集（可选，如需重新训练）\n如果仅需使用预训练模型进行测试，可跳过此步。若需训练，需准备图像和不规则掩码（Irregular Masks），并使用脚本生成文件列表：\n```bash\nmkdir datasets\n# 示例：为 Places2 训练集生成文件列表\npython .\u002Fscripts\u002Fflist.py --path path_to_places2_train_set --output .\u002Fdatasets\u002Fplaces_train.flist\n```\n\n## 基本使用\n\n本工具的使用分为三个阶段：边缘模型、修复模型、联合模型。默认测试使用阶段 3（联合模型），效果最佳。\n\n### 1. 配置文件\n在 `.\u002Fcheckpoints` 目录下创建 `config.yaml` 文件。您可以复制示例文件进行修改：\n```bash\ncp config.yml.example .\u002Fcheckpoints\u002Fconfig.yaml\n```\n*注意：确保配置中的路径与您实际存放模型和数据的路径一致。*\n\n### 2. 运行测试（图像修复）\n准备一张带有缺失区域（白色遮罩）的输入图片和对应的灰度掩码图片（mask），运行以下命令：\n\n```bash\npython test.py \\\n  --checkpoints .\u002Fcheckpoints\u002Fplaces2 \\\n  --input .\u002Fexamples\u002Fplaces2\u002Fimages \\\n  --mask .\u002Fexamples\u002Fplaces2\u002Fmasks \\\n  --output .\u002Fcheckpoints\u002Fresults\n```\n\n**参数说明：**\n*   `--checkpoints`: 预训练模型所在目录。\n*   `--input`: 输入图片目录或单张图片路径。\n*   `--mask`: 对应的掩码图片目录或单个掩码路径（需覆盖输入图中的缺失区域）。\n*   `--output`: 修复结果保存目录。\n*   `--model`: 默认为 3（联合模型），也可指定 1 (边缘) 或 2 (修复)。\n\n执行完成后，修复后的图片将保存在 `--output` 指定的目录中。\n\n### 3. 模型训练（进阶）\n如需从头训练模型，需按顺序训练三个阶段。以下为训练边缘模型的示例：\n```bash\npython train.py --model 1 --checkpoints .\u002Fcheckpoints\u002Fplaces2\n```\n*   `--model 1`: 训练边缘生成器。\n*   `--model 2`: 训练图像补全网络。\n*   `--model 3`: 联合训练。\n\n具体超参数（如学习率、迭代次数等）请在 `config.yaml` 中调整。","某数字修复团队在处理一批珍贵老照片时，发现部分照片因年代久远出现了人物面部或背景建筑的大面积破损，急需进行高保真还原。\n\n### 没有 edge-connect 时\n- 传统修复工具仅依靠像素颜色扩散，导致填补区域模糊不清，完全丢失了原本的建筑线条或五官轮廓。\n- 面对不规则的大面积缺失，算法无法理解结构逻辑，常生成扭曲变形的纹理，需要人工逐帧重绘，耗时极长。\n- 修复后的图像缺乏细节层次，边缘过渡生硬，难以达到出版级或展览级的清晰度要求。\n- 对于复杂场景（如巴黎街景或人群），模型容易将不同物体的结构混淆，产生违背常识的视觉伪影。\n\n### 使用 edge-connect 后\n- 利用“先预测边缘，再填充颜色”的两阶段机制，精准重建了缺失区域的骨架线条，使建筑透视和人物五官清晰锐利。\n- 即使面对极不规则的破损掩膜，也能通过对抗生成网络“幻觉”出合理的边缘结构，大幅减少人工干预成本。\n- 生成的图像在保持整体风格一致的同时，恢复了丰富的纹理细节，视觉效果自然逼真，直接可用。\n- 在复杂场景中能准确区分不同物体的边界，避免了结构错乱，确保修复结果符合几何逻辑与视觉常识。\n\nedge-connect 通过模拟艺术家“先勾线后上色”的创作逻辑，彻底解决了传统图像修复中结构丢失与细节模糊的核心难题。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fknazeri_edge-connect_576c63b6.png","knazeri","Kamyar Nazeri","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fknazeri_ecbebc8d.jpg","Crafting codes to perfection.","Harris Computer","Toronto, ON, Canada","kamyar.nzr@gmail.com","knazeri.github.io","https:\u002F\u002Fgithub.com\u002Fknazeri",[86,90],{"name":87,"color":88,"percentage":89},"Python","#3572A5",99.4,{"name":91,"color":92,"percentage":93},"Shell","#89e051",0.6,2618,533,"2026-04-03T19:01:42","NOASSERTION","未说明","必需 NVIDIA GPU，需支持 CUDA 和 cuDNN（具体版本未说明，依赖 PyTorch 1.0 兼容性）",{"notes":101,"python":102,"dependencies":103},"该工具基于较旧的 PyTorch 1.0 版本开发。训练分为三个阶段：边缘模型、修复模型和联合模型。需预先准备数据集和不规则掩码（Irregular Masks）的文件列表。默认使用 Canny 边缘检测器，也支持外部边缘检测模型（如 HED）。配置通过 config.yaml 文件管理。","3",[104,105,106],"PyTorch 1.0","CUDA","cuDNN",[14,13],[109,110,111,112,113,114,115],"edgeconnect","image-inpainting","generative-adversarial-network","gans","canny-edge-detection","deep-learning","pytorch",null,"2026-03-27T02:49:30.150509","2026-04-06T05:27:03.015936",[120,125,130,135,139,143,148,153],{"id":121,"question_zh":122,"answer_zh":123,"source_url":124},13600,"训练过程中只运行了一个 epoch 就结束，且没有保存模型，如何解决？","这通常是因为数据集文件列表（flist）生成不正确或为空，导致迭代器无法获取足够的数据。请检查生成的 .flist 文件是否为空。如果是使用 CelebA 等数据集，确保掩码（mask）文件数量与图像数量匹配（例如通过增强将 12,000 个掩码扩展到与图像数一致）。如果问题依旧，可以尝试临时设置 max_iteration 为一个较大值（如 999 以上）以防止意外停止，但根本解决方法是修正数据加载逻辑和文件列表。","https:\u002F\u002Fgithub.com\u002Fknazeri\u002Fedge-connect\u002Fissues\u002F39",{"id":126,"question_zh":127,"answer_zh":128,"source_url":129},13601,"训练时报错 'ValueError: empty range for randrange() (0,0, 0)'，这是什么原因？","该错误表明掩码数据集（mask dataset）为空或无法读取，导致代码在尝试随机选择掩码索引时范围为空。请检查你的掩码文件路径是否正确，以及掩码文件夹中是否确实包含文件。维护者建议务必使用官方的 [不规则掩码数据集 (Irregular Mask Dataset)](http:\u002F\u002Fmasc.cs.gmu.edu\u002Fwiki\u002Fuploads\u002Fpartialconv\u002Fmask.zip) 进行训练，并确保配置文件中的路径指向正确。","https:\u002F\u002Fgithub.com\u002Fknazeri\u002Fedge-connect\u002Fissues\u002F65",{"id":131,"question_zh":132,"answer_zh":133,"source_url":134},13602,"配置文件中提到的多种掩码类型（random block, half, external 等）分别代表什么意思？","这些选项定义了训练时使用的掩码形状策略：\n1. random block: 随机矩形块掩码。\n2. half: 一半图像被掩码覆盖。\n3. external: 使用外部提供的掩码数据集（如不规则掩码）。\n4. (external, random block): 混合使用外部掩码和随机矩形块。\n5. (external, random block, half): 混合使用上述所有三种类型。\n为了复现论文效果，建议使用包含不规则形状的混合模式，并配合官方提供的 Irregular Mask Dataset。","https:\u002F\u002Fgithub.com\u002Fknazeri\u002Fedge-connect\u002Fissues\u002F35",{"id":136,"question_zh":137,"answer_zh":138,"source_url":134},13603,"想要复现论文中的效果，损失函数权重（Loss Weights）应该如何设置？","为了获得最佳训练效果并复现论文结果，需要在配置文件中将损失权重设置为以下特定值：\nSTYLE_LOSS_WEIGHT: 250\nCONTENT_LOSS_WEIGHT: 0.1\nINPAINT_ADV_LOSS_WEIGHT: 0.1\n如果不调整这些参数，可能会导致生成结果模糊或训练不稳定。",{"id":140,"question_zh":141,"answer_zh":142,"source_url":129},13604,"如何生成用于 Places2 数据集的边缘文件列表（edge flist）或草图文件？","代码中的 mode 4 仅用于内部测试和非官方实现。对于标准的联合模型训练，应使用 mode 3。关于边缘文件或草图的生成，通常需要先运行边缘检测算法（如 Canny 或 HED）处理原始图像生成边缘图，然后使用项目提供的 `scripts\u002Fflist.py` 脚本对这些边缘图路径生成列表文件。具体命令参考：`python .\u002Fscripts\u002Fflist.py --path \u003C边缘图目录> --output \u003C输出列表路径>`。",{"id":144,"question_zh":145,"answer_zh":146,"source_url":147},13605,"Places2 数据集训练时是直接使用全图还是进行裁剪？为什么与其他方法不同？","由于模型依赖边缘信息的重建，训练时需要几乎完整的图像信息。Places2 全尺寸图像较大，如果像其他方法（如 Contextual Attention）那样随机裁剪 256x256 区域，可能会导致裁剪块中没有任何边缘信息或只包含无意义的物体部分。因此，本模型在统计计算时会保持宽高比固定，而不是简单的随机裁剪，以确保边缘结构的完整性。这也是本模型与对比模型的主要区别之一。","https:\u002F\u002Fgithub.com\u002Fknazeri\u002Fedge-connect\u002Fissues\u002F28",{"id":149,"question_zh":150,"answer_zh":151,"source_url":152},13606,"模型检查点（checkpoints）保存在哪里？如何指定保存路径？","模型保存路径取决于运行模型时提供的 checkpoints 路径参数。在代码中，`config.PATH` 是根据你提供的路径定义的（参见 `src\u002Fconfig.py`），模型会根据该路径保存（参见 `src\u002Fmodels.py`）。如果你找不到保存的模型，请调试这两处代码，确认运行时传入的路径参数是否正确，以及程序是否有权限在该目录下写入文件。","https:\u002F\u002Fgithub.com\u002Fknazeri\u002Fedge-connect\u002Fissues\u002F82",{"id":154,"question_zh":155,"answer_zh":156,"source_url":157},13607,"训练 Edge 模型时生成器损失（gen_loss）波动很大，且 LR 和 D2G_LR 参数是什么意思？","LR 是学习率（Learning Rate），D2G_LR 是判别器对生成器的学习率比率（Discriminator to Generator Learning Rate Ratio）。如果 gen_loss 波动剧烈且边缘生成效果不佳，可能是 D2G_LR 设置过大导致判别器更新过快，压制了生成器。建议适当减小 D2G_LR 的值（例如从 0.1 调低），以平衡两者的训练速度，使生成器能更稳定地学习边缘特征。","https:\u002F\u002Fgithub.com\u002Fknazeri\u002Fedge-connect\u002Fissues\u002F33",[]]