深度学习图像处理目标检测图像分割计算机视觉 10--通用场景图像分割

  • 摘要
  • 一、通用场景图像分割
    • 1.1 语义分割
    • 1.2 deeplab
  • 二、代码
  • 三、A Machine Learning Approach to Predict Thyroid Disease at Early Stages of Diagnosis
    • 3.1 摘要
    • 3.2 介绍
    • 3.3 文献调查
    • 3.4数据集的描述
    • 3.5 结论

摘要

本章主要介绍图像分割的算法,图像分割就是指根据灰度、颜色、纹理等一系列的特征把图像分为很多个互不相交的区域,同一个区域内是形似的,不同的区域是不相同的。本文实现了图像的拼接,根据每幅图像不同的SIFT特征点,计算它们的描述子进行匹配实现图像的拼接。

一、通用场景图像分割

1.1 语义分割
























1.2 deeplab


























二、代码

将同一地点拍摄的不同方位的图像拼接成一幅全景图

from Stitcher import Stitcher
import cv2# 读取拼接图片
imageA = cv2.imread("left_01.png")
imageB = cv2.imread("right_01.png")# 把图片拼接成全景图
stitcher = Stitcher()
(result, vis) = stitcher.stitch([imageA, imageB], showMatches=True)# 显示所有图片
cv2.imshow("Image A", imageA)
cv2.imshow("Image B", imageB)
cv2.imshow("Keypoint Matches", vis)
cv2.imshow("Result", result)
cv2.waitKey(0)
cv2.destroyAllWindows()import numpy as np
import cv2class Stitcher:#拼接函数def stitch(self, images, ratio=0.75, reprojThresh=4.0,showMatches=False):#获取输入图片(imageB, imageA) = images#检测A、B图片的SIFT关键特征点,并计算特征描述子(kpsA, featuresA) = self.detectAndDescribe(imageA)(kpsB, featuresB) = self.detectAndDescribe(imageB)# 匹配两张图片的所有特征点,返回匹配结果M = self.matchKeypoints(kpsA, kpsB, featuresA, featuresB, ratio, reprojThresh)# 如果返回结果为空,没有匹配成功的特征点,退出算法if M is None:return None# 否则,提取匹配结果# H是3x3视角变换矩阵      (matches, H, status) = M# 将图片A进行视角变换,result是变换后图片result = cv2.warpPerspective(imageA, H, (imageA.shape[1] + imageB.shape[1], imageA.shape[0]))# 将图片B传入result图片最左端result[0:imageB.shape[0], 0:imageB.shape[1]] = imageB# 检测是否需要显示图片匹配if showMatches:# 生成匹配图片vis = self.drawMatches(imageA, imageB, kpsA, kpsB, matches, status)# 返回结果return (result, vis)# 返回匹配结果return resultdef detectAndDescribe(self, image):# 将彩色图片转换成灰度图gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 建立SIFT生成器descriptor = cv2.xfeatures2d.SIFT_create()# 检测SIFT特征点,并计算描述子(kps, features) = descriptor.detectAndCompute(image, None)# 将结果转换成NumPy数组kps = np.float32([kp.pt for kp in kps])# 返回特征点集,及对应的描述特征return (kps, features)def matchKeypoints(self, kpsA, kpsB, featuresA, featuresB, ratio, reprojThresh):# 建立暴力匹配器matcher = cv2.DescriptorMatcher_create("BruteForce")# 使用KNN检测来自A、B图的SIFT特征匹配对,K=2rawMatches = matcher.knnMatch(featuresA, featuresB, 2)matches = []for m in rawMatches:# 当最近距离跟次近距离的比值小于ratio值时,保留此匹配对if len(m) == 2 and m[0].distance < m[1].distance * ratio:# 存储两个点在featuresA, featuresB中的索引值matches.append((m[0].trainIdx, m[0].queryIdx))# 当筛选后的匹配对大于4时,计算视角变换矩阵if len(matches) > 4:# 获取匹配对的点坐标ptsA = np.float32([kpsA[i] for (_, i) in matches])ptsB = np.float32([kpsB[i] for (i, _) in matches])# 计算视角变换矩阵(H, status) = cv2.findHomography(ptsA, ptsB, cv2.RANSAC, reprojThresh)# 返回结果return (matches, H, status)# 如果匹配对小于4时,返回Nonereturn Nonedef drawMatches(self, imageA, imageB, kpsA, kpsB, matches, status):# 初始化可视化图片,将A、B图左右连接到一起(hA, wA) = imageA.shape[:2](hB, wB) = imageB.shape[:2]vis = np.zeros((max(hA, hB), wA + wB, 3), dtype="uint8")vis[0:hA, 0:wA] = imageAvis[0:hB, wA:] = imageB# 联合遍历,画出匹配对for ((trainIdx, queryIdx), s) in zip(matches, status):# 当点对匹配成功时,画到可视化图上if s == 1:# 画出匹配对ptA = (int(kpsA[queryIdx][0]), int(kpsA[queryIdx][1]))ptB = (int(kpsB[trainIdx][0]) + wA, int(kpsB[trainIdx][1]))cv2.line(vis, ptA, ptB, (0, 255, 0), 1)# 返回可视化结果return vis

