从YOLO v1以来,由于算法的不断更进,YOLOv3的效果已经很令人惊讶了。既然有“巨人的肩膀”,那就可以利用yolo v3做一些应用。
前几个月,博主所读的学校正进行AI化,比如可以提前在网页上看到每个食堂就餐或者排队的人数,刷脸可以进校门等等。
当时被妹子问道:“学校怎么知道每个食堂有多少人呢?”
我以专(zhuang)业(bi)的AI学识进行了一通分析:在食堂某个视角好的位置装上摄像头,用基于深度学习的检测网络便可以检测出有多少人。
后来,学校技术人员专门回复了一下这个技术要点:其实我们是通过手机的连网人数判断食堂人数的。因为不是每个同学吃饭都会连校园网,所以会乘以一个比例系数。。。。
原来是这么粗暴简单的做法。。
为了证明CV也可以进行人数统计,所以我开始进行了这方面的探(jie)究(jian)。
所以,把yolo3的代码进行了些许包装,并没有涉及DNN的修改(所以还是属于低端操作,图个乐)。
1. 把分类不为person的输出框都去掉,这样就只检测人了。
2. 加一个计数器,这样就完成了人数统计。
实现效果如下:
由此看来,用这个算法来统计人数效果凑合,能指出个大概人数。但缺点还是很明显的:
1. 模型比较大,因为这个模型可以检测其他object,并不是专门检测human的,所以计算冗余度十分明显;
2. 对于复杂场景,人超过的情况下,表现力非常差。
所以,可以以这个为基准进行优化。
代码放在github: https://github.com/leviome/human_counter
用起来应该比较方便。