我是机器学习领域的新手,基于我在youtube上看到的内容并在互联网上阅读,我猜想有可能使用tensorflow的对象检测API来计算视频中的行人。
因此,我对tensorflow进行了一些研究,并阅读了有关如何安装tensorflow的文档,然后最终下载了tensorflow并进行了安装。使用github上提供的示例文件,我调整了与此处提供的object_detection笔记本相关的代码 - > https://github.com/tensorflow/models/tree/master/research/object_detection。
我在更改imag_utils.py脚本时对我收集的视频执行了改编的代码,以便报告跨越屏幕上定义的感兴趣区域的对象数量。也就是说,我收集了人类的边界框尺寸(左,右,上,下),并计算了越过定义的感兴趣区域的所有检测(想象一下视频帧上的一组两条虚拟垂直线,左右像素值和然后将检测到的边界框的左右值与预定义值进行比较)。但是,当我使用这个程序时,即使程序检测到这些程序,我也很少会遇到行人。这就是程序正确地将它们归类为人,但有时它们不符合我为计数定义的标准,因此它们不计算在内。我想知道是否有更好的方法使用代码计算独特的行人,而不是使用我正在尝试开发的简单方法。我使用的方法是正确的吗?还有其他更好的方法吗?将不胜感激任何帮助。
请放轻松我,因为我不是机器学习专家,只是一个新手。
答案 0 :(得分:2)
您正在使用预训练模型,该模型经过培训可识别一般人。我想你说有些人是行人,有些人不是行人,例如,有人站在灯光下等待行人,但有人站在街道后面的花园里不是行人。
如果我是对的,那么你已经达到了这个模型所能得到的限制,你可能需要自己训练一个模型去做你想做的事。
由于你刚接触ML建立你自己的数据集并训练你自己的模型可能听起来像一个很高的顺序,有一个学习曲线可以确定。所以我建议最简单的方法。也就是说,使用对象检测模型来识别人,然后训练新的二元分类模型(关于最简单的训练模型)以识别特定人是否是行人(您将创建图像数据集和1/0将它们标识为行人或非行人的价值观)。我建议这是因为布尔分类模型就像你可以获得的模型一样简单,你可以遵循许多教程。这是一个很好的:
执行此操作时需要注意的一些事项:
我的最后一个要点说明了这个想法的问题,因为我已经提出了这个问题。最好的解决方案是改变物体检测网络以输出每人的边界框,以及使用它的行人/非行人分类;或者只是训练模型来识别行人,特别是首先。我提到这是更优化的,但我认为这是一个比我的第一个建议更高级的任务,以及一个更复杂的数据集来管理。当你学习ML的方式时,这可能不是你想要解决的第一件事。