1.本发明涉及计算机视觉技术领域,具体为一种基于无监督聚类的在建房屋识别方法。
背景技术:2.通过摄像头实时采集图片或者视频流数据,再利用人工智能技术对所采集的图片或者视频流数据进行处理和分析,实现对农村在建房屋实时监测并将其信息推送给人工智能平台,从而对违建房屋进行判定,达到智能化监管的目的;在这其中主要采用目标检测技术,目前,目标检测一般都是采用监督学习的方式,即通过对训练数据集进行人工标注,主要是标出目标的位置和所属的类别,然后在标注好的数据集上进行模型的训练,最后通过训练好的模型对数据进行预测;目标检测作为人工智能最常用的技术之一,主要分为采用手工设计特征的传统算法和基于深度学习的检测算法,随着深度网络和gpu等硬件技术的发展,基于深度学习的目标检测性能已经远超传统算法,成为当前检测领域的主流算法;而基于深度学习的方法也分为一阶段(one-stage)和两阶段 (two-stage)两类,其中,two-stage算法主要代表是rcnn系列(rcnn,fastrcnn和faster rcnn),两阶段算法也意为需要分两步进行,首先对候选区域进行预测,然后再对候选区域进行分类和候选框的位置进行回归,所以算法的精度较高,但是实时性较差;与之相反,one-stage算法是直接对图像中目标的位置和类别进行预测,实现了端到端的检测,因此该类算法实时性较高,也易于优化,但准确率相较于一阶段算法有所下降,就工业界而言,不仅仅只考虑算法预测的精度,实时性也是算法选择的重要指标之一,因此一阶段算法是工业界首选的检测算法,一阶段主要有ssd,retinanet,yolo系列算法;一直专注于精度与实时性并重的yolo系列算法一直在工业界广泛应用,从yolov1到 yolov5,再到今年刚提出的yolox检测算法,yolo系列算法不断改进,其性能也越来越好,yolox算法通过将decoupled head,anchor-free,simota等技术引入到算法中,使得检测精度和推理速度都有所上升,成为目前最优秀的检测算法之一。
3.现存技术存在的主要问题及缺陷是:
4.现有目标检测算法大都是通过人工对图像进行标注,但是对于在建房屋数据而言,房屋在修建的过程中,不同的时期所呈现的状态各不相同,并且由于摄像头拍摄的角度不同,也会导致在建房屋差异较大,同时房屋修建的类型也各不相同;如果采用单一的一个类别(如“在建房屋”)去对数据进行标注,由于房屋之间差异较大,模型难以收敛,最终造成检测精度较低;同时由于所有状态都归纳为一个类别,模型不易优化,例如不好判定那种数据识别不好,从而不能对识别不好的状态进行专项优化;如果采用人工对数据去进行分类,由于现实场景中采集的房屋数据多样性,包括各个摄像头拍摄的角度不同,房屋之间相互遮挡,房屋修建时期的各个状态以及房屋类型的多样化,这就造成人工定义分类困难,同时如果采用人工定义好类别,在增加新的训练数据时也需要去进行人工分类,容易将数据分类错误,造成模型训练效果不佳。
技术实现要素:5.本发明的目的在于:为了解决上述技术问题,本发明提供一种基于无监督聚类的在建房屋识别方法。
6.本发明为了实现上述目的具体采用以下技术方案:
7.本发明一种基于无监督聚类的在建房屋识别方法,包括以下步骤:
8.s1、制作数据集:通过图像采集装置采集在建房屋的图像数据;
9.s2、数据集预处理:对收集到图像数据中的在建房屋的位置进行人工标注,然后将标注后的在建房屋进行裁剪,得到在建房屋图像数据集;
10.s3、数据无监督聚类:设置好聚类的类别数目,然后将s2步骤得到的在建房屋图像数据采用对比聚类的无监督方式进行类别划分;
11.s4、标签重定义:各个在建房屋在通过聚类后都有相应的类别,将该在建房屋数据的类别标注到原始图像上的标签;
12.s5、检测模型训练:对于标注上标签的在建房屋数图像据集,采用yolox 目标检测算法进行模型训练;
13.s6、模型置信度阈值设定:根据房屋数据的每个类别在测试集的预测效果,调整每个类别的置信度阈值。
14.进一步地,所述步骤s1中通过图像采集装置采集在建房屋的各个时期、各个角度、不同焦距的图像数据。
15.进一步地,所述步骤s2中使用labelimage工具对图像中的在建房屋的位置进行人工标注。
16.进一步地,所述步骤s3中在建房屋图像数据采用对比聚类的无监督方式进行类别划分包括以下步骤:
17.在建房屋图像数据样本xi,使用两种数据增强方式ta和tb,增强后的图像和为:
[0018][0019][0020]
对增强后的图像采用resnet34作为特征提取网络,提取特征向量表示为:
[0021][0022][0023]
其中和代表特征向量,f(
·
)表示特征提取网络;
[0024]
特征向量和再经过两层非线性感知器(mlp)进行映射为:
[0025][0026][0027]
其中和表示映射后的特征向量,g(
·
)表示非线性感知器;
[0028]
定义样本的损失为:
[0029][0030][0031]
其中τi是实例层次的temperature参数,s(
·
)代表余弦相似度运算,n表示设定的batch大小,因此经过数据增强过后,batch内共有2n个数据,对于每一个样本都可以形成1个正样本对和2n-2个负样本对,和分别表示一个 batch中第j个样本经过ta和tb数据增强后所提取的特征向量;
[0032]
样本在实例层次总损失l
ins
如下式所示:
[0033][0034]
当数据样本被映射到与聚类cluster数量相同的空间维度时,数据特征的每一维可以看作是该样本属于该类别的概率,通过特征提取网络提取的特征向量经过两层非线性感知器将其映射成m,m表示聚类类别数维向量,即:
[0035][0036][0037]
其中gc(
·
)为非线性感知器,和分别表示经过感知器映射过后的m维向量,则一个batch内的样本在ta和tb数据增强下组成ya∈rn×m,yb∈rn×m矩阵;
[0038]
定义为ya中第i列,同理,为yb第i列,因此样本与在集群层次的损失定义为:
[0039][0040][0041]
其中τc是集群层次的temperture参数,m表示聚类类别数,为样本在ta数据增强下第j个类别的聚类分配,同理,表示样本在tb数据增强下第j个类别的聚类分配;
[0042]
样本在集群层次总损失l
clu
为下式所示:
[0043][0044]
h(y)为聚类分配概率的信息熵,是为了避免网络将所有实例都分配到一个聚类簇中,具体表示如下式所示:
[0045][0046][0047]
其中,表示在tk的数据增强下第j个样本属于类别i的概率,||
·
||1代表 l1范数,yk表示一个batch内样本在tk数据增强下的输出矩阵;
[0048]
因此最终模型损失函数为l=l
ins
+l
clu
;
[0049]
通过误差反向传播,最小化损失函数得到聚类模型,然后通过聚类模型对数据集进行类别划分。
[0050]
进一步地,数据增强方式在随机裁剪、灰度变换、色度变换、高斯模糊和水平翻转中随机选取。
[0051]
本发明的有益效果如下:
[0052]
本发明针对在建房屋这类具有复杂场景和多个不同状态的数据,提出了采用无监督聚类的方式对数据进行多类别标注,相比于采用单一的类别标注,多类别方式使模型更易学习到数据分布,从而更好的收敛拟合,同时划分为多个类别后,模型更容易优化;相比于通过人工划分为多类标注的情况,由于在建房屋的各个时期的状态随着摄像机拍摄角度、房屋类型、房屋遮挡等情况而异常复杂难以界定,通过无监督聚类的方式学习各个房屋之间的潜在特征,将相似性较高的图像划分为一类,使得数据集的划分更加精确,更有利于模型的训练和收敛,从而提高模型对在建房屋的预测精度;针对在建房屋分为多类的情况,各个类别在实际场景中预测精度有所差别,通过在测试集上的预测情况,为每个类别设置不同的阈值,然后统一输出为“在建房屋”的标签,这样既能有效保持高召回率,也能有效提高检测精度。
附图说明
[0053]
图1是本发明提供的算法流程示意图;
[0054]
图2是本发明提供的房屋数据处理模块示意图;
[0055]
图3是本发明提供的对比聚类模块示意图;
[0056]
图4是本发明提供的房屋数据多样化示意图;
[0057]
图5是本发明提供的采用人工分类的检测效果图;
[0058]
图6是本发明提供的采用无监督聚类的检测效果图。
具体实施方式
[0059]
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
[0060]
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通
技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0061]
实施例1
[0062]
如图1、图2所示,本实施例提供一种基于无监督聚类的在建房屋识别方法,包括以下步骤:
[0063]
s1、制作数据集:通过图像采集装置采集在建房屋的图像数据;
[0064]
本实施例中,优选地,通过图像采集装置采集在建房屋的各个时期、各个角度、不同焦距的图像数据。图像采集装置为摄像头,通过软件平台控制高清摄像头采集一定区域内的所有在建房屋的图像数据作为采集数据,在采集数据时,尽可能多收集如图4所示的不同的场景和不同的房屋类型的数据,建立完备的在建房屋图像数据集。
[0065]
s2、数据集预处理:对收集到图像数据中的在建房屋的位置进行人工标注,然后将标注后的在建房屋进行裁剪,得到在建房屋图像数据集;
[0066]
本实施例中,优选地,使用labelimage工具对图像中的在建房屋的位置进行人工标注。只需要关注房屋在图像中的位置信息,标注后的xml文件进行解析提取图像中在建房屋的位置坐标并进行裁剪,获得裁剪后的在建房屋数图像据集。
[0067]
需要说明的是,对收集到图像数据可以只标注在建房屋的位置,也可以在标注位置的同时标注在建房屋的类别,房屋的类别可随意指定,在标注有类别的时候,当采用对比聚类的无监督方式进行类别划分后,将得到的类别替换标注的类别即可。
[0068]
s3、数据无监督聚类:设置好聚类的类别数目,然后将s2步骤得到的在建房屋图像数据采用对比聚类的无监督方式进行类别划分;
[0069]
需要说明的是,类别的名称具体为什么不重要,聚类的类别数目可以随意设置,例如可以设置为类别1、类别2、类别3、类别4、类别5等类别,划分类别的主要目的是把相似的房屋划分为一类。
[0070]
s4、标签重定义:各个在建房屋在通过聚类后都有相应的类别,将该在建房屋数据的类别标注到原始图像上的标签;
[0071]
s5、检测模型训练:对于标注上标签的在建房屋数图像据集,采用yolox 目标检测算法进行模型训练;
[0072]
s6、模型置信度阈值设定:根据房屋数据的每个类别在测试集的预测效果,调整每个类别的置信度阈值。
[0073]
本实施例中,在测试集上,通过设置不同的置信度阈值,观测在测试集上的预测效果,然后对每个类别选取合适的阈值,检测模型训练好后,最后统一输出“在建房屋”的标签,这样便能保证算法具有较高的检测精度和召回率,如图5所示为人工定义类别识别效果图、如图6所示为本算法识别效果图。
[0074]
综上所述,针对在建房屋这类具有复杂场景和多个不同状态的数据,提出了采用无监督聚类的方式对数据进行多类别标注,相比于采用单一的类别标注,多类别方式使模型更易学习到数据分布,从而更好的收敛拟合,同时划分为多个类别后,模型更容易优化;相比于通过人工划分为多类标注的情况,由于在建房屋的各个时期的状态随着摄像机拍摄角度、房屋类型、房屋遮挡等情况而异常复杂难以界定,通过无监督聚类的方式学习各个房屋之间的潜在特征,将相似性较高的图像划分为一类,使得数据集的划分更加精确,更有利
于模型的训练和收敛,从而提高模型对在建房屋的预测精度;针对在建房屋分为多类的情况,各个类别在实际场景中预测精度有所差别,通过在测试集上的预测情况,为每个类别设置不同的阈值,然后统一输出为“在建房屋”的标签,这样既能有效保持高召回率,也能有效提高检测精度。
[0075]
实施例2
[0076]
如图3所示,在实施例1的基础之上,所述步骤s3中在建房屋图像数据采用对比聚类的无监督方式进行类别划分包括以下步骤:
[0077]
在建房屋图像数据样本xi,使用两种数据增强方式ta和tb,数据增强方式在随机裁剪、灰度变换、色度变换、高斯模糊和水平翻转中随机选取,增强后的图像和为:
[0078][0079][0080]
对增强后的图像采用resnet34作为特征提取网络,提取特征向量表示为:
[0081][0082][0083]
其中和代表特征向量,f(
·
)表示特征提取网络;
[0084]
特征向量和再经过两层非线性感知器(mlp)进行映射为:
[0085][0086][0087]
其中和表示映射后的特征向量,g(
·
)表示非线性感知器;
[0088]
定义样本的损失为:
[0089][0090][0091]
其中τi是实例层次的temperature参数,本次实验取0.5,s(
·
)代表余弦相似度运算,n表示设定的batch大小,因此经过数据增强过后,batch内共有2n个数据,对于每一个样本都可以形成1个正样本对和2n-2个负样本对,和分别表示一个batch中第j个样本经过ta和tb数据增强后所提取的特征向量;
[0092]
样本在实例层次总损失l
ins
如下式所示:
[0093][0094]
当数据样本被映射到与聚类cluster数量相同的空间维度时,数据特征的每一维
可以看作是该样本属于该类别的概率,通过特征提取网络提取的特征向量经过两层非线性感知器将其映射成m,m表示聚类类别数维向量,即:
[0095][0096][0097]
其中gc(
·
)为非线性感知器,和分别表示经过感知器映射过后的m维向量,则一个batch内的样本在ta和tb数据增强下组成ya∈rn×m,yb∈rn×m矩阵;
[0098]
定义为ya中第i列,同理,为yb第i列,因此样本与在集群层次的损失定义为:
[0099][0100][0101]
其中τc是集群层次的temperture参数,本次实验取0.9,m表示聚类类别数,为样本在ta数据增强下第j个类别的聚类分配,同理,表示样本在tb数据增强下第j个类别的聚类分配;
[0102]
样本在集群层次总损失l
clu
为下式所示:
[0103][0104]
h(y)为聚类分配概率的信息熵,是为了避免网络将所有实例都分配到一个聚类簇中,具体表示如下式所示:
[0105][0106][0107]
其中,表示在tk的数据增强下第j个样本属于类别i的概率,||
·
||1代表 l1范数,yk表示一个batch内样本在tk数据增强下的输出矩阵;
[0108]
因此最终模型损失函数为l=l
ins
+l
clu
;
[0109]
通过误差反向传播,最小化损失函数得到聚类模型,然后通过聚类模型对数据集进行类别划分。