[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-vanhuyz--CycleGAN-TensorFlow":3,"tool-vanhuyz--CycleGAN-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 真正成长为懂上",160015,2,"2026-04-18T11:30:52",[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":75,"owner_location":76,"owner_email":75,"owner_twitter":75,"owner_website":75,"owner_url":77,"languages":78,"stars":91,"forks":92,"last_commit_at":93,"license":94,"difficulty_score":10,"env_os":95,"env_gpu":96,"env_ram":95,"env_deps":97,"category_tags":102,"github_topics":103,"view_count":32,"oss_zip_url":75,"oss_zip_packed_at":75,"status":17,"created_at":108,"updated_at":109,"faqs":110,"releases":156},9308,"vanhuyz\u002FCycleGAN-TensorFlow","CycleGAN-TensorFlow","An implementation of CycleGan using TensorFlow","CycleGAN-TensorFlow 是一个基于 TensorFlow 框架实现的开源项目，旨在复现著名的 CycleGAN 图像生成算法。它核心解决了传统图像风格迁移中需要成对训练数据的难题，让计算机能够在没有“苹果 - 橘子”一一对应照片的情况下，学会将一种风格的图像（如苹果）自动转换为另一种风格（如橘子），并保证转换后的图像在循环还原时仍能保持原貌。\n\n该项目特别适合人工智能开发者、深度学习研究人员以及希望探索无监督学习技术的工程师使用。通过简洁的命令行操作，用户可以轻松准备数据集、调整超参数并启动训练，还能利用 TensorBoard 实时可视化监控生成效果与训练进度。其技术亮点在于完整实现了循环一致性损失（Cycle Consistency Loss）机制，并支持 LSGAN 损失函数与实例归一化等关键策略，有效提升了生成图像的稳定性和真实感。虽然项目依赖较早期的 TensorFlow 1.0 环境，但其清晰的代码结构和详尽的参数说明，使其成为理解生成对抗网络原理及进行二次开发的优质教学与实践范本。","# CycleGAN-TensorFlow\nAn implementation of CycleGan using TensorFlow (work in progress).\n\nOriginal paper: https:\u002F\u002Farxiv.org\u002Fabs\u002F1703.10593\n\n## Results on test data\n\n### apple -> orange\n\n| Input | Output | | Input | Output | | Input | Output |\n|-------|--------|-|-------|--------|-|-------|--------|\n|![apple2orange_1](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvanhuyz_CycleGAN-TensorFlow_readme_a04b0a89dd72.jpg) | ![apple2orange_1](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvanhuyz_CycleGAN-TensorFlow_readme_23c828cf7f09.jpg)| |![apple2orange_2](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvanhuyz_CycleGAN-TensorFlow_readme_7bcc7e4d2ad1.jpg) | ![apple2orange_2](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvanhuyz_CycleGAN-TensorFlow_readme_b12df59f29e8.jpg)| |![apple2orange_3](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvanhuyz_CycleGAN-TensorFlow_readme_cc91af50dfe0.jpg) | ![apple2orange_3](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvanhuyz_CycleGAN-TensorFlow_readme_4edf02701b11.jpg)|\n\n\n### orange -> apple\n\n| Input | Output | | Input | Output | | Input | Output |\n|-------|--------|-|-------|--------|-|-------|--------|\n|![orange2apple_1](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvanhuyz_CycleGAN-TensorFlow_readme_b0989ae25efb.jpg) | ![orange2apple_1](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvanhuyz_CycleGAN-TensorFlow_readme_fe0bf2e741c1.jpg)| |![orange2apple_2](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvanhuyz_CycleGAN-TensorFlow_readme_275b227b2a03.jpg) | ![orange2apple_2](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvanhuyz_CycleGAN-TensorFlow_readme_d720aa32af27.jpg)| |![orange2apple_3](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvanhuyz_CycleGAN-TensorFlow_readme_96a4fc04f007.jpg) | ![orange2apple_3](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvanhuyz_CycleGAN-TensorFlow_readme_2e1bc5b0f6ea.jpg)|\n\n## Environment\n\n* TensorFlow 1.0.0\n* Python 3.6.0\n\n## Data preparing\n\n* First, download a dataset, e.g. apple2orange\n\n```bash\n$ bash download_dataset.sh apple2orange\n```\n\n* Write the dataset to tfrecords\n\n```bash\n$ python3 build_data.py\n```\n\nCheck `$ python3 build_data.py --help` for more details.\n\n## Training\n\n```bash\n$ python3 train.py\n```\n\nIf you want to change some default settings, you can pass those to the command line, such as:\n\n```bash\n$ python3 train.py  \\\n    --X=data\u002Ftfrecords\u002Fhorse.tfrecords \\\n    --Y=data\u002Ftfrecords\u002Fzebra.tfrecords\n```\n\nHere is the list of arguments:\n```\nusage: train.py [-h] [--batch_size BATCH_SIZE] [--image_size IMAGE_SIZE]\n                [--use_lsgan [USE_LSGAN]] [--nouse_lsgan]\n                [--norm NORM] [--lambda1 LAMBDA1] [--lambda2 LAMBDA2]\n                [--learning_rate LEARNING_RATE] [--beta1 BETA1]\n                [--pool_size POOL_SIZE] [--ngf NGF] [--X X] [--Y Y]\n                [--load_model LOAD_MODEL]\n\noptional arguments:\n  -h, --help            show this help message and exit\n  --batch_size BATCH_SIZE\n                        batch size, default: 1\n  --image_size IMAGE_SIZE\n                        image size, default: 256\n  --use_lsgan [USE_LSGAN]\n                        use lsgan (mean squared error) or cross entropy loss,\n                        default: True\n  --nouse_lsgan\n  --norm NORM           [instance, batch] use instance norm or batch norm,\n                        default: instance\n  --lambda1 LAMBDA1     weight for forward cycle loss (X->Y->X), default: 10.0\n  --lambda2 LAMBDA2     weight for backward cycle loss (Y->X->Y), default:\n                        10.0\n  --learning_rate LEARNING_RATE\n                        initial learning rate for Adam, default: 0.0002\n  --beta1 BETA1         momentum term of Adam, default: 0.5\n  --pool_size POOL_SIZE\n                        size of image buffer that stores previously generated\n                        images, default: 50\n  --ngf NGF             number of gen filters in first conv layer, default: 64\n  --X X                 X tfrecords file for training, default:\n                        data\u002Ftfrecords\u002Fapple.tfrecords\n  --Y Y                 Y tfrecords file for training, default:\n                        data\u002Ftfrecords\u002Forange.tfrecords\n  --load_model LOAD_MODEL\n                        folder of saved model that you wish to continue\n                        training (e.g. 20170602-1936), default: None\n```\n\nCheck TensorBoard to see training progress and generated images.\n\n```\n$ tensorboard --logdir checkpoints\u002F${datetime}\n```\n\nIf you halted the training process and want to continue training, then you can set the `load_model` parameter like this.\n\n```bash\n$ python3 train.py  \\\n    --load_model 20170602-1936\n```\n\nHere are some funny screenshots from TensorBoard when training orange -> apple:\n\n![train_screenshot](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvanhuyz_CycleGAN-TensorFlow_readme_ba21a99bbcc9.png)\n\n\n### Notes\n* If high constrast background colors between input and generated images are observed (e.g. black becomes white), you should restart your training!\n* Train several times to get the best models.\n\n## Export model\nYou can export from a checkpoint to a standalone GraphDef file as follow:\n\n```bash\n$ python3 export_graph.py --checkpoint_dir checkpoints\u002F${datetime} \\\n                          --XtoY_model apple2orange.pb \\\n                          --YtoX_model orange2apple.pb \\\n                          --image_size 256\n```\n\n\n## Inference\nAfter exporting model, you can use it for inference. For example:\n\n```bash\npython3 inference.py --model pretrained\u002Fapple2orange.pb \\\n                     --input input_sample.jpg \\\n                     --output output_sample.jpg \\\n                     --image_size 256\n```\n\n## Pretrained models\nMy pretrained models are available at https:\u002F\u002Fgithub.com\u002Fvanhuyz\u002FCycleGAN-TensorFlow\u002Freleases\n\n## Contributing\nPlease open an issue if you have any trouble or found anything incorrect in my code :)\n\n## License\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## References\n\n* CycleGAN paper: https:\u002F\u002Farxiv.org\u002Fabs\u002F1703.10593\n* Official source code in Torch: https:\u002F\u002Fgithub.com\u002Fjunyanz\u002FCycleGAN\n","# CycleGAN-TensorFlow\n使用 TensorFlow 实现的 CycleGAN（开发中）。\n\n原始论文：https:\u002F\u002Farxiv.org\u002Fabs\u002F1703.10593\n\n## 测试数据结果\n\n### 苹果 → 橙子\n\n| 输入 | 输出 | | 输入 | 输出 | | 输入 | 输出 |\n|-------|--------|-|-------|--------|-|-------|--------|\n|![apple2orange_1](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvanhuyz_CycleGAN-TensorFlow_readme_a04b0a89dd72.jpg) | ![apple2orange_1](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvanhuyz_CycleGAN-TensorFlow_readme_23c828cf7f09.jpg)| |![apple2orange_2](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvanhuyz_CycleGAN-TensorFlow_readme_7bcc7e4d2ad1.jpg) | ![apple2orange_2](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvanhuyz_CycleGAN-TensorFlow_readme_b12df59f29e8.jpg)| |![apple2orange_3](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvanhuyz_CycleGAN-TensorFlow_readme_cc91af50dfe0.jpg) | ![apple2orange_3](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvanhuyz_CycleGAN-TensorFlow_readme_4edf02701b11.jpg)|\n\n\n### 橙子 → 苹果\n\n| 输入 | 输出 | | 输入 | 输出 | | 输入 | 输出 |\n|-------|--------|-|-------|--------|-|-------|--------|\n|![orange2apple_1](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvanhuyz_CycleGAN-TensorFlow_readme_b0989ae25efb.jpg) | ![orange2apple_1](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvanhuyz_CycleGAN-TensorFlow_readme_fe0bf2e741c1.jpg)| |![orange2apple_2](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvanhuyz_CycleGAN-TensorFlow_readme_275b227b2a03.jpg) | ![orange2apple_2](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvanhuyz_CycleGAN-TensorFlow_readme_d720aa32af27.jpg)| |![orange2apple_3](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvanhuyz_CycleGAN-TensorFlow_readme_96a4fc04f007.jpg) | ![orange2apple_3](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvanhuyz_CycleGAN-TensorFlow_readme_2e1bc5b0f6ea.jpg)|\n\n## 环境\n\n* TensorFlow 1.0.0\n* Python 3.6.0\n\n## 数据准备\n\n* 首先，下载一个数据集，例如 apple2orange：\n\n```bash\n$ bash download_dataset.sh apple2orange\n```\n\n* 将数据集写入 tfrecords 文件：\n\n```bash\n$ python3 build_data.py\n```\n\n更多信息请参阅 `$ python3 build_data.py --help`。\n\n## 训练\n\n```bash\n$ python3 train.py\n```\n\n如果需要更改某些默认设置，可以通过命令行传递参数，例如：\n\n```bash\n$ python3 train.py  \\\n    --X=data\u002Ftfrecords\u002Fhorse.tfrecords \\\n    --Y=data\u002Ftfrecords\u002Fzebra.tfrecords\n```\n\n以下是所有参数列表：\n```\n用法: train.py [-h] [--batch_size BATCH_SIZE] [--image_size IMAGE_SIZE]\n                [--use_lsgan [USE_LSGAN]] [--nouse_lsgan]\n                [--norm NORM] [--lambda1 LAMBDA1] [--lambda2 LAMBDA2]\n                [--learning_rate LEARNING_RATE] [--beta1 BETA1]\n                [--pool_size POOL_SIZE] [--ngf NGF] [--X X] [--Y Y]\n                [--load_model LOAD_MODEL]\n\n可选参数:\n  -h, --help            显示此帮助信息并退出\n  --batch_size BATCH_SIZE\n                        批量大小，默认为 1\n  --image_size IMAGE_SIZE\n                        图像大小，默认为 256\n  --use_lsgan [USE_LSGAN]\n                        使用 LSGAN（均方误差）或交叉熵损失，默认为 True\n  --nouse_lsgan\n  --norm NORM           [instance, batch] 使用实例归一化或批归一化，默认为 instance\n  --lambda1 LAMBDA1     正向循环损失（X->Y->X）的权重，默认为 10.0\n  --lambda2 LAMBDA2     反向循环损失（Y->X->Y）的权重，默认为 10.0\n  --learning_rate LEARNING_RATE\n                        Adam 优化器的初始学习率，默认为 0.0002\n  --beta1 BETA1         Adam 优化器的动量项，默认为 0.5\n  --pool_size POOL_SIZE\n                        存储先前生成图像的缓冲区大小，默认为 50\n  --ngf NGF             第一层卷积中的生成器滤波器数量，默认为 64\n  --X X                 用于训练的 X tfrecords 文件，默认为 data\u002Ftfrecords\u002Fapple.tfrecords\n  --Y Y                 用于训练的 Y tfrecords 文件，默认为 data\u002Ftfrecords\u002Forange.tfrecords\n  --load_model LOAD_MODEL\n                        您希望继续训练的已保存模型文件夹（例如 20170602-1936），默认为 None\n```\n\n使用 TensorBoard 查看训练进度和生成的图像：\n\n```bash\n$ tensorboard --logdir checkpoints\u002F${datetime}\n```\n\n如果您中断了训练过程并希望继续训练，可以这样设置 `load_model` 参数：\n\n```bash\n$ python3 train.py  \\\n    --load_model 20170602-1936\n```\n\n以下是在训练橙子 → 苹果时从 TensorBoard 截取的一些有趣截图：\n\n![train_screenshot](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvanhuyz_CycleGAN-TensorFlow_readme_ba21a99bbcc9.png)\n\n\n### 注意事项\n* 如果在输入和生成的图像之间观察到高对比度的背景颜色变化（例如黑色变为白色），则应重新开始训练！\n* 多次训练以获得最佳模型。\n\n## 导出模型\n您可以从检查点导出为独立的 GraphDef 文件，如下所示：\n\n```bash\n$ python3 export_graph.py --checkpoint_dir checkpoints\u002F${datetime} \\\n                          --XtoY_model apple2orange.pb \\\n                          --YtoX_model orange2apple.pb \\\n                          --image_size 256\n```\n\n\n## 推理\n导出模型后，您可以将其用于推理。例如：\n\n```bash\npython3 inference.py --model pretrained\u002Fapple2orange.pb \\\n                     --input input_sample.jpg \\\n                     --output output_sample.jpg \\\n                     --image_size 256\n```\n\n## 预训练模型\n我的预训练模型可在 https:\u002F\u002Fgithub.com\u002Fvanhuyz\u002FCycleGAN-TensorFlow\u002Freleases 上找到。\n\n## 贡献\n如果您遇到任何问题或发现代码中有错误，请提交一个问题 :)\n\n## 许可证\n本项目采用 MIT 许可证授权 - 详细信息请参阅 [LICENSE](LICENSE) 文件。\n\n## 参考文献\n\n* CycleGAN 论文：https:\u002F\u002Farxiv.org\u002Fabs\u002F1703.10593\n* Torch 官方源码：https:\u002F\u002Fgithub.com\u002Fjunyanz\u002FCycleGAN","# CycleGAN-TensorFlow 快速上手指南\n\nCycleGAN-TensorFlow 是基于 TensorFlow 实现的 CycleGAN 模型，用于无需配对数据的图像风格迁移（例如：苹果变橘子、马变斑马）。\n\n## 环境准备\n\n在开始之前，请确保您的开发环境满足以下要求：\n\n*   **操作系统**: Linux \u002F macOS (Windows 需自行配置兼容环境)\n*   **Python**: 3.6.0\n*   **深度学习框架**: TensorFlow 1.0.0\n    *   *注意：本项目基于较旧的 TensorFlow 1.x 版本开发。若使用新版 TensorFlow，可能需要修改代码以适配 2.x API 或使用兼容模式。*\n\n**依赖安装：**\n```bash\npip install tensorflow==1.0.0\n# 其他常见依赖（如 numpy, scipy 等）通常随 tensorflow 自动安装，若缺失请手动补充\npip install numpy scipy matplotlib\n```\n\n## 安装与数据准备\n\n克隆项目代码并准备数据集。\n\n1.  **获取代码**\n    ```bash\n    git clone https:\u002F\u002Fgithub.com\u002Fvanhuyz\u002FCycleGAN-TensorFlow.git\n    cd CycleGAN-TensorFlow\n    ```\n\n2.  **下载数据集**\n    以经典的 `apple2orange` 数据集为例：\n    ```bash\n    bash download_dataset.sh apple2orange\n    ```\n    > **提示**：如果下载速度慢，可尝试手动从原论文作者提供的源或其他国内镜像站下载数据集压缩包，解压至 `datasets` 目录。\n\n3.  **转换为 TFRecords 格式**\n    将下载的图片数据转换为 TensorFlow 所需的 `.tfrecords` 格式：\n    ```bash\n    python3 build_data.py\n    ```\n    *如需查看支持的数据集类型或自定义路径，运行 `python3 build_data.py --help`。*\n\n## 基本使用\n\n### 1. 开始训练\n\n运行默认配置进行训练（默认使用 `apple` 和 `orange` 数据）：\n\n```bash\npython3 train.py\n```\n\n**自定义训练参数示例**（例如训练马到斑马的转换）：\n```bash\npython3 train.py \\\n    --X=data\u002Ftfrecords\u002Fhorse.tfrecords \\\n    --Y=data\u002Ftfrecords\u002Fzebra.tfrecords \\\n    --image_size 256 \\\n    --batch_size 1\n```\n\n**监控训练进度**：\n启动 TensorBoard 实时查看损失曲线和生成的中间图像：\n```bash\ntensorboard --logdir checkpoints\u002F${datetime}\n# 请将 ${datetime} 替换为实际生成的检查点文件夹名称，例如 20231027-1000\n```\n\n> **注意**：如果在训练初期发现生成图像背景颜色出现高对比度反转（如黑变白），建议停止训练并重新启动，这通常是初始化导致的局部最优解。\n\n### 2. 导出模型\n\n训练完成后，将检查点（Checkpoint）导出为独立的 `.pb` 图文件，以便部署或推理：\n\n```bash\npython3 export_graph.py --checkpoint_dir checkpoints\u002F20170602-1936 \\\n                        --XtoY_model apple2orange.pb \\\n                        --YtoX_model orange2apple.pb \\\n                        --image_size 256\n```\n*请将 `checkpoints\u002F20170602-1936` 替换为您实际的模型保存路径。*\n\n### 3. 图像推理（测试）\n\n使用导出的模型对单张图片进行风格迁移：\n\n```bash\npython3 inference.py --model pretrained\u002Fapple2orange.pb \\\n                     --input input_sample.jpg \\\n                     --output output_sample.jpg \\\n                     --image_size 256\n```\n\n执行完毕后，`output_sample.jpg` 即为转换后的图像。\n\n---\n*更多预训练模型可前往项目 GitHub Release 页面下载。*","一家电商初创公司的设计团队急需为秋季促销活动生成大量“苹果变橙子”的创意商品图，但受限于预算无法聘请专业摄影师重新拍摄所有素材。\n\n### 没有 CycleGAN-TensorFlow 时\n- **高昂的拍摄成本**：为了获取不同角度的橙子图片，团队必须租赁场地、购买实物并安排模特重新拍摄，耗时耗力且费用昂贵。\n- **成对的训练数据缺失**：传统图像转换模型需要严格一一对应的“苹果 - 橙子”配对照片进行训练，而现实中几乎无法采集到位置、光照完全一致的双份素材。\n- **手动修图效率低下**：设计师只能依靠 Photoshop 逐张手动调整颜色和纹理，不仅速度极慢，还难以保证上百张图片的风格统一性。\n- **风格迁移效果生硬**：简单的滤镜或色彩替换无法模拟橙子表皮的复杂质感，导致生成的图片看起来虚假，缺乏商业可用性。\n\n### 使用 CycleGAN-TensorFlow 后\n- **实现无配对训练**：利用其核心的循环一致性损失机制，团队直接投喂独立的苹果和橙子数据集即可开始训练，彻底摆脱了对成对数据的依赖。\n- **自动化批量生成**：通过配置 `train.py` 脚本加载本地 TFRecords 数据，模型在数小时内自动学习映射关系，瞬间将库存中的苹果图片批量转换为逼真的橙子图。\n- **保留结构细节**：生成的图像完美保留了原图中苹果的枝叶形态和光影角度，仅改变果皮纹理与颜色，视觉效果自然且符合物理规律。\n- **灵活调优迭代**：借助 TensorBoard 实时监控训练进度，开发人员可随时调整 `lambda1` 等超参数优化循环损失，快速迭代出满足营销需求的高质量模型。\n\nCycleGAN-TensorFlow 通过突破性的无监督学习架构，让企业在零额外拍摄成本下实现了跨域图像的高效、高质批量生产。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvanhuyz_CycleGAN-TensorFlow_04646e07.png","vanhuyz","Van Huy","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fvanhuyz_3fa27a4f.png",null,"Tokyo, Japan","https:\u002F\u002Fgithub.com\u002Fvanhuyz",[79,83,87],{"name":80,"color":81,"percentage":82},"Python","#3572A5",93.8,{"name":84,"color":85,"percentage":86},"Makefile","#427819",3.8,{"name":88,"color":89,"percentage":90},"Shell","#89e051",2.3,1192,435,"2026-04-11T02:18:58","MIT","未说明","未说明 (基于 TensorFlow 1.0，通常建议配备支持 CUDA 的 NVIDIA GPU，但 README 未明确指定型号或显存)",{"notes":98,"python":99,"dependencies":100},"该项目处于开发进行中 (work in progress)。数据需先下载并转换为 tfrecords 格式。训练过程中若发现输入图像与生成图像背景对比度异常（如黑变白），需重启训练。支持通过 TensorBoard 监控进度，并可将模型导出为独立的 GraphDef 文件用于推理。","3.6.0",[101],"tensorflow==1.0.0",[15,14],[104,105,106,107],"tensorflow","generative-adversarial-network","cyclegan","gan","2026-03-27T02:49:30.150509","2026-04-19T06:01:46.176411",[111,116,121,126,131,136,141,146,151],{"id":112,"question_zh":113,"answer_zh":114,"source_url":115},41767,"为什么代码中计算了两次前向和后向的循环损失（cycle loss）？","原始论文和 PyTorch 实现是同时优化两个生成器 F 和 G，因此只有一个目标函数。但该 TensorFlow 实现参考了 Torch 版本，将 G 和 F 的损失分开计算并分别优化。虽然 cycle_loss 函数内部包含了前向和后向损失的总和，但在优化步骤中，这个总损失被同时加到了 G 和 F 各自的损失函数中进行独立更新。","https:\u002F\u002Fgithub.com\u002Fvanhuyz\u002FCycleGAN-TensorFlow\u002Fissues\u002F33",{"id":117,"question_zh":118,"answer_zh":119,"source_url":120},41768,"更新生成器（G）和判别器（D）时使用的是同一个批次的数据吗？","是的，在一次迭代中，更新 D 和 G 使用的是同一个输入批次（例如 Z_0）。这与某些经典 GAN 实现不同（经典 GAN 可能采样不同的批次分别更新 D 和 G）。此外，为了增加训练稳定性，CycleGAN 在更新判别器 D 时，会随机从历史生成的图像池（image pool）中选取图像，而不是仅使用当前生成的图像。","https:\u002F\u002Fgithub.com\u002Fvanhuyz\u002FCycleGAN-TensorFlow\u002Fissues\u002F30",{"id":122,"question_zh":123,"answer_zh":124,"source_url":125},41769,"ResNet 块中的填充（padding）为什么设置为 2？是否需要裁剪图像？","这是一个遗留问题。原始作者曾使用过裁剪图像（ShaveImage）的操作，后来移除了该操作并将 padding 改为 1。在该实现中，应当将 padding 设置为 1，并且不需要进行图像裁剪（shaving）。如果代码中仍有 padding=2 或裁剪操作，建议修正为 padding=1 并移除裁剪步骤以匹配官方最新实现。","https:\u002F\u002Fgithub.com\u002Fvanhuyz\u002FCycleGAN-TensorFlow\u002Fissues\u002F14",{"id":127,"question_zh":128,"answer_zh":129,"source_url":130},41770,"Batch Normalization 和 Instance Normalization 的参数应该如何设置？卷积层是否需要偏置（bias）？","在使用 Batch Normalization 时，`updates_collections` 参数应设置为 `None`。此外，当使用 Batch Normalization 或 Instance Normalization 时，卷积层中的偏置（bias）可以被忽略（即不需要设置 bias），因为归一化层已经包含了缩放和平移参数。","https:\u002F\u002Fgithub.com\u002Fvanhuyz\u002FCycleGAN-TensorFlow\u002Fissues\u002F12",{"id":132,"question_zh":133,"answer_zh":134,"source_url":135},41771,"ops.py 中的 Instance Normalization 实现是否有误？(input-mean)*inv 是否正确？","代码是正确的。`tf.rsqrt` 函数计算的是平方根的倒数（即 1\u002Fsqrt(x)）。因此，代码中的 `inv` 已经是 1\u002Fsqrt(variance + epsilon)，所以归一化公式写作 `(input - mean) * inv` 在数学上等同于 `(input - mean) \u002F sqrt(variance + epsilon)`，无需改为除法。","https:\u002F\u002Fgithub.com\u002Fvanhuyz\u002FCycleGAN-TensorFlow\u002Fissues\u002F120",{"id":137,"question_zh":138,"answer_zh":139,"source_url":140},41772,"为什么将真实标签（true label）设置为 0.9 而不是 1.0？","这是为了模仿早期的 Lua 实现而设置的技巧（Label Smoothing），旨在防止判别器过于自信从而提高训练稳定性。不过，原始作者后来的代码更新中已经改回了 1.0。如果你发现设置为 0.9 没有特殊需求，可以将其改为 1.0，这通常不会造成问题且更符合当前官方实现。","https:\u002F\u002Fgithub.com\u002Fvanhuyz\u002FCycleGAN-TensorFlow\u002Fissues\u002F62",{"id":142,"question_zh":143,"answer_zh":144,"source_url":145},41773,"为什么导出的模型推理结果不正确或看起来未训练？","可能的原因有两个：1. 导出模型过早：默认情况下检查点每 10000 步保存一次，如果在训练初期（如 9100 步）导出，可能加载的是旧的或未完全更新的检查点，甚至只训练了 1 步。2. 训练步数不足：9100 步通常不足以让模型收敛，建议通过 Tensorboard 观察损失曲线，增加训练步数后再导出模型。","https:\u002F\u002Fgithub.com\u002Fvanhuyz\u002FCycleGAN-TensorFlow\u002Fissues\u002F52",{"id":147,"question_zh":148,"answer_zh":149,"source_url":150},41774,"如何控制训练在指定步数后自动停止？","默认情况下训练会一直运行直到手动中断（Ctrl+C）。若希望在特定步数（如 10000 步）后自动停止，需修改 `train.py` 文件中的训练循环条件。将 `while not coord.should_stop():` 修改为 `while step \u003C 10000 and not coord.should_stop():`（将 10000 替换为你想要的步数）。","https:\u002F\u002Fgithub.com\u002Fvanhuyz\u002FCycleGAN-TensorFlow\u002Fissues\u002F45",{"id":152,"question_zh":153,"answer_zh":154,"source_url":155},41775,"F 生成器初始化时是否缺少了 ngf 参数？","是的，这是一个拼写错误（typo）。在初始化生成器 F 时，代码漏传了 `ngf` 参数，导致其可能使用了默认值而非与生成器 G 一致的配置。修复方法是在实例化 `self.F` 时显式添加 `ngf=ngf` 参数，确保两个生成器的基础滤波器数量一致。","https:\u002F\u002Fgithub.com\u002Fvanhuyz\u002FCycleGAN-TensorFlow\u002Fissues\u002F107",[157],{"id":158,"version":159,"summary_zh":160,"released_at":161},333846,"v0.1-alpha","超参数：\n\n* batch_size：1\n* image_size：256\n* use_lsgan：True\n* norm：instance\n* lambda1：10\n* lambda2：10\n* 初始学习率：2e-4\n* 池大小：50\n","2017-04-21T08:58:59"]