赞
踩
记录一下美赛C题的完成情况orz,当时找了计算机大佬一起组队,大佬python写程序贼六,问题解决里面图像识别的程序让我叹为观止(最主要是能在这么短的时间内完成数据组织,模型配置和训练都太不容易了,要是我来这几天可能只够运行一个模块ww),我当时负责论文,写大佬的思路和模型框架的时候学到了很多,时隔几个月,做一下方法总结。
美赛C题主体是对外来入侵大黄蜂的检测,已知的信息是发现的时间、经纬度、图片、视频和语言描述,部分样本已经完成检测,我们需要做的就是完成其他未检测样本的检测。
针对数据特点我们对不同类型数据(文本、图片、时间等)分开处理,得到特征,再对一个样本的所有特征做回归进行分类。从而起到模型各部分解耦(decoupling),方便拆开更新调整的作用。
模型的主体部分如下:
从视频中进行关键帧提取,将关键帧作为样本和图像一起处理。
提取关键帧的操作可以通过下面两个工具实行:
因为很多图像里面背景复杂,并且黄蜂在里面占比太小了,为了训练模型需要对图片里的类似黄蜂的昆虫进行识别,选取对应的样本框。
用的是YOLO v5目标检测的模型
YOLOv5:backbone是CBL和Resnet构成的
CBL:conv&BN&leaky Relu 关于后面两部分有介绍
关于BN算法:对数据强制归一化会破坏数据的分布,需要对公式的robust进行优化,在归一化中加入参数完成这一工作
ps:进行过BN之后不需要dropout啦
\quad
YOLOv5的具体用法网上有很多,下面是一个参考
在实现上主要是模型的下载和配置,后面用LabelImg用自己标准的数据集做训练
用torchvision.transforms 做filp rataion affine color crop(位置大小选取),从而通过正样本变形获得更多正样本
增大正样本和模型泛化能力具体实现参考
使用Inception V4网络,更具体的网络结构用softmax输出的概率作为图像层的特征
inception v4里面层数多,主体上是卷积和残差部分构成的,训练起来速度较慢(当时数据跑完差不多花了一天,还是用的学校的服务器orz)
此外为了解决样本不平衡问题,选择Focal Loss = − α ( 1 − p ) 2 l o g ( p ) , α =-\alpha(1-p)^2log(p),\alpha =−α(1−p)2log(p),α尝试选用了0.25和0.75两种
训练的时候用k-fold验证
这一块当时是我写的,用了特别简单的模型(因为样本数据量也不多),然后输出结果很好就没换模型了。
思路是:n-grams做编码,然后对编码后的结果做岭回归(因为编码后结果维度太大,而岭回归加入二阶正则项可以在减小不必要参数从而减小过拟合的同时解决多重共线性问题),得到分类概率作为文本特征。
n-grams具体的程序讲解我之前的blog里写过。
最后把文本,图像视频,时间,经纬度特征(时间和经纬度过ReLU函数编码)合并成新向量
用SMOTE(Synthetic Minority Oversampling Technique)再进行样本增强,这样用的是ADASNY,这样上采样是基于距离通过在正样本连接直线上随机加点,增强正样本稠密性,从而增加正样本数量完成的。
最后对增强后的样本进行logistic regression 完成分类
为了完成这一步,首先上面的模型都是解耦的,分开更改很方便;数据处理上也没有使用标准化 而是用函数进行数据变化,方便加入新样本数据。且训练时优化器用 FTRL方便实时训练。
用分类器的metrics体现模型性能。
对其中部分操作基于最后模型结果分布用T test进行消融实验。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。