三、A Machine Learning Approach to Predict Thyroid Disease at Early Stages of Diagnosis

3.1 摘要

本研究的目的是使用分类预测模型来预测甲状腺疾病,然后使用决策树ID3和朴素贝叶斯算法进行二分类。获取具有适当属性的甲状腺患者数据集,并使用决策树算法对患者甲状腺的存在进行测试。此外,如果存在甲状腺,则Naïve Bayes算法用于检查患者的甲状腺阶段。

3.2 介绍

1.1 甲状腺疾病的诊断不是一项简单的任务。它涉及许多程序。正常的传统方法包括适当的医疗检查和大量的血液样本进行血液测试。因此,有必要建立一种模型,在非常早期的发展阶段检测甲状腺疾病。机器学习在医学领域对甲状腺疾病的诊断中起着重要的作用,因为它有各种分类模型基础上,我们可以训练我们的模型通过适当的训练数据集的甲状腺病人,可以准确地预测并给出结果具有较高程度的正确性。适当的训练数据集可以得到准确的预测模型,从而降低了甲状腺患者治疗的总成本,节约了时间。分类算法最适用于决策和解决现实问题。
1.2 关于甲状腺
甲状腺是蝴蝶状的内分泌腺,位于人颈部的底部。甲状腺的重要作用是维持和平衡人体的新陈代谢,以及人体的生长发育。甲状腺的重要功能包括血液循环、体温控制、肌肉力量和大脑功能。任何腺体的损伤或功能不正常都可能严重影响正常人体机能[2]。因此,甲状腺激素的正常分泌,才能使人体健康。这种激素分泌过多或过少都会对人体健康产生不利影响。

3.3 文献调查

