- 人工智能
- 深度学习
- 计算机视觉
- 科研
【免费下载链接】DeepLabCut
Official implementation of DeepLabCut: Markerless pose estimation of user-defined features with deep learning for all animals incl. humans
本指南面向 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,目前支持四种后端(详见 相机支持总览):
- OpenCV:通用网络摄像头 / USB 相机,全平台可用;
- GenTL:通过 GenTL Producer(
.cti文件)接入工业相机,Windows/Linux 可用; - Aravis:基于 Aravis 库接入 GenICam / GigE Vision 相机,主推 Linux(macOS 实验性);
- 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-giLinux(Fedora)
sudo dnf install aravis python3-gobjectWindows
Windows 上使用 Aravis 需要**从源码自行构建**或改用 **WSL**。若需原生 Windows 方案,请改用 GenTL 后端(见 [GenTL 后端文档](https://link.gitcode.com/i/2943facb9a7afbf7d1f1fa608409e917))。macOS
brew install aravis pip install pygobjectmacOS 上安装 `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 中直接可调,且对所有后端共享。| 属性 | 类型 | 说明 |
|---|---|---|
width | int | 请求的图像宽度(可选) |
height | int | 请求的图像高度(可选) |
fps | float | 目标采集帧率 |
exposure | float | 曝光时间,单位微秒 |
gain | float | 相机增益值 |
这些字段与 相机配置对话框中的Capture settings一一对应:分辨率、帧率、曝光、增益均有0 表示 Auto / 不强制的语义(见下文行为细节)。
Aravis 专用属性(需手动写入配置文件)
以下属性为 Aravis 后端专属,必须在配置文件中手动设置。| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
device_id | string | — | 显式指定 Aravis 设备 ID(优先级高于 index) |
pixel_format | string | Mono8 | 请求的像素格式 |
timeout | int | 2000000 | 帧超时时间,单位微秒 |
n_buffers | int | 10 | 流式采集的缓冲区数量 |
像素格式(Pixel format)
支持的取值:
Mono8Mono12Mono16RGB8BGR8
内部实现上,所有帧最终统一转换为 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_iddevice_vendordevice_modeldevice_serial_nbrdevice_protocoldevice_addressdevice_namedevice_path
流式传输与性能调优
缓冲区数量(Buffer Count)
针对高吞吐或高延迟系统,可增大缓冲区:
{ "camera": { "properties": { "aravis": { "n_buffers": 20 } } } }超时(Timeout)
针对较慢的相机或拥塞的网络,可调整帧超时:
{ "camera": { "properties": { "aravis": { "timeout": 5000000 } } } }(5 秒 = 5,000,000 微秒)
在 GUI 中的完整配置流程
结合 相机配置对话框,使用 Aravis 后端的典型操作流程为:
- 在主窗口 Controls 面板的 Camera 区域选择Configure Cameras…(打开前需停止主窗口实时预览);
- 在对话框中选择 Backend 为 Aravis(更换后端会触发新的发现扫描);
- 等待设备发现完成,或点击Refresh重新扫描;
- 在Available cameras中选择设备;
- 点击Add Camera(或双击设备)将其加入Active cameras;
- 选中活动相机,调整采集、输出、裁剪或触发设置;
- 点击Apply Settings应用设置;
- 启动配置预览,核对图像与报告值(请求值 vs 检测值);
- 完成后点击OK将完整相机配置应用到主窗口。
其中曝光、增益、帧率、分辨率等相机侧修改需要后端重新打开相机,配置预览会自动重启;而旋转与裁剪由预览路径应用,无需重开相机(camera_config.md)。GUI 最多支持启用四路相机,多相机场景建议逐一预览验证、确认稳定设备身份、保持一致的帧率/分辨率目标、曝光足够短以满足采集速率、仅启用本次实验需要的相机并保存配置以保证可复现。
故障排查(Troubleshooting)
检测不到相机(No cameras detected)
- 验证 Aravis 安装是否正常:
arv-tool-0.8 -l - 检查相机电源、线缆与网络配置;
- 确保 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 的对比:
| 特性 | Aravis | GenTL |
|---|---|---|
| 最佳平台 | Linux | Windows |
| 相机支持 | 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
相关推荐
解锁工业视觉新高度:Aravis GigE Vision和USB3 Vision完整指南
解锁工业视觉新高度:Aravis GigE Vision和USB3 Vision完整指南 在当今工业自动化和机器视觉领域,GigE Vision和USB3 Vi
计算机视觉音视频TanStack Table v9 tableOptions() 类型推断指南:复用表格选项的编译期保真
TanStack Table v9 tableOptions 类型推断指南:复用表格选项的编译期保真 导读 在 TanStack Table 的 v9 版本中,
人工智能深度学习计算机视觉科研【亲测免费】 阿拉维斯(Aravis):高性能GigE Vision和USB3 Vision库
阿拉维斯(Aravis):高性能GigE Vision和USB3 Vision库 是一个开源项目,专为处理Gigabit Ethernet(GigE Visio
计算机视觉音视频
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考