GCNet
GCNet 是一种用于目标检测和实例分割的开源工具,结合了非局部网络(NLNet)和挤压激励网络(SENet)的优势,专注于全局上下文建模。它通过引入简单高效的 GC 块,解决了传统方法在捕捉全局信息时计算复杂度高或效果有限的问题,能够在多种视觉任务中显著提升性能。
对于从事计算机视觉研究的开发者和研究人员来说,GCNet 是一个理想的工具。它基于 mmdetection 框架实现,代码结构清晰易用,适合希望在目标检测、实例分割等领域探索更优模型的研究人员。同时,由于其模块化设计,开发者可以轻松将 GC 块集成到自己的项目中。
技术亮点在于 GCNet 提出了一种新颖的全局上下文建模方法,既保留了 NLNet 的全局信息捕获能力,又借鉴了 SENet 的轻量化设计,从而实现了高效性和高性能的平衡。此外,GCNet 在多个公开数据集上表现出色,并获得了 ICCV 2019 Neural Architects Workshop 的最佳论文奖,进一步证明了其创新性和实用性。
如果你正在寻找一种能够有效提升目标检测和实例分割性能的工具,GCNet 无疑是一个值得尝试的选择。
使用场景
一家电商公司正在开发一套智能仓储管理系统,希望通过计算机视觉技术实现对货架商品的自动检测和库存管理。
没有 GCNet 时
- 商品检测模型在处理密集摆放的商品时,经常出现漏检或误检的情况,尤其是当同类商品堆叠在一起时。
- 模型对全局上下文信息理解不足,导致无法准确区分外观相似的商品,例如不同口味的饮料瓶。
- 训练时间较长且显存占用高,使得团队难以快速迭代优化模型。
- 在复杂背景环境下(如灯光反射、遮挡),检测精度明显下降,影响实际应用效果。
- 需要额外设计复杂的后处理逻辑来修正检测结果,增加了开发和维护成本。
使用 GCNet 后
- 借助 GCNet 的全局上下文建模能力,模型能够更准确地识别密集摆放的商品,显著减少漏检和误检。
- 对外观相似商品的区分能力大幅提升,通过更好地利用全局信息,避免了混淆问题。
- 显存占用仅小幅增加,同时推理速度保持高效,为团队提供了更快的实验反馈周期。
- 在复杂场景下的鲁棒性增强,灯光反射和遮挡对检测结果的影响大幅降低。
- 检测结果更加稳定,减少了对后处理逻辑的依赖,降低了系统复杂度和维护难度。
GCNet 通过高效的全局上下文建模,帮助电商仓储系统实现了更精准、更稳定的商品检测,显著提升了自动化管理水平。
运行环境要求
- Linux
- macOS
- Windows
需要 NVIDIA GPU,显存 8GB+,CUDA 版本未说明
16GB+(推荐)

