首页> 中国专利> 基于深度学习与Flink的线上实时预测垃圾图片类别方法

基于深度学习与Flink的线上实时预测垃圾图片类别方法

摘要

本发明公开了基于深度学习与Flink的线上实时预测垃圾图片类别方法,包括:步骤1,将待识别垃圾图片传送至服务器的对象云存储OSS中;步骤2,将对象云存储OSS中的待识别垃圾图片图片输出至消息队列服务Kafka进行队列缓存;步骤3,将缓存在Kafka的待识别垃圾图片图片输出至Flink;步骤4,大数据引擎Flink将待识别垃圾图片图片进行预处理;步骤5,大数据引擎Flink载入训练好的图片分类模型文件以及下标与图片类别对应关系文件;对待识别垃圾图片进行图片类别的识别;步骤6,大数据引擎Flink识别图片类别完成后,将对应的图片类别进行输出。本发明提供的方法鲁棒性强、具有海量处理能力、不受图片规格限制,能为用户准确预测垃圾图片的类别。

著录项

  • 公开/公告号CN112732962A

    专利类型发明专利

  • 公开/公告日2021-04-30

    原文格式PDF

  • 申请/专利权人 南京大学;

    申请/专利号CN202110035236.9

  • 发明设计人 柏文阳;骆振源;

    申请日2021-01-12

  • 分类号G06F16/55(20190101);G06F9/54(20060101);G06K9/00(20060101);G06K9/62(20060101);G06N3/08(20060101);

  • 代理机构32237 江苏圣典律师事务所;

  • 代理人胡建华

  • 地址 210008 江苏省南京市栖霞区仙林大道163号

  • 入库时间 2023-06-19 10:48:02

说明书

技术领域

本发明涉及一种深度学习与Flink技术领域,特别是基于深度学习与Flink的线上实时预测垃圾图片类别方法。

背景技术

深度学习(DL,Deep Learning)是学习样本数据的内在规律和表示层次,这些学习过程中获得的信息对诸如文字,图像和声音等数据的解释有很大的帮助。它的最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据。深度学习是一个复杂的机器学习算法,在语音和图像识别方面取得的效果,远远超过先前相关技术。

Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。Flink以数据并行和流水线方式执行任意流数据程序,Flink的流水线运行时系统可以执行批处理和流处理程序。此外,Flink运行时本身也支持迭代算法的执行。其内存处理以及流水线方式应用在线上实时处理的场景下,能为业务提供实时处理的能力。

在垃圾分类实施现行的情况下,由于普通民众没有这么多空闲的时间学习每种不同垃圾的类别,不同垃圾应该投放的垃圾分类,造成了垃圾随意投放,没有很好的做到垃圾分类投放,增加了环卫工作人员的工作量,污染了环境。传统的垃圾图片类别识别系统具以下缺点:1.自适应性能差,一旦目标图像被较强的噪声污染或是目标图像有较大残缺往往就得不出理想的结果;2.处理能力有限,无法在短时间内处理海量的图片类别识别任务;3.图片规格有限制,针对图片的大小有一定的限制,一般需要用户预先处理图片数据;4.准确率过低,对于预测的类别有所限制,并且在准确率这个指标上,过于低下;目前市面上还没有多种类的垃圾图片线上实时识别系统。

发明内容

发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供基于深度学习与Flink的线上实时预测垃圾图片类别方法,利用深度学习的图片分类模型与大数据引擎Flink海量实时处理能力来实时处理用户对垃圾类别识别的请求。

为了解决上述技术问题,本发明公开了基于深度学习与Flink的线上实时预测垃圾图片类别方法,具体步骤如下:

步骤1,将待识别垃圾图片信息传送至服务器的对象云存储OSS(Object StorageService)中,所述待识别垃圾图片信息包括待识别垃圾图片的id以及待识别垃圾图片;

步骤2,将对象云存储OSS中的待识别垃圾图片信息输出至消息队列服务Kafka进行队列缓存;

