基于SSD目标检测网络的树莓派控制系统(一)

基于PyQt5的SSD目标检测软件(一)

前言

​ 墨迹了这么久,终于把毕设做好了,这在一年前是我不敢想的事情,作为一个生物工程专业的学生做了一个关于计算机图像识别方面的毕设听起来也怪搞笑的。四年前进入大学的场景还历历在目,四年后戏剧性的在疫情中结束了我的大学生涯,今年注定是不平凡的一年,有太多的历史值得我们去铭记。回想这四年的时光还是参与了不少事情,大学也不算虚度,唯一的遗憾就是没有坚持锻炼身体,四年过去了依旧这么瘦,希望以后最近的锻炼能坚持下去,养成一些好习惯。

说一说做这个毕设的故事吧,大二的时候相当迷茫,并不明确的专业知识让我产生了编程学习也就是看看网课这么简单的想法,机缘巧合参加了创新工作室,当然也离不开王振海的忽悠,不过当时对编程依旧充满了喜爱,是目的也是动力,虽然没有目标,但是恰好工作室也有一些项目,反正都是知识,就跟着学,就这样跟着学会了3D建模,3D打印,单片机传感器的一些知识,等等,我不是想学编程吗?当老师知道了我得想法,也鼓励我去尝试,所以老师给了一个项目说想用树莓派做一个显微镜,直到这时,我才意识到如果实现这个功能,我所要补充的知识体系不是一点点编程的基础就可以解决的,当然它也确实打开了我学习计算机的大门,在拿到树莓派之前,我甚至不太清楚Linux是什么。就这样走着学着,得益于东风校区同学完成了硬件的建模、3D打印和电机控制,在临近比赛的前两天,我解决了用树莓派控制并图像展示的核心问题,虽然方法很简单笨拙,却实现了项目自动对焦opencv调包的简单需要。那是我第一次出省比赛,第一次走进上海交大的校园,也是后面一切的开始,但是实现目标检测功能的软件在那时已经种下了种子。

第一代

第二代

当然这是建模渲染的图,但是得夸一句机械的同学建模是真的好看
## 思路说明

深度学习 → 计算机视觉 → 目标检测

树莓派(python3) → arduino通讯

PyQt5 软件外观设计

使用框架及工具包:

  • python 3.7.3 (64bit 一定要64位,不然无法安装pytorch)
  • torch==1.4.0
  • PyQt5==5.14.2
  • numpy==1.18.1
  • distributed==2.1.0
  • Pillow==7.1.2
  • opencv_python==4.2.0.32
  • pyserial==3.4 (arduino通信)
  • matplotlib==3.1.3
  • labalimg

项目结构图

项目结构

使用说明

github 链接: https://github.com/banniford/Microbial-identification

实现功能

  • 使用PyQt5进行了外观初步构建,由arduino控制界面,模型训练界面,图片预测界面构成

  • 目前已实现功能主要分为三大部分

    • 摄像头控制部分

      • 检测并连接摄像头
    • arduino通讯检测及步进电机控制

      • opencv拉普拉斯算子计算清晰度
    • 模型训练部分

    • SSD目标检测网络

      • 参数更改
      • 网络中间层参数数量信息打印
      • 数据集校验,生成索引文件
      • 多线程开始/中止训练
    • 模型预测部分

    • 选择训练完成模型进行预测标注

      • 结果打印
  • 目前可以进行模型的参数设定,训练以及识别,权重模型和数据集需要下载,详情看文件内Readme

致谢

SSD目标检测网络详解b站up主 Bubbliiiing 视频链接:https://www.bilibili.com/video/BV1A7411976Z

up主Blog:https://blog.csdn.net/weixin_44791964/article/list/1?t=1&orderby=UpdateTime