基于YOLOv5的血细胞识别和计数

2023-11-10

VOC格式标注转为yolov5格式

  • 原数据格式是xml文件对目标细胞注释,现在需要将这种注释转换为yolov5所需的格式。即每个图像对应一个txt文件,文件中存储该图像中全部细胞的类别和坐标,一行存储一个细胞的信息,如下图
    在这里插入图片描述
  • 编写脚本进行注释格式转换
#获取在SSD项目中生成的csv格式的标注数据
with open("test_labels.csv", "r") as fp:
    data = []
    lines = fp.readlines()[1:]
    for line in lines:
        data.append(line.rstrip().split(","))

txt = ""
#遍历全部数据重新写入到txt文件
for line in data:
    title = line[0][:-3] + "txt"
    with open("./valid/labels/" + title, "a", encoding="utf-8") as f:
        map_cls_name = {"WBC":"2", "RBC":"1", "Platelets":"0"}
        cls = map_cls_name[line[3]]
        x_min = float(line[4])
        y_min = float(line[5])
        x_max = float(line[6])
        y_max = float(line[7])
        x = str((x_max+x_min)/2.0/640.0)
        y = str((y_max+y_min)/2.0/480.0)
        w = str((x_max-x_min)/640.0)
        h = str((y_max-y_min)/480.0)
        content_ = [cls, x, y, w, h]
        content = " ".join(content_)
        f.write(content+"\n")
        print(title + "  " + content)
  • 转换结果
    在这里插入图片描述

在数据集路径创建数据配置文件

  • 在项目平级路径下创建数据集存储路径,路径内创建训练集,验证集路径和配置文件data.yaml
    在这里插入图片描述
  • train和valid内分别创建图像数据路径和标注文件路径
    在这里插入图片描述
  • images内存储图像数据,labels存储标注数据,文件名称对应相同
  • 设置数据集配置文件如下图
  • train 指定训练集图像路径
  • val 指定验证集图像路径
  • nc 指定目标类别数量 这里为血小板,红细胞,白细胞共3种
  • 目标对应类别名称
    在这里插入图片描述

训练模型

  • 配置项目路径内的train.py的相关参数
  • 配置参数
  • 指定模型文件和数据配置文件
    在这里插入图片描述
  • 指定训练轮数,批量大小和输入图像分辨率
    在这里插入图片描述
    运行train.py
    在这里插入图片描述
  • 训练结束
    在这里插入图片描述
    结果显示,训练300轮此=次共耗时2.05h
    生成的参数大小为14.8MB
    总损失值降低到0.1314
    在46张验证图象上共689个细胞,检测准确率为0.751,召回率高达0.96,IOU阈值为0.5时mAP高达0.947, IOU在0.5-0.95时,平均mAP为0.636
  • 训练结果可视化
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

