交通结构化搜索系列目录
第一章 确定项目开发目标和框架以及项目初期准备
前言
在训练深度学习模型的时候,我们经常会对数据做结构化,比如车可以进一步被结构化细分为小汽车、SUV、公交车、货车、房车等子类别。进一步的结构化细分特征能够让某一父类下的特征更好的被区分从而降低互相之间的可能在训练中出现的影响。
在交通出行的行业内,数据结构化有一个很重要的应用就是结构化搜索,即通过做细分的结构化数据,运用目标检测和目标跟踪技术,对不同目标进行属性的识别,比如在监控下一个行人可以被赋予一个独有的id,同时他身上也会相应的识别出很多属性,比如上身穿白色短袖,下身穿黑色短裤,头发是长发还是短发,是否戴眼镜。通过这样精准的将不同属性附加到一个独有id上,可以在后期通过给出关键词的形式来模糊搜索想要搜索的目标。我在一两个月前就有了动手写一个结构化搜索算法的想法,但是空闲时间比较少搁置了一段时间,现在重新启动,本系列文章将会全程带领大家实现一个结构化搜索的demo,放心,代码和数据集将会开源。
一、确定要做的场景
结构化搜索可以应用在很多不同的场景,由于我们的项目是demo性质,所以选择了行人交通这个比较传统的场景。我找了一个经典视频。
二、确定开发目标
确定好场景之后我们需要确定一下这个项目到底需要实现哪些功能以及最终的效果,也就是定一个开发目标,这里我大体给项目分了4个部分:
a)算法:由于在结构化搜索的场景需求下主要是对视频流中的目标进行检测并跟踪,如果需要实时检测,就需要更快速的1-stage目标检测算法,如果是离线跑视频最后再在数据库中进行搜索,那么对算法实时性不好可以使用一些精度比较高的1-stage检测算法,不过我想的是两个功能都给他实现了所以决定还是用速度比较快的算法,具体的技术选型在下一篇文章中会详细介绍。
b)检索匹配:在检索时需要对目标进行跟踪,从而区分不同的目标,同时也需要对属性集合进行归类,也就是说一个属性集合应当知道它归属于哪一个id。
c)数据库:在算法检测和检索匹配完成之后需要对ID和其对应的属性集合存入数据库(或者说保存记录)。保存的数据可以实时的被调用和检索。
d)交互:用户可以对视频流进行选择,同时实时的添加或删除想要匹配的属性,这些实时添加或者删除的操作需要同步的反馈在画面上,比如用户添加了一个属性叫长发,那么应当在视频流上实时将所有匹配长发的目标都框出来。
当然这些功能将会被尽可能的作为接口进行开发,这样可以让代码更好的被接入其他项目中。
三、总结
这一章介绍了一下整个项目的背景以及开发目标和使用的数据,在下一篇文章中将会介绍算法的技术选型,同时也会详细说明数据集的制作思路以及如何训练。