一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于边缘加速的小型化神经网络识别检测设备及方法与流程

2022-02-22 07:36:13 来源:中国专利 TAG:


1.本发明涉及网络识别领域,尤其是一种小型化神经网络识别检测设备及方法。


背景技术:

2.目前的识别分类的网络需要大量的算力,一般会使用pc端的高性能gpu进行相应运算。基于例如树莓派之类的小型化设备进行神经网络的运算,仅靠其芯片性能达不到算力需求,实现不了实时的识别分类。
3.现有产品或设备的专利相关情况主要为利用机器学习实现图像的识别检测,并具体应用的某一方面,基本使用的是pc端(即使用带有gpu加速的电脑设备,其体型巨大,且成本也比较高);或者使用专用的神经网络嵌入式板子(如海思,通常价格在万元以上),其设备的成本较大。
4.另外,有很多成熟的识别神经网络检测识别算法,其通常采用tensorflow、keras、caffe、pytorch等框架。通过训练得到相应的权重文件,可以在pc端实现实时的检测识别。但是,以tensorflow常用的ckpt文件为例(其余网络框架得到的权重文件,如.h5,.weight等都可以相互转换),其应用到小型的廉价的嵌入式设备中,现阶段却不可能实现,即不能实现pc端和嵌入式设备的网络权重通用。


技术实现要素:

