本帖最后由 cll826 于 2018-8-2 09:58 编辑
情景记录器
角蜂鸟情景记录器
本章为您介绍如何使用角蜂鸟在Python调用内置部署的GoogleNet来实现一个实用性非常强的情景记录器。
介绍
角蜂鸟情景记录器可将希望分类的图像实时储存在不同的“存档”下并立即生成一个分类模型,之后便可辨识它们对应的场景。比如说在门打开的时候将图像录制进[存档1],关闭的时候录制进[存档2],生成模型之后便可辨认门是否开启。将不同的手势录制进不同的存档下就变成了一个简单的手势识别。
使用说明执行Python程序、初始化角蜂鸟之后,对准需要录制的第一个目标,按1-5之中的一个数字(对应存档编号): 比如说按1后保持7帧,终端将显示:
- | Record to bin: 1 |
- | [7]-[0]-[0]-[0]-[0] |
复制代码
接着对准第二个目标按2:
- | Record to bin: 2 |
- | [7]-[8]-[0]-[0]-[0] |
复制代码
这样记录器中储存两个目标就可以开始生成模型了。 按 ‘r’ 将筛选去除每个存档中的冗余图像特征,并生成模型。
- | .........Compressing.......... |
- | [2]-[2]-[0]-[0]-[0] |
- | ------Compress finished------- |
复制代码
进入识别状态并开始实时显示5个不同类别的置信度。下例中的意思为第一个类别的可能性为74%,第二个为26%。第二个栏里简单的将置信度可视化,竖条越多说明当前场景越可能属于该存档。
- | ---------Running ANN---------- |
- * [1]: 0.74 *
- * [2]: 0.26 *
- * [3]: 0.00 *
- * [4]: 0.00 *
- * [5]: 0.00 *
- | --------Probabilities--------- |
- | ||||||| |
- | || |
- | |
- | |
- | |
复制代码
按 ’s’ 将存档录入至 /misc/record.dat 文件中。按 ‘l’ 可读当。如需更改文件名或保存多个存档,请做如下修改:
- prob = net.record(result, key, saveFilename='/Myfolder/NewFile.dat')
复制代码
按 ‘p’ 将重置删除所有存档。
修改存档个数
如需更改存档个数,可添加参数 numBin 如下:
- prob = net.record(result, key, numBin = 9)
复制代码
如需读档,建议不设置numBin。如设置与原存档数量不同的numBin会报错。
注意事项
信噪比
因为记录器会将整个图片量化为特征向量并储存,意味着情景中的关键信息占的图像比重越低,效果会越差。
负样本
识别中往往存在“无信息”的状态,这时需要加入额外的负样本来辨识。比如说识别两个不同的人分别为1和2,当两个人都不存在于场景时,分类器会强行赋予1和2之间的标签,所以需要将背景或是希望避免的干扰信息记录至一个额外的存档中。
路径和文件
- 情景记录器Python:SungemSDK/examples/python/SceneRecorder.py
- 模型文件:SungemSDK/examples/graphs/graph_g - GoogleNet
- 模型文件(备选):SungemSDK/examples/graphs/graph_fn - FaceNet
情景记录器 Scene Recorder
在python目录下执行以下命令来启动 情景记录器 范例。
- ~/SungemSDK/examples/python$ python3 SceneRecorder.py
复制代码 初始化
- WEBCAM = False
- net = hs.HS('GoogleNet', zoom = True, verbose = 2)
复制代码
两种模式(WEBCAM): - True时使用外接USB摄像头
- False时使用角蜂鸟内置树莓派摄像头
在初始化角蜂鸟时可设置的参数: - zoom: 如果为True,则输出图像为640*360,否则为1920*1080 *
- verbose: 0时不输出任何信息、1时输出设备和其他关键信息、2时输出全部信息。
情景识别
图像与其特征向量
使用角蜂鸟模式时(WEBCAM为False),无需输入图像,img为None。在使用外置摄像头模式时需输入图像。 result中返回图像与其特征向量(GoogleNet时为1024维度向量),分别放置在result[0]与result[1]中
录入与取得分类结果
- key = cv2.waitKey(5)
- prob = net.record(result, key)
复制代码
通过OpenCV的waitKey将获得输入的键盘键位,目前对应的键位分别为:
- 1-5 将当前帧储存至对应的数字存档中
- r 清理存档中图像,并生成分类模型
- 录制时输出为None
如其他键位或没有按键,将输出识别 SoftMax 置信度。
产品购买链接:https://www.cirmall.com/shop/?c=products&a=view&id=5113
|