[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-yu4u--convnet-drawer":3,"tool-yu4u--convnet-drawer":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":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":76,"owner_location":77,"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":89,"env_os":90,"env_gpu":91,"env_ram":91,"env_deps":92,"category_tags":98,"github_topics":99,"view_count":32,"oss_zip_url":77,"oss_zip_packed_at":77,"status":17,"created_at":103,"updated_at":104,"faqs":105,"releases":134},5862,"yu4u\u002Fconvnet-drawer","convnet-drawer","Python script for illustrating Convolutional Neural Networks (CNN) using Keras-like model definitions","convnet-drawer 是一款专为卷积神经网络（CNN）设计的可视化 Python 脚本，能够帮助用户将抽象的模型结构转化为直观的图表。它主要解决了深度学习模型在论文写作、技术汇报或教学演示中难以清晰展示内部层级与数据流向的痛点。\n\n该工具特别适合 AI 研究人员、深度学习开发者以及需要制作技术文档的教育工作者使用。其核心亮点在于支持两种灵活的使用方式：既可以直接通过类似 Keras 的简洁代码手动定义网络层级（如卷积、池化、全连接层等），也能自动转换现有的 Keras  Sequential 模型进行渲染。在输出方面，convnet-drawer 不仅支持生成高质量的 SVG 和 PDF 图片，还能直接导出为 PowerPoint (pptx) 文件，极大方便了演示文稿的制作。此外，它提供了丰富的可视化参数配置（如通道缩放比例、视角角度等），让用户能根据网络深度和宽度自定义图表效果，确保即使是复杂的深层网络也能以美观、易读的 3D 立体形式呈现。","# ConvNet Drawer\n\nPython script for illustrating Convolutional Neural Networks (CNN).\nInspired by the draw_convnet project [1].\n\nModels can be visualized via Keras-like ([Sequential](https:\u002F\u002Fkeras.io\u002Fmodels\u002Fsequential\u002F)) model definitions.\nThe result can be saved as SVG file or pptx file!\n\n## Requirements\npython-pptx (if you want to save models as pptx)\n\n```sh\npip install python-pptx\n```\n\nKeras (if you want to convert Keras sequential model)\n\n```sh\npip install keras\n```\n\nmatplotlib (if you want to save models via matplotlib)\n\n```bash\npip install matplotlib\n```\n\n## Usage\nWrite a script to define and save a model. An example of visualizing AlexNet [2] is as follows.\n\n### Write and save convnet_drawer.Model\n\n```python\nfrom convnet_drawer import Model, Conv2D, MaxPooling2D, Flatten, Dense\nfrom pptx_util import save_model_to_pptx\nfrom matplotlib_util import save_model_to_file\n\nmodel = Model(input_shape=(227, 227, 3))\nmodel.add(Conv2D(96, (11, 11), (4, 4)))\nmodel.add(MaxPooling2D((3, 3), strides=(2, 2)))\nmodel.add(Conv2D(256, (5, 5), padding=\"same\"))\nmodel.add(MaxPooling2D((3, 3), strides=(2, 2)))\nmodel.add(Conv2D(384, (3, 3), padding=\"same\"))\nmodel.add(Conv2D(384, (3, 3), padding=\"same\"))\nmodel.add(Conv2D(256, (3, 3), padding=\"same\"))\nmodel.add(MaxPooling2D((3, 3), strides=(2, 2)))\nmodel.add(Flatten())\nmodel.add(Dense(4096))\nmodel.add(Dense(4096))\nmodel.add(Dense(1000))\n\n# save as svg file\nmodel.save_fig(\"example.svg\")\n\n# save as pptx file\nsave_model_to_pptx(model, \"example.pptx\")\n\n# save via matplotlib\nsave_model_to_file(model, \"example.pdf\")\n```\n\nResult:\n\n\u003Cimg src=\"examples\u002FAlexNet.svg\">\n\nThe other examples can be found [here](examples).\n\n### Convert Keras sequential model\nKeras sequential model can be converted to `convnet_drawer.Model` (thanks to @wakamezake).\nOnly Conv2D, MaxPooling2D, GlobalAveragePooling2D, Flatten, Dense layers are supported for this conversion.\n\n```python\nfrom keras_util import convert_drawer_model\nfrom keras_models import AlexNet\nfrom pptx_util import save_model_to_pptx\nfrom matplotlib_util import save_model_to_file\n\n# get Keras sequential model\nkeras_sequential_model = AlexNet.get_model()\nmodel = convert_drawer_model(keras_sequential_model)\n\n# save as svg file\nmodel.save_fig(\"example.svg\")\n\n# save as pptx file\nsave_model_to_pptx(model, \"example.pptx\")\n\n# save via matplotlib\nsave_model_to_file(model, \"example.pdf\")\n```\n\n### Supported Layers\n\n- *Conv2D*\n  - ```Conv2D(filters=None, kernel_size=None, strides=(1, 1), padding=\"valid\")```\n  - e.g. `Conv2D(96, (11, 11), (4, 4)))`\n- *Deconv2D*\n  - ```Deconv2D(filters=None, kernel_size=None, strides=(1, 1), padding=\"valid\")```\n  - e.g. `Deconv2D(256, (3, 3), (2, 2)))`\n- *MaxPooling2D*, *AveragePooling2D*\n  - ```MaxPooling2D(pool_size=(2, 2), strides=None, padding=\"valid\")```\n  - e.g. `MaxPooling2D((3, 3), strides=(2, 2))`\n  - If `strides = None`, stride is set to be `pool_size`.\n- *GlobalAveragePooling2D*\n  - ```GlobalAveragePooling2D()```\n- *Flatten*\n  - ```Flatten()```\n- *Dense*\n  - ```Dense(units)```\n  - e.g. `Dense(4096)`\n\n### Visualization Parameters\nVisualization Parameters can be found in [config.py](config.py).\nPlease adjust these parameters before model definition (see [LeNet.py](examples\u002FLeNet.py)).\nThe most important parameter is `channel_scale = 3 \u002F 5`.\nThis parameter rescale actual channel size `c` to `c_` for visualization as:\n\n```c_ = math.pow(c, channel_scale)```\n\nIf the maximum channel size is small (e.g. 512), please increase `channel_scale`.\n\nCheck how the other parameters works:\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fyu4u_convnet-drawer_readme_966631748d3a.png\">\n\n#### Default Values\n\n```python\ntheta = - math.pi \u002F 6\nratio = 0.7\nbounding_box_margin = 10\ninter_layer_margin = 50\ntext_margin = 10\nchannel_scale = 3 \u002F 5\ntext_size = 14\none_dim_width = 4\nline_color_feature_map = (0, 0, 0)\nline_color_layer = (0, 0, 255)\ntext_color_feature_map = (0, 0, 0)\ntext_color_layer = (0, 0, 0)\n```\n\n\n## TODOs\n- [x] Implement padding option for Conv2D and Pooling layers.\n- [x] Add some effects to Dense layer (and Flatten \u002F GlobalAveragePooling2D).\n- [ ] Automatically calibrate the scale of feature maps for better visibility.\n- [x] Move hard-coded parameters to a config file or options.\n- [x] Refactor Layer classes.\n- [x] ~~Draw with matplotlib? for other formats.~~ The model is now directly saved as a pptx file.\n\n## Results\nLeNet\n\n\u003Cimg src=\"examples\u002FLeNet.svg\">\n\nAlexNet\n\n\u003Cimg src=\"examples\u002FAlexNet.svg\">\n\nZFNet\n\n\u003Cimg src=\"examples\u002FZFNet.svg\">\n\nVGG16\n\n\u003Cimg src=\"examples\u002FVGG16.svg\">\n\nAutoEncoder\n\n\u003Cimg src=\"examples\u002FAutoEncoder.svg\">\n\nAlexNet saved by matplotlib with plt.xkcd()\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fyu4u_convnet-drawer_readme_af3be3558bb2.png\">\n\n## References\n[1] https:\u002F\u002Fgithub.com\u002Fgwding\u002Fdraw_convnet\n\n[2] A. Krizhevsky, I. Sutskever, and G. E. Hinton, \"ImageNet Classification with Deep Convolutional Neural Networks,\" in Proc. of NIPS, 2012.","# 卷积神经网络绘制工具\n\n用于展示卷积神经网络（CNN）的 Python 脚本。灵感来源于 draw_convnet 项目 [1]。\n\n可以通过类似 Keras 的模型定义方式（如 [Sequential](https:\u002F\u002Fkeras.io\u002Fmodels\u002Fsequential\u002F)）来可视化模型。结果可以保存为 SVG 文件或 pptx 文件！\n\n## 需求\npython-pptx（如果希望将模型保存为 pptx 格式）\n\n```sh\npip install python-pptx\n```\n\nKeras（如果需要转换 Keras 顺序模型）\n\n```sh\npip install keras\n```\n\nmatplotlib（如果希望通过 matplotlib 保存模型）\n\n```bash\npip install matplotlib\n```\n\n## 使用方法\n编写脚本来定义并保存模型。以下是一个可视化 AlexNet [2] 的示例。\n\n### 编写并保存 convnet_drawer.Model\n\n```python\nfrom convnet_drawer import Model, Conv2D, MaxPooling2D, Flatten, Dense\nfrom pptx_util import save_model_to_pptx\nfrom matplotlib_util import save_model_to_file\n\nmodel = Model(input_shape=(227, 227, 3))\nmodel.add(Conv2D(96, (11, 11), (4, 4)))\nmodel.add(MaxPooling2D((3, 3), strides=(2, 2)))\nmodel.add(Conv2D(256, (5, 5), padding=\"same\"))\nmodel.add(MaxPooling2D((3, 3), strides=(2, 2)))\nmodel.add(Conv2D(384, (3, 3), padding=\"same\"))\nmodel.add(Conv2D(384, (3, 3), padding=\"same\"))\nmodel.add(Conv2D(256, (3, 3), padding=\"same\"))\nmodel.add(MaxPooling2D((3, 3), strides=(2, 2)))\nmodel.add(Flatten())\nmodel.add(Dense(4096))\nmodel.add(Dense(4096))\nmodel.add(Dense(1000))\n\n# 保存为 svg 文件\nmodel.save_fig(\"example.svg\")\n\n# 保存为 pptx 文件\nsave_model_to_pptx(model, \"example.pptx\")\n\n# 通过 matplotlib 保存\nsave_model_to_file(model, \"example.pdf\")\n```\n\n结果：\n\n\u003Cimg src=\"examples\u002FAlexNet.svg\">\n\n其他示例可以在此处找到 [here](examples)。\n\n### 转换 Keras 顺序模型\nKeras 顺序模型可以转换为 `convnet_drawer.Model`（感谢 @wakamezake）。此转换仅支持 Conv2D、MaxPooling2D、GlobalAveragePooling2D、Flatten 和 Dense 层。\n\n```python\nfrom keras_util import convert_drawer_model\nfrom keras_models import AlexNet\nfrom pptx_util import save_model_to_pptx\nfrom matplotlib_util import save_model_to_file\n\n# 获取 Keras 顺序模型\nkeras_sequential_model = AlexNet.get_model()\nmodel = convert_drawer_model(keras_sequential_model)\n\n# 保存为 svg 文件\nmodel.save_fig(\"example.svg\")\n\n# 保存为 pptx 文件\nsave_model_to_pptx(model, \"example.pptx\")\n\n# 通过 matplotlib 保存\nsave_model_to_file(model, \"example.pdf\")\n```\n\n### 支持的层\n\n- *Conv2D*\n  - ```Conv2D(filters=None, kernel_size=None, strides=(1, 1), padding=\"valid\")```\n  - 例如：`Conv2D(96, (11, 11), (4, 4)))`\n- *Deconv2D*\n  - ```Deconv2D(filters=None, kernel_size=None, strides=(1, 1), padding=\"valid\")```\n  - 例如：`Deconv2D(256, (3, 3), (2, 2)))`\n- *MaxPooling2D*、*AveragePooling2D*\n  - ```MaxPooling2D(pool_size=(2, 2), strides=None, padding=\"valid\")```\n  - 例如：`MaxPooling2D((3, 3), strides=(2, 2))`\n  - 如果 `strides = None`，则步幅设置为 `pool_size`。\n- *GlobalAveragePooling2D*\n  - ```GlobalAveragePooling2D()```\n- *Flatten*\n  - ```Flatten()```\n- *Dense*\n  - ```Dense(units)```\n  - 例如：`Dense(4096)`\n\n### 可视化参数\n可视化参数可以在 [config.py](config.py) 中找到。请在定义模型之前调整这些参数（参见 [LeNet.py](examples\u002FLeNet.py)）。最重要的参数是 `channel_scale = 3 \u002F 5`。该参数会将实际通道大小 `c` 重新缩放为 `c_`，用于可视化，公式如下：\n\n```c_ = math.pow(c, channel_scale)```\n\n如果最大通道数较小（例如 512），请增大 `channel_scale`。\n\n查看其他参数的作用：\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fyu4u_convnet-drawer_readme_966631748d3a.png\">\n\n#### 默认值\n\n```python\ntheta = - math.pi \u002F 6\nratio = 0.7\nbounding_box_margin = 10\ninter_layer_margin = 50\ntext_margin = 10\nchannel_scale = 3 \u002F 5\ntext_size = 14\none_dim_width = 4\nline_color_feature_map = (0, 0, 0)\nline_color_layer = (0, 0, 255)\ntext_color_feature_map = (0, 0, 0)\ntext_color_layer = (0, 0, 0)\n```\n\n\n## 待办事项\n- [x] 实现 Conv2D 和 Pooling 层的填充选项。\n- [x] 为 Dense 层（以及 Flatten \u002F GlobalAveragePooling2D）添加一些效果。\n- [ ] 自动校准特征图的尺度，以获得更好的可视性。\n- [x] 将硬编码的参数移至配置文件或选项中。\n- [x] 重构 Layer 类。\n- [x] ~~使用 matplotlib 绘制？以便支持其他格式。~~ 现在可以直接将模型保存为 pptx 文件。\n\n## 结果\nLeNet\n\n\u003Cimg src=\"examples\u002FLeNet.svg\">\n\nAlexNet\n\n\u003Cimg src=\"examples\u002FAlexNet.svg\">\n\nZFNet\n\n\u003Cimg src=\"examples\u002FZFNet.svg\">\n\nVGG16\n\n\u003Cimg src=\"examples\u002FVGG16.svg\">\n\nAutoEncoder\n\n\u003Cimg src=\"examples\u002FAutoEncoder.svg\">\n\n使用 plt.xkcd() 保存的 AlexNet 图像\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fyu4u_convnet-drawer_readme_af3be3558bb2.png\">\n\n## 参考文献\n[1] https:\u002F\u002Fgithub.com\u002Fgwding\u002Fdraw_convnet\n\n[2] A. Krizhevsky, I. Sutskever, and G. E. Hinton, \"ImageNet Classification with Deep Convolutional Neural Networks,\" in Proc. of NIPS, 2012.","# ConvNet Drawer 快速上手指南\n\nConvNet Drawer 是一个用于绘制卷积神经网络（CNN）架构的 Python 工具。它支持通过类似 Keras 的代码定义模型，并将网络结构可视化为 SVG、PDF 或 PowerPoint (pptx) 文件，非常适合用于论文插图或技术演示。\n\n## 环境准备\n\n在开始之前，请确保您的系统已安装 **Python 3**。本工具依赖以下库：\n\n*   **核心依赖**：无特殊系统要求，标准 Python 环境即可。\n*   **可选依赖**：\n    *   `python-pptx`：如需导出为 PPTX 格式。\n    *   `keras`：如需直接从 Keras 模型转换。\n    *   `matplotlib`：如需导出为 PDF\u002FPNG 等图片格式。\n\n## 安装步骤\n\n建议使用国内镜像源加速安装。您可以使用以下命令一次性安装所有常用依赖：\n\n```bash\npip install convnet-drawer python-pptx keras matplotlib -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n> **注意**：如果 `convnet-drawer` 尚未发布到 PyPI 或您需要最新版本，请先克隆仓库并本地安装：\n> ```bash\n> git clone https:\u002F\u002Fgithub.com\u002Fyour-repo\u002Fconvnet-drawer.git\n> cd convnet-drawer\n> pip install . -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n> ```\n> *(注：请根据实际源码获取方式调整上述 git 地址，若直接作为脚本使用，只需确保依赖包安装成功即可)*\n\n## 基本使用\n\n### 1. 定义并绘制模型\n\n创建一个 Python 脚本（例如 `draw_model.py`），按照以下方式定义网络层并保存图像。以下示例复现了经典的 **AlexNet** 结构：\n\n```python\nfrom convnet_drawer import Model, Conv2D, MaxPooling2D, Flatten, Dense\nfrom pptx_util import save_model_to_pptx\nfrom matplotlib_util import save_model_to_file\n\n# 初始化模型，设置输入形状 (高，宽，通道数)\nmodel = Model(input_shape=(227, 227, 3))\n\n# 添加网络层\nmodel.add(Conv2D(96, (11, 11), (4, 4)))\nmodel.add(MaxPooling2D((3, 3), strides=(2, 2)))\nmodel.add(Conv2D(256, (5, 5), padding=\"same\"))\nmodel.add(MaxPooling2D((3, 3), strides=(2, 2)))\nmodel.add(Conv2D(384, (3, 3), padding=\"same\"))\nmodel.add(Conv2D(384, (3, 3), padding=\"same\"))\nmodel.add(Conv2D(256, (3, 3), padding=\"same\"))\nmodel.add(MaxPooling2D((3, 3), strides=(2, 2)))\nmodel.add(Flatten())\nmodel.add(Dense(4096))\nmodel.add(Dense(4096))\nmodel.add(Dense(1000))\n\n# 保存为 SVG 矢量图\nmodel.save_fig(\"example.svg\")\n\n# 保存为 PPTX 文件 (可直接插入幻灯片)\nsave_model_to_pptx(model, \"example.pptx\")\n\n# 通过 Matplotlib 保存为 PDF 或 PNG\nsave_model_to_file(model, \"example.pdf\")\n```\n\n运行脚本后，当前目录下将生成 `example.svg`、`example.pptx` 和 `example.pdf` 文件。\n\n### 2. 从 Keras 模型转换 (可选)\n\n如果您已经有一个 Keras `Sequential` 模型，可以直接将其转换为绘图对象：\n\n```python\nfrom keras_util import convert_drawer_model\n# 假设您有一个获取 Keras 模型的函数\n# from keras_models import AlexNet \n# keras_sequential_model = AlexNet.get_model() \n\n# 转换为 convnet_drawer 模型\n# model = convert_drawer_model(keras_sequential_model)\n\n# 后续保存步骤同上\n# model.save_fig(\"keras_example.svg\")\n```\n*支持转换的层包括：Conv2D, MaxPooling2D, GlobalAveragePooling2D, Flatten, Dense。*\n\n### 3. 调整可视化参数 (进阶)\n\n默认生成的图中，特征通道的宽度可能不符合您的审美。您可以在定义模型前修改 `config.py` 中的参数，或在代码中动态调整。最重要的参数是 `channel_scale`：\n\n```python\n# 示例：在代码中调整全局配置 (需查看具体版本是否支持直接导入 config)\n# 默认值为 3\u002F5，如果最大通道数较小 (如 512)，可适当增大此值以加宽通道显示\n# c_ = math.pow(c, channel_scale)\n```\n\n支持的层类型及参数风格与 Keras 高度相似，详见工具文档中的 \"Supported Layers\" 部分。","某高校深度学习实验室的研究员正在撰写一篇关于改进 AlexNet 架构的学术论文，需要向审稿人和学生清晰展示复杂的卷积神经网络层级结构。\n\n### 没有 convnet-drawer 时\n- **绘图效率极低**：研究员需手动使用 Visio 或 PPT 绘制层层堆叠的方块，调整透视角度和比例耗时数小时，且难以精确对应代码中的参数。\n- **修改成本高昂**：一旦模型结构调整（如增加卷积层或改变步长），整张图几乎需要重画，无法实现“代码即文档”的同步更新。\n- **视觉表达不专业**：手绘风格难以统一，特征图（Feature Map）的通道数量变化无法通过直观的厚度或面积差异呈现，导致读者难以理解数据流向。\n- **格式适配困难**：论文通常需要矢量图（SVG\u002FPDF），而手动绘制的图片在放大后易失真，且难以直接转换为学术汇报常用的 PPT 格式。\n\n### 使用 convnet-drawer 后\n- **自动化生成图表**：研究员仅需编写类似 Keras 的 Python 脚本定义模型，convnet-drawer 即可瞬间生成标准的 3D 网络结构图，将绘图时间从数小时缩短至几分钟。\n- **动态同步更新**：修改代码中的层参数（如 `Conv2D` 的滤波器数量）后，重新运行脚本即可自动刷新图像，确保图示与实验模型严格一致。\n- **智能视觉映射**：工具自动根据通道数量（channel_scale）调整特征图的视觉大小，清晰展现数据维度的压缩与扩张过程，显著提升图表的可读性与专业度。\n- **多格式一键导出**：支持直接输出高质量的 SVG、PDF 用于论文排版，或生成可编辑的 PPTX 文件用于组会汇报，完美适配不同场景需求。\n\nconvnet-drawer 通过将模型定义代码直接转化为专业可视化图表，彻底解决了深度学习研究中“模型迭代快”与“文档更新慢”之间的矛盾。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fyu4u_convnet-drawer_96663174.png","yu4u","Yusuke Uchida","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fyu4u_e4169046.png","Interested in deep learning for image recognition, image retrieval, approximate nearest neighbor search, and so on.\r\n","GO inc.",null,"yu4u.github.io","https:\u002F\u002Fgithub.com\u002Fyu4u",[81],{"name":82,"color":83,"percentage":84},"Python","#3572A5",100,607,95,"2026-03-28T00:10:33","MIT",1,"","未说明",{"notes":93,"python":91,"dependencies":94},"该工具主要用于可视化卷积神经网络结构，不涉及模型训练或推理，因此对 GPU 和内存无特殊要求。支持将模型保存为 SVG、PPTX 或通过 Matplotlib 保存为其他图像格式（如 PDF）。若需转换 Keras 顺序模型，仅支持部分层类型（如 Conv2D, MaxPooling2D, Dense 等）。可通过 config.py 调整可视化参数以优化显示效果。",[95,96,97],"python-pptx","keras","matplotlib",[15,14],[100,95,96,101,102],"deep-neural-networks","convolutional-neural-networks","visualization","2026-03-27T02:49:30.150509","2026-04-09T20:52:23.370036",[106,111,116,121,126,130],{"id":107,"question_zh":108,"answer_zh":109,"source_url":110},26587,"导出 PPTX 时图表渲染位置超出幻灯片范围或显示不正确怎么办？","这是因为 x 和 y 坐标的单位是磅（Pt），且演示文稿尺寸由 PowerPoint 默认设置决定。维护者已为 `save_model_to_pptx` 函数添加了位移（shift）和缩放（scale）选项来解决此问题。使用方法如下：\n\n```python\nfrom convnet_drawer import Model, Conv2D, MaxPooling2D\nfrom pptx_util import save_model_to_pptx\n\nmodel = Model(input_shape=(227, 227, 3))\n# ... 添加层 ...\n# 使用 shift 和 scale 参数调整位置和大小\nsave_model_to_pptx(model, \"output.pptx\", shift=(x_offset, y_offset), scale=scale_factor)\n```\n请根据实际需求调整偏移量和缩放比例。","https:\u002F\u002Fgithub.com\u002Fyu4u\u002Fconvnet-drawer\u002Fissues\u002F16",{"id":112,"question_zh":113,"answer_zh":114,"source_url":115},26588,"通过 pip 安装后出现 'ImportError: No module named convnet_drawer' 错误如何解决？","如果直接使用 `pip install` 安装后仍报错，通常是因为 Python 无法在默认路径中找到模块。除了确保安装成功外，可能需要将项目路径添加到环境变量 `PYTHONPATH` 中，或者确保在正确的虚拟环境中运行代码。如果是从源码运行示例，请确认已将项目根目录添加到 `sys.path`。","https:\u002F\u002Fgithub.com\u002Fyu4u\u002Fconvnet-drawer\u002Fissues\u002F13",{"id":117,"question_zh":118,"answer_zh":119,"source_url":120},26589,"是否支持 Deconvolution2D (反卷积) 层？","是的，目前已支持 Deconv2D。维护者已实现该功能，您可以参考仓库中的 `examples\u002FAutoEncoder.py` 文件查看具体的使用示例和代码写法。","https:\u002F\u002Fgithub.com\u002Fyu4u\u002Fconvnet-drawer\u002Fissues\u002F7",{"id":122,"question_zh":123,"answer_zh":124,"source_url":125},26590,"当模型包含 GlobalAveragePooling2D 层时，convert_drawer_model 转换失败怎么办？","这是一个已知问题，已在后续的 Pull Request (#12) 中被修复。请确保您使用的是最新版本的代码。如果您是从 GitHub 克隆的代码，请拉取最新提交；如果是通过 pip 安装，请尝试升级包版本以获取包含该修复的更新。","https:\u002F\u002Fgithub.com\u002Fyu4u\u002Fconvnet-drawer\u002Fissues\u002F11",{"id":127,"question_zh":128,"answer_zh":129,"source_url":110},26591,"PPTX 导出功能中的坐标系统是如何定义的？","在 `pptx_util.py` 中，x 和 y 坐标的单位是磅（Pt）。演示文稿的具体尺寸取决于 PowerPoint 的默认页面设置。如果需要精确控制图形位置，建议使用新提供的 `shift`（位移）和 `scale`（缩放）参数来微调，而不是直接计算绝对坐标。",{"id":131,"question_zh":132,"answer_zh":133,"source_url":120},26592,"在哪里可以找到支持的网络层列表及具体用法示例？","支持的网络层列表通常在项目的 README 文档中列出（如 GlobalAveragePooling2D 等）。对于特定层（如 Deconv2D）的具体用法，建议直接查看项目 `examples` 目录下的脚本（例如 `AutoEncoder.py` 或 `AlexNet.py`），这些文件包含了构建模型并导出为图片或 PPTX 的完整代码示例。",[]]