5.本发明目的在于提供一种实现实时的图像检测、分类功能的基于边缘加速的小型化神经网络识别检测设备及方法。
6.为实现上述目的,采用了以下技术方案:本发明所述设备包括小型化板子、相机、单个或多个并联的tpu;所述小型化板子与相机通过usb接口、csi2接口或者wifi同小型化板子相连,相机用于采集图像,并将图像信息输入至小型化板子;所述小型化板子通过usb3.0接口与多个并联的tpu相连。
7.进一步的,所述小型化板子为带有cpu,且装有debian系统的嵌入式板。
8.进一步的,所述单个或多个并联的tpu为边缘计算加速棒,较为常用的加速棒为google出售的corel,或英特尔的ncs。
9.另外,本发明还提供了一种基于边缘加速的小型化神经网络识别方法,包括以下步骤:
10.s1,将所有模型的权重文件转换为pb文件,该类型文件为固化的权重文件,包含有网络信息和节点数据;
11.s2,将pb文件压缩为tflite文件,该类型的权重文件体量小,适合于小型化的设备;
12.s3,将tflite文件编译为tpu可读文件,可将权重文件搭载到tpu上加速计算;
13.s4,通过以上步骤实现常见的神经网络权重文件的转换为固化的、小型的权重文件可以搭载到小型的嵌入式设备中,使用tpu进行加速,实现实时的图像识别检测。
14.与现有技术相比,本发明具有如下优点:
15.1、设备或产品小型化,嵌入式板大概信用卡大小,tpu设备为普通u盘大小;
16.2、神经网络运算速度快,例如使用工程化常用的ssdv1识别算法测试,其处理速度可以达到60ms每幅图片(300*300),可以实现实时检测。
17.3、通过现有的边缘加速设备(如google的coral tpu加速器),同成本较低的普通的嵌入式设备(如树莓派)组合,并通过一定流程的处理,构成效果好、成本低(千元以内)的可以实时检测识别的神经网络图像处理设备。
附图说明
18.图1是本发明设备的结构简图。
19.图2是本发明方法的流程图。
具体实施方式
20.下面结合附图对本发明做进一步说明:
21.如图1所示,本发明所述设备包括小型化板子、相机、单个或多个并联的tpu;所述小型化板子与相机通过usb接口、csi2接口或者wifi同小型化板子相连,相机用于采集图像,并将图像信息输入至小型化板子;所述小型化板子通过usb3.0接口与单个或多个并联的tpu相连,通过tpu实现神经网络计算加速功能。所述小型化板子为带有cpu,且装有debian系统的嵌入式板。tpu为边缘计算加速棒,边缘加速棒为google出售的corel,或英特尔的ncs。
22.如图2所示,本发明还提供了一种基于边缘加速的小型化神经网络识别方法,包括以下步骤:
23.s1,将所有模型的权重文件转换为pb文件,该类型文件为固化的权重文件,包含有网络信息和节点数据;
24.s2,将pb文件压缩为tflite文件,该类型的权重文件体量小,适合于小型化的设备;
25.s3,将tflite文件编译为tpu可读文件,将权重文件搭载到tpu上计算;
26.s4,通过以上步骤实现常见的神经网络权重文件的转换为固化的、小型的权重文件可以搭载到小型的嵌入式设备中,使用tpu进行加速,实现实时的图像识别检测。
27.具体的,ckpt文件转pb文件,使用google推出的tensorflow api中的函数,使用适用训练所用模型的输入输出节点,进行转换。pb文件转换为tflite文件,其中tflite文件为tensorflow框架专门设计的轻量级的网络格式,主要用于搭载安卓系统。使用tensorflow-lite中的tflite_convert.py文件。tflite文件编译为可搭载tpu上的tflite文件,其编译过程使用edgetpu-compiler。tpu同debian系统的嵌入式板组合,通过嵌入式板进行相机等其他外设输入的读取,将网络搭载到tpu上,使用tpu进行运算。
28.实施例1:
29.使用自己采集的图片作为训练集,通过网络训练得到相应的网络权重文件,对网络文件进行格式转换和编译,并搭载到本发明的设备上,实现实时检测。转换成了以下几个步骤:
30.1、采集自己训练集,并生成固定格式的tfrecord文件;
31.2、使用tensorflow api进行训练,得到ckpt权重文件;
32.3、ckpt转换成tpu可读的tflite-tpu权重文件。
33.1.1采集数据集
34.通过相机或者截取视频,采集到原始图像集,并通过软件labelimg完成数据标记。
35.1.2制作数据集
36.新建images文件夹,将自己的训练集全部放入该文件夹中。
37.新建merged_xml文件夹,该文件夹用于存储标记软件生成的xml文件,如果是自己标记的话,直接将生成路径设置为该文件夹;如果是有标记好的xml文件,可以通过change_xml.py程序,修改已有的xml文件。
38.新建annotations文件夹,运行程序train_test_split.py将自己的图片分成训练集、测试集、验证集。
39.1.3数据集格式转换
40.新建data文件夹,通过程序xml_to_csv.py将xml文件转换成csv文件。
41.通过程序generate_tfrecord.py将csv文件转换为tfrecord格式。
42.命令行:
43.python generate_tfrecord.py
44.--
csv_input=e:\lr\ssd_quantized\data\whsyxt_train_labels.csv
45.--
output_path=e:\lr\ssd_quantized\data\whsyxt_train.tfrecord
46.python generate_tfrecord.py
47.--
csv_input=e:\lr\ssd_quantized\data\whsyxt_test_labels.csv
48.--
output_path=e:\lr\ssd_quantized\data\whsyxt_test.tfrecord
49.python generate_tfrecord.py
50.--
csv_input=e:\lr\ssd_quantized\data\whsyxt_validation_labels.csv
51.--
output_path=e:\lr\ssd_quantized\data\whsyxt_validation.tfrecord
52.2.1 tensorflow api下载
53.使用命令:
54.import tensorflow as tf
55.tf.__version__
56.来查看自己的tensorflow版本,并下载相应的tensorflow model。
57.2.2安装配置protobuf
58.在https://github.com/google/protobuf/releases中,选择相应的版本在models\research\目录下,打开命令窗口,输入:protoc object_detection/protos/*.proto
--
python_out=.
59.不报错即成功!
60.从命令行中,进入到models/research/文件夹中,输入测试命令:python object_detection/builders/model_builder_test.py
61.不报错即成功!
62.2.3训练
63.使用的config文件为:ssd_mobilenet_v1_300x300_coco14_sync.config。
64.其中修改的参数为:
65.num_classes:2
66.batch_size:8这个如果太大,会出现内存问题;
67.num_steps:200只是验证是否能正常运行,所以只训练200次;
68.total_steps:200同上;
69.warmup_steps:100学习率变化的训练次数,需要小于200;
70.fine_tune_checkpoint:"path_to_be_configured/model.ckpt"注释掉;
71.不注释掉,需要加入路径,并在使用的权重文件基础上训练,速度会快很多;
72.input_path:"e:\lr\ssd_v1_quantized_test\data\whsyxt_train.tfrecord"
73.label_map_path:"e:\lr\ssd_v1_quantized_test\data\label_map.pbtxt"
74.input_path:"e:\lr\ssd_v1_quantized_test\data\whsyxt_validation.tfrecord"
75.label_map_path:"e:\lr\ssd_v1_quantized_test\data\label_map.pbtxt"
76.训练的命令为:
77.python train.py
--
logtostderr
78.--
pipeline_config_path=e:/lr/ssd_v1_quantized_test/data/ssd_mobilenet_v1_300x300_coco14_sync.config
--
train_dir=e:/lr/ssd_v1_quantized_test/data
79.得到ckpt文件。
80.3.1权重文件格式转换
81.通过export_tflite_ssd_graph.py将训练后的模型导出所需要的文件
82.命令:
83.python export_tflite_ssd_graph.py
84.--
pipeline_config_path=e:/lr/ssd_v1_test/ssd_mobilenet_v1_0.75_depth_quantized_300x300_coco14_sync.config
--
trained_checkpoint_prefix=./data/model.ckpt
85.--
output_directory=e:/lr/ssd_v1_test/tflite_data
--
add_postprocessing_op=true
86.通过bazel编译转换工具,pb文件生成tflite文件。
87.3.2编译tflite文件
88.tflite文件为google将神经网络部署在安卓客户端所涉及的轻量级的网络权重文件格式。若需要在tpu上运行tflite,需要对生成的tflite文件进行编译。
89.使用命令完成编译:
90.edgetpu_compiler[options]model...
[0091]
4测试验证
[0092]
将得到的权重文件tflite-tpu搭载到树莓派上,使用detection文件中的demo.py程序,该程序为调用网络的实时检测程序,需要修改数据集类别路径和权重文件路径。经测试,可以使用树莓派 tpu实现实时检测,检测效果良好。
[0093]
精度下降的主要原因在于config文件中的网络缩减系数,0.75的情况下,权重文件仅为4m。
[0094]
以上所述的实施例仅仅是对本发明的优选实施方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案做出的各种变形和改进,均应落入本发明权利要求书确定的保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献