如何利用python快速开发PC端目标检测及数据标注软件
- 概述
- 开发软件背景
- 开发第一步:功能需求分析
- 开发第二步: 前端分区设计
- 开发第三步:功能开发
- 开发第四步:程序功能的打包与检查
- 开发第五步:程序的反馈与改善
- 一个例子的展示
PS:本文仅供学习,未经同意请勿转载。本文仍待更新(开发及部分可开源代码后期会有分享~),对应的软件已授权对应的软著
😝 未完待续…
注:下面三个的软件均为本人在本科时期从头至尾手敲代码,未借助任何源码进行魔改,独立开发完成,平均一个软件开发周期为1周(不包括项目后期变动的要求改动时间的话)
概述
先简单概括一下本科阶段开发的标注软件及目标检测软件主要有三个:
(1)手部关键点标注软件: 可以对手部关键节点进行标注(labelme有的功能基本上都有,附带左右手节点顺序标注时错误的用户提示及数据归一化处理等操作)
(2)耳朵关键点标注软件:可以对耳朵进行关键节点的标注(labelme有的功能基本上都有,附带辅助线标注及节点相对位置错误提示)
(3)细胞病理检测分析软件: 可以对细胞进行检测识别,并根据检测结果自动化生成病理报告(同样,labelme有的功能基本上都有,引入自己训练的模型进行自动检测,后期只需人工手动调整
开发软件背景
目前现有的labelme软件和labelImg开源软件无法满足特殊数据集的标注要求,而且没有标注顺序的报错提示。当然我设计的软件就会不具有适用性了(毕竟上面开发的软件可以明显看出来我做的基本上是项目驱动的😂)。在实际使用中,会发现,labelme软件在导入文件时的效率中的很低下,特别时标记后的json文件,当然也可以通过代码来实现,这个很多博客上面都有,这里就不赘述了。
- 使用的框架:PyQt5
开发第一步:功能需求分析
分析开发的软件需要哪些功能:
(1)罗列基本功能:可以对标某些同品类的产品,快速得到软件开发本身需要的基本功能。这些基本功能一般都是需要的,不然为什么要自己开发,直接使用该对标软件不就好了?
(2)思考特色功能:根据项目本身特色,添加新功能,这些新功能也是软件本身区分别的软件的点,也就是改善对标软件的局限性
(3)思考多种可能的操作错误:在功能需求分析的同时,需要思考该功能可能存在哪些操作错误导致程序的报错
(4)功能分区:将上述的功能分类,有利于后期的前端的界面开发
(5)功能分级:功能分类后,对每一类的功能进行分级,优先开发底层及首要的功能
开发第二步: 前端分区设计
前端是利用PyQt5来构建的,直接根据前面的功能分区安排合理的位置,并选择合适的模块(比如该功能是适合Tab选卡还是按键模块)
上面三个软件我都是用Qt designer来设计前端界面,生成对应的前端结构代码,这样子的快速的节省时间,并且比较清晰的了解自己软件开发的布局。
至于怎么在pycharm或者vscode中安装Qt designer,可以自己搜索一下,网上的资源很多。这里我先不讲了。以后有时间再做分享吧。
开发第三步:功能开发
在前端设计之后,就直接利用pyQt5进行事件触发的编程(用python编程就是比较爽,哈哈哈哈)。后面再介绍一下我编程的主要流程。因为三个软件开发时间相对久远,等后面再整理介绍吧。先来看看其中一个软件的界面及对应的功能吧。请移步至最后一步中查阅。
开发第四步:程序功能的打包与检查
最后利用pyinstaller将开发的软件打包成为.exe。打包程可执行程序后,自己先使用一下,看看是否存在没有考虑的操作失误问题。
开发第五步:程序的反馈与改善
然后交付给其他人进行使用。(毕竟自己的软件开发自己比较熟悉,一般操作不会失误,所以得让别人用一下,才知道有哪些需要改善得地方。
一个例子的展示
这里只展示可公开项目的例子。也就是第三个软件。下面是软件运行的主界面。
它的功能包括:
-
自动检索划分功能
可自动检索所选择目录下所有满足软件检测格式的图像,并以一个子目录为一个主体文件的方式加载显示。 -
自动检测标注功能
-
手动标注修改功能
提供手动标注的功能,在模型漏检、误检的情况下,提供手动的修改可保证模型报告的准确性。在开启该功能之后:左键单击可添加对应的边界框,并选择对应的标签;右键单击对应边界框可修改标签或删除;右键单击滑动(非边界框)区域可实现该区域的放大;左键双击可修改对应边界框。
-
多模态自适应功能
-
遍历图像/主体(子目录)功能
-
缩放显示功能
-
表单自动更新功能
会自动更新检测的统计结果 -
标签显示/隐藏功能
-
文件描述备注功能
提供为当前图像添加备注描述,该备注描述会再模型报告中加以显示 -
选择示例图功能
由于我做的是医学图像,所以通常需要在报告中显示对应的图片及检测结果的分析描述。 -
自动填补示例图功能
在没有手动选择的情况下,我设计的软件会根据检测的结果进行统计分析,选择比较典型的图像作为示例图展示在报告中。 -
自动填补基本信息功能
可利用文件名来生成基本信息的填补 -
报告自动生成导出功能
-
检测结果统计图像导出功能
-
获取帮助功能
获取帮助文档,即为本软件使用说明书。 -
标签数据导出功能
导出所有图像的标注及标签数据 -
标签格式设置功能
还有其他功能,就不一一赘述了。