opencv显示图像,OpenCV图像识别有什么算法
图像标注在计算机视觉中非常重要。计算机视觉是一种允许计算机从数字图像或视频中获得高水平理解,并以人类的方式观察和解释视觉信息的技术。本文将重点介绍如何在OpenCV的帮助下创建这些注释。有兴趣的朋友来看看吧。
00-1010目录图像标注对图像标注类型的要求图像标注对象检测的分类语义分割利用OpenCV实现图像标注包围盒法KNN法分割结论参考图像标注在计算机视觉中非常重要。计算机视觉是一种允许计算机从数字图像或视频中获得高水平理解,并以人类的方式观察和解释视觉信息的技术。注释,通常称为图片标记,是大多数计算机视觉模型开发中的关键阶段。本文将着重于在OpenCV的帮助下创建这些注释。以下是将要涉及的主题。
目录
图像标注的标注要求使用OpenCV的图像标注类型机器学习模型的性能越好,您的标注质量就越高。让我们来看看图像注释。
目录
对特定数据集中的图像进行分类以训练机器学习模型的过程称为图像标注。当人工标注完成后,通过机器学习或深度学习模型对标记的图像进行处理,在没有人工干预的情况下重复标注。
因此,图片注释用于指示您的系统需要识别的方面。监督学习是在给定标记数据的情况下训练ML模型的过程。
注释建立了模型试图复制的标准,因此标签中的任何错误都将被重复。因此,正确的图像标注是训练神经网络的基础,也是计算机视觉中最关键的任务之一。
图片的注释可以手动完成,也可以借助自动注释工具来完成。自动标注技术通常是预先训练好的算法,可以对照片进行准确标注。复杂的注释工作需要它们的注释,例如构建片段掩码,这需要时间来生成。
你正在寻找一个完整的用于数据科学的Python库吗?检查这里,..
图像注解
对图片进行标注是功能性数据集所需要的,因为它可以让训练模型知道图片的相关方面(类别),然后可以用来在新鲜的、没见过的图片中识别这些类别。
图像标注产生训练数据,受监督的人工智能模型可以从中学习。注释图像的方式预测了人工智能在观看和学习图像后的行为。所以训练中经常描述不好的评论,导致模型做出不好的预测。
在应对独特挑战和在新领域使用人工智能时,标注数据非常重要。对于像图像分类和分割这样的典型任务,通常有预训练的模型,可以通过使用迁移学习以最少的输入定制为特定的用例。
另一方面,从零开始训练一个全面的模型,往往需要大量的标注数据,这些数据可以分为训练集、验证集和测试集,产生难度大,耗时长。无监督算法,不需要标注数据,可以直接在原始数据上训练。
对图片注释的需求
有三种流行的图像注释方法,您为您的用例选择的方法将由项目的复杂性决定。各自使用的高质量图像数据越多,人工智能的预测就越准确。
图像注解的类型
分类是标注图片最简单快捷的方法,因为它只需要给一张图片分配一个标签。例如,您可能希望对杂货店货架的一组照片进行排序,以确定哪些照片包含苏打水,哪些不包含。
这种方法非常适合捕捉抽象信息,比如上面的例子,或者一天中的时间,如果图片中有汽车,或者从一开始就过滤掉不符合标准的照片。虽然分类在提供单个高级标签方面是最快的,但它也是我们强调的三个类别中最模糊的,因为它不能确定一个项目在图像中的位置。
分类法
标注器使用对象检测来标记图片中的特定事物。所以,如果一张图标上了冰淇淋,那就更进一步了。
说明了冰激凌在图片中的位置,或者如果特别是搜索可可冰激凌的位置。物体检测可以通过各种方法来完成,包括。
边界框。注释者使用矩形和正方形来定义目标物体在二维中的位置。这是最经常使用的图片注释方法之一。立方体,也被称为三维边界框,被注释者用来指定目标对象的位置和深度。
多边形分割。注释者采用复杂的多边形来指定不对称的目标项目的位置,而这些目标项目并不简单地适合在一个盒子里。
线条。注释器检测图片中的基本边界线和曲线,用线条和样条来区分部分。例如,注释器可以为自驾车图片注释项目命名高速公路上的众多车道。
这种方法仍然不是最精确的,因为物体检测允许在使用方框或线条时出现重叠。它所提供的是项目的大致位置,同时仍然是一个相当快速的注释程序。
语义分割
语义分割克服了物体识别中的重叠问题,保证了图像的每个组成部分只属于一个类别。这种方法通常在像素层面上进行,需要注释者为每个像素分配类别(如行人、汽车或标志)。这有助于教导人工智能模型如何检测和分类某些项目,即使它们被遮挡。例如,如果一个购物车遮住了图像的一部分,可以用语义分割来定义可可冰淇淋的样子,直到像素级别,让模型知道它实际上仍然是可可冰淇淋。
用OpenCV实现图像注解
在这篇文章中,我们将使用边界框和颜色分割方法进行图像注释。
在边界框中,方法将是在物体周围手动绘制不同的边界形状,并在其中添加一些文字。
在颜色分割中,我们将使用KNN算法来分割查询图像中物体的颜色。颜色将根据 "K "值被分割,"K "是最近的邻居的数量,图像上被分割的部分可以被视为注释的部分。
包围盒方法
导入必要的库
import cv2
读取查询图像
input_img=cv2.imread(annotation_image.jpg,cv2.IMREAD_COLOR)
查询图像
在本文中,我们使用的是彩色图像,所以我们需要使用 "cv2.IMREAD_COLOR"。因为它指示加载一个彩色图片。任何图片的透明度都会被忽略。这是默认设置。我们也可以为这个标志传递整数值1。
在对象上画一条线
image_line=input_img.copy()
cv2.line需要输入直线的起点和终点的坐标,以及直线的厚度、透明度和颜色。
印度分析杂志
在物体周围画一个圆
image_circle=input_img.copy()
cv2.circle'接收半径和圆的坐标作为输入。其余部分与前面讨论的直线函数相同。
印度分析》杂志
在物体周围画一个矩形
image_rect=input_img.copy()
它需要左上角的坐标和右下角的坐标来绘制矩形。
印度分析》杂志
KNN方法进行分割
导入必要的库
import cv2
读取和预处理
img = cv2.cvtColor(input_img,cv2.COLOR_BGR2RGB)
改变颜色的顺序,因为在OpenCV中,图像的颜色是以蓝、绿、红(BGR)来读取的。要求是红、绿、蓝(RGB)。
应用KNN
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 100, 1.0)
由于图像是一个高分辨率的图像,所以有很多数据点需要处理,如果迭代次数多,就会耗费时间。我们将迭代次数限制为100次,并且将ε值设置为最高值。k近邻被设置为4,尝试次数为10。
plt.figure(figsize=(10,10))
印度分析杂志
该算法对颜色进行了很好的分割。可以看到蓝色、白色、灰色和棕色被分开。人们可以对图像进行屏蔽,并进一步调整算法。
结论
处理数据最耗时的方面之一是数据收集和注释。然而,它是训练算法的基础,必须在可行的情况下以最大的精度执行。适当的注释经常会在后期创建模型的过程中节省大量的时间。通过这篇文章,我们已经了解了不同类型的注释和它们的实现。
参考文献
上述代码的链接
阅读更多关于注释的信息
The postImage annotation techniques with implementation in OpenCVappeared first onAnalytics India Magazine.
到此这篇关于在OpenCV中实现的图像标注技术的文章就介绍到这了,更多相关OpenCV图像标注内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。