[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-CSAILVision--semantic-segmentation-pytorch":3,"tool-CSAILVision--semantic-segmentation-pytorch":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},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,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},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",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},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 真正成长为懂上",147882,2,"2026-04-09T11:32:47",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108111,"2026-04-08T11:23:26",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},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",[52,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":10,"last_commit_at":59,"category_tags":60,"status":17},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,"2026-04-06T11:19:32",[35,15,13,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":67,"readme_en":68,"readme_zh":69,"quickstart_zh":70,"use_case_zh":71,"hero_image_url":72,"owner_login":73,"owner_name":74,"owner_avatar_url":75,"owner_bio":76,"owner_company":77,"owner_location":77,"owner_email":77,"owner_twitter":77,"owner_website":78,"owner_url":79,"languages":80,"stars":93,"forks":94,"last_commit_at":95,"license":96,"difficulty_score":10,"env_os":97,"env_gpu":98,"env_ram":99,"env_deps":100,"category_tags":110,"github_topics":111,"view_count":32,"oss_zip_url":77,"oss_zip_packed_at":77,"status":17,"created_at":116,"updated_at":117,"faqs":118,"releases":149},5962,"CSAILVision\u002Fsemantic-segmentation-pytorch","semantic-segmentation-pytorch","Pytorch implementation for Semantic Segmentation\u002FScene Parsing on MIT ADE20K dataset","semantic-segmentation-pytorch 是一个基于 PyTorch 框架开发的开源项目，专注于在著名的 MIT ADE20K 数据集上实现高精度的语义分割与场景解析。它的核心任务是将图像中的每个像素分类到特定的语义类别中（如区分道路、建筑、行人等），从而让计算机真正“看懂”图片内容。\n\n该项目主要解决了深度学习在语义分割任务中训练难度大、多显卡协同效率低以及复现顶尖模型复杂等痛点。它特别适合计算机视觉领域的研究人员、算法工程师以及希望深入理解分割模型的开发者使用。虽然普通用户也可以通过其提供的在线演示上传照片体验效果，但其核心价值在于为专业人群提供了坚实的代码基础。\n\n在技术亮点方面，semantic-segmentation-pytorch 实现了高效的同步批归一化（Synchronized Batch Normalization），确保在多设备训练时能统计全局均值与方差，这对提升大批次训练的分割精度至关重要。此外，它还创新性地重构了数据并行模块，支持动态输入尺度，允许不同尺寸的图像在同一批次中分配至不同 GPU 处理，既保持了图像原始宽高比，又显著提升了多卡训练","semantic-segmentation-pytorch 是一个基于 PyTorch 框架开发的开源项目，专注于在著名的 MIT ADE20K 数据集上实现高精度的语义分割与场景解析。它的核心任务是将图像中的每个像素分类到特定的语义类别中（如区分道路、建筑、行人等），从而让计算机真正“看懂”图片内容。\n\n该项目主要解决了深度学习在语义分割任务中训练难度大、多显卡协同效率低以及复现顶尖模型复杂等痛点。它特别适合计算机视觉领域的研究人员、算法工程师以及希望深入理解分割模型的开发者使用。虽然普通用户也可以通过其提供的在线演示上传照片体验效果，但其核心价值在于为专业人群提供了坚实的代码基础。\n\n在技术亮点方面，semantic-segmentation-pytorch 实现了高效的同步批归一化（Synchronized Batch Normalization），确保在多设备训练时能统计全局均值与方差，这对提升大批次训练的分割精度至关重要。此外，它还创新性地重构了数据并行模块，支持动态输入尺度，允许不同尺寸的图像在同一批次中分配至不同 GPU 处理，既保持了图像原始宽高比，又显著提升了多卡训练效率。项目内置了 PSPNet、UPerNet 及 HRNet 等多种业界领先的预训练模型，方便用户直接调用或作为基准进行二次开发。","# Semantic Segmentation on MIT ADE20K dataset in PyTorch\n\nThis is a PyTorch implementation of semantic segmentation models on MIT ADE20K scene parsing dataset (http:\u002F\u002Fsceneparsing.csail.mit.edu\u002F).\n\nADE20K is the largest open source dataset for semantic segmentation and scene parsing, released by MIT Computer Vision team. Follow the link below to find the repository for our dataset and implementations on Caffe and Torch7:\nhttps:\u002F\u002Fgithub.com\u002FCSAILVision\u002Fsceneparsing\n\nIf you simply want to play with our demo, please try this link: http:\u002F\u002Fscenesegmentation.csail.mit.edu You can upload your own photo and parse it!\n\n[You can also use this colab notebook playground here](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002FCSAILVision\u002Fsemantic-segmentation-pytorch\u002Fblob\u002Fmaster\u002Fnotebooks\u002FDemoSegmenter.ipynb) to tinker with the code for segmenting an image.\n\nAll pretrained models can be found at:\nhttp:\u002F\u002Fsceneparsing.csail.mit.edu\u002Fmodel\u002Fpytorch\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FCSAILVision_semantic-segmentation-pytorch_readme_73faa70434f0.png\" width=\"900\"\u002F>\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FCSAILVision_semantic-segmentation-pytorch_readme_2a2feeb7aa81.png\" width=\"900\"\u002F>\n[From left to right: Test Image, Ground Truth, Predicted Result]\n\nColor encoding of semantic categories can be found here:\nhttps:\u002F\u002Fdocs.google.com\u002Fspreadsheets\u002Fd\u002F1se8YEtb2detS7OuPE86fXGyD269pMycAWe2mtKUj2W8\u002Fedit?usp=sharing\n\n## Updates\n- HRNet model is now supported.\n- We use configuration files to store most options which were in argument parser. The definitions of options are detailed in ```config\u002Fdefaults.py```.\n- We conform to Pytorch practice in data preprocessing (RGB [0, 1], substract mean, divide std).\n\n\n## Highlights\n\n### Syncronized Batch Normalization on PyTorch\nThis module computes the mean and standard-deviation across all devices during training. We empirically find that a reasonable large batch size is important for segmentation. We thank [Jiayuan Mao](http:\u002F\u002Fvccy.xyz\u002F) for his kind contributions, please refer to [Synchronized-BatchNorm-PyTorch](https:\u002F\u002Fgithub.com\u002Fvacancy\u002FSynchronized-BatchNorm-PyTorch) for details.\n\nThe implementation is easy to use as:\n- It is pure-python, no C++ extra extension libs.\n- It is completely compatible with PyTorch's implementation. Specifically, it uses unbiased variance to update the moving average, and use sqrt(max(var, eps)) instead of sqrt(var + eps).\n- It is efficient, only 20% to 30% slower than UnsyncBN.\n\n### Dynamic scales of input for training with multiple GPUs \nFor the task of semantic segmentation, it is good to keep aspect ratio of images during training. So we re-implement the `DataParallel` module, and make it support distributing data to multiple GPUs in python dict, so that each gpu can process images of different sizes. At the same time, the dataloader also operates differently. \n\n\u003Csup>*Now the batch size of a dataloader always equals to the number of GPUs*, each element will be sent to a GPU. It is also compatible with multi-processing. Note that the file index for the multi-processing dataloader is stored on the master process, which is in contradict to our goal that each worker maintains its own file list. So we use a trick that although the master process still gives dataloader an index for `__getitem__` function, we just ignore such request and send a random batch dict. Also, *the multiple workers forked by the dataloader all have the same seed*, you will find that multiple workers will yield exactly the same data, if we use the above-mentioned trick directly. Therefore, we add one line of code which sets the defaut seed for `numpy.random` before activating multiple worker in dataloader.\u003C\u002Fsup>\n\n### State-of-the-Art models\n- **PSPNet** is scene parsing network that aggregates global representation with Pyramid Pooling Module (PPM). It is the winner model of ILSVRC'16 MIT Scene Parsing Challenge. Please refer to [https:\u002F\u002Farxiv.org\u002Fabs\u002F1612.01105](https:\u002F\u002Farxiv.org\u002Fabs\u002F1612.01105) for details.\n- **UPerNet** is a model based on Feature Pyramid Network (FPN) and Pyramid Pooling Module (PPM). It doesn't need dilated convolution, an operator that is time-and-memory consuming. *Without bells and whistles*, it is comparable or even better compared with PSPNet, while requiring much shorter training time and less GPU memory. Please refer to [https:\u002F\u002Farxiv.org\u002Fabs\u002F1807.10221](https:\u002F\u002Farxiv.org\u002Fabs\u002F1807.10221) for details.\n- **HRNet** is a recently proposed model that retains high resolution representations throughout the model, without the traditional bottleneck design. It achieves the SOTA performance on a series of pixel labeling tasks. Please refer to [https:\u002F\u002Farxiv.org\u002Fabs\u002F1904.04514](https:\u002F\u002Farxiv.org\u002Fabs\u002F1904.04514) for details.\n\n\n## Supported models\nWe split our models into encoder and decoder, where encoders are usually modified directly from classification networks, and decoders consist of final convolutions and upsampling. We have provided some pre-configured models in the ```config``` folder.\n\nEncoder:\n- MobileNetV2dilated\n- ResNet18\u002FResNet18dilated\n- ResNet50\u002FResNet50dilated\n- ResNet101\u002FResNet101dilated\n- HRNetV2 (W48)\n\nDecoder:\n- C1 (one convolution module)\n- C1_deepsup (C1 + deep supervision trick)\n- PPM (Pyramid Pooling Module, see [PSPNet](https:\u002F\u002Fhszhao.github.io\u002Fprojects\u002Fpspnet) paper for details.)\n- PPM_deepsup (PPM + deep supervision trick)\n- UPerNet (Pyramid Pooling + FPN head, see [UperNet](https:\u002F\u002Farxiv.org\u002Fabs\u002F1807.10221) for details.)\n\n## Performance:\nIMPORTANT: The base ResNet in our repository is a customized (different from the one in torchvision). The base models will be automatically downloaded when needed.\n\n\u003Ctable>\u003Ctbody>\n    \u003Cth valign=\"bottom\">Architecture\u003C\u002Fth>\n    \u003Cth valign=\"bottom\">MultiScale Testing\u003C\u002Fth>\n    \u003Cth valign=\"bottom\">Mean IoU\u003C\u002Fth>\n    \u003Cth valign=\"bottom\">Pixel Accuracy(%)\u003C\u002Fth>\n    \u003Cth valign=\"bottom\">Overall Score\u003C\u002Fth>\n    \u003Cth valign=\"bottom\">Inference Speed(fps)\u003C\u002Fth>\n    \u003Ctr>\n        \u003Ctd rowspan=\"2\">MobileNetV2dilated + C1_deepsup\u003C\u002Ftd>\n        \u003Ctd>No\u003C\u002Ftd>\u003Ctd>34.84\u003C\u002Ftd>\u003Ctd>75.75\u003C\u002Ftd>\u003Ctd>54.07\u003C\u002Ftd>\n        \u003Ctd>17.2\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>Yes\u003C\u002Ftd>\u003Ctd>33.84\u003C\u002Ftd>\u003Ctd>76.80\u003C\u002Ftd>\u003Ctd>55.32\u003C\u002Ftd>\n        \u003Ctd>10.3\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd rowspan=\"2\">MobileNetV2dilated + PPM_deepsup\u003C\u002Ftd>\n        \u003Ctd>No\u003C\u002Ftd>\u003Ctd>35.76\u003C\u002Ftd>\u003Ctd>77.77\u003C\u002Ftd>\u003Ctd>56.27\u003C\u002Ftd>\n        \u003Ctd>14.9\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>Yes\u003C\u002Ftd>\u003Ctd>36.28\u003C\u002Ftd>\u003Ctd>78.26\u003C\u002Ftd>\u003Ctd>57.27\u003C\u002Ftd>\n        \u003Ctd>6.7\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd rowspan=\"2\">ResNet18dilated + C1_deepsup\u003C\u002Ftd>\n        \u003Ctd>No\u003C\u002Ftd>\u003Ctd>33.82\u003C\u002Ftd>\u003Ctd>76.05\u003C\u002Ftd>\u003Ctd>54.94\u003C\u002Ftd>\n        \u003Ctd>13.9\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>Yes\u003C\u002Ftd>\u003Ctd>35.34\u003C\u002Ftd>\u003Ctd>77.41\u003C\u002Ftd>\u003Ctd>56.38\u003C\u002Ftd>\n        \u003Ctd>5.8\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd rowspan=\"2\">ResNet18dilated + PPM_deepsup\u003C\u002Ftd>\n        \u003Ctd>No\u003C\u002Ftd>\u003Ctd>38.00\u003C\u002Ftd>\u003Ctd>78.64\u003C\u002Ftd>\u003Ctd>58.32\u003C\u002Ftd>\n        \u003Ctd>11.7\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>Yes\u003C\u002Ftd>\u003Ctd>38.81\u003C\u002Ftd>\u003Ctd>79.29\u003C\u002Ftd>\u003Ctd>59.05\u003C\u002Ftd>\n        \u003Ctd>4.2\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd rowspan=\"2\">ResNet50dilated + PPM_deepsup\u003C\u002Ftd>\n        \u003Ctd>No\u003C\u002Ftd>\u003Ctd>41.26\u003C\u002Ftd>\u003Ctd>79.73\u003C\u002Ftd>\u003Ctd>60.50\u003C\u002Ftd>\n        \u003Ctd>8.3\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>Yes\u003C\u002Ftd>\u003Ctd>42.14\u003C\u002Ftd>\u003Ctd>80.13\u003C\u002Ftd>\u003Ctd>61.14\u003C\u002Ftd>\n        \u003Ctd>2.6\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd rowspan=\"2\">ResNet101dilated + PPM_deepsup\u003C\u002Ftd>\n        \u003Ctd>No\u003C\u002Ftd>\u003Ctd>42.19\u003C\u002Ftd>\u003Ctd>80.59\u003C\u002Ftd>\u003Ctd>61.39\u003C\u002Ftd>\n        \u003Ctd>6.8\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>Yes\u003C\u002Ftd>\u003Ctd>42.53\u003C\u002Ftd>\u003Ctd>80.91\u003C\u002Ftd>\u003Ctd>61.72\u003C\u002Ftd>\n        \u003Ctd>2.0\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd rowspan=\"2\">UperNet50\u003C\u002Ftd>\n        \u003Ctd>No\u003C\u002Ftd>\u003Ctd>40.44\u003C\u002Ftd>\u003Ctd>79.80\u003C\u002Ftd>\u003Ctd>60.12\u003C\u002Ftd>\n        \u003Ctd>8.4\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>Yes\u003C\u002Ftd>\u003Ctd>41.55\u003C\u002Ftd>\u003Ctd>80.23\u003C\u002Ftd>\u003Ctd>60.89\u003C\u002Ftd>\n        \u003Ctd>2.9\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd rowspan=\"2\">UperNet101\u003C\u002Ftd>\n        \u003Ctd>No\u003C\u002Ftd>\u003Ctd>42.00\u003C\u002Ftd>\u003Ctd>80.79\u003C\u002Ftd>\u003Ctd>61.40\u003C\u002Ftd>\n        \u003Ctd>7.8\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>Yes\u003C\u002Ftd>\u003Ctd>42.66\u003C\u002Ftd>\u003Ctd>81.01\u003C\u002Ftd>\u003Ctd>61.84\u003C\u002Ftd>\n        \u003Ctd>2.3\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd rowspan=\"2\">HRNetV2\u003C\u002Ftd>\n        \u003Ctd>No\u003C\u002Ftd>\u003Ctd>42.03\u003C\u002Ftd>\u003Ctd>80.77\u003C\u002Ftd>\u003Ctd>61.40\u003C\u002Ftd>\n        \u003Ctd>5.8\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>Yes\u003C\u002Ftd>\u003Ctd>43.20\u003C\u002Ftd>\u003Ctd>81.47\u003C\u002Ftd>\u003Ctd>62.34\u003C\u002Ftd>\n        \u003Ctd>1.9\u003C\u002Ftd>\n    \u003C\u002Ftr>\n\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\nThe training is benchmarked on a server with 8 NVIDIA Pascal Titan Xp GPUs (12GB GPU memory), the inference speed is benchmarked a single NVIDIA Pascal Titan Xp GPU, without visualization.\n\n## Environment\nThe code is developed under the following configurations.\n- Hardware: >=4 GPUs for training, >=1 GPU for testing (set ```[--gpus GPUS]``` accordingly)\n- Software: Ubuntu 16.04.3 LTS, ***CUDA>=8.0, Python>=3.5, PyTorch>=0.4.0***\n- Dependencies: numpy, scipy, opencv, yacs, tqdm\n\n## Quick start: Test on an image using our trained model \n1. Here is a simple demo to do inference on a single image:\n```bash\nchmod +x demo_test.sh\n.\u002Fdemo_test.sh\n```\nThis script downloads a trained model (ResNet50dilated + PPM_deepsup) and a test image, runs the test script, and saves predicted segmentation (.png) to the working directory.\n\n2. To test on an image or a folder of images (```$PATH_IMG```), you can simply do the following:\n```\npython3 -u test.py --imgs $PATH_IMG --gpu $GPU --cfg $CFG\n```\n\n## Training\n1. Download the ADE20K scene parsing dataset:\n```bash\nchmod +x download_ADE20K.sh\n.\u002Fdownload_ADE20K.sh\n```\n2. Train a model by selecting the GPUs (```$GPUS```) and configuration file (```$CFG```) to use. During training, checkpoints by default are saved in folder ```ckpt```.\n```bash\npython3 train.py --gpus $GPUS --cfg $CFG \n```\n- To choose which gpus to use, you can either do ```--gpus 0-7```, or ```--gpus 0,2,4,6```.\n\nFor example, you can start with our provided configurations: \n\n* Train MobileNetV2dilated + C1_deepsup\n```bash\npython3 train.py --gpus GPUS --cfg config\u002Fade20k-mobilenetv2dilated-c1_deepsup.yaml\n```\n\n* Train ResNet50dilated + PPM_deepsup\n```bash\npython3 train.py --gpus GPUS --cfg config\u002Fade20k-resnet50dilated-ppm_deepsup.yaml\n```\n\n* Train UPerNet101\n```bash\npython3 train.py --gpus GPUS --cfg config\u002Fade20k-resnet101-upernet.yaml\n```\n\n3. You can also override options in commandline, for example  ```python3 train.py TRAIN.num_epoch 10 ```.\n\n\n## Evaluation\n1. Evaluate a trained model on the validation set. Add ```VAL.visualize True``` in argument to output visualizations as shown in teaser.\n\nFor example:\n\n* Evaluate MobileNetV2dilated + C1_deepsup\n```bash\npython3 eval_multipro.py --gpus GPUS --cfg config\u002Fade20k-mobilenetv2dilated-c1_deepsup.yaml\n```\n\n* Evaluate ResNet50dilated + PPM_deepsup\n```bash\npython3 eval_multipro.py --gpus GPUS --cfg config\u002Fade20k-resnet50dilated-ppm_deepsup.yaml\n```\n\n* Evaluate UPerNet101\n```bash\npython3 eval_multipro.py --gpus GPUS --cfg config\u002Fade20k-resnet101-upernet.yaml\n```\n\n## Integration with other projects\nThis library can be installed via `pip` to easily integrate with another codebase\n```bash\npip install git+https:\u002F\u002Fgithub.com\u002FCSAILVision\u002Fsemantic-segmentation-pytorch.git@master\n```\n\nNow this library can easily be consumed programmatically. For example\n```python\nfrom mit_semseg.config import cfg\nfrom mit_semseg.dataset import TestDataset\nfrom mit_semseg.models import ModelBuilder, SegmentationModule\n```\n\n## Reference\n\nIf you find the code or pre-trained models useful, please cite the following papers:\n\nSemantic Understanding of Scenes through ADE20K Dataset. B. Zhou, H. Zhao, X. Puig, T. Xiao, S. Fidler, A. Barriuso and A. Torralba. International Journal on Computer Vision (IJCV), 2018. (https:\u002F\u002Farxiv.org\u002Fpdf\u002F1608.05442.pdf)\n\n    @article{zhou2018semantic,\n      title={Semantic understanding of scenes through the ade20k dataset},\n      author={Zhou, Bolei and Zhao, Hang and Puig, Xavier and Xiao, Tete and Fidler, Sanja and Barriuso, Adela and Torralba, Antonio},\n      journal={International Journal on Computer Vision},\n      year={2018}\n    }\n\nScene Parsing through ADE20K Dataset. B. Zhou, H. Zhao, X. Puig, S. Fidler, A. Barriuso and A. Torralba. Computer Vision and Pattern Recognition (CVPR), 2017. (http:\u002F\u002Fpeople.csail.mit.edu\u002Fbzhou\u002Fpublication\u002Fscene-parse-camera-ready.pdf)\n\n    @inproceedings{zhou2017scene,\n        title={Scene Parsing through ADE20K Dataset},\n        author={Zhou, Bolei and Zhao, Hang and Puig, Xavier and Fidler, Sanja and Barriuso, Adela and Torralba, Antonio},\n        booktitle={Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition},\n        year={2017}\n    }\n    \n","# 在 PyTorch 中使用 MIT ADE20K 数据集进行语义分割\n\n这是在 MIT ADE20K 场景解析数据集（http:\u002F\u002Fsceneparsing.csail.mit.edu\u002F）上实现的语义分割模型的 PyTorch 版本。\n\nADE20K 是由 MIT 计算机视觉团队发布的、最大的开源语义分割和场景解析数据集。请访问以下链接，查看我们基于 Caffe 和 Torch7 的数据集及其实现仓库：\nhttps:\u002F\u002Fgithub.com\u002FCSAILVision\u002Fsceneparsing\n\n如果您只想体验我们的演示，请尝试此链接：http:\u002F\u002Fscenesegmentation.csail.mit.edu。您可以上传自己的照片并进行场景解析！\n\n[您也可以在此处使用 Colab 笔记本进行试验](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002FCSAILVision\u002Fsemantic-segmentation-pytorch\u002Fblob\u002Fmaster\u002Fnotebooks\u002FDemoSegmenter.ipynb)，以尝试对图像进行分割的代码。\n\n所有预训练模型均可在此处找到：\nhttp:\u002F\u002Fsceneparsing.csail.mit.edu\u002Fmodel\u002Fpytorch\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FCSAILVision_semantic-segmentation-pytorch_readme_73faa70434f0.png\" width=\"900\"\u002F>\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FCSAILVision_semantic-segmentation-pytorch_readme_2a2feeb7aa81.png\" width=\"900\"\u002F>\n[从左至右：测试图像、真实标签、预测结果]\n\n语义类别的颜色编码可在此处查看：\nhttps:\u002F\u002Fdocs.google.com\u002Fspreadsheets\u002Fd\u002F1se8YEtb2detS7OuPE86fXGyD269pMycAWe2mtKUj2W8\u002Fedit?usp=sharing\n\n## 更新\n- 现已支持 HRNet 模型。\n- 我们使用配置文件来存储原本位于参数解析器中的大部分选项。这些选项的定义详见 ```config\u002Fdefaults.py```。\n- 我们在数据预处理方面遵循 PyTorch 的实践规范（RGB [0, 1] 范围，减去均值，除以标准差）。\n\n## 亮点\n\n### PyTorch 中的同步批归一化\n该模块在训练过程中会跨所有设备计算均值和标准差。我们通过实验发现，较大的批量大小对于分割任务至关重要。感谢 [Jiayuan Mao](http:\u002F\u002Fvccy.xyz\u002F) 的慷慨贡献，详情请参阅 [Synchronized-BatchNorm-PyTorch](https:\u002F\u002Fgithub.com\u002Fvacancy\u002FSynchronized-BatchNorm-PyTorch)。\n\n该实现易于使用，原因如下：\n- 完全由 Python 编写，无需额外的 C++ 扩展库。\n- 与 PyTorch 的原生实现完全兼容。具体而言，它使用无偏方差更新移动平均，并采用 sqrt(max(var, eps)) 而不是 sqrt(var + eps)。\n- 效率较高，仅比非同步批归一化慢 20% 至 30%。\n\n### 多 GPU 训练时输入的动态尺度\n对于语义分割任务，保持图像的宽高比在训练过程中非常重要。因此，我们重新实现了 `DataParallel` 模块，使其能够以 Python 字典的形式将数据分发到多个 GPU 上，从而使每个 GPU 可以处理不同尺寸的图像。同时，数据加载器的工作方式也有所不同。\n\n\u003Csup>*现在数据加载器的批次大小始终等于 GPU 的数量*，每个元素都会被发送到一个 GPU。它也兼容多进程。需要注意的是，多进程数据加载器的文件索引存储在主进程中，这与我们希望每个工作进程维护自己文件列表的目标相矛盾。因此，我们采取了一个技巧：尽管主进程仍然会为 `__getitem__` 函数提供索引，但我们直接忽略该请求，随机发送一个批次字典。此外，*数据加载器派生的所有工作进程都具有相同的随机种子*，如果不使用上述技巧，多个工作进程将会产生完全相同的数据。为此，我们在激活数据加载器的多进程功能之前，添加了一行代码来设置 `numpy.random` 的默认种子。\u003C\u002Fsup>\n\n### 当前最先进的模型\n- **PSPNet** 是一种场景解析网络，通过金字塔池化模块（PPM）聚合全局特征表示。它是 ILSVRC'16 MIT 场景解析挑战赛的冠军模型。详细信息请参阅 [https:\u002F\u002Farxiv.org\u002Fabs\u002F1612.01105](https:\u002F\u002Farxiv.org\u002Fabs\u002F1612.01105)。\n- **UPerNet** 是一种基于特征金字塔网络（FPN）和金字塔池化模块（PPM）的模型。它不需要膨胀卷积，而膨胀卷积是一种耗时且占用大量内存的操作。*在不使用任何花哨技巧的情况下*，它的性能可以媲美甚至超过 PSPNet，同时训练时间更短，所需的 GPU 内存也更少。详细信息请参阅 [https:\u002F\u002Farxiv.org\u002Fabs\u002F1807.10221](https:\u002F\u002Farxiv.org\u002Fabs\u002F1807.10221)。\n- **HRNet** 是一种最近提出的模型，它在整个网络中始终保持高分辨率的特征表示，避免了传统的瓶颈设计。该模型在一系列像素级标注任务中取得了当前最优的性能。详细信息请参阅 [https:\u002F\u002Farxiv.org\u002Fabs\u002F1904.04514](https:\u002F\u002Farxiv.org\u002Fabs\u002F1904.04514)。\n\n## 支持的模型\n我们将模型分为编码器和解码器两部分，其中编码器通常直接基于分类网络修改而来，而解码器则由最后几层卷积和上采样组成。我们已在 ```config``` 文件夹中提供了一些预配置的模型。\n\n编码器：\n- MobileNetV2_dilated\n- ResNet18\u002FResNet18_dilated\n- ResNet50\u002FResNet50_dilated\n- ResNet101\u002FResNet101_dilated\n- HRNetV2 (W48)\n\n解码器：\n- C1（单个卷积模块）\n- C1_deepsup（C1 加深监督技巧）\n- PPM（金字塔池化模块，详情请参阅 [PSPNet](https:\u002F\u002Fhszhao.github.io\u002Fprojects\u002Fpspnet) 论文）\n- PPM_deepsup（PPM 加深监督技巧）\n- UPerNet（金字塔池化结合 FPN 头部，详情请参阅 [UperNet](https:\u002F\u002Farxiv.org\u002Fabs\u002F1807.10221)）\n\n## 性能：\n重要提示：我们仓库中的基础 ResNet 是自定义的（与 torchvision 中的版本不同）。基础模型会在需要时自动下载。\n\n\u003Ctable>\u003Ctbody>\n    \u003Cth valign=\"bottom\">架构\u003C\u002Fth>\n    \u003Cth valign=\"bottom\">多尺度测试\u003C\u002Fth>\n    \u003Cth valign=\"bottom\">平均 IoU\u003C\u002Fth>\n    \u003Cth valign=\"bottom\">像素准确率（%）\u003C\u002Fth>\n    \u003Cth valign=\"bottom\">综合得分\u003C\u002Fth>\n    \u003Cth valign=\"bottom\">推理速度（fps）\u003C\u002Fth>\n    \u003Ctr>\n        \u003Ctd rowspan=\"2\">MobileNetV2dilated + C1_deepsup\u003C\u002Ftd>\n        \u003Ctd>否\u003C\u002Ftd>\u003Ctd>34.84\u003C\u002Ftd>\u003Ctd>75.75\u003C\u002Ftd>\u003Ctd>54.07\u003C\u002Ftd>\n        \u003Ctd>17.2\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>是\u003C\u002Ftd>\u003Ctd>33.84\u003C\u002Ftd>\u003Ctd>76.80\u003C\u002Ftd>\u003Ctd>55.32\u003C\u002Ftd>\n        \u003Ctd>10.3\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd rowspan=\"2\">MobileNetV2dilated + PPM_deepsup\u003C\u002Ftd>\n        \u003Ctd>否\u003C\u002Ftd>\u003Ctd>35.76\u003C\u002Ftd>\u003Ctd>77.77\u003C\u002Ftd>\u003Ctd>56.27\u003C\u002Ftd>\n        \u003Ctd>14.9\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>是\u003C\u002Ftd>\u003Ctd>36.28\u003C\u002Ftd>\u003Ctd>78.26\u003C\u002Ftd>\u003Ctd>57.27\u003C\u002Ftd>\n        \u003Ctd>6.7\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd rowspan=\"2\">ResNet18dilated + C1_deepsup\u003C\u002Ftd>\n        \u003Ctd>否\u003C\u002Ftd>\u003Ctd>33.82\u003C\u002Ftd>\u003Ctd>76.05\u003C\u002Ftd>\u003Ctd>54.94\u003C\u002Ftd>\n        \u003Ctd>13.9\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>是\u003C\u002Ftd>\u003Ctd>35.34\u003C\u002Ftd>\u003Ctd>77.41\u003C\u002Ftd>\u003Ctd>56.38\u003C\u002Ftd>\n        \u003Ctd>5.8\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd rowspan=\"2\">ResNet18dilated + PPM_deepsup\u003C\u002Ftd>\n        \u003Ctd>否\u003C\u002Ftd>\u003Ctd>38.00\u003C\u002Ftd>\u003Ctd>78.64\u003C\u002Ftd>\u003Ctd>58.32\u003C\u002Ftd>\n        \u003Ctd>11.7\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>是\u003C\u002Ftd>\u003Ctd>38.81\u003C\u002Ftd>\u003Ctd>79.29\u003C\u002Ftd>\u003Ctd>59.05\u003C\u002Ftd>\n        \u003Ctd>4.2\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd rowspan=\"2\">ResNet50dilated + PPM_deepsup\u003C\u002Ftd>\n        \u003Ctd>否\u003C\u002Ftd>\u003Ctd>41.26\u003C\u002Ftd>\u003Ctd>79.73\u003C\u002Ftd>\u003Ctd>60.50\u003C\u002Ftd>\n        \u003Ctd>8.3\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>是\u003C\u002Ftd>\u003Ctd>42.14\u003C\u002Ftd>\u003Ctd>80.13\u003C\u002Ftd>\u003Ctd>61.14\u003C\u002Ftd>\n        \u003Ctd>2.6\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd rowspan=\"2\">ResNet101dilated + PPM_deepsup\u003C\u002Ftd>\n        \u003Ctd>否\u003C\u002Ftd>\u003Ctd>42.19\u003C\u002Ftd>\u003Ctd>80.59\u003C\u002Ftd>\u003Ctd>61.39\u003C\u002Ftd>\n        \u003Ctd>6.8\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>是\u003C\u002Ftd>\u003Ctd>42.53\u003C\u002Ftd>\u003Ctd>80.91\u003C\u002Ftd>\u003Ctd>61.72\u003C\u002Ftd>\n        \u003Ctd>2.0\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd rowspan=\"2\">UperNet50\u003C\u002Ftd>\n        \u003Ctd>否\u003C\u002Ftd>\u003Ctd>40.44\u003C\u002Ftd>\u003Ctd>79.80\u003C\u002Ftd>\u003Ctd>60.12\u003C\u002Ftd>\n        \u003Ctd>8.4\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>是\u003C\u002Ftd>\u003Ctd>41.55\u003C\u002Ftd>\u003Ctd>80.23\u003C\u002Ftd>\u003Ctd>60.89\u003C\u002Ftd>\n        \u003Ctd>2.9\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd rowspan=\"2\">UperNet101\u003C\u002Ftd>\n        \u003Ctd>否\u003C\u002Ftd>\u003Ctd>42.00\u003C\u002Ftd>\u003Ctd>80.79\u003C\u002Ftd>\u003Ctd>61.40\u003C\u002Ftd>\n        \u003Ctd>7.8\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>是\u003C\u002Ftd>\u003Ctd>42.66\u003C\u002Ftd>\u003Ctd>81.01\u003C\u002Ftd>\u003Ctd>61.84\u003C\u002Ftd>\n        \u003Ctd>2.3\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd rowspan=\"2\">HRNetV2\u003C\u002Ftd>\n        \u003Ctd>否\u003C\u002Ftd>\u003Ctd>42.03\u003C\u002Ftd>\u003Ctd>80.77\u003C\u002Ftd>\u003Ctd>61.40\u003C\u002Ftd>\n        \u003Ctd>5.8\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd>是\u003C\u002Ftd>\u003Ctd>43.20\u003C\u002Ftd>\u003Ctd>81.47\u003C\u002Ftd>\u003Ctd>62.34\u003C\u002Ftd>\n        \u003Ctd>1.9\u003C\u002Ftd>\n    \u003C\u002Ftr>\n\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\n训练在配备 8 块 NVIDIA Pascal Titan Xp GPU（每块显存 12GB）的服务器上进行基准测试，推理速度则在单块 NVIDIA Pascal Titan Xp GPU 上进行基准测试，未启用可视化功能。\n\n## 环境\n代码在以下配置下开发：\n- 硬件：训练至少 4 块 GPU，测试至少 1 块 GPU（相应设置 ```[--gpus GPUS]```）\n- 软件：Ubuntu 16.04.3 LTS，***CUDA≥8.0，Python≥3.5，PyTorch≥0.4.0***\n- 依赖库：numpy、scipy、opencv、yacs、tqdm\n\n## 快速入门：使用我们训练好的模型对一张图片进行测试\n1. 以下是一个简单的示例，用于对单张图片进行推理：\n```bash\nchmod +x demo_test.sh\n.\u002Fdemo_test.sh\n```\n该脚本会下载一个训练好的模型（ResNet50dilated + PPM_deepsup）和一张测试图片，运行测试脚本，并将预测的分割结果（.png）保存到工作目录中。\n\n2. 若要对一张图片或一个包含多张图片的文件夹（```$PATH_IMG```）进行测试，只需执行以下命令：\n```\npython3 -u test.py --imgs $PATH_IMG --gpu $GPU --cfg $CFG\n```\n\n## 训练\n1. 下载 ADE20K 场景解析数据集：\n```bash\nchmod +x download_ADE20K.sh\n.\u002Fdownload_ADE20K.sh\n```\n2. 通过选择要使用的 GPU（```$GPUS```) 和配置文件（```$CFG```) 来训练模型。训练过程中，默认情况下检查点会保存在 ```ckpt``` 文件夹中。\n```bash\npython3 train.py --gpus $GPUS --cfg $CFG \n```\n- 要选择使用哪些 GPU，可以输入 ```--gpus 0-7```，也可以输入 ```--gpus 0,2,4,6```。\n\n例如，您可以从我们提供的配置开始：\n\n* 训练 MobileNetV2dilated + C1_deepsup\n```bash\npython3 train.py --gpus GPUS --cfg config\u002Fade20k-mobilenetv2dilated-c1_deepsup.yaml\n```\n\n* 训练 ResNet50dilated + PPM_deepsup\n```bash\npython3 train.py --gpus GPUS --cfg config\u002Fade20k-resnet50dilated-ppm_deepsup.yaml\n```\n\n* 训练 UPerNet101\n```bash\npython3 train.py --gpus GPUS --cfg config\u002Fade20k-resnet101-upernet.yaml\n```\n\n3. 您还可以在命令行中覆盖选项，例如 ```python3 train.py TRAIN.num_epoch 10```。\n\n## 评估\n1. 在验证集上评估训练好的模型。在参数中添加 ```VAL.visualize True``` 可以输出如预告片所示的可视化结果。\n\n例如：\n\n* 评估 MobileNetV2dilated + C1_deepsup\n```bash\npython3 eval_multipro.py --gpus GPUS --cfg config\u002Fade20k-mobilenetv2dilated-c1_deepsup.yaml\n```\n\n* 评估 ResNet50dilated + PPM_deepsup\n```bash\npython3 eval_multipro.py --gpus GPUS --cfg config\u002Fade20k-resnet50dilated-ppm_deepsup.yaml\n```\n\n* 评估 UPerNet101\n```bash\npython3 eval_multipro.py --gpus GPUS --cfg config\u002Fade20k-resnet101-upernet.yaml\n```\n\n## 与其他项目的集成\n可以通过 `pip` 安装此库，以便轻松地与其他代码库集成。\n```bash\npip install git+https:\u002F\u002Fgithub.com\u002FCSAILVision\u002Fsemantic-segmentation-pytorch.git@master\n```\n\n现在，此库可以方便地以编程方式使用。例如：\n```python\nfrom mit_semseg.config import cfg\nfrom mit_semseg.dataset import TestDataset\nfrom mit_semseg.models import ModelBuilder, SegmentationModule\n```\n\n## 参考文献\n\n如果您觉得代码或预训练模型有用，请引用以下论文：\n\n通过 ADE20K 数据集实现场景的语义理解。B. Zhou, H. Zhao, X. Puig, T. Xiao, S. Fidler, A. Barriuso 和 A. Torralba。《国际计算机视觉期刊》（IJCV），2018 年。（https:\u002F\u002Farxiv.org\u002Fpdf\u002F1608.05442.pdf）\n\n    @article{zhou2018semantic,\n      title={Semantic understanding of scenes through the ade20k dataset},\n      author={Zhou, Bolei and Zhao, Hang and Puig, Xavier and Xiao, Tete and Fidler, Sanja and Barriuso, Adela and Torralba, Antonio},\n      journal={International Journal on Computer Vision},\n      year={2018}\n    }\n\n通过 ADE20K 数据集进行场景解析。B. Zhou, H. Zhao, X. Puig, S. Fidler, A. Barriuso 和 A. Torralba。计算机视觉与模式识别会议（CVPR），2017 年。（http:\u002F\u002Fpeople.csail.mit.edu\u002Fbzhou\u002Fpublication\u002Fscene-parse-camera-ready.pdf）\n\n    @inproceedings{zhou2017scene,\n        title={Scene Parsing through ADE20K Dataset},\n        author={Zhou, Bolei and Zhao, Hang and Puig, Xavier and Fidler, Sanja and Barriuso, Adela and Torralba, Antonio},\n        booktitle={Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition},\n        year={2017}\n    }","# semantic-segmentation-pytorch 快速上手指南\n\n本指南基于 MIT ADE20K 数据集的 PyTorch 语义分割实现，帮助开发者快速部署和测试预训练模型。\n\n## 1. 环境准备\n\n### 系统要求\n- **操作系统**: Ubuntu 16.04.3 LTS 或更高版本\n- **硬件**: \n  - 训练：建议 >= 4 块 GPU\n  - 推理\u002F测试：>= 1 块 GPU\n- **核心软件**:\n  - CUDA >= 8.0\n  - Python >= 3.5\n  - PyTorch >= 0.4.0\n\n### 依赖安装\n确保已安装以下 Python 库：\n```bash\npip install numpy scipy opencv-python yacs tqdm\n```\n> **提示**：国内用户建议使用清华或阿里镜像源加速安装，例如：\n> `pip install -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple numpy scipy opencv-python yacs tqdm`\n\n## 2. 安装步骤\n\n你可以选择直接克隆仓库使用，或通过 pip 集成到其他项目中。\n\n### 方式一：克隆仓库（推荐用于完整功能）\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FCSAILVision\u002Fsemantic-segmentation-pytorch.git\ncd semantic-segmentation-pytorch\n```\n\n### 方式二：通过 pip 安装（用于项目集成）\n```bash\npip install git+https:\u002F\u002Fgithub.com\u002FCSAILVision\u002Fsemantic-segmentation-pytorch.git@master\n```\n> **注意**：基础 ResNet 模型会在首次运行时自动下载，无需手动干预。\n\n## 3. 基本使用\n\n### 场景 A：快速测试单张图片（最简单示例）\n项目提供了一个脚本，自动下载预训练模型（ResNet50dilated + PPM_deepsup）和测试图片并运行推理。\n\n1. 赋予执行权限并运行演示脚本：\n```bash\nchmod +x demo_test.sh\n.\u002Fdemo_test.sh\n```\n运行结束后，预测的分割结果（.png 格式）将保存在当前工作目录。\n\n### 场景 B：自定义图片推理\n如果你有自己的图片或文件夹需要测试，请使用以下命令：\n\n```bash\npython3 -u test.py --imgs $PATH_IMG --gpu $GPU --cfg $CFG\n```\n- `$PATH_IMG`: 图片路径或包含图片的文件夹路径。\n- `$GPU`: 指定使用的 GPU ID（例如 `0`）。\n- `$CFG`: 配置文件路径（例如 `config\u002Fade20k-resnet50dilated-ppm_deepsup.yaml`）。\n\n### 场景 C：代码集成示例\n若已通过 pip 安装，可在 Python 代码中直接调用：\n\n```python\nfrom mit_semseg.config import cfg\nfrom mit_semseg.dataset import TestDataset\nfrom mit_semseg.models import ModelBuilder, SegmentationModule\n\n# 此处可继续编写加载模型和推理的逻辑\n```\n\n---\n*注：如需训练新模型或评估验证集性能，请参考官方 README 中的 Training 和 Evaluation 章节。*","某智慧城市团队正在开发一套自动分析街道监控视频的系统，旨在实时识别道路、车辆、行人及绿化带，以优化交通信号灯控制。\n\n### 没有 semantic-segmentation-pytorch 时\n- **模型复现困难**：团队需从零编写 PSPNet 或 UPerNet 等前沿算法代码，耗时数周且极易出现与论文不符的实现偏差。\n- **多卡训练低效**：在处理高分辨率街景图时，难以保持图像原始宽高比，强制缩放导致识别变形，且无法有效利用多 GPU 进行同步批归一化训练。\n- **数据适配繁琐**：缺乏对 MIT ADE20K 等大型数据集的原生支持，需手动编写复杂的数据预处理和标签映射逻辑，容易出错。\n- **调参成本高昂**：缺少统一的配置文件管理，每次调整学习率或输入尺度都需修改底层代码，迭代效率极低。\n\n### 使用 semantic-segmentation-pytorch 后\n- **开箱即用顶尖模型**：直接加载预训练的 PSPNet 或 UPerNet 模型，几分钟内即可在自有数据上获得业界领先的分割精度。\n- **高效多 GPU 并行**：利用其动态尺度输入和同步批归一化模块，既保留了图像真实比例提升识别率，又显著加速了大规模数据的训练过程。\n- **标准化数据流程**：内置符合 PyTorch 规范的预处理流程及完整的 ADE20K 色彩编码映射，无需额外开发即可无缝对接监控数据。\n- **灵活配置管理**：通过简单的配置文件即可调整所有超参数，支持 HRNet 等新架构，让算法迭代从“按周计”缩短为“按小时计”。\n\nsemantic-segmentation-pytorch 将复杂的场景解析算法工程化，让开发者能专注于业务逻辑而非底层模型构建，大幅降低了计算机视觉项目的落地门槛。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FCSAILVision_semantic-segmentation-pytorch_73faa704.png","CSAILVision","MIT CSAIL Computer Vision","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FCSAILVision_527c4791.jpg","",null,"https:\u002F\u002Fei.csail.mit.edu\u002F","https:\u002F\u002Fgithub.com\u002FCSAILVision",[81,85,89],{"name":82,"color":83,"percentage":84},"Python","#3572A5",94.9,{"name":86,"color":87,"percentage":88},"Jupyter Notebook","#DA5B0B",4.2,{"name":90,"color":91,"percentage":92},"Shell","#89e051",0.9,5069,1107,"2026-04-03T07:19:52","BSD-3-Clause","Linux","训练必需 >=4 块 GPU，测试必需 >=1 块 GPU；基准测试使用 NVIDIA Pascal Titan Xp (12GB 显存)；需安装 CUDA >= 8.0","未说明",{"notes":101,"python":102,"dependencies":103},"该工具基于 MIT ADE20K 数据集开发。基础 ResNet 模型为自定义版本（不同于 torchvision），运行时会自动下载。代码包含纯 Python 实现的同步批归一化（SyncBN）模块，无需额外 C++ 扩展。支持通过配置文件管理选项，训练时支持动态输入尺度以保留图像宽高比。",">=3.5",[104,105,106,107,108,109],"PyTorch>=0.4.0","numpy","scipy","opencv","yacs","tqdm",[15,14],[112,113,114,115],"pytorch","semantic-segmentation","scene-recognition","ade20k","2026-03-27T02:49:30.150509","2026-04-10T02:42:02.091196",[119,124,129,134,139,144],{"id":120,"question_zh":121,"answer_zh":122,"source_url":123},27042,"训练时出现损失函数输入与目标尺寸不匹配（input and target size don't match）的错误怎么办？","这通常是由于编码器（Encoder）和解码器（Decoder）组合或下采样率配置不当导致的。维护者建议尝试使用默认且经过验证的命令参数运行，例如：\npython3 train.py --num_gpus NUM_GPUS --arch_encoder resnet50 --arch_decoder upernet --segm_downsampling_rate 4 --padding_constant 32\n请确保您的命令中包含正确的 --segm_downsampling_rate 和 --padding_constant 参数，不同架构组合可能需要不同的下采样率设置。","https:\u002F\u002Fgithub.com\u002FCSAILVision\u002Fsemantic-segmentation-pytorch\u002Fissues\u002F66",{"id":125,"question_zh":126,"answer_zh":127,"source_url":128},27043,"如何在自定义数据集上解决 'AssertionError: assert(segm.mode == \"L\")' 错误？","该错误表明分割标签图像（segmentation mask）的模式不是灰度模式（'L'）。在准备自定义数据集时，请确保您的标签图像是单通道灰度图。如果您使用的是彩色标签图，需要在加载前将其转换为灰度模式，或者检查数据预处理代码，确保保存标签时使用了 mode='L'。此外，确认背景类是否被正确标记为 0，以及类别索引是否连续。","https:\u002F\u002Fgithub.com\u002FCSAILVision\u002Fsemantic-segmentation-pytorch\u002Fissues\u002F197",{"id":130,"question_zh":131,"answer_zh":132,"source_url":133},27044,"测试时遇到通道数不匹配错误（expected input to have X channels, but got Y channels）如何解决？","这通常是因为模型架构参数（--arch_encoder 和 --arch_decoder）与加载的预训练权重不匹配。请确保运行测试脚本时指定的架构名称与训练时或下载预训练模型时的架构完全一致。例如，如果模型是基于 resnet50dilated 和 ppm_deepsup 训练的，命令应明确指定：\npython3 -u test.py --model_path [路径] --arch_encoder resnet50dilated --arch_decoder ppm_deepsup\n建议先运行项目提供的 .\u002Fdemo_test.sh 脚本，如果演示脚本能成功运行，说明环境配置正确，问题出在具体命令参数的匹配上。","https:\u002F\u002Fgithub.com\u002FCSAILVision\u002Fsemantic-segmentation-pytorch\u002Fissues\u002F138",{"id":135,"question_zh":136,"answer_zh":137,"source_url":138},27045,"输出的分割结果图片中，每种颜色对应哪个语义类别？","项目维护者提供了一个 Google Sheet 文档，详细列出了 ADE20K 数据集中每个类别 ID 对应的颜色值（RGB）和类别名称。您可以访问以下链接查看完整的映射表：\nhttps:\u002F\u002Fdocs.google.com\u002Fspreadsheets\u002Fd\u002F1se8YEtb2detS7OuPE86fXGyD269pMycAWe2mtKUj2W8\u002Fedit?usp=sharing\n该表格可用于解析输出的 PNG 图像，将像素颜色还原为具体的语义类别标签。","https:\u002F\u002Fgithub.com\u002FCSAILVision\u002Fsemantic-segmentation-pytorch\u002Fissues\u002F154",{"id":140,"question_zh":141,"answer_zh":142,"source_url":143},27046,"使用默认配置训练时，预期的验证集性能（mIoU 和 Accuracy）是多少？","根据社区用户的反馈，在使用 4 张 GPU、每张 GPU batch size 为 8、不进行 BatchNorm 冻结（Bn freeze = no）的默认设置下，采用 resnet34_dilated8 + c1_bilinear 架构，训练 50 个 Epoch 后的预期性能约为：\n- 平均准确率 (Accuracy): 76.58%\n- 平均交并比 (Mean IoU): 0.3348\n请注意，具体数值可能因硬件环境和随机种子略有波动，但可作为评估模型是否正常收敛的参考基准。","https:\u002F\u002Fgithub.com\u002FCSAILVision\u002Fsemantic-segmentation-pytorch\u002Fissues\u002F10",{"id":145,"question_zh":146,"answer_zh":147,"source_url":148},27047,"训练任务在没有任何报错信息的情况下随机停止（无日志输出且显存未释放）是什么原因？","这种现象通常由底层系统资源问题引起，而非代码逻辑错误。常见原因包括：\n1. CPU 内存溢出（OOM）导致进程被系统杀死；\n2. GPU 过热或电源保护机制触发；\n3. 多卡训练时的 NCCL 通信超时或死锁。\n建议检查系统日志（如 \u002Fvar\u002Flog\u002Fsyslog 或 dmesg）是否有 OOM Killer 记录，尝试减少 batch size 以降低显存和内存压力，或在启动命令中增加 NCCL 超时设置（如 NCCL_TIMEOUT）。","https:\u002F\u002Fgithub.com\u002FCSAILVision\u002Fsemantic-segmentation-pytorch\u002Fissues\u002F133",[]]