[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-microsoft--SoftTeacher":3,"tool-microsoft--SoftTeacher":64},[4,17,26,40,48,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},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,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,2,"2026-04-03T11:11:01",[13,14,15],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":23,"last_commit_at":32,"category_tags":33,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[14,34,35,36,15,37,38,13,39],"数据工具","视频","插件","其他","语言模型","音频",{"id":41,"name":42,"github_repo":43,"description_zh":44,"stars":45,"difficulty_score":10,"last_commit_at":46,"category_tags":47,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[15,14,13,38,37],{"id":49,"name":50,"github_repo":51,"description_zh":52,"stars":53,"difficulty_score":10,"last_commit_at":54,"category_tags":55,"status":16},519,"PaddleOCR","PaddlePaddle\u002FPaddleOCR","PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来，转换成计算机可读取的结构化数据，让机器真正“看懂”图文内容。\n\n面对海量纸质或电子文档，PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域，它扮演着连接图像与大型语言模型（LLM）的桥梁角色，能将视觉信息直接转化为文本输入，助力智能问答、文档分析等应用场景落地。\n\nPaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显：不仅支持全球 100 多种语言的识别，还能在 Windows、Linux、macOS 等多个系统上运行，并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目，PaddleOCR 既能满足快速集成的需求，也能支撑前沿的视觉语言研究，是处理文字识别任务的理想选择。",74913,"2026-04-05T10:44:17",[38,14,13,37],{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":23,"last_commit_at":62,"category_tags":63,"status":16},2471,"tesseract","tesseract-ocr\u002Ftesseract","Tesseract 是一款历史悠久且备受推崇的开源光学字符识别（OCR）引擎，最初由惠普实验室开发，后由 Google 维护，目前由全球社区共同贡献。它的核心功能是将图片中的文字转化为可编辑、可搜索的文本数据，有效解决了从扫描件、照片或 PDF 文档中提取文字信息的难题，是数字化归档和信息自动化的重要基础工具。\n\n在技术层面，Tesseract 展现了强大的适应能力。从版本 4 开始，它引入了基于长短期记忆网络（LSTM）的神经网络 OCR 引擎，显著提升了行识别的准确率；同时，为了兼顾旧有需求，它依然支持传统的字符模式识别引擎。Tesseract 原生支持 UTF-8 编码，开箱即用即可识别超过 100 种语言，并兼容 PNG、JPEG、TIFF 等多种常见图像格式。输出方面，它灵活支持纯文本、hOCR、PDF、TSV 等多种格式，方便后续数据处理。\n\nTesseract 主要面向开发者、研究人员以及需要构建文档处理流程的企业用户。由于它本身是一个命令行工具和库（libtesseract），不包含图形用户界面（GUI），因此最适合具备一定编程能力的技术人员集成到自动化脚本或应用程序中",73286,"2026-04-03T01:56:45",[13,14],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":69,"readme_en":70,"readme_zh":71,"quickstart_zh":72,"use_case_zh":73,"hero_image_url":74,"owner_login":75,"owner_name":76,"owner_avatar_url":77,"owner_bio":78,"owner_company":79,"owner_location":79,"owner_email":80,"owner_twitter":81,"owner_website":82,"owner_url":83,"languages":84,"stars":97,"forks":98,"last_commit_at":99,"license":100,"difficulty_score":101,"env_os":102,"env_gpu":103,"env_ram":104,"env_deps":105,"category_tags":113,"github_topics":114,"view_count":23,"oss_zip_url":79,"oss_zip_packed_at":79,"status":16,"created_at":118,"updated_at":119,"faqs":120,"releases":154},2322,"microsoft\u002FSoftTeacher","SoftTeacher","Semi-Supervised Learning, Object Detection, ICCV2021","SoftTeacher 是一款专注于目标检测任务的开源算法框架，核心致力于解决人工智能训练中“标注数据稀缺”的难题。在现实场景中，获取大量带有精确标注的图片成本高昂且耗时，而 SoftTeacher 通过先进的半监督学习技术，让用户能够利用少量已标注数据和大量未标注数据进行联合训练，从而显著降低对人工标注的依赖。\n\n该工具源自 ICCV 2021 的研究成果，其独特的技术亮点在于提出了“软教师”（Soft Teacher）机制。与传统方法不同，它不依赖僵硬的阈值筛选伪标签，而是通过端到端的方式生成更柔和、更丰富的监督信号，有效提升了模型在数据匮乏场景下的泛化能力和检测精度。实验数据显示，即使在仅有 1% 标注数据的情况下，SoftTeacher 也能将检测性能提升一倍以上。\n\nSoftTeacher 主要面向计算机视觉领域的研究人员、算法工程师及开发者。如果您正在探索低资源环境下的高效模型训练方案，或希望在不增加标注预算的前提下优化现有检测系统，SoftTeacher 将是一个极具价值的技术选择。它提供了完整的代码实现与预训练模型，便于用户快速复现论文结果并应用于实际项目。","# End-to-End Semi-Supervised Object Detection with Soft Teacher\n\n[![PWC](https:\u002F\u002Fimg.shields.io\u002Fendpoint.svg?url=https:\u002F\u002Fpaperswithcode.com\u002Fbadge\u002Fend-to-end-semi-supervised-object-detection\u002Fsemi-supervised-object-detection-on-coco-1)](https:\u002F\u002Fpaperswithcode.com\u002Fsota\u002Fsemi-supervised-object-detection-on-coco-1?p=end-to-end-semi-supervised-object-detection)\n[![PWC](https:\u002F\u002Fimg.shields.io\u002Fendpoint.svg?url=https:\u002F\u002Fpaperswithcode.com\u002Fbadge\u002Fend-to-end-semi-supervised-object-detection\u002Fsemi-supervised-object-detection-on-coco-5)](https:\u002F\u002Fpaperswithcode.com\u002Fsota\u002Fsemi-supervised-object-detection-on-coco-5?p=end-to-end-semi-supervised-object-detection)\n[![PWC](https:\u002F\u002Fimg.shields.io\u002Fendpoint.svg?url=https:\u002F\u002Fpaperswithcode.com\u002Fbadge\u002Fend-to-end-semi-supervised-object-detection\u002Fsemi-supervised-object-detection-on-coco-10)](https:\u002F\u002Fpaperswithcode.com\u002Fsota\u002Fsemi-supervised-object-detection-on-coco-10?p=end-to-end-semi-supervised-object-detection)\n[![PWC](https:\u002F\u002Fimg.shields.io\u002Fendpoint.svg?url=https:\u002F\u002Fpaperswithcode.com\u002Fbadge\u002Fend-to-end-semi-supervised-object-detection\u002Fsemi-supervised-object-detection-on-coco-100)](https:\u002F\u002Fpaperswithcode.com\u002Fsota\u002Fsemi-supervised-object-detection-on-coco-100?p=end-to-end-semi-supervised-object-detection)\n[![PWC](https:\u002F\u002Fimg.shields.io\u002Fendpoint.svg?url=https:\u002F\u002Fpaperswithcode.com\u002Fbadge\u002Fend-to-end-semi-supervised-object-detection\u002Finstance-segmentation-on-coco-minival)](https:\u002F\u002Fpaperswithcode.com\u002Fsota\u002Finstance-segmentation-on-coco-minival?p=end-to-end-semi-supervised-object-detection)\n[![PWC](https:\u002F\u002Fimg.shields.io\u002Fendpoint.svg?url=https:\u002F\u002Fpaperswithcode.com\u002Fbadge\u002Fend-to-end-semi-supervised-object-detection\u002Fobject-detection-on-coco-minival)](https:\u002F\u002Fpaperswithcode.com\u002Fsota\u002Fobject-detection-on-coco-minival?p=end-to-end-semi-supervised-object-detection)\n[![PWC](https:\u002F\u002Fimg.shields.io\u002Fendpoint.svg?url=https:\u002F\u002Fpaperswithcode.com\u002Fbadge\u002Fend-to-end-semi-supervised-object-detection\u002Finstance-segmentation-on-coco)](https:\u002F\u002Fpaperswithcode.com\u002Fsota\u002Finstance-segmentation-on-coco?p=end-to-end-semi-supervised-object-detection)\n[![PWC](https:\u002F\u002Fimg.shields.io\u002Fendpoint.svg?url=https:\u002F\u002Fpaperswithcode.com\u002Fbadge\u002Fend-to-end-semi-supervised-object-detection\u002Fobject-detection-on-coco)](https:\u002F\u002Fpaperswithcode.com\u002Fsota\u002Fobject-detection-on-coco?p=end-to-end-semi-supervised-object-detection)\n\nBy [Mengde Xu*](https:\u002F\u002Fscholar.google.com\u002Fcitations?user=C04zJHEAAAAJ&hl=zh-CN), [Zheng Zhang*](https:\u002F\u002Fgithub.com\u002FstupidZZ), [Han Hu](https:\u002F\u002Fgithub.com\u002Fancientmooner), [Jianfeng Wang](https:\u002F\u002Fgithub.com\u002Famsword), [Lijuan Wang](https:\u002F\u002Fwww.microsoft.com\u002Fen-us\u002Fresearch\u002Fpeople\u002Flijuanw\u002F), [Fangyun Wei](https:\u002F\u002Fscholar.google.com.tw\u002Fcitations?user=-ncz2s8AAAAJ&hl=zh-TW), [Xiang Bai](http:\u002F\u002Fcloud.eic.hust.edu.cn:8071\u002F~xbai\u002F), [Zicheng Liu](https:\u002F\u002Fwww.microsoft.com\u002Fen-us\u002Fresearch\u002Fpeople\u002Fzliu\u002F).\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmicrosoft_SoftTeacher_readme_b8d2c5dc8c65.png)\nThis repo is the official implementation of ICCV2021 paper [\"End-to-End Semi-Supervised Object Detection with Soft Teacher\"](https:\u002F\u002Farxiv.org\u002Fabs\u002F2106.09018).\n\n## Citation\n\n```bib\n@article{xu2021end,\n  title={End-to-End Semi-Supervised Object Detection with Soft Teacher},\n  author={Xu, Mengde and Zhang, Zheng and Hu, Han and Wang, Jianfeng and Wang, Lijuan and Wei, Fangyun and Bai, Xiang and Liu, Zicheng},\n  journal={Proceedings of the IEEE\u002FCVF International Conference on Computer Vision (ICCV)},\n  year={2021}\n}\n```\n\n## Main Results\n\n### Partial Labeled Data\n\nWe followed STAC[1] to evaluate on 5 different data splits for each setting, and report the average performance of 5 splits. The results are shown in the following:\n\n#### 1% labeled data\n| Method | mAP| Model Weights |Config Files|\n| ---- | -------| ----- |----|\n| Baseline|  10.0 |-|[Config](configs\u002Fbaseline\u002Ffaster_rcnn_r50_caffe_fpn_coco_partial_180k.py)|\n| Ours (thr=5e-2)   | 21.62 |[Drive](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1QA8sAw49DJiMHF-Cr7q0j7KgKjlJyklV?usp=sharing)|[Config](configs\u002Fsoft_teacher\u002Fsoft_teacher_faster_rcnn_r50_caffe_fpn_coco_180k.py)|\n| Ours (thr=1e-3)|22.64| [Drive](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1QA8sAw49DJiMHF-Cr7q0j7KgKjlJyklV?usp=sharing)|[Config](configs\u002Fsoft_teacher\u002Fsoft_teacher_faster_rcnn_r50_caffe_fpn_coco_180k.py)|\n\n#### 5% labeled data\n| Method | mAP| Model Weights |Config Files|\n| ---- | -------| ----- |----|\n| Baseline|  20.92 |-|[Config](configs\u002Fbaseline\u002Ffaster_rcnn_r50_caffe_fpn_coco_partial_180k.py)|\n| Ours (thr=5e-2)   | 30.42 |[Drive](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1FBWj5SB888m0LU_XYUOK9QEgiubSbU-8?usp=sharing)|[Config](configs\u002Fsoft_teacher\u002Fsoft_teacher_faster_rcnn_r50_caffe_fpn_coco_180k.py)|\n| Ours (thr=1e-3)|31.7| [Drive](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1FBWj5SB888m0LU_XYUOK9QEgiubSbU-8?usp=sharing)|[Config](configs\u002Fsoft_teacher\u002Fsoft_teacher_faster_rcnn_r50_caffe_fpn_coco_180k.py)|\n\n#### 10% labeled data\n| Method | mAP| Model Weights |Config Files|\n| ---- | -------| ----- |----|\n| Baseline|  26.94 |-|[Config](configs\u002Fbaseline\u002Ffaster_rcnn_r50_caffe_fpn_coco_partial_180k.py)|\n| Ours (thr=5e-2)   | 33.78 |[Drive](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1WyAVpfnWxEgvxCLUesxzNB81fM_de9DI?usp=sharing)|[Config](configs\u002Fsoft_teacher\u002Fsoft_teacher_faster_rcnn_r50_caffe_fpn_coco_180k.py)|\n| Ours (thr=1e-3)|34.7| [Drive](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1WyAVpfnWxEgvxCLUesxzNB81fM_de9DI?usp=sharing)|[Config](configs\u002Fsoft_teacher\u002Fsoft_teacher_faster_rcnn_r50_caffe_fpn_coco_180k.py)|\n\n### Full Labeled Data\n\n#### Faster R-CNN (ResNet-50)\n| Model | mAP| Model Weights |Config Files|\n| ------ |--- | ----- |----|\n| Baseline |  40.9 | - | [Config](configs\u002Fbaseline\u002Ffaster_rcnn_r50_caffe_fpn_coco_full_720k.py) |\n| Ours (thr=5e-2) | 44.05 |[Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1QSwAcU1dpmqVkJiXufW_QaQu-puOeblG\u002Fview?usp=sharing)|[Config](configs\u002Fsoft_teacher\u002Fsoft_teacher_faster_rcnn_r50_caffe_fpn_coco_full_720k.py)|\n| Ours (thr=1e-3) | 44.6 |[Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1QSwAcU1dpmqVkJiXufW_QaQu-puOeblG\u002Fview?usp=sharing)|[Config](configs\u002Fsoft_teacher\u002Fsoft_teacher_faster_rcnn_r50_caffe_fpn_coco_full_720k.py)|\n| Ours* (thr=5e-2) | 44.5 | - | [Config](configs\u002Fsoft_teacher\u002Fsoft_teacher_faster_rcnn_r50_caffe_fpn_coco_full_1440k.py) |\n| Ours* (thr=1e-3) |  44.9 | - | [Config](configs\u002Fsoft_teacher\u002Fsoft_teacher_faster_rcnn_r50_caffe_fpn_coco_full_1440k.py) |\n\n####  Faster R-CNN (ResNet-101)\n| Model | mAP| Model Weights |Config Files|\n| ------ |--- | ----- |----|\n| Baseline |  43.8 | -   | [Config](configs\u002Fbaseline\u002Ffaster_rcnn_r101_caffe_fpn_coco_full_720k.py) |\n| Ours* (thr=5e-2) |  46.9 | [Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1LCZpIKBt0ihnPmvvZolV-L94uIn-U7Sp\u002Fview?usp=sharing) |[Config](configs\u002Fsoft_teacher\u002Fsoft_teacher_faster_rcnn_r101_caffe_fpn_coco_full_1080k.py) |\n| Ours* (thr=1e-3) |  47.6 | [Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1LCZpIKBt0ihnPmvvZolV-L94uIn-U7Sp\u002Fview?usp=sharing) | [Config](configs\u002Fsoft_teacher\u002Fsoft_teacher_faster_rcnn_r101_caffe_fpn_coco_full_1080k.py) |\n\n\n### Notes\n- Ours* means we use longer training schedule.\n- `thr` indicates `model.test_cfg.rcnn.score_thr` in config files. This inference trick was first introduced by Instant-Teaching[2].\n- All models are trained on 8*V100 GPUs\n\n## Usage\n\n### Requirements\n- `Ubuntu 16.04`\n- `Anaconda3` with `python=3.6`\n- `Pytorch=1.9.0`\n- `mmdetection=2.16.0+fe46ffe`\n- `mmcv=1.3.9`\n- `wandb=0.10.31`\n\n#### Notes\n- We use [wandb](https:\u002F\u002Fwandb.ai\u002F) for visualization, if you don't want to use it, just comment line `273-284` in `configs\u002Fsoft_teacher\u002Fbase.py`.\n- The project should be compatible to the latest version of `mmdetection`. If you want to switch to the same version `mmdetection` as ours, run `cd thirdparty\u002Fmmdetection && git checkout v2.16.0`\n### Installation\n```\nmake install\n```\n\n### Data Preparation\n- Download the COCO dataset\n- Execute the following command to generate data set splits:\n```shell script\n# YOUR_DATA should be a directory contains coco dataset.\n# For eg.:\n# YOUR_DATA\u002F\n#  coco\u002F\n#     train2017\u002F\n#     val2017\u002F\n#     unlabeled2017\u002F\n#     annotations\u002F\nln -s ${YOUR_DATA} data\nbash tools\u002Fdataset\u002Fprepare_coco_data.sh conduct\n\n```\nFor concrete instructions of what should be downloaded, please refer to `tools\u002Fdataset\u002Fprepare_coco_data.sh` line [`11-24`](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FSoftTeacher\u002Fblob\u002F863d90a3aa98615be3d156e7d305a22c2a5075f5\u002Ftools\u002Fdataset\u002Fprepare_coco_data.sh#L11)\n### Training\n- To train model on the **partial labeled data** setting:\n```shell script\n# JOB_TYPE: 'baseline' or 'semi', decide which kind of job to run\n# PERCENT_LABELED_DATA: 1, 5, 10. The ratio of labeled coco data in whole training dataset.\n# GPU_NUM: number of gpus to run the job\nfor FOLD in 1 2 3 4 5;\ndo\n  bash tools\u002Fdist_train_partially.sh \u003CJOB_TYPE> ${FOLD} \u003CPERCENT_LABELED_DATA> \u003CGPU_NUM>\ndone\n```\nFor example, we could run the following scripts to train our model on 10% labeled data with 8 GPUs:\n\n```shell script\nfor FOLD in 1 2 3 4 5;\ndo\n  bash tools\u002Fdist_train_partially.sh semi ${FOLD} 10 8\ndone\n```\n\n- To train model on the **full labeled data** setting:\n\n```shell script\nbash tools\u002Fdist_train.sh \u003CCONFIG_FILE_PATH> \u003CNUM_GPUS>\n```\nFor example, to train ours `R50` model with 8 GPUs:\n```shell script\nbash tools\u002Fdist_train.sh configs\u002Fsoft_teacher\u002Fsoft_teacher_faster_rcnn_r50_caffe_fpn_coco_full_720k.py 8\n```\n- To train model on **new dataset**:\n\nThe core idea is to convert a new dataset to coco format. Details about it can be found in the [adding new dataset](https:\u002F\u002Fgithub.com\u002Fopen-mmlab\u002Fmmdetection\u002Fblob\u002Fmaster\u002Fdocs\u002Ftutorials\u002Fcustomize_dataset.md).\n\n\n\n### Evaluation\n```\nbash tools\u002Fdist_test.sh \u003CCONFIG_FILE_PATH> \u003CCHECKPOINT_PATH> \u003CNUM_GPUS> --eval bbox --cfg-options model.test_cfg.rcnn.score_thr=\u003CTHR>\n```\n### Inference\n  To inference with trained model and visualize the detection results:\n\n  ```shell script\n  # [IMAGE_FILE_PATH]: the path of your image file in local file system\n  # [CONFIG_FILE]: the path of a confile file\n  # [CHECKPOINT_PATH]: the path of a trained model related to provided confilg file.\n  # [OUTPUT_PATH]: the directory to save detection result\n  python demo\u002Fimage_demo.py [IMAGE_FILE_PATH] [CONFIG_FILE] [CHECKPOINT_PATH] --output [OUTPUT_PATH]\n  ```\n  For example:\n  - Inference on single image with provided `R50` model:\n   ```shell script\n  python demo\u002Fimage_demo.py \u002Ftmp\u002Ftmp.png configs\u002Fsoft_teacher\u002Fsoft_teacher_faster_rcnn_r50_caffe_fpn_coco_full_720k.py work_dirs\u002Fdownloaded.model --output work_dirs\u002F\n  ```\n\n  After the program completes, a image with the same name as input will be saved to `work_dirs`\n\n  - Inference on many images with provided `R50` model:\n   ```shell script\n  python demo\u002Fimage_demo.py '\u002Ftmp\u002F*.jpg' configs\u002Fsoft_teacher\u002Fsoft_teacher_faster_rcnn_r50_caffe_fpn_coco_full_720k.py work_dirs\u002Fdownloaded.model --output work_dirs\u002F\n  ```\n\n[1] [A Simple Semi-Supervised Learning Framework for Object Detection](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2005.04757.pdf)\n\n\n[2] [Instant-Teaching: An End-to-End Semi-Supervised Object Detection Framework](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2103.11402.pdf)\n","# 基于软教师的端到端半监督目标检测\n\n[![PWC](https:\u002F\u002Fimg.shields.io\u002Fendpoint.svg?url=https:\u002F\u002Fpaperswithcode.com\u002Fbadge\u002Fend-to-end-semi-supervised-object-detection\u002Fsemi-supervised-object-detection-on-coco-1)](https:\u002F\u002Fpaperswithcode.com\u002Fsota\u002Fsemi-supervised-object-detection-on-coco-1?p=end-to-end-semi-supervised-object-detection)\n[![PWC](https:\u002F\u002Fimg.shields.io\u002Fendpoint.svg?url=https:\u002F\u002Fpaperswithcode.com\u002Fbadge\u002Fend-to-end-semi-supervised-object-detection\u002Fsemi-supervised-object-detection-on-coco-5)](https:\u002F\u002Fpaperswithcode.com\u002Fsota\u002Fsemi-supervised-object-detection-on-coco-5?p=end-to-end-semi-supervised-object-detection)\n[![PWC](https:\u002F\u002Fimg.shields.io\u002Fendpoint.svg?url=https:\u002F\u002Fpaperswithcode.com\u002Fbadge\u002Fend-to-end-semi-supervised-object-detection\u002Fsemi-supervised-object-detection-on-coco-10)](https:\u002F\u002Fpaperswithcode.com\u002Fsota\u002Fsemi-supervised-object-detection-on-coco-10?p=end-to-end-semi-supervised-object-detection)\n[![PWC](https:\u002F\u002Fimg.shields.io\u002Fendpoint.svg?url=https:\u002F\u002Fpaperswithcode.com\u002Fbadge\u002Fend-to-end-semi-supervised-object-detection\u002Fsemi-supervised-object-detection-on-coco-100)](https:\u002F\u002Fpaperswithcode.com\u002Fsota\u002Fsemi-supervised-object-detection-on-coco-100?p=end-to-end-semi-supervised-object-detection)\n[![PWC](https:\u002F\u002Fimg.shields.io\u002Fendpoint.svg?url=https:\u002F\u002Fpaperswithcode.com\u002Fbadge\u002Fend-to-end-semi-supervised-object-detection\u002Finstance-segmentation-on-coco-minival)](https:\u002F\u002Fpaperswithcode.com\u002Fsota\u002Finstance-segmentation-on-coco-minival?p=end-to-end-semi-supervised-object-detection)\n[![PWC](https:\u002F\u002Fimg.shields.io\u002Fendpoint.svg?url=https:\u002F\u002Fpaperswithcode.com\u002Fbadge\u002Fend-to-end-semi-supervised-object-detection\u002Fobject-detection-on-coco-minival)](https:\u002F\u002Fpaperswithcode.com\u002Fsota\u002Fobject-detection-on-coco-minival?p=end-to-end-semi-supervised-object-detection)\n[![PWC](https:\u002F\u002Fimg.shields.io\u002Fendpoint.svg?url=https:\u002F\u002Fpaperswithcode.com\u002Fbadge\u002Fend-to-end-semi-supervised-object-detection\u002Finstance-segmentation-on-coco)](https:\u002F\u002Fpaperswithcode.com\u002Fsota\u002Finstance-segmentation-on-coco?p=end-to-end-semi-supervised-object-detection)\n[![PWC](https:\u002F\u002Fimg.shields.io\u002Fendpoint.svg?url=https:\u002F\u002Fpaperswithcode.com\u002Fbadge\u002Fend-to-end-semi-supervised-object-detection\u002Fobject-detection-on-coco)](https:\u002F\u002Fpaperswithcode.com\u002Fsota\u002Fobject-detection-on-coco?p=end-to-end-semi-supervised-object-detection)\n\n作者：[徐孟德*](https:\u002F\u002Fscholar.google.com\u002Fcitations?user=C04zJHEAAAAJ&hl=zh-CN)、[张政*](https:\u002F\u002Fgithub.com\u002FstupidZZ)、[胡汉](https:\u002F\u002Fgithub.com\u002Fancientmooner)、[王建峰](https:\u002F\u002Fgithub.com\u002Famsword)、[王丽娟](https:\u002F\u002Fwww.microsoft.com\u002Fen-us\u002Fresearch\u002Fpeople\u002Flijuanw\u002F)、[魏方云](https:\u002F\u002Fscholar.google.com.tw\u002Fcitations?user=-ncz2s8AAAAJ&hl=zh-TW)、[白翔](http:\u002F\u002Fcloud.eic.hust.edu.cn:8071\u002F~xbai\u002F)、[刘子成](https:\u002F\u002Fwww.microsoft.com\u002Fen-us\u002Fresearch\u002Fpeople\u002Fzliu\u002F)。\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmicrosoft_SoftTeacher_readme_b8d2c5dc8c65.png)\n本仓库是 ICCV2021 论文《基于软教师的端到端半监督目标检测》（https:\u002F\u002Farxiv.org\u002Fabs\u002F2106.09018）的官方实现。\n\n## 引用\n\n```bib\n@article{xu2021end,\n  title={End-to-End Semi-Supervised Object Detection with Soft Teacher},\n  author={Xu, Mengde and Zhang, Zheng and Hu, Han and Wang, Jianfeng and Wang, Lijuan and Wei, Fangyun and Bai, Xiang and Liu, Zicheng},\n  journal={Proceedings of the IEEE\u002FCVF International Conference on Computer Vision (ICCV)},\n  year={2021}\n}\n```\n\n## 主要结果\n\n### 部分标注数据\n\n我们遵循 STAC[1] 的方法，针对每种设置评估了 5 种不同的数据划分，并报告了 5 次划分的平均性能。结果如下：\n\n#### 1% 标注数据\n| 方法 | mAP | 模型权重 | 配置文件 |\n| ---- | -------| ----- |----|\n| 基线 | 10.0 |-|[配置](configs\u002Fbaseline\u002Ffaster_rcnn_r50_caffe_fpn_coco_partial_180k.py)|\n| 我们方法 (thr=5e-2)   | 21.62 |[网盘](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1QA8sAw49DJiMHF-Cr7q0j7KgKjlJyklV?usp=sharing)|[配置](configs\u002Fsoft_teacher\u002Fsoft_teacher_faster_rcnn_r50_caffe_fpn_coco_180k.py)|\n| 我们方法 (thr=1e-3)|22.64| [网盘](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1QA8sAw49DJiMHF-Cr7q0j7KgKjlJyklV?usp=sharing)|[配置](configs\u002Fsoft_teacher\u002Fsoft_teacher_faster_rcnn_r50_caffe_fpn_coco_180k.py)|\n\n#### 5% 标注数据\n| 方法 | mAP | 模型权重 | 配置文件 |\n| ---- | -------| ----- |----|\n| 基线 | 20.92 |-|[配置](configs\u002Fbaseline\u002Ffaster_rcnn_r50_caffe_fpn_coco_partial_180k.py)|\n| 我们方法 (thr=5e-2)   | 30.42 |[网盘](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1FBWj5SB888m0LU_XYUOK9QEgiubSbU-8?usp=sharing)|[配置](configs\u002Fsoft_teacher\u002Fsoft_teacher_faster_rcnn_r50_caffe_fpn_coco_180k.py)|\n| 我们方法 (thr=1e-3)|31.7| [网盘](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1FBWj5SB888m0LU_XYUOK9QEgiubSbU-8?usp=sharing)|[配置](configs\u002Fsoft_teacher\u002Fsoft_teacher_faster_rcnn_r50_caffe_fpn_coco_180k.py)|\n\n#### 10% 标注数据\n| 方法 | mAP | 模型权重 | 配置文件 |\n| ---- | -------| ----- |----|\n| 基线 | 26.94 |-|[配置](configs\u002Fbaseline\u002Ffaster_rcnn_r50_caffe_fpn_coco_partial_180k.py)|\n| 我们方法 (thr=5e-2)   | 33.78 |[网盘](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1WyAVpfnWxEgvxCLUesxzNB81fM_de9DI?usp=sharing)|[配置](configs\u002Fsoft_teacher\u002Fsoft_teacher_faster_rcnn_r50_caffe_fpn_coco_180k.py)|\n| 我们方法 (thr=1e-3)|34.7| [网盘](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1WyAVpfnWxEgvxCLUesxzNB81fM_de9DI?usp=sharing)|[配置](configs\u002Fsoft_teacher\u002Fsoft_teacher_faster_rcnn_r50_caffe_fpn_coco_180k.py)|\n\n### 全部标注数据\n\n#### Faster R-CNN (ResNet-50)\n| 模型 | mAP | 模型权重 | 配置文件 |\n| ------ |--- | ----- |----|\n| 基线 | 40.9 | - | [配置](configs\u002Fbaseline\u002Ffaster_rcnn_r50_caffe_fpn_coco_full_720k.py) |\n| 我们方法 (thr=5e-2) | 44.05 |[网盘](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1QSwAcU1dpmqVkJiXufW_QaQu-puOeblG\u002Fview?usp=sharing)|[配置](configs\u002Fsoft_teacher\u002Fsoft_teacher_faster_rcnn_r50_caffe_fpn_coco_full_720k.py)|\n| 我们方法 (thr=1e-3) | 44.6 |[网盘](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1QSwAcU1dpmqVkJiXufW_QaQu-puOeblG\u002Fview?usp=sharing)|[配置](configs\u002Fsoft_teacher\u002Fsoft_teacher_faster_rcnn_r50_caffe_fpn_coco_full_720k.py)|\n| 我们方法* (thr=5e-2) | 44.5 | - | [配置](configs\u002Fsoft_teacher\u002Fsoft_teacher_faster_rcnn_r50_caffe_fpn_coco_full_1440k.py) |\n| 我们方法* (thr=1e-3) | 44.9 | - | [配置](configs\u002Fsoft_teacher\u002Fsoft_teacher_faster_rcnn_r50_caffe_fpn_coco_full_1440k.py) |\n\n#### Faster R-CNN (ResNet-101)\n| 模型 | mAP | 模型权重 | 配置文件 |\n| ------ |--- | ----- |----|\n| 基线 | 43.8 | -   | [配置](configs\u002Fbaseline\u002Ffaster_rcnn_r101_caffe_fpn_coco_full_720k.py) |\n| 我们方法* (thr=5e-2) | 46.9 | [网盘](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1LCZpIKBt0ihnPmvvZolV-L94uIn-U7Sp\u002Fview?usp=sharing) |[配置](configs\u002Fsoft_teacher\u002Fsoft_teacher_faster_rcnn_r101_caffe_fpn_coco_full_1080k.py) |\n| 我们方法* (thr=1e-3) | 47.6 | [网盘](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1LCZpIKBt0ihnPmvvZolV-L94uIn-U7Sp\u002Fview?usp=sharing) | [配置](configs\u002Fsoft_teacher\u002Fsoft_teacher_faster_rcnn_r101_caffe_fpn_coco_full_1080k.py) |\n\n### 注释\n- 我们的*表示我们使用了更长的训练计划。\n- `thr` 表示配置文件中的 `model.test_cfg.rcnn.score_thr`。这一推理技巧最早由 Instant-Teaching[2] 提出。\n- 所有模型均在 8 张 V100 GPU 上进行训练。\n\n## 使用方法\n\n### 需求\n- `Ubuntu 16.04`\n- 带有 `python=3.6` 的 `Anaconda3`\n- `Pytorch=1.9.0`\n- `mmdetection=2.16.0+fe46ffe`\n- `mmcv=1.3.9`\n- `wandb=0.10.31`\n\n#### 注意事项\n- 我们使用 [wandb](https:\u002F\u002Fwandb.ai\u002F) 进行可视化，如果您不想使用它，只需注释掉 `configs\u002Fsoft_teacher\u002Fbase.py` 文件中的第 273–284 行即可。\n- 该项目应与最新版本的 `mmdetection` 兼容。如果您想切换到与我们相同的 `mmdetection` 版本，请运行 `cd thirdparty\u002Fmmdetection && git checkout v2.16.0`。\n### 安装\n```\nmake install\n```\n\n### 数据准备\n- 下载 COCO 数据集\n- 执行以下命令以生成数据集划分：\n```shell script\n# YOUR_DATA 应该是一个包含 COCO 数据集的目录。\n# 例如：\n# YOUR_DATA\u002F\n#  coco\u002F\n#     train2017\u002F\n#     val2017\u002F\n#     unlabeled2017\u002F\n#     annotations\u002F\nln -s ${YOUR_DATA} data\nbash tools\u002Fdataset\u002Fprepare_coco_data.sh conduct\n```\n有关具体需要下载的内容，请参阅 `tools\u002Fdataset\u002Fprepare_coco_data.sh` 文件中的 [`11-24`](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FSoftTeacher\u002Fblob\u002F863d90a3aa98615be3d156e7d305a22c2a5075f5\u002Ftools\u002Fdataset\u002Fprepare_coco_data.sh#L11) 行。\n### 训练\n- 在**部分标注数据**设置下训练模型：\n```shell script\n# JOB_TYPE: 'baseline' 或 'semi'，决定运行哪种任务\n# PERCENT_LABELED_DATA: 1、5、10，表示标注的 COCO 数据占整个训练数据集的比例。\n# GPU_NUM: 用于运行任务的 GPU 数量\nfor FOLD in 1 2 3 4 5;\ndo\n  bash tools\u002Fdist_train_partially.sh \u003CJOB_TYPE> ${FOLD} \u003CPERCENT_LABELED_DATA> \u003CGPU_NUM>\ndone\n```\n例如，我们可以运行以下脚本，使用 8 张 GPU 在 10% 标注数据上训练我们的模型：\n\n```shell script\nfor FOLD in 1 2 3 4 5;\ndo\n  bash tools\u002Fdist_train_partially.sh semi ${FOLD} 10 8\ndone\n```\n\n- 在**全标注数据**设置下训练模型：\n\n```shell script\nbash tools\u002Fdist_train.sh \u003CCONFIG_FILE_PATH> \u003CNUM_GPUS>\n```\n例如，使用 8 张 GPU 训练我们的 `R50` 模型：\n```shell script\nbash tools\u002Fdist_train.sh configs\u002Fsoft_teacher\u002Fsoft_teacher_faster_rcnn_r50_caffe_fpn_coco_full_720k.py 8\n```\n\n- 在**新数据集**上训练模型：\n\n核心思想是将新数据集转换为 COCO 格式。详细信息请参阅 [添加新数据集](https:\u002F\u002Fgithub.com\u002Fopen-mmlab\u002Fmmdetection\u002Fblob\u002Fmaster\u002Fdocs\u002Ftutorials\u002Fcustomize_dataset.md)。\n\n### 评估\n```\nbash tools\u002Fdist_test.sh \u003CCONFIG_FILE_PATH> \u003CCHECKPOINT_PATH> \u003CNUM_GPUS> --eval bbox --cfg-options model.test_cfg.rcnn.score_thr=\u003CTHR>\n```\n\n### 推理\n使用训练好的模型进行推理并可视化检测结果：\n\n```shell script\n# [IMAGE_FILE_PATH]: 您本地文件系统中图像文件的路径\n# [CONFIG_FILE]: 配置文件的路径\n# [CHECKPOINT_PATH]: 与所提供配置文件相关的已训练模型的路径\n# [OUTPUT_PATH]: 保存检测结果的目录\npython demo\u002Fimage_demo.py [IMAGE_FILE_PATH] [CONFIG_FILE] [CHECKPOINT_PATH] --output [OUTPUT_PATH]\n```\n例如：\n- 使用提供的 `R50` 模型对单张图像进行推理：\n```shell script\npython demo\u002Fimage_demo.py \u002Ftmp\u002Ftmp.png configs\u002Fsoft_teacher\u002Fsoft_teacher_faster_rcnn_r50_caffe_fpn_coco_full_720k.py work_dirs\u002Fdownloaded.model --output work_dirs\u002F\n```\n\n程序完成后，会生成一张与输入图像同名的图片，并保存到 `work_dirs` 目录中。\n\n- 使用提供的 `R50` 模型对多张图像进行推理：\n```shell script\npython demo\u002Fimage_demo.py '\u002Ftmp\u002F*.jpg' configs\u002Fsoft_teacher\u002Fsoft_teacher_faster_rcnn_r50_caffe_fpn_coco_full_720k.py work_dirs\u002Fdownloaded.model --output work_dirs\u002F\n```\n\n[1] [一种用于目标检测的简单半监督学习框架](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2005.04757.pdf)\n\n\n[2] [Instant-Teaching：一个端到端的半监督目标检测框架](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2103.11402.pdf)","# SoftTeacher 快速上手指南\n\nSoftTeacher 是一个基于 MMDetection 的端到端半监督目标检测框架，源自 ICCV 2021 论文。它通过“软教师”机制利用未标记数据显著提升检测性能，尤其适用于标注数据稀缺的场景。\n\n## 环境准备\n\n在开始之前，请确保您的系统满足以下要求：\n\n*   **操作系统**: Ubuntu 16.04 或更高版本\n*   **Python**: 3.6 (推荐通过 Anaconda3 管理)\n*   **PyTorch**: 1.9.0\n*   **核心依赖**:\n    *   `mmdetection` == 2.16.0+fe46ffe\n    *   `mmcv-full` == 1.3.9\n    *   `wandb` == 0.10.31 (用于可视化，可选)\n\n> **注意**：虽然项目理论上兼容最新版 MMDetection，但为了复现论文结果，建议严格匹配上述版本。国内用户可使用清华源或阿里源加速 `pip` 和 `conda` 安装。\n\n## 安装步骤\n\n1.  **克隆仓库并安装依赖**\n    执行以下命令自动完成环境配置和依赖安装：\n    ```bash\n    make install\n    ```\n\n2.  **验证 MMDetection 版本（可选）**\n    如果需要强制切换到与本项目完全一致的 MMDetection 版本：\n    ```bash\n    cd thirdparty\u002Fmmdetection && git checkout v2.16.0\n    ```\n\n3.  **配置 WandB（可选）**\n    如果您不需要使用 WandB 进行训练日志可视化，可以编辑 `configs\u002Fsoft_teacher\u002Fbase.py` 文件，注释掉第 273-284 行。\n\n## 基本使用\n\n### 1. 数据准备\n\n本项目基于 COCO 数据集。请下载 COCO 数据集（包含 `train2017`, `val2017`, `annotations` 等），并按以下结构组织目录，然后生成半监督学习所需的数据划分：\n\n```bash\n# 假设 ${YOUR_DATA} 是包含 coco 数据集的根目录\n# 例如：${YOUR_DATA}\u002Fcoco\u002Ftrain2017\u002F, ${YOUR_DATA}\u002Fcoco\u002Fannotations\u002F 等\nln -s ${YOUR_DATA} data\n\n# 生成数据划分文件\nbash tools\u002Fdataset\u002Fprepare_coco_data.sh conduct\n```\n\n### 2. 模型训练\n\n#### 场景 A：半监督训练（部分标注数据）\n适用于只有 1%、5% 或 10% 标注数据的场景。以下示例展示如何使用 8 张 GPU 在 10% 标注数据上训练（遍历 5 个折叠 fold）：\n\n```bash\nfor FOLD in 1 2 3 4 5;\ndo\n  bash tools\u002Fdist_train_partially.sh semi ${FOLD} 10 8\ndone\n```\n*   `semi`: 任务类型（半监督）。\n*   `10`: 标注数据比例（可选 1, 5, 10）。\n*   `8`: 使用的 GPU 数量。\n\n#### 场景 B：全监督训练（全量标注数据）\n使用全量 COCO 数据进行训练：\n\n```bash\nbash tools\u002Fdist_train.sh configs\u002Fsoft_teacher\u002Fsoft_teacher_faster_rcnn_r50_caffe_fpn_coco_full_720k.py 8\n```\n\n### 3. 模型推理与可视化\n\n使用训练好的模型对单张或多张图片进行推理，并保存检测结果：\n\n```bash\npython demo\u002Fimage_demo.py [IMAGE_FILE_PATH] [CONFIG_FILE] [CHECKPOINT_PATH] --output [OUTPUT_PATH]\n```\n\n**示例：对单张图片进行推理**\n```bash\npython demo\u002Fimage_demo.py \u002Ftmp\u002Ftmp.png configs\u002Fsoft_teacher\u002Fsoft_teacher_faster_rcnn_r50_caffe_fpn_coco_full_720k.py work_dirs\u002Fdownloaded.model --output work_dirs\u002F\n```\n\n**示例：对目录下所有图片进行推理**\n```bash\npython demo\u002Fimage_demo.py '\u002Ftmp\u002F*.jpg' configs\u002Fsoft_teacher\u002Fsoft_teacher_faster_rcnn_r50_caffe_fpn_coco_full_720k.py work_dirs\u002Fdownloaded.model --output work_dirs\u002F\n```\n\n运行完成后，带有检测框的图片将保存在指定的输出目录中。","某自动驾驶初创团队正致力于开发城市道路车辆检测系统，但面临海量未标注行车录像与极少量人工标注数据的困境。\n\n### 没有 SoftTeacher 时\n- **数据利用率极低**：团队仅能使用 1% 的昂贵人工标注数据训练模型，其余 99% 的未标注视频素材被迫闲置，造成巨大资源浪费。\n- **模型性能遭遇瓶颈**：在少量数据下训练的基线模型 mAP 仅为 10.0%，无法准确识别远处的行人或遮挡车辆，难以满足上路测试的安全标准。\n- **标注成本高昂且周期长**：为了提升精度，团队不得不预算数十万元并耗时数月进行新一轮数据标注，严重拖慢了产品迭代节奏。\n- **泛化能力薄弱**：模型在面对雨天、夜间等未充分标注的复杂场景时，漏检率极高，缺乏鲁棒性。\n\n### 使用 SoftTeacher 后\n- **激活沉睡数据价值**：利用半监督学习机制，SoftTeacher 成功将 99% 的未标注数据转化为有效训练信号，实现了端到端的数据利用。\n- **小样本性能飞跃**：在同样仅 1% 标注数据的条件下，模型 mAP 从 10.0% 飙升至 22.64%，检测精度翻倍，显著提升了目标识别准确率。\n- **大幅降低落地成本**：团队无需追加标注预算，仅通过算法优化就达到了原本需要大量标注数据才能实现的性能，节省了数月开发时间。\n- **复杂场景适应性强**：借助“软教师”生成的动态伪标签，模型在恶劣天气和遮挡场景下的表现更加稳定，误报与漏报显著减少。\n\nSoftTeacher 的核心价值在于打破了高精度目标检测对大规模标注数据的依赖，让企业在极低标注成本下也能部署工业级 AI 视觉系统。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmicrosoft_SoftTeacher_b8d2c5dc.png","microsoft","Microsoft","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fmicrosoft_4900709c.png","Open source projects and samples from Microsoft",null,"opensource@microsoft.com","OpenAtMicrosoft","https:\u002F\u002Fopensource.microsoft.com","https:\u002F\u002Fgithub.com\u002Fmicrosoft",[85,89,93],{"name":86,"color":87,"percentage":88},"Python","#3572A5",98.3,{"name":90,"color":91,"percentage":92},"Shell","#89e051",1.5,{"name":94,"color":95,"percentage":96},"Makefile","#427819",0.2,923,124,"2026-04-01T12:47:02","MIT",4,"Linux","需要 NVIDIA GPU，README 中明确提到所有模型均在 8 张 V100 GPU 上训练，具体显存和 CUDA 版本未说明（需匹配 PyTorch 1.9.0 环境）","未说明",{"notes":106,"python":107,"dependencies":108},"项目基于 MMDetection 框架，官方推荐使用 Ubuntu 16.04 和 Anaconda3。若不使用 wandb 进行可视化，需手动修改配置文件注释相关代码行。虽然项目可能兼容最新版 mmdetection，但复现结果建议使用指定的 v2.16.0 版本。数据集需准备为 COCO 格式。","3.6",[109,110,111,112],"torch==1.9.0","mmdetection==2.16.0+fe46ffe","mmcv==1.3.9","wandb==0.10.31",[14],[115,116,117],"semi-supervised-learning","object-detection","iccv2021","2026-03-27T02:49:30.150509","2026-04-06T05:17:59.398856",[121,126,131,136,141,145,149],{"id":122,"question_zh":123,"answer_zh":124,"source_url":125},10650,"训练时遇到 'AssertionError: assert len(indices) == len(self)' 错误如何解决？","这是一个常见的采样器长度不匹配问题。尝试修改 `ssod\u002Fdatasets\u002Fsamplers\u002Fsemi_sampler.py` 文件，将计算逻辑从 `sum(self.epoch_length) * self.samples_per_gpu` 改为 `sum(self.epoch_length)`。同时，确保配置文件中设置 `worker_per_gpu` 和 `samples_per_gpu` 为相同值（例如 4），并将 `sample_ratio` 设置为 `[1, 1]`。此外，如果数据集中不包含掩码（mask）标注信息，请检查配置文件并移除所有与 `gt_masks` 相关的部分，否则也会触发此断言错误。","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FSoftTeacher\u002Fissues\u002F109",{"id":127,"question_zh":128,"answer_zh":129,"source_url":130},10651,"使用单张 GPU 训练时报错 'CHILD PROCESS FAILED WITH NO ERROR_FILE' 或退出代码 -11 怎么办？","这通常是由于显卡型号、PyTorch 版本和 mmcv-full 版本之间的兼容性问题导致的。特别是 RTX 30 系列显卡（如 RTX 3050）不支持 CUDA 10.x 版本。建议升级环境配置：安装 CUDA 11.1 或更高版本，搭配 PyTorch 1.9.0 以及对应的 mmcv-full 版本（如 1.3.9）。请确保三者版本严格匹配以避免底层通信失败。","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FSoftTeacher\u002Fissues\u002F158",{"id":132,"question_zh":133,"answer_zh":134,"source_url":135},10652,"为什么在自定义数据集上训练时，无监督损失（unsup_loss）一直为 0？","如果您的自定义数据集只有一个物体类别，可能会导致无监督分支无法有效计算损失。请检查数据预处理流程，确保未标记数据（unlabeled data）已正确加载且增强策略生效。另外，确认配置文件中针对单类别的检测头设置正确，有时需要调整置信度阈值或损失权重来激活无监督学习过程。如果使用的是类似 COCO 的格式，请确保 JSON 标注文件中包含正确的图像路径和类别映射。","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FSoftTeacher\u002Fissues\u002F163",{"id":137,"question_zh":138,"answer_zh":139,"source_url":140},10653,"训练进行到验证阶段（如 4000 次迭代后）突然停止并抛出 'ChildFailedError' 是什么原因？","该错误通常发生在多卡训练时的验证阶段，可能是由于某个进程在验证时崩溃导致整体训练终止。首先检查显存是否溢出，尝试减小 `samples_per_gpu` 或 `batch_size`。其次，确认数据加载器在验证集上没有遇到损坏的图片或错误的标注文件。如果是分布式训练，还需检查 NCCL 通信是否正常，避免网络或端口冲突。","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FSoftTeacher\u002Fissues\u002F27",{"id":142,"question_zh":143,"answer_zh":144,"source_url":130},10654,"如何处理大型标注文件（如 7GB 的 JSON）导致的多卡训练失败问题？","当标注文件过大时，多卡训练可能会因内存分配或数据同步问题失败。解决方案有两种：1. 使用单张 GPU 进行训练，命令示例：`python .\u002Ftools\u002Ftrain.py \u003Cconfig_file> --cfg-options work_dir=\"\u003Cwork_dir>\" optimizer.lr=0.0025`；2. 如果必须使用多卡，可以先截取数据集的一小部分进行测试，命令示例：`CUDA_VISIBLE_DEVICES=0,1,2,3 PORT=29501 .\u002Ftools\u002Fdist_train.sh \u003Cconfig_file> 4 --work-dir \u003Cwork_dir> --cfg-options 'data.train.ann_file=\u003Csmaller_dataset.json>'`。待调试通后再尝试全量数据。",{"id":146,"question_zh":147,"answer_zh":148,"source_url":140},10655,"运行数据准备脚本（prepare_coco_data.sh）时需要注意什么？是否可以用于其他数据集？","该脚本专门用于处理 COCO 数据集的部分设置（partial setting），主要功能是划分数据分割并将 `image_info_unlabeled2017.json` 转换为 `instances_unlabeled2017.json`。因此，如果您添加的是非 COCO 格式的其他数据集，运行此脚本没有意义，甚至可能导致路径或格式错误。对于自定义数据集，请手动按照项目要求的格式整理标注文件，不要直接复用针对 COCO 的预处理脚本。",{"id":150,"question_zh":151,"answer_zh":152,"source_url":153},10656,"数据集中没有掩码（mask）标注时，如何避免训练报错？","如果数据集中完全不存在掩码信息，必须在配置文件中彻底移除所有与 mask 相关的字段。具体来说，需要在数据加载管道中删除 `gt_masks` 的读取和处理逻辑。如果不这样做，模型在尝试访问不存在的 mask 数据时会引发索引错误或断言失败（如 `assert len(indices) == len(self)`）。请仔细检查 config 文件中的 `pipeline` 部分，确保没有任何步骤依赖 mask 输入。","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FSoftTeacher\u002Fissues\u002F62",[]]