当前位置: 首页 > 工具软件 > Glimpse > 使用案例 >

Glimpse: Continuous, Real-Time Object Recognition on Mobile Devices

井学
2023-12-01

1 简介

目前许多终端设备上都带有摄像头,这使得物体检测应用可以在终端设备上运行。但物体检测算法需要进行大量运算,终端设备的运算力通常不能满足实时物体检测所要求的低时延。若将算法交给服务器运行,则传输时延变得不可接受。
Glimpse周期性地将一些关键帧发送给服务器,由服务器标记关键帧中的物体,终端设备缓存一部分帧,并且根据关键帧的标记在缓存帧中追踪要检测的物体。从而降低时延并减少带宽需求。
注:object detection(检测) 和 object reconition(识别) 的区别:物体检测指发现物体的存在,标记物体的位置。物体识别指确认物体是什么。先要检测出物体才能识别物体。

2 背景

物体识别的三个步骤:

  1. 物体检测:通过一些简单特征在一幅图像上标记出可能感兴趣的物体(bounding box);
  2. 特征提取:使用如尺度不变特征变换等技术在bounding box 中提取特征向量;
  3. 物体识别(标记):使用机器学习技术通过带有标签的图像数据库在线下训练一个识别模型,该模型输入一个图像的特征返回其标签。

物体追踪技术:在不同帧之间使用物体的特征点追踪移动的物体。
挑战:在终端设备中进行物体检测和识别所耗费的时间和能量都远大于服务器,但运行物体追踪的消耗很小。

3 Active Cache

核心问题:服务器需要大量时间来检测和识别物体,所需要的时间远大于相邻帧间隔,当服务器返回识别结果时,该物体可能已经发生移动,此时终端设备如何实时地对物体进行定位?
我们打算使用关键帧标识+物体追踪来定位所有帧中的物体。需要缓存的帧是上一个从服务器回来的关键帧到当前帧之间的所有帧。当前帧中的物体定位就通过关键帧和缓存帧而得。如果我们遍历缓存中的所有帧,那时延将变得不可接受,所以我们只能挑选缓存中的部分帧来运行物体追踪。问题转化为应该挑选多少帧和挑选哪些帧。
n:当前帧到关键帧之间帧的数量。缓存的帧数。
l:从缓存的帧中挑选l帧进行物体追踪。p = l/n。
e:运行一次物体追踪所需时间。
通过实验寻找p与n,e的关系。确定最佳的p。
确定p后,可计算出l。表明需要挑选l帧。
将所有的n帧转化为灰度图,逐像素比较,得出相邻两帧的差异度,根据差异度将n帧划分到l+1个区间,使得所有区间中最大差异度之和最小。可用dp求解。

4 Trigger Frames

确定某一帧是否发送给服务器的主要目的在于不损失精度的情况下降低带宽开销。
使用三个方法确定某一帧是否作为关键帧发送给服务器:

  1. 物体追踪失败:计算所有特征点的移动距离,计算这些移动距离之间的标准差。标准差大于阈值时认为物体追踪失败。
  2. 场景变化(例如有新物体出现):依然是逐像素比较,当两帧差异度大于某个阈值时,认为场景发生变化。
  3. 控制发送关键帧的数量:已发送给服务器但服务器仍未返回识别结果的帧的数量不超过一个。

5 取得的效果

  • 相比于仅使用服务器返回的识别结果,由于Glimpse使用缓存追踪物体的运动,所以能够提升准确率。
  • 通过实验观察F1 score与p,n,e的关系从而根据n,e选择最佳的p。
  • 实验也表明选择Trigger Frames与持续向服务器发送相比在不损失精度的前提下略微降低了带宽消耗。

6 相关工作

  • Network latency hiding:通常的做法是预测。
  • Object recognition:通常没有针对终端设备考虑能量消耗,传输延时和带宽消耗。
  • Object tracking and scene change detection。
  • Mobile computation offloading:Glimpse可以与边缘计算相结合。

7 不足之处

  • 当物体不能与背景很好地区分时,物体追踪技术效果不好,进而影响Glimpse的效果。
  • 判断trigger frames的差异度阈值被设为常数,可能只能得到次优解。
 类似资料: