[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-Eric-mingjie--network-slimming":3,"tool-Eric-mingjie--network-slimming":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 真正成长为懂上",143909,2,"2026-04-07T11:33:18",[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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107888,"2026-04-06T11:32:50",[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":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":75,"owner_location":76,"owner_email":77,"owner_twitter":77,"owner_website":78,"owner_url":79,"languages":80,"stars":85,"forks":86,"last_commit_at":87,"license":88,"difficulty_score":10,"env_os":89,"env_gpu":90,"env_ram":89,"env_deps":91,"category_tags":96,"github_topics":97,"view_count":32,"oss_zip_url":77,"oss_zip_packed_at":77,"status":17,"created_at":103,"updated_at":104,"faqs":105,"releases":141},5080,"Eric-mingjie\u002Fnetwork-slimming","network-slimming","Network Slimming (Pytorch) (ICCV 2017)","Network Slimming 是一个基于 PyTorch 的开源项目，复现了 ICCV 2017 论文中提出的高效卷积网络学习方法。它的核心目标是通过“网络剪枝”技术，在几乎不损失模型精度的前提下，大幅减少神经网络的参数量和计算成本，从而解决深度学习模型在移动端或资源受限设备上部署难、推理慢的问题。\n\n该项目特别适合人工智能研究人员和开发者使用，尤其是那些需要优化 VGG、ResNet 或 DenseNet 等经典架构性能的技术人员。Network Slimming 的独特亮点在于其引入的“通道选择层（Channel Selection Layer）”，该机制能够智能识别并标记冗余的特征通道，配合稀疏化训练策略，实现结构化剪枝。用户只需通过简单的命令行操作，即可完成从稀疏训练、按比例剪枝到微调恢复精度的全流程。实验数据显示，该方法能将 VGG 模型的参数量压缩至原来的十分之一左右，同时保持甚至略微提升原始准确率，是进行模型轻量化研究的实用工具。","# Network Slimming (Pytorch)\n\nThis repository contains an official pytorch implementation for the following paper  \n[Learning Efficient Convolutional Networks Through Network Slimming](http:\u002F\u002Fopenaccess.thecvf.com\u002Fcontent_iccv_2017\u002Fhtml\u002FLiu_Learning_Efficient_Convolutional_ICCV_2017_paper.html) (ICCV 2017).  \n[Zhuang Liu](https:\u002F\u002Fliuzhuang13.github.io\u002F), [Jianguo Li](https:\u002F\u002Fsites.google.com\u002Fsite\u002Fleeplus\u002F), [Zhiqiang Shen](http:\u002F\u002Fzhiqiangshen.com\u002F), [Gao Huang](http:\u002F\u002Fwww.cs.cornell.edu\u002F~gaohuang\u002F), [Shoumeng Yan](https:\u002F\u002Fscholar.google.com\u002Fcitations?user=f0BtDUQAAAAJ&hl=en), [Changshui Zhang](http:\u002F\u002Fbigeye.au.tsinghua.edu.cn\u002Fenglish\u002FIntroduction.html).  \n\nOriginal implementation: [slimming](https:\u002F\u002Fgithub.com\u002Fliuzhuang13\u002Fslimming) in Torch.    \nThe code is based on [pytorch-slimming](https:\u002F\u002Fgithub.com\u002Ffoolwood\u002Fpytorch-slimming). We add support for ResNet and DenseNet.  \n\nCitation:\n```\n@InProceedings{Liu_2017_ICCV,\n    author = {Liu, Zhuang and Li, Jianguo and Shen, Zhiqiang and Huang, Gao and Yan, Shoumeng and Zhang, Changshui},\n    title = {Learning Efficient Convolutional Networks Through Network Slimming},\n    booktitle = {The IEEE International Conference on Computer Vision (ICCV)},\n    month = {Oct},\n    year = {2017}\n}\n```\n\n\n## Dependencies\ntorch v0.3.1, torchvision v0.2.0\n\n## Channel Selection Layer\nWe introduce `channel selection` layer to help the  pruning of ResNet and DenseNet. This layer is easy to implement. It stores a parameter `indexes` which is initialized to an all-1 vector. During pruning, it will set some places to 0 which correspond to the pruned channels.\n\n## Baseline \n\nThe `dataset` argument specifies which dataset to use: `cifar10` or `cifar100`. The `arch` argument specifies the architecture to use: `vgg`,`resnet` or\n`densenet`. The depth is chosen to be the same as the networks used in the paper.\n```shell\npython main.py --dataset cifar10 --arch vgg --depth 19\npython main.py --dataset cifar10 --arch resnet --depth 164\npython main.py --dataset cifar10 --arch densenet --depth 40\n```\n\n## Train with Sparsity\n\n```shell\npython main.py -sr --s 0.0001 --dataset cifar10 --arch vgg --depth 19\npython main.py -sr --s 0.00001 --dataset cifar10 --arch resnet --depth 164\npython main.py -sr --s 0.00001 --dataset cifar10 --arch densenet --depth 40\n```\n\n## Prune\n\n```shell\npython vggprune.py --dataset cifar10 --depth 19 --percent 0.7 --model [PATH TO THE MODEL] --save [DIRECTORY TO STORE RESULT]\npython resprune.py --dataset cifar10 --depth 164 --percent 0.4 --model [PATH TO THE MODEL] --save [DIRECTORY TO STORE RESULT]\npython denseprune.py --dataset cifar10 --depth 40 --percent 0.4 --model [PATH TO THE MODEL] --save [DIRECTORY TO STORE RESULT]\n```\nThe pruned model will be named `pruned.pth.tar`.\n\n## Fine-tune\n\n```shell\npython main.py --refine [PATH TO THE PRUNED MODEL] --dataset cifar10 --arch vgg --depth 19 --epochs 160\n```\n\n## Results\n\nThe results are fairly close to the original paper, whose results are produced by Torch. Note that due to different random seeds, there might be up to ~0.5%\u002F1.5% fluctation on CIFAR-10\u002F100 datasets in different runs, according to our experiences.\n### CIFAR10\n|  CIFAR10-Vgg  | Baseline |  Sparsity (1e-4) | Prune (70%) | Fine-tune-160(70%) |\n| :---------------: | :------: | :--------------------------: | :-----------------: | :-------------------: |\n| Top1 Accuracy (%) |  93.77   |            93.30            |        32.54        |         93.78         |\n|    Parameters     |  20.04M  |            20.04M            |        2.25M        |         2.25M         |\n\n|  CIFAR10-Resnet-164  | Baseline |    Sparsity (1e-5) | Prune(40%) | Fine-tune-160(40%) |   Prune(60%)     |  Fine-tune-160(60%)       |\n| :---------------: | :------: | :--------------------------: | :-----------------: | :-------------------: |  :----------------:| :--------------------:|\n| Top1 Accuracy (%) |  94.75   |            94.76             |        94.58       |         95.05         |      47.73       |     93.81     |\n|    Parameters     |  1.71M  |             1.73M            |        1.45M        |         1.45M         |      1.12M          |   1.12M           |\n\n|  CIFAR10-Densenet-40  | Baseline |  Sparsity (1e-5) | Prune (40%) | Fine-tune-160(40%) |       Prune(60%)   | Fine-tune-160(60%) |\n| :---------------: | :------: | :--------------------------: | :-----------------: | :-------------------: | :--------------------: | :-----------------:|\n| Top1 Accuracy (%) |  94.11   |           94.17             |        94.16       |         94.32         |      89.46       |     94.22     |\n|    Parameters     |  1.07M  |            1.07M            |        0.69M       |         0.69M         |       0.49M      |    0.49M     |\n\n### CIFAR100\n|  CIFAR100-Vgg  | Baseline |   Sparsity (1e-4) | Prune (50%) | Fine-tune-160(50%) |\n| :---------------: | :------: | :--------------------------: | :-----------------: | :-------------------: |\n| Top1 Accuracy (%) |   72.12   |            72.05             |         5.31        |         73.32         |\n|    Parameters     |  20.04M  |            20.04M            |        4.93M        |         4.93M         |\n\n|  CIFAR100-Resnet-164  | Baseline |   Sparsity (1e-5) | Prune (40%) | Fine-tune-160(40%) |    Prune(60%)  | Fine-tune-160(60%) |\n| :---------------: | :------: | :--------------------------: | :-----------------: | :-------------------: |:--------------------: | :-----------------:|\n| Top1 Accuracy (%) |  76.79   |            76.87             |        48.0        |         77.36        |  ---       |     ---     |\n|    Parameters     |  1.73M  |            1.73M            |        1.49M        |         1.49M         |---       |     ---     |\n\nNote: For results of pruning 60% of the channels for resnet164-cifar100, in this implementation, sometimes some layers are all pruned and there would be error. However, we also provide a [mask implementation](https:\u002F\u002Fgithub.com\u002FEric-mingjie\u002Fnetwork-slimming\u002Ftree\u002Fmaster\u002Fmask-impl) where we apply a mask to the scaling factor in BN layer. For mask implementaion, when pruning 60% of the channels in resnet164-cifar100, we can also train the pruned network.\n\n|  CIFAR100-Densenet-40  | Baseline |    Sparsity (1e-5) | Prune (40%) | Fine-tune-160(40%) | Prune(60%)  | Fine-tune-160(60%) |\n| :---------------: | :------: | :--------------------------: | :-----------------: | :-------------------: |:--------------------: | :-----------------:|\n| Top1 Accuracy (%) |  73.27   |          73.29            |        67.67        |         73.76         |   19.18       |     73.19     |\n|    Parameters     |  1.10M  |            1.10M            |        0.71M        |         0.71M         |  0.50M       |     0.50M    |\n\n## Contact\nsunmj15 at gmail.com \nliuzhuangthu at gmail.com  \n","# 网络瘦身（PyTorch）\n\n本仓库包含以下论文的官方 PyTorch 实现：  \n[通过网络瘦身学习高效的卷积网络](http:\u002F\u002Fopenaccess.thecvf.com\u002Fcontent_iccv_2017\u002Fhtml\u002FLiu_Learning_Efficient_Convolutional_ICCV_2017_paper.html)（ICCV 2017）。  \n作者：[刘壮](https:\u002F\u002Fliuzhuang13.github.io\u002F)、[李建国](https:\u002F\u002Fsites.google.com\u002Fsite\u002Fleeplus\u002F)、[沈志强](http:\u002F\u002Fzhiqiangshen.com\u002F)、[黄高](http:\u002F\u002Fwww.cs.cornell.edu\u002F~gaohuang\u002F)、[颜守蒙](https:\u002F\u002Fscholar.google.com\u002Fcitations?user=f0BtDUQAAAAJ&hl=en)、[张长水](http:\u002F\u002Fbigeye.au.tsinghua.edu.cn\u002Fenglish\u002FIntroduction.html)。\n\n原始实现：Torch 中的 [slimming](https:\u002F\u002Fgithub.com\u002Fliuzhuang13\u002Fslimming)。  \n本代码基于 [pytorch-slimming](https:\u002F\u002Fgithub.com\u002Ffoolwood\u002Fpytorch-slimming)。我们新增了对 ResNet 和 DenseNet 的支持。\n\n引用：\n```\n@InProceedings{Liu_2017_ICCV,\n    author = {Liu, Zhuang and Li, Jianguo and Shen, Zhiqiang and Huang, Gao and Yan, Shoumeng and Zhang, Changshui},\n    title = {Learning Efficient Convolutional Networks Through Network Slimming},\n    booktitle = {The IEEE International Conference on Computer Vision (ICCV)},\n    month = {Oct},\n    year = {2017}\n}\n```\n\n\n## 依赖\ntorch v0.3.1，torchvision v0.2.0\n\n## 通道选择层\n我们引入了 `channel selection` 层，以帮助对 ResNet 和 DenseNet 进行剪枝。该层实现简单，它存储一个参数 `indexes`，初始化为全 1 向量。在剪枝过程中，它会将对应于被剪掉通道的位置设置为 0。\n\n## 基线\n\n`dataset` 参数指定使用的数据集：`cifar10` 或 `cifar100`。`arch` 参数指定使用的架构：`vgg`、`resnet` 或 `densenet`。网络深度与论文中使用的网络保持一致。\n```shell\npython main.py --dataset cifar10 --arch vgg --depth 19\npython main.py --dataset cifar10 --arch resnet --depth 164\npython main.py --dataset cifar10 --arch densenet --depth 40\n```\n\n## 使用稀疏性训练\n\n```shell\npython main.py -sr --s 0.0001 --dataset cifar10 --arch vgg --depth 19\npython main.py -sr --s 0.00001 --dataset cifar10 --arch resnet --depth 164\npython main.py -sr --s 0.00001 --dataset cifar10 --arch densenet --depth 40\n```\n\n## 剪枝\n\n```shell\npython vggprune.py --dataset cifar10 --depth 19 --percent 0.7 --model [模型路径] --save [保存结果的目录]\npython resprune.py --dataset cifar10 --depth 164 --percent 0.4 --model [模型路径] --save [保存结果的目录]\npython denseprune.py --dataset cifar10 --depth 40 --percent 0.4 --model [模型路径] --save [保存结果的目录]\n```\n剪枝后的模型将命名为 `pruned.pth.tar`。\n\n## 微调\n\n```shell\npython main.py --refine [剪枝后的模型路径] --dataset cifar10 --arch vgg --depth 19 --epochs 160\n```\n\n## 结果\n\n实验结果与原论文较为接近，而原论文的结果是使用 Torch 生成的。需要注意的是，由于随机种子不同，在不同的运行中，CIFAR-10\u002F100 数据集上的准确率可能会有约 0.5%\u002F1.5% 的波动，这是根据我们的经验得出的结论。\n### CIFAR10\n|  CIFAR10-Vgg  | 基线 |  稀疏性 (1e-4) | 剪枝 (70%) | 微调-160(70%) |\n| :---------------: | :------: | :--------------------------: | :-----------------: | :-------------------: |\n| Top1 准确率 (%) |  93.77   |            93.30            |        32.54        |         93.78         |\n|    参数量     |  20.04M  |            20.04M            |        2.25M        |         2.25M         |\n\n|  CIFAR10-Resnet-164  | 基线 |    稀疏性 (1e-5) | 剪枝(40%) | 微调-160(40%) |   剪枝(60%)     |  微调-160(60%)       |\n| :---------------: | :------: | :--------------------------: | :-----------------: | :-------------------: |  :----------------:| :--------------------:|\n| Top1 准确率 (%) |  94.75   |            94.76             |        94.58       |         95.05         |      47.73       |     93.81     |\n|    参数量     |  1.71M  |             1.73M            |        1.45M        |         1.45M         |      1.12M          |   1.12M           |\n\n|  CIFAR10-Densenet-40  | 基线 |  稀疏性 (1e-5) | 剪枝 (40%) | 微调-160(40%) |       剪枝(60%)   | 微调-160(60%) |\n| :---------------: | :------: | :--------------------------: | :-----------------: | :-------------------: | :--------------------: | :-----------------:|\n| Top1 准确率 (%) |  94.11   |           94.17             |        94.16       |         94.32         |      89.46       |     94.22     |\n|    参数量     |  1.07M  |            1.07M            |        0.69M       |         0.69M         |       0.49M      |    0.49M     |\n\n### CIFAR100\n|  CIFAR100-Vgg  | 基线 |   稀疏性 (1e-4) | 剪枝 (50%) | 微调-160(50%) |\n| :---------------: | :------: | :--------------------------: | :-----------------: | :-------------------: |\n| Top1 准确率 (%) |   72.12   |            72.05             |         5.31        |         73.32         |\n|    参数量     |  20.04M  |            20.04M            |        4.93M        |         4.93M         |\n\n|  CIFAR100-Resnet-164  | 基线 |   稀疏性 (1e-5) | 剪枝 (40%) | 微调-160(40%) |    剪枝(60%)  | 微调-160(60%) |\n| :---------------: | :------: | :--------------------------: | :-----------------: | :-------------------: |:--------------------: | :-----------------:|\n| Top1 准确率 (%) |  76.79   |            76.87             |        48.0        |         77.36        |  ---       |     ---     |\n|    参数量     |  1.73M  |            1.73M            |        1.49M        |         1.49M         |---       |     ---     |\n\n注意：对于 resnet164-cifar100 剪枝 60% 通道的结果，在本实现中，有时某些层会被全部剪掉，从而导致错误。不过，我们也提供了一个 [掩码实现](https:\u002F\u002Fgithub.com\u002FEric-mingjie\u002Fnetwork-slimming\u002Ftree\u002Fmaster\u002Fmask-impl)，我们在 BN 层的缩放因子上应用掩码。使用掩码实现时，在剪枝 resnet164-cifar100 的 60% 通道后，仍然可以训练剪枝后的网络。\n\n|  CIFAR100-Densenet-40  | 基线 |    稀疏性 (1e-5) | 剪枝 (40%) | 微调-160(40%) | 剪枝(60%)  | 微调-160(60%) |\n| :---------------: | :------: | :--------------------------: | :-----------------: | :-------------------: |:--------------------: | :-----------------:|\n| Top1 准确率 (%) |  73.27   |          73.29            |        67.67        |         73.76         |   19.18       |     73.19     |\n|    参数量     |  1.10M  |            1.10M            |        0.71M        |         0.71M         |  0.50M       |     0.50M    |\n\n## 联系方式\nsunmj15 at gmail.com  \nliuzhuangthu at gmail.com","# Network Slimming 快速上手指南\n\nNetwork Slimming 是一种通过剪枝卷积神经网络通道来实现模型压缩与加速的技术。本项目基于 PyTorch 实现了 ICCV 2017 论文《Learning Efficient Convolutional Networks Through Network Slimming》中的算法，支持 VGG、ResNet 和 DenseNet 架构。\n\n## 环境准备\n\n本项目依赖较旧版本的 PyTorch，建议使用虚拟环境以避免冲突。\n\n*   **系统要求**：Linux \u002F macOS \u002F Windows (需配置好 CUDA 环境)\n*   **核心依赖**：\n    *   `torch` == 0.3.1\n    *   `torchvision` == 0.2.0\n*   **Python 版本**：建议 Python 3.6 或 3.7 (以兼容旧版 PyTorch)\n\n> **注意**：由于依赖版本较老，直接通过 `pip` 安装可能遇到兼容性问题。如果官方源安装困难，可尝试寻找历史版本镜像或使用 Docker 容器。\n\n## 安装步骤\n\n1.  **克隆项目代码**\n    ```bash\n    git clone https:\u002F\u002Fgithub.com\u002FEric-mingjie\u002Fnetwork-slimming.git\n    cd network-slimming\n    ```\n\n2.  **安装依赖**\n    由于特定版本限制，请显式指定版本安装：\n    ```bash\n    pip install torch==0.3.1 torchvision==0.2.0\n    ```\n    *(注：若国内网络下载缓慢，可添加 `-i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple` 使用清华镜像源)*\n\n3.  **验证安装**\n    确保没有导入错误后，即可开始使用。\n\n## 基本使用\n\n完整的工作流包含四个阶段：**训练基准模型** -> **稀疏训练** -> **剪枝** -> **微调**。以下以 CIFAR-10 数据集上的 VGG-19 为例：\n\n### 1. 训练基准模型 (Baseline)\n首先训练一个未剪枝的原始模型。\n```shell\npython main.py --dataset cifar10 --arch vgg --depth 19\n```\n\n### 2. 稀疏训练 (Train with Sparsity)\n在训练过程中加入 L1 正则化（稀疏约束），使缩放因子（scaling factors）趋向于 0，为剪枝做准备。\n*   `-sr`: 开启稀疏正则化\n*   `--s`: 稀疏惩罚系数 (VGG 通常设为 0.0001)\n\n```shell\npython main.py -sr --s 0.0001 --dataset cifar10 --arch vgg --depth 19\n```\n\n### 3. 执行剪枝 (Prune)\n根据训练好的模型权重，按比例剪除不重要的通道。\n*   `--percent`: 剪枝比例 (0.7 表示剪掉 70% 的通道)\n*   `--model`: 上一步生成的模型路径 (例如 `checkpoint.pth.tar`)\n*   `--save`: 剪枝后模型的保存目录\n\n```shell\npython vggprune.py --dataset cifar10 --depth 19 --percent 0.7 --model checkpoint.pth.tar --save .\u002Fpruned_result\n```\n*生成文件：`.\u002Fpruned_result\u002Fpruned.pth.tar`*\n\n### 4. 微调模型 (Fine-tune)\n加载剪枝后的模型结构及权重，进行重新训练以恢复精度。\n*   `--refine`: 指向剪枝后的模型文件\n\n```shell\npython main.py --refine .\u002Fpruned_result\u002Fpruned.pth.tar --dataset cifar10 --arch vgg --depth 19 --epochs 160\n```\n\n---\n**其他架构示例命令：**\n\n*   **ResNet-164**:\n    *   稀疏训练：`python main.py -sr --s 0.00001 --dataset cifar10 --arch resnet --depth 164`\n    *   剪枝 (40%)：`python resprune.py --dataset cifar10 --depth 164 --percent 0.4 --model [MODEL_PATH] --save [SAVE_DIR]`\n\n*   **DenseNet-40**:\n    *   稀疏训练：`python main.py -sr --s 0.00001 --dataset cifar10 --arch densenet --depth 40`\n    *   剪枝 (40%)：`python denseprune.py --dataset cifar10 --depth 40 --percent 0.4 --model [MODEL_PATH] --save [SAVE_DIR]`","某边缘计算团队正致力于将高精度图像识别模型部署到算力受限的无人机巡检设备上，面临模型体积过大导致无法落地的困境。\n\n### 没有 network-slimming 时\n- **显存占用过高**：原始的 VGG-19 模型参数量高达 2000 万，远超无人机嵌入式芯片的内存上限，程序直接因内存溢出（OOM）崩溃。\n- **推理延迟严重**：庞大的网络结构导致单帧图像处理耗时过长，无法满足实时巡检中毫秒级的响应需求。\n- **剪枝过程繁琐**：若手动剔除不重要的卷积通道，不仅容易破坏网络拓扑结构，还需重新设计复杂的训练策略，试错成本极高。\n- **精度与效率难平衡**：简单的量化或蒸馏方法往往以牺牲大量识别准确率为代价，导致漏检率飙升，无法达到工业级标准。\n\n### 使用 network-slimming 后\n- **模型极致轻量化**：通过稀疏训练和通道剪枝，成功将 VGG-19 参数量从 2004 万压缩至 225 万（剪枝率 70%），完美适配端侧硬件内存。\n- **推理速度显著提升**：移除冗余通道后，计算量大幅降低，无人机实现了流畅的实时视频流分析，延迟降低数倍。\n- **自动化无损压缩**：利用 network-slimming 内置的通道选择层自动识别并裁剪低贡献度特征，配合微调后，Top-1 准确率甚至从 93.77% 回升至 93.78%，实现“瘦身”不减效。\n- **全流程标准化**：从稀疏训练、剪枝到微调仅需几条命令即可完成，支持 ResNet 和 DenseNet 等多种架构，极大缩短了模型优化周期。\n\nnetwork-slimming 通过结构化剪枝技术，在几乎不损失精度的前提下将庞大模型压缩至原体积的十分之一，彻底打通了高性能深度学习模型在边缘设备上的落地路径。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FEric-mingjie_network-slimming_88e88f7e.png","Eric-mingjie","Mingjie Sun","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FEric-mingjie_ce8e2164.png","CMU CS PhD","Pittsburgh, PA",null,"https:\u002F\u002Feric-mingjie.github.io","https:\u002F\u002Fgithub.com\u002FEric-mingjie",[81],{"name":82,"color":83,"percentage":84},"Python","#3572A5",100,919,217,"2026-03-10T07:59:26","MIT","未说明","未说明 (基于 PyTorch，通常支持 CUDA 加速，但具体版本和显存需求取决于数据集和模型深度)",{"notes":92,"python":89,"dependencies":93},"该项目基于较旧的 PyTorch 版本 (v0.3.1)，在现代环境中运行可能需要调整代码或寻找兼容版本。支持 VGG、ResNet 和 DenseNet 架构。针对 CIFAR-10\u002F100 数据集。在 ResNet-164 (CIFAR-100) 上剪枝 60% 通道时，默认实现可能会因某些层被完全剪枝而报错，作者提供了额外的 mask 实现方案来解决此问题。由于随机种子不同，结果可能有约 0.5%-1.5% 的波动。",[94,95],"torch==0.3.1","torchvision==0.2.0",[14],[98,99,100,101,102],"deep-learning","convolutional-neural-networks","pytorch","channel-pruning","sparsity","2026-03-27T02:49:30.150509","2026-04-07T22:51:02.780922",[106,111,116,121,126,131,136],{"id":107,"question_zh":108,"answer_zh":109,"source_url":110},23095,"代码支持哪个版本的 PyTorch？遇到多 GPU 训练或索引错误怎么办？","本代码是基于 PyTorch 0.3.1 开发的，不保证在 PyTorch 1.0+ 版本上能正常运行。许多用户遇到的多 GPU 训练失败、'unexpected key' 错误、索引类型错误（TypeError: indexing a tensor with an object of type list）以及 CUDA 断言错误，通常都是因为 PyTorch 版本不兼容导致的。建议将环境降级至 PyTorch 0.3.1 以解决这些问题。","https:\u002F\u002Fgithub.com\u002FEric-mingjie\u002Fnetwork-slimming\u002Fissues\u002F9",{"id":112,"question_zh":113,"answer_zh":114,"source_url":115},23096,"稀疏训练后的模型检查点（ckpt）文件存储在哪里？加载时出现后端不匹配错误如何解决？","训练后的模型存储在 `args.save` 指定的目录中。如果在剪枝阶段加载模型时出现 `RuntimeError: Expected object of backend CUDA but got backend CPU` 错误，这是因为阈值变量 `thre` 在 CPU 上而权重在 GPU 上。解决方法是将代码 `mask = weight_copy.gt(thre).float().cuda()` 修改为 `mask = weight_copy.gt(thre.cuda()).float().cuda()`，确保阈值也移动到 GPU 上。","https:\u002F\u002Fgithub.com\u002FEric-mingjie\u002Fnetwork-slimming\u002Fissues\u002F8",{"id":117,"question_zh":118,"answer_zh":119,"source_url":120},23097,"为什么代码中没有直接使用 abs() 函数作为 L1 损失，而是使用了 torch.sign()？","这是为了直接在梯度反向传播过程中实现 L1 正则化。L1 范数 g(s) = |s| 的导数是符号函数 sign()。代码中通过 `m.weight.grad.data.add_(args.s*torch.sign(m.weight.data))` 直接将 L1 正则项的梯度加到 BatchNorm 层权重的梯度上，这在数学上与在 Loss 定义中添加正则项是等价的，但实现方式更直接。","https:\u002F\u002Fgithub.com\u002FEric-mingjie\u002Fnetwork-slimming\u002Fissues\u002F19",{"id":122,"question_zh":123,"answer_zh":124,"source_url":125},23098,"剪枝后是否可以将普通卷积替换为深度卷积（Depthwise Convolution）以进一步轻量化？","理论上不可行。Network Slimming 剪枝的是滤波器（filter），剪枝后的网络结构仍然是标准的全卷积结构，并不是分组卷积（Group Convolution）。因此，不能简单地将剪枝后的普通卷积直接替换为 MobileNetV2 中的深度卷积，因为两者的计算逻辑和连接方式不同。","https:\u002F\u002Fgithub.com\u002FEric-mingjie\u002Fnetwork-slimming\u002Fissues\u002F33",{"id":127,"question_zh":128,"answer_zh":129,"source_url":130},23099,"稀疏训练过程中是否必须使用 channel_selection 模块？","这取决于你使用的网络架构和剪枝方式。对于 VGG 网络，通常不需要 `channel_selection`；而对于 ResNet 和 DenseNet，通常需要该模块来处理残差连接或密集连接。但是，如果你使用的是项目中的 `mask-impl`（掩码实现）分支，则任何模型都不再需要 `channel_selection` 模块。","https:\u002F\u002Fgithub.com\u002FEric-mingjie\u002Fnetwork-slimming\u002Fissues\u002F11",{"id":132,"question_zh":133,"answer_zh":134,"source_url":135},23100,"运行 vggprune.py 时出现 'IndexError: index 0 is out of bounds for dimension 0 with size 0' 错误是什么原因？","这个错误通常是因为 PyTorch 版本不兼容导致的。该代码是基于 PyTorch 0.3.1 开发的，在 PyTorch 1.0.1 及以上版本中，某些初始化函数（如 `kaiming_uniform_`）对空张量的处理方式发生了变化，导致计算 fan_in\u002Ffan_out 时出错。请尝试切换回 PyTorch 0.3.1 版本运行。","https:\u002F\u002Fgithub.com\u002FEric-mingjie\u002Fnetwork-slimming\u002Fissues\u002F17",{"id":137,"question_zh":138,"answer_zh":139,"source_url":140},23101,"训练完成后发现 gamma 值并不稀疏（例如分布在 0.1-0.8 之间），可能是什么原因？","Gamma 值不稀疏通常意味着在训练过程中没有正确启用稀疏性约束。请检查训练时是否添加了 sparsity 参数（即 `--s` 或类似参数）来施加 L1 正则化。如果没有在训练命令中加入稀疏性惩罚项，BatchNorm 层的缩放因子（gamma）就不会趋向于零，从而导致无法有效剪枝。","https:\u002F\u002Fgithub.com\u002FEric-mingjie\u002Fnetwork-slimming\u002Fissues\u002F32",[]]