关于我利用python开发的PC端标注软件及目标检测软件

news2025/7/19 17:11:19

如何利用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。打包程可执行程序后,自己先使用一下,看看是否存在没有考虑的操作失误问题。

开发第五步:程序的反馈与改善

然后交付给其他人进行使用。(毕竟自己的软件开发自己比较熟悉,一般操作不会失误,所以得让别人用一下,才知道有哪些需要改善得地方。

一个例子的展示

这里只展示可公开项目的例子。也就是第三个软件。下面是软件运行的主界面。
在这里插入图片描述它的功能包括:

  • 自动检索划分功能
    可自动检索所选择目录下所有满足软件检测格式的图像,并以一个子目录为一个主体文件的方式加载显示。

  • 自动检测标注功能

在这里插入图片描述

  • 手动标注修改功能
    提供手动标注的功能,在模型漏检、误检的情况下,提供手动的修改可保证模型报告的准确性。在开启该功能之后:左键单击可添加对应的边界框,并选择对应的标签;右键单击对应边界框可修改标签或删除;右键单击滑动(非边界框)区域可实现该区域的放大;左键双击可修改对应边界框。
    在这里插入图片描述

  • 多模态自适应功能

  • 遍历图像/主体(子目录)功能

  • 缩放显示功能

  • 表单自动更新功能
    会自动更新检测的统计结果

  • 标签显示/隐藏功能

  • 文件描述备注功能
    提供为当前图像添加备注描述,该备注描述会再模型报告中加以显示

  • 选择示例图功能
    由于我做的是医学图像,所以通常需要在报告中显示对应的图片及检测结果的分析描述。

  • 自动填补示例图功能
    在没有手动选择的情况下,我设计的软件会根据检测的结果进行统计分析,选择比较典型的图像作为示例图展示在报告中。

  • 自动填补基本信息功能
    可利用文件名来生成基本信息的填补

  • 报告自动生成导出功能
    在这里插入图片描述

  • 检测结果统计图像导出功能

  • 获取帮助功能
    获取帮助文档,即为本软件使用说明书。

  • 标签数据导出功能
    导出所有图像的标注及标签数据

  • 标签格式设置功能

还有其他功能,就不一一赘述了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/368831.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法设计与分析期末考试复习(二)

分治法 将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。最好使子问题的规模大致相同。 分解(Divide):将一个难以直接解决的大问题,分割成一些规模较小的子…

个人电脑需求严重疲软,联想集团财务前景仍不乐观

来源:猛兽财经 作者:猛兽财经 财务业绩 联想集团(00992)于2月16日盘后公布了2023财年第三季度财报。 财报显示联想集团2023年第三季度的收入为152.67亿美元,从2022年第三季度的2011.27亿美元下降了24.1%。这也导致该公…

那些开发中需要遵守的产研开发规范

入职新公司第三天,没干啥其他活,基本在阅读产研开发规范。公司在技术方面沿用的是阿里的一套技术,所以入职之前需要先阅读《阿里巴巴开发规范》。今天整理一些平时需要关注的阿里规约和数据库开发规范,方便今后在开发过程中查阅。…

如何判断你的孩子是否适合IB课程?

IB课程最开始是IBO为外交官子女开设全球统一标准的课程,后为全球学生开设从幼儿园到大学预科的课程,为学生提供智力、情感、个人发展、社会技能等方面的教育。IB课程分为标准难度课程和具有挑战性的高难度课程。要求学生至少选择6门课加Theory of Knowle…

Java 日期时间与正则表达式,超详细整理,适合新手入门

目录 1、java.time.LocalDate类表示日期; 2、java.time.LocalTime类表示时间; 3、java.time.LocalDateTime类表示日期和时间; 4、java.time.format.DateTimeFormatter类用于格式化日期和时间; 5、创建正则表达式对象 6、匹配…

spring-boot、spring-cloud、spring-cloud-alibaba版本对应

一、查询 spring-boot(spring-boot-starter-parent) 版本号 https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-parent 二、查询 spring-cloud(spring-cloud-dependencies) 版本号 https://mvnrepository.com/artifact/org.springframework…

NPC内网穿透教程-入门

安装 安装包安装 releases下载 下载对应的系统版本即可,服务端和客户端是单独的 源码安装 安装源码 go get -u ehang.io/nps 编译 服务端go build cmd/nps/nps.go 客户端go build cmd/npc/npc.go docker安装 server安装说明 client安装说明 启动 服务端 下…

企业容器云管理平台选型指南

作者简介 涂家英,SUSE 资深架构师,专注 Cloud-Native 相关产品和解决方案设计,在企业级云原生平台建设领域拥有丰富的经验。 数字时代下的容器云管理平台 数字时代,市场竞争加剧,业务需求日新月异,敏态 IT…

Java常用日期类(包含三代)_Date类及Calendar类等

一.java.util.Date类概述从JDK 1.0出现。表示一个日期和时间,精确到毫秒,内部getTime()从1970年1月1号开始算。1. java.util.Date类构造部份构造已经过时,重点看以下两个构造。public Date()从运行程序的此时此刻到时间原点经历的毫秒值&…

Java学习笔记 --- 正则表达式

一、体验正则表达式 package com.javase.regexp;import java.util.regex.Matcher; import java.util.regex.Pattern;/*** 体验正则表达式,给文本处理带来哪些便利*/ public class Regexp_ {public static void main(String[] args) {//假设,编写了爬虫&…

【2023】助力Android金三银四面试

前言 新气象,新生机。在2023年的Android开发行业中,又有那些新的面试题出现呢?对于Android面试官的拷问,我们又如何正确去解答?万变不离其宗,其实只要Android的技术层面没变化,面试题也就是差不…

江苏专转本考前焦虑自救指南

考前焦虑自救指南 考试即将来临,面对着人生里未知的门槛,我们的心里总是充满着各种迟疑,成功的对立面永远都充斥着各种不确定性。 陷入考前焦虑,需要立即调整状态。 1、将你的内心恐惧用笔写下来 这样做的目的就是,不要…

git的使用(终端输入指令) 上

git目录前言1.创建仓库2.创建文件和修改数据状态分区![分区](https://img-blog.csdnimg.cn/d124dec6b2b14769ad20b75490f29cae.png)3 .删除、撤销重置 、和比较前言 今天带大家手把手敲一遍 git 流程: 安装一下git(详细观看我之前发的git文档&#xff0…

内网渗透(五十六)之域控安全和跨域攻击-非约束委派攻击

系列文章第一章节之基础知识篇 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 内网渗透(四)之基础知识-搭建域环境 内网渗透(五)之基础知识-Active Directory活动目录介绍和使用 内网渗透(六)之基…

【无标题】智能工业安全用电监测与智慧能源解决方案

工业互联网已成为全球制造业发展的新趋势。在新基建的推动下,5G、人工智能、云计算等技术与传统工业深度融合,为实现智能制造提供了技术支撑,将有力促进制造强国早日实现。 十四五规划在新基建的基础上进一步加快了制造业转型升级的步伐&…

【添砖java】谁说编程第一步是hello world

编程第一步明明是下载编译器和配置环境(小声逼逼)。 Windows下的java环境安装: java的安装包分为两类,一类是JRE(Java Runtime Environmental),是一个独立的java运行环境;一类是JDK…

《Linux运维实战:Centos7.6基于ansible一键离线部署rabbitmq3.9.16+haproxy高可用镜像模式集群》

一、部署背景 由于业务系统的特殊性,我们需要针对不同的客户环境部署 rabbitmqhaproxy高可用镜像模式集群,由于大都数用户都是专网环境,无法使用外网,为了更便捷,高效的部署,针对业务系统的特性&#xff0c…

RT-Thread移植到STM32F407

文章目录第一步:获取RT-Thread源码第二步:项目结构介绍第三步:拷贝示例代码到裸机工程第四步:删除无用文件第五步:修改工程目录结构第六步:添加工程文件路径第七步:编译第八步:修改配…

MySQL进阶篇之视图/存储过程/触发器

今天我们主要来快速学习视图,存储过程,触发器四个方面的内容,一起加油学习吧,还有半年就有秋招了,要加快速度了,迫在眉睫,冲吧,兄弟们。 目录 1、视图 2、存储过程 3、存储函数 4、…

Linux系统Nginx下载和安装

文章目录golang学习面试网站Linux启动nginx参考Linux启动nginx版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/weixin_36755535/article/details/110…