[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-julrog--nn_vis":3,"tool-julrog--nn_vis":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 真正成长为懂上",142651,2,"2026-04-06T23:34:12",[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":76,"owner_location":77,"owner_email":78,"owner_twitter":76,"owner_website":76,"owner_url":79,"languages":80,"stars":93,"forks":94,"last_commit_at":95,"license":96,"difficulty_score":10,"env_os":97,"env_gpu":98,"env_ram":99,"env_deps":100,"category_tags":105,"github_topics":107,"view_count":32,"oss_zip_url":76,"oss_zip_packed_at":76,"status":17,"created_at":115,"updated_at":116,"faqs":117,"releases":147},4762,"julrog\u002Fnn_vis","nn_vis","A project for processing neural networks and rendering to gain insights on the architecture and parameters of a model through a decluttered representation.","nn_vis 是一个专注于神经网络可视化的开源项目，旨在通过清晰、去噪的 3D 渲染方式，帮助开发者直观地洞察模型的架构设计与参数分布。随着人工智能模型日益庞大和复杂，其内部运作往往缺乏透明度，导致研究人员难以评估不同架构的效率或定位关键组件。nn_vis 正是为了解决这一“黑盒”难题而生，它将抽象的网络结构转化为具象的视觉模型，让复杂的连接关系一目了然。\n\n该工具特别适合深度学习研究人员、算法工程师以及需要调试或优化模型架构的技术人员使用。其核心亮点在于引入了一套新颖的 3D 可视化技术：不仅利用批量归一化（Batch Normalization）结合微调与特征提取来估算网络各部分的重要性，还融合了边捆绑（edge bundling）、光线追踪及特殊的透明度处理技术。这些方法共同作用，生成了既美观又富含信息的 3D 模型，有效突出了网络中的关键路径。此外，nn_vis 还支持 VR 体验并提供 Docker 部署方案，让用户能以沉浸式或便捷的方式探索神经网络的内部世界，是理解和分析复杂模型结构的得力助手。","\u003Ch1 align=\"center\">Neural Network Visualization\u003C\u002Fh2>\r\n\u003Cp align=\"center\">\r\n\u003Cimg align=\"center\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjulrog_nn_vis_readme_284e5c1957c2.gif\" \u002F>\r\n\u003C\u002Fp>\r\n\u003Cp align=\"center\">\r\nVisualization of neural network architectures and parameters.\r\n\u003C\u002Fp>\r\n\r\n## News\r\n\r\n- (23.11.2023) Master Thesis published [[link]](https:\u002F\u002Fkola.opus.hbz-nrw.de\u002Ffrontdoor\u002Findex\u002Findex\u002FdocId\u002F2445) [[pdf]](https:\u002F\u002Fkola.opus.hbz-nrw.de\u002Ffiles\u002F2445\u002Fmasterthesis_julian_rogawski.pdf)\r\n- (13.10.2023) Added docker (see [DOCKER.md](.\u002Fdocs\u002FDOCKER.md)) and docker image (see [here](https:\u002F\u002Fhub.docker.com\u002Frepository\u002Fdocker\u002Fjulrog\u002Fnn_vis))\r\n- (11.10.2023) Fixed bugs with demo and evaluation scripts, also added more example networks\r\n- (30.12.2022) Added VR support (see [VR_TOOL.md](.\u002Fdocs\u002FVR_TOOL.md))\r\n\r\n## Thesis\r\n\r\nThis project was done for my master's thesis. A general description can be taken from the thesis:\r\n\r\n### Abstract\r\n\r\nArtificial neural networks is a popular field of research in artificial intelligence. The increasing size and complexity of huge models entail certain problems. The lack of transparency of the inner workings of a neural network makes it difficult to choose efficient architectures for different tasks. It proves to be challenging to solve these problems, and with a lack of insightful representations of neural networks, this state of affairs becomes entrenched. With these difficulties in mind a novel 3D visualization technique is introduced. Attributes for trained neural networks are estimated by utilizing established methods from the area of neural network optimization. Batch normalization is used with fine-tuning and feature extraction to estimate the importance of different parts of the neural network. A combination of the importance values with various methods like edge bundling, ray tracing, 3D impostor and a special transparency technique results in a 3D model representing a neural network. The validity of the extracted importance estimations is demonstrated and the potential of the developed visualization is explored.\r\n\r\n### Full\r\n\r\nCan be found at the university's publication server [[link]](https:\u002F\u002Fkola.opus.hbz-nrw.de\u002Ffrontdoor\u002Findex\u002Findex\u002FdocId\u002F2445) [[pdf]](https:\u002F\u002Fkola.opus.hbz-nrw.de\u002Ffiles\u002F2445\u002Fmasterthesis_julian_rogawski.pdf)\r\n\r\n### Cite\r\nIf you use my work in your research, please cite it by using the following BibTeX entry:\r\n\r\n```latex\r\n@mastersthesis{Rogawski2023,\r\n  author      = {Julian Rogawski},\r\n  title       = {Visualization of Neural Networks},\r\n  type        = {masterthesis},\r\n  pages       = {ii, 48},\r\n  school      = {Universit{\\\"a}t Koblenz, Universit{\\\"a}tsbibliothek},\r\n  year        = {2023},\r\n}\r\n```\r\n\r\n## How to use\r\n\r\n1. Prepare the `configs\u002Fprocessing.json` with the parameters described [here](#parameters).\r\n2. Create a neural network model and process it. An example of this process is given in `examples\u002Fprocess_mnist_model.py` on [MNIST](http:\u002F\u002Fyann.lecun.com\u002Fexdb\u002Fmnist\u002F) data.\r\n3. Start the visualization tool `start_tool.py` and select the neural network via `Load Processed Network` to render the representation of the neural network.\r\n   - With `Load Processed Network` you can select and load the processed model with bundled edges and nodes.\r\n   - With `Load Network` you can select and load the unprocessed network with its importance values, with unbundled edges and nodes.\r\n\r\nOr\r\n\r\n1. Run `start_tool.py --demo` to download data of some already processed model and importance data, loads and renders one of it.\r\n   - With `Load Processed Network` you can select different processed networks and visualize them.\r\n   - With `Load Network` you can select different unprocessed networks with just their importance values but no bundling of nodes and edges.\r\n\r\nMultiple scripts are located in `examples`, which can be adapted to create and process neural networks. `examples\u002Fevaluation_plots.py` for example can be used to recreate the evaluation data and plots of my thesis.\r\n\r\n### Sample Model Importance\r\n\r\nA processed model can be downloaded [here](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1EpsubJhHH4shqzDhsBB0SHsBjWgWa03S\u002Fview?usp=sharing).\r\n\r\n## Rendering Tool\r\n\r\nThe visualization tool `start_tool.py` can be used to render and\u002For process neural networks. Instead of existing ones, you can also generate random networks and process them of various sizes. For neural networks the visualization results in a more structured view of a neural network in regards to their trained parameters compared to the most common ones.\r\n\r\n### VR\r\n\r\nSee [VR_TOOL.md](.\u002Fdocs\u002FVR_TOOL.md) for more info.\r\n\r\n### Docker\r\n\r\nSee [DOCKER.md](.\u002Fdocs\u002FDOCKER.md) for more info.\r\n\r\n### Example\r\n\r\n\u003Cimg align=\"center\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjulrog_nn_vis_readme_6d8e4ec4859f.jpg\" \u002F>\r\nThe parameters of the three neural networks represented above are all trained differently, while having the same architecture. The one on the left is not trained at all with randomly assigned values. The nodes and edges of this model spread further from the center. The middle one is trained with some basic settings for learning rate and achieving >90% accuracy. The third one on the right is trained in the same way but with an additional *L1* regularization, with similar accuracy rating and is the most narrow model. **The closer together the edges are the greater the generalization** of these parts of the neural network.\r\n\r\n### Controls\r\n\r\n| Key | Description            |\r\n| --- | ---------------------- |\r\n| H   | Toggle rotation        |\r\n| K   | Screenshot             |\r\n| 0-9 | Switch camera position |\r\n\r\n### GUI\r\n\r\nThe settings for shaders, statistics and the processing of neural networks in general is controllable by the gui.\r\n\u003Cimg align=\"center\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjulrog_nn_vis_readme_b4d5aad8a4db.jpg\" \u002F>\r\n\r\n### Shader Parameters\r\n\r\nThe parameters used in the shaders rendering the neural network can be changed by either the `configs\u002Frendering.json` or by changing the values in the gui. The visualization can differ vastly and different results can be seen [here](#other-visualizations).\r\n\r\n| Name                 | Recommended | Range      | Description                                                                        |\r\n| -------------------- | ----------- | ---------- | ---------------------------------------------------------------------------------- |\r\n| Size                 | 0.02        | 0 - 1.0    | size of the primitive objects                                                      |\r\n| Base Opacity         | 0.0         | 0.0 - 1.0  | base opacity of the objects                                                        |\r\n| Importance Opacity   | 1.1         | 0.0 - 2.0  | rate at which the importance values influence opacity                              |\r\n| Depth Opacity        | 0.5         | 0.0 - 1.0  | rate at which the distance to the camera influence opacity                         |\r\n| Depth Exponent       | 0.25        | 0.0 - 10.0 | rate at which the density at different points on a object influences opacity       |\r\n| Importance Threshold | 0.1         | 0.0 - 1.0  | defines the threshold at which an object is rendered based on its importance value |\r\n\r\n## Processing\r\n\r\n\u003Cimg align=\"center\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjulrog_nn_vis_readme_2cb490a204d9.png\" \u002F>\r\nThe above pipeline explains the bundling process of a neural network through my code.\r\n\r\n\u003Cimg align=\"center\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjulrog_nn_vis_readme_37e22ed6c200.jpg\" \u002F>\r\nThis image shows the different stages in the processing pipeline.\r\n\r\n### Parameters\r\n\r\nThe processing can be influenced by the following parameters. The default values are in general derived from empircally tested values of related work regarding edge bundling methods. Some values have a high impact on the processing time.\r\n\r\n| Name                     | Recommended | Range         | Description                                                                                                                    | Performance Impact |\r\n| ------------------------ | ----------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------ | ------------------ |\r\n| edge_bandwidth_reduction | 0.9         | 0 - 1.0       | reduction of advection range every iteration for edge samples                                                                  | high               |\r\n| node_bandwidth_reduction | 0.95        | 0 - 1.0       | reduction of advection range every iteration for nodes                                                                         | low                |\r\n| edge_importance_type     | 0           | {0,1,2,3}     | the calculation type for edge importance                                                                                       | low                |\r\n| layer_distance           | 0.5         | 0.0 - 1.0     | the distance between the nodes of every neural network layer                                                                   | medium             |\r\n| layer_width              | 1.0         | 0.0 - 1.0     | the width of every layer slice on which the nodes reside                                                                       | medium             |\r\n| prune_percentage         | 0.0         | 0.0 - 1.0     | the percentage of edges, which should be ignored in order of their importance values, lower value means more longer processing | high               |\r\n| sampling_rate            | 15.0        | 5.0 - 20.0    | defines the amount of samples created per distance unit, higher rate means more detailed                                       | very high          |\r\n| smoothing                | true        | {true, false} | should smoothing of edges be applied between each iteration?, can break without                                                | high               |\r\n| smoothing_iterations     | 8           | 0 - 16        | smoothing iterations between every advection iteration                                                                         | high               |\r\n\r\nTo change the parameters for processing change values in following file:\r\n**configs\u002Fprocessing.json**\r\n\r\n```json\r\n{\r\n  \"edge_bandwidth_reduction\": 0.9,\r\n  \"edge_importance_type\": 0,\r\n  \"layer_distance\": 0.5,\r\n  \"layer_width\": 1.0,\r\n  \"node_bandwidth_reduction\": 0.95,\r\n  \"prune_percentage\": 0.0,\r\n  \"sampling_rate\": 15.0,\r\n  \"smoothing\": true,\r\n  \"smoothing_iterations\": 8\r\n}\r\n```\r\n\r\n### Importance\r\n\r\nEach classification is represented by one color. Nodes and edges are colored according to their importance in the network for correctly predicting the associated class. The validity of the importance is proven by pruning the model parameters in order of their calculated importance.\r\n\r\n|                Overall Importance Pruning                 |              Class Importance Pruning               |\r\n| :-------------------------------------------------------: | :-------------------------------------------------: |\r\n| ![](.\u002Fdocs\u002Fevaluation\u002Fimportance_compare_with_weight.svg) | ![](.\u002Fdocs\u002Fevaluation\u002Fimportance_class_compare.svg) |\r\n\r\nThe left plot shows that pruning unimportant parameters does not influence the prediction accuracy of the model as much as the important parameters.\r\n\r\nAlso by pruning based on importance of specific classes shows the accuracy is preserved for the exact classes in the right plot. The accuracy for the focused class is always higher compared to the overall accuracy.\r\n\r\n## Used System\r\n\r\n- Windows 10\r\n- NVIDIA GeForce RTX 3080\r\n- AMD Ryzen 7 3700X\r\n\r\n### Notes\r\n\r\n- **Processing Times** - Pocessing of a fully connected neural network with following nodes per layer: 784, 81, 49, 10 takes 3-4 minutes. So the one-time calculations are not in real-time.\r\n- **Python Version** - Tested on 3.9 (3.7 and 3.8 was tested with older python dependencies)\r\n- **Dependencies** - check `requirements.txt`\r\n\r\n## Other Visualizations\r\n\r\n\u003Cimg align=\"center\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjulrog_nn_vis_readme_f2a2b84119ab.jpg\" \u002F>\r\n\u003Cimg align=\"center\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjulrog_nn_vis_readme_cc2971ba4c69.jpg\" \u002F>\r\n\u003Cimg align=\"center\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjulrog_nn_vis_readme_c1c9d8a86ae9.jpg\" \u002F>\r\n","\u003Ch1 align=\"center\">神经网络可视化\u003C\u002Fh2>\n\u003Cp align=\"center\">\n\u003Cimg align=\"center\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjulrog_nn_vis_readme_284e5c1957c2.gif\" \u002F>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n神经网络架构与参数的可视化。\n\u003C\u002Fp>\n\n## 新闻\n\n- (2023年11月23日) 硕士论文已发表 [[链接]](https:\u002F\u002Fkola.opus.hbz-nrw.de\u002Ffrontdoor\u002Findex\u002Findex\u002FdocId\u002F2445) [[PDF]](https:\u002F\u002Fkola.opus.hbz-nrw.de\u002Ffiles\u002F2445\u002Fmasterthesis_julian_rogawski.pdf)\n- (2023年10月13日) 添加了 Docker（详见 [DOCKER.md](.\u002Fdocs\u002FDOCKER.md)）及 Docker 镜像（详见 [这里](https:\u002F\u002Fhub.docker.com\u002Frepository\u002Fdocker\u002Fjulrog\u002Fnn_vis)）\n- (2023年10月11日) 修复了演示和评估脚本中的错误，并增加了更多示例网络\n- (2022年12月30日) 增加了 VR 支持（详见 [VR_TOOL.md](.\u002Fdocs\u002FVR_TOOL.md)）\n\n## 论文\n\n本项目是作为我的硕士论文完成的。论文中对该项目的总体描述如下：\n\n### 摘要\n\n人工神经网络是人工智能领域中一个热门的研究方向。随着大型模型规模和复杂性的不断增加，也带来了一些问题。由于神经网络内部运作缺乏透明度，使得为不同任务选择高效架构变得困难。解决这些问题颇具挑战性，而缺乏对神经网络的深入可视化表示，则进一步加剧了这一现状。基于上述困难，本文提出了一种新颖的 3D 可视化技术。通过利用神经网络优化领域的成熟方法，对训练好的神经网络的各项属性进行估计。结合微调和特征提取，采用批归一化技术来评估神经网络各部分的重要性。将这些重要性数值与边缘聚束、光线追踪、3D 替代物以及特殊的透明度技术相结合，最终生成一个能够代表神经网络的 3D 模型。本文还验证了所提取的重要性估计的有效性，并探讨了该可视化技术的应用潜力。\n\n### 全文\n\n可在大学出版服务器上找到 [[链接]](https:\u002F\u002Fkola.opus.hbz-nrw.de\u002Ffrontdoor\u002Findex\u002Findex\u002FdocId\u002F2445) [[PDF]](https:\u002F\u002Fkola.opus.hbz-nrw.de\u002Ffiles\u002F2445\u002Fmasterthesis_julian_rogawski.pdf)\n\n### 引用\n如果您在研究中使用了我的工作，请使用以下 BibTeX 条目进行引用：\n\n```latex\n@mastersthesis{Rogawski2023,\n  author      = {Julian Rogawski},\n  title       = {神经网络可视化},\n  type        = {masterthesis},\n  pages       = {ii, 48},\n  school      = {科布伦茨大学，大学图书馆},\n  year        = {2023},\n}\n```\n\n## 使用方法\n\n1. 按照 [此处](#parameters) 的说明准备 `configs\u002Fprocessing.json` 文件中的参数。\n2. 创建并处理一个神经网络模型。以 MNIST 数据集为例，可在 `examples\u002Fprocess_mnist_model.py` 中找到相关流程。\n3. 启动可视化工具 `start_tool.py`，并通过“加载已处理网络”选项选择并渲染神经网络的可视化结果。\n   - 使用“加载已处理网络”可选择并加载已处理的、经过边与节点聚束的模型。\n   - 使用“加载网络”则可选择并加载未经处理的网络，其中包含其重要性值，但未进行边与节点的聚束。\n\n或者\n\n1. 运行 `start_tool.py --demo` 下载一些已处理模型及其重要性数据，并自动加载和渲染其中一个。\n   - 使用“加载已处理网络”可选择不同的已处理网络并进行可视化。\n   - 使用“加载网络”则可选择不同的未处理网络，仅显示其重要性值，而不进行节点和边的聚束。\n\n`examples` 目录下包含多个脚本，可用于创建和处理神经网络。例如，`examples\u002Fevaluation_plots.py` 可用于重现我论文中的评估数据和图表。\n\n### 示例模型重要性\n\n已处理的模型可在此处下载 [链接](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1EpsubJhHH4shqzDhsBB0SHsBjWgWa03S\u002Fview?usp=sharing)。\n\n## 渲染工具\n\n可视化工具 `start_tool.py` 可用于渲染和\u002F或处理神经网络。除了现有网络外，您还可以生成随机网络并对其不同尺寸进行处理。对于神经网络而言，与常见的可视化方式相比，该工具能够提供更加结构化的视角，展示其训练后的参数分布情况。\n\n### VR\n\n更多信息请参见 [VR_TOOL.md](.\u002Fdocs\u002FVR_TOOL.md)。\n\n### Docker\n\n更多信息请参见 [DOCKER.md](.\u002Fdocs\u002FDOCKER.md)。\n\n### 示例\n\n\u003Cimg align=\"center\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjulrog_nn_vis_readme_6d8e4ec4859f.jpg\" \u002F>\n上图所示的三个神经网络虽然具有相同的架构，但训练方式各不相同。左侧的网络未经过任何训练，各节点和边随机分布，整体较为分散。中间的网络采用基础的学习率设置进行训练，准确率超过 90%。右侧的网络则在相同条件下额外加入了 *L1* 正则化，准确率相近，但模型更为紧凑。**边越靠近，表明这部分神经网络的泛化能力越强**。\n\n### 控制键\n\n| 键 | 说明            |\n| --- | ---------------------- |\n| H   | 切换旋转        |\n| K   | 截图             |\n| 0-9 | 切换相机位置 |\n\n### GUI\n\n通过 GUI 可以控制着色器、统计信息以及神经网络处理的相关设置。\n\u003Cimg align=\"center\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjulrog_nn_vis_readme_b4d5aad8a4db.jpg\" \u002F>\n\n### 着色器参数\n\n用于渲染神经网络的着色器中的参数可以通过 `configs\u002Frendering.json` 文件或在 GUI 中更改。可视化效果可能会有很大差异，不同的结果可以在这里查看 [这里](#other-visualizations)。\n\n| 名称                 | 推荐值 | 范围      | 描述                                                                        |\n| -------------------- | -------- | ---------- | --------------------------------------------------------------------------- |\n| 大小                 | 0.02   | 0 - 1.0    | 基元对象的大小                                                              |\n| 基础透明度         | 0.0     | 0.0 - 1.0  | 对象的基础透明度                                                            |\n| 重要性透明度       | 1.1     | 0.0 - 2.0  | 重要性值影响透明度的速率                                                  |\n| 深度透明度         | 0.5     | 0.0 - 1.0  | 相机距离影响透明度的速率                                                    |\n| 深度指数           | 0.25   | 0.0 - 10.0 | 物体上不同点的密度影响透明度的速率                                          |\n| 重要性阈值         | 0.1     | 0.0 - 1.0  | 定义根据对象的重要性值决定是否渲染的阈值                                    |\n\n## 处理流程\n\n\u003Cimg align=\"center\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjulrog_nn_vis_readme_2cb490a204d9.png\" \u002F>\n上述流程图解释了通过我的代码对神经网络进行边束化处理的过程。\n\n\u003Cimg align=\"center\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjulrog_nn_vis_readme_37e22ed6c200.jpg\" \u002F>\n这张图展示了处理流程中的不同阶段。\n\n### 参数\n\n处理过程可以受到以下参数的影响。默认值通常来源于与边束化方法相关的研究中经过实验验证的数值。某些参数对处理时间有较大影响。\n\n| 名称                     | 推荐值 | 范围         | 描述                                                                                                                    | 性能影响 |\n| ------------------------ | -------- | ------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------- |\n| 边带宽缩减             | 0.9     | 0 - 1.0       | 每次迭代时减少边样本的平流范围                                                                                        | 高        |\n| 节点带宽缩减           | 0.95   | 0 - 1.0       | 每次迭代时减少节点的平流范围                                                                                          | 低       |\n| 边重要性类型           | 0       | {0,1,2,3}     | 计算边重要性的类型                                                                                                   | 低       |\n| 层间距离               | 0.5     | 0.0 - 1.0     | 每一层神经网络节点之间的距离                                                                                          | 中等     |\n| 层宽                   | 1.0     | 0.0 - 1.0     | 节点所在的每一层切片的宽度                                                                                            | 中等     |\n| 剪枝百分比             | 0.0     | 0.0 - 1.0     | 根据边的重要性值应忽略的边所占的百分比，数值越低处理时间越长                                                        | 高        |\n| 采样率                 | 15.0   | 5.0 - 20.0    | 定义每单位距离创建的样本数量，采样率越高细节越丰富                                                                    | 极高     |\n| 平滑                   | true    | {true, false} | 是否应在每次迭代之间对边进行平滑处理？如果不平滑可能会出现断裂                                                          | 高        |\n| 平滑迭代次数           | 8       | 0 - 16        | 每次平流迭代之间的平滑迭代次数                                                                                        | 高        |\n\n要更改处理参数，请修改以下文件中的值：\n**configs\u002Fprocessing.json**\n\n```json\n{\n  \"edge_bandwidth_reduction\": 0.9,\n  \"edge_importance_type\": 0,\n  \"layer_distance\": 0.5,\n  \"layer_width\": 1.0,\n  \"node_bandwidth_reduction\": 0.95,\n  \"prune_percentage\": 0.0,\n  \"sampling_rate\": 15.0,\n  \"smoothing\": true,\n  \"smoothing_iterations\": 8\n}\n```\n\n### 重要性\n\n每个分类用一种颜色表示。节点和边的颜色根据它们在网络中正确预测相应类别的重要性来确定。重要性的有效性可以通过按照计算出的重要性顺序剪除模型参数来证明。\n\n|                整体重要性剪枝                 |              类别重要性剪枝               |\n| :--------------------------------------------: | :-----------------------------------------: |\n| ![](.\u002Fdocs\u002Fevaluation\u002Fimportance_compare_with_weight.svg) | ![](.\u002Fdocs\u002Fevaluation\u002Fimportance_class_compare.svg) |\n\n左图显示，剪除不重要的参数对模型预测准确率的影响不如剪除重要参数那么大。\n\n此外，基于特定类别的重要性进行剪枝后，右图显示针对这些特定类别的准确率得以保持。专注于某一类别的准确率始终高于整体准确率。\n\n## 使用的系统\n\n- Windows 10\n- NVIDIA GeForce RTX 3080\n- AMD Ryzen 7 3700X\n\n### 注意事项\n\n- **处理时间** - 对于一个全连接神经网络，其各层节点数分别为：784、81、49、10，处理需要3-4分钟。因此，这些一次性计算并非实时进行。\n- **Python 版本** - 测试版本为 3.9（3.7 和 3.8 曾使用较旧的 Python 依赖项进行测试）。\n- **依赖项** - 请查看 `requirements.txt` 文件。\n\n## 其他可视化效果\n\n\u003Cimg align=\"center\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjulrog_nn_vis_readme_f2a2b84119ab.jpg\" \u002F>\n\u003Cimg align=\"center\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjulrog_nn_vis_readme_cc2971ba4c69.jpg\" \u002F>\n\u003Cimg align=\"center\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjulrog_nn_vis_readme_c1c9d8a86ae9.jpg\" \u002F>","# nn_vis 快速上手指南\n\nnn_vis 是一个用于可视化神经网络架构和参数的开源工具，支持生成包含边捆绑（edge bundling）和重要性评估的 3D 模型，帮助开发者直观理解网络内部结构。\n\n## 环境准备\n\n### 系统要求\n- **操作系统**: Windows 10 (Linux\u002FmacOS 未明确测试，建议优先在 Windows 环境下使用)\n- **硬件推荐**:\n  - GPU: NVIDIA GeForce RTX 系列 (支持 CUDA 加速渲染)\n  - CPU: 多核处理器 (如 AMD Ryzen 7 或 Intel i7)\n- **Python 版本**: Python 3.9 (兼容 3.7\u002F3.8，但需调整依赖版本)\n\n### 前置依赖\n确保已安装以下基础环境：\n- Git\n- Python 3.9+\n- pip\n\n## 安装步骤\n\n1. **克隆项目仓库**\n   ```bash\n   git clone https:\u002F\u002Fgithub.com\u002Fjulrog\u002Fnn_vis.git\n   cd nn_vis\n   ```\n\n2. **安装 Python 依赖**\n   建议使用国内镜像源加速安装（如清华源）：\n   ```bash\n   pip install -r requirements.txt -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n   ```\n\n3. **配置处理参数**\n   编辑 `configs\u002Fprocessing.json` 文件，可根据需求调整参数（默认值已优化）：\n   ```json\n   {\n     \"edge_bandwidth_reduction\": 0.9,\n     \"edge_importance_type\": 0,\n     \"layer_distance\": 0.5,\n     \"layer_width\": 1.0,\n     \"node_bandwidth_reduction\": 0.95,\n     \"prune_percentage\": 0.0,\n     \"sampling_rate\": 15.0,\n     \"smoothing\": true,\n     \"smoothing_iterations\": 8\n   }\n   ```\n\n## 基本使用\n\n### 方式一：运行演示模式（最快体验）\n直接下载预处理的模型数据并启动可视化界面：\n```bash\npython start_tool.py --demo\n```\n- 启动后，通过 GUI 选择 `Load Processed Network` 加载已处理的网络（含边捆绑效果）。\n- 或选择 `Load Network` 加载未处理网络（仅显示重要性值）。\n\n### 方式二：处理自定义模型\n以 MNIST 数据集为例：\n\n1. **运行示例脚本处理模型**\n   ```bash\n   python examples\u002Fprocess_mnist_model.py\n   ```\n   > 注意：全连接网络（784-81-49-10 结构）处理耗时约 3-4 分钟，非实时计算。\n\n2. **启动可视化工具**\n   ```bash\n   python start_tool.py\n   ```\n   - 在界面中点击 `Load Processed Network`，选择生成的模型文件进行渲染。\n\n### 常用操作快捷键\n| 按键 | 功能说明         |\n|------|------------------|\n| H    | 切换自动旋转     |\n| K    | 截取当前画面     |\n| 0-9  | 切换相机视角位置 |\n\n### 高级选项\n- **Docker 用户**: 参考 `docs\u002FDOCKER.md` 使用容器化部署。\n- **VR 支持**: 参考 `docs\u002FVR_TOOL.md` 启用虚拟现实模式。","某计算机视觉团队在优化一个用于工业缺陷检测的大型卷积神经网络时，面临模型结构过于复杂、难以定位冗余计算单元的挑战。\n\n### 没有 nn_vis 时\n- 开发人员只能依赖二维拓扑图或纯文本日志查看网络结构，面对成千上万的神经元连接，无法直观分辨哪些层级是核心特征提取区，哪些是无效冗余。\n- 在尝试剪枝压缩模型时，缺乏对参数重要性的空间感知，往往凭经验盲目移除节点，导致模型精度意外大幅下降且难以回溯原因。\n- 团队内部沟通成本极高，算法工程师向硬件部署组解释“为何保留某条特定路径”时，缺乏统一的三维可视化证据，只能靠口头描述抽象概念。\n- 调试过程如同“黑盒操作”，无法通过视觉反馈快速发现异常激活区域或梯度消失的具体位置，排查问题耗时数天。\n\n### 使用 nn_vis 后\n- 利用 nn_vis 生成的去 cluttered 3D 模型，团队能清晰看到经重要性评估高亮的关键路径，瞬间识别出可安全剪枝的稀疏区域。\n- 结合边缘捆绑（edge bundling）和透明度技术，开发人员可以直观地根据颜色深浅判断各层贡献度，实施精细化剪枝后，模型体积减少 40% 而精度仅损失 0.5%。\n- 在评审会议中，直接展示 nn_vis 渲染的交互式 3D 架构图，让非算法背景的成员也能理解网络决策逻辑，大幅提升了跨部门协作效率。\n- 通过 VR 支持或桌面端漫游，工程师能快速定位到特定的异常激活簇，将原本需要数天的故障排查时间缩短至几小时。\n\nnn_vis 通过将抽象的神经网络参数转化为直观的三维空间洞察，彻底改变了团队理解、优化和沟通复杂模型的方式。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjulrog_nn_vis_284e5c19.gif","julrog","Julian Rogawski","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fjulrog_dedcf122.jpg","Software Developer\r\nMSc Computational Visualistics",null,"Germany","julianrogawski@gmail.com","https:\u002F\u002Fgithub.com\u002Fjulrog",[81,85,89],{"name":82,"color":83,"percentage":84},"Python","#3572A5",90,{"name":86,"color":87,"percentage":88},"GLSL","#5686a5",9.9,{"name":90,"color":91,"percentage":92},"Dockerfile","#384d54",0.2,1171,190,"2026-04-02T03:10:31","MIT","Windows","需要高性能 NVIDIA GPU（测试环境为 RTX 3080），用于实时渲染和可视化，未明确具体显存和 CUDA 版本要求","未说明",{"notes":101,"python":102,"dependencies":103},"1. 该项目主要用于神经网络架构的 3D 可视化，包含边缘捆绑等耗时处理步骤（全连接网络处理需 3-4 分钟），非实时计算。2. 支持 Docker 部署和 VR 模式。3. 可通过配置文件 (configs\u002Fprocessing.json) 调整渲染和处理参数。4. 虽然仅在 Windows 10 上测试，但提供了 Docker 镜像，暗示可能支持其他操作系统。","3.9 (兼容 3.7, 3.8)",[104],"需参考 requirements.txt (文中未列出具体库名)",[14,106],"其他",[108,109,110,111,112,113,114],"neural-networks","visualization","rendering-engine","opengl","neural-network","virtual-reality","vr","2026-03-27T02:49:30.150509","2026-04-07T09:55:16.517660",[118,123,128,133,137,142],{"id":119,"question_zh":120,"answer_zh":121,"source_url":122},21629,"该工具支持哪些类型的神经网络层？","目前支持的层类型包括 `Dense`（全连接层）。`Flatten`（展平层）会被忽略。工具会检查神经网络的有效性，不支持所有类型的神经网络。","https:\u002F\u002Fgithub.com\u002Fjulrog\u002Fnn_vis\u002Fissues\u002F8",{"id":124,"question_zh":125,"answer_zh":126,"source_url":127},21630,"如何加载并可视化我自己训练的模型？","您需要确保模型是前馈神经网络（FNN）且与 TensorFlow 兼容。请参考 `examples\u002Fprocess_mnist_model.py` 脚本，该脚本演示了完整的流程：训练模型、生成重要性数据、进行数据处理（如节点和边捆绑），最后渲染网络图像。您需要根据自己的模型修改相关代码以实现兼容。","https:\u002F\u002Fgithub.com\u002Fjulrog\u002Fnn_vis\u002Fissues\u002F46",{"id":129,"question_zh":130,"answer_zh":131,"source_url":132},21631,"是否有配置文件用于控制处理和渲染过程？","是的，项目已重构以使用指定的配置文件进行处理和渲染，并添加了用于自动化的新配置。目前已包含处理配置文件和渲染配置文件，用户可通过修改这些文件来定制流程。","https:\u002F\u002Fgithub.com\u002Fjulrog\u002Fnn_vis\u002Fissues\u002F11",{"id":134,"question_zh":135,"answer_zh":136,"source_url":127},21626,"为什么可视化窗口显示为空白？","目前该工具仅支持前馈神经网络（FNN）。您需要提供一部分训练数据（或模型可用的任何带标签数据集），并且需要编写代码使您的自定义模型与 TensorFlow 兼容。建议参考 `examples\u002Fprocess_mnist_model.py` 脚本，它展示了从训练、生成重要性数据、处理（节点和边捆绑）到最终渲染图片的完整流程。由于这是较早编写的学生项目代码，理解起来可能有一定难度。",{"id":138,"question_zh":139,"answer_zh":140,"source_url":141},21627,"运行示例脚本时出现 'No module named data' 错误怎么办？","这是一个导入路径问题。临时解决方法是在您想要运行的 `.py` 文件（位于 examples 文件夹中）顶部添加以下代码以手动设置路径：\nimport os,sys,inspect\ncurrentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))\nparentdir = os.path.dirname(currentdir)\nsys.path.insert(0,parentdir)\nos.chdir('..\u002F')\n\n此外，尝试在相关目录中添加 `__init__.py` 文件也可能解决此问题。该问题已在后续提交中修复。","https:\u002F\u002Fgithub.com\u002Fjulrog\u002Fnn_vis\u002Fissues\u002F26",{"id":143,"question_zh":144,"answer_zh":145,"source_url":146},21628,"在哪里可以阅读作者的硕士论文？","您可以在此链接阅读论文：https:\u002F\u002Fkola.opus.hbz-nrw.de\u002Ffrontdoor\u002Findex\u002Findex\u002FdocId\u002F2445","https:\u002F\u002Fgithub.com\u002Fjulrog\u002Fnn_vis\u002Fissues\u002F35",[148,153,158],{"id":149,"version":150,"summary_zh":151,"released_at":152},127670,"v1.2","- 增加了对 SteamVR 的 VR 支持（已在 Oculus Quest 2 上测试）\n- 添加了已训练神经网络模型的示例数据链接（详见 README.md）\n- 脚本中新增了 `--demo` 标志，用于在渲染工具中下载和使用示例数据\n- 进行了大量的代码质量优化","2023-01-02T19:05:17",{"id":154,"version":155,"summary_zh":156,"released_at":157},127671,"v1.1","TensorFlow 2.4 现已支持 Python 3.8。","2021-03-07T12:49:53",{"id":159,"version":160,"summary_zh":76,"released_at":161},127672,"v1.0","2021-02-07T21:11:46"]