[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-Spijkervet--SimCLR":3,"tool-Spijkervet--SimCLR":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 真正成长为懂上",141543,2,"2026-04-06T11:32:54",[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":72,"owner_website":79,"owner_url":80,"languages":81,"stars":90,"forks":91,"last_commit_at":92,"license":93,"difficulty_score":32,"env_os":94,"env_gpu":95,"env_ram":96,"env_deps":97,"category_tags":105,"github_topics":106,"view_count":32,"oss_zip_url":76,"oss_zip_packed_at":76,"status":17,"created_at":112,"updated_at":113,"faqs":114,"releases":145},4668,"Spijkervet\u002FSimCLR","SimCLR","PyTorch implementation of SimCLR: A Simple Framework for Contrastive Learning of Visual Representations by T. Chen et al.","SimCLR 是一个基于 PyTorch 实现的开源框架，旨在通过“对比学习”让机器在没有人工标注标签的情况下，高效地理解图像内容。它主要解决了传统深度学习依赖大量昂贵标注数据的问题，能够利用海量无标签图片预训练出强大的视觉特征提取器，显著提升模型在图像分类等任务中的表现。\n\n这款工具非常适合人工智能研究人员、算法工程师以及希望探索自监督学习技术的开发者使用。无论是想在 CIFAR-10 或 STL-10 数据集上复现经典实验，还是需要将预训练模型迁移到自己的项目中，SimCLR 都提供了便捷的入口。其技术亮点在于不仅完整还原了原论文的核心算法，还特别支持分布式数据并行训练、全局批归一化以及 LARS 优化器，这使得用户能够在多 GPU 环境下高效训练大规模模型。此外，项目不仅提供详细的快速启动指南和 Google Colab 演示，还将核心功能封装为独立的 Python 包，让用户只需几行代码即可集成 ResNet 编码器并开展线性评估，极大地降低了自监督视觉表示学习的使用门槛。","# SimCLR\nPyTorch implementation of SimCLR: A Simple Framework for Contrastive Learning of Visual Representations by T. Chen et al.\nIncluding support for:\n- Distributed data parallel training\n- Global batch normalization\n- LARS (Layer-wise Adaptive Rate Scaling) optimizer.\n\n[Link to paper](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2002.05709.pdf)\n\nOpen SimCLR in Google Colab Notebook (with TPU support)\n\n[![Open In Colab](https:\u002F\u002Fcolab.research.google.com\u002Fassets\u002Fcolab-badge.svg)](https:\u002F\u002Fcolab.research.google.com\u002Fdrive\u002F1ObAYvVKQjMG5nd2wIno7j2y_X91E9IrX)\n\nOpen SimCLR results comparison on tensorboard.dev:\n\n\u003Cp align=\"left\">\n  \u003Ca href=\"https:\u002F\u002Ftensorboard.dev\u002Fexperiment\u002FA3laNdafRBes0oR45Y6LiA\u002F#scalars\" target=\"_blank\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FSpijkervet_SimCLR_readme_055b5d10e4f3.png\" height=\"40\"\u002F>\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\n\n### Quickstart (fine-tune linear classifier)\nThis downloads a pre-trained model and trains the linear classifier, which should receive an accuracy of ±`82.9%` on the STL-10 test set.\n```\ngit clone https:\u002F\u002Fgithub.com\u002Fspijkervet\u002FSimCLR.git && cd SimCLR\nwget https:\u002F\u002Fgithub.com\u002FSpijkervet\u002FSimCLR\u002Freleases\u002Fdownload\u002F1.2\u002Fcheckpoint_100.tar\nsh setup.sh || python3 -m pip install -r requirements.txt || exit 1\nconda activate simclr\npython linear_evaluation.py --dataset=STL10 --model_path=. --epoch_num=100 --resnet resnet50\n```\n\n#### CPU\n```\nwget https:\u002F\u002Fgithub.com\u002FSpijkervet\u002FSimCLR\u002Freleases\u002Fdownload\u002F1.1\u002Fcheckpoint_100.tar -O checkpoint_100.tar\npython linear_evaluation.py --model_path=. --epoch_num=100 --resnet=resnet18 --logistic_batch_size=32\n```\n\n### `simclr` package\nSimCLR for PyTorch is now available as a Python package! Simply run and use it in your project:\n```\npip install simclr\n```\n\nYou can then simply import SimCLR:\n```\nfrom simclr import SimCLR\n\nencoder = ResNet(...)\nprojection_dim = 64\nn_features = encoder.fc.in_features  # get dimensions of last fully-connected layer\nmodel = SimCLR(encoder, projection_dim, n_features)\n```\n\n### Training ResNet encoder:\nSimply run the following to pre-train a ResNet encoder using SimCLR on the CIFAR-10 dataset:\n```\npython main.py --dataset CIFAR10\n```\n\n### Distributed Training\nWith distributed data parallel (DDP) training:\n```\nCUDA_VISIBLE_DEVICES=0 python main.py --nodes 2 --nr 0\nCUDA_VISIBLE_DEVICES=1 python main.py --nodes 2 --nr 1\nCUDA_VISIBLE_DEVICES=2 python main.py --nodes 2 --nr 2\nCUDA_VISIBLE_DEVICES=N python main.py --nodes 2 --nr 3\n```\n\n\n### Results\nThese are the top-1 accuracy of linear classifiers trained on the (frozen) representations learned by SimCLR:\n\n| Method  | Batch Size | ResNet | Projection output dimensionality | Epochs | Optimizer | STL-10 | CIFAR-10\n| ------------- | ------------- | ------------- | ------------- | ------------- | ------------- | ------------- | ------------- |\n| SimCLR + Linear eval. | 256 | ResNet50 | 64 | 100 | Adam | **0.829** | **0.833** | \n| SimCLR + Linear eval. | 256 | ResNet50 | 64 | 100 | LARS | 0.783 | - | \n| SimCLR + Linear eval. | 256 | ResNet18 | 64 | 100 |  Adam | 0.765  | - |\n| SimCLR + Linear eval. | 256 | ResNet18 | 64 | 40 | Adam | 0.719  | - |\n| SimCLR + Linear eval. | 512 | ResNet18 | 64 | 40 | Adam | 0.71 | - |\n| Logistic Regression | - | - | - | 40 | Adam | 0.358 | 0.389 |\n\n\n\n### Pre-trained models\n| ResNet (batch_size, epochs) | Optimizer | STL-10 Top-1 |\n| ------------- | ------------- | ------------- |\n| [ResNet50 (256, 100)](https:\u002F\u002Fgithub.com\u002FSpijkervet\u002FSimCLR\u002Freleases\u002Fdownload\u002F1.2\u002Fcheckpoint_100.tar) | Adam | **0.829** |\n| [ResNet18 (256, 100)](https:\u002F\u002Fgithub.com\u002FSpijkervet\u002FSimCLR\u002Freleases\u002Fdownload\u002F1.1\u002Fcheckpoint_100.tar) | Adam | 0.765 |\n| [ResNet18 (256, 40)](https:\u002F\u002Fgithub.com\u002FSpijkervet\u002FSimCLR\u002Freleases\u002Fdownload\u002F1.0\u002Fcheckpoint_40.tar) | Adam | 0.719 |\n\n`python linear_evaluation.py --model_path=. --epoch_num=100`\n\n#### LARS optimizer\nThe LARS optimizer is implemented in `modules\u002Flars.py`. It can be activated by adjusting the `config\u002Fconfig.yaml` optimizer setting to: `optimizer: \"LARS\"`. It is still experimental and has not been thoroughly tested.\n\n## What is SimCLR?\nSimCLR is a \"simple framework for contrastive learning of visual representations\". The contrastive prediction task is defined on pairs of augmented examples, resulting in 2N examples per minibatch. Two augmented versions of an image are considered as a correlated, \"positive\" pair (x_i and x_j). The remaining 2(N - 1) augmented examples are considered negative examples. The contrastive prediction task aims to identify x_j in the set of negative examples for a given x_i.\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FSpijkervet_SimCLR_readme_d8fe7d6042ec.png\" width=\"500\"\u002F>\n\u003C\u002Fp>\n\n## Usage\nRun the following command to setup a conda environment:\n```\nsh setup.sh\nconda activate simclr\n```\n\nOr alternatively with pip:\n```\npip install -r requirements.txt\n```\n\nThen, simply run for single GPU or CPU training:\n```\npython main.py\n```\n\nFor distributed training (DDP), use for every process in nodes, in which N is the GPU number you would like to dedicate the process to:\n```\nCUDA_VISIBLE_DEVICES=0 python main.py --nodes 2 --nr 0\nCUDA_VISIBLE_DEVICES=1 python main.py --nodes 2 --nr 1\nCUDA_VISIBLE_DEVICES=2 python main.py --nodes 2 --nr 2\nCUDA_VISIBLE_DEVICES=N python main.py --nodes 2 --nr 3\n```\n\n`--nr` corresponds to the process number of the N nodes we make available for training.\n\n### Testing\nTo test a trained model, make sure to set the `model_path` variable in the `config\u002Fconfig.yaml` to the log ID of the training (e.g. `logs\u002F0`).\nSet the `epoch_num` to the epoch number you want to load the checkpoints from (e.g. `40`).\n\n```\npython linear_evaluation.py\n```\n\nor in place:\n```\npython linear_evaluation.py --model_path=.\u002Fsave --epoch_num=40\n```\n\n\n## Configuration\nThe configuration of training can be found in: `config\u002Fconfig.yaml`. I personally prefer to use files instead of long strings of arguments when configuring a run. An example `config.yaml` file:\n```\n# train options\nbatch_size: 256\nworkers: 16\nstart_epoch: 0\nepochs: 40\ndataset_dir: \".\u002Fdatasets\"\n\n# model options\nresnet: \"resnet18\"\nnormalize: True\nprojection_dim: 64\n\n# loss options\ntemperature: 0.5\n\n# reload options\nmodel_path: \"logs\u002F0\" # set to the directory containing `checkpoint_##.tar` \nepoch_num: 40 # set to checkpoint number\n\n# logistic regression options\nlogistic_batch_size: 256\nlogistic_epochs: 100\n```\n\n## Logging and TensorBoard\nTo view results in TensorBoard, run:\n```\ntensorboard --logdir runs\n```\n\n## Optimizers and learning rate schedule\nThis implementation features the Adam optimizer and the LARS optimizer, with the option to decay the learning rate using a cosine decay schedule. The optimizer and weight decay can be configured in the `config\u002Fconfig.yaml` file.\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FSpijkervet_SimCLR_readme_7704b8838dfc.png\" width=\"400\"\u002F>\n\u003C\u002Fp>\n\n#### Dependencies\n```\ntorch\ntorchvision\ntensorboard\npyyaml\n```\n","# SimCLR\n由T. Chen等人提出的用于视觉表征对比学习的简单框架SimCLR的PyTorch实现。\n支持以下功能：\n- 分布式数据并行训练\n- 全局批归一化\n- LARS（逐层自适应速率缩放）优化器。\n\n[论文链接](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2002.05709.pdf)\n\n在Google Colab Notebook中打开SimCLR（支持TPU）\n\n[![在Colab中打开](https:\u002F\u002Fcolab.research.google.com\u002Fassets\u002Fcolab-badge.svg)](https:\u002F\u002Fcolab.research.google.com\u002Fdrive\u002F1ObAYvVKQjMG5nd2wIno7j2y_X91E9IrX)\n\n在tensorboard.dev上查看SimCLR结果对比：\n\n\u003Cp align=\"left\">\n  \u003Ca href=\"https:\u002F\u002Ftensorboard.dev\u002Fexperiment\u002FA3laNdafRBes0oR45Y6LiA\u002F#scalars\" target=\"_blank\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FSpijkervet_SimCLR_readme_055b5d10e4f3.png\" height=\"40\"\u002F>\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\n\n### 快速入门（微调线性分类器）\n此步骤将下载一个预训练模型并训练线性分类器，该分类器在STL-10测试集上的准确率应达到±`82.9%`。\n```\ngit clone https:\u002F\u002Fgithub.com\u002Fspijkervet\u002FSimCLR.git && cd SimCLR\nwget https:\u002F\u002Fgithub.com\u002FSpijkervet\u002FSimCLR\u002Freleases\u002Fdownload\u002F1.2\u002Fcheckpoint_100.tar\nsh setup.sh || python3 -m pip install -r requirements.txt || exit 1\nconda activate simclr\npython linear_evaluation.py --dataset=STL10 --model_path=. --epoch_num=100 --resnet resnet50\n```\n\n#### CPU\n```\nwget https:\u002F\u002Fgithub.com\u002FSpijkervet\u002FSimCLR\u002Freleases\u002Fdownload\u002F1.1\u002Fcheckpoint_100.tar -O checkpoint_100.tar\npython linear_evaluation.py --model_path=. --epoch_num=100 --resnet=resnet18 --logistic_batch_size=32\n```\n\n### `simclr`软件包\nSimCLR现已作为Python包提供！只需运行即可在您的项目中使用：\n```\npip install simclr\n```\n\n然后您可以直接导入SimCLR：\n```\nfrom simclr import SimCLR\n\nencoder = ResNet(...)\nprojection_dim = 64\nn_features = encoder.fc.in_features  # 获取最后一层全连接层的维度\nmodel = SimCLR(encoder, projection_dim, n_features)\n```\n\n### 训练ResNet编码器：\n只需运行以下命令即可使用SimCLR在CIFAR-10数据集上预训练一个ResNet编码器：\n```\npython main.py --dataset CIFAR10\n```\n\n### 分布式训练\n通过分布式数据并行（DDP）训练：\n```\nCUDA_VISIBLE_DEVICES=0 python main.py --nodes 2 --nr 0\nCUDA_VISIBLE_DEVICES=1 python main.py --nodes 2 --nr 1\nCUDA_VISIBLE_DEVICES=2 python main.py --nodes 2 --nr 2\nCUDA_VISIBLE_DEVICES=N python main.py --nodes 2 --nr 3\n```\n\n\n### 结果\n以下是基于SimCLR学习到的（冻结）表征训练的线性分类器的Top-1准确率：\n\n| 方法  | 批量大小 | ResNet | 投影输出维度 | 轮数 | 优化器 | STL-10 | CIFAR-10\n| ------------- | ------------- | ------------- | ------------- | ------------- | ------------- | ------------- | ------------- |\n| SimCLR + 线性评估 | 256 | ResNet50 | 64 | 100 | Adam | **0.829** | **0.833** | \n| SimCLR + 线性评估 | 256 | ResNet50 | 64 | 100 | LARS | 0.783 | - | \n| SimCLR + 线性评估 | 256 | ResNet18 | 64 | 100 |  Adam | 0.765  | - |\n| SimCLR + 线性评估 | 256 | ResNet18 | 64 | 40 | Adam | 0.719  | - |\n| SimCLR + 线性评估 | 512 | ResNet18 | 64 | 40 | Adam | 0.71 | - |\n| 逻辑回归 | - | - | - | 40 | Adam | 0.358 | 0.389 |\n\n\n\n### 预训练模型\n| ResNet（批量大小，轮数） | 优化器 | STL-10 Top-1 |\n| ------------- | ------------- | ------------- |\n| [ResNet50 (256, 100)](https:\u002F\u002Fgithub.com\u002FSpijkervet\u002FSimCLR\u002Freleases\u002Fdownload\u002F1.2\u002Fcheckpoint_100.tar) | Adam | **0.829** |\n| [ResNet18 (256, 100)](https:\u002F\u002Fgithub.com\u002FSpijkervet\u002FSimCLR\u002Freleases\u002Fdownload\u002F1.1\u002Fcheckpoint_100.tar) | Adam | 0.765 |\n| [ResNet18 (256, 40)](https:\u002F\u002Fgithub.com\u002FSpijkervet\u002FSimCLR\u002Freleases\u002Fdownload\u002F1.0\u002Fcheckpoint_40.tar) | Adam | 0.719 |\n\n`python linear_evaluation.py --model_path=. --epoch_num=100`\n\n#### LARS优化器\nLARS优化器实现于`modules\u002Flars.py`。可通过将`config\u002Fconfig.yaml`中的优化器设置调整为：`optimizer: \"LARS\"`来启用。该优化器目前仍处于实验阶段，尚未经过充分测试。\n\n## 什么是SimCLR？\nSimCLR是一种“用于视觉表征对比学习的简单框架”。对比预测任务定义在成对的增强样本上，每个小批量包含2N个样本。一张图像的两个增强版本被视为相关联的“正”样本对（x_i和x_j）。其余2(N - 1)个增强样本则被视为负样本。对比预测任务的目标是针对给定的x_i，在负样本集中识别出x_j。\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FSpijkervet_SimCLR_readme_d8fe7d6042ec.png\" width=\"500\"\u002F>\n\u003C\u002Fp>\n\n## 使用方法\n运行以下命令以设置conda环境：\n```\nsh setup.sh\nconda activate simclr\n```\n\n或者使用pip：\n```\npip install -r requirements.txt\n```\n\n然后，只需运行即可进行单GPU或CPU训练：\n```\npython main.py\n```\n\n对于分布式训练（DDP），请为每个节点中的每个进程使用以下命令，其中N为您希望分配给该进程的GPU编号：\n```\nCUDA_VISIBLE_DEVICES=0 python main.py --nodes 2 --nr 0\nCUDA_VISIBLE_DEVICES=1 python main.py --nodes 2 --nr 1\nCUDA_VISIBLE_DEVICES=2 python main.py --nodes 2 --nr 2\nCUDA_VISIBLE_DEVICES=N python main.py --nodes 2 --nr 3\n```\n\n`--nr`对应于我们为训练提供的N个节点中的进程编号。\n\n### 测试\n要测试已训练的模型，请确保将`config\u002Fconfig.yaml`中的`model_path`变量设置为训练的日志ID（例如`logs\u002F0`）。\n将`epoch_num`设置为您希望加载检查点的轮次（例如`40`）。\n\n```\npython linear_evaluation.py\n```\n\n或就地执行：\n```\npython linear_evaluation.py --model_path=.\u002Fsave --epoch_num=40\n```\n\n\n## 配置\n训练的配置可在`config\u002Fconfig.yaml`中找到。我个人更倾向于使用文件而不是长串的参数来配置运行。以下是一个`config.yaml`文件示例：\n```\n# 训练选项\nbatch_size: 256\nworkers: 16\nstart_epoch: 0\nepochs: 40\ndataset_dir: \".\u002Fdatasets\"\n\n# 模型选项\nresnet: \"resnet18\"\nnormalize: True\nprojection_dim: 64\n\n# 损失选项\ntemperature: 0.5\n\n# 重载选项\nmodel_path: \"logs\u002F0\" # 设置为包含`checkpoint_##.tar`的目录\nepoch_num: 40 # 设置为检查点编号\n\n# 逻辑回归选项\nlogistic_batch_size: 256\nlogistic_epochs: 100\n```\n\n## 日志记录与TensorBoard\n要在TensorBoard中查看结果，请运行：\n```\ntensorboard --logdir runs\n```\n\n## 优化器与学习率调度\n本实现提供了Adam优化器和LARS优化器，并可选择使用余弦退火学习率调度来衰减学习率。优化器和权重衰减可以在`config\u002Fconfig.yaml`文件中进行配置。\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FSpijkervet_SimCLR_readme_7704b8838dfc.png\" width=\"400\"\u002F>\n\u003C\u002Fp>\n\n#### 依赖项\n```\ntorch\ntorchvision\ntensorboard\npyyaml\n```","# SimCLR 快速上手指南\n\nSimCLR 是一个用于视觉表示对比学习的简单框架（PyTorch 实现）。本指南将帮助你快速配置环境、安装依赖并运行预训练模型评估或从头开始训练。\n\n## 环境准备\n\n在开始之前，请确保你的系统满足以下要求：\n\n*   **操作系统**: Linux 或 macOS (Windows 需通过 WSL 运行)\n*   **Python**: 3.6+\n*   **硬件**: 支持 CUDA 的 GPU（推荐）或 CPU\n*   **前置依赖**:\n    *   `conda` (推荐用于环境管理) 或 `pip`\n    *   Git\n\n**核心依赖库**：\n*   `torch`\n*   `torchvision`\n*   `tensorboard`\n*   `pyyaml`\n\n> **国内加速建议**：建议使用清华源或阿里源加速 Python 包和 Conda 环境的安装，以提升下载速度。\n\n## 安装步骤\n\n你可以选择使用 Conda 创建隔离环境（推荐），或直接使用 pip 安装。\n\n### 方法一：使用 Conda（推荐）\n\n1.  **克隆项目代码**：\n    ```bash\n    git clone https:\u002F\u002Fgithub.com\u002Fspijkervet\u002FSimCLR.git && cd SimCLR\n    ```\n\n2.  **创建并激活环境**：\n    运行提供的设置脚本（该脚本会自动处理依赖安装）：\n    ```bash\n    sh setup.sh\n    conda activate simclr\n    ```\n    *如果 `setup.sh` 执行失败，可手动安装依赖：*\n    ```bash\n    python3 -m pip install -r requirements.txt -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n    conda create -n simclr python=3.8\n    conda activate simclr\n    pip install torch torchvision tensorboard pyyaml -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n    ```\n\n### 方法二：作为 Python 包安装\n\n如果你只想在现有项目中调用 SimCLR 模块：\n\n```bash\npip install simclr -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n## 基本使用\n\n### 场景 1：快速评估预训练模型（微调线性分类器）\n\n这是最简单的入门方式。以下命令会下载一个在 STL-10 数据集上预训练的 ResNet50 模型，并训练一个线性分类器进行评估（预期准确率约为 82.9%）。\n\n```bash\n# 下载预训练权重\nwget https:\u002F\u002Fgithub.com\u002FSpijkervet\u002FSimCLR\u002Freleases\u002Fdownload\u002F1.2\u002Fcheckpoint_100.tar\n\n# 运行线性评估\npython linear_evaluation.py --dataset=STL10 --model_path=. --epoch_num=100 --resnet resnet50\n```\n\n**CPU 用户示例**（使用较小的 ResNet18 模型）：\n```bash\nwget https:\u002F\u002Fgithub.com\u002FSpijkervet\u002FSimCLR\u002Freleases\u002Fdownload\u002F1.1\u002Fcheckpoint_100.tar -O checkpoint_100.tar\npython linear_evaluation.py --model_path=. --epoch_num=100 --resnet=resnet18 --logistic_batch_size=32\n```\n\n### 场景 2：从头开始训练编码器\n\n若要在 CIFAR-10 数据集上使用 SimCLR 框架预训练 ResNet 编码器：\n\n```bash\npython main.py --dataset CIFAR10\n```\n\n### 场景 3：在代码中直接调用\n\n如果你已通过 `pip install simclr` 安装了包，可以在 Python 脚本中直接使用：\n\n```python\nfrom simclr import SimCLR\nfrom torchvision.models import resnet50\n\n# 初始化编码器\nencoder = resnet50()\nprojection_dim = 64\nn_features = encoder.fc.in_features  # 获取最后一层全连接层的维度\n\n# 构建 SimCLR 模型\nmodel = SimCLR(encoder, projection_dim, n_features)\n```\n\n### 进阶：分布式训练 (DDP)\n\n如果你有多张 GPU，可以使用以下命令启动分布式训练（假设使用 2 个节点）：\n\n```bash\nCUDA_VISIBLE_DEVICES=0 python main.py --nodes 2 --nr 0\nCUDA_VISIBLE_DEVICES=1 python main.py --nodes 2 --nr 1\n```\n\n### 查看训练结果\n\n训练完成后，使用 TensorBoard 查看损失曲线和准确率：\n\n```bash\ntensorboard --logdir runs\n```\n然后在浏览器中访问显示的地址（通常为 `http:\u002F\u002Flocalhost:6006`）。\n\n> **配置提示**：所有训练参数（如 batch size、epochs、优化器类型等）均可在 `config\u002Fconfig.yaml` 文件中修改。","某医疗影像初创团队需要在仅有少量标注数据的情况下，快速构建一个能识别肺部异常的高精度分类模型。\n\n### 没有 SimCLR 时\n- **标注成本高昂**：依赖放射科医生手动标注数万张 CT 切片，耗时数月且预算严重超支。\n- **小样本过拟合**：直接使用传统监督学习训练 ResNet，因标注数据太少，模型在训练集表现尚可但在测试集准确率仅为 35% 左右。\n- **特征提取能力弱**：模型无法有效捕捉医学图像中细微的纹理差异，导致漏诊率高，难以满足临床辅助诊断需求。\n- **算力利用率低**：缺乏有效的自监督预训练策略，大量未标注的闲置历史数据无法被利用来增强模型鲁棒性。\n\n### 使用 SimCLR 后\n- **大幅降低标注依赖**：利用 SimCLR 的对比学习框架，先在十万级未标注 CT 数据上进行自监督预训练，仅需极少量标注样本微调即可。\n- **显著提升准确率**：基于预训练权重训练线性分类器，在相同测试集上的 Top-1 准确率从 35% 跃升至 82% 以上，达到可用标准。\n- **通用特征表达强**：模型学会了忽略无关噪声，精准提取病灶核心特征，即使面对不同设备拍摄的图像也能保持稳定判断。\n- **高效利用闲置数据**：通过分布式数据并行训练，快速消化了医院积累的历史存量数据，将“数据包袱”转化为“资产”。\n\nSimCLR 通过自监督学习打破了医疗 AI 对大规模标注数据的依赖，让小规模团队也能用少量标签训练出专家级模型。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FSpijkervet_SimCLR_2f586e3e.png","Spijkervet","Janne","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FSpijkervet_f57a1bd6.jpg","Music producer, machine learning in MIR & occasional ethical hacker",null,"San Francisco","janne.spijkervet@gmail.com","jspijkervet.com","https:\u002F\u002Fgithub.com\u002FSpijkervet",[82,86],{"name":83,"color":84,"percentage":85},"Python","#3572A5",99,{"name":87,"color":88,"percentage":89},"Shell","#89e051",1,816,167,"2026-03-23T20:36:22","MIT","Linux, macOS","训练阶段必需 NVIDIA GPU（支持分布式数据并行 DDP），支持 TPU（Google Colab）；CPU 仅支持线性评估推理。具体显存和 CUDA 版本未说明，但分布式训练暗示需要多卡环境。","未说明",{"notes":98,"python":99,"dependencies":100},"1. 支持使用 Conda 或 pip 安装依赖，官方推荐使用 setup.sh 脚本创建名为 'simclr' 的 Conda 环境。\n2. 支持分布式训练（DDP），需设置 CUDA_VISIBLE_DEVICES 并指定节点参数。\n3. 提供预训练模型下载（ResNet18\u002F50），用于线性分类器微调测试。\n4. 包含实验性的 LARS 优化器实现，需在配置文件中手动开启。\n5. 可在 Google Colab 上直接运行（含 TPU 支持）。","3.x (通过 python3 命令推断)",[101,102,103,104],"torch","torchvision","tensorboard","pyyaml",[14],[107,108,109,110,111],"simclr","pytorch","contrastive-learning","unsupervised-learning","representation-learning","2026-03-27T02:49:30.150509","2026-04-07T07:18:26.370905",[115,120,125,130,135,140],{"id":116,"question_zh":117,"answer_zh":118,"source_url":119},21234,"为什么在计算余弦相似度之前还要进行 L2 归一化？","这是一个冗余操作。`cos_similarity` 函数内部已经包含了 L2 归一化的功能，因此在调用它之前手动对向量进行 L2 归一化是不必要的。维护者已确认并在后续提交中移除了 `SimCLR\u002Fmodules\u002Fsimclr.py` 中多余的归一化代码。","https:\u002F\u002Fgithub.com\u002FSpijkervet\u002FSimCLR\u002Fissues\u002F15",{"id":121,"question_zh":122,"answer_zh":123,"source_url":124},21235,"运行线性评估（linear_evaluation.py）时出现 TypeError: new() received an invalid combination of arguments 错误怎么办？","这是 `linear_evaluation.py` 第 170 行初始化 `SimCLR` 模型时参数传递顺序错误导致的。请将代码：\n`simclr_model = SimCLR(args, encoder, n_features)`\n修改为：\n`simclr_model = SimCLR(encoder, args.projection_dim, n_features)`\n即可解决该问题。","https:\u002F\u002Fgithub.com\u002FSpijkervet\u002FSimCLR\u002Fissues\u002F28",{"id":126,"question_zh":127,"answer_zh":128,"source_url":129},21236,"NT_Xent 损失函数报错提示缺少 world_size 参数，或者在多 GPU 模式下无法学习有效特征怎么办？","需要在初始化 `NT_Xent` 时正确计算并传入 `world_size` 参数。解决方法是将计算逻辑改为：\n`args.world_size = args.gpus * args.nodes`\n`criterion = NT_Xent(args.batch_size, args.temperature, args.device, args.world_size)`\n此外，如果多 GPU 下损失下降但模型不收敛，可能是原始实现中拼接和掩码逻辑存在 Bug，建议参考修复后的 `NT_Xent` 实现（如 SynapseCLR 分支）以确保在多卡环境下能学习到有意义的表示。","https:\u002F\u002Fgithub.com\u002FSpijkervet\u002FSimCLR\u002Fissues\u002F22",{"id":131,"question_zh":132,"answer_zh":133,"source_url":134},21237,"CIFAR-10 数据集上的准确率远低于原论文报告的结果（例如只有 55% 而不是 90%+），原因是什么？","这通常与超参数设置有关，特别是投影维度（projection_dim）和批次大小（batch-size）。原论文在使用 ResNet-50 时报告了约 84% 的准确率。维护者已在最新提交中通过调整配置复现了接近论文的结果（约 83.3% 准确率），建议检查是否使用了正确的投影维度（如 128 而非 64）以及足够的批次大小。","https:\u002F\u002Fgithub.com\u002FSpijkervet\u002FSimCLR\u002Fissues\u002F4",{"id":136,"question_zh":137,"answer_zh":138,"source_url":139},21238,"PyTorch 版本的损失函数结果与 TensorFlow 官方实现不一致，是否有修正方案？","是的，许多 PyTorch 实现可能相互复制了有偏差的逻辑。一个经过验证的、与 TensorFlow 官方实现一致的 NT-Xent 损失函数重写如下：\n1. 分别对 x 和 y 进行 L2 归一化。\n2. 计算自相关矩阵和互相关矩阵并除以温度系数。\n3. 构造一个大对角线掩码（设为 1e9）排除自身。\n4. 使用 `F.cross_entropy` 分别计算两个方向的损失并求和。\n具体代码可参考 Issue 中的 `nt_cross_entropy` 函数实现，该实现已通过数值测试验证与 TensorFlow 版本一致。","https:\u002F\u002Fgithub.com\u002FSpijkervet\u002FSimCLR\u002Fissues\u002F18",{"id":141,"question_zh":142,"answer_zh":143,"source_url":144},21239,"在 ImageNet 上训练时损失曲线下降非常缓慢且平稳，最终准确率较低（如 40.8%），这是正常现象吗？","在 ImageNet 上使用批次大小 256 训练时，损失曲线确实可能表现得比较缓慢和平稳。有用户反馈在完整训练后线性评估准确率约为 40.8%。这可能与具体的训练时长、学习率调度或数据增强策略有关。建议确保训练足够多的 epoch，并对比官方基准的配置参数。","https:\u002F\u002Fgithub.com\u002FSpijkervet\u002FSimCLR\u002Fissues\u002F14",[146,151,156],{"id":147,"version":148,"summary_zh":149,"released_at":150},127264,"1.2","config.yaml\n```json\n{\n  \"batch_size\": 256,\n  \"dataset\": \"STL10\",\n  \"epochs\": 100,\n  \"fp16\": false,\n  \"fp16_opt_level\": \"O2\",\n  \"logistic_batch_size\": 256,\n  \"logistic_epochs\": 100,\n  \"model_num\": 40,\n  \"model_path\": \"logs\u002F0\",\n  \"normalize\": true,\n  \"optimizer\": \"Adam\",\n  \"projection_dim\": 64,\n  \"resnet\": \"resnet50\",\n  \"seed\": 42,\n  \"start_epoch\": 0,\n  \"temperature\": 0.5,\n  \"workers\": 16\n}\n```","2020-03-12T23:00:46",{"id":152,"version":153,"summary_zh":154,"released_at":155},127265,"1.1","config.yaml:\n```yaml\n# 训练选项\nseed: 42 # 当在配置中传入时，sacred 会自动处理随机种子\nbatch_size: 256\nworkers: 16\nstart_epoch: 0\nepochs: 100\ndataset: \"STL10\" # STL10\n\n# 模型选项\nresnet: \"resnet18\"\nnormalize: True\nprojection_dim: 64 # “[...] 将表示投影到 128 维的潜在空间”\n\n# 损失选项\noptimizer: \"Adam\" # 或 LARS（实验性）\ntemperature: 0.5 # 参见附录 B.7：不同批量大小下的最优温度\n\n# 重载选项\nmodel_path: \"logs\u002F0\" # 设置为包含 `checkpoint_##.tar` 的目录\nmodel_num: 40 # 设置为检查点编号\n\n# 混合精度训练\nfp16: False \nfp16_opt_level: \"O2\"\n\n\n# 逻辑回归选项\nlogistic_batch_size: 256\nlogistic_epochs: 100\n```","2020-03-12T17:25:07",{"id":157,"version":158,"summary_zh":159,"released_at":160},127266,"1.0","一个预训练的 SimCLR 模型，其参数如下：\n“batch_size”: 256,\n“epochs”: 40,\n“n_out”: 64,\n“normalize”: true,\n“resnet”: “resnet18”,\n“seed”: 634715003,\n“start_epoch”: 0,\n“temperature”: 0.5,\n“workers”: 16\n\n在 STL-10 测试集上，基于 SimCLR 特征训练的逻辑回归分类器的准确率为：0.72\n","2020-03-11T19:56:11"]