Bibi Amina Begum等人使用数据挖掘方法提出了不同的甲状腺预测技术。他们考虑了不同的数据集属性来进行预测,并解释了数据挖掘中的分类技术,如决策树、反向传播神经网络、支持向量机和基于密度的聚类。他们分析了T3、T4、TSH与甲状腺机能亢进、甲状腺机能减退的相关性。Ankita Tyagi等人[2]研究了各种基于分类的机器学习算法。他们考虑了UCI机器学习库中的训练数据集,比较和分析了决策树、支持向量机和k -最近邻的性能指标。Aswathi A K等人[3]提出了一种由21个甲状腺诱发属性组成的训练模型。他们提出了部分群算法来优化支持向量机参数。M. Deepika等人[4]对糖尿病、乳腺癌、心脏病、甲状腺预测等多种疾病的诊断进行了一般性的实证研究,并应用SVM、Decision tree和人工神经网络对准确率进行了比较。Sumathi A等人[5]主要采用决策树算法对甲状腺数据进行预处理。他们首先计算了T3, T4和TSH的平均值,并将其作为预处理阶段。后来他们又应用了基于机器学习的特征选择和特征构建。进一步应用了ID3算法的延续,基于分类的J48算法,并计算了结果。I Md. Dendi Maysanjaya等人[6]分析了用于诊断甲状腺疾病的各种分类方法的比较。分别采用人工神经网络、径向基函数、学习向量量化、反向传播算法和人工免疫识别系统进行比较,得出比较结果。Ammulu K等人[7]提出了一个基于数据挖掘分类算法的甲状腺预测系统。他们使用了随机森林的方法来预测结果,使用的是用于数据挖掘的Weka开源工具。使用这个工具,他们应用了带有25个甲状腺数据属性的随机森林算法,并据此预测了结果。Roshan Banu D等人[8]研究了不同的数据挖掘技术来检测甲状腺疾病。他们对线性判别分析、Kfold交叉验证和决策树进行了研究。他们分析了决策树属性的各种分割规则。他们还比较了得到的值。b . srinivasan博士等人[9]利用不同的数据挖掘方法对甲状腺疾病的诊断进行了研究。他们解释了甲状腺疾病的主要原因,并对Decision Tree, Naïve Bayes classification和SVM进行了描述。Sunila Godara等人使用各种机器学习技术对甲状腺疾病进行了预测。他们认为Logistic回归和支持向量机是主要的甲状腺检测模型。他们得出结论,当甲状腺预测模型中类的数量增加时,这两种提出的分类器方法是最好的。

3.4数据集的描述

甲状腺数据集来自Kaggle机器学习网站[13]。该数据库主要包括患者的基本信息细节,如患者的姓名、个人联系方式和任何过去的临床病史。这些信息将存储在数据库中,并将作为进一步临床检查的患者记录。数据集属性是基于优先级考虑的。对引起甲状腺疾病负有更大责任的属性被考虑,其余的则被忽略。属性值是布尔值(True/False)或连续值。主要考虑的属性是年龄、性别、甲状腺机能亢进、甲状腺机能减退、怀孕、T3、T4和TSH值。下表I显示了属性和属性类型。
除数据集描述外,还考虑了患者过去的临床病史,这将进一步有利于产生准确的结果。这主要帮助卫生保健工作者以最好的方式检查病人的情况。
1.5机器学习中的分类任务
A.分类预测建模分类预测建模是基于给定的示例输入数据进行工作的,并将相应的类标签预测给它[12]。对于一个要开发的分类模型,它需要一个好的训练数据集,模型可以使用它来学习行为和预测可能的结果,具有更高的准确性[12]。分类预测模型的四个主要任务是:二元分类、多类分类、多标签分类、不平衡分类。例如决策树、逻辑回归和Naïve贝叶斯。多类分类有两个以上的类标签。当分类器数量较多时,这种类型的分类非常有用。二进制分类算法也可以应用于多类分类。随机森林可以作为这种类型的分类任务的示例。多标签分类包括两个或多个类标签,其中一个或多个类标签可以进一步用于预测彼此的结果。一些例子包括多标签决策树,多标签随机森林。不平衡分类是指样例类个数不均匀分布于[12]的分类集。甲状腺数据集来自Kaggle机器学习网站[13]。该数据库主要包括甲状腺患者记录,包括所有必要的患者详细信息。如表1所示,患者病历具有重要属性。此外,本文提出的模型还采用了图1所示的所有患者既往病史记录。这包括患者是否对特定药物过敏,患者过去是否接受过任何甲状腺手术,以及患者最近的甲状腺检测和遗传病史。这些也是主要的属性,因为它们简化了对甲状腺病人的检查,并减少了医生的彻底检查。这样可以节省时间,简化诊断过程。这些属性存储在专用的云服务器中,可以根据卫生组织的需要和兴趣将其设置为私有或混合。在被考虑的属性中,一个训练数据集被准备好,并作为基于分类的机器学习模型的输入。这是一种监督学习方法,所设计的模型将根据训练数据集的值生成结果。该模型采用决策树和朴素贝叶斯算法生成结果。决策树是一种基于树的算法,遵循自顶向下的方法构建。采用ID3算法构造决策树。它主要消除了存在的冗余元素,提高了分类的准确性。将该决策树算法应用于甲状腺患者年龄、性别、T3、T4、TSH值的记录。决策树算法计算甲状腺病人记录中的输入值。计算是基于训练数据集进行的。因此,训练数据集中记录的数量越多,算法的准确性越高。例如,考虑3000条训练甲状腺数据集记录,训练到决策树算法,那么生成的准确率会很高。我们提出的模型考虑了3000多个训练数据集属性,预测结果的准确率达到95%。该算法生成“是”或“否”值,也就是说,无论患者是否患有甲状腺疾病。如果患者的输出值为真,则进一步使用Naïve Bayes算法计算患者目前处于哪个阶段。这增加了保健工作人员的一个主要优势,便于分析甲状腺疾病,并在必要时避免某些实验室测试。此处患者甲状腺分期分为轻度、重度、危重性三个阶段。如果Decision Tree返回甲状腺值为真或正值,则使用Naïve Bayes算法。机器学习中的Naïve贝叶斯算法是一种基于贝叶斯定理的监督学习算法。

