上下文:
- 我有一些图片和一个iOS设备的摄像头,在上面我可以获取图片的一部分并检测出其中的一些对象(确切地说,我得到了边界框)。
- 图片会移动,因此相机会获取图片的新部分。
- 我想唯一地计数检测到的对象,因此,如果我得到了图片的一部分,那么我已经通过并找到了已经计数的对象,那么我将跳过它们。
- 基于iOS的TensorFlow Lite SDK的解决方案
以下是电话的样子(and video of capturing and detecting):
我的想法
- 计算帧的运动(位移),然后将检测到的边界框与已经找到的bbs进行比较,并考虑到绝对位移。问题在于移位算法不够确定性和精确度,因此当我返回上一张图片时,移位被确定为有一些误差,并且在移动过程中,该误差正在累积。结果,旧bbs的绝对位置定义错误。我做错了还是这不是我的任务的正确解决方案?
- 使用多个对象跟踪,这似乎是此类任务最流行和最常用的方式。那里有很多不同的子任务,但主要是从这些子任务开始,我需要能够在随后的帧中重新标识对象,处理对象的出现和消失。如果在光照变化和运动模糊的情况下仍可以跟踪它们,那将是很好的(对于模糊,我现在暂时可以忽略这些帧)。当对象在某些帧中被部分或完全遮挡或两个对象彼此交叉时,这也非常有用。我只有一个观点,观点是稳定的,现在,我不在乎规模变化,但也许将来会。我在这里可以使用什么?我遇到了OpenCV Camshift(https://docs.opencv.org/3.4.1/db/df8/tutorial_py_meanshift.html)和SORT(https://arxiv.org/abs/1602.00763)以及其他许多基于深度学习的解决方案。在此处进行实时对象跟踪和计数的最佳做法是什么?
- 使用图像拼接,这样,我就可以在拼接图像上计算对象。生成的图像将像以下视频中那样进行拼接:https://www.youtube.com/watch?v=orcYKy19mjQ。从理论上讲,如果将图像正确拼接,而忽略图片的重复部分,则仅对检测到的物体进行计数将是一项容易的任务。我希望使用OpenCV SURF算法(我知道它已申请专利)或ORB。是解决该任务的一种可行方法,这里有一些警告,在iOS设备上是否可以正常工作?
有人面临类似的任务吗,请分享您的经验:)