Antigen Detector(新冠试剂盒检测)

article/2025/8/30 16:33:02

转自AI Studio,原文链接:Antigen Detector(新冠试剂盒检测) - 飞桨AI Studio

1、检测效果展示

2、Antigener_Detector思路说明

Antigener Detector通过两种方法串行,来完成检测。从而提高阳性样本的召回率。

首先是使用在数据集(新冠抗原检测试剂数据集)上训练的ppyoloe-s模型进行目标检测。紧接着使用传统视觉算法对检测得到的主体进行后处理。最后由两者结果共同进行判断。

之所以这样做,有以下两方面原因:

1、数据集阳性样本量不够多。(欢迎各位开发者朋友们对上述数据集的进一步完善做出贡献。)
2、当检测试剂棒上的红杠颜色很浅时,很容易误识别成阴性。这在实际应用中是绝对不允许的。

因此,本着“宁可错检阴性样本,也绝不放过任何一个阳性样本”的原则,使用了上述思路进行检测。

3、代码结构

│  detector.py             #目标检测器
│  detpreprocess.py        #目标检测前图像预处理部分
│  main.py				   #主函数。
│  postprocess.py
│  predictor.py
│  preprocess.py
│  Readme.md        
├─params│      infer_cfg.yml   #如若重新训练检测器,不要替换掉该文件,可将新训练的与之对照修改│      model.pdiparams│      model.pdiparams.info│      model.pdmodel│      
├─test_images│      detect_output.png│      FDLOw1RXoAY6Aat.jpg│      FEeigpzX0AEmqW-.png│      FIHmHpwWQAcKWK3.jpg│      positive.jpeg
├─utils│  config.py│  logger.py│  init.py  

4、检测模型的训练

4.1、检测模型简介

PP-YOLOE的优点:1、性能更强。如上图所示,PP-YOLOE 的 s/m/l/x 全系列四个尺寸在精度及速度方面均超越其他同体量算法。其中 PP-YOLOE-l 在 COCO test-dev 上精度可达 51.4%,在 V100 上使用 TRT FP16 进行推理,速度可达 149FPS,相较于YOLOX-l精度提升 1.3 AP,速度提升 24.96%;相较于YOLOv5-x精度提升 0.7AP,TRT-FP16 加速 26.8%;相较于PP-YOLOv2精度提升 1.9 AP,速度提升 13.35%。2、配置方案丰富灵活。P-YOLOE不仅提供 4 种固定尺寸,且支持开发者灵活地定制化配置更多尺寸;顺畅支持包括模型量化、剪枝和蒸馏在内丰富的模型优化策略,满足实际产业场景中速度和精度的极致追求;全面高质量支持包括 TensorRT 和 OpenVINO 在内的加速库,还提供一键转出 ONNX 格式,可顺畅对接 ONNX 生态。3、部署支持。PP-YOLOE 在结构设计上避免使用 DCN、Matrix NMS 等不易部署的算子,使其可以方便地部署到不同的硬件当中。当前已经完备支持 NVIDIA V100、T4 这样的云端 GPU 架构以及如 Jetson 系列等边缘端 GPU 设备。

由于PP-YOLOE具有以上特点,更切合实际应用场景,因此选择该模型作为目标检测模型。

4.2、配置训练环境

In [ ]

!git clone https://gitee.com/paddlepaddle/PaddleDetection.git

In [ ]

%cd /home/aistudio/PaddleDetection/
!pip install -r requirements.txt && python setup.py install

4.3、解压数据集

In [ ]

%cd /home/aistudio/data/
!unzip -oq /home/aistudio/data/data145153/DatasetId_356209_1652018624.zip
/home/aistudio/data

In [2]

%cd /home/aistudio/data/DatasetId_356209_1652018624/import osf = open("train.txt", 'w')
for dir_ in os.listdir("/home/aistudio/data/DatasetId_356209_1652018624/Images"):dir_m = dir_.split(".")f.write("Images/{}\tAnnotations/{}\n".format(dir_, dir_m[0]+'.xml'))m = open("label_list.txt", 'w')
m.write("{}\n".format('positive'))
m.write("{}\n".format('negative'))
m.write("{}\n".format('Invalid'))
/home/aistudio/data/DatasetId_356209_1652018624
8

4.4、配置训练文件

In [ ]

%cd /home/aistudio/PaddleDetection/configs/datasets/
!touch antigener_dataset.yml
%cd /home/aistudio/PaddleDetection/configs/ppyoloe/
!touch antigener_detection.yml
/home/aistudio/PaddleDetection/configs/datasets
/home/aistudio/PaddleDetection/configs/ppyoloe

In [ ]

"""
antigener_dataset.yml添加如下内容:
"""
_BASE_: ['../datasets/antigener_dataset.yml','../runtime.yml','./_base_/optimizer_300e.yml','./_base_/ppyoloe_crn.yml','./_base_/ppyoloe_reader.yml',
]log_iter: 100
snapshot_epoch: 10
weights: output/ppyoloe_crn_s_300e_coco/model_finalpretrain_weights: https://paddledet.bj.bcebos.com/models/pretrained/CSPResNetb_s_pretrained.pdparams
depth_mult: 0.33
width_mult: 0.50TrainReader:batch_size: 32LearningRate:base_lr: 0.01

In [ ]

"""
antigener_detection.yml添加如下内容:
"""
metric: VOC
map_type: 11point
num_classes: 3TrainDataset:!VOCDataSetdataset_dir: /home/aistudio/data/DatasetId_356209_1652018624anno_path: train.txtlabel_list: label_list.txtdata_fields: ['image', 'gt_bbox', 'gt_class', 'difficult']EvalDataset:!VOCDataSetdataset_dir: /home/aistudio/data/DatasetId_356209_1652018624anno_path: test.txtlabel_list: label_list.txtdata_fields: ['image', 'gt_bbox', 'gt_class', 'difficult']TestDataset:!ImageFolderanno_path: /home/aistudio/data/DatasetId_356209_1652018624/label_list.txt

4.5、模型训练

In [5]

%cd /home/aistudio/PaddleDetection/
!python tools/train.py -c configs/ppyoloe/antigener_detection.yml

In [ ]

!python tools/export_model.py -c configs/ppyoloe/antigener_detection.yml --output_dir=./inference_model \-o weights=output/antigener_detection/model_final.pdparams

5、使用方法

使用时一定要注意修改main.py文件里的相关路径。

from main import antigener_classificationimg = cv2.imread('test_images/positive.jpeg')
results = antigener_classification(img)
print(results)
"""
输出results的格式如下:
{'Positive':[a, b, c, ...., n], 'Negative':[a, b, c, ...., n]}
a, b, c, ...., n的格式如下:
[x1, y1, x2, y2, confidence]
左上角坐标,右下角坐标以及置信度。
"""

6、Update Codes更新日志

2022.5.11算法更新: 本次更新替换了原算法中的第二阶段。而是通过建立阴性、阳性样本的特征向量数据库。当目标检测完成之后,如果目标检测得到的目标置信度小于设置的negative_threshed和positive_threshed两个阈值,则使用训练好的分类模型对感兴趣区域进行特征提取,之后在已经构建的特征向量数据库中进行搜索,找到相似度最高的特征向量,即认为该样本标签与数据库中样本标签一直,从而提升算法的容错率。

建立数据库的方法:

python .\build_gallary.py -c .\params\build_index.yaml

使用方法:

from antigener_detector import antigener_classification_update_1、Searcherimg = cv2.imread('xxx')
searcher, id_map = Searcher()
results = antigener_classification_update_1(img, searcher, id_map)
print(results)
"""
输出results的格式如下:
{'Positive':[a, b, c, ...., n], 'Negative':[a, b, c, ...., n]}
a, b, c, ...., n的格式如下:
[x1, y1, x2, y2, confidence]
左上角
"""

7、继续改进思路

由于这是一种两个方法串行检测的方案。因此,提升任何一个的检测性能,都会对该方案的性能提升有一定帮助。而改进思路也很显然:

1、改进目标检测本身。(从模型角度以及数据集角度)
2、进一步完善传统视觉算法方案。

By Hansansui 2022.05.09

AI Studio主页:韩三岁个人主页

希望自己所做能尽绵薄之力,愿疫情早日结束!


http://chatgpt.dhexx.cn/article/0f3iifdn.shtml

相关文章

antigen简介

在Linux下经常需要进行终端操作,一个好的shell解释器可以帮助我们极大提高工作效率。有些同学可能听说过zshell和oh-my-zsh,前者是一个shell程序,由于功能比较强大,所以叫做z shell,意为终极shell;而后者是…

详解lcs+antigen的部署与配置来实现即时通讯的安全

详解lcsantigen的部署与配置来实现即时通讯的安全 我在上一篇中介绍了antigenexchange的配置不知大家是否能在工作中用到,今天我来介绍一下lcsantigen的部署与配置。 LCS( Live Communications Server)即时通讯服务,类似于QQ、MSN之类的。 今天我们做的实…

使用antigen轻松打造赏心悦目的shell环境

一提到Shell环境,很多人可能想到的就是那种神秘的黑框界面,但是其实Shell环境也可以设置成非常酷的样子,并带有自动完成、自动补全、人性化提示等各种功能。可能也有同学还听说过ohmyzsh这类集成了各种Zsh插件的方便项目,今天介绍…

tf.invert_permutation

tf.invert_permutation(x, nameNone) tf.math.invert_permutation(x, nameNone) TensorFlow目录总结 入参 / 出参含义取值范围xA Tensor. Must be one of the following types: int32, int64. 1-D.其中取值【i】的范围:y[x[i]] i for i in [0, 1, …, len(x) - …

PAT甲级-二叉树的遍历-1102 Invert a Binary Tree解题思路

1102 Invert a Binary Tree (25 分) 思路 翻转二叉树 后序遍历翻转即可,由于给出每个结点的左右儿子,所以这里用到二叉树的静态写法更加方便 这里有个坑,bool数组初始化为false才是有效的,别的效果不行,暂时不知道为…

create_generated_clock invert preinvert shift_edge是否符合设计真实状态很重要【示例2】

create_generated_clock符合设计真实状态很重要 不是所有的invert clock与non-invert clock都有直接的反相关系另外一种计数器方式生成的时钟存在一定阶段的反相关系定义 cnt_div约束频率切换的问题cnt_div与 upcnt_div是反相关系 仍然基于【示例1】的RTL代码。 不是所有的inv…

【水下目标检测】Underwater object detection using Invert Multi-Class Adaboost with deep learning

原文:Underwater object detection using Invert Multi-Class Adaboost with deep learning 论文被International Joint Conference on Neural Networks (IJCNN) 2020(CCF C类)收录, 开源代码:https://github.com/Long…

LVGL8_Esp32_颜色反转设置-INVERT_COLORS

在lvgl8中设置颜色反转。 找到自己对应的驱动的头文件定义部分,手动定义CONFIG_LV_INVERT_COLORS即可。 个人见解,感谢阅读。

transform.invert 预处理逆操作

transform.invert 预处理逆操作 from PIL import Image from torchvision import transforms import torch import numpy as npdef transform_invert(img_, transform_train):"""将data 进行反transfrom操作:param img_: tensor:param transform_train: torchv…

opencv invert()函数使用问题记录

参考博客 CV_8UC1/2/3 OpenCV求逆(伪逆)矩阵函数 invert()介绍 invert是opencv自带的求解逆矩阵或者伪逆矩阵的函数,具体形式如下: double invert(InputArray src, OutputArraydst, int flagsDECOMP_LU); src: 输…

Mysql链接工具

众所周知为了可以更好的操作 Mysql 数据库,我们都会采用远程连接工具的方式连接 Mysql 数据库,使用远程连接工具连接的好处在于: 方便远程访问:如果你需要在外部网络环境中访问 MySQL 数据库,使用远程连接工具可以方便…

开源、绿色,解压即可运行的数据库连接工具推荐

db beaver一个开源、绿色,解压即可运行的数据库连接工具,直接支持连接mysql 8。界面大气,功能强大,唯一的要求就是要安装的有jdk。 官网下载地址https://dbeaver.io/download/ 界面截图如下

一款连接SqlServer的数据库工具

由于自己使用的电脑系统是xp,而服务器上的数据库是SqlServer2012,于是用SqlServer2005管理端操作2012,总是不成功。在网上也百度谷歌了很久,也没有解决,也发了很多问没有找到解决。一次偶然在博客中看到有人使用Toad for SQL Serv…

MongoDb数据库连接工具

一、Mongo Management Studio Mongo Management Studio是一个用于数据库管理的免费MongoDB GUI工具。它轻巧,界面清晰,易于开发基于MongoDB的项目。 它使用nodeJs,Electron框架,MongoDB和AngularJs开发。MMS与MongoDB 3.0/3.2/3.4…

达梦数据库连接工具简介

达梦数据库连接工具简介 1、disql连接工具基本使用1.1、disql连接数据库(1)1.2、disql连接数据库(2) 2、manager工具2.1、在linux系统中使用下列命令启动图形化界面2.2、在windows中选择DM管理工具快捷方式2.4、连接数据库实例 1、…

Jdbc数据库的连接工具类

Jdbc数据库的连接工具类 1. 开篇简述2. 驱动导包3. 注意事项4. 代码实现5. 总结 1. 开篇简述 嗨,大家好!!! 在熬过了,有差不多一周多吧,小编最近不知道分享点什么好,这两天,琢磨琢磨…

程序与数据库连接工具与案例代码

文章目录 前言JDBC访问数据库流程JDBC访问数据库的步骤1、开始JDBC操作前要将驱动放到WEB-INF的lib目录下2、程序中首先导包import java.sql.*3、执行查询操作①、加载正确的数据库驱动程序②、定义所要连接数据库的地址③、建立与数据库的连接④、创建语句对象⑤、声明SQL语句…

通用数据库连接工具DBeaver

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/fenzhouzhen7118/article/details/82218044 本人电脑为win10系统。 之前连接数据库都使用navicat…

dbeaver一款全能的数据库连接工具dbeaver

记录一款全能的数据库连接工具dbeaver 特点: 免费、开源、免安装解压即用 当然官网也有商业版本,开源免费版基本够用了 Main web site 官网: https://dbeaver.io Source code 源码: https://github.com/dbeaver/dbeaver 本地下载 https://download.…

数据库连接工具类

数据库连接 概述一、jdbc实验环境搭建 二、Druid连接数据库实验环境搭建 三、Maven连接数据库实验环境搭建 四、mybatis连接数据库实验环境搭建 五、Spring连接数据库六、SSM 概述 什么是JDBC:Java连接数据库 原子性 (Atomicity)、 一致性(Consistency)、隔离性(Is…