
CircularNet 边缘设备预测管线实战Triton 推理服务、本地图像批处理与掩码结果输出【免费下载链接】modelsModels and examples built with TensorFlow项目地址: https://gitcode.com/GitHub_Trending/mode/models在传送带垃圾分拣场景CircularNet即 waste_identification_ml 项目中预测管线prediction pipeline是连接“模型”与“业务数据”的核心环节。本文以仓库文档 prediction-pipeline-in-edge.md 为主线讲解如何在边缘设备edge device上启动 Triton 推理服务、配置并运行针对本地图像的预测管线脚本run_edge_images.sh并结合仓库中的 inference_pipeline.py 与 run_images.sh 等源码深入解释每个参数的实际作用。读完后你可以独立完成加载模型 → 确认服务端模型名 → 配置输入/输出目录与推理参数 → 批量处理图像 → 获得带掩码标注的结果与日志并为后续导出 BigQuery、搭建可视化看板做好准备。一、边缘预测管线在整体流程中的位置CircularNet 提供用于处理、分析视频或图像文件并进行物体识别的预测管线。根据 管线概览文档管线按以下固定顺序执行一系列动作以保证结果可靠且一致按创建时间或其他时间相关元数据将视频或图像按时间顺序组织逐个导入文件若文件是视频管线会将其拆分为单帧并对每一帧运行实例分割模型完成像素级pixel-level的实例分割执行颜色检测算法识别并分类帧或图像中检测到的物体的颜色从检测到的物体中提取并记录特征便于后续分析与机器学习应用输出每一帧或每张图像的预测结果图像上叠加掩码masks并标注检测到的物体。对单个视频的所有帧处理完成后管线还会执行物体跟踪object tracking算法识别并消除同一物体在连续帧中的重复出现从而提升检测与统计的准确性。边缘edge与云cloud两条路径的差异在于数据与结果的存放位置边缘管线输入图像放在边缘设备的本地文件夹结果同样保存在本地输出文件夹便于高效的数据管理文档中将其与云版 prediction-pipeline-in-cloud.md 对应——云版会同时把原始图像和结果写入 Cloud Storage 并追加到 BigQuery 表。结果流转边缘管线处理完每个本地文件后会创建一个包含全部结果的输出目录供进一步使用与分析。之后你可以按需手动把结果导出到 BigQuery 表并连接可视化看板以图表和报告形式展示参见 数据查看文档。二、前置条件相机与边缘设备在运行预测管线之前仓库文档体系要求先完成两项准备相机选型与安装从 choose-camera 文档选择相机后对传送带上经过的物体开始录像采集分析数据并在本地暂存相机采集的文件服务器部署按照 start-server 文档 在边缘设备上把 Triton 推理服务启动起来把视频或图像文件拷贝到边缘设备的某个文件夹中供管线逐张处理。三、启动 Triton 推理服务并确认已加载模型3.1 启动服务端按 start-server.md 的步骤在服务目录文档中给出的示例路径为models/official/projects/waste_identification_ml/Deploy/detr_cloud_deployment/server/下执行triton_inference_server.sh脚本创建 Triton 推理服务器并加载最新的 CircularNet 模型bash triton_inference_server.sh服务以screen会话的方式在后台持续运行。可以用以下命令确认服务状态screen -ls # 列出 screen 会话外部查看时显示 (Detached) screen -r server # 进入服务所在会话模型成功部署后状态显示为 READY如需在不中断服务的情况下离开会话按Ctrl a再按d将会话分离detach。3.2 查看已加载的模型名预测管线通过--model参数按名字调用服务端模型因此需要先确认加载了哪些模型。进入包含triton_server.sh脚本的server文件夹执行cat triton_server.sh输出的开头几行会以方括号列出已加载的模型名。运行预测管线时你可以调用其中任意一个模型。注意该命令必须在server文件夹内执行。从源码结构看仓库中的服务端脚本 triton_inference_server.sh 与各run_images.sh客户端脚本共同构成“server 加载模型 client 按名调用”的协作模式模型名必须与脚本中方括号内的条目完全一致例如文档示例中的Jan2025_ver2_merged_1024_1024。四、客户端目录与参数配置4.1 进入客户端目录从server文件夹退回prediction_pipeline目录并进入client文件夹cd .. cd client/该目录存放pipeline_images.pyPython 文件其中包含针对输入图像的完整预测管线逻辑run_edge_images.sh脚本会自动调用这个 Python 文件。4.2 参数逐项说明如需为管线提供特定路径和取值用 Vim 编辑脚本vim run_edge_images.sh脚本中需要替换的参数如下原文档完整参数集--input_directorypath-to-input-folder --output_directorypath-to-output-folder --heightheight --widthwidth --modelcircularnet-model --scorescore --search_rangesearch-range --memorymemory各参数含义、示例值与作用结合仓库源码佐证参数示例值含义源码层面的作用--input_directory/home/images/input_files/边缘设备上的输入图像本地文件夹路径在 inference_pipeline.py 中以abslflag 定义管线会读取该目录下的文件清单并按拍摄时间组织处理顺序--output_directory/home/images/output_files/边缘设备上的输出结果本地文件夹路径结果叠加掩码的图像等写入该目录云版实现中还会用它上传预测产物见 inference_pipeline.py 的upload_image_results_to_storage_bucket调用--height512模型预测所期望的图像或视频帧高度像素与--width一起决定输入图像 resize 到 Mask R-CNN 模型文档描述项目 README 说明最新模型基于 RF-DETR 视觉Transformer见 README.md的输入尺寸--width1024模型预测所期望的宽度像素同上。仓库内云版脚本 run_images.sh 的注释明确写道height/width是“输入图像为 Mask R-CNN 模型调整的高/宽”--modelJan2025_ver2_merged_1024_1024要调用的 Triton 服务端 CircularNet 模型名对应 inference_pipeline.py 中TritonObjectDetector(model_name...)的构造参数按名连接服务端推理--score0.70模型预测的置信度阈值对应 flagthreshold“用于过滤预测结果的阈值”在 inference_pipeline.py 中作为confidence_threshold传入model_manager.predict--search_range100物体跟踪时允许跟踪的像素范围连续帧间物体可移动的最大像素数云版脚本中细分为--search_range_x/--search_range_y两个方向参数定义为“物体在丢失帧之间沿 X/Y 方向允许的最大像素移动量”源码中构造ObjectTracker(search_range(search_range_y, search_range_x), ...)即一个二维搜索半径见 inference_pipeline.py 与 L113-L118。边缘文档中的单参数--search_range是同一概念的简化写法--memory20物体允许丢失未被检测到多少帧仍继续跟踪flag 帮助文本为“每个物体需要被跟踪的帧数上限”传入ObjectTracker(memory...)决定跨帧跟踪的记忆窗口修改完成后按Esc输入:wq再按Enter保存并退出 Vim。参数取值可以结合仓库中的真实配置参考Triton_TF_Cloud_Deployment/client/run_images.sh 中给出的示例组合为--height1024 --width1024 --modelJan2025_ver2_merged_1024_1024 --score0.70 --search_range_x150 --search_range_y20 --memory10且脚本头部还额外包含--project_id、--bq_dataset_id、--bq_table_id、--overwrite、--tracking_visualization、--cropped_objects等云环境专属参数——边缘版脚本按文档描述只需上面 8 个核心参数即可运行BigQuery 相关字段在边缘场景下留待结果手动导出时使用。从源码结构看跟踪器还内置了自适应搜索参数_ADAPTIVE_STOP 5与_ADAPTIVE_STEP 0.95inference_pipeline.py即跟踪算法在搜索窗口的收敛行为是自适应的search_range与memory决定了搜索空间的大小与时间跨度前者越大物体在帧间快速移动时越不容易丢跟踪后者越大物体被遮挡/漏检后能被“找回”的时间越长但同时也可能把重复物体误认为同一物体。五、运行预测管线与输出产物在client文件夹中执行bash run_edge_images.sh运行后管线会系统化地处理本地目录中的每个文件逐个调用 Triton 服务上的指定模型做推理在输出目录中创建结果每张输入图像对应一张叠加了掩码与检测标注类别、置信度的结果图像如文首配图所示在client文件夹内创建logs文件夹保存排查问题的日志与模型运行记录。对应源码可以印证这一产物结构inference_pipeline.py 中utils.setup_logger_and_directories负责初始化日志器与目录主循环对每帧执行推理model_manager.predict→ 绘制并保存检测图utils.draw_detections_and_save_image→ 颜色特征提取utils.extract_color_names→ 跟踪特征入库tracking_manager.extract_features_for_tracking全部文件处理完后再执行tracking_manager.run_tracking()与process_tracking_results完成跨帧去重统计并把各类别计数写入count.csvL201-L209。六、重跑注意事项与结果后续流转重要提示原文档强调如果要在同一批文件上重新运行预测管线必须先从输出文件夹中删除上一次运行时生成的结果以避免冲突问题。管线跑完后的数据管理选项在边缘设备的输出文件夹中直接查看叠加了掩码的图像结果手动把结果导出到 BigQuery 表供查询与统计分析将可视化看板连接 BigQuery以图表与报告形式展示数据详见 view-data 文档 与 dashboard 配置。七、总结本文以 prediction-pipeline-in-edge.md 为核心完整覆盖了边缘设备预测管线的操作闭环启动 Triton 推理服务并用cat triton_server.sh确认已加载模型名进入client目录用vim run_edge_images.sh配置input_directory、output_directory、height、width、model、score、search_range、memory共 8 个参数bash run_edge_images.sh执行管线在输出目录得到带掩码标注的结果图像在logs目录得到运行日志重跑前先清理旧结果结果可手动导出 BigQuery 并接入看板做可视化分析。结合仓库源码可见这些参数最终映射到 inference_pipeline.py 的abslflags、TritonObjectDetector、ObjectTracker与BigQueryManager等组件上参数语义置信度阈值、搜索范围、跟踪记忆帧数与文档描述一一对应可以直接按本文配置在自己的边缘设备上复现。延伸阅读预测管线原理learn-about-pipeline.md云端版管线prediction-pipeline-in-cloud.md启动服务端start-server.md客户端操作start-client.md项目总览README.md云部署客户端脚本run_images.sh【免费下载链接】modelsModels and examples built with TensorFlow项目地址: https://gitcode.com/GitHub_Trending/mode/models创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考