ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

RF-DETR 实例分割推理实战:从预训练权重到图像、视频与 RTSP 流部署

RF-DETR 实例分割推理实战:从预训练权重到图像、视频与 RTSP 流部署 人工智能计算机视觉深度学习微调【免费下载链接】rf-detrRF-DETR is a real-time object detection and segmentation model architecture developed by Roboflow, SOTA on COCO, designed for fine-tuning. [ICLR 2026]项目地址https://gitcode.com/gh_mirrors/rf/rf-detr点击查看免费下载本文是一份面向开发者的 RF-DETRRoboflow 开源的实时目标检测与实例分割 Transformer 模型基于 DINOv2 视觉 Transformer 骨干网络实例分割推理指南。文章围绕 docs/learn/run/segmentation.md 展开覆盖从 Nano 到 2XLarge 六个预训练分割模型的选型含 COCO AP、延迟、参数量与输入分辨率对照、rfdetr与inference两种推理方式、内存受限场景下的模型原地优化以及基于 OpenCV 的视频 / 摄像头 / RTSP 流实时处理。读完本文你将能够在自己的机器上直接运行 RF-DETR 实例分割并对 Mask 生成背后的分割头实现与权重管理机制有源码级的理解。RF-DETR-Seg 是什么RF-DETR 是一种用于实例分割的实时 Transformer 架构其骨干网络为 DINOv2 视觉 Transformer。仓库中的基础模型在 Microsoft COCO 数据集上完成训练在精度与延迟之间取得了较好的平衡文档原文的表述为 strong accuracy and latency trade-offs。在仓库中分割模型家族统一继承自RFDETRSeg基类定义于 src/rfdetr/variants.py该基类指定了训练配置类SegmentationTrainConfig。六个具体变体分别为RFDETRSegNano、RFDETRSegSmall、RFDETRSegMedium、RFDETRSegLarge、RFDETRSegXLarge、RFDETRSeg2XLarge它们与检测版RFDETRNanoRFDETR2XLarge共用同一套RFDETR核心类定义于 src/rfdetr/detr.py差异仅在于模型配置类与分割训练配置。实例分割与检测的区别与纯目标检测输出边界框不同RF-DETR-Seg 在检测框之外还输出逐实例的像素级掩码。从 src/rfdetr/models/heads/segmentation.py 的实现可以看到SegmentationHead接收解码器各层的空间特征spatial_features与查询特征query_features先通过DepthwiseConvBlock逐层处理空间特征再用torch.einsum(bchw,bnc-bnhw, ...)将查询特征与空间特征做内积并叠加可学习偏置bias得到形状为(B, N, H*r, W*r)的 mask logits——即每个查询实例对应一张上采样掩码热图。该头还支持export()模式forward_export在导出阶段要求查询特征长度为 1以适配编译/部署场景。预训练模型清单与选型RF-DETR-Seg 提供从 Nano 到 2XLarge 共 6 个规格用于在精度、延迟与参数量之间做取舍。文档中所有延迟数据均在 NVIDIA T4 上使用 TensorRT、FP16、batch size 1 测得规格RF-DETR 包类名推理包别名COCO AP50COCO AP50:95延迟 (ms)参数量 (M)分辨率NRFDETRSegNanorfdetr-seg-nano63.040.33.433.6312x312SRFDETRSegSmallrfdetr-seg-small66.243.14.433.7384x384MRFDETRSegMediumrfdetr-seg-medium68.445.35.935.7432x432LRFDETRSegLargerfdetr-seg-large70.547.18.836.2504x504XLRFDETRSegXLargerfdetr-seg-xlarge72.248.813.538.1624x6242XLRFDETRSeg2XLargerfdetr-seg-2xlarge73.149.921.838.6768x768选型要点追求实时性如边缘设备上的视频流处理选择 Nano / Small / Medium其 T4 上延迟在 3.45.9 ms 之间追求精度离线分析、高分辨率场景选择 XLarge / 2XLarge其 COCO AP50:95达到 48.8 / 49.9但输入分辨率也相应提高到 624 / 768 像素注意到分割模型的参数量33.638.6 M在六个规格间差异很小——与检测版 XL/2XL126 M 量级不同分割系列的算力差异主要来自输入分辨率的提升而非网络宽度。权重注册表与自动下载使用RFDETRSegMedium()等构造方法时模型会按需自动下载官方预训练权重。权重清单定义在 src/rfdetr/assets/model_weights.py例如RF_DETR_SEG_MEDIUM对应文件rf-detr-seg-medium.pt远程文件rf-detr-seg-m-ft.pth并附带 MD5 校验值。下载遵循三层优先级先查本地ModelWeights注册表未命中再尝试rfdetr_plus扩展包最后回退到旧的PLATFORM_MODELS字典。缓存目录可通过环境变量控制见 src/rfdetr/assets/model_weights.pyRF_HOME是首选变量ROBOFLOW_HOME是兼容别名两者均未设置时默认使用~/.roboflow/models。例如export RF_HOME/mnt/shared/models下载完成后还会执行 MD5 完整性校验若已有文件校验失败会提示传入redownloadTrue强制重新下载避免覆盖可能是用户自备或已损坏的文件。在单张图像上运行推理对单张图像执行推理有两种方式使用rfdetr包仓库核心或使用 Roboflow 的inference包。切换模型规格只需替换上表中的类名或别名。方式一rfdetr 包import supervision as sv from rfdetr import RFDETRSegMedium from rfdetr.assets.coco_classes import COCO_CLASSES model RFDETRSegMedium() detections model.predict(https://media.roboflow.com/dog.jpg, threshold0.5) labels [f{COCO_CLASSES[class_id]} for class_id in detections.class_id] annotated_image sv.MaskAnnotator().annotate(detections.metadata[source_image], detections) annotated_image sv.LabelAnnotator().annotate(annotated_image, detections, labels)说明RFDETRSegMedium()会实例化分割模型并自动下载/加载权重model.predict(...)接受本地路径、URL 或 numpy 图像数组threshold0.5控制置信度阈值COCO_CLASSES是仓库内置的 COCO 类别 ID 到名称的映射见 src/rfdetr/assets/coco_classes.py适用于 COCO 预训练模型的 80 类索引 0–79sv.MaskAnnotator()在图像上叠加实例掩码sv.LabelAnnotator()叠加类别标签detections.metadata[source_image]保存推理原始图像用于绘制。方式二inference 包import requests import supervision as sv from PIL import Image from inference import get_model model get_model(rfdetr-seg-medium) image Image.open(requests.get(https://media.roboflow.com/dog.jpg, streamTrue).raw) predictions model.infer(image, confidence0.5)[0] detections sv.Detections.from_inference(predictions) annotated_image sv.MaskAnnotator().annotate(image, detections) annotated_image sv.LabelAnnotator().annotate(annotated_image, detections)注意inference包使用模型别名如rfdetr-seg-medium而非类名且其 API 不暴露RFDETR.inference()优化方法见下文。微调模型的类别名称处理COCO_CLASSES仅适用于 COCO 预训练模型。对于在自定义数据集上微调过的模型应改用detections.data[class_name]——它从检查点解析类别名称对 COCO 与自定义数据集均适用。内存受限部署原地推理优化对于仅做推理且内存受限的部署可在调用predict()之前对已加载模型进行原地优化。传入dtypefloat16可把权重内存减半同时释放基础模型引用。该操作不可逆——要恢复原始模型需要新建一个RFDETR实例model.inference(compileFalse, inplaceTrue, dtypefloat16)源码级原理RFDETR.inference()的实现位于 src/rfdetr/detr.py其关键行为默认非原地路径对已加载模型做deepcopy然后进入导出模式并可选编译原始模块始终保留可通过remove_optimized_model()恢复inplaceTrue路径直接优化加载的模块本身成功后将model.model置为None以释放权重内存。此时remove_optimized_model()变为空操作发出UserWarningexport()会抛出RuntimeError约束inplaceTrue要求compileFalse因为编译模型可能持有对原始参数存储的引用置空model.model无法可靠释放内存dtype转换当 dtype 与模型当前精度不同时to()会临时同时分配新旧参数张量优化期间峰值内存约为权重体积的 1.5 倍若用默认dtypetorch.float32且不改变精度内存节省仅来自清除基础模型引用。长时运行服务的编译优化如果你的服务是长期运行的、固定 batch size 与固定分辨率可以选用 PyTorch Inductor 后端。编译的一次性启动成本高于默认的 TorchScript 后端但能降低稳态延迟。该示例需要兼容的 CUDA 设备、算子以及已安装的 PyTorch 版本dtypefloat16还需要 FP16 支持model.inference(compile_backendinductor, batch_size1, dtypefloat16)从源码看compile_backendinductor走torch.compile(modereduce-overhead)并在 CUDA 上对 dummy 输入运行两次后同步设备使编译开销发生在inference()内部而非首次predict()调用时compile_backendtorchscript默认则保留原有torch.jit.trace路径。在视频、摄像头或 RTSP 流上运行以下示例使用 OpenCV 进行解码与显示。请将SOURCE_VIDEO_PATH、WEBCAM_INDEX、RTSP_STREAM_URL替换为你的实际输入WEBCAM_INDEX通常为0默认摄像头。视频文件import cv2 import supervision as sv from rfdetr import RFDETRSegMedium from rfdetr.assets.coco_classes import COCO_CLASSES model RFDETRSegMedium() video_capture cv2.VideoCapture(SOURCE_VIDEO_PATH) if not video_capture.isOpened(): raise RuntimeError(Failed to open video source: SOURCE_VIDEO_PATH) while True: success, frame_bgr video_capture.read() if not success: break frame_rgb cv2.cvtColor(frame_bgr, cv2.COLOR_BGR2RGB) detections model.predict(frame_rgb, threshold0.5) labels [COCO_CLASSES[class_id] for class_id in detections.class_id] annotated_frame sv.MaskAnnotator().annotate(frame_bgr, detections) annotated_frame sv.LabelAnnotator().annotate(annotated_frame, detections, labels) cv2.imshow(RF-DETR-Seg Video, annotated_frame) if cv2.waitKey(1) 0xFF ord(q): break video_capture.release() cv2.destroyAllWindows()摄像头Webcamimport cv2 import supervision as sv from rfdetr import RFDETRSegMedium from rfdetr.assets.coco_classes import COCO_CLASSES model RFDETRSegMedium() WEBCAM_INDEX 0 # 改为所需摄像头索引例如 1、2 ... video_capture cv2.VideoCapture(WEBCAM_INDEX) if not video_capture.isOpened(): raise RuntimeError(fFailed to open webcam: {WEBCAM_INDEX}) while True: success, frame_bgr video_capture.read() if not success: break frame_rgb cv2.cvtColor(frame_bgr, cv2.COLOR_BGR2RGB) detections model.predict(frame_rgb, threshold0.5) labels [COCO_CLASSES[class_id] for class_id in detections.class_id] annotated_frame sv.MaskAnnotator().annotate(frame_bgr, detections) annotated_frame sv.LabelAnnotator().annotate(annotated_frame, detections, labels) cv2.imshow(RF-DETR-Seg Webcam, annotated_frame) if cv2.waitKey(1) 0xFF ord(q): break video_capture.release() cv2.destroyAllWindows()RTSP 网络流import cv2 import supervision as sv from rfdetr import RFDETRSegMedium from rfdetr.assets.coco_classes import COCO_CLASSES model RFDETRSegMedium() video_capture cv2.VideoCapture(RTSP_STREAM_URL) if not video_capture.isOpened(): raise RuntimeError(Failed to open RTSP stream: RTSP_STREAM_URL) while True: success, frame_bgr video_capture.read() if not success: break frame_rgb cv2.cvtColor(frame_bgr, cv2.COLOR_BGR2RGB) detections model.predict(frame_rgb, threshold0.5) labels [COCO_CLASSES[class_id] for class_id in detections.class_id] annotated_frame sv.MaskAnnotator().annotate(frame_bgr, detections) annotated_frame sv.LabelAnnotator().annotate(annotated_frame, detections, labels) cv2.imshow(RF-DETR-Seg RTSP, annotated_frame) if cv2.waitKey(1) 0xFF ord(q): break video_capture.release() cv2.destroyAllWindows()三种输入的处理逻辑完全一致OpenCV 读取帧 →cvtColor转为 RGB →model.predict(frame_rgb, threshold0.5)得到检测结果 → 用 supervision 叠加掩码与标签 →imshow显示按q键退出。predict()内部会完成缩放、归一化使用 ImageNet 的 mean/std等预处理并将模型懒加载到目标设备CUDA上。从推理到微调分割训练配置参考仓库的 configs 目录提供了每个分割规格的示例训练配置与本文的推理选型一一对应。例如RFDETRSegMedium对应的 configs/rfdetr_seg_medium.yaml# RF-DETR Seg Medium — example segmentation training configuration (resolution 432, patch 12). # Usage: # rfdetr fit --config configs/rfdetr_seg_medium.yaml # rfdetr fit --config configs/rfdetr_seg_medium.yaml \ # --model.train_config.init_args.dataset_dir /data/my_dataset \ # --trainer.devices 4 model: model_config: class_path: rfdetr.config.RFDETRSegMediumConfig init_args: num_classes: 80 # set to your dataset class count train_config: class_path: rfdetr.config.SegmentationTrainConfig init_args: dataset_dir: /data/coco # required: path to your COCO-format dataset output_dir: output/rfdetr_seg_medium epochs: 100 batch_size: 3 num_workers: 4 tensorboard: trueRFDETRSegSmall的 configs/rfdetr_seg_small.yaml 结构一致仅分辨率384、batch size4与输出目录不同。从中可以看出分割模型的训练配置类统一为rfdetr.config.SegmentationTrainConfig与变体类的_train_config_class声明吻合num_classes需按数据集类别数修改dataset_dir指向 COCO 格式数据集。若你计划在自有数据集上微调分割模型可在此基础上调整epochs、batch_size、num_workers等参数或通过命令行--trainer.devices 4覆盖训练设备数。小结RF-DETR 实例分割的推理链路可以概括为一条主线按需选择变体RFDETRSegNanoRFDETRSeg2XLarge→ 自动下载并校验权重 → 对图像/视频帧/RTSP 流调用predict()→ 用 supervision 渲染掩码与标签 → 内存受限时用model.inference(inplaceTrue, dtypefloat16)原地瘦身。模型变体定义在 src/rfdetr/variants.py权重注册与下载在 src/rfdetr/assets/model_weights.py推理优化逻辑在 src/rfdetr/detr.py掩码生成由 src/rfdetr/models/heads/segmentation.py 的SegmentationHead完成einsum 内积 偏置逐层DepthwiseConvBlock处理如需微调参考 configs/rfdetr_seg_medium.yaml 等示例配置。如果你需要进一步探索部署选项TensorRT、ONNX、Core ML 等导出路径或训练细节仓库的 docs/learn/deploy.md、docs/learn/export.md 与 docs/learn/train/index.md 提供了相应指南。赞分享人工智能计算机视觉深度学习微调【免费下载链接】rf-detrRF-DETR is a real-time object detection and segmentation model architecture developed by Roboflow, SOTA on COCO, designed for fine-tuning. [ICLR 2026]项目地址https://gitcode.com/gh_mirrors/rf/rf-detr点击查看免费下载相关推荐Bytebase Sample Project Instance 生命周期设计一次性试用数据库的预留、补偿与清理机制Bytebase Sample Project Instance 生命周期设计一次性试用数据库的预留、补偿与清理机制 本文基于 Bytebase 仓库中的架构人工智能计算机视觉深度学习微调RF-DETR 目标检测推理实战从单张图片到视频与 RTSP 实时流RF DETR 目标检测推理实战从单张图片到视频与 RTSP 实时流 导读 本文是 RF DETR 目标检测模型推理运行的完整实战指南覆盖模型家族选型、单张人工智能计算机视觉深度学习微调RF-DETR Seg Small 模型全解析RFDETRSegSmall 类 API、架构配置与实例分割训练推理实战RF DETR Seg Small 模型全解析RFDETRSegSmall 类 API、架构配置与实例分割训练推理实战 RF DETR Seg Small 是人工智能计算机视觉深度学习微调上一篇如何5分钟找回丢失的QQ空间记忆终极完整数据恢复指南下一篇Linkding 自托管书签管理 Docker 部署完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表