进行细胞检测

  • 指定训练好的权值文件,检测数据路径,检测结果输出路径
    在这里插入图片描述

  • 指定置信度阈值和IOU阈值
    在这里插入图片描述

  • 更改图形绘制方法
    将检测结果全部保存
    在这里插入图片描述

  • 计算全部检测图像种预测出的各种细胞数量(最后评估计数效果用)
    在这里插入图片描述

  • 计算全部检测图像的真实标注细胞数量(最后评估计数效果用)
    在这里插入图片描述

  • 根据检测结果在原图上绘制标注框且打印计数信息保存到输出路径
    在这里插入图片描述

  • 待检测图像
    在这里插入图片描述

  • 检测结果
    在这里插入图片描述
    在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于YOLOv5的血细胞识别和计数 的相关文章

  • 多索引上的 pandas dataframe groupby

    我正在使用 Pandas dataframe 来读取 Excel 文件并对其进行一些操作 我有一个包含多行的标题 现在我想按几个列值进行分组 但是我无法找到解决方案 Excel 示例 name address contact info fi
  • 努力理解 Python 需要虚拟环境的原因

    我来自 JavaScript 所以熟悉 NPM 在那里 您可以全局安装包 通过使用 g 标志 或在项目中本地安装包 在 Python 中 他们有这些虚拟环境 我仍然有点不确定为什么需要它们 我知道这是为了在一台机器上拥有不同版本的相同包 是
  • 如何绘制日期和月份

    我有一张随时间变化的每日趋势图表 年份与此处无关 我只想显示日期和月份 我知道你可以显示年份和月份 但事实并非如此 我尝试创建一个名为 Day Month 的新变量 import datetime as dt df Day df date
  • 为什么我无法在 OS X 上更改 tkMessagebox.askyesno() 上的图标?

    tkMessageBox askyesno Title Message icon tkMessageBox WARNING 在 OS X 上只给我火箭图标 我知道 OS X 和 tkMessageBox 图标有些奇怪 因为tkMessage
  • 如何通过ODBC检索Oracle数据库函数的结果?

    我在通过 ODBC 调用 Oracle 存储函数 而不是过程 时遇到问题 我的函数非常简单 它只是连接两个字符串 我可以通过以下方式调用它 rs c execute SELECT add str yogi bubu FROM dual fo
  • 使用Python下载YouTube视频到某个目录

    我已尝试使用以下代码在 YouTube 中下载视频并且它可以正常工作 但我想将视频保存在特定位置 现在它正在将视频保存在C Users Download 如果我想将视频保存在桌面上 我需要对代码进行哪些更改 from future impo
  • 从 MySQL 将数字数据加载到 python/pandas/numpy 数组的最快方法

    我想从 MySQL 表中读取一些数字 双精度 即 float64 数据 数据大小约为 200k 行 MATLAB 参考 tic feature accel off conn database c fetch exec conn select
  • 使用 Python 从基于 AJAX 的网站提取信息

    我正在尝试使用 Python 检索基于 ajax 的网站 例如 www snapbird org 上的查询结果 由于它没有显示在页面源中 我不确定如何继续 我是一个Python新手 因此如果我能得到一个指向正确方向的指针那就太好了 如果更容
  • 修改Keras中的层权重

    我正在尝试修改 Keras 中某个层的输出 我有一个编码器 它将时间序列转换为潜在空间 之后 对于每个压缩的时间序列 我想向时间序列添加一些数字 例如我有 input d Input 100 h1 d Reshape 100 1 input
  • 使用 BeautifulSoup 查找 html 中的所有表

    我想使用 BeautifulSoup 查找 html 中的所有表格 内部表应包含在外部表中 我创建了一些有效的代码 并且它给出了预期的输出 但是 我不喜欢这个解决方案 因为它使用 decompose 这会破坏 汤 对象 你知道如何以更优雅的
  • 如何为python虚拟环境设置特定的python版本? [复制]

    这个问题在这里已经有答案了 我是 python 的新手 我正在尝试为我的项目添加一个新环境 该环境在我当前的环境 Python 3 7 5 上运行良好 添加所有依赖项后 我遇到了 pyttsx3 包的问题 用于 python 文本到语音 进
  • 如何在python中将所有参数转换为字典

    我想要我的功能func args kwargs 返回一本字典 其中包含我提供给它的所有参数 例如 func arg1 arg2 arg3 value3 arg4 value4 应该返回一本这样的字典 arg1 value1 arg2 val
  • Python并发.futures.ThreadPoolExecutor max_workers

    我在网上找了好久 但没有用 请帮助或尝试给我一些如何实现这一目标的想法 当我使用 python 模块时concurrent futures ThreadPoolExecutor max workers None 我想知道max worker
  • Django:503 服务不可用

    Related 我对 Python 及其框架完全陌生 在学习了一些 Python 基础知识后 我只是尝试一下 Django Problem 现在我正在尝试在第一次安装后运行 Django 服务器 服务器运行没有任何错误 但是当我尝试访问该网
  • 使用 str 方法替换 string 中的多个元素

    我正在尝试编写一个函数 它接受一串 DNA 并返回赞美 我已经尝试解决这个问题有一段时间了 并浏览了 Python 文档 但无法解决 我已经为该函数编写了文档字符串 以便您可以看到答案应该是什么样子 我在这个论坛上看到过类似的问题 但我无法
  • 如何检查给定名称的变量是否是非本地变量?

    给定一个堆栈帧和一个变量名 我如何判断该变量是否是非局部的 例子 import inspect def is nonlocal frame varname How do I implement this return varname not
  • 在标准 python 线程中发出信号

    我有一个线程应用程序 其中有一个网络线程 UI 部分通过callback到这个线程 线程是一个normalpython 线程 它是NO QThread 是否可以在该线程内发出 PyQT Slot 不 不可能像这样从 python 线程发出
  • 如何在 Apache Airflow 中混合使用 Celery Executor 和 Kubernetes Executor?

    我有多个使用 Celery Executor 的 dag 但我希望使用 Kubernetes Executor 运行一个特定的 dag 我无法推断出一种良好且可靠的方法来实现这一目标 我有一个airflow cfg我在其中声明了Celery
  • 导入 matplotlib.pyplot 挂起

    我正在尝试在 OS X 10 8 4 上启动并运行 matplotlib 我已经安装了 matplotlib 和依赖项 libping freetype numpy scipy 我可以很好地导入 matplotlib 但是 如果我尝试导入
  • 在 Python 中窗口“失焦”时读取 HID 输入

    我在一个问题上苦苦挣扎了好几天 但无法让它发挥作用 我刚刚开始使用 python 现在已经面临着我在这个项目中将面临的最大问题 情况是这样的 我必须编写一个扫描条形码的程序 将其传达给在线服务并打印 PDF 这一切都很好 但我也想在窗口 失