步骤3,将缓存在消息队列服务Kafka的待识别垃圾图片信息输出至大数据引擎Flink,Kafka从中起到数据缓存作用,从而避免海量数据一次性涌入Flink集群,冲垮Flink集群服务器;

步骤4,大数据引擎Flink将待识别垃圾图片信息进行预处理;预处理包括图片格式转换,图片大小重置,转换成CHW通道数据。

步骤5,大数据引擎Flink载入训练好的图片分类模型和下标与图片类别对应关系文件,应用于图片类别识别。载入步骤4预处理好的图片CHW通道数据,输入至图片分类模型中,输出对应的图片类别下标,使用下标与图片类别的对应关系,输出图片类别;

步骤6,大数据引擎Flink识别图片类别完成后,将待识别垃圾图片的id及对应的图片id和图片类别进行输出。

在一种实现方式中,步骤4包括:

步骤4-1,将待识别垃圾图片信息转换成字节码数组,使用ImageIO的read函数生成BufferedImage对象,用于载入到内存中;

步骤4-2,将待识别垃圾图片字节码数组载入至内存中,将BufferedImage对象交给ColorProcessor进行处理;

步骤4-3,图片对象通过ColorProcessor的convertToRGB方法转换成图片的RGB(红-绿-蓝,Red-Green-Blue)格式;

步骤4-4,将转换成RGB格式的图片对象通过ColorProcessor的resize函数重置尺寸为331*331;将转换成RGB格式的图片对象的尺寸设置为331*331是为了契合图片分类模型数据输入格式;

步骤4-5,获取重置尺寸的图片对象的CHW(通道-高度-宽度,Channel–Height-Width)通道数组,通过ColorProcessor的getNChannels函数获取通道数量,进而获取各个通道的数组,将CHW三通道的数组组合起来;

步骤4-6,将CHW通道数组转换为HWC通道数组,调整CHW通道数组编码顺序,转换为HWC通道数组;将CHW通道数组转换为HWC通道数组是为了契合图片分类模型数据输入格式;

步骤4-7,将待识别垃圾图片的id与HWC通道数组输出。

所述步骤4待识别垃圾图片信息进行预处理,不受图片规格限制,无论图片大小,无需用户手动预处理,均能在毫秒级为用户预处理图片,大数据引擎Flink对图片进行预处理的处理耗时均在500ms以内。

在一种实现方式中,步骤5包括:

步骤5-1,大数据引擎Flink载入预训练好的图片分类模型文件以及下标与图片类别对应关系文件;

步骤5-2,将步骤4-7中待识别垃圾图片的id与HWC通道数组输入至图片分类模型,对待识别垃圾图片进行类别预测,输出下标;

步骤5-3,从下标与图片类别对应关系文件中匹配下标对应的图片类别;

在一种实现方式中,步骤5-1中所述训练好的图片分类模型文件为图片分类模型训练完成后,将图片分类模型保存至图片分类模型文件。

在一种实现方式中,训练所述图片分类模型前,需要对预训练图片数据集进行数据预处理,包括:

步骤5-1-1,调整预训练图片数据集中图片尺寸,按照图片较短的边,随机等比例缩放至[360,480]范围,获得缩放后的图片;

步骤5-1-2,水平、垂直翻转缩放后的图片,并随机裁剪尺寸为331*331的图片,将预训练图片数据集中同一张图片经过翻转、裁剪后,获得32张初步预处理图片用于预训练;

步骤5-1-3,将获得的初步预处理图片进行归一化处理,获得预处理图片;将预处理图片输入所述图片分类模型进行训练。

对预训练图片数据集进行数据预处理是为了消除图像中无关信息,增强图片分类的准确性以及最大限度的简化数据。

在一种实现方式中,步骤5-1-3中所述将获得的初步预处理图片进行归一化处理为将获得的预处理图片HWC各通道的数据,减去各自通道的平均值。使用这种归一化处理方式可以将图片数据的特征规范至同一取值范围,将图片数据取值分布在0附近,减少图片噪音,图片分类模型更容易正确收敛到最优解,提高图片分类准确率。

