赞
踩
在我们前面的系列博文中,我们也开发了很多图像识别类的模型,但是大都是考虑计算量参数量的问题我们首选的都是轻量级的网络模型,这类模型有一个显著的特点就是速度很快,但是精度有一定的不足,感兴趣的话可以自行移步阅读前面的系列博文即可:
《移动端轻量级模型开发谁更胜一筹,efficientnet、mobilenetv2、mobilenetv3、ghostnet、mnasnet、shufflenetv2驾驶危险行为识别模型对比开发测试》
《基于Pytorch框架的轻量级卷积神经网络垃圾分类识别系统》
《基于轻量级卷积神经网络模型实践Fruits360果蔬识别——自主构建CNN模型、轻量化改造设计lenet、alexnet、vgg16、vgg19和mobilenet共六种CNN模型实验对比分析》
《探索轻量级模型性能上限,基于GhostNet模型开发构建多商品细粒度图像识别系统》
《基于轻量级神经网络GhostNet开发构建的200种鸟类细粒度识别分析系统》
《基于MobileNet的轻量级卷积神经网络实现玉米螟虫不同阶段识别分析》
《python开发构建轻量级卷积神经网络模型实现手写甲骨文识别系统》
《基于轻量级模型GHoshNet开发构建眼球眼疾识别分析系统,构建全方位多层次参数对比分析实验》
本文主要是考虑将CNN领域内比较经典的一些网络模型都拿过来构建图像识别模型,然后在完全相同的测试条件下进行评估测试分析,而不必受限于参数量的问题只能去选择一些较为轻量级的网络模型,这里我们一共选择了19中不同的CNN模型,如下:
['EfficientNetB0', 'EfficientNetB1', 'EfficientNetB2', 'EfficientNetB3', 'EfficientNetB4', 'EfficientNetB5', 'EfficientNetB6', 'EfficientNetB7', 'inceptionv2', 'inceptionv3', 'mobilenet', 'mobilenetv2', 'mobilenetv3l', 'mobilenetv3s', 'resnet34', 'resnet50', 'vgg13', 'vgg16', 'xception']
囊括了多种不同的技术架构。
这里所使用到的网络模型均为公开可用的网络模型并非自己搭建或者是有改动结构的网络模型,相应的模型实现均可以从开源社区寻找。
本文主要是想从实验测试评估的角度来对不同模型的性能进行对比分析,这里实验数据选择的是前文使用到的眼疾识别数据集,数据实例如下所示:
训练数据集与测试数据集比例为:3:1。
等待所有模型均开发训练完成之后,我们对其进行测试评估,分别计算:准确率、精确率、召回率和F1值这四种主流的评价指标。各个模型详细实验对比结果如下所示:
- {
- 'EfficientNetB0': {
- 'accuracy': 0.5777777777777777,
- 'precision': 0.6465168063365406,
- 'recall': 0.591312767669581,
- 'f1': 0.5595602362891137
- },
- 'EfficientNetB1': {
- 'accuracy': 0.5333333333333333,
- 'precision': 0.5703872251301667,
- 'recall': 0.5608795309604018,
- 'f1': 0.4999133153555355
- },
- 'EfficientNetB2': {
- 'accuracy': 0.5266666666666666,
- 'precision': 0.5804374595861779,
- 'recall': 0.5512719717931072,
- 'f1': 0.4998350979479064
- },
- 'EfficientNetB3': {
- 'accuracy': 0.6977777777777778,
- 'precision': 0.7610020529552205,
- 'recall': 0.6994491010765668,
- 'f1': 0.6919357120540143
- },
- 'EfficientNetB4': {
- 'accuracy': 0.5155555555555555,
- 'precision': 0.49793943382280537,
- 'recall': 0.5433492927589958,
- 'f1': 0.4772574750287548
- },
- 'EfficientNetB5': {
- 'accuracy': 0.35333333333333333,
- 'precision': 0.3445015503136522,
- 'recall': 0.3802532130608958,
- 'f1': 0.28952507537165667
- },
- 'EfficientNetB6': {
- 'accuracy': 0.3288888888888889,
- 'precision': 0.38284450495565236,
- 'recall': 0.3572425408026922,
- 'f1': 0.2837801827840652
- },
- 'EfficientNetB7': {
- 'accuracy': 0.4777777777777778,
- 'precision': 0.5343918428980436,
- 'recall': 0.5095940398083537,
- 'f1': 0.4063241796506389
- },
- 'inceptionv2': {
- 'accuracy': 0.98,
- 'precision': 0.97894903450459,
- 'recall': 0.9812210241183519,
- 'f1': 0.9796562575647543
- },
- 'inceptionv3': {
- 'accuracy': 0.94,
- 'precision': 0.9415033821851232,
- 'recall': 0.9426010116017247,
- 'f1': 0.9388632363793055
- },
- 'mobilenet': {
- 'accuracy': 0.9222222222222223,
- 'precision': 0.9251961833422508,
- 'recall': 0.9230761747687337,
- 'f1': 0.920286598373771
- },
- 'mobilenetv2': {
- 'accuracy': 0.9266666666666666,
- 'precision': 0.9315206911180532,
- 'recall': 0.9294403587264678,
- 'f1': 0.9261134880154879
- },
- 'mobilenetv3l': {
- 'accuracy': 0.8355555555555556,
- 'precision': 0.835733146770314,
- 'recall': 0.8410797800019222,
- 'f1': 0.833413221249241
- },
- 'mobilenetv3s': {
- 'accuracy': 0.6866666666666666,
- 'precision': 0.7805345330675236,
- 'recall': 0.6803494975701158,
- 'f1': 0.6771095968225628
- },
- 'resnet34': {
- 'accuracy': 0.9622222222222222,
- 'precision': 0.96471027479092,
- 'recall': 0.962955149242069,
- 'f1': 0.9623192643451014
- },
- 'resnet50': {
- 'accuracy': 0.9066666666666666,
- 'precision': 0.9122247407458675,
- 'recall': 0.9099655108143448,
- 'f1': 0.905082465561362
- },
- 'vgg13': {
- 'accuracy': 0.9111111111111111,
- 'precision': 0.9171780308871714,
- 'recall': 0.9131506582377616,
- 'f1': 0.9087651122667854
- },
- 'vgg16': {
- 'accuracy': 0.8733333333333333,
- 'precision': 0.8757345045942159,
- 'recall': 0.8726670185638566,
- 'f1': 0.8720521353758593
- },
- 'xception': {
- 'accuracy': 0.9711111111111111,
- 'precision': 0.9700729590379514,
- 'recall': 0.972856683818572,
- 'f1': 0.9709933608374804
- }
- }
简单介绍下上述使用的四种指标:
准确率(Accuracy):即分类器正确分类的样本数占总样本数的比例,通常用于评估分类模型的整体预测能力。计算公式为:准确率 = (TP + TN) / (TP + TN + FP + FN),其中 TP 表示真正例(分类器将正例正确分类的样本数)、TN 表示真负例(分类器将负例正确分类的样本数)、FP 表示假正例(分类器将负例错误分类为正例的样本数)、FN 表示假负例(分类器将正例错误分类为负例的样本数)。
精确率(Precision):即分类器预测为正例中实际为正例的样本数占预测为正例的样本数的比例。精确率评估分类器在预测为正例时的准确程度,可以避免过多地预测假正例。计算公式为:精确率 = TP / (TP + FP)。
召回率(Recall):即分类器正确预测为正例的样本数占实际为正例的样本数的比例。召回率评估分类器在实际为正例时的识别能力,可以避免漏掉过多的真正例。计算公式为:召回率 = TP / (TP + FN)。
F1 值(F1-score):综合考虑精确率和召回率,是精确率和召回率的调和平均数。F1 值在评估分类器综合表现时很有用,因为它同时关注了分类器的预测准确性和识别能力。计算公式为:F1 值 = 2 * (精确率 * 召回率) / (精确率 + 召回率)。 F1 值的取值范围在 0 到 1 之间,值越大表示分类器的综合表现越好。
为了能够直观清晰地对比不同模型的评测结果,这里对其进行可视化分析,如下所示:
从对比结果上来看:不难看出inception系列和xception系列的结果最优,而mobilenet这类轻量级的模型效果则处于中游水准,大家如果在实际业务场景下需要选择最合理的参数量的模型可以对照参考这个实验评测结果,根据自己的数据复杂度和算力情况选择合适的模型。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。