上图为:提出一种用于甲状腺疾病诊断的机器学习分类模型。

它用于解决基于分类的问题。该模型建立速度快,成本低。通过这种方式,我们提出的系统可以在医疗保健领域做出重大贡献,也可以产生积极的结果,具有良好的准确性,节省成本和时间的方法,为甲状腺患者

3.5 结论

因此,提出的工作将非常有用,以识别甲状腺疾病的患者在早期阶段使用基于分类的机器学习技术。这些算法给出了不同程度的精度和准确性。这些方法还有助于减少病人数据库中不必要的冗余数据。该模型所采用的算法不仅成本低廉,而且具有良好的输出性能和速度。这些分类方法使甲状腺病人的治疗简单,减少进一步复杂的程序与负担得起的价格。

深度学习图像处理目标检测图像分割计算机视觉 10--通用场景图像分割相关推荐

  1. 深度学习图像处理目标检测图像分割计算机视觉 04--神经网络与误差反向传播BP算法

    深度学习图像处理目标检测图像分割计算机视觉 04--神经网络与误差反向传播BP算法 摘要 一.神经元 二.前馈网络 2.1 Delta学习规则 2.2 目标函数J(w) 三.误差反向传播算法(BP算法 ...

  2. 深度学习图像处理目标检测图像分割计算机视觉 02--图像特征与描述

    深度学习图像处理目标检测图像分割计算机视觉 02--图像特征与描述 摘要 一.图像特征与描述 1.1.颜色特征 1.2.几何特征提取 1.3.基于特征点的特征描述子 1.3.1.几何特征:关键点 1. ...

  3. 深度学习图像处理目标检测图像分割计算机视觉 07--图像检索

    深度学习图像处理目标检测图像分割计算机视觉 07--图像检索 摘要 一.传统的图像检索做法 1.1.相似颜色检索 1.2.相似纹理检索 1.3.相似形状检索 1.4.相似局部特征检索 1.5.Bag ...

  4. 深度学习图像处理目标检测图像分割计算机视觉 01--图像预处理

    深度学习图像处理目标检测图像分割计算机视觉 01-图像预处理 摘要 一.开发环境搭建 1.1 anaconda安装 1.2 安装TensorFlow 1.3 安装OpenCV 二.中值滤波 三.高斯滤 ...

  5. 中科院陈智能:计算机视觉经典——深度学习与目标检测

    不到现场,照样看最干货的学术报告! 嗨,大家好.这里是学术报告专栏,读芯术小编不定期挑选并亲自跑会,为大家奉献科技领域最优秀的学术报告,为同学们记录报告干货,并想方设法搞到一手的PPT和现场视频--足 ...

  6. 深度学习(目标检测。图像分割等)图像标注工具汇总

    深度学习(目标检测.图像分割等)图像标注工具汇总 2018年05月31日 09:21:54 努力努力再努力tq 阅读数:3581 对于监督学习算法而言,数据决定了任务的上限,而算法只是在不断逼近这个上 ...

  7. 综述 | 基于深度学习的目标检测算法

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:计算机视觉life 导读:目标检测(Object Det ...

  8. 一种基于深度学习的目标检测提取视频图像关键帧的方法

    摘要:针对传统的关键帧提取方法误差率高.实时性差等问题,提出了一种基于深度学习的目标检测提取视频图像关键帧的方法,分类提取列车头部.尾部及车身所在关键帧.在关键帧提取过程中,重点研究了基于SIFT特征 ...

  9. 基于深度学习的目标检测研究综述

    基于深度学习的目标检测研究综述 摘要:深度学习是机器学习的一个研究领域,近年来受到越来越多的关注.最近几年,深度学习在目标检测领域取得了不少突破性的进展,已经运用到具体的目标检测任务上.本文首先详细介 ...

  10. 基于深度学习的目标检测综述(一):简介及骨干网络

    这篇文献的主要结构如下: 第1节,简单介绍目标检测的发展及两类目标检测算法. 第 2 节中讨论了骨干网络,目标检测器需要强大的骨干网络来提取丰富的特征.众所周知,特定领域图像检测器的典型管道是任务的基 ...

最新文章

  1. 5年时间服务器从0到200,一个创业公司的架构野蛮生长史
  2. python log函数怎么打_Python的log日志功能及设置方法
  3. 0510JS基础:定义、输出、变量
  4. java mvc httpget怎么使用_springMVC正确使用GET POST PUT和DELETE方法,如何传递参数
  5. html运用以及工具
  6. 学生上课睡觉班主任怎么处理_【师问师答】学生上课说话,点名批评还嘴怎么办?...
  7. 服务器复制不了文档,服务器复制粘贴不了
  8. cogs2109 [NOIP2015] 运输计划
  9. C++ 基础 弱类型语言是指不需要进行变量/对象类型声明的语言。Python属于弱类型语言
  10. 前端js导出excel代码及出现的中文乱码和数字过长等问题的解决办法
  11. 【原创】2021-2000上市公司重污染企业数据、上市公司重污染行业数据(常用变量均包括,可直接用)
  12. NIVIDIA Tegra K1 QWT安装使用问题和解决办法
  13. python中notebook左侧in中_Python Pmw.NoteBook方法代码示例
  14. 一篇会改变身处职场的你思维的一篇文章
  15. 修改Android系统默认时间
  16. 最大正方形面积/数量(单调栈)
  17. 百练/ 北京大学2016研究生推免上机考试(校内)D: 仙岛求药(广度优先搜索)
  18. [NA]Lab5:反幂法求矩阵特征根
  19. 蓝牙遥控器 – 将手机模拟为键盘、鼠标、翻页笔、遥控器
  20. 利用状态机实现一罐可以2.5元的售货机

热门文章

  1. 什么叫Jour-fix
  2. 新安装的MySQL,在installer界面start Server无法连接成功
  3. QNX ETH VLAN ping 不通
  4. 八核处理器真的比四核性能强悍吗?
  5. python3 aes cbc模式解密_python3 AES 加解密
  6. 488. 祖玛游戏【我亦无他唯手熟尔】
  7. 基于JAVA EE的临床科室管理系统
  8. 软件测试如何快速入门
  9. Chrome浏览器翻译无法使用和ide谷歌翻译插件【更新 TKK 失败,请检查网络连接】解决办法
  10. BZOJ 4484: [Jsoi2015]最小表示 拓扑排序 bitset