基于CNN卷积神经网络的AI智能分拣系统

目录

Linux下摄像头数据的采集和Python服务器接收照片数据集

Python服务器搭建卷积神经网络并训练出模型

Qt终端界面的开发

STM32开发板的开发

Python服务器进行模型检测


        这个系统分为四个模块,分别是Linux下摄像头数据的采集,Python服务器卷积神经网络的搭建和模型检测,Qt图形化界面的设计和STM32开发板的开发。

        主要的设计思想是用Linux虚拟机收集大量的物品照片,然后将这些信息传送给Python服务器,Python服务器对这些照片进行卷积神经网络的搭建,训练出模型,然后根据模型来识别新扫描的物体,将识别结果传递给Qt客户端和STM32客户端,Qt客户端通过图形化的界面和声音来显示分拣结果,而STM32客户端通过亮不同的灯和用屏幕显示物体的类别的方式来显示不同的结果。具体的设计C/S架构如下图所示:

下面我将分以下几个模块分别介绍这四个部分的相关内容:

Linux下摄像头数据的采集和Python服务器接收照片数据集

主要要建立Linux客户段和Python服务器之间的TCP连接,两者要保持相同的IP地址和端口号

运行界面如下图所示:

Python服务器搭建卷积神经网络并训练出模型

        用卷积神经网络训练模型主要有5层,包括卷积层,池化层,Dropout层,全连接层和输出层

        卷积层主要负责通过卷积操作对数据集进行特征提取,池化层负责通过降维操作降低复杂度,提取主要特征,减少计算量,Dropout层主要负责随机关闭神经网络中的部分神经元,防止过度拟合,从而提升模型的泛化能力,全连接层主要负责整合之前各层的特征信息,形成最终的模型,输出层主要是输出模型

在具体代码实现过程中也充分按照以上顺序来实现,如下图所示:

Qt终端界面的开发

开发的界面如下:

        Qt界面的主要功能是输入IP地址和端口号之后与Python服务器建立TCP连接,连接之后将Python服务器传送过来的分拣结果信息图形化的显示在Qt界面上,同时可以进行语音播报,具体的实现逻辑如下图代码所示,主要通过setStyleSheet()函数改变相应的按钮的颜色和形状,并通过say()函数播报相应的语句,同时会在TextLabel的位置显示当前正在识别的图片

STM32开发板的开发

        该部分主要通过CubeMX进行图形化的编程,直接在图形化的界面配置引脚,然后生成代码,在代码的基础上加以修改以达到实验目的。

        STM32依旧需要先和Python服务器建立TCP通信,具体代码实现如下:

        然后使用空闲中断的使能函数和回调函数检测空闲中断,一旦检测到空闲中断,就会调用回调函数处理中断,而实现不同灯亮和屏幕显示的功能就写在空闲中断的回调函数当中,如下图代码所示:

        实现灯的代码逻辑如下图所示:

        实现屏幕的代码逻辑如下图所示:

        至此,当STM32开发板接收到Python服务器的分拣结果信息之后,就会将信息反馈到灯和屏幕上面,如下图所示:

Python服务器进行模型检测

        模型检测依旧需要读取Linux客户端拍摄的图像数据,然后将这些图像数据和训练好的模型进行检测,得出相应的分拣结果,并将结果反馈到STM32开发板和Qt上,此时需要Python服务器和STM32客户端,Qt客户端,Linux客户端都建立TCP连接,要求他们运行同一IP地址和端口号下

连接成功的界面如图所示:

        之后Python服务器就会一直接收Linux客户端拍摄的图像数据,然后进行物品分拣,即模型检测,之后将分拣结果分别发送给Qt客户端和STM32客户端,直到用户主动结束进程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值