ELE AI算法大赛“赛道二:智慧骑士—消防隐患识别” Baseline
仅用于站内搜索,没有排版格式,具体信息请跳转上方微信公众号内链接
赛题名称:ELEAI算法大赛“赛道二:智慧骑士—消防隐患识别”
赛题类型:计算机视觉
赛题任务:图像分类
https ://tianchi.aliyun.com/s/25a148493f461f0eaa9be8984ea1f6ed
蓝骑士在履约配送的过程中,会经过大街小巷以及楼梯拐角,是很好的发现隐患的眼睛。但在隐患上报的链路中,存在几个卡点:一是蓝骑士上传信息的真实性及准确性,二是上报行为能不能得到最快的奖励反馈。借助AI的实施识别功能,可以有效解决以上两个卡点,一方面可以将更真实有效的隐患信息传达给监管部门,另一方面也能对蓝骑士进行即时奖励,鼓励其上报隐患的积极行为。
在图像分类任务中,尤其是针对消防隐患识别这样的具体应用场景,除了基本的图像分类方法外,还有多种进阶方法可以帮助提升模型的性能和准确性。
高风险:楼道中出现电动车、电瓶、飞线充电等可能起火的元素。
中风险:楼道中存在大量堆积物严重影响通行或堆放大量纸箱、木质家具等能造成火势蔓延的堵塞物。
低风险:存在楼道堆物现象但不严重。
无风险:楼道干净,无堆放物品。
非楼道:一些与楼道无关的图片。
赛题训练集包含几千张图片,这些图片涵盖了各种场景,包括楼道和非楼道场景。数据集的特点如下:
多样性:图片内容丰富,包含楼道、街道、室内其他区域等。
复杂性:楼道场景中可能存在各种消防隐患,如堆积物、电动车、飞线充电等。
标注信息:每张图片都有标注信息,说明其场景类别(楼道/非楼道)以及隐患等级(无隐患、低风险、中等风险、高风险)。
分数区间:2.3分左右(具体分数可能因随机性略有波动)。
任务目标:对拍摄的照片内容进行识别,实时判断照片内场景是否存在消防安全隐患以及隐患的危险程度。
输入:蓝骑士拍摄的照片,内容包括楼道、街道、室内等场景。
输出:隐患等级(高风险、中风险、低风险、无风险、非楼道)。
数据预处理:加载数据集,过滤无效图片,对图片进行归一化和数据增强。
模型构建:加载预训练的ResNet18模型,修改最后的全连接层以适应5个分类类别。
模型训练:使用训练集进行模型训练,使用验证集进行模型验证,记录最佳模型。
模型评估:计算模型在验证集上的准确率,评估模型性能。
图像数据通常是高维度的(例如,一张256×256像素的RGB图像有196,608个特征值)。这些特征之间存在复杂的非线性关系,传统的机器学习方法(如支持向量机、决策树等)很难有效地捕捉这些关系。
深度学习模型,尤其是CNN,通过多层神经网络结构,能够自动学习图像中的层次化特征表示。从低层次的边缘和纹理,到高层次的物体形状和场景结构,CNN可以逐步提取出对分类任务有用的特征。
赛题中的数据集包含多种场景(如楼道、街道、室内等),并且每个场景中可能存在多种消防隐患(如堆积物、电动车、飞线充电等)。这种多样性和复杂性要求模型能够泛化到不同的场景和情况。
深度学习模型通过大量的训练数据学习通用的特征表示,能够更好地适应数据集的多样性。通过数据增强技术(如旋转、翻转、裁剪等),还可以进一步提高模型的泛化能力。
在实际应用中,尤其是特定领域的任务(如消防隐患检测),很难收集到足够多的标注数据。深度学习模型通常需要大量的数据来学习有效的特征表示,数据量不足会导致模型过拟合,泛化能力差。
迁移学习通过在大规模通用数据集(如ImageNet)上预训练模型,学习到通用的图像特征表示。然后,将这些预训练模型迁移到特定任务上,并在有限的数据集上进行微调。这样可以充分利用预训练模型在大规模数据上学到的知识,弥补特定任务数据量不足的问题。
从头开始训练一个深度学习模型需要大量的计算资源和时间,尤其是对于复杂的网络结构(如ResNet、EfficientNet等)。训练过程可能需要数天甚至数周的时间,这对于快速迭代和优化模型非常不利。
在PyTorch中,自定义数据集是一个常见的需求,特别是在处理非标准数据或需要特定预处理步骤时。在PyTorch中,你需要继承torch.utils.data.Dataset类来创建自定义数据集。这个类需要实现三个方法:init,len,和getitem。
DataLoader是PyTorch中用于加载数据集的一个类,它提供了批处理、打乱数据和多进程加载数据的功能。最后,你可以使用DataLoader在训练循环中加载数据,并将数据输入到你的模型中进行训练。
对于模型选择,可以从ImageNet的排行榜选择选择。但模型的选择需要根据具体的任务需求、数据量和计算资源来综合考虑。并不是越大的模型就一定越好。
https ://paperswithcode.com/sota/image-classification-on-imagenet
AlexNet
在ImageNet竞赛中取得突破性成果,使用ReLU激活函数和Dropout技术减少过拟合,开启了深度学习在图像分类领域的应用
GoogLeNet(Inception)
引入了Inception模块,通过并行的卷积和池化操作来增加网络宽度,同时控制参数数量。
ResNet
引入了残差连接(ResidualConnection),解决了深层网络训练中的退化问题,使得训练更深的网络成为可能。
EfficientNet模型
通过复合缩放方法(同时扩展深度、宽度和分辨率)来提高网络性能,同时保持较低的计算成本。
数据增强是图像分类任务中常用的技术,旨在通过对原始图像进行一系列随机变换来增加数据集的多样性,从而提高模型的泛化能力。
Mixup是一种数据增强技术,通过将两张图像及其标签进行线性插值来生成新的训练样本。例如,给定两张图像I1和I2及其对应的标签y1和y2,Mixup生成新的图像和标签为:
CutMix是Mixup的变体,它不是对整个图像进行混合,而是在图像之间交换矩形区域。具体来说,随机选择一个矩形区域,将该区域从一张图像“剪切”并“粘贴”到另一张图像上,同时标签也按照区域面积比例进行混合。这种方法可以鼓励模型关注图像的局部特征,提高模型的鲁棒性。
这一部分的资料可以参考:
https ://albumentations.ai/docs/3-basic-usage/image-classification/
https ://pytorch.org/vision/main/transforms.html
当类别分布不均匀时,模型可能会偏向于多数类,导致对少数类的识别性能较差。为了解决这个问题,可以采用多种策略,其中之一就是使用FocalLoss。
FocalLoss的优点
提高少数类识别性能:通过增加少数类样本的损失贡献,FocalLoss有助于提高模型对少数类的识别性能。
减少易分类样本的影响:通过减少易分类样本的损失贡献,FocalLoss有助于模型关注难以分类的样本,从而提高整体性能。
灵活性:FocalLoss的参数(α和γ)可以根据具体任务进行调整,以获得最佳性能。
在图像分类任务中,尤其是针对消防隐患识别这样的具体应用场景,除了基本的图像分类方法外,还有多种进阶方法可以帮助提升模型的性能和准确性。
高风险:楼道中出现电动车、电瓶、飞线充电等可能起火的元素。
中风险:楼道中存在大量堆积物严重影响通行或堆放大量纸箱、木质家具等能造成火势蔓延的堵塞物。
低风险:存在楼道堆物现象但不严重。
无风险:楼道干净,无堆放物品。
非楼道:一些与楼道无关的图片。
待选的思路如下:
cnn、vit传统的图像分类,多分类-》划分5类;
使用物体检测模型(如YOLO、FasterR-CNN等)来识别图像中的具体物体,如电动车、电瓶、堆积物等。-》物体-》划分类别;
CLIP(ContrastiveLanguage-ImagePre-training)模型能够将图像和文本映射到同一个嵌入空间,从而实现跨模态的匹配。
利用多模态大模型(如ViLT、ALIGN等),这些模型能够同时处理图像和文本信息。
#学习大模型&讨论Kaggle#
△长按添加竞赛小助手
每天大模型、算法竞赛、干货资讯
与36000+来自竞赛爱好者一起交流~