在一种实现方式中,所述图片分类模型选用nasnet模型作为图片分类模型的整体结构,去除nasnet模型原有输出层,在此基础上,添加全局平均池化层,添加relu函数,添加dropout函数,添加softmax函数,添加图片分类模型输出层,所述图片分类模型输出层的输出个数与垃圾图片的类别个数一致以契合垃圾图片分类识别;

选用ImageNet模型的权重信息,将各层神经网络都设置为可训练;

选用Adam优化器,选用categorical_crossentropy损失函数,以1e-5的速率训练图片分类模型,以准确率作为评价指标。

所述图片分类模型通过在已有的nasnet图片分类模型基础上,修改模型结构,契合垃圾图片分类的类别输出,以及使用现有的ImageNet模型权重,使得在预训练模型时,训练耗时大大降低,以快速达到模型收敛。图片分类模型训练完成后,对待识别垃圾图片进行预测时,即使待识别垃圾图片被较强的噪声污染或是待识别垃圾图片有较大残缺,图片分类模型也能根据图片特征推断出当前图片的类别。

在一种实现方式中,步骤1中所述待识别垃圾图片使用摄影设备拍摄获得,所述摄影设备不限于手机和摄像头;待识别垃圾图片分辨率大小不受限制。

有益效果:

1、本申请提供的方法鲁棒性强,即使目标图像被较强的噪声污染或是目标图像有较大残缺,图像识别的神经网络也能根据图像特征推断出当前图片的类别;具有海量处理能力,Flink在基于内存以及集群的效应下,能在处理千万乃至上亿张图片的速度维持在秒级;不受图片规格限制,无论图片大小,均能在毫秒级为用户预处理图片,无需用户手动预处理;准确率高,在深度学习技术的加持下,识别图片类别的准确率能达到93%,为用户准确预测图片的类别。

2、本申请利用深度学习领域的图片类别识别以及Flink海量数据处理能力,能准确预测用户每次上传的垃圾图片的类别。在线上实时提供处理垃圾图片类别的能力,方便了普通民众对于垃圾的投放,方便了环卫工作人员对垃圾的分类,减少了有害垃圾对环境的污染。

附图说明

下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和其他方面的优点将会变得更加清楚。

图1是线上实时垃圾图片识别系统整体流程图;

图2是Flink线上实时处理与预测图片类别流程图;

图3是图片分类模型图片预处理流程图;

图4是图片分类模型训练流程图;

图5是本申请提供的方法流程图。

具体实施方式

下面将结合附图,对本发明的实施例进行描述。

请参阅图5,此图为本申请提供的方法流程图,包括:

步骤1,将待识别垃圾图片信息传送至服务器的对象云存储OSS中,所述待识别垃圾图片信息包括待识别垃圾图片的id以及待识别垃圾图片;本实施例中,所述待识别垃圾图片使用摄影设备拍摄获得,所述摄影设备不限于手机和摄像头;待识别垃圾图片分辨率大小不受限制。

步骤2,将对象云存储OSS中的待识别垃圾图片信息输出至消息队列服务Kafka进行队列缓存;

步骤3,将缓存在消息队列服务Kafka的待识别垃圾图片信息输出至Flink;

步骤4,大数据引擎Flink将待识别垃圾图片信息进行预处理;预处理包括图片格式转换,图片大小重置,转换成CHW通道数据。

步骤5,大数据引擎Flink载入训练好的图片分类模型和下标与图片类别对应关系文件,应用于图片类别识别。载入步骤4预处理好的图片CHW通道数据,输入至图片分类模型中,输出对应的图片类别下标,使用下标与图片类别的对应关系,输出图片类别;

步骤6,大数据引擎Flink识别图片类别完成后,将待识别垃圾图片的id及对应的图片id和图片类别进行输出。