随机推荐

  • Mybatis与JDBC批量插入MySQL数据库性能测试及解决方案

    http blog csdn net boonya article details 70157820 Mybatis与JDBC批量插入MySQL数据库性能测试 Author boonya Date 2017 04 13 1 背景 系统中需要
  • 每日一题(设计循环队列)

    每日一题 设计循环队列 622 设计循环队列 力扣 LeetCode 1 题意解读 本题只能为队列开辟k个单位空间 并且只能利用这几个空间进行数据的存储 思路 本题使用数组来实现队列是比较方便的 首先定义两个变量 front和rear变量
  • 分组数据方差公式_用Excel算分组方差《excel怎么求分组的数据的标准差》

    现在等excel求分组数据标准差 在excel中求数据的标准以按照以下步行操作 步 打开excel表格 将需要求的一列数输入表格中 如下图 如果你要将所求的结果放在这一列数的最下面 你就将鼠标放在这一列数的最后面的单元格点击 第二步 选定工
  • 【GCC】gcc编译器的使用

    gcc编译器的使用 一 gcc编译过程 精简 1 gcc使用示例 2 执行 gcc o hello hello c v 时 可以查看到这些步骤 3 可以手工执行以下命令体验一下 二 gcc常用编译选项 三 怎么编译多个文件 四 制作 使用动
  • 内存对齐,导致char型数组指针转化为float型指针出现的问题

    前阵子在做一个无线调参软件时 需要把一个float型的变量从上位机 qt平台编写 发给下位机 stm32 然后我采取的做法是将储存float变量的四个字节里面的数据通过串口以此发给下位机 然后下位机用一个char 4 数组进行接收 然后将c
  • [QT入门篇]编程基础知识

    一 坐标体系 在 Qt 中窗口的显示是需要指定位置的 这个位置是通过坐标来确定的 所有坐标的选取都是基于坐标原点来确定的 Qt的坐标原点在窗口的左上角 在一个 Qt 窗口中一般都有很多子窗口内嵌到这个父窗口中 其中每个窗口都有自己的坐标原点
  • Python-Pytorch框架-实现AI自动瞄准(下)

    OpenCV与Ptorch框架搭建一个利用目标骨骼关键点检测实现AI自动瞄准的娱乐项目 该项目仅供学习OpenCV Ptorch框架 游戏自动化等参考 该项目思路大致分为如下步骤 利用Pywin32以及OpenCV获取游戏窗口图像 数据集获
  • The DispatcherServlet configuration needs to include a HandlerAdapter that supports this handler

    今天使用Spring mvc 尝试文件的上传下载 URL 访问的时候 报如下错误 Type Exception Report Message No adapter for handler com cbss FileUploadControl
  • 【docker】一、入门(kali linux下安装与命令)

    目录 1 什么是docker 2 docker中三个概念 仓库 镜像 容器的理解 3 安装 4 kali命令集 5 docker info有一个小警告 WARNING No swap limit support 6 docker命令集 7
  • 在centos7.6编译kurento

    一 前期准备 1 1 升级boost库 我升级的版本1 65 0 解决后面编译找不到宏定义错误 boost库需要手动编译 网上一大坨 1 2 安装按各种依赖库 通过yum安装即可 libevent libevent devel gettex
  • 【C语言】初阶测试 (带讲解)

    目录 选择题 1 下列程序执行后 输出的结果为 2 以下程序的输出结果是 3 下面的代码段中 执行之后 i 和 j 的值是什么 4 以下程序的k最终值是 5 以下程序的最终的输出结果为 6 下列描述中正确的是 7 C 语言规定 在一个源程序
  • Java经典面试题详解:nextclouddocker部署

    kafka面试基础 17 1 Kafka的用途有哪些 使用场景如何 2 Kafka中的ISR AR又代表什么 ISR的伸缩又指什么 3 Kafka中的HW LEO LSO LW等分别代表什么 4 Kafka中是怎么体现消息顺序性的 5 Ka
  • 什么是lambda函数?使用lambda函数有什么好处?

    一 什么是lambda函数 Python支持一种有趣的语法 它允许你快速定义单行的最小函数 这些叫做lambda的函数是从Lisp中借用来的 可以被用在任何需要函数的地方 lambda 函数是一个可以接收任意多个参数 包括可选参数 并且返回
  • 使用C/C++编程控制LEGO EV3

    环境搭建 1 安装Eclipse 选择Eclipse IDE for C C Developers 网址 http www eclipse org downloads 2 安装c4ev3 网址 https c4ev3 github io 该
  • Vue项目更改项目图标

    Vue项目更改图标 Vue新建项目后会有默认图标 如下图左上角 方法一 替换图标图片 找到public文件下的favicon ico 把自己的图标替换掉favicon ico 修改成功 方法二 更换图标路径 找到public文件 把要加的图
  • vray渲染不了 全白_救急!!! vray for sketchup 渲染出来全白 !!求解决。。。重金...

    你说的白强是不是打的VR灯光啊 如果是把VR灯光勾成不可见 另外总体看你的灯光太亮了 调低即可 追问有时候我用Vray渲染 它有一个等待的时间 但是等完了又什么都没生成 就像我刚才没使用一样 这个是为什么呢 难道是有些不合理的地方 比如我在
  • c++模板元

    模版元 主要解决递归加速 单纯的递归会反复调用 函数等待 返回 所需时间多 模版元编译的时候慢 代码会增加 把运行时间节约在编译时 template
  • 深度解析V-REP Remote API (MATLAB) 的应用

    OS Win10 x64 V REP V REP PRO EDU 3 5 0 MATLAB 2016b 下面我们来聊一聊V REP中MATLAB远程API的应用 如果你只对V REP有基本了解 对V REP的远程API不熟悉 强烈建议你先阅
  • LeetCode高频算法刷题记录10

    文章目录 1 旋转图像 中等 1 1 题目描述 1 2 解题思路 1 3 代码实现 2 组合总和 中等 2 1 题目描述 2 2 解题思路 2 3 代码实现 3 回文链表 简单 3 1 题目描述 3 2 解题思路 3 3 代码实现 4 字符
  • 基于YOLOv5的血细胞识别和计数

    VOC格式标注转为yolov5格式 原数据格式是xml文件对目标细胞注释 现在需要将这种注释转换为yolov5所需的格式 即每个图像对应一个txt文件 文件中存储该图像中全部细胞的类别和坐标 一行存储一个细胞的信息 如下图 编写脚本进行注释