特征提取+BP神经网络,实现对图像的分类

1.前言

这里是使用“特征提取+BP神经网络,实现对图像的分类”,需要知道的是:1.对二维图像做完标签,制作数据集后,可以用CNN(一般输入是而惟独图片)来对图像做分类的。当前,在这之前要经过对模型的训练过程。2.也可以通过特征提取先把二维图片变成一位特征,输入到BP神经网络中,进行模型训练,然后做分类。

今天,讲到的,就是第2种方式。

2.数据集制作

这里使用的是对工业金属件表面缺陷图像(有三类缺陷图像,分别是:裂纹crack,夹杂inclusion,麻点pitted )。
在这里插入图片描述

使用Hu不变矩等方法手动提取特征(一维特征),然后输入BP神经网络中做分类。

首先,使用Hu不变矩对缺陷图像进行特征提取,每一副缺陷图像产生7个特征,再加上这副图像的类别标签,就形成了数据集中的一个样本。

我们选取了夹杂、裂纹和麻点三类缺陷各100副图像,制作数据集。使用Hu不变矩进行特征提取后,就有了300个样本的特征。
在这里插入图片描述

Hu矩特征提取的代码(opencv+python)

def sys_moments(img):
    '''
    opencv_python自带求矩以及不变矩的函数
    :param img: 灰度图像,对于二值图像来说就只有两个灰度0和255
    :return: 返回以10为底对数化后的hu不变矩
    '''
    moments = cv2.moments(img)  # 返回的是一个字典,三阶及以下的几何矩(mpq)、中心矩(mupq)和归一化的矩(nupq)
    humoments = cv2.HuMoments(moments)  # 根据几何矩(mpq)、中心矩(mupq)和归一化的矩(nupq)计算出hu不变矩
    # 因为直接计算出来的矩可能很小或者很大,因此取对数好比较,这里的对数底数为e,通过对数除法的性质将其转换为以10为底的对数
    humoment = (np.log(np.abs(humoments))) / np.log(10)
    return humoment


def def_moments(img_gray):
    '''
    自定义求矩函数,主要是根据公式将一个个参数求出
    :param img_gray:  灰度图像,对于二值图像来说就只有两个灰度0和255
    :return: 返回以10为底对数化后的hu不变矩
    '''
    '''
        由于7个不变矩的变化范围很大,为了便于比较,可利用取对数的方法进行数据压缩;
        同时考虑到不变矩有可能出现负值的情况,因此,在取对数之前先取绝对值
        经修正后的不变矩特征具有平移 、旋转和比例不变性
    '''
    # 标准矩定义为m_pq = sumsum(x^p * y^q * f(x, y))其中f(x,y)为像素点处的灰度值
    row, col = img_gray.shape
    # 计算图像的0阶几何矩
    m00 = img_gray.sum()
    ##初始化一到三阶几何矩
    # 计算一阶矩阵
    m10 = m01 = 0
    # 计算图像的二阶、三阶几何矩
    m11 = m20 = m02 = m12 = m21 = m30 = m03 = 0
    for i in range(row):
        m10 += (i * img_gray[i]).sum()  # sum表示将一行的灰度值进行相加
        m20 += (i ** 2 * img_gray[i]).sum()
        m30 += (i ** 3 * img_gray[i]).sum()
        for j in range(col):
            m11 += i * j * img_gray[i][j]
            m12 += i * j ** 2 * img_gray[i][j]
            m21 += i ** 2 * j * img_gray[i][j]
    for j in range(col):
        m01 += (j * img_gray
  • 15
    点赞
  • 128
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 28
    评论
CNN特征提取SVM分类是一种常见的图像分类方法。CNN(卷积神经网络)是一种深度学习模型,可以自动学习图像中的特征。SVM(支持向量机)是一种传统的机器学习算法,用于分类问题。 首先,我们使用预训练的CNN模型,如VGGNet或ResNet,将图像输入网络中进行特征提取。CNN模型通过一系列的卷积和池化层对图像进行多层次的特征提取,这些特征可以捕获图像的局部和全局结构。在提取特征时,我们可以选择从某一层的特征映射中提取特征向量,如最后一个全连接层之前的特征。 然后,我们将这些提取出的CNN特征作为SVM的输入。SVM是一种监督学习算法,能够将不同类别的数据点分隔开。它通过在特征空间中找到一个最优超平面来实现分类。在我们的情况下,CNN提取特征向量将作为SVM的输入,SVM会根据这些特征图像进行分类。 为了训练SVM模型,我们需要标注好的训练数据集。我们可以将部分图像用于训练,其中包括每个类别的正例和反例。训练过程中,SVM将通过最大化间隔来学习一个决策边界,使得正例和反例能够被最大程度地分开。通过训练得到的模型,我们可以对新的图像进行分类预测。 最后,在进行分类预测时,我们使用训练好的SVM模型对测试图像进行分类。我们将测试图像通过CNN进行特征提取,然后用SVM模型进行分类预测。 通过CNN特征提取SVM分类方法,我们可以利用CNN对图像进行特征提取,然后使用SVM模型对这些特征进行分类。这种方法结合了深度学习和传统机器学习的优势,可以获得较好的分类性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

做个好男人!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值