[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-hx173149--C3D-tensorflow":3,"tool-hx173149--C3D-tensorflow":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 真正成长为懂上",160411,2,"2026-04-18T23:33:24",[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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",109154,"2026-04-18T11:18:24",[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},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",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"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":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":79,"owner_website":80,"owner_url":81,"languages":82,"stars":91,"forks":92,"last_commit_at":93,"license":94,"difficulty_score":95,"env_os":96,"env_gpu":97,"env_ram":96,"env_deps":98,"category_tags":104,"github_topics":79,"view_count":32,"oss_zip_url":79,"oss_zip_packed_at":79,"status":17,"created_at":106,"updated_at":107,"faqs":108,"releases":144},9422,"hx173149\u002FC3D-tensorflow","C3D-tensorflow","C3D is a modified version of BVLC tensorflow to support 3D ConvNets.","C3D-tensorflow 是一个基于 TensorFlow 框架实现的开源项目，旨在复现经典的 C3D（3D 卷积神经网络）模型。它主要解决了视频动作识别领域的技术落地问题，让开发者能够直接在 TensorFlow 环境中利用成熟的 C3D 架构进行视频特征提取与分类训练，而无需依赖原始的 Caffe 框架。\n\n该工具特别适合人工智能研究人员、深度学习工程师以及对视频分析感兴趣的技术开发者使用。其核心亮点在于支持直接加载由原版 C3D-Caffe 转换而来的预训练模型，大幅降低了迁移门槛。项目内置了针对 UCF101 数据集的完整处理脚本，涵盖从视频解码、帧提取到训练列表生成的全流程，并提供了训练、验证及随机片段测试的代码示例。\n\n值得注意的是，为了兼容不同来源的预训练权重，C3D-tensorflow 在数据维度变换上做了细致处理，用户可根据加载的模型类型灵活调整转置操作。虽然在 UCF101 数据集上的视频级准确率与原 caffe 版本存在约 5% 的细微差距，但它依然为希望在 TensorFlow 生态中探索 3D 卷积网络的用户提供了一个高效、实用的基准实现方案。","# C3D-tensorflow\n\nThis is a repository trying to implement [C3D-caffe][5] on tensorflow,useing models directly converted from original C3D-caffe.    \nBe aware that there are about 5% video-level accuracy margin on UCF101 split1  between our implement in tensorflow and  the original C3D-caffe.  \n\n## Requirements:\n\n1. Have installed the tensorflow >= 1.2 version\n2. You must have installed the following two python libs:\na) [tensorflow][1]\nb) [Pillow][2]\n3. You must have downloaded the [UCF101][3] (Action Recognition Data Set)\n4. Each single avi file is decoded with 5FPS (it's depend your decision) in a single directory.\n    - you can use the `.\u002Flist\u002Fconvert_video_to_images.sh` script to decode the ucf101 video files\n    - run `.\u002Flist\u002Fconvert_video_to_images.sh ...\u002FUCF101 5`\n5. Generate {train,test}.list files in `list` directory. Each line corresponds to \"image directory\" and a class (zero-based). For example:\n    - you can use the `.\u002Flist\u002Fconvert_images_to_list.sh` script to generate the {train,test}.list for the dataset\n    - run `.\u002Flist\u002Fconvert_images_to_list.sh ...\u002Fdataset_images 4`, this will generate `test.list` and `train.list` files by a factor 4 inside the root folder\n\n```\ndatabase\u002Fucf101\u002Ftrain\u002FApplyEyeMakeup\u002Fv_ApplyEyeMakeup_g01_c01 0\ndatabase\u002Fucf101\u002Ftrain\u002FApplyEyeMakeup\u002Fv_ApplyEyeMakeup_g01_c02 0\ndatabase\u002Fucf101\u002Ftrain\u002FApplyEyeMakeup\u002Fv_ApplyEyeMakeup_g01_c03 0\ndatabase\u002Fucf101\u002Ftrain\u002FApplyLipstick\u002Fv_ApplyLipstick_g01_c01 1\ndatabase\u002Fucf101\u002Ftrain\u002FApplyLipstick\u002Fv_ApplyLipstick_g01_c02 1\ndatabase\u002Fucf101\u002Ftrain\u002FApplyLipstick\u002Fv_ApplyLipstick_g01_c03 1\ndatabase\u002Fucf101\u002Ftrain\u002FArchery\u002Fv_Archery_g01_c01 2\ndatabase\u002Fucf101\u002Ftrain\u002FArchery\u002Fv_Archery_g01_c02 2\ndatabase\u002Fucf101\u002Ftrain\u002FArchery\u002Fv_Archery_g01_c03 2\ndatabase\u002Fucf101\u002Ftrain\u002FArchery\u002Fv_Archery_g01_c04 2\ndatabase\u002Fucf101\u002Ftrain\u002FBabyCrawling\u002Fv_BabyCrawling_g01_c01 3\ndatabase\u002Fucf101\u002Ftrain\u002FBabyCrawling\u002Fv_BabyCrawling_g01_c02 3\ndatabase\u002Fucf101\u002Ftrain\u002FBabyCrawling\u002Fv_BabyCrawling_g01_c03 3\ndatabase\u002Fucf101\u002Ftrain\u002FBabyCrawling\u002Fv_BabyCrawling_g01_c04 3\ndatabase\u002Fucf101\u002Ftrain\u002FBalanceBeam\u002Fv_BalanceBeam_g01_c01 4\ndatabase\u002Fucf101\u002Ftrain\u002FBalanceBeam\u002Fv_BalanceBeam_g01_c02 4\ndatabase\u002Fucf101\u002Ftrain\u002FBalanceBeam\u002Fv_BalanceBeam_g01_c03 4\ndatabase\u002Fucf101\u002Ftrain\u002FBalanceBeam\u002Fv_BalanceBeam_g01_c04 4\n...\n```\n\n## Usage\n\n1. `python train_c3d_ucf101.py` will train C3D model. The trained model will saved in `models` directory.\n2. `python predict_c3d_ucf101.py` will test C3D model on a validation data set.\n3.  `cd .\u002FC3D-tensorflow-1.0 &&python Random_clip_valid.py` will get the random-clip accuracy on UCF101 test set with provided `sports1m_finetuning_ucf101.model`.\n4. `C3D-tensorflow-1.0\u002FRandom_clip_valid.py` code is compatible with tensorflow 1.0+ , with a little bit different with the old repository\n5. IMPORTANT NOTE: when you load the sports1m_finetuning_ucf101.model,you should use the tranpose operation like:` pool5 = tf.transpose(pool5, perm=[0,1,4,2,3])`,or in `Random_clip_valid.py` looks like:`[\"transpose\", [0, 1, 4, 2, 3]]`, \nbut if you load `conv3d_deepnetA_sport1m_iter_1900000_TF.model` or `c3d_ucf101_finetune_whole_iter_20000_TF.model`,you don't need tranpose operation,just comment that line code.  \n\n##  Experiment result:\n- Note:              \n    1.All report results are done specific on UCF101 split1 (train videos:9537,test videos:3783).   \n    2.ALL the results are video-level accuracy,unless stated otherwise.   \n    3.We follow the same way to extract clips from video as the C3D paper saying:'To extract C3D feature, a video is split into 16 frame long clips with a 8-frame overlap between two consecutive clips.These clips are passed to the C3D network to extract fc6 activations. These clip fc6 activations are averaged to form a 4096-dim video descriptor which is then followed by an L2-normalization'   \n\n- C3D as feature extractor:\n\n|   platform  | feature extractor model | fc6+SVM |  fc6+SVM+L2 norm   | \n|:-----------:|:---------------:|:----------:|:----------------:|\n|   caffe     | conv3d_deepnetA_sport1m_iter_1900000.caffemodel|   81.99%    |       83.39%      |\n| tensorflow  | conv3d_deepnetA_sport1m_iter_1900000_TF.model  |   79.38%    |       81.44%      |\n| tensorflow  | c3d_ucf101_finetune_whole_iter_20000_TF.model  |   79.67%    |       81.33%      |\n| tensorflow  | sports1m_finetuning_ucf101.model  |    82.73%   |       85.35%      |\n\n- finetune C3D network on UCF101 split1 with  pre-trained model:\n\n|   platform  | pre-trained model |    train-strategy   |    video-accuracy    |     clip-accuracy     |    random-clip     | \n|:-----------:|:---------------:|:----------------:|:----------------:|:----------------:|:----------------:|\n|   caffe     | c3d_ucf101_finetune_whole_iter_20000.caffemodel|    directly test   |    -   |       79.87%     |       -     |\n| tensorflow  | c3d_ucf101_finetune_whole_iter_20000_TF.model  |    directly test  |    78.35%   |       72.77%    |       57.15%    |\n| tensorflow-A  | conv3d_deepnetA_sport1m_iter_1900000_TF.caffemodel  |    whole finetuning   |    76.0%   |       71%    |       69.8%    |\n| tensorflow-B  | sports1m_finetuning_ucf101.model  |    freeze conv,only finetune fc layers   |    79.93%  |       74.65%   |       76.6%     |\n\n\n- Note:        \n    1.the `tensorflow-A` model corresponding to the original C3D model pre-trained on UCF101 provided by @ [hx173149][7] .       \n    2.the `tensorflow-B` model is just freeze the conv layers in `tensorflow-A` and finetuning  four more epochs on fc layers with `learning rate=1e-3`.   \n    3.the `random-clip` column means random choose one clip from each video in UCF101 test split 1 ,so the result are not so robust.But according to the Law of Large Numbers,we may assume this items is positive correlated to your video-level accuracy.   \n    4.it's obvious that it if you do more finetuning work based on `c3d_ucf101_finetune_whole_iter_20000_TF.model`,and you may achieve better performance,i didn't do it because of time limit.  \n    5.with no doubt that you can get better result by appropriately finetuning the network   \n\n## Trained models:\n|   Model             |   Description     |   Clouds  |  Download   |\n| ------------------- | ----------------- |  -------- | ------------|\n| C3D sports1M  TF      |C3D sports1M converted from caffe C3D|  Dropbox  |[C3D sports1M ](https:\u002F\u002Fwww.dropbox.com\u002Fs\u002Fzvco2rfufryivqb\u002Fconv3d_deepnetA_sport1m_iter_1900000_TF.model?dl=0)       |\n| C3D UCF101 TF  |C3D UCF101 trained model converted from caffe C3D|  Dropbox  |[C3D UCF101 ](https:\u002F\u002Fwww.dropbox.com\u002Fs\u002Fu5fxqzks2pkaolx\u002Fc3d_ucf101_finetune_whole_iter_20000_TF.model?dl=0 )       |\n| C3D UCF101  TF train   |finetuning on UCF101 split1 use C3D sports1M model by  @ [hx173149][7]|  Dropbox  |[C3D UCF101 split1](https:\u002F\u002Fwww.dropbox.com\u002Fsh\u002F8wcjrcadx4r31ux\u002FAAAkz3dQ706pPO8ZavrztRCca?dl=0)       |\n| split1 meanfile  TF   | UCF101 split1 meanfile converted from caffe C3D  |  Dropbox  |[UCF101 split1 meanfile](https:\u002F\u002Fwww.dropbox.com\u002Fsh\u002F8wcjrcadx4r31ux\u002FAAAkz3dQ706pPO8ZavrztRCca?dl=0)      |\n| everything above    |  all four files above  |  baiduyun |[baiduyun](http:\u002F\u002Fpan.baidu.com\u002Fs\u002F1nuJe8vn)      |\n\n\n## Other verions\n- [C3D-estimator-sagemaker](https:\u002F\u002Fgithub.com\u002Ffrankgu\u002FC3D-estimator-sagemaker): Use sagemaker to train C3D model.\n\n## References:\n\n- Thanks the author [Du tran][4]'s code: [C3D-caffe][5]\n- [C3D: Generic Features for Video Analysis][6]\n\n\n[1]: https:\u002F\u002Fwww.tensorflow.org\u002F\n[2]: http:\u002F\u002Fpillow.readthedocs.io\u002Fen\u002F3.1.x\u002Freference\u002FImage.html\n[3]: http:\u002F\u002Fcrcv.ucf.edu\u002Fdata\u002FUCF101.php\n[4]: https:\u002F\u002Fgithub.com\u002Fdutran\n[5]: https:\u002F\u002Fgithub.com\u002Ffacebook\u002FC3D\n[6]: http:\u002F\u002Fvlg.cs.dartmouth.edu\u002Fc3d\u002F\n[7]:https:\u002F\u002Fgithub.com\u002Fhx173149\u002FC3D-tensorflow\n","# C3D-tensorflow\n\n这是一个尝试在 TensorFlow 上实现 [C3D-caffe][5] 的仓库，直接使用从原始 C3D-caffe 转换而来的模型。请注意，我们在 TensorFlow 中的实现与原始 C3D-caffe 在 UCF101 split1 上的视频级别准确率相差约 5%。\n\n## 需求：\n\n1. 已安装 TensorFlow >= 1.2 版本\n2. 必须安装以下两个 Python 库：\n   a) [tensorflow][1]\n   b) [Pillow][2]\n3. 必须下载 [UCF101][3]（动作识别数据集）\n4. 每个单独的 AVI 文件以 5 FPS 的帧率解码（具体取决于您的选择），并存储在一个目录中。\n   - 您可以使用 `.\u002Flist\u002Fconvert_video_to_images.sh` 脚本来解码 UCF101 视频文件\n   - 运行 `.\u002Flist\u002Fconvert_video_to_images.sh ...\u002FUCF101 5`\n5. 在 `list` 目录下生成 `{train,test}.list` 文件。每行对应一个“图像目录”和一个类别（从 0 开始）。例如：\n   - 您可以使用 `.\u002Flist\u002Fconvert_images_to_list.sh` 脚本来为数据集生成 `{train,test}.list`\n   - 运行 `.\u002Flist\u002Fconvert_images_to_list.sh ...\u002Fdataset_images 4`，这将在根文件夹内按比例 4 生成 `test.list` 和 `train.list` 文件。\n\n```\ndatabase\u002Fucf101\u002Ftrain\u002FApplyEyeMakeup\u002Fv_ApplyEyeMakeup_g01_c01 0\ndatabase\u002Fucf101\u002Ftrain\u002FApplyEyeMakeup\u002Fv_ApplyEyeMakeup_g01_c02 0\ndatabase\u002Fucf101\u002Ftrain\u002FApplyEyeMakeup\u002Fv_ApplyEyeMakeup_g01_c03 0\ndatabase\u002Fucf101\u002Ftrain\u002FApplyLipstick\u002Fv_ApplyLipstick_g01_c01 1\ndatabase\u002Fucf101\u002Ftrain\u002FApplyLipstick\u002Fv_ApplyLipstick_g01_c02 1\ndatabase\u002Fucf101\u002Ftrain\u002FApplyLipstick\u002Fv_ApplyLipstick_g01_c03 1\ndatabase\u002Fucf101\u002Ftrain\u002FArchery\u002Fv_Archery_g01_c01 2\ndatabase\u002Fucf101\u002Ftrain\u002FArchery\u002Fv_Archery_g01_c02 2\ndatabase\u002Fucf101\u002Ftrain\u002FArchery\u002Fv_Archery_g01_c03 2\ndatabase\u002Fucf101\u002Ftrain\u002FArchery\u002Fv_Archery_g01_c04 2\ndatabase\u002Fucf101\u002Ftrain\u002FBabyCrawling\u002Fv_BabyCrawling_g01_c01 3\ndatabase\u002Fucf101\u002Ftrain\u002FBabyCrawling\u002Fv_BabyCrawling_g01_c02 3\ndatabase\u002Fucf101\u002Ftrain\u002FBabyCrawling\u002Fv_BabyCrawling_g01_c03 3\ndatabase\u002Fucf101\u002Ftrain\u002FBabyCrawling\u002Fv_BabyCrawling_g01_c04 3\ndatabase\u002Fucf101\u002Ftrain\u002FBalanceBeam\u002Fv_BalanceBeam_g01_c01 4\ndatabase\u002Fucf101\u002Ftrain\u002FBalanceBeam\u002Fv_BalanceBeam_g01_c02 4\ndatabase\u002Fucf101\u002Ftrain\u002FBalanceBeam\u002Fv_BalanceBeam_g01_c03 4\ndatabase\u002Fucf101\u002Ftrain\u002FBalanceBeam\u002Fv_BalanceBeam_g01_c04 4\n...\n```\n\n## 使用方法\n\n1. `python train_c3d_ucf101.py` 将训练 C3D 模型。训练好的模型将保存在 `models` 目录中。\n2. `python predict_c3d_ucf101.py` 将在验证数据集上测试 C3D 模型。\n3. `cd .\u002FC3D-tensorflow-1.0 && python Random_clip_valid.py` 将使用提供的 `sports1m_finetuning_ucf101.model` 在 UCF101 测试集上获得随机片段的准确率。\n4. `C3D-tensorflow-1.0\u002FRandom_clip_valid.py` 代码兼容 TensorFlow 1.0 及以上版本，与旧仓库略有不同。\n5. 重要提示：当您加载 `sports1m_finetuning_ucf101.model` 时，应使用转置操作，例如：`pool5 = tf.transpose(pool5, perm=[0,1,4,2,3])`，或者在 `Random_clip_valid.py` 中写成：`[\"transpose\", [0, 1, 4, 2, 3]]`。但如果您加载的是 `conv3d_deepnetA_sport1m_iter_1900000_TF.model` 或 `c3d_ucf101_finetune_whole_iter_20000_TF.model`，则不需要进行转置操作，只需注释掉该行代码即可。\n\n## 实验结果：\n- 注意：\n    1. 所有报告的结果均基于 UCF101 split1（训练视频：9537，测试视频：3783）。\n    2. 所有结果均为视频级别的准确率，除非另有说明。\n    3. 我们采用与 C3D 论文相同的视频片段提取方式：“为了提取 C3D 特征，将视频分割为长度为 16 帧的片段，相邻片段之间有 8 帧的重叠。这些片段被输入到 C3D 网络中以提取 fc6 激活值。然后对这些片段的 fc6 激活值取平均，形成一个 4096 维的视频描述符，并对其进行 L2 归一化。”\n\n- C3D 作为特征提取器：\n\n| 平台     | 特征提取器模型                          | fc6+SVM | fc6+SVM+L2 归一化 |\n|:--------:|:---------------------------------------:|:-------:|:-----------------:|\n| caffe    | conv3d_deepnetA_sport1m_iter_1900000.caffemodel | 81.99%  | 83.39%            |\n| tensorflow | conv3d_deepnetA_sport1m_iter_1900000_TF.model  | 79.38%  | 81.44%            |\n| tensorflow | c3d_ucf101_finetune_whole_iter_20000_TF.model  | 79.67%  | 81.33%            |\n| tensorflow | sports1m_finetuning_ucf101.model              | 82.73%  | 85.35%            |\n\n- 在 UCF101 split1 上使用预训练模型对 C3D 网络进行微调：\n\n| 平台     | 预训练模型                              | 训练策略          | 视频准确率        | 片段准确率        | 随机片段          |\n|:--------:|:---------------------------------------:|:-----------------:|:-----------------:|:-----------------:|:-----------------:|\n| caffe    | c3d_ucf101_finetune_whole_iter_20000.caffemodel | 直接测试          | -                 | 79.87%            | -                 |\n| tensorflow | c3d_ucf101_finetune_whole_iter_20000_TF.model  | 直接测试          | 78.35%            | 72.77%            | 57.15%            |\n| tensorflow-A | conv3d_deepnetA_sport1m_iter_1900000_TF.caffemodel | 整体微调          | 76.0%             | 71%               | 69.8%             |\n| tensorflow-B | sports1m_finetuning_ucf101.model              | 冻结卷积层，仅微调全连接层 | 79.93%            | 74.65%            | 76.6%             |\n\n- 注：\n    1. `tensorflow-A` 模型对应于 @ [hx173149][7] 提供的在 UCF101 上预训练的原始 C3D 模型。\n    2. `tensorflow-B` 模型是在 `tensorflow-A` 的基础上冻结了卷积层，并以 `learning rate=1e-3` 对全连接层进行了额外四轮微调。\n    3. “随机片段”列表示从 UCF101 测试集 split1 中的每个视频中随机选择一个片段，因此结果并不十分稳健。但根据大数定律，我们可以假设该项目与您的视频级别准确率呈正相关。\n    4. 显而易见的是，如果您基于 `c3d_ucf101_finetune_whole_iter_20000_TF.model` 进行更多的微调工作，可能会取得更好的效果，但由于时间限制，我没有这样做。\n    5. 毫无疑问，通过适当微调网络，您可以获得更好的结果。\n\n## 训练好的模型：\n|   模型             |   描述     |   云存储  |  下载   |\n| ------------------- | ----------------- |  -------- | ------------|\n| C3D sports1M TF      |C3D sports1M，由 Caffe 版本的 C3D 转换而来|  Dropbox  |[C3D sports1M ](https:\u002F\u002Fwww.dropbox.com\u002Fs\u002Fzvco2rfufryivqb\u002Fconv3d_deepnetA_sport1m_iter_1900000_TF.model?dl=0)       |\n| C3D UCF101 TF  |C3D UCF101 训练模型，由 Caffe 版本的 C3D 转换而来|  Dropbox  |[C3D UCF101 ](https:\u002F\u002Fwww.dropbox.com\u002Fs\u002Fu5fxqzks2pkaolx\u002Fc3d_ucf101_finetune_whole_iter_20000_TF.model?dl=0 )       |\n| C3D UCF101  TF 训练   |在 UCF101 split1 数据集上进行微调，使用 @ [hx173149][7] 提供的 C3D sports1M 模型|  Dropbox  |[C3D UCF101 split1](https:\u002F\u002Fwww.dropbox.com\u002Fsh\u002F8wcjrcadx4r31ux\u002FAAAkz3dQ706pPO8ZavrztRCca?dl=0)       |\n| split1 均值文件  TF   |UCF101 split1 的均值文件，由 Caffe 版本的 C3D 转换而来|  Dropbox  |[UCF101 split1 均值文件](https:\u002F\u002Fwww.dropbox.com\u002Fsh\u002F8wcjrcadx4r31ux\u002FAAAkz3dQ706pPO8ZavrztRCca?dl=0)      |\n| 上述所有文件    |  上述四个文件  |  百度网盘 |[百度网盘](http:\u002F\u002Fpan.baidu.com\u002Fs\u002F1nuJe8vn)      |\n\n\n## 其他版本\n- [C3D-estimator-sagemaker](https:\u002F\u002Fgithub.com\u002Ffrankgu\u002FC3D-estimator-sagemaker): 使用 Sagemaker 训练 C3D 模型。\n\n## 参考资料：\n\n- 感谢作者 [Du tran][4] 的代码：[C3D-caffe][5]\n- [C3D：用于视频分析的通用特征][6]\n\n\n[1]: https:\u002F\u002Fwww.tensorflow.org\u002F\n[2]: http:\u002F\u002Fpillow.readthedocs.io\u002Fen\u002F3.1.x\u002Freference\u002FImage.html\n[3]: http:\u002F\u002Fcrcv.ucf.edu\u002Fdata\u002FUCF101.php\n[4]: https:\u002F\u002Fgithub.com\u002Fdutran\n[5]: https:\u002F\u002Fgithub.com\u002Ffacebook\u002FC3D\n[6]: http:\u002F\u002Fvlg.cs.dartmouth.edu\u002Fc3d\u002F\n[7]:https:\u002F\u002Fgithub.com\u002Fhx173149\u002FC3D-tensorflow","# C3D-tensorflow 快速上手指南\n\nC3D-tensorflow 是一个基于 TensorFlow 实现的 C3D 视频动作识别模型仓库，直接转换自原始的 C3D-caffe 模型。本指南将帮助你快速配置环境并运行模型。\n\n## 环境准备\n\n在开始之前，请确保你的系统满足以下要求：\n\n*   **操作系统**: Linux \u002F macOS (Windows 需自行配置兼容环境)\n*   **Python 版本**: 建议 Python 2.7 或 3.6+ (取决于具体 TF 版本兼容性)\n*   **核心依赖**:\n    *   TensorFlow >= 1.2\n    *   Pillow (图像处理库)\n*   **数据集**: [UCF101](http:\u002F\u002Fcrcv.ucf.edu\u002Fdata\u002FUCF101.php) 动作识别数据集\n\n> **提示**: 国内用户安装 Python 依赖时，推荐使用清华或阿里镜像源加速：\n> `pip install -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple tensorflow pillow`\n\n## 安装与数据预处理步骤\n\n### 1. 安装依赖库\n确保已安装 TensorFlow 和 Pillow：\n```bash\npip install tensorflow>=1.2 pillow\n```\n\n### 2. 下载并预处理视频数据\n下载 UCF101 数据集后，需要将视频文件解码为图像帧（默认按 5FPS 抽取）。\n\n使用提供的脚本进行转换（假设数据集路径为 `...\u002FUCF101`）：\n```bash\n.\u002Flist\u002Fconvert_video_to_images.sh ...\u002FUCF101 5\n```\n\n### 3. 生成训练\u002F测试列表文件\n生成 `{train,test}.list` 文件，每行包含“图像目录”和对应的“类别索引（从 0 开始）”。\n\n使用脚本生成列表（假设处理后的图像根目录为 `...\u002Fdataset_images`，因子为 4）：\n```bash\n.\u002Flist\u002Fconvert_images_to_list.sh ...\u002Fdataset_images 4\n```\n生成的 `train.list` 格式示例如下：\n```text\ndatabase\u002Fucf101\u002Ftrain\u002FApplyEyeMakeup\u002Fv_ApplyEyeMakeup_g01_c01 0\ndatabase\u002Fucf101\u002Ftrain\u002FApplyLipstick\u002Fv_ApplyLipstick_g01_c01 1\ndatabase\u002Fucf101\u002Ftrain\u002FArchery\u002Fv_Archery_g01_c01 2\n```\n\n### 4. 下载预训练模型\n从官方提供的链接下载所需的 `.model` 文件并放入项目目录（推荐国内用户使用百度网盘链接）：\n*   **C3D Sports1M 模型**: `conv3d_deepnetA_sport1m_iter_1900000_TF.model`\n*   **C3D UCF101 微调模型**: `c3d_ucf101_finetune_whole_iter_20000_TF.model`\n*   **均值文件**: `ucf101_split1_mean.npy` (通常包含在 split1 下载包中)\n\n> **下载地址**:\n> *   百度网盘 (提取码见原仓库): http:\u002F\u002Fpan.baidu.com\u002Fs\u002F1nuJe8vn\n> *   Dropbox: 参考 README 中的 \"Trained models\" 表格链接。\n\n## 基本使用\n\n### 1. 训练模型\n使用 UCF101 数据集训练 C3D 模型，训练好的模型将保存在 `models` 目录：\n```bash\npython train_c3d_ucf101.py\n```\n\n### 2. 验证\u002F测试模型\n在验证集上测试 C3D 模型性能：\n```bash\npython predict_c3d_ucf101.py\n```\n\n### 3. 随机片段精度测试 (Random Clip Accuracy)\n使用预训练模型 `sports1m_finetuning_ucf101.model` 在 UCF101 测试集上获取随机片段精度：\n\n```bash\ncd .\u002FC3D-tensorflow-1.0\npython Random_clip_valid.py\n```\n\n> **⚠️ 重要注意事项**:\n> 加载不同模型时，代码中对 `pool5` 层的转置操作要求不同：\n> *   若加载 `sports1m_finetuning_ucf101.model`：**必须**执行转置操作。\n>     代码示例：`pool5 = tf.transpose(pool5, perm=[0,1,4,2,3])` 或在脚本中保留 `[\"transpose\", [0, 1, 4, 2, 3]]`。\n> *   若加载 `conv3d_deepnetA_sport1m_iter_1900000_TF.model` 或 `c3d_ucf101_finetune_whole_iter_20000_TF.model`：**不需要**转置操作，请注释掉相关代码行。","某安防科技公司的算法团队正致力于开发一套基于监控视频的智能行为识别系统，需要准确判断画面中人员是否发生了打架、跌倒或奔跑等特定动作。\n\n### 没有 C3D-tensorflow 时\n- **时空特征提取困难**：传统 2D 卷积网络只能逐帧分析图像，无法有效捕捉动作在时间维度上的连续变化规律，导致对快速动作的误判率极高。\n- **框架迁移成本高昂**：团队主要技术栈为 TensorFlow，但业界成熟的 C3D 预训练模型多基于 Caffe 框架，手动重写网络结构并转换权重耗时且极易出错。\n- **数据预处理繁琐**：缺乏标准化的视频解码与切片流程，开发人员需自行编写脚本将视频按固定帧率（如 5FPS）拆解并重排，难以复现论文中的\"16 帧重叠切片”策略。\n- **模型精度难以对齐**：由于缺少经过验证的 TensorFlow 实现参考，自研模型在 UCF101 数据集上的视频级准确率始终比官方基准低 10% 以上，无法满足交付标准。\n\n### 使用 C3D-tensorflow 后\n- **原生支持 3D 卷积**：直接利用修改版的 TensorFlow 架构运行 3D ConvNets，天然具备同时提取空间外观与时间运动特征的能力，显著提升了对复杂动态行为的识别精度。\n- **无缝复用预训练权重**：工具支持直接加载从 Caffe 转换而来的 `sports1m_finetuning_ucf101.model` 等成熟模型，省去了从头训练的漫长周期，实现了“开箱即用”。\n- **内置标准化数据处理**：提供 `convert_video_to_images.sh` 等脚本，一键完成视频解码、帧抽取及训练列表生成，确保输入数据格式严格符合 C3D 论文的切片规范。\n- **性能表现可预期**：在 UCF101 数据集上复现了接近原版的视频级准确率（仅约 5% 的边际差距），让团队能快速基于可靠的基线模型进行业务场景的微调与优化。\n\nC3D-tensorflow 通过打通框架壁垒并固化最佳实践，让开发者能在熟悉的 TensorFlow 环境中高效构建高精度的视频动作识别应用。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fhx173149_C3D-tensorflow_e84b7ead.png","hx173149","HouXin","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fhx173149_e6043de9.png","machine learning & computer vision","WeBank","Beijing, China","hx173149@gmail.com",null,"http:\u002F\u002Fhx173149.github.io\u002F","https:\u002F\u002Fgithub.com\u002Fhx173149",[83,87],{"name":84,"color":85,"percentage":86},"Python","#3572A5",94.6,{"name":88,"color":89,"percentage":90},"Shell","#89e051",5.4,585,260,"2025-08-26T08:50:52","MIT",4,"未说明","未说明 (基于 TensorFlow 1.2+，通常建议配备支持 CUDA 的 NVIDIA GPU 以加速 3D 卷积训练)",{"notes":99,"python":100,"dependencies":101},"1. 必须下载 UCF101 动作识别数据集。2. 视频文件需预先解码为图像序列（脚本默认按 5FPS 提取），并生成对应的 train.list 和 test.list 索引文件。3. 加载部分预训练模型（如 sports1m_finetuning_ucf101.model）时，代码中必须包含特定的转置操作 (transpose perm=[0,1,4,2,3])，而加载其他模型则需注释掉该行。4. 该项目是 C3D-caffe 的 TensorFlow 实现，在 UCF101 split1 上的准确率比原版 Caffe 实现低约 5%。","未说明 (需兼容 TensorFlow >= 1.2 的版本，推测为 Python 2.7 或 3.5-3.6)",[102,103],"tensorflow>=1.2","Pillow",[105,14],"视频","2026-03-27T02:49:30.150509","2026-04-19T09:37:51.542931",[109,114,119,124,129,134,139],{"id":110,"question_zh":111,"answer_zh":112,"source_url":113},42284,"如何加载预训练模型（.model 文件）？","TensorFlow 中保存的模型通常包含 .meta 文件，可以使用 tf.train.import_meta_graph() 加载图结构。对于本项目提供的 .model 文件（实际上是 checkpoint 格式），请确保按照 README 中的说明操作。如果遇到问题，建议检查是否修改了代码，并确认变量名与预训练模型中的名称完全匹配。在 Python 3 中传递变量列表时，必须使用列表（list）而不是字典（dictionary）。","https:\u002F\u002Fgithub.com\u002Fhx173149\u002FC3D-tensorflow\u002Fissues\u002F18",{"id":115,"question_zh":116,"answer_zh":117,"source_url":118},42285,"为什么预测准确率极低（如 1.3%）？","这通常是因为数据预处理中的转置（transpose）操作处理不当。根据官方用法说明的第 5 点，必须进行转置操作以匹配模型输入的维度顺序。如果在预测脚本中注释掉了转置代码，会导致输入数据维度错误，从而产生极低的准确率。请确保在运行 predict_c3d_ucf101.py 时保留并正确执行 transpose 操作。","https:\u002F\u002Fgithub.com\u002Fhx173149\u002FC3D-tensorflow\u002Fissues\u002F39",{"id":120,"question_zh":121,"answer_zh":122,"source_url":123},42286,"crop_mean.npy 文件的作用是什么？如何计算它？","crop_mean.npy 用于存储图像数据的均值，以便在输入网络前进行归一化处理。计算方法遵循原始 C3D 论文：首先将图像大小调整为 128x171，然后随机裁剪到 112x112。你可以使用训练集的所有帧，按照上述缩放和裁剪步骤处理后，计算 RGB 三个通道的像素均值来生成该文件。","https:\u002F\u002Fgithub.com\u002Fhx173149\u002FC3D-tensorflow\u002Fissues\u002F25",{"id":125,"question_zh":126,"answer_zh":127,"source_url":128},42287,"从头训练（不使用预训练模型）需要多少次迭代？","如果不使用预训练模型而在 UCF-101 数据集上从头训练，收敛速度会非常慢。有用户反馈在 3000 次迭代后准确率仍为 0%。关键在于帧数设置：预训练模型是基于 16 帧训练的，如果你使用 5 帧或其他数量且不使用预训练权重，很难达到高精度。建议使用 16 帧输入，并做好训练数万次的准备；若需快速见效，强烈建议使用 Sports1M 的预训练模型进行微调。","https:\u002F\u002Fgithub.com\u002Fhx173149\u002FC3D-tensorflow\u002Fissues\u002F9",{"id":130,"question_zh":131,"answer_zh":132,"source_url":133},42288,"如何解决多 GPU 训练时的报错或形状不匹配问题？","在多 GPU 环境下，常见的错误是恢复预训练模型时出现形状不匹配（例如 conv3 或 conv4 的通道数不一致）。这是因为代码中的网络结构（如 concat 操作后的通道数）与 Sports1M 预训练模型的权重形状不符。解决方法是：在恢复 checkpoint 时跳过最后一层或不匹配的层（这是 TensorFlow 的基本技巧）；或者修改代码使其结构与预训练权重完全一致。此外，请确保使用支持当前 TensorFlow 版本（如 TF 1.2+）的最新代码。","https:\u002F\u002Fgithub.com\u002Fhx173149\u002FC3D-tensorflow\u002Fissues\u002F21",{"id":135,"question_zh":136,"answer_zh":137,"source_url":138},42289,"如何将 Caffe 模型转换为 TensorFlow 模型或使用 R2+1D 预训练模型？","目前没有直接的自动转换工具被详细记录在案，但基本思路是提取 Caffe 模型的权重并映射到 TensorFlow 的变量结构中。对于使用 R2+1D 等不同类型的预训练模型，核心挑战在于网络层定义的匹配。如果只是想加载现有的 TensorFlow checkpoint，只需确保变量名对应。若需从 Caffe 转换，通常需要编写脚本读取 .caffemodel 文件并将权重赋值给对应的 TF 变量，注意忽略不匹配的层（如分类层）。","https:\u002F\u002Fgithub.com\u002Fhx173149\u002FC3D-tensorflow\u002Fissues\u002F1",{"id":140,"question_zh":141,"answer_zh":142,"source_url":143},42290,"UCF101 从头训练的准确率应该是多少？网络结构有何不同？","根据社区反馈，使用本项目中的 8 层卷积网络从头训练，在 UCF101 split 1 上的准确率约为 33%。这与原始 C3D 论文中报告的 45% 不同，因为论文使用的是 5 层卷积网络。这意味着本项目的网络结构与原始论文中从头训练的结构存在差异，因此直接比较从头训练的数值可能不公平。若要复现论文结果，需注意网络深度的区别，或依赖 Sports1M 预训练权重进行微调以达到更高精度。","https:\u002F\u002Fgithub.com\u002Fhx173149\u002FC3D-tensorflow\u002Fissues\u002F11",[]]