查看: 2815|回复: 0

角蜂鸟实例教程 > Python > 情景记录器

[复制链接]

该用户从未签到

发表于 2018-8-3 09:01:17 | 显示全部楼层 |阅读模式
分享到:
本帖最后由 cll826 于 2018-8-2 09:58 编辑

情景记录器

角蜂鸟情景记录器

本章为您介绍如何使用角蜂鸟在Python调用内置部署的GoogleNet来实现一个实用性非常强的情景记录器。

介绍

1.png

角蜂鸟情景记录器可将希望分类的图像实时储存在不同的“存档”下并立即生成一个分类模型,之后便可辨识它们对应的场景。比如说在门打开的时候将图像录制进[存档1],关闭的时候录制进[存档2],生成模型之后便可辨认门是否开启。将不同的手势录制进不同的存档下就变成了一个简单的手势识别。
使用说明
执行Python程序、初始化角蜂鸟之后,对准需要录制的第一个目标,按1-5之中的一个数字(对应存档编号):
比如说按1后保持7帧,终端将显示:

  1. |        Record to bin: 1        |
  2. |      [7]-[0]-[0]-[0]-[0]       |
复制代码

接着对准第二个目标按2:

  1. |        Record to bin: 2        |
  2. |      [7]-[8]-[0]-[0]-[0]       |
复制代码

这样记录器中储存两个目标就可以开始生成模型了。
‘r’ 将筛选去除每个存档中的冗余图像特征,并生成模型。

  1. | .........Compressing.......... |
  2. |      [2]-[2]-[0]-[0]-[0]       |
  3. | ------Compress finished------- |
复制代码

进入识别状态并开始实时显示5个不同类别的置信度。下例中的意思为第一个类别的可能性为74%,第二个为26%。第二个栏里简单的将置信度可视化,竖条越多说明当前场景越可能属于该存档。

  1. | ---------Running ANN---------- |
  2. *           [1]: 0.74            *
  3. *           [2]: 0.26            *
  4. *           [3]: 0.00            *
  5. *           [4]: 0.00            *
  6. *           [5]: 0.00            *
  7. | --------Probabilities--------- |
  8. |            |||||||             |
  9. |               ||               |
  10. |                                |
  11. |                                |
  12. |                                |
复制代码

’s’ 将存档录入至 /misc/record.dat 文件中。按 ‘l’ 可读当。如需更改文件名或保存多个存档,请做如下修改:

  1. prob = net.record(result, key, saveFilename='/Myfolder/NewFile.dat')
复制代码

‘p’ 将重置删除所有存档。

修改存档个数

如需更改存档个数,可添加参数 numBin 如下:

  1. prob = net.record(result, key, numBin = 9)
复制代码

如需读档,建议不设置numBin。如设置与原存档数量不同的
numBin会报错。


注意事项

信噪比

因为记录器会将整个图片量化为特征向量并储存,意味着情景中的关键信息占的图像比重越低,效果会越差。

负样本
识别中往往存在“无信息”的状态,这时需要加入额外的负样本来辨识。比如说识别两个不同的人分别为1和2,当两个人都不存在于场景时,分类器会强行赋予1和2之间的标签,所以需要将背景或是希望避免的干扰信息记录至一个额外的存档中。

  • 本教程基于Ubuntu 16.04系统

路径和文件

  • 情景记录器Python:SungemSDK/examples/python/SceneRecorder.py
  • 模型文件:SungemSDK/examples/graphs/graph_g - GoogleNet
  • 模型文件(备选):SungemSDK/examples/graphs/graph_fn - FaceNet

情景记录器 Scene Recorder

python目录下执行以下命令来启动 情景记录器 范例。

  1. ~/SungemSDK/examples/python$ python3 SceneRecorder.py
复制代码
初始化
  1. WEBCAM = False
  2. net = hs.HS('GoogleNet', zoom = True, verbose = 2)
复制代码

两种模式(WEBCAM):
  • True时使用外接USB摄像头
  • False时使用角蜂鸟内置树莓派摄像头

在初始化角蜂鸟时可设置的参数:
  • zoom: 如果为True,则输出图像为640*360,否则为1920*1080 *
  • verbose: 0时不输出任何信息、1时输出设备和其他关键信息、2时输出全部信息。

情景识别

图像与其特征向量

  1. result = net.run(img)
复制代码

使用角蜂鸟模式时(WEBCAM为False),无需输入图像,img为None。在使用外置摄像头模式时需输入图像。 result中返回图像与其特征向量(GoogleNet时为1024维度向量),分别放置在result[0]与result[1]中


录入与取得分类结果
  1. key = cv2.waitKey(5)
  2. prob = net.record(result, key)
复制代码

通过OpenCV的waitKey将获得输入的键盘键位,目前对应的键位分别为:

  • 1-5 将当前帧储存至对应的数字存档中
  • r 清理存档中图像,并生成分类模型
  • 录制时输出为None


如其他键位或没有按键,将输出识别 SoftMax 置信度。

产品购买链接:https://www.cirmall.com/shop/?c=products&a=view&id=5113








回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条

手机版|小黑屋|与非网

GMT+8, 2024-11-20 00:22 , Processed in 0.119810 second(s), 16 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.