本实施例中,请参阅图1,此图为线上实时垃圾图片识别系统整体的流程图,用户提供手机等摄影设备拍摄需要投递的垃圾图片信息,上传至服务器的对象云存储OSS中,进一步输出至消息队列服务Kafka中,然后,通过Flink大数据集群进行图片预处理,载入图片分类模型和下标与类别对应关系,图片类别预测,输出图片类别,返回该垃圾图片的类别,帮助用户完成垃圾分类。

本实施例中,请参阅图2,此图为待识别垃圾图片进入Flink大数据集群中,所经历的流程。步骤4包括:

步骤4-1,从Flink Source组件中将待识别垃圾图片载入为图片字节数组,输出到图片预处理的FlatMap函数中。在预处理过程中,将待识别垃圾图片信息转换成字节码数组,使用ImageIO的read函数生成BufferedImage对象,用于载入到内存中;

步骤4-2,将待识别垃圾图片字节码数组载入至内存中,将BufferedImage对象交给ColorProcessor进行处理,

步骤4-3,将图片转换为RGB格式;图片对象通过ColorProcessor的convertToRGB方法转换成图片的RGB格式;

步骤4-4,将转换成RGB格式的图片对象通过ColorProcessor的resize方法重置尺寸为331*331;

步骤4-5,获取重置尺寸的图片对象的CHW通道数组,通过ColorProcessor的getNChannels方法获取通道数量,进而获取各个通道的数组,将CHW三通道的数组组合起来;

步骤4-6,进行归一化处理,将CHW通道数组转换为HWC通道数组,调整CHW通道数组编码顺序,转换为HWC通道数组;

步骤4-7,将待识别垃圾图片的id与HWC通道数组输出至模型FlatMap中。

本实施例中,步骤5包括:

步骤5-1,在模型预测中,载入预训练好的图片分类模型文件以及下标与图片类别对应关系文件;

步骤5-2,将步骤4-7中的图像id与HWC通道数组输入至图片分类模型,对待识别垃圾图片进行类别预测,输出下标;

步骤5-3,从下标与图片类别对应关系文件中匹配下标对应的图片类别。

本实施例中,步骤5-1中所述训练好的图片分类模型文件为图片分类模型训练完成后,将图片分类模型保存至图片分类模型文件。

本实施例中,请参阅图3,此图为图片分类模型图片预处理流程,包括:

步骤5-1-1,调整预训练图片数据集中图片尺寸,按照图片较短的边,随机等比例缩放至[360,480]范围,获得缩放后的图片;

步骤5-1-2,水平、垂直翻转缩放后的图片,并随机裁剪尺寸为331*331的图片,将预训练图片数据集中同一张图片经过翻转、裁剪后,获得32张初步预处理图片用于预训练;

步骤5-1-3,将获得的初步预处理图片进行归一化处理,获得预处理图片;将预处理图片输入所述图片分类模型进行训练。

本实施例中,步骤5-1-3中所述将获得的初步预处理图片进行归一化处理为将获得的预处理图片HWC各通道的数据,减去各自通道的平均值。

本实施例中,请参阅图4,此图为图片分类模型训练流程。图片如图3所述处理完成后,所述图片分类模型选用nasnet模型作为图片分类模型的整体结构,去除nasnet模型原有输出层,在此基础上,添加全局平均池化层,添加relu函数,添加dropout函数,添加softmax函数,添加图片分类模型输出层,所述图片分类模型输出层的输出个数与垃圾图片的类别个数一致;选用ImageNet模型的权重信息,将各层神经网络都设置为可训练;选用Adam优化器,选用categorical_crossentropy损失函数,以1e-5的速率训练图片分类模型,以准确率作为评价指标;训练图片分类模型完成后,将模型保存至模型文件,提供该模型文件为线上Flink实时预测使用。

本发明提供了基于深度学习与Flink的线上实时预测垃圾图片类别方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号