快速开始
GCNet 用于目标检测
作者:Yue Cao,Jiarui Xu,Stephen Lin,Fangyun Wei,Han Hu。
本仓库是 "GCNet: Non-local Networks Meet Squeeze-Excitation Networks and Beyond"(GCNet:非局部网络遇见挤压激励网络及更多)在 COCO 目标检测上的官方实现,基于 open-mmlab 的 mmdetection。核心操作模块 GC 块可以在这里找到 这里。 非常感谢 mmdetection 提供简洁且清晰的框架。
2020/12/07 更新
GCNet 的扩展版本已被 TPAMI 接收 (PDF)。
2019/10/28 更新
GCNet 获得了 ICCV 2019 Neural Architects Workshop 的 最佳论文奖!
2019/07/01 更新
代码已重构。
提供了更多结果,所有配置文件可以在 configs/gcnet 中找到。
注意:PyTorch 官方 SyncBN 和 Apex SyncBN 都存在一些稳定性问题。 在训练过程中,mAP 可能在最后几个 epoch 中下降到零然后恢复正常。
2019/06/03 更新
GCNet 已被官方 mmdetection 仓库支持 这里。 再次感谢 open-mmlab 对开源项目的贡献。
简介
GCNet 最初描述于 arxiv。通过吸收非局部网络(NLNet)和挤压激励网络(SENet)的优点,GCNet 提供了一种简单、快速且有效的全局上下文建模方法,在各种识别任务的主要基准测试中通常优于 NLNet 和 SENet。
引用 GCNet
@article{cao2019GCNet,
title={GCNet: Non-local Networks Meet Squeeze-Excitation Networks and Beyond},
author={Cao, Yue and Xu, Jiarui and Lin, Stephen and Wei, Fangyun and Hu, Han},
journal={arXiv preprint arXiv:1904.11492},
year={2019}
}
主要结果
R50-FPN 骨干网络的结果 (fixBN)
| 骨干网络 | 模型 | 骨干网络归一化 | 头部 | 上下文 | 学习率调度 | 内存 (GB) | 训练时间 (秒/迭代) | 推理时间 (帧/秒) | box AP | mask AP | 下载 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| R50-FPN | Mask | fixBN | 2fc (w/o BN) | - | 1x | 3.9 | 0.453 | 10.6 | 37.3 | 34.2 | model |
| R50-FPN | Mask | fixBN | 2fc (w/o BN) | GC(c3-c5, r16) | 1x | 4.5 | 0.533 | 10.1 | 38.5 | 35.1 | model |
| R50-FPN | Mask | fixBN | 2fc (w/o BN) | GC(c3-c5, r4) | 1x | 4.6 | 0.533 | 9.9 | 38.9 | 35.5 | model |
| R50-FPN | Mask | fixBN | 2fc (w/o BN) | - | 2x | - | - | - | 38.2 | 34.9 | model |
| R50-FPN | Mask | fixBN | 2fc (w/o BN) | GC(c3-c5, r16) | 2x | - | - | - | 39.7 | 36.1 | model |
| R50-FPN | Mask | fixBN | 2fc (w/o BN) | GC(c3-c5, r4) | 2x | - | - | - | 40.0 | 36.2 | model |
R50-FPN 使用 backbone(同步批归一化,syncBN)的结果
| 骨干网络 | 模型 | 骨干网络归一化 | 头部结构 | 上下文 | 学习率计划 | 显存占用 (GB) | 训练时间 (秒/迭代) | 推理时间 (帧率) | 边界框 AP | 分割掩码 AP | 下载 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| R50-FPN | Mask | SyncBN | 2fc(无 BN) | - | 1x | 3.9 | 0.543 | 10.2 | 37.2 | 33.8 | model |
| R50-FPN | Mask | SyncBN | 2fc(无 BN) | GC(c3-c5, r16) | 1x | 4.5 | 0.547 | 9.9 | 39.4 | 35.7 | model |
| R50-FPN | Mask | SyncBN | 2fc(无 BN) | GC(c3-c5, r4) | 1x | 4.6 | 0.603 | 9.4 | 39.9 | 36.2 | model |
| R50-FPN | Mask | SyncBN | 2fc(无 BN) | - | 2x | 3.9 | 0.543 | 10.2 | 37.7 | 34.3 | model |
| R50-FPN | Mask | SyncBN | 2fc(无 BN) | GC(c3-c5, r16) | 2x | 4.5 | 0.547 | 9.9 | 39.7 | 36.0 | model |
| R50-FPN | Mask | SyncBN | 2fc(无 BN) | GC(c3-c5, r4) | 2x | 4.6 | 0.603 | 9.4 | 40.2 | 36.3 | model |
| R50-FPN | Mask | SyncBN | 4conv1fc(SyncBN) | - | 1x | - | - | - | 38.8 | 34.6 | model |
| R50-FPN | Mask | SyncBN | 4conv1fc(SyncBN) | GC(c3-c5, r16) | 1x | - | - | - | 41.0 | 36.5 | model |
| R50-FPN | Mask | SyncBN | 4conv1fc(SyncBN) | GC(c3-c5, r4) | 1x | - | - | - | 41.4 | 37.0 | model |
更强主干网络的结果
| 主干网络 | 模型 | 主干网络归一化 | 头部结构 | 上下文模块 | 学习率调度 | 显存占用 (GB) | 训练时间 (秒/迭代) | 推理时间 (帧率) | 边界框 AP | 分割掩码 AP | 下载链接 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| R101-FPN | Mask | fixBN | 2fc (w/o BN) | - | 1x | 5.8 | 0.571 | 9.5 | 39.4 | 35.9 | model |
| R101-FPN | Mask | fixBN | 2fc (w/o BN) | GC(c3-c5, r16) | 1x | 7.0 | 0.731 | 8.6 | 40.8 | 37.0 | model |
| R101-FPN | Mask | fixBN | 2fc (w/o BN) | GC(c3-c5, r4) | 1x | 7.1 | 0.747 | 8.6 | 40.8 | 36.9 | model |
| R101-FPN | Mask | SyncBN | 2fc (w/o BN) | - | 1x | 5.8 | 0.665 | 9.2 | 39.8 | 36.0 | model |
| R101-FPN | Mask | SyncBN | 2fc (w/o BN) | GC(c3-c5, r16) | 1x | 7.0 | 0.778 | 9.0 | 41.1 | 37.4 | model |
| R101-FPN | Mask | SyncBN | 2fc (w/o BN) | GC(c3-c5, r4) | 1x | 7.1 | 0.786 | 8.9 | 41.7 | 37.6 | model |
| X101-FPN | Mask | SyncBN | 2fc (w/o BN) | - | 1x | 7.1 | 0.912 | 8.5 | 41.2 | 37.3 | model |
| X101-FPN | Mask | SyncBN | 2fc (w/o BN) | GC(c3-c5, r16) | 1x | 8.2 | 1.055 | 7.7 | 42.4 | 38.0 | model |
| X101-FPN | Mask | SyncBN | 2fc (w/o BN) | GC(c3-c5, r4) | 1x | 8.3 | 1.037 | 7.6 | 42.9 | 38.5 | model |
| X101-FPN | Cascade Mask | SyncBN | 2fc (w/o BN) | - | 1x | - | - | - | 44.7 | 38.3 | model |
| X101-FPN | Cascade Mask | SyncBN | 2fc (w/o BN) | GC(c3-c5, r16) | 1x | - | - | - | 45.9 | 39.3 | model |
| X101-FPN | Cascade Mask | SyncBN | 2fc (w/o BN) | GC(c3-c5, r4) | 1x | - | - | - | 46.5 | 39.7 | model |
| X101-FPN | DCN Cascade Mask | SyncBN | 2fc (w/o BN) | - | 1x | - | - | - | 47.1 | 40.4 | model |
| X101-FPN | DCN Cascade Mask | SyncBN | 2fc (w/o BN) | GC(c3-c5, r16) | 1x | - | - | - | 47.9 | 40.9 | model |
| X101-FPN | DCN Cascade Mask | SyncBN | 2fc (w/o BN) | GC(c3-c5, r4) | 1x | - | - | - | 47.9 | 40.8 | model |
说明
GC表示在主干网络的 1x1 卷积后插入了全局上下文(Global Context,GC)块。DCN表示在主干网络的c3-c5阶段中将 3x3 卷积替换为 3x3 可变形卷积(Deformable Convolution)。r4和r16分别表示 GC 块中的比例 4 和比例 16。- 部分模型是在 4 块 GPU 上训练的,每块 GPU 使用 4 张图像。
要求
- Linux(测试于 Ubuntu 16.04)
- Python 3.6+
- PyTorch 1.1.0
- Cython
- apex(Sync BN)
安装
a. 按照官方指南安装 PyTorch 1.1 和 torchvision。
b. 按照此指南安装最新版本的 apex,并启用 CUDA 和 C++ 扩展。需要使用 apex 实现的 Sync BN。
c. 克隆 GCNet 仓库。
git clone https://github.com/xvjiarui/GCNet.git
d. 编译 CUDA 扩展。
cd GCNet
pip install cython # 或者 "conda install cython" 如果你更喜欢 conda
./compile.sh # 或者 "PYTHON=python3 ./compile.sh" 如果你使用系统自带的 python3 且未使用虚拟环境
e. 安装 GCNet 版本的 mmdetection(其他依赖项将自动安装)。
python(3) setup.py install # 如果希望本地安装,可以添加 --user 参数
# 或者 "pip install ."
注意:每次从 GitHub 拉取更新后都需要运行最后一步。
或者你可以运行 python(3) setup.py develop 或 pip install -e . 来安装 mmdetection,以便频繁修改它。
更多详情请参考 mmdetection 的安装指南。
环境
硬件
- 8 块 NVIDIA Tesla V100 GPU
- Intel Xeon 4114 CPU @ 2.20GHz
软件环境
- Python 3.6.7
- PyTorch 1.1.0
- CUDA 9.0
- CUDNN 7.0
- NCCL 2.3.5
使用方法
训练
与原始的 mmdetection 一样,推荐使用分布式训练,无论是单机还是多机环境。
./tools/dist_train.sh <CONFIG_FILE> <GPU_NUM> [可选参数]
支持的参数包括:
- --validate: 在训练过程中每 k(默认为 1)个 epoch 执行一次评估。
- --work_dir
: 如果指定,配置文件中的路径将被替换。
评估
要评估已训练的模型,需要提供输出文件。
python tools/test.py <CONFIG_FILE> <MODEL_PATH> [可选参数]
支持的参数包括:
- --gpus: 用于评估的 GPU 数量
- --out: 输出文件名,通常以
.pkl结尾 - --eval: 需要的评估类型,对于 mask-rcnn,
bbox segm将同时评估边界框和掩码的 AP(平均精度)。
常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。