[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-keyu-tian--SparK":3,"tool-keyu-tian--SparK":61},[4,18,28,37,45,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":24,"last_commit_at":25,"category_tags":26,"status":17},9989,"n8n","n8n-io\u002Fn8n","n8n 是一款面向技术团队的公平代码（fair-code）工作流自动化平台，旨在让用户在享受低代码快速构建便利的同时，保留编写自定义代码的灵活性。它主要解决了传统自动化工具要么过于封闭难以扩展、要么完全依赖手写代码效率低下的痛点，帮助用户轻松连接 400 多种应用与服务，实现复杂业务流程的自动化。\n\nn8n 特别适合开发者、工程师以及具备一定技术背景的业务人员使用。其核心亮点在于“按需编码”：既可以通过直观的可视化界面拖拽节点搭建流程，也能随时插入 JavaScript 或 Python 代码、调用 npm 包来处理复杂逻辑。此外，n8n 原生集成了基于 LangChain 的 AI 能力，支持用户利用自有数据和模型构建智能体工作流。在部署方面，n8n 提供极高的自由度，支持完全自托管以保障数据隐私和控制权，也提供云端服务选项。凭借活跃的社区生态和数百个现成模板，n8n 让构建强大且可控的自动化系统变得简单高效。",184740,2,"2026-04-19T23:22:26",[16,14,13,15,27],"插件",{"id":29,"name":30,"github_repo":31,"description_zh":32,"stars":33,"difficulty_score":10,"last_commit_at":34,"category_tags":35,"status":17},10095,"AutoGPT","Significant-Gravitas\u002FAutoGPT","AutoGPT 是一个旨在让每个人都能轻松使用和构建 AI 的强大平台，核心功能是帮助用户创建、部署和管理能够自动执行复杂任务的连续型 AI 智能体。它解决了传统 AI 应用中需要频繁人工干预、难以自动化长流程工作的痛点，让用户只需设定目标，AI 即可自主规划步骤、调用工具并持续运行直至完成任务。\n\n无论是开发者、研究人员，还是希望提升工作效率的普通用户，都能从 AutoGPT 中受益。开发者可利用其低代码界面快速定制专属智能体；研究人员能基于开源架构探索多智能体协作机制；而非技术背景用户也可直接选用预置的智能体模板，立即投入实际工作场景。\n\nAutoGPT 的技术亮点在于其模块化“积木式”工作流设计——用户通过连接功能块即可构建复杂逻辑，每个块负责单一动作，灵活且易于调试。同时，平台支持本地自托管与云端部署两种模式，兼顾数据隐私与使用便捷性。配合完善的文档和一键安装脚本，即使是初次接触的用户也能在几分钟内启动自己的第一个 AI 智能体。AutoGPT 正致力于降低 AI 应用门槛，让人人都能成为 AI 的创造者与受益者。",183572,"2026-04-20T04:47:55",[13,36,27,14,15],"语言模型",{"id":38,"name":39,"github_repo":40,"description_zh":41,"stars":42,"difficulty_score":10,"last_commit_at":43,"category_tags":44,"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":46,"name":47,"github_repo":48,"description_zh":49,"stars":50,"difficulty_score":24,"last_commit_at":51,"category_tags":52,"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 真正成长为懂上",161692,"2026-04-20T11:33:57",[14,13,36],{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":24,"last_commit_at":59,"category_tags":60,"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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",109154,"2026-04-18T11:18:24",[14,15,13],{"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":78,"owner_email":79,"owner_twitter":80,"owner_website":81,"owner_url":82,"languages":83,"stars":92,"forks":93,"last_commit_at":94,"license":95,"difficulty_score":10,"env_os":96,"env_gpu":97,"env_ram":98,"env_deps":99,"category_tags":106,"github_topics":107,"view_count":24,"oss_zip_url":128,"oss_zip_packed_at":128,"status":17,"created_at":129,"updated_at":130,"faqs":131,"releases":132},10087,"keyu-tian\u002FSparK","SparK","[ICLR'23 Spotlight🔥] The first successful BERT\u002FMAE-style pretraining on any convolutional network; Pytorch impl. of \"Designing BERT for Convolutional Networks: Sparse and Hierarchical Masked Modeling\"","SparK 是一款基于 PyTorch 的开源预训练框架，它成功打破了传统限制，首次实现了在任意卷积神经网络（如 ResNet）上应用类似 BERT 或 MAE 的自监督预训练。长期以来，这类高效的掩码建模方法主要局限于 Transformer 架构，而 SparK 填补了卷积网络在这一领域的空白，让经典的 CNN 模型也能通过“掩码 - 重建”的方式从无标签数据中学习强大的特征表示。\n\n该工具的核心技术亮点在于其论文提出的“稀疏与分层掩码建模”策略。不同于简单的随机遮挡，SparK 能够根据卷积网络的层级结构智能地设计掩码模式，从而更有效地引导模型学习图像的语义信息。其代码库设计简洁、依赖极少且易于阅读，不仅复现了 ICLR 2023 的焦点研究成果，更在 ImageNet 自监督图像分类任务中达到了当时的最先进水平（SOTA）。\n\nSparK 非常适合计算机视觉领域的研究人员和开发者使用。如果你希望提升现有 CNN 模型的性能，或者想在不依赖大量标注数据的情况下进行模型预训练，SparK 提供了一个高效且经过验证的解决方案。无论是学术探索还是工业界落地，它都能帮助使用者以更低的成本","SparK 是一款基于 PyTorch 的开源预训练框架，它成功打破了传统限制，首次实现了在任意卷积神经网络（如 ResNet）上应用类似 BERT 或 MAE 的自监督预训练。长期以来，这类高效的掩码建模方法主要局限于 Transformer 架构，而 SparK 填补了卷积网络在这一领域的空白，让经典的 CNN 模型也能通过“掩码 - 重建”的方式从无标签数据中学习强大的特征表示。\n\n该工具的核心技术亮点在于其论文提出的“稀疏与分层掩码建模”策略。不同于简单的随机遮挡，SparK 能够根据卷积网络的层级结构智能地设计掩码模式，从而更有效地引导模型学习图像的语义信息。其代码库设计简洁、依赖极少且易于阅读，不仅复现了 ICLR 2023 的焦点研究成果，更在 ImageNet 自监督图像分类任务中达到了当时的最先进水平（SOTA）。\n\nSparK 非常适合计算机视觉领域的研究人员和开发者使用。如果你希望提升现有 CNN 模型的性能，或者想在不依赖大量标注数据的情况下进行模型预训练，SparK 提供了一个高效且经过验证的解决方案。无论是学术探索还是工业界落地，它都能帮助使用者以更低的成本挖掘卷积网络的潜力。","# SparK: the first successful BERT\u002FMAE-style pretraining on *any* convolutional networks &nbsp;[![Reddit](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FReddit-🔥%20120k%20views-b31b1b.svg?style=social&logo=reddit)](https:\u002F\u002Fwww.reddit.com\u002Fr\u002FMachineLearning\u002Fcomments\u002F10ix0l1\u002Fr_iclr2023_spotlight_the_first_bertstyle\u002F) [![Twitter](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTwitter-🔥%2020k%2B120k%20views-b31b1b.svg?style=social&logo=twitter)](https:\u002F\u002Ftwitter.com\u002Fkeyutian\u002Fstatus\u002F1616606179144380422)\n\nThis is the official implementation of ICLR paper [Designing BERT for Convolutional Networks: ***Spar***se and Hierarchical Mas***k***ed Modeling](https:\u002F\u002Farxiv.org\u002Fabs\u002F2301.03580), which can pretrain **any CNN** (e.g., ResNet) in a **BERT-style self-supervised** manner.\nWe've tried our best to make the codebase clean, short, easy to read, state-of-the-art, and only rely on minimal dependencies.\n\n\u003C!-- \u003Cp align=\"center\"> -->\n\u003C!-- \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fkeyu-tian_SparK_readme_88e19726b538.png\" width=86% class=\"center\"> -->\n\u003C!-- \u003C\u002Fp> -->\n\nhttps:\u002F\u002Fuser-images.githubusercontent.com\u002F39692511\u002F226858919-dd4ccf7e-a5ba-4a33-ab21-4785b8a7833c.mp4\n\n\u003Cbr>\n\n\u003Cdiv align=\"center\">\n\n[![SOTA](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FState%20of%20the%20Art-Self--Supervised%20Image%20Classification%20on%20ImageNet%20%28CNN%29-32B1B4?logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB3aWR0aD0iNjA2IiBoZWlnaHQ9IjYwNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgb3ZlcmZsb3c9ImhpZGRlbiI%2BPGRlZnM%2BPGNsaXBQYXRoIGlkPSJjbGlwMCI%2BPHJlY3QgeD0iLTEiIHk9Ii0xIiB3aWR0aD0iNjA2IiBoZWlnaHQ9IjYwNiIvPjwvY2xpcFBhdGg%2BPC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEgMSkiPjxyZWN0IHg9IjUyOSIgeT0iNjYiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0NzMiIGZpbGw9IiM0NEYyRjYiLz48cmVjdCB4PSIxOSIgeT0iNjYiIHdpZHRoPSI1NyIgaGVpZ2h0PSI0NzMiIGZpbGw9IiM0NEYyRjYiLz48cmVjdCB4PSIyNzQiIHk9IjE1MSIgd2lkdGg9IjU3IiBoZWlnaHQ9IjMwMiIgZmlsbD0iIzQ0RjJGNiIvPjxyZWN0IHg9IjEwNCIgeT0iMTUxIiB3aWR0aD0iNTciIGhlaWdodD0iMzAyIiBmaWxsPSIjNDRGMkY2Ii8%2BPHJlY3QgeD0iNDQ0IiB5PSIxNTEiIHdpZHRoPSI1NyIgaGVpZ2h0PSIzMDIiIGZpbGw9IiM0NEYyRjYiLz48cmVjdCB4PSIzNTkiIHk9IjE3MCIgd2lkdGg9IjU2IiBoZWlnaHQ9IjI2NCIgZmlsbD0iIzQ0RjJGNiIvPjxyZWN0IHg9IjE4OCIgeT0iMTcwIiB3aWR0aD0iNTciIGhlaWdodD0iMjY0IiBmaWxsPSIjNDRGMkY2Ii8%2BPHJlY3QgeD0iNzYiIHk9IjY2IiB3aWR0aD0iNDciIGhlaWdodD0iNTciIGZpbGw9IiM0NEYyRjYiLz48cmVjdCB4PSI0ODIiIHk9IjY2IiB3aWR0aD0iNDciIGhlaWdodD0iNTciIGZpbGw9IiM0NEYyRjYiLz48cmVjdCB4PSI3NiIgeT0iNDgyIiB3aWR0aD0iNDciIGhlaWdodD0iNTciIGZpbGw9IiM0NEYyRjYiLz48cmVjdCB4PSI0ODIiIHk9IjQ4MiIgd2lkdGg9IjQ3IiBoZWlnaHQ9IjU3IiBmaWxsPSIjNDRGMkY2Ii8%2BPC9nPjwvc3ZnPg%3D%3D)](https:\u002F\u002Fpaperswithcode.com\u002Fsota\u002Fself-supervised-image-classification-on-1?tag_filter=17&p=designing-bert-for-convolutional-networks)&nbsp;\n[![OpenReview](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FICLR'2023%20Spotlight-NRxydtWup1S-b31b1b.svg)](https:\u002F\u002Fopenreview.net\u002Fforum?id=NRxydtWup1S)&nbsp;\n[![arXiv](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FarXiv-2301.03580-b31b1b.svg)](https:\u002F\u002Farxiv.org\u002Fabs\u002F2301.03580)\n\u003C\u002Fdiv>\n\n\u003C!-- \u003Cdiv align=\"center\"> -->\n\u003C!--   [[`pdf`](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2301.03580.pdf)] -->\n\u003C!--   [[`bibtex`](https:\u002F\u002Fgithub.com\u002Fkeyu-tian\u002FSparK#citation)] -->\n\u003C!-- \u003C\u002Fdiv> -->\n\n## 🔥 News\n\n- A brief introduction (in English) is available on our ICLR poster page! [[`📹Recorded Video, Poster, and Slides`](https:\u002F\u002Ficlr.cc\u002Fvirtual\u002F2023\u002Fposter\u002F12227)].\n- On **May. 11th** another livestream on OpenMMLab & ReadPaper (bilibili)! [[`📹Recorded Video`](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV11s4y1M7qL\u002F)]\n- On **Apr. 27th (UTC+8 8pm)** another livestream would be held at [OpenMMLab (bilibili)](https:\u002F\u002Fspace.bilibili.com\u002F1293512903)!\n- On **Mar. 22nd (UTC+8 8pm)** another livestream would be held at 极市平台 (bilibili)! [[`📹Recorded Video`](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1Da4y1T7mr\u002F)]\n- The share on [TechBeat (将门创投)](https:\u002F\u002Fwww.techbeat.net\u002Ftalk-info?id=758) is scheduled on **Mar. 16th (UTC+8 8pm)** too! [[`📹Recorded Video`](https:\u002F\u002Fwww.techbeat.net\u002Ftalk-info?id=758)]\n- We are honored to be invited by Synced (\"机器之心机动组 视频号\" on WeChat) to give a talk about SparK on **Feb. 27th (UTC+0 11am, UTC+8 7pm)**, welcome! [[`📹Recorded Video`](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1J54y1u7U3\u002F)]\n- This work got accepted to ICLR 2023 as a Spotlight (notable-top-25%).\n- Other articles: [[`Synced`](https:\u002F\u002Fsyncedreview.com\u002F2023\u002F01\u002F19\u002Fbert-style-pretraining-on-convnets-peking-u-bytedance-oxford-us-sparse-masked-modelling-with-hierarchy-leads-the-way\u002F)]\n  [[`DeepAI`](https:\u002F\u002Fdeepai.org\u002Fpublication\u002Fdesigning-bert-for-convolutional-networks-sparse-and-hierarchical-masked-modeling)]\n  [[`TheGradient`](https:\u002F\u002Fthegradientpub.substack.com\u002Fp\u002Fupdate-42-ai-news-editors-make-mistakes)]\n  [[`Bytedance`](https:\u002F\u002Fmp.weixin.qq.com\u002Fs\u002FAk1CeeG83sgO0Wf8KgEIQQ)]\n  [[`CVers`](https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F598056871)\n  [[`QbitAI(量子位)`](https:\u002F\u002Fwww.qbitai.com\u002F2023\u002F02\u002F42109.html)]\n  [[`BAAI(智源)`](https:\u002F\u002Fhub.baai.ac.cn\u002Fview\u002F23360)]\n  [[`机器之心机动组`](https:\u002F\u002Fmp.weixin.qq.com\u002Fs\u002FYlek_lf5enYHRTnkEwAFpg)]\n  [[`极市平台`](https:\u002F\u002Fmp.weixin.qq.com\u002Fs\u002FGSVHUtBNw5k5wfn2pbC99Q)]\n  [[`ReadPaper笔记`](https:\u002F\u002Freadpaper.com\u002Fpaper\u002F4710371282714116097)]\n\n\n\u003C!-- ## 📺 Video demo (we use [these ppt slides](https:\u002F\u002Fgithub.com\u002Fkeyu-tian\u002FSparK\u002Freleases\u002Ftag\u002Ffile_sharing) to make the animated video) -->\n\u003C!-- https:\u002F\u002Fuser-images.githubusercontent.com\u002F6366788\u002F213662770-5f814de0-cbe8-48d9-8235-e8907fd81e0e.mp4 -->\n\n## 🕹️ Colab Visualization Demo\n\nCheck [pretrain\u002Fviz_reconstruction.ipynb](pretrain\u002Fviz_reconstruction.ipynb) for visualizing the reconstruction of SparK pretrained models, like:\n\n\u003Cp align=\"center\">\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fkeyu-tian_SparK_readme_8d9cb68dc3c6.png\" width=50%\n\u003Cp>\n\nWe also provide [pretrain\u002Fviz_spconv.ipynb](pretrain\u002Fviz_spconv.ipynb) that shows the \"mask pattern vanishing\" issue of dense conv layers.\n\n\n## What's new here?\n\n### 🔥 Pretrained CNN beats pretrained Swin-Transformer:\n\n\u003Cp align=\"center\">\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fkeyu-tian_SparK_readme_ee5e83c37410.jpg\" width=66%>\n\u003Cp>\n\n### 🔥 After SparK pretraining, smaller models can beat un-pretrained larger models:\n\n\n\u003Cp align=\"center\">\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fkeyu-tian_SparK_readme_7bdc2e05c93b.jpg\" width=72%>\n\u003Cp>\n\n### 🔥 All models can benefit, showing a scaling behavior:\n\n\n\u003Cp align=\"center\">\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fkeyu-tian_SparK_readme_015fb9e53e9d.png\" width=65%>\n\u003Cp>\n\n\n### 🔥 Generative self-supervised pretraining surpasses contrastive learning:\n\n\u003Cp align=\"center\">\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fkeyu-tian_SparK_readme_20ee61d1051e.png\" width=65%>\n\u003Cp>\n\n#### See our [paper](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2301.03580.pdf) for more analysis, discussions, and evaluations.\n\n\n## Todo list\n\n\u003Cdetails>\n\n\u003Csummary>catalog\u003C\u002Fsummary>\n\n- [x] Pretraining code\n- [x] Pretraining toturial for customized CNN model ([Tutorial for pretraining your own CNN model](https:\u002F\u002Fgithub.com\u002Fkeyu-tian\u002FSparK\u002Ftree\u002Fmain\u002Fpretrain\u002F#tutorial-for-pretraining-your-own-cnn-model))\n- [x] Pretraining toturial for customized dataset ([Tutorial for pretraining your own dataset](https:\u002F\u002Fgithub.com\u002Fkeyu-tian\u002FSparK\u002Ftree\u002Fmain\u002Fpretrain\u002F#tutorial-for-pretraining-your-own-dataset))\n- [x] Pretraining Colab visualization playground ([reconstruction](\u002Fpretrain\u002Fviz_reconstruction.ipynb), [sparse conv](pretrain\u002Fviz_spconv.ipynb))\n- [x] Finetuning code\n- [ ] Weights & visualization playground in `huggingface`\n- [ ] Weights in `timm`\n\n\u003C\u002Fdetails>\n\n\n## Pretrained weights (self-supervised; w\u002Fo decoder; can be directly finetuned)\n\n**Note: for network definitions, we directly use `timm.models.ResNet` and [official ConvNeXt](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002FConvNeXt\u002Fblob\u002F048efcea897d999aed302f2639b6270aedf8d4c8\u002Fmodels\u002Fconvnext.py).**\n\n`reso.`: the image resolution; `acc@1`: ImageNet-1K finetuned acc (top-1)\n\n\n|     arch.      | reso. | acc@1 | #params | flops  | weights (self-supervised, without SparK's decoder)                                                                                     |\n|:--------------:|:-----:|:-----:|:-------:|:------:|:---------------------------------------------------------------------------------------------------------------------------------------|\n|    ResNet50    |  224  | 80.6  |   26M   |  4.1G  | [resnet50_1kpretrained_timm_style.pth](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1H8605HbxGvrsu4x4rIoNr-Wkd7JkxFPQ\u002Fview?usp=share_link)          |\n|   ResNet101    |  224  | 82.2  |   45M   |  7.9G  | [resnet101_1kpretrained_timm_style.pth](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1ZwTztjU-_rfvOVfLoce9SMw2Fx0DQfoO\u002Fview?usp=share_link)         |\n|   ResNet152    |  224  | 82.7  |   60M   | 11.6G  | [resnet152_1kpretrained_timm_style.pth](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1FOVuECnzQAI-OzE-hnrqW7tVpg8kTziM\u002Fview?usp=share_link)         |\n|   ResNet200    |  224  | 83.1  |   65M   | 15.1G  | [resnet200_1kpretrained_timm_style.pth](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1_Q4e30qqhjchrdyW3fT6P98Ga-WnQ57s\u002Fview?usp=share_link)         |\n|   ConvNeXt-S   |  224  | 84.1  |   50M   |  8.7G  | [convnextS_1kpretrained_official_style.pth](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1Ah6lgDY5YDNXoXHQHklKKMbEd08RYivN\u002Fview?usp=share_link)     |\n|   ConvNeXt-B   |  224  | 84.8  |   89M   | 15.4G  | [convnextB_1kpretrained_official_style.pth](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1ZjWbqI1qoBcqeQijI5xX9E-YNkxpJcYV\u002Fview?usp=share_link)     |\n|   ConvNeXt-L   |  224  | 85.4  |  198M   | 34.4G  | [convnextL_1kpretrained_official_style.pth](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1qfYzGUpYBzuA88_kXkVl4KNUwfutMVfw\u002Fview?usp=share_link)     |\n|   ConvNeXt-L   |  384  | 86.0  |  198M   | 101.0G | [convnextL_384_1kpretrained_official_style.pth](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1YgWNXJjI89l35P4ksAmBNWZ2JZCpj9n4\u002Fview?usp=share_link) |\n\n\n\u003Cdetails>\n\n\u003Csummary> \u003Cb> Pretrained weights (with SparK's UNet-style decoder; can be used to reconstruct images) \u003C\u002Fb> \u003C\u002Fsummary>\n\n\u003Cbr>\n\n|   arch.    | reso. | acc@1 | #params | flops  | weights (self-supervised, with SparK's decoder)                                                                                           |\n|:----------:|:-----:|:-----:|:-------:|:------:|:------------------------------------------------------------------------------------------------------------------------------------------|\n|  ResNet50  |  224  | 80.6  |   26M   |  4.1G  | [res50_withdecoder_1kpretrained_spark_style.pth](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1STt3w3e5q9eCPZa8VzcJj1zG6p3jLeSF\u002Fview?usp=share_link)   |\n| ResNet101  |  224  | 82.2  |   45M   |  7.9G  | [res101_withdecoder_1kpretrained_spark_style.pth](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1GjN48LKtlop2YQre6---7ViCWO-3C0yr\u002Fview?usp=share_link)  |\n| ResNet152  |  224  | 82.7  |   60M   | 11.6G  | [res152_withdecoder_1kpretrained_spark_style.pth](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1U3Cd94j4ZHfYR2dUjWmsEWfjP6Opx4oo\u002Fview?usp=share_link)  |\n| ResNet200  |  224  | 83.1  |   65M   | 15.1G  | [res200_withdecoder_1kpretrained_spark_style.pth](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F13AFSqvIr0v-2hmb4DzVza45t_lhf2CnD\u002Fview?usp=share_link)  |\n| ConvNeXt-S |  224  | 84.1  |   50M   |  8.7G  | [cnxS224_withdecoder_1kpretrained_spark_style.pth](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1bKvrE4sNq1PfzhWlQJXEPrl2kHqHRZM-\u002Fview?usp=share_link) |\n| ConvNeXt-L |  384  | 86.0  |  198M   | 101.0G | [cnxL384_withdecoder_1kpretrained_spark_style.pth](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1ZI9Jgtb3fKWE_vDFEly29w-1FWZSNwa0\u002Fview?usp=share_link) |\n\n\u003C\u002Fdetails>\n\n\u003Cbr>\n\n## Installation & Running\n\nWe highly recommended you to use `torch==1.10.0`, `torchvision==0.11.1`, and `timm==0.5.4` for reproduction.\nCheck [INSTALL.md](INSTALL.md) to install all pip dependencies.\n\n- **Loading pretrained model weights in 3 lines**\n```python3\n# download our weights `resnet50_1kpretrained_timm_style.pth` first\nimport torch, timm\nres50, state = timm.create_model('resnet50'), torch.load('resnet50_1kpretrained_timm_style.pth', 'cpu')\nres50.load_state_dict(state.get('module', state), strict=False)     # just in case the model weights are actually saved in state['module']\n```\n\n- **Pretraining**\n  - any ResNet or ConvNeXt on ImageNet-1k: &nbsp;see [pretrain\u002F](pretrain)\n  - **your own CNN model**: &nbsp;see [pretrain\u002F](pretrain), especially [pretrain\u002Fmodels\u002Fcustom.py](pretrain\u002Fmodels\u002Fcustom.py)\n\n\n- **Finetuning**\n  - any ResNet or ConvNeXt on ImageNet-1k: &nbsp;check [downstream_imagenet\u002F](downstream_imagenet) for subsequent instructions.\n  - ResNets on COCO: &nbsp;see [downstream_d2\u002F](downstream_d2)\n  - ConvNeXts on COCO: &nbsp;see [downstream_mmdet\u002F](downstream_mmdet)\n\n\n## Acknowledgement\n\nWe referred to these useful codebases:\n\n- [BEiT](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Funilm\u002Ftree\u002Fmaster\u002Fbeit), [MAE](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Fmae), [ConvNeXt](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002FConvNeXt)\n- [timm](https:\u002F\u002Fgithub.com\u002Frwightman\u002Fpytorch-image-models), [MoCoV2](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Fmoco), [Detectron2](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Fdetectron2), [MMDetection](https:\u002F\u002Fgithub.com\u002Fopen-mmlab\u002Fmmdetection)\n\n\n\n## License\nThis project is under the MIT license. See [LICENSE](LICENSE) for more details.\n\n\n## Citation\n\nIf you found this project useful, you can kindly give us a star ⭐, or cite us in your work 📖:\n```\n@Article{tian2023designing,\n  author  = {Keyu Tian and Yi Jiang and Qishuai Diao and Chen Lin and Liwei Wang and Zehuan Yuan},\n  title   = {Designing BERT for Convolutional Networks: Sparse and Hierarchical Masked Modeling},\n  journal = {arXiv:2301.03580},\n  year    = {2023},\n}\n```\n\n","# SparK：首个在*任何*卷积神经网络上成功实现BERT\u002FMAE风格预训练的模型 &nbsp;[![Reddit](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FReddit-🔥%20120k%20views-b31b1b.svg?style=social&logo=reddit)](https:\u002F\u002Fwww.reddit.com\u002Fr\u002FMachineLearning\u002Fcomments\u002F10ix0l1\u002Fr_iclr2023_spotlight_the_first_bertstyle\u002F) [![Twitter](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTwitter-🔥%2020k%2B120k%20views-b31b1b.svg?style=social&logo=twitter)](https:\u002F\u002Ftwitter.com\u002Fkeyutian\u002Fstatus\u002F1616606179144380422)\n\n这是ICLR论文《为卷积网络设计BERT：稀疏且分层的掩码建模》（[arXiv:2301.03580](https:\u002F\u002Farxiv.org\u002Fabs\u002F2301.03580)）的官方实现，能够在**任意CNN**（如ResNet）上以**BERT风格的自监督方式**进行预训练。我们尽力使代码库简洁、易读、处于最先进水平，并且仅依赖最少的外部依赖。\n\n\u003C!-- \u003Cp align=\"center\"> -->\n\u003C!-- \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fkeyu-tian_SparK_readme_88e19726b538.png\" width=86% class=\"center\"> -->\n\u003C!-- \u003C\u002Fp> -->\n\nhttps:\u002F\u002Fuser-images.githubusercontent.com\u002F39692511\u002F226858919-dd4ccf7e-a5ba-4a33-ab21-4785b8a7833c.mp4\n\n\u003Cbr>\n\n\u003Cdiv align=\"center\">\n\n[![SOTA](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FState%20of%20the%20Art-Self--Supervised%20Image%20Classification%20on%20ImageNet%20%28CNN%29-32B1B4?logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB3aWR0aD0iNjA2IiBoZWlnaHQ9IjYwNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgb3ZlcmZsb3c9ImhpZGRlbiI%2BPGRlZnM%2BPGNsaXBQYXRoIGlkPSJjbGlwMCI%2BPHJlY3QgeD0iLTEiIHk9Ii0xIiB3aWR0aD0iNjA2IiBoZWlnaHQ9IjYwNiIvPjwvY2xpcFBhdGg%2BPC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEgMSkiPjxyZWN0IHg9IjUyOSIgeT0iNjYiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0NzMiIGZpbGw9IiM0NEYyRjYiLz48cmVjdCB4PSIxOSIgeT0iNjYiIHdpZHRoPSI1NyIgaGVpZ2h0PSI0NzMiIGZpbGw9IiM0NEYyRjYiLz48cmVjdCB4PSIyNzQiIHk9IjE1MSIgd2lkdGg9IjU3IiBoZWlnaHQ9IjMwMiIgZmlsbD0iIzQ0RjJGNiIvPjxyZWN0IHg9IjEwNCIgeT0iMTUxIiB3aWR0aD0iNTciIGhlaWdodD0iMzAyIiBmaWxsPSIjNDRGMkY2Ii8%2BPHJlY3QgeD0iNDQ0IiB5PSIxNTEiIHdpZHRoPSI1NyIgaGVpZ2h0PSIzMDIiIGZpbGw9IiM0NEYyRjYiLz48cmVjdCB4PSIzNTkiIHk9IjE3MCIgd2lkdGg9IjU2IiBoZWlnaHQ9IjI2NCIgZmlsbD0iIzQ0RjJGNiIvPjxyZWN0IHg9IjE4OCIgeT0iMTcwIiB3aWR0aD0iNTciIGhlaWdodD0iMjY0IiBmaWxsPSIjNDRGMkY2Ii8%2BPHJlY3QgeD0iNzYiIHk9IjY2IiB3aWR0aD0iNDciIGhlaWdodD0iNTciIGZpbGw9IiM0NEYyRjYiLz48cmVjdCB4PSI0ODIiIHk9IjY2IiB3aWR0aD0iNDciIGhlaWdodD0iNTciIGZpbGw9IiM0NEYyRjYiLz48cmVjdCB4PSI7NiIgeT0iNDgyIiB3aWR0aD0iNDciIGhlaWdodD0iNTciIGZpbGw9IiM0NEYyRjYiLz48cmVjdCB4PSI0ODIiIHk9IjQ4MiIgd2lkdGg9IjQ3IiBoZWlnaHQ9IjU3IiBmaWxsPSIjNDRGMkY2Ii8%2BPC9nPjwvc3ZnPg%3D%3D)](https:\u002F\u002Fpaperswithcode.com\u002Fsota\u002Fself-supervised-image-classification-on-1?tag_filter=17&p=designing-bert-for-convolutional-networks)&nbsp;\n[![OpenReview](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FICLR'2023%20Spotlight-NRxydtWup1S-b31b1b.svg)](https:\u002F\u002Fopenreview.net\u002Fforum?id=NRxydtWup1S)&nbsp;\n[![arXiv](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FarXiv-2301.03580-b31b1b.svg)](https:\u002F\u002Farxiv.org\u002Fabs\u002F2301.03580)\n\u003C\u002Fdiv>\n\n\u003C!-- \u003Cdiv align=\"center\"> -->\n\u003C!--   [[`pdf`](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2301.03580.pdf)] -->\n\u003C!--   [[`bibtex`](https:\u002F\u002Fgithub.com\u002Fkeyu-tian\u002FSparK#citation)] -->\n\u003C!-- \u003C\u002Fdiv> -->\n\n## 🔥 最新消息\n\n- 我们的ICLR海报页面上提供了简短的英文介绍！[[`📹录制视频、海报和幻灯片`](https:\u002F\u002Ficlr.cc\u002Fvirtual\u002F2023\u002Fposter\u002F12227)]。\n- **5月11日**将在OpenMMLab & ReadPaper（哔哩哔哩）再次进行直播！[[`📹录制视频`](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV11s4y1M7qL\u002F)]\n- **4月27日（UTC+8 20:00）**将在[OpenMMLab（哔哩哔哩）](https:\u002F\u002Fspace.bilibili.com\u002F1293512903)举行另一场直播！\n- **3月22日（UTC+8 20:00）**将在极市平台（哔哩哔哩）举行另一场直播！[[`📹录制视频`](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1Da4y1T7mr\u002F)]\n- 在[TechBeat（将门创投）](https:\u002F\u002Fwww.techbeat.net\u002Ftalk-info?id=758)的分享也定于**3月16日（UTC+8 20:00）**！[[`📹录制视频`](https:\u002F\u002Fwww.techbeat.net\u002Ftalk-info?id=758)]\n- 我们很荣幸受Synced（微信公众号“机器之心机动组”）邀请，于**2月27日（UTC+0 11:00，UTC+8 19:00）**就SparK进行演讲，欢迎大家观看！[[`📹录制视频`](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1J54y1u7U3\u002F)]\n- 本工作已被ICLR 2023接收为Spotlight论文（前25%的优秀论文）。\n- 其他报道：[[`Synced`](https:\u002F\u002Fsyncedreview.com\u002F2023\u002F01\u002F19\u002Fbert-style-pretraining-on-convnets-peking-u-bytedance-oxford-us-sparse-masked-modelling-with-hierarchy-leads-the-way\u002F)]\n  [[`DeepAI`](https:\u002F\u002Fdeepai.org\u002Fpublication\u002Fdesigning-bert-for-convolutional-networks-sparse-and-hierarchical-masked-modeling)]\n  [[`TheGradient`](https:\u002F\u002Fthegradientpub.substack.com\u002Fp\u002Fupdate-42-ai-news-editors-make-mistakes)]\n  [[`字节跳动`](https:\u002F\u002Fmp.weixin.qq.com\u002Fs\u002FAk1CeeG83sgO0Wf8KgEIQQ)]\n  [[`CVers`](https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F598056871)\n  [[`量子位`](https:\u002F\u002Fwww.qbitai.com\u002F2023\u002F02\u002F42109.html)]\n  [[`智源研究院`](https:\u002F\u002Fhub.baai.ac.cn\u002Fview\u002F23360)]\n  [[`机器之心机动组`](https:\u002F\u002Fmp.weixin.qq.com\u002Fs\u002FYlek_lf5enYHRTnkEwAFpg)]\n  [[`极市平台`](https:\u002F\u002Fmp.weixin.qq.com\u002Fs\u002FGSVHUtBNw5k5wfn2pbC99Q)]\n  [[`ReadPaper笔记`](https:\u002F\u002Freadpaper.com\u002Fpaper\u002F4710371282714116097)]\n\n\n\u003C!-- ## 📺 视频演示（我们使用[这些PPT幻灯片](https:\u002F\u002Fgithub.com\u002Fkeyu-tian\u002FSparK\u002Freleases\u002Ftag\u002Ffile_sharing)制作了动画视频） -->\n\u003C!-- https:\u002F\u002Fuser-images.githubusercontent.com\u002F6366788\u002F213662770-5f814de0-cbe8-48d9-8235-e8907fd81e0e.mp4 -->\n\n## 🕹️ Colab可视化演示\n\n请查看[pretrain\u002Fviz_reconstruction.ipynb](pretrain\u002Fviz_reconstruction.ipynb)，以可视化SparK预训练模型的重建效果，例如：\n\n\u003Cp align=\"center\">\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fkeyu-tian_SparK_readme_8d9cb68dc3c6.png\" width=50%\n\u003Cp>\n\n我们还提供了[pretrain\u002Fviz_spconv.ipynb](pretrain\u002Fviz_spconv.ipynb)，展示了密集卷积层中的“掩码模式消失”问题。\n\n\n## 这里有哪些新亮点？\n\n### 🔥 预训练的CNN性能超越预训练的Swin Transformer：\n\n\u003Cp align=\"center\">\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fkeyu-tian_SparK_readme_ee5e83c37410.jpg\" width=66%>\n\u003Cp>\n\n### 🔥 经过SparK预训练后，小型模型可胜过未预训练的大型模型：\n\n\n\u003Cp align=\"center\">\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fkeyu-tian_SparK_readme_7bdc2e05c93b.jpg\" width=72%>\n\u003Cp>\n\n### 🔥 所有模型均可受益，呈现规模效应：\n\n\n\u003Cp align=\"center\">\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fkeyu-tian_SparK_readme_015fb9e53e9d.png\" width=65%>\n\u003Cp>\n\n\n### 🔥 生成式自监督预训练优于对比学习：\n\n\u003Cp align=\"center\">\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fkeyu-tian_SparK_readme_20ee61d1051e.png\" width=65%>\n\u003Cp>\n\n#### 更多分析、讨论和评估，请参阅我们的[论文](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2301.03580.pdf)。\n\n## 待办事项列表\n\n\u003Cdetails>\n\n\u003Csummary>目录\u003C\u002Fsummary>\n\n- [x] 预训练代码\n- [x] 自定义 CNN 模型的预训练教程（[自定义 CNN 模型预训练教程](https:\u002F\u002Fgithub.com\u002Fkeyu-tian\u002FSparK\u002Ftree\u002Fmain\u002Fpretrain\u002F#tutorial-for-pretraining-your-own-cnn-model)）\n- [x] 自定义数据集的预训练教程（[自定义数据集预训练教程](https:\u002F\u002Fgithub.com\u002Fkeyu-tian\u002FSparK\u002Ftree\u002Fmain\u002Fpretrain\u002F#tutorial-for-pretraining-your-own-dataset)）\n- [x] 预训练 Colab 可视化实验环境（[重建](\u002Fpretrain\u002Fviz_reconstruction.ipynb)，[稀疏卷积](pretrain\u002Fviz_spconv.ipynb)）\n- [x] 微调代码\n- [ ] Hugging Face 上的权重与可视化实验环境\n- [ ] timm 中的权重\n\n\u003C\u002Fdetails>\n\n\n## 预训练权重（自监督；无解码器；可直接微调）\n\n**注意：网络定义方面，我们直接使用 `timm.models.ResNet` 和 [官方 ConvNeXt](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002FConvNeXt\u002Fblob\u002F048efcea897d999aed302f2639b6270aedf8d4c8\u002Fmodels\u002Fconvnext.py)。**\n\n`reso.`：图像分辨率；`acc@1`：ImageNet-1K 微调准确率（top-1）\n\n\n|     架构      | 分辨率 | acc@1 | 参数量 | FLOPs  | 权重（自监督，不含 SparK 的解码器）                                                                                     |\n|:--------------:|:-----:|:-----:|:-------:|:------:|:---------------------------------------------------------------------------------------------------------------------------------------|\n|    ResNet50    |  224  | 80.6  |   26M   |  4.1G  | [resnet50_1kpretrained_timm_style.pth](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1H8605HbxGvrsu4x4rIoNr-Wkd7JkxFPQ\u002Fview?usp=share_link)          |\n|   ResNet101    |  224  | 82.2  |   45M   |  7.9G  | [resnet101_1kpretrained_timm_style.pth](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1ZwTztjU-_rfvOVfLoce9SMw2Fx0DQfoO\u002Fview?usp=share_link)         |\n|   ResNet152    |  224  | 82.7  |   60M   | 11.6G  | [resnet152_1kpretrained_timm_style.pth](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1FOVuECnzQAI-OzE-hnrqW7tVpg8kTziM\u002Fview?usp=share_link)         |\n|   ResNet200    |  224  | 83.1  |   65M   | 15.1G  | [resnet200_1kpretrained_timm_style.pth](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1_Q4e30qqhjchrdyW3fT6P98Ga-WnQ57s\u002Fview?usp=share_link)         |\n|   ConvNeXt-S   |  224  | 84.1  |   50M   |  8.7G  | [convnextS_1kpretrained_official_style.pth](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1Ah6lgDY5YDNXoXHQHklKKMbEd08RYivN\u002Fview?usp=share_link)     |\n|   ConvNeXt-B   |  224  | 84.8  |   89M   | 15.4G  | [convnextB_1kpretrained_official_style.pth](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1ZjWbqI1qoBcqeQijI5xX9E-YNkxpJcYV\u002Fview?usp=share_link)     |\n|   ConvNeXt-L   |  224  | 85.4  |  198M   | 34.4G  | [convnextL_1kpretrained_official_style.pth](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1qfYzGUpYBzuA88_kXkVl4KNUwfutMVfw\u002Fview?usp=share_link)     |\n|   ConvNeXt-L   |  384  | 86.0  |  198M   | 101.0G | [convnextL_384_1kpretrained_official_style.pth](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1YgWNXJjI89l35P4ksAmBNWZ2JZCpj9n4\u002Fview?usp=share_link) |\n\n\u003Cdetails>\n\n\u003Csummary> \u003Cb> 预训练权重（含 SparK 的 UNet 风格解码器；可用于重建图像） \u003C\u002Fb> \u003C\u002Fsummary>\n\n\u003Cbr>\n\n|   架构    | 分辨率 | acc@1 | 参数量 | FLOPs  | 权重（自监督，含 SparK 的解码器）                                                                                           |\n|:----------:|:-----:|:-----:|:-------:|:------:|:------------------------------------------------------------------------------------------------------------------------------------------|\n|  ResNet50  |  224  | 80.6  |   26M   |  4.1G  | [res50_withdecoder_1kpretrained_spark_style.pth](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1STt3w3e5q9eCPZa8VzcJj1zG6p3jLeSF\u002Fview?usp=share_link)   |\n| ResNet101  |  224  | 82.2  |   45M   |  7.9G  | [res101_withdecoder_1kpretrained_spark_style.pth](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1GjN48LKtlop2YQre6---7ViCWO-3C0yr\u002Fview?usp=share_link)  |\n| ResNet152  |  224  | 82.7  |   60M   | 11.6G  | [res152_withdecoder_1kpretrained_spark_style.pth](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1U3Cd94j4ZHfYR2dUjWmsEWfjP6Opx4oo\u002Fview?usp=share_link)  |\n| ResNet200  |  224  | 83.1  |   65M   | 15.1G  | [res200_withdecoder_1kpretrained_spark_style.pth](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F13AFSqvIr0v-2hmb4DzVza45t_lhf2CnD\u002Fview?usp=share_link)  |\n| ConvNeXt-S |  224  | 84.1  |   50M   |  8.7G  | [cnxS224_withdecoder_1kpretrained_spark_style.pth](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1bKvrE4sNq1PfzhWlQJXEPrl2kHqHRZM-\u002Fview?usp=share_link) |\n| ConvNeXt-L |  384  | 86.0  |  198M   | 101.0G | [cnxL384_withdecoder_1kpretrained_spark_style.pth](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1ZI9Jgtb3fKWE_vDFEly29w-1FWZSNwa0\u002Fview?usp=share_link) |\n\n\u003C\u002Fdetails>\n\n\u003Cbr>\n\n## 安装与运行\n\n我们强烈建议您使用 `torch==1.10.0`、`torchvision==0.11.1` 和 `timm==0.5.4` 进行复现。\n请参阅 [INSTALL.md](INSTALL.md) 以安装所有 pip 依赖项。\n\n- **三行代码加载预训练模型权重**\n```python3\n# 首先下载我们的权重 `resnet50_1kpretrained_timm_style.pth`\nimport torch, timm\nres50, state = timm.create_model('resnet50'), torch.load('resnet50_1kpretrained_timm_style.pth', 'cpu')\nres50.load_state_dict(state.get('module', state), strict=False)     # 以防模型权重实际上保存在 state['module'] 中\n```\n\n- **预训练**\n  - 任何 ResNet 或 ConvNeXt 在 ImageNet-1K 上：&nbsp;请参阅 [pretrain\u002F](pretrain)\n  - **您自己的 CNN 模型**：&nbsp;请参阅 [pretrain\u002F](pretrain)，尤其是 [pretrain\u002Fmodels\u002Fcustom.py](pretrain\u002Fmodels\u002Fcustom.py)\n\n\n- **微调**\n  - 任何 ResNet 或 ConvNeXt 在 ImageNet-1K 上：&nbsp;请查看 [downstream_imagenet\u002F](downstream_imagenet) 获取后续说明。\n  - ResNet 在 COCO 上：&nbsp;请参阅 [downstream_d2\u002F](downstream_d2)\n  - ConvNeXt 在 COCO 上：&nbsp;请参阅 [downstream_mmdet\u002F](downstream_mmdet)\n\n\n## 致谢\n\n我们参考了以下有用的代码库：\n\n- [BEiT](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Funilm\u002Ftree\u002Fmaster\u002Fbeit)、[MAE](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Fmae)、[ConvNeXt](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002FConvNeXt)\n- [timm](https:\u002F\u002Fgithub.com\u002Frwightman\u002Fpytorch-image-models)、[MoCoV2](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Fmoco)、[Detectron2](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Fdetectron2)、[MMDetection](https:\u002F\u002Fgithub.com\u002Fopen-mmlab\u002Fmmdetection)\n\n\n\n## 许可证\n本项目采用 MIT 许可证。更多详情请参阅 [LICENSE](LICENSE)。\n\n\n## 引用\n如果您觉得本项目有用，欢迎您给我们点个赞 ⭐，或在您的工作中引用我们 📖：\n```\n@Article{tian2023designing,\n  author  = {Keyu Tian and Yi Jiang and Qishuai Diao and Chen Lin and Liwei Wang and Zehuan Yuan},\n  title   = {为卷积网络设计 BERT：稀疏且分层的掩码建模},\n  journal = {arXiv:2301.03580},\n  year    = {2023},\n}\n```","# SparK 快速上手指南\n\nSparK 是首个成功将 BERT\u002FMAE 风格的自监督预训练应用于**任意卷积神经网络（CNN）**（如 ResNet、ConvNeXt）的工具。通过稀疏且分层的掩码建模，它能让 CNN 在 ImageNet 等任务上获得超越 Swin-Transformer 的性能表现。\n\n## 环境准备\n\n为了复现最佳效果，官方强烈建议使用以下特定版本的依赖库：\n\n*   **操作系统**: Linux (推荐)\n*   **Python**: 3.8+\n*   **核心依赖版本**:\n    *   `torch == 1.10.0`\n    *   `torchvision == 0.11.1`\n    *   `timm == 0.5.4`\n\n> **国内加速建议**：在安装 Python 包时，推荐使用清华或阿里镜像源以提升下载速度。\n\n## 安装步骤\n\n### 1. 创建虚拟环境（可选但推荐）\n```bash\npython -m venv spark_env\nsource spark_env\u002Fbin\u002Factivate\n```\n\n### 2. 安装 PyTorch 及相关依赖\n请根据您的 CUDA 版本选择合适的安装命令。以下示例使用清华镜像源安装指定版本的 PyTorch：\n\n```bash\npip install torch==1.10.0 torchvision==0.11.1 -f https:\u002F\u002Fdownload.pytorch.org\u002Fwhl\u002Ftorch_stable.html\n# 或者使用国内镜像源（示例为清华源，请根据实际 cuda 版本调整）\n# pip install torch==1.10.0+cu111 torchvision==0.11.1+cu111 -f https:\u002F\u002Fmirror.tuna.tsinghua.edu.cn\u002Fpypi\u002Fweb\u002Fsimple\n```\n\n### 3. 安装其他依赖\n克隆项目代码并安装其余依赖（主要是 `timm`）：\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fkeyu-tian\u002FSparK.git\ncd SparK\npip install timm==0.5.4 -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\npip install -r requirements.txt\n```\n\n## 基本使用\n\n### 加载预训练模型\nSparK 提供了多种架构（ResNet50\u002F101\u002F152\u002F200, ConvNeXt-S\u002FB\u002FL）的自监督预训练权重。您可以直接在 3 行代码内加载这些权重进行微调或推理。\n\n首先，从 [Google Drive](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F...) 或项目 README 提供的链接下载权重文件（例如 `resnet50_1kpretrained_timm_style.pth`）。\n\n然后使用以下代码加载：\n\n```python3\n# 下载权重文件 resnet50_1kpretrained_timm_style.pth 到本地\nimport torch\nimport timm\n\n# 创建模型并加载权重\nres50 = timm.create_model('resnet50')\nstate = torch.load('resnet50_1kpretrained_timm_style.pth')\nres50.load_state_dict(state['model']) # 注意：根据实际权重文件结构可能需要调整 key，通常直接 load_state_dict(state) 即可\n\n# 设置为评估模式\nres50.eval()\n```\n\n### 可视化重建效果\nSparK 支持可视化模型对掩码图像的重建能力，以验证预训练效果。您可以直接运行项目提供的 Colab Notebook 或本地脚本：\n\n```bash\n# 查看重建可视化\njupyter notebook pretrain\u002Fviz_reconstruction.ipynb\n\n# 查看稀疏卷积的掩码模式消失问题可视化\njupyter notebook pretrain\u002Fviz_spconv.ipynb\n```\n\n### 自定义模型预训练\n若需在自己的数据集或自定义 CNN 架构上进行 SparK 预训练，请参考项目目录下的详细教程：\n*   **自定义模型**: `pretrain\u002F#tutorial-for-pretraining-your-own-cnn-model`\n*   **自定义数据集**: `pretrain\u002F#tutorial-for-pretraining-your-own-dataset`","某医疗影像初创团队正试图利用有限的标注数据，训练一个基于 ResNet-50 的肺部结节检测模型，以辅助医生进行早期筛查。\n\n### 没有 SparK 时\n- **预训练范式受限**：团队只能依赖传统的 ImageNet 有监督预训练权重，无法利用海量未标注的医院内部 CT 数据进行自监督学习，导致模型难以捕捉特定领域的细微特征。\n- **架构迁移困难**：虽然 BERT 或 MAE 等自监督方法在 Vision Transformer (ViT) 上效果显著，但直接将其应用于卷积网络（CNN）会导致训练崩溃或性能大幅下降，迫使团队考虑重构整个骨干网络为 ViT，增加了工程风险。\n- **小样本性能瓶颈**：由于标注数据稀缺且通用预训练权重与医疗场景分布差异大，模型在少量数据下极易过拟合，最终测试准确率长期停滞在 78% 难以突破。\n\n### 使用 SparK 后\n- **解锁 CNN 自监督潜力**：SparK 成功将 BERT\u002FMAE 式的掩码建模引入卷积网络，团队直接利用数万张未标注的本地 CT 影像对 ResNet-50 进行自监督预训练，无需改变原有架构。\n- **层次化特征学习**：借助 SparK 特有的稀疏与分层掩码策略，模型学会了从局部纹理到全局结构的层次化表示，显著提升了对微小结节的特征提取能力。\n- **下游任务性能飞跃**：在相同的少量标注数据上进行微调后，模型的检测准确率从 78% 提升至 86%，且收敛速度更快，成功满足了临床辅助诊断的精度要求。\n\nSparK 的核心价值在于打破了自监督学习仅适用于 Transformer 的壁垒，让成熟的卷积网络也能通过海量无标签数据实现性能的质的飞跃。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fkeyu-tian_SparK_8d9cb68d.png","keyu-tian","Keyu Tian","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fkeyu-tian_7a8a72a7.jpg","Incoming Ph.D. student. Self-supervised learning & generative models & \r\nreinforcement learning.","Peking University","Oxford, UK","tiankeyu.00@gmail.com","keyutian","linkedin.com\u002Fin\u002Fkeyu-tian\u002F?locale=en_US","https:\u002F\u002Fgithub.com\u002Fkeyu-tian",[84,88],{"name":85,"color":86,"percentage":87},"Python","#3572A5",55.5,{"name":89,"color":90,"percentage":91},"Jupyter Notebook","#DA5B0B",44.5,1369,85,"2026-04-19T01:57:11","MIT","Linux","需要 NVIDIA GPU（用于训练和复现），具体显存大小取决于模型架构（ResNet50 至 ConvNeXt-L）和输入分辨率，未明确最低要求","未说明",{"notes":100,"python":101,"dependencies":102},"官方强烈建议使用指定版本（torch 1.10.0, torchvision 0.11.1, timm 0.5.4）以确保复现效果。网络定义直接复用 timm 库中的 ResNet 和官方 ConvNeXt 实现。预训练权重可通过 Google Drive 下载，支持直接微调或带解码器进行图像重建。","未说明 (建议 3.8+)",[103,104,105],"torch==1.10.0","torchvision==0.11.1","timm==0.5.4",[36,14,15],[108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127],"bert","convnet","convolutional-neural-networks","masked-image-modeling","pre-trained-model","self-supervised-learning","sparse-convolution","ssl","cnn","iclr","iclr2023","deep-learning","object-detection","pytorch","instance-segmentation","mask-rcnn","mae","masked-autoencoder","pretrain","pretraining",null,"2026-03-27T02:49:30.150509","2026-04-20T19:42:11.240923",[],[133],{"id":134,"version":135,"summary_zh":136,"released_at":137},360180,"file_sharing","## 在这里，我们分享了几张幻灯片，展示了我们是如何为这段视频演示制作动画的：\n\n\nhttps:\u002F\u002Fuser-images.githubusercontent.com\u002F6366788\u002F213662770-5f814de0-cbe8-48d9-8235-e8907fd81e0e.mp4\n\n\n\u003Cbr>\n\n\n基本上，我们在幻灯片之间使用了大量的“变形”过渡效果。我们先制作一张幻灯片，然后将其复制一份，在第二张幻灯片上移动某些对象到不同的位置，或者添加一些新的对象。通过在这两张幻灯片之间应用“变形”过渡，PowerPoint 就能自动为这些发生变化或新增的对象生成平滑的动画效果。\n\n随附了 PowerPoint 文件。","2023-03-21T09:34:42"]