拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

DeepLabCut-live-GUI Aravis 后端接入指南:在 Linux 上使用 GenICam / GigE Vision 工业相机

DeepLabCut-live-GUI Aravis 后端接入指南:在 Linux 上使用 GenICam / GigE Vision 工业相机
  • 人工智能
  • 深度学习
  • 计算机视觉
  • 科研

【免费下载链接】DeepLabCut

Official implementation of DeepLabCut: Markerless pose estimation of user-defined features with deep learning for all animals incl. humans

项目地址:https://gitcode.com/gh_mirrors/de/DeepLabCut
点击查看免费下载

本指南面向 DeepLabCut-live-GUI(dlclivegui,DeepLabCut 官方的实时姿态估计桌面应用)用户,系统讲解如何通过Aravis 后端接入基于 GenICam / GigE Vision 协议的工业相机。读完本文,你将掌握 Aravis 后端在 Linux/macOS 上的安装方法、camera配置文件中properties.aravis命名空间的全部参数语义,以及相机选择、像素格式、曝光/增益、帧率、分辨率、流式缓冲调优和常见故障的排查手段。

DeepLabCut-live-GUI 目前对 Aravis 的支持仍处于**实验性**阶段(官方文档明确标注为 experimental)。如果遇到问题,请前往 GitHub 提交 issue 以帮助改进该后端。

Aravis 后端是什么:为实时姿态估计接入工业相机

DeepLabCut-live-GUI 是一个基于 PySide6 的桌面应用,用于运行实时DeepLabCut 姿态估计实验,支持单/多相机、处理器插件与视频录制(可带叠加层)。在相机接入层面,GUI 通过"后端(backend)"机制抽象不同的相机 SDK,目前支持四种后端(详见 相机支持总览):

  1. OpenCV:通用网络摄像头 / USB 相机,全平台可用;
  2. GenTL:通过 GenTL Producer(.cti文件)接入工业相机,Windows/Linux 可用;
  3. Aravis:基于 Aravis 库接入 GenICam / GigE Vision 相机,主推 Linux(macOS 实验性);
  4. Basler:通过 pypylon 接入 Basler 相机,全平台可用。

其中Aravis 后端在 Linux 上是 GenICam / GigE Vision 工业相机(如 The Imaging Source、Basler、Point Grey 等)的推荐选择:系统包管理器即可安装、无需厂商 CTI 文件、Linux 下支持优于 GenTL。官方文档在相机支持总览中明确建议:"Aravis backend: Recommended for GenICam/GigE Vision industrial cameras (Linux)"。

特性总览

Aravis 后端提供的核心能力(依据 aravis_backend.md):

  • 通过Aravis 0.8支持GenICam / GigE Vision相机;
  • 自动设备发现,无需先打开相机即可枚举设备;
  • 可配置的曝光、增益、帧率与分辨率;
  • 支持常见的单色(mono)与彩色(color)像素格式;
  • 可配置缓冲数量的高效流式采集(streaming)。

这些能力在 GUI 的Configure Cameras…对话框中均有对应入口:选择后端后会执行发现扫描,将设备列入Available cameras,选中后即可调整采集参数并实时预览。

安装 Aravis 后端

Aravis 后端依赖系统级的 Aravis 库与 Python GObject 绑定。官方文档按平台给出了安装命令:

Linux(Ubuntu / Debian)

sudo apt-get install gir1.2-aravis-0.8 python3-gi

Linux(Fedora)

sudo dnf install aravis python3-gobject

Windows

Windows 上使用 Aravis 需要**从源码自行构建**或改用 **WSL**。若需原生 Windows 方案,请改用 GenTL 后端(见 [GenTL 后端文档](https://link.gitcode.com/i/2943facb9a7afbf7d1f1fa608409e917))。

macOS

brew install aravis pip install pygobject
macOS 上安装 `pygobject` 可能需要额外的系统依赖,例如 `gobject-introspection` 与 `cairo`。

从源码结构看,Aravis 后端与 GenTL 后端在 GUI 中互为补充:GenTL 依赖 Harvesters 库与厂商 CTI 文件(需设置GENICAM_GENTL64_PATH等环境变量),而 Aravis 通过系统包直接获得库支持,因此官方在 Linux 场景下更推荐 Aravis。安装完成后,重启 GUI 使后端出现在Backend下拉列表中(相机配置对话框要求"后端必须正确安装才会出现在列表中")。

基本配置:在 GUI 或配置文件中启用 Aravis

选择 Aravis 后端有两种方式:在 GUI 的 "Backend" 下拉框中选择,或在配置文件中写入camera段。官方给出的最小配置如下:

{ "camera": { "backend": "aravis", "index": 0, "fps": 30.0, "exposure": 10000, "gain": 5.0 } }

该配置段与 GUI 的Configure Cameras…对话框、以及 File 菜单中的Load configuration… / Save configuration(快捷键Ctrl+O/Ctrl+S/Ctrl+Shift+S)保持一致的语义:配置文件保存相机配置、模型路径、录制选项与应用设置(见 GUI overview)。

相机选择:按索引 vs 按设备 ID

按索引(默认)

{ "camera": { "backend": "aravis", "index": 0 } }

按设备 ID(推荐,稳定性更好)

{ "camera": { "backend": "aravis", "properties": { "aravis": { "device_id": "TheImagingSource-12345678" } } } }
相机成功打开后,后端可能**自动填充额外的只读身份字段**(vendor、model、serial 等)。这些字段主要用于内部使用,由 GUI 负责写入。

这一设计与 相机配置对话框中关于"设备身份(Device identity)"的说明一致:后端支持时会保存稳定的设备身份(如序列号或设备 ID),帮助在设备枚举顺序变化时重新连接到同一台物理相机;若无法获得稳定身份,则回退到设备索引。需要注意:设备索引不一定是永久的,插拔或重排设备可能改变枚举顺序,硬件变动后应核对所选物理相机。

完整属性与高级配置

Aravis 专属选项统一位于相机设置对象(GUI 设置与配置文件中同构)的properties.aravis命名空间下。其中一部分参数与所有后端共享,可在 GUI 中直接编辑;另一部分是 Aravis 专用参数,需手动写入配置文件。

共享相机设置(GUI 可直接编辑)

以下参数在 GUI 中直接可调,且对所有后端共享。
属性类型说明
widthint请求的图像宽度(可选)
heightint请求的图像高度(可选)
fpsfloat目标采集帧率
exposurefloat曝光时间,单位微秒
gainfloat相机增益值

这些字段与 相机配置对话框中的Capture settings一一对应:分辨率、帧率、曝光、增益均有0 表示 Auto / 不强制的语义(见下文行为细节)。

Aravis 专用属性(需手动写入配置文件)

以下属性为 Aravis 后端专属,必须在配置文件中手动设置。
属性类型默认值说明
device_idstring—显式指定 Aravis 设备 ID(优先级高于 index)
pixel_formatstringMono8请求的像素格式
timeoutint2000000帧超时时间,单位微秒
n_buffersint10流式采集的缓冲区数量

像素格式(Pixel format)

支持的取值:

  • Mono8
  • Mono12
  • Mono16
  • RGB8
  • BGR8

内部实现上,所有帧最终统一转换为 BGR(8 位),以保持流水线一致。

Mono12 / Mono16 的缩放行为:

  • 12 位与 16 位图像会逐帧动态缩放到 8 位;
  • 缩放依据是每一帧内的最大像素值;
  • 这能显著提升画面可见度,但可能造成帧与帧之间的亮度波动。

从源码结构可以推断,这一"统一归一化到 BGR 8 位"的设计与 GenTL 后端完全一致(GenTL 后端文档中 Mono 格式转 BGR、RGB8 转 BGR、高位深按帧最大值的缩放逻辑相同),说明这是 GUI 相机抽象层的通用约定。

曝光与增益(Exposure and gain)

  • **曝光(exposure)**以微秒为单位;
  • **增益(gain)**是无单位的、相机相关数值。
{ "camera": { "exposure": 8000, "gain": 10.0 } }

行为约定:

  • 曝光或增益取值<= 0时,相机保持自动模式;
  • 正数值会自动关闭自动曝光 / 自动增益;
  • 设置后实际值会读回,受相机硬件约束,可能与请求值略有差异。

这与 GUI 中"请求值 vs 检测值"的设计吻合:可编辑字段代表请求配置,检测标签代表相机打开后实际报告的值。例如请求的帧率可能被调整为邻近的支持值,请求的分辨率可能受相机增量约束(见 camera_config.md)。

帧率(FPS)

{ "camera": { "fps": 60.0 } }
  • 只有提供正值时才应用帧率;
  • 后端会尝试设置AcquisitionFrameRate;
  • 相机报告的实际 FPS会被保存,可能与请求值略有差异;
  • 帧率不匹配只会记录日志,不会导致相机启动失败。

另外需要注意:长时间曝光会限制可达到的帧率。当请求帧率无法达到时,应检查曝光时长是否短于目标帧间隔(camera_config.md)。

分辨率处理(Resolution handling)

分辨率仅在显式请求时才会被修改;若不指定,则保留相机的默认配置。

{ "camera": { "width": 1920, "height": 1080 } }

说明:

  • 相机可能对请求的分辨率进行钳制或调整;
  • 打开后后端会记录并暴露实际分辨率;
  • 若请求值与实际值不一致,会记录一条警告日志。

结合 GUI 行为:录制要求恒定帧尺寸,录制进行期间不应从外部更改相机分辨率(否则录制器会进入错误状态以防止编码器损坏,见 overview.md)。

自动填充的 Aravis 元数据

以下字段可能出现在保存的配置中,但由后端与 GUI **自动管理**,**不建议手动设置**。
  • device_physical_id
  • device_vendor
  • device_model
  • device_serial_nbr
  • device_protocol
  • device_address
  • device_name
  • device_path

流式传输与性能调优

缓冲区数量(Buffer Count)

针对高吞吐或高延迟系统,可增大缓冲区:

{ "camera": { "properties": { "aravis": { "n_buffers": 20 } } } }
超时(Timeout)

针对较慢的相机或拥塞的网络,可调整帧超时:

{ "camera": { "properties": { "aravis": { "timeout": 5000000 } } } }

(5 秒 = 5,000,000 微秒)

在 GUI 中的完整配置流程

结合 相机配置对话框,使用 Aravis 后端的典型操作流程为:

  1. 在主窗口 Controls 面板的 Camera 区域选择Configure Cameras…(打开前需停止主窗口实时预览);
  2. 在对话框中选择 Backend 为 Aravis(更换后端会触发新的发现扫描);
  3. 等待设备发现完成,或点击Refresh重新扫描;
  4. 在Available cameras中选择设备;
  5. 点击Add Camera(或双击设备)将其加入Active cameras;
  6. 选中活动相机,调整采集、输出、裁剪或触发设置;
  7. 点击Apply Settings应用设置;
  8. 启动配置预览,核对图像与报告值(请求值 vs 检测值);
  9. 完成后点击OK将完整相机配置应用到主窗口。

其中曝光、增益、帧率、分辨率等相机侧修改需要后端重新打开相机,配置预览会自动重启;而旋转与裁剪由预览路径应用,无需重开相机(camera_config.md)。GUI 最多支持启用四路相机,多相机场景建议逐一预览验证、确认稳定设备身份、保持一致的帧率/分辨率目标、曝光足够短以满足采集速率、仅启用本次实验需要的相机并保存配置以保证可复现。

故障排查(Troubleshooting)

检测不到相机(No cameras detected)

  1. 验证 Aravis 安装是否正常:
    arv-tool-0.8 -l
  2. 检查相机电源、线缆与网络配置;
  3. 确保 USB 或网络设备拥有足够的系统权限。

补充提示(来自 camera_config.md 的通用排查):确认相机已供电并连接、确认选择了正确的后端、更换连接或驱动后点击Refresh、关闭可能独占相机的其他应用程序。

超时错误(Timeout errors)

  • 增大timeout值;
  • 增大n_buffers;
  • 检查 GigE 带宽与数据包大小配置。

像素格式错误(Pixel format errors)

  • 查看相机支持哪些格式:
    arv-tool-0.8 -n <camera-name> features
  • 尝试更简单的格式,例如Mono8。

与 GenTL 后端对比

在工业相机接入上,官方给出了 Aravis 与 GenTL 的对比:

特性AravisGenTL
最佳平台LinuxWindows
相机支持GenICam / GigE厂商 GenTL
安装方式系统软件包厂商 CTI 文件
自动检测是是
性能优秀优秀

结合两份后端文档可以进一步理解差异:GenTL 后端需要pip install harvesters并配置GENICAM_GENTL64_PATH/GENICAM_GENTL32_PATH环境变量或手动指定.cti文件(GenTL 后端文档);而 Aravis 通过apt/dnf/brew等系统包管理器安装即可,这正是官方推荐其在 Linux 上用于工业相机的核心原因。

完整示例配置

将前述各参数组合,即可得到一份可直接用于配置文件(或作为 GUI 设置落地形态参考)的完整示例:

{ "camera": { "backend": "aravis", "index": 0, "fps": 60.0, "exposure": 8000, "gain": 10.0, "properties": { "aravis": { "pixel_format": "Mono8", "n_buffers": 15, "timeout": 3000000 } } } }

小结与延伸阅读

Aravis 后端为 DeepLabCut-live-GUI 提供了一条无需厂商 SDK、系统包即装即用的 GenICam / GigE Vision 工业相机接入路径,其核心要点可概括为:在 Linux 上通过系统包安装 Aravis 库与 GObject 绑定;在配置文件的camera.backend中声明"aravis";用properties.aravis.device_id保证设备选择的稳定性;理解像素格式统一归一化为 BGR 8 位(以及 Mono12/16 的逐帧动态缩放);掌握exposure <= 0表示自动模式、n_buffers/timeout用于吞吐调优。

如需进一步深入,可继续阅读本仓库内的相关文档:

  • 相机支持总览:全部后端、平台推荐与快速安装;
  • GenTL 后端文档:Windows 工业相机替代方案;
  • 相机配置对话框:GUI 配置流程、触发设置与多相机建议;
  • GUI 总览:主窗口、录制与叠加层设置;
  • 安装指南:uv/ conda 环境搭建与启动命令。

官方文档同时提供了 Aravis 项目主页、GenICam 标准与 Python GObject 文档等外部参考资料,便于进一步了解底层协议与 API 细节。

  • 人工智能
  • 深度学习
  • 计算机视觉
  • 科研

【免费下载链接】DeepLabCut

Official implementation of DeepLabCut: Markerless pose estimation of user-defined features with deep learning for all animals incl. humans

项目地址:https://gitcode.com/gh_mirrors/de/DeepLabCut
点击查看免费下载
上一篇:5分钟免费解密网易云音乐NCM格式:ncmdump终极完整指南
下一篇:网易云音乐NCM文件转换终极指南:3种方法实现免费快速解密

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

返回列表