[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-ClementPinard--FlowNetPytorch":3,"tool-ClementPinard--FlowNetPytorch":62},[4,18,26,36,46,54],{"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 真正成长为懂上",159636,2,"2026-04-17T23:33:34",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":42,"last_commit_at":43,"category_tags":44,"status":17},8272,"opencode","anomalyco\u002Fopencode","OpenCode 是一款开源的 AI 编程助手（Coding Agent），旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件，而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码，还是排查难以定位的 Bug，OpenCode 都能通过自然语言交互高效完成，显著减少开发者在重复性劳动和上下文切换上的时间消耗。\n\n这款工具专为软件开发者、工程师及技术研究人员设计，特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构，这意味着用户可以审查代码逻辑、自定义行为策略，甚至私有化部署以保障数据安全，彻底打破了传统闭源 AI 助手的“黑盒”限制。\n\n在技术体验上，OpenCode 提供了灵活的终端界面（Terminal UI）和正在测试中的桌面应用程序，支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具，安装便捷，并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客，还是渴望提升产出的独立开发者，OpenCode 都提供了一个透明、可信",144296,1,"2026-04-16T14:50:03",[13,45],"插件",{"id":47,"name":48,"github_repo":49,"description_zh":50,"stars":51,"difficulty_score":32,"last_commit_at":52,"category_tags":53,"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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[14,15,13],{"id":55,"name":56,"github_repo":57,"description_zh":58,"stars":59,"difficulty_score":32,"last_commit_at":60,"category_tags":61,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[45,13,15,14],{"id":63,"github_repo":64,"name":65,"description_en":66,"description_zh":67,"ai_summary_zh":68,"readme_en":69,"readme_zh":70,"quickstart_zh":71,"use_case_zh":72,"hero_image_url":73,"owner_login":74,"owner_name":75,"owner_avatar_url":76,"owner_bio":77,"owner_company":78,"owner_location":79,"owner_email":80,"owner_twitter":81,"owner_website":82,"owner_url":83,"languages":84,"stars":89,"forks":90,"last_commit_at":91,"license":92,"difficulty_score":10,"env_os":93,"env_gpu":94,"env_ram":95,"env_deps":96,"category_tags":107,"github_topics":108,"view_count":32,"oss_zip_url":81,"oss_zip_packed_at":81,"status":17,"created_at":112,"updated_at":113,"faqs":114,"releases":153},8957,"ClementPinard\u002FFlowNetPytorch","FlowNetPytorch","Pytorch implementation of FlowNet by Dosovitskiy et al.","FlowNetPytorch 是经典光流估计模型 FlowNet 的 PyTorch 版本复现，由 Dosovitskiy 等人原始论文衍生而来。它主要解决计算机视觉中如何精准计算两帧图像间像素运动矢量（即光流）的难题，广泛应用于视频分析、动作识别及自动驾驶感知等场景。\n\n该项目特别适合人工智能研究人员和深度学习开发者使用。对于希望深入理解光流算法原理、复现经典论文结果，或需要在 PyTorch 生态中进行相关二次开发的团队，FlowNetPytorch 提供了极佳的起点。工具内置了 FlowNetS 和 FlowNetC 两种核心架构及其批归一化变体，并提供了基于\"Flying Chairs\"数据集的完整训练示例与数据增强方案。\n\n其技术亮点在于不仅还原了原始 Caffe 版本的训练超参数以确保效果对齐，还贴心地提供了预训练权重供用户直接调用或微调。此外，项目集成了 TensorBoard 可视化支持，让开发者能直观监控训练过程中的误差变化与预测效果。虽然部分实验性变体在特定数据集上表现有待优化，但整体代码结构清晰，参考了官方 ImageNet 示例风格，是进入光流领域研究的高效工具","FlowNetPytorch 是经典光流估计模型 FlowNet 的 PyTorch 版本复现，由 Dosovitskiy 等人原始论文衍生而来。它主要解决计算机视觉中如何精准计算两帧图像间像素运动矢量（即光流）的难题，广泛应用于视频分析、动作识别及自动驾驶感知等场景。\n\n该项目特别适合人工智能研究人员和深度学习开发者使用。对于希望深入理解光流算法原理、复现经典论文结果，或需要在 PyTorch 生态中进行相关二次开发的团队，FlowNetPytorch 提供了极佳的起点。工具内置了 FlowNetS 和 FlowNetC 两种核心架构及其批归一化变体，并提供了基于\"Flying Chairs\"数据集的完整训练示例与数据增强方案。\n\n其技术亮点在于不仅还原了原始 Caffe 版本的训练超参数以确保效果对齐，还贴心地提供了预训练权重供用户直接调用或微调。此外，项目集成了 TensorBoard 可视化支持，让开发者能直观监控训练过程中的误差变化与预测效果。虽然部分实验性变体在特定数据集上表现有待优化，但整体代码结构清晰，参考了官方 ImageNet 示例风格，是进入光流领域研究的高效工具。","# FlowNetPytorch\nPytorch implementation of FlowNet by Dosovitskiy et al.\n\nThis repository is a torch implementation of [FlowNet](http:\u002F\u002Flmb.informatik.uni-freiburg.de\u002FPublications\u002F2015\u002FDFIB15\u002F), by [Alexey Dosovitskiy](http:\u002F\u002Flmb.informatik.uni-freiburg.de\u002Fpeople\u002Fdosovits\u002F) et al. in PyTorch. See Torch implementation [here](https:\u002F\u002Fgithub.com\u002FClementPinard\u002FFlowNetTorch)\n\nThis code is mainly inspired from official [imagenet example](https:\u002F\u002Fgithub.com\u002Fpytorch\u002Fexamples\u002Ftree\u002Fmaster\u002Fimagenet).\nIt has not been tested for multiple GPU, but it should work just as in original code.\n\nThe code provides a training example, using [the flying chair dataset](http:\u002F\u002Flmb.informatik.uni-freiburg.de\u002Fresources\u002Fdatasets\u002FFlyingChairs.en.html) , with data augmentation. An implementation for [Scene Flow Datasets](http:\u002F\u002Flmb.informatik.uni-freiburg.de\u002Fresources\u002Fdatasets\u002FSceneFlowDatasets.en.html) may be added in the future.\n\nTwo neural network models are currently provided, along with their batch norm variation (experimental) :\n\n - **FlowNetS**\n - **FlowNetSBN**\n - **FlowNetC**\n - **FlowNetCBN**\n\n## Pretrained Models\nThanks to [Kaixhin](https:\u002F\u002Fgithub.com\u002FKaixhin) you can download a pretrained version of FlowNetS (from caffe, not from pytorch) in the [weights](\u002Fweights) folder. This folder also contains trained networks from scratch. \n\n### Note on networks loading\nDirectly feed the downloaded Network to the script, you don't need to uncompress it even if your desktop environment tells you so.\n\n### Note on networks from caffe\nThese networks expect a BGR input (compared to RGB in pytorch). However, BGR order is not very important.\n\n## Prerequisite\nthese modules can be installed with `pip`\n\n```\npytorch >= 1.2\ntensorboard-pytorch\ntensorboardX >= 1.4\nspatial-correlation-sampler>=0.2.1\nimageio\nargparse\npath.py\n```\n\nor\n```bash\npip install -r requirements.txt\n```\n\n## Training on Flying Chair Dataset\n\nFirst, you need to download the [the flying chair dataset](http:\u002F\u002Flmb.informatik.uni-freiburg.de\u002Fresources\u002Fdatasets\u002FFlyingChairs.en.html) . It is ~64GB big and we recommend you put it in a SSD Drive.\n\nDefault HyperParameters provided in `main.py` are the same as in the caffe training scripts.\n\n* Example usage for FlowNetS :\n\n```bash\npython main.py \u002Fpath\u002Fto\u002Fflying_chairs\u002F -b8 -j8 -a flownets\n```\n\nWe recommend you set j (number of data threads) to high if you use DataAugmentation as to avoid data loading to slow the training.\n\nFor further help you can type\n\n```bash\npython main.py -h\n```\n\n## Visualizing training\n[Tensorboard-pytorch](https:\u002F\u002Fgithub.com\u002Flanpa\u002Ftensorboard-pytorch) is used for logging. To visualize result, simply type\n\n```bash\ntensorboard --logdir=\u002Fpath\u002Fto\u002Fcheckpoints\n```\n\t\n## Training results\n\n Models can be downloaded in the [weights](\u002Fweights) folder.\n \n Models were trained with default options unless specified. Color warping was not used.\n\n| Arch        | learning rate | batch size | epoch size | filename                     | validation EPE |\n| ----------- | ------------- | ---------- | ---------- | ---------------------------- | -------------- |\n| FlowNetS    | 1e-4          | 8          | 2700       | flownets_EPE1.951.pth.tar    | 1.951          |\n| FlowNetS BN | 1e-3          | 32         | 695        | flownets_bn_EPE2.459.pth.tar | 2.459          |\n| FlowNetC    | 1e-4          | 8          | 2700       | flownetc_EPE1.766.pth.tar    | 1.766          |\n\n*Note* : FlowNetS BN took longer to train and got worse results. It is strongly advised not to you use it for Flying Chairs dataset.\n\n## Validation samples\n\nPrediction are made by FlowNetS.\n\nExact code for Optical Flow -> Color map can be found [here](main.py#L321)\n\n| Input | prediction | GroundTruth |\n|-------|------------|-------------|\n| \u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FClementPinard_FlowNetPytorch_readme_8f304ffed512.gif' width=256> | \u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FClementPinard_FlowNetPytorch_readme_5d1de1eff3bd.png' width=256> | \u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FClementPinard_FlowNetPytorch_readme_cb18c3509fc7.png' width=256> |\n| \u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FClementPinard_FlowNetPytorch_readme_5f0d3a0b9f31.gif' width=256> | \u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FClementPinard_FlowNetPytorch_readme_fd944d5bdfbb.png' width=256> | \u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FClementPinard_FlowNetPytorch_readme_d564915ff493.png' width=256> |\n| \u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FClementPinard_FlowNetPytorch_readme_b1a1acda6dc6.gif' width=256> | \u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FClementPinard_FlowNetPytorch_readme_c36e13b30918.png' width=256> | \u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FClementPinard_FlowNetPytorch_readme_a17cf178d769.png' width=256> |\n\n## Running inference on a set of image pairs\n\nIf you need to run the network on your images, you can download a pretrained network [here](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1dTpSyc7rIYYG19p1uiDfilcsmSPNy-_3?usp=sharingM) and launch the inference script on your folder of image pairs.\n\nYour folder needs to have all the images pairs in the same location, with the name pattern\n```\n{image_name}1.{ext}\n{image_name}2.{ext}\n```\n\n```bash\npython3 run_inference.py \u002Fpath\u002Fto\u002Fimages\u002Ffolder \u002Fpath\u002Fto\u002Fpretrained\n```\n\nAs for the `main.py` script, a help menu is available for additional options.\n\n## Note on transform functions\n\nIn order to have coherent transformations between inputs and target, we must define new transformations that take both input and target, as a new random variable is defined each time a random transformation is called.\n\n### Flow Transformations\n\nTo allow data augmentation, we have considered rotation and translations for inputs and their result on target flow Map.\nHere is a set of things to take care of in order to achieve a proper data augmentation\n\n#### The Flow Map is directly linked to img1\nIf you apply a transformation on img1, you have to apply the very same to Flow Map, to get coherent origin points for flow.\n\n#### Translation between img1 and img2\nGiven a translation `(tx,ty)` applied on img2, we will have\n```\nflow[:,:,0] += tx\nflow[:,:,1] += ty\n```\n\n#### Scale\nA scale applied on both img1 and img2 with a zoom parameters `alpha` multiplies the flow by the same amount\n```\nflow *= alpha\n```\n\n#### Rotation applied on both images\nA rotation applied on both images by an angle `theta` also rotates flow vectors (`flow[i,j]`) by the same angle\n```\n\\for_all i,j flow[i,j] = rotate(flow[i,j], theta)\n\nrotate: x,y,theta ->  (x*cos(theta)-x*sin(theta), y*cos(theta), x*sin(theta))\n```\n\n#### Rotation applied on img2\nLet us consider a rotation by the angle `theta` from the image center.\n\nWe must tranform each flow vector based on the coordinates where it lands. On each coordinate `(i, j)`, we have:\n```\nflow[i, j, 0] += (cos(theta) - 1) * (j  - w\u002F2 + flow[i, j, 0]) +    sin(theta)    * (i - h\u002F2 + flow[i, j, 1])\nflow[i, j, 1] +=   -sin(theta)    * (j  - w\u002F2 + flow[i, j, 0]) + (cos(theta) - 1) * (i - h\u002F2 + flow[i, j, 1])\n```\n","# FlowNetPytorch\n由Dosovitskiy等人提出的FlowNet的PyTorch实现。\n\n本仓库是Alexey Dosovitskiy等人在PyTorch中对[FlowNet](http:\u002F\u002Flmb.informatik.uni-freiburg.de\u002FPublications\u002F2015\u002FDFIB15\u002F)的实现。请参阅Torch实现[此处](https:\u002F\u002Fgithub.com\u002FClementPinard\u002FFlowNetTorch)。\n\n此代码主要受官方[imagenet示例](https:\u002F\u002Fgithub.com\u002Fpytorch\u002Fexamples\u002Ftree\u002Fmaster\u002Fimagenet)的启发。目前尚未针对多GPU进行测试，但应该能够像原始代码一样正常工作。\n\n代码提供了一个使用[飞椅数据集](http:\u002F\u002Flmb.informatik.uni-freiburg.de\u002Fresources\u002Fdatasets\u002FFlyingChairs.en.html)并结合数据增强的训练示例。未来可能会添加针对[场景流数据集](http:\u002F\u002Flmb.informatik.uni-freiburg.de\u002Fresources\u002Fdatasets\u002FSceneFlowDatasets.en.html)的实现。\n\n当前提供了两种神经网络模型及其批归一化变体（实验性）：\n\n- **FlowNetS**\n- **FlowNetSBN**\n- **FlowNetC**\n- **FlowNetCBN**\n\n## 预训练模型\n感谢[Kaixhin](https:\u002F\u002Fgithub.com\u002FKaixhin)，您可以在[weights](\u002Fweights)文件夹中下载FlowNetS的预训练版本（来自Caffe，而非PyTorch）。该文件夹还包含从头开始训练的网络。\n\n### 关于加载网络的说明\n直接将下载的网络文件输入脚本即可，无需解压，即使您的桌面环境提示需要解压也无需操作。\n\n### 关于Caffe中的网络\n这些网络期望输入为BGR格式（而PyTorch中为RGB格式）。不过，BGR顺序并不十分关键。\n\n## 前置条件\n以下模块可以通过`pip`安装：\n\n```\npytorch >= 1.2\ntensorboard-pytorch\ntensorboardX >= 1.4\nspatial-correlation-sampler>=0.2.1\nimageio\nargparse\npath.py\n```\n\n或者\n\n```bash\npip install -r requirements.txt\n```\n\n## 在飞椅数据集上训练\n\n首先，您需要下载[飞椅数据集](http:\u002F\u002Flmb.informatik.uni-freiburg.de\u002Fresources\u002Fdatasets\u002FFlyingChairs.en.html)。该数据集约64GB，建议将其放置在SSD硬盘上。\n\n`main.py`中提供的默认超参数与Caffe训练脚本中的设置相同。\n\n* FlowNetS的使用示例：\n\n```bash\npython main.py \u002Fpath\u002Fto\u002Fflying_chairs\u002F -b8 -j8 -a flownets\n```\n\n我们建议在使用数据增强时将线程数`j`设置得较高，以避免数据加载拖慢训练速度。\n\n如需进一步帮助，可以输入：\n\n```bash\npython main.py -h\n```\n\n## 可视化训练过程\n使用[Tensorboard-pytorch](https:\u002F\u002Fgithub.com\u002Flanpa\u002Ftensorboard-pytorch)进行日志记录。要可视化结果，只需输入：\n\n```bash\ntensorboard --logdir=\u002Fpath\u002Fto\u002Fcheckpoints\n```\n\n## 训练结果\n\n模型可在[weights](\u002Fweights)文件夹中下载。\n\n除非另有说明，模型均采用默认选项进行训练。未使用颜色扭曲技术。\n\n| 架构        | 学习率   | 批量大小 | epoch数量 | 文件名                     | 验证EPE |\n| ----------- | -------- | -------- | --------- | -------------------------- | ------- |\n| FlowNetS    | 1e-4     | 8        | 2700      | flownets_EPE1.951.pth.tar  | 1.951   |\n| FlowNetS BN | 1e-3     | 32       | 695       | flownets_bn_EPE2.459.pth.tar | 2.459   |\n| FlowNetC    | 1e-4     | 8        | 2700      | flownetc_EPE1.766.pth.tar  | 1.766   |\n\n*注*：FlowNetS BN训练时间更长且效果较差，强烈建议不要用于飞椅数据集。\n\n## 验证样本\n\n预测由FlowNetS完成。\n\n光流到颜色图的完整代码可在[此处](main.py#L321)找到。\n\n| 输入         | 预测          | 真实值        |\n| ------------ | ------------- | ------------- |\n| \u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FClementPinard_FlowNetPytorch_readme_8f304ffed512.gif' width=256> | \u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FClementPinard_FlowNetPytorch_readme_5d1de1eff3bd.png' width=256> | \u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FClementPinard_FlowNetPytorch_readme_cb18c3509fc7.png' width=256> |\n| \u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FClementPinard_FlowNetPytorch_readme_5f0d3a0b9f31.gif' width=256> | \u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FClementPinard_FlowNetPytorch_readme_fd944d5bdfbb.png' width=256> | \u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FClementPinard_FlowNetPytorch_readme_d564915ff493.png' width=256> |\n| \u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FClementPinard_FlowNetPytorch_readme_b1a1acda6dc6.gif' width=256> | \u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FClementPinard_FlowNetPytorch_readme_c36e13b30918.png' width=256> | \u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FClementPinard_FlowNetPytorch_readme_a17cf178d769.png' width=256> |\n\n## 对一组图像对进行推理\n\n如果您需要在自己的图像上运行该网络，可以从[这里](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1dTpSyc7rIYYG19p1uiDfilcsmSPNy-_3?usp=sharingM)下载预训练网络，并在您的图像对文件夹上运行推理脚本。\n\n您的文件夹需要将所有图像对放在同一位置，文件命名模式为：\n```\n{image_name}1.{ext}\n{image_name}2.{ext}\n```\n\n```bash\npython3 run_inference.py \u002Fpath\u002Fto\u002Fimages\u002Ffolder \u002Fpath\u002Fto\u002Fpretrained\n```\n\n与`main.py`脚本类似，推理脚本也提供帮助菜单以供选择其他选项。\n\n## 关于变换函数的说明\n\n为了使输入和目标之间的变换保持一致，我们必须定义同时作用于输入和目标的新变换，因为每次调用随机变换时都会生成一个新的随机变量。\n\n### 光流变换\n\n为了实现数据增强，我们考虑了输入的旋转和平移，以及它们对目标光流图的影响。以下是实现正确数据增强需要注意的几点：\n\n#### 光流图直接与img1相关联\n如果对img1应用变换，必须对光流图应用完全相同的变换，以确保光流的起点一致。\n\n#### img1和img2之间的平移\n假设对img2施加一个平移`(tx,ty)`，则有：\n```\nflow[:,:,0] += tx\nflow[:,:,1] += ty\n```\n\n#### 缩放\n对img1和img2同时应用缩放，缩放参数为`alpha`，光流也会相应地放大或缩小：\n```\nflow *= alpha\n```\n\n#### 对两幅图像同时进行旋转\n对两幅图像同时按角度`theta`旋转时，光流向量(`flow[i,j]`)也会旋转相同的角度：\n```\n\\for_all i,j flow[i,j] = rotate(flow[i,j], theta)\n\nrotate: x,y,theta ->  (x*cos(theta)-x*sin(theta), y*cos(theta), x*sin(theta))\n```\n\n#### 仅对img2进行旋转\n假设以图像中心为基准旋转角度`theta`。\n\n我们必须根据每个光流向量所处的位置来调整其方向。对于每个坐标`(i, j)`，有：\n```\nflow[i, j, 0] += (cos(theta) - 1) * (j  - w\u002F2 + flow[i, j, 0]) +    sin(theta)    * (i - h\u002F2 + flow[i, j, 1])\nflow[i, j, 1] +=   -sin(theta)    * (j  - w\u002F2 + flow[i, j, 0]) + (cos(theta) - 1) * (i - h\u002F2 + flow[i, j, 1])\n```","# FlowNetPytorch 快速上手指南\n\nFlowNetPytorch 是 Dosovitskiy 等人提出的 FlowNet 光流估计模型的 PyTorch 实现。本指南将帮助你快速配置环境并运行基础训练与推理。\n\n## 环境准备\n\n### 系统要求\n- **Python**: 建议 Python 3.6+\n- **GPU**: 推荐使用 NVIDIA GPU（虽未正式测试多卡，但单卡运行稳定）\n- **存储**: 若需训练，建议准备 SSD 硬盘（Flying Chairs 数据集约 64GB）\n\n### 前置依赖\n请确保已安装以下核心库：\n- `pytorch >= 1.2`\n- `tensorboardX >= 1.4`\n- `spatial-correlation-sampler >= 0.2.1`\n- `imageio`, `argparse`, `path.py`\n\n> **国内加速建议**：安装 PyTorch 时推荐使用清华或中科大镜像源，例如：\n> `pip install torch torchvision -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple`\n\n## 安装步骤\n\n1. **克隆仓库**\n   ```bash\n   git clone https:\u002F\u002Fgithub.com\u002FClementPinard\u002FFlowNetPytorch.git\n   cd FlowNetPytorch\n   ```\n\n2. **安装依赖包**\n   可以直接使用项目提供的 requirements 文件进行安装：\n   ```bash\n   pip install -r requirements.txt\n   ```\n   \n   *注：若 `spatial-correlation-sampler` 安装失败，可能需要先安装 CUDA  toolkit 对应的开发包。*\n\n3. **下载预训练模型（可选）**\n   如果仅需推理，可从 [weights](\u002Fweights) 文件夹或作者提供的链接下载预训练权重。无需解压直接放入对应目录即可。\n\n## 基本使用\n\n### 1. 数据准备\n下载 [Flying Chairs 数据集](http:\u002F\u002Flmb.informatik.uni-freiburg.de\u002Fresources\u002Fdatasets\u002FFlyingChairs.en.html) 并解压。\n> **提示**：国内用户若下载缓慢，可尝试寻找国内镜像站点的资源。\n\n### 2. 开始训练\n使用默认超参数训练 **FlowNetS** 模型：\n\n```bash\npython main.py \u002Fpath\u002Fto\u002Fflying_chairs\u002F -b8 -j8 -a flownets\n```\n\n- `\u002Fpath\u002Fto\u002Fflying_chairs\u002F`: 替换为你的数据集实际路径。\n- `-b8`: 批大小 (Batch Size) 设为 8。\n- `-j8`: 数据加载线程数设为 8（使用数据增强时建议调高此值以避免 IO 瓶颈）。\n- `-a flownets`: 指定架构为 FlowNetS（可选：`flownets_bn`, `flownetc`, `flownetc_bn`）。\n\n查看完整帮助信息：\n```bash\npython main.py -h\n```\n\n### 3. 可视化训练过程\n项目使用 TensorBoard 记录日志。启动服务查看训练曲线：\n\n```bash\ntensorboard --logdir=\u002Fpath\u002Fto\u002Fcheckpoints\n```\n然后在浏览器访问显示的地址（通常为 `http:\u002F\u002Flocalhost:6006`）。\n\n### 4. 执行推理 (Inference)\n对自定义图像对进行光流预测。\n\n**图片命名规范**：\n将待处理的图片对放在同一文件夹下，命名格式必须为：\n```text\n{image_name}1.{ext}\n{image_name}2.{ext}\n```\n例如：`frame001_1.png` 和 `frame001_2.png`。\n\n**运行命令**：\n```bash\npython3 run_inference.py \u002Fpath\u002Fto\u002Fimages\u002Ffolder \u002Fpath\u002Fto\u002Fpretrained\n```\n- `\u002Fpath\u002Fto\u002Fimages\u002Ffolder`: 包含图片对的文件夹路径。\n- `\u002Fpath\u002Fto\u002Fpretrained`: 预训练模型文件路径（如 `weights\u002Fflownets_EPE1.951.pth.tar`）。\n\n> **注意**：若使用从 Caffe 转换的预训练模型，输入图像默认为 BGR 格式，但通常对最终结果影响不大。","某自动驾驶初创公司的感知算法团队正在开发一套基于单目摄像头的车辆运动估计系统，需要实时计算连续帧之间的像素级光流以判断周围物体的移动速度与方向。\n\n### 没有 FlowNetPytorch 时\n- 团队不得不依赖传统的稠密光流算法（如 Farnebäck），在高分辨率图像上推理速度极慢，无法满足车载嵌入式设备的实时性要求。\n- 若尝试自行复现经典的 FlowNet 深度学习模型，需从零搭建复杂的网络结构（如 FlowNetS 或 FlowNetC），极易因细节偏差导致收敛困难。\n- 缺乏高质量的预训练权重和标准化的数据增强流程，导致模型在“飞椅”等标准数据集上的验证误差（EPE）居高不下，调优周期长达数周。\n- 训练过程缺乏可视化的监控手段，难以直观分析损失曲线与预测效果，排查问题如同“盲人摸象”。\n\n### 使用 FlowNetPytorch 后\n- 直接调用 FlowNetPytorch 中成熟的 FlowNetS 架构，利用其高效的 PyTorch 实现，将推理延迟降低至毫秒级，成功部署于实时系统中。\n- 复用官方提供的经过 Caffe 迁移或直接训练的预训练模型（如 `flownets_EPE1.951.pth.tar`），无需从头训练即可在特定场景下获得接近 SOTA 的精度。\n- 内置针对 Flying Chairs 数据集的完整训练脚本与数据增强策略，团队仅需调整少量超参数即可完成微调，将研发周期从数周缩短至数天。\n- 集成 TensorBoard 可视化支持，开发人员可实时监控训练过程中的光流预测热力图与误差指标，快速定位并解决过拟合或欠拟合问题。\n\nFlowNetPytorch 通过提供开箱即用的高性能光流模型与完整训练闭环，帮助团队跨越了从理论复现到工程落地的巨大鸿沟。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FClementPinard_FlowNetPytorch_4af4afb9.png","ClementPinard","Clément Pinard","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FClementPinard_bf8934e5.jpg","PhD ENSTA Paris, Applied Scientist @ Onfido\r\n\r\nFormerly XXII - Contentsquare","Onfido","Paris","clempinard@gmail.com",null,"https:\u002F\u002Fclementpinard.fr","https:\u002F\u002Fgithub.com\u002FClementPinard",[85],{"name":86,"color":87,"percentage":88},"Python","#3572A5",100,898,203,"2026-04-15T15:02:25","MIT","未说明","未明确必需，但代码提及多 GPU 支持未经过测试；训练大数据集（如 Flying Chairs）建议使用高性能 GPU；CUDA 版本需与安装的 PyTorch 版本匹配","未说明（建议配备充足内存以处理 ~64GB 数据集及数据增强线程）",{"notes":97,"python":98,"dependencies":99},"1. 训练数据集（Flying Chairs）约 64GB，强烈建议存放在 SSD 硬盘上以提升读取速度。\n2. 若使用数据增强（DataAugmentation），建议将数据加载线程数（-j 参数）设高，以避免数据加载成为训练瓶颈。\n3. 提供的预训练模型部分源自 Caffe，输入图像顺序预期为 BGR（而非 PyTorch 常规的 RGB），但在实际应用中影响可能不大。\n4. FlowNetS BN 变体在 Flying Chairs 数据集上训练时间更长且效果较差，不建议在该数据集上使用。","未说明（需兼容 PyTorch >= 1.2 的版本）",[100,101,102,103,104,105,106],"pytorch>=1.2","tensorboard-pytorch","tensorboardX>=1.4","spatial-correlation-sampler>=0.2.1","imageio","argparse","path.py",[14,13],[109,110,111],"pytorch","flownet","flow","2026-03-27T02:49:30.150509","2026-04-18T14:13:05.420458",[115,120,125,130,135,140,144,149],{"id":116,"question_zh":117,"answer_zh":118,"source_url":119},40200,"损失函数应该对误差进行求和（sum）还是取平均（mean）？这对训练结果有什么影响？","原始 FlowNetS 的实现倾向于对图像上的 L2 损失进行求和而不是取平均。虽然两者表现相似，但求和方式在某些修改下能取得更好的结果（例如在 FlyingChairs 数据集上 EPE 降至 1.951）。需要注意的是，如果不除以 batch size，不同 batch size 设置下的学习率效果会有所不同。代码实现中可以通过 `mean` 参数控制：`return EPE_map.mean()` 或 `return EPE_map.sum()`。","https:\u002F\u002Fgithub.com\u002FClementPinard\u002FFlowNetPytorch\u002Fissues\u002F17",{"id":121,"question_zh":122,"answer_zh":123,"source_url":124},40201,"为什么光流值（flow values）非常小？如何利用光流从图 2 重建图 1？","光流值通常被除以了 20，这是沿袭自原始作者代码的遗留设定。利用光流重建图像的正确理解是：对于图 1 中的每个像素 (x, y)，其对应的光流值为 (u, v)，则应从图 2 的坐标 (x+u, y+v) 处采样颜色填充到图 1 的 (x, y) 位置（即逆战争 inverse warp）。在使用 `grid_sample` 前，需要：1. 加上单位矩阵构建网格；2. 将坐标归一化，使 (0,0) 变为 (-1,-1)，(H-1, W-1) 变为 (1,1)。","https:\u002F\u002Fgithub.com\u002FClementPinard\u002FFlowNetPytorch\u002Fissues\u002F25",{"id":126,"question_zh":127,"answer_zh":128,"source_url":129},40202,"如何正确读取和处理 KITTI 数据集中的稀疏光流真值（Ground Truth）？","KITTI 的光流真值是稀疏的，读取时需特殊处理：使用 cv2 读取 16 位 PNG 图片并转换通道，通过第三通道判断有效性（mask），有效区域需减去 32768 后除以 64.0。无效流动的值应设为 0，而实际为 0 的有效流动应设为极小值（如 1e-10）以避免混淆。训练时需将 `sparse` 标志传递给损失函数（如 multiscaleEPE），以便只计算有效像素的误差。","https:\u002F\u002Fgithub.com\u002FClementPinard\u002FFlowNetPytorch\u002Fissues\u002F23",{"id":131,"question_zh":132,"answer_zh":133,"source_url":134},40203,"输入图像的宽和高不是 64 的倍数时，代码能正常处理吗？","是的，现在的 FlowNet 代码已经更新，可以接受宽高不是 64 倍数的图像进行训练和推理，无需强制裁剪或填充。","https:\u002F\u002Fgithub.com\u002FClementPinard\u002FFlowNetPytorch\u002Fissues\u002F15",{"id":136,"question_zh":137,"answer_zh":138,"source_url":139},40204,"训练过程中 Loss 下降过快并变成 NaN，可能是什么原因？","这通常意味着实现中存在 Bug 或配置不一致。请检查以下几点：1. 是否应用了相同的数据增强策略？2. 是否将光流值除以了 20（这是必要的归一化步骤）？如果使用的是非 PyTorch 框架复现，建议与官方 PyTorch 版本进行对比测试，确保数据处理和损失计算逻辑完全一致。","https:\u002F\u002Fgithub.com\u002FClementPinard\u002FFlowNetPytorch\u002Fissues\u002F38",{"id":141,"question_zh":142,"answer_zh":143,"source_url":134},40205,"训练时 GPU 利用率波动大（0%-100%），数据加载成为瓶颈，如何优化？","数据增强主要由 CPU 完成，因此需要设置足够多的线程数（workers）以跟上 GPU 的速度。建议：1. 将数据存储在 SSD 上，避免读取 .flo 文件过慢；2. 增加 `-j` 参数的值，例如尝试 `-j32`；3. 对于单张 980Ti GPU，batch size 设为 16 且 jobs 设为 16 通常足够。如果 CPU 性能强劲，可以尝试更高的 job 数量。",{"id":145,"question_zh":146,"answer_zh":147,"source_url":148},40206,"为什么视差（disparity）或光流（flow）要除以 20 进行归一化？","将视差或光流除以 20 是为了数值稳定性，这一做法直接沿袭自原始作者的代码实现。在进行训练和推理时，必须保持这一归一化步骤，否则会导致预测值尺度错误或训练发散。","https:\u002F\u002Fgithub.com\u002FClementPinard\u002FFlowNetPytorch\u002Fissues\u002F18",{"id":150,"question_zh":151,"answer_zh":152,"source_url":148},40207,"如何提高相关层（Correlation Layer）的计算速度？","如果需要更快的计算速度，建议使用 NVIDIA 提供的 CUDA 实现的相关性模块。可以参考该项目：https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fflownet2-pytorch\u002Ftree\u002Fmaster\u002Fnetworks\u002Fcorrelation_package，它比纯 PyTorch 实现效率更高。",[]]