图像分类是对各种图像类别进行分类的过程,以获得其适当的标签或与之相关的类别。图像分类大多采用卷积神经网络(CNN),但本文试图展示即使是逻辑回归也有能力在减少计算时间的情况下对图像进行有效分类,同时也免除了为图像分类建立复杂模型的繁琐任务。
目录
- Logistic回归的概述
- 用逻辑回归进行图像分类的案例研究
- 摘要
Logistic回归的概述
Logistic回归是有监督的机器学习算法之一,主要用于二进制分类问题,根据特定类别数据的出现,结果是固定的。Logistic回归基本上是通过一个在0和1之间取值的sigmoidal函数来操作。
用Logistic回归进行图像分类的案例研究
如前所述,本文强调使用Logistic回归进行图像分类,我们使用手势数字分类数据集,其中有两类图像显示手势为0和1。
本文使用了numpy格式的数据集,因此输入和输出的数据集被适当地加载到工作环境中,如下图所示,使用numpy格式数据的主要原因是为了方便计算,因为numpy数据处理与其他数据类型相比更快。以下是将numpy数据加载到工作环境中的步骤。
inp_df=np.load('/content/drive/MyDrive/Colab notebooks/Image classificatiob using LOGREG/inp.npy')
out_df=np.load('/content/drive/MyDrive/Colab notebooks/Image classificatiob using LOGREG/op.npy')
一旦数据集被加载到工作环境中,确定numpy数据的形状以估计数据中存在的行和列的数量,可以看到在使用的输入数据中有410个大小为(64,64)的图像,在输出数据中有410个图像。数据的形状可以被计算出来,如下图所示。
print('Input Dataframe shape',inp_df.shape)
print('Output Dataframe shape',out_df.shape)
形状命令的输出将如下图所示。
一旦数据集被加载到工作环境中,数据集被分割成训练和测试,分割比例为80:20,使用scikit-learn模型选择模块,如下图所示。
from sklearn.model_selection import train_test_split
X_train,X_test,Y_train,Y_test=train_test_split(inp_df,out_df,test_size=0.2,random_state=42)
比较好的做法是,在分割数据时为random_state参数提一个随机值,以确保训练和测试数据的统一洗牌。后来,分裂的数据被用来可视化整个训练和测试阶段的数据,使用子图来验证输入和输出之间的分裂,如下所示。
plt.figure(figsize=(15,5))
for i in range(1,6):
plt.subplot(1,5,i)
plt.imshow(X_train[i,:,:],cmap='gray')
plt.title('Sign language of {}'.format(Y_train[i]))
plt.axis('off')
plt.tight_layout()
plt.show()
这里提到了数字大小的随机参数,以获得清晰可见的视觉效果,随后获得了数据的初始图像,如下图所示。
由于我们使用的是图像数据集,并且为了对图像进行分类,我们使用了逻辑回归算法,因此有必要对训练和测试的依赖成分进行适当的重塑,因为逻辑回归最多只能处理两个维度的数据,此外,作为一个图像数据集,有必要将图像数据的维度从原来的三维减少到二维,如下图所示,以疏散维度方面的问题。
X_train=X_train.reshape(328,64*64)
X_test=X_test.reshape(82,64*64)
一旦采取了必要的数据预处理步骤,通过导入必要的scikit线性模型包来拟合Logistic回归模型,如下图所示。
from sklearn.linear_model import LogisticRegression
一旦必要的模块被导入到工作环境中,LogisticRegression模型被拟合到分割的数据上,如下图所示。
logreg = LogisticRegression()
logreg.fit(X_train,Y_train)
后来,该模型被用于预测不同的测试场景,该模型能够产生正确的预测结果。
y_pred=logreg.predict(X_test)
下图是Logistic回归模型的一个图像分类结果,可以看出该模型对图像样本进行正确分类的能力。
后来,对测试数据获得了逻辑回归模型的准确度得分,如下图所示,以评估该模型在测试变化数据时的通用性和可靠性,其中逻辑回归模型能够对测试数据产生98%的总体准确度得分。从逻辑回归模型获得准确率分数的步骤如下图所示。
然而,仅仅依靠准确率这一参数并不总是正确的,因为这将导致对结果的误解。因此,通过分类报告来评估所实施的逻辑回归模型的其他各种性能指标,其中精度、召回率和f1分数等参数可以被评估,以便从模型中做出合适的解释。
其中,当调和平均数或简单的F1分数参数也在相当大的范围内,"0 "类接近98%,"1 "类接近97%,这是一个可靠模型的指标。为了更好地理解,实施的逻辑回归模型的分类报告显示如下。
总结
图像分类是深度学习和图像处理领域中的一个应用,在某些时候,多级分类是通过卷积神经网络等模型来实现的,在这些模型中,建立的模型可能需要通过不同的层来传播。然而,如果有二进制图像分类的要求,甚至可以实施简单而有效的监督机器学习算法模型,如Logistic回归,以获得适当的图像分类,正如本文所介绍的。
参考文献
The postHow to use logistic regression for image classification? appeared first onAnalytics India Magazine.