-
比赛简介共10类食物,数据集共5000个图片,尺寸大小不一,类别分别均衡。需要自己划分训练集和验证集,用于判分的测试集不可见。比赛难度不大,主要难点在于如何减小过拟合,提高模型的泛化能力。代码已在我的github上开源,欢迎star。源码的github地址涨点核心思想:cbam注意力auto_augmentcutmixsnapshotLabelSmooth数据探索由于数据集比较小,也比较简单,因此主要是统计了一下所有图像的尺寸分布,发现大多数图像的宽高在400~500,因此可以选择将图像输入尺寸调整到这个区间。大尺寸的另一个好处是可以显著提高分类准确率。训练策略数据集划分采用9:1的比例将数据集划分为训练集和验证集,时间和资源允许的情况下,可以进行10折交叉验证。数据增强数据集比较小,因此数据增强是提分的重点方向。除了torch自带的随机裁切和随机擦除以外,涨分的一大技巧是采用auto_augment。数据增强的代码如下:train_transform = transforms.Compose([ transforms.Resize((size+32, size+32)), transforms.RandomChoice([transforms.RandomCrop(size, padding=1, pad_if_needed=True, padding_mode='edge'), transforms.RandomResizedCrop(size, scale=(resize_scale, 1.0), ratio=(0.8, 1.2))]), transforms.RandomHorizontalFlip(), auto_augment.AutoAugment(dataset='CIFAR'), transforms.ToTensor(), transforms.RandomErasing(p=erasing_prob), transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) ])模型选择采用efficientnet-b5,同时增加了cbam注意力模块,代码如下:class ChannelAttention(nn.Module): def __init__(self, in_planes, ratio=16): super(ChannelAttention, self).__init__() self.avg_pool = nn.AdaptiveAvgPool2d(1) self.max_pool = nn.AdaptiveMaxPool2d(1) self.fc1 = nn.Conv2d(in_planes, in_planes // 16, 1, bias=False) self.relu1 = nn.ReLU() self.fc2 = nn.Conv2d(in_planes // 16, in_planes, 1, bias=False) self.sigmoid = nn.Sigmoid() def forward(self, x): avg_out = self.fc2(self.relu1(self.fc1(self.avg_pool(x)))) max_out = self.fc2(self.relu1(self.fc1(self.max_pool(x)))) out = avg_out + max_out return self.sigmoid(out) class SpatialAttention(nn.Module): def __init__(self, kernel_size=7): super(SpatialAttention, self).__init__() assert kernel_size in (3, 7), 'kernel size must be 3 or 7' padding = 3 if kernel_size == 7 else 1 self.conv1 = nn.Conv2d(2, 1, kernel_size, padding=padding, bias=False) self.sigmoid = nn.Sigmoid() def forward(self, x): avg_out = torch.mean(x, dim=1, keepdim=True) max_out, _ = torch.max(x, dim=1, keepdim=True) x = torch.cat([avg_out, max_out], dim=1) x = self.conv1(x) return self.sigmoid(x)优化器和学习率衰减优化器采用RAdam,学习率衰减策略采用torch1.4自带的学习率自动重启的余弦衰减。optimizer = newoptim.RAdam(model.parameters(), lr=lr, weight_decay=weight_decay) scheduler = optim.lr_scheduler.CosineAnnealingWarmRestarts(optimizer, T_0=epochs//snap_num)训练方法采用三阶段训练法,每一阶段基于快照集成思想获得5个模型快照,选择acc最高的模型作为当前阶段的训练结果。具体流程如下:Stage 1:图像输入尺寸为400,使用LabelSmooth和cutmix,采用带学习率自动重启的CosineAnnealingWarmRestarts方法,获得5个模型快照,选择val_acc最高的模型,作为Stage 1的训练结果。Stage 2:图像输入尺寸为500,适当调整随机裁切和随机擦除的参数,增加weight_decay,在Stage 1模型的基础上训练获得5个模型快照,选择val_acc最高的模型,作为Stage 2的训练结果。Stage 3:图像输入尺寸为500,关闭cutmix,损失函数采用CrossEntropyLoss,在Stage 2模型的基础上训练获得5个模型快照,选择val_acc最高的模型,作为最终的训练结果。模型性能单模型,验证集上acc为99.4%,提交到modelarts上,测试集的acc为99.2%。由于图像分辨率较大,推理时间比较长,500张图片需要40多分钟。
-
赛事介绍 美食数据包含10个类别,数据集共5000个图片,尺寸大小不一,类别分别均衡。需要自己划分训练集和验证集,竞赛数据来自真实的美食图片数据,包含中餐、西餐、甜点、粥类,每张图像中美食所占比例大于3/4,每张图片代表一类美食。 竞赛数据分为2个数据集:参赛选手可使用第1个数据集,第2个数据集作为评判用(参赛者不可见)。主要思路数据集划分 采用了8.5:1.5的比例将数据集划分为训练集和验证集数据增强对图片进行了一定的旋转处理()和尺寸处理,这里计算了一下所有照片的均值,方差 mean std = [0.6736, 0.5654, 0.4031],[0.1994, 0.2248, 0.2528],具体代码如下:normalize = transforms.Normalize([0.6736, 0.5654, 0.4031],[0.1994, 0.2248, 0.2528])train_transformer_ImageNet = transforms.Compose([ transforms.Resize((size,size)), transforms.RandomHorizontalFlip(), transforms.RandomAffine(degrees=3, translate=(0.05, 0.05), scale=(0.95, 1.05)), transforms.ToTensor(), normalize]) val_transformer_ImageNet = transforms.Compose([ transforms.Resize((size,size)), #transforms.CenterCrop(224), transforms.ToTensor(), normalize]) 3.划分数据集和基础的图像预处理 色彩抖动,图像中有一个比较大的难点是背景干扰,在实际工程中为了消除图像在不同背景中存在的差异性,通常会做一些色彩抖动操作,扩充数据集合。色彩抖动主要是在图像的颜色方面做增强,主要调整的是图像的亮度,饱和度和对比度。工程中不是任何数据集都适用,通常如果不同背景的图像较多,加入色彩抖动操作会有很好的提升。def randomColor(image, saturation=0, brightness=0, contrast=0, sharpness=0): if random.random() < saturation: random_factor = np.random.randint(0, 31) / 10. # 随机因子 image = ImageEnhance.Color(image).enhance(random_factor) # 调整图像的饱和度 if random.random() < brightness: random_factor = np.random.randint(10, 21) / 10. # 随机因子 image = ImageEnhance.Brightness(image).enhance(random_factor) # 调整图像的亮度 if random.random() < contrast: random_factor = np.random.randint(10, 21) / 10. # 随机因1子 image = ImageEnhance.Contrast(image).enhance(random_factor) # 调整图像对比度 if random.random() < sharpness: random_factor = np.random.randint(0, 31) / 10. # 随机因子 ImageEnhance.Sharpness(image).enhance(random_factor) # 调整图像锐度 return image 4.batch_size 一般设为8、16、32、64、128、256等2的幂次值,batch_size越小,梯度下降方向变化越大,可能导致训练不收敛,batch_size越大,梯度下降方向越稳,但是有如下几个缺点: (1) 所需的内存和显存都越大,有可能撑爆机器; (2) 由于计算好大一批数据才进行一次梯度下降,会导致达到相同精度所需的训练时间变长; batch_size一般不影响最终精度,主要影响训练速度,每次做不同的训练任务,应该去尝试、总结合适的batch_size值,最后跑该类任务时就固定使用该batch_size=16 5. 预训练模型的选择 考虑到时间和精力的问题,在保证训练效果不错的基础上,将原有的resnet50神经网络结构训练模型换成了resnet101 6.学习率衰减调整 使用ReduceLROnPlateau学习调度器,如果三个epoch准确率没有提升,则减少学习率exp_lr_scheduler = lr_scheduler.ReduceLROnPlateau(optimizer_ft,mode='max',patience=3,verbose=True)7.通过训练中的实际情况对epochs做了点适当的微调以及推理文件的微调最后模型性能 单模型,验证集上best acc为96.933%,提交到modelarts上,测试集的acc为98%。
-
数据500 张图 x 10 类, 共 5000 个样本易混淆类别举例:三明治 和 玉米饼冰激凌 和 土豆泥芒果班戟 和 鸡蛋布丁方案基于成熟模型进行迁移学习模型EfficientNet B3在 ImageNet 数据集上精度比较高输入图像尺寸 300参数少,训练快,部署快训练策略损失函数标签平滑:抑制过拟合优化器RangerSGD数据增强随机进行旋转、平移、翻转变换随机调节亮度对比度过程两阶段训练阶段一Ranger + one-cycle只训练离输出较近的几层,锁定其他层用比较大的学习率,收敛到一个比较低的 validation loss阶段二改用 SGD使用较低学习率微调 epochs 和 lr 等超参数其他尝试Selective-Backprop参考:https://arxiv.org/abs/1910.00762minimum loss percentage 用 0.9效果不明显Weighted CE'土豆泥', '鸡蛋布丁', '冰激凌', '小米粥', '三明治' 损失函数权重设置为 1.2参考代码: weight = torch.Tensor(np.ones(data_.c)) if torch.cuda.is_available(): weight = weight.cuda() hard_classes = ['土豆泥', '鸡蛋布丁', '冰激凌', '小米粥', '三明治'] hard_classes_idx = [data_.train_ds.c2i[x] for x in hard_classes] weight[hard_classes_idx] = 1.2 loss_func = nn.CrossEntropyLoss(weight=weight)效果不明显展望尝试注意力机制尝试调整 WeightedCE 权重其他参考https://towardsdatascience.com/label-smoothing-making-model-robust-to-incorrect-labels-2fae037ffbd0https://towardsdatascience.com/exploring-learning-rates-to-improve-model-performance-in-keras-e37f5e63f16c
-
比赛简介共10类食物,数据集共5000个图片,尺寸大小不一,类别分别均衡。需要自己划分训练集和验证集,用于判分的测试集不可见。比赛难度不大,主要难点在于如何减小过拟合,提高模型的泛化能力。代码已在我的github上开源,欢迎star。源码的github地址涨点核心思想:cbam注意力auto_augmentcutmixsnapshotLabelSmooth数据探索由于数据集比较小,也比较简单,因此主要是统计了一下所有图像的尺寸分布,发现大多数图像的宽高在400~500,因此可以选择将图像输入尺寸调整到这个区间。大尺寸的另一个好处是可以显著提高分类准确率。训练策略数据集划分采用9:1的比例将数据集划分为训练集和验证集,时间和资源允许的情况下,可以进行10折交叉验证。数据增强数据集比较小,因此数据增强是提分的重点方向。除了torch自带的随机裁切和随机擦除以外,涨分的一大技巧是采用auto_augment。数据增强的代码如下:train_transform = transforms.Compose([ transforms.Resize((size+32, size+32)), transforms.RandomChoice([transforms.RandomCrop(size, padding=1, pad_if_needed=True, padding_mode='edge'), transforms.RandomResizedCrop(size, scale=(resize_scale, 1.0), ratio=(0.8, 1.2))]), transforms.RandomHorizontalFlip(), auto_augment.AutoAugment(dataset='CIFAR'), transforms.ToTensor(), transforms.RandomErasing(p=erasing_prob), transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) ])模型选择采用efficientnet-b5,同时增加了cbam注意力模块,代码如下:class ChannelAttention(nn.Module): def __init__(self, in_planes, ratio=16): super(ChannelAttention, self).__init__() self.avg_pool = nn.AdaptiveAvgPool2d(1) self.max_pool = nn.AdaptiveMaxPool2d(1) self.fc1 = nn.Conv2d(in_planes, in_planes // 16, 1, bias=False) self.relu1 = nn.ReLU() self.fc2 = nn.Conv2d(in_planes // 16, in_planes, 1, bias=False) self.sigmoid = nn.Sigmoid() def forward(self, x): avg_out = self.fc2(self.relu1(self.fc1(self.avg_pool(x)))) max_out = self.fc2(self.relu1(self.fc1(self.max_pool(x)))) out = avg_out + max_out return self.sigmoid(out) class SpatialAttention(nn.Module): def __init__(self, kernel_size=7): super(SpatialAttention, self).__init__() assert kernel_size in (3, 7), 'kernel size must be 3 or 7' padding = 3 if kernel_size == 7 else 1 self.conv1 = nn.Conv2d(2, 1, kernel_size, padding=padding, bias=False) self.sigmoid = nn.Sigmoid() def forward(self, x): avg_out = torch.mean(x, dim=1, keepdim=True) max_out, _ = torch.max(x, dim=1, keepdim=True) x = torch.cat([avg_out, max_out], dim=1) x = self.conv1(x) return self.sigmoid(x)优化器和学习率衰减优化器采用RAdam,学习率衰减策略采用torch1.4自带的学习率自动重启的余弦衰减。optimizer = newoptim.RAdam(model.parameters(), lr=lr, weight_decay=weight_decay) scheduler = optim.lr_scheduler.CosineAnnealingWarmRestarts(optimizer, T_0=epochs//snap_num)训练方法采用三阶段训练法,每一阶段基于快照集成思想获得5个模型快照,选择acc最高的模型作为当前阶段的训练结果。具体流程如下:Stage 1:图像输入尺寸为400,使用LabelSmooth和cutmix,采用带学习率自动重启的CosineAnnealingWarmRestarts方法,获得5个模型快照,选择val_acc最高的模型,作为Stage 1的训练结果。Stage 2:图像输入尺寸为500,适当调整随机裁切和随机擦除的参数,增加weight_decay,在Stage 1模型的基础上训练获得5个模型快照,选择val_acc最高的模型,作为Stage 2的训练结果。Stage 3:图像输入尺寸为500,关闭cutmix,损失函数采用CrossEntropyLoss,在Stage 2模型的基础上训练获得5个模型快照,选择val_acc最高的模型,作为最终的训练结果。模型性能单模型,验证集上acc为99.4%,提交到modelarts上,测试集的acc为99.2%。由于图像分辨率较大,推理时间比较长,500张图片需要40多分钟。
-
比赛简介 大赛提供5000张图片,10分类问题。 本次主要在数据,网络模型和优化器做优化,数据量较小,主要工作是在防止过拟合。数据处理:1.数据增强随机水平翻转 RandomHorizontalFlip随机仿射变换 RandomAffine2.数据扩充 大赛提供了5000张数据进行训练,数据量较小。 在网上爬取了4946张图片,爬取的数据集链接: 链接:https://pan.baidu.com/s/1MbKgC3JP1EA5TbQUdl53xw 提取码:97qy 爬取的数据有很多脏数据,做了两轮简单的数据清洗后扩充数据集。 给易混淆的类别多扩充一些数据,同时考虑数据均衡。两轮每个类别的的数据增加量如下图。 训练时分别使用两个扩充的数据集训练。 模型选择 本次比赛分别尝试了ResNet系列和efficientnet系列,参考了下图, 最后直接选择了参数量最大的efficientnet-b7。 其他工作 优化器:训练全程采用ranger优化器,使用L2正则化。 损失函数:使用了标签平滑(LabelSmoothingCrossEntropy) 学习率策略:使用ReduceLROnPlateau,两个epoch验证集准确度没有上升就减小学习率。模型训练 训练分两部分,图片输入尺寸为(224,224) 第一阶段:使用数据处理部分第一轮添加的数据,9:1划分,只训练最后一层网络参数,10个epoch。 第二阶段:在第一阶段模型基础上继续训练,使用数据处理部分第二轮添加的数据,9.6:0.4划分,训练最后一层网络参数10个epoch后,训练全部参数25个epoch。未来展望 在efficientnet网络中添加cbam注意力机制。 使用学习率余弦退火等方法。 增大图片输入尺寸。模型性能 单模型,测试集acc98.4%。参考: 模型选择出图片来源:https://github.com/lukemelas/EfficientNet-PyTorch
-
赛事介绍 美食数据包含10个类别,数据集共5000个图片,尺寸大小不一,类别分别均衡。需要自己划分训练和验证数据,竞赛数据来自真实的美食图片数据,包含中餐、西餐、甜点、粥类,每张图像中美食所占比例大于3/4,每张图片代表一类美食。 除提供给参赛选手的训练集外,主办方还有一个测试集,该数据集对参赛者不可见,用于多提交模型进行评判。主办方提供使用resnet50训练的baseline,其测试精度在86%左右。优化思路数据增强采用旋转、翻转和剪裁对数据进行增强数据集划分采用9:1的训练和验证集划分,经过多次训练发现,在训练集上达到最优的模型,往往验证准确率也越高。于是,为了充分利用数据,训练时不做验证,最终选取在训练集达到上最优的模型提交。模型选择考虑不做验证,为避免严重的过拟合,选取结构简单、参数量较少的Xception,用ImageNet预训练的权重进行初始化。其他设置经过多次测试,在最后的全连接层,添加dropout(0.2)的层,使用SGD优化器以及StepLR梯度下降,可得到最优的测试准确率。最终结果提交在训练集上表现最好的模型,最终测试准确率97.2%总结真正的小白技巧,几乎单纯通过对数据进行增强和一点防止过拟合的技巧,就可以将模型的准确率提升至97.2%。感想:这次青年班的学习和比赛太合适入门与实践了,既入门了CNN,又会学会了使用modlearts,通过比赛还能学到其他大佬的优化技巧,太值了!
-
赛题简介基于ModelArts一站式AI开发平台,对10类美食图片进行分类。数据集一共包含5000张美食图片,均来自真实的美食图片数据,包含中餐、西餐、甜点、粥类,每张图像中美食所占比例大于3/4,每张图片只代表一类美食。竞赛数据分为2个数据集:参赛选手可使用第1个数据集,第2个数据集有500张美食图片作为评判用(参赛者不可见)。下面是官方给出的Baseline。经验分享数据集划分Baseline中默认为0.8训练集,0.2验证集。适当增加训练集的比例,可提高验证集的best acc。但是如果训练集比例过高,会降低模型的的泛化能力,造成最终评分和best acc 相差过大,即模型仅对已知验证集表现良好,对未知验证集表现较差。简单数据增强size = 224 # 使用image net的mean std 归一化 normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) train_transformer_ImageNet = transforms.Compose([ transforms.Resize((size,size)), transforms.RandomHorizontalFlip(), transforms.RandomAffine(degrees=0, translate=(0.05, 0.05), scale=(0.95, 1.05)), transforms.ToTensor(), normalize ]) val_transformer_ImageNet = transforms.Compose([ transforms.Resize((size,size)), transforms.ToTensor(), normalize ])模型选择尝试了ResNet的不同深度,最后选择了ResNet-101优化器和学习率衰减optimizer_ft = optim.SGD(parameters, lr=0.001, momentum=0.9, nesterov=True) # 使用ReduceLROnPlateau学习调度器,如果三个epoch准确率没有提升,则减少学习率 exp_lr_scheduler = lr_scheduler.ReduceLROnPlateau(optimizer_ft,mode='max',patience=3,verbose=True)模型性能单模型,验证集上acc为96.556%,提交到modelarts上,测试集的acc为97.8%。
-
赛事介绍美食数据包含10个类别,数据集共5000个图片,尺寸大小不一,类别分别均衡。需要自己划分训练集和验证集,竞赛数据来自真实的美食图片数据,包含中餐、西餐、甜点、粥类,每张图像中美食所占比例大于3/4,每张图片代表一类美食。 竞赛数据分为2个数据集:参赛选手可使用第1个数据集,第2个数据集作为评判用(参赛者不可见)。主要思路数据增强考虑到数据集不算太大,且美食较为居中,将其Resize后CenterCrop。为提高其泛化能力,使用随机水平翻转和亮度、对比度调节数据集划分将数据集随机划分,划分比例初期测试时使用0.9/0.1, 最后提交时使用0.95/0.05Label Smoothing学习参考:https://blog.csdn.net/qq_43211132/article/details/100510113将one-hot编码扁平化,有利于增强其泛化性能,防止过拟合模型选用根据github对cifar10预训练模型选用测试,选择densenet161模型,并修改最后的Linear层,加上Dropout防止过拟合5.其他设置经过各种测试,使用Adam优化器以及StepLR梯度下降,Label Smoothing参数设为0.15能得到最优效果测试结果在Epoch12左右能收敛至训练集准确率0.99以上,测试集准确率0.98,上传至modelarts测试平台准确率为0.978
-
比赛简介共十类美食,总计5000张图片,包含中餐、西餐、甜点、粥类,每张图像中美食所占比例大于3/4,数据分布均衡,自由划分训练集和验证集比例,本方案采取9:1的比例进行划分,项目最终以识别准确率作为评价指标,本方案使用单模型,在ModelArts上测试集的acc为0.978训练策略数据方面数据集划分采用9:1的比例将数据集划分为训练集和验证集,并将数据打乱(实际影响不大)数据增强采用简单的数据增强方案,包括图像的翻转,仿射变化及标准化这里的size选用的是224(听说太小了)train_transformer_ImageNet=transforms.Compose([ transforms.Resize((size,size)), transforms.RandomHorizontalFlip(), transforms.RandomAffine(degrees=5, translate=(0.05, 0.05), scale=(0.95, 1.05)), transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ])模型方面模型的选择baseLine选用的是Resnet模型,本着一切从简的原则(其实就是懒),分别试了Resnet18,ResNet34,ResNet101,ResNet152,还是ResNet152的acc较高,所以预训练模型选用的是ResNet152模型的训练策略方面采用了标签平滑,个人感觉差别也不大def reduce_loss(loss, reduction='mean'): return loss.mean() if reduction == 'mean' else loss.sum() if reduction == 'sum' else loss def lin_comb(a, b, epsilon): return epsilon * a + b * (1 - epsilon) class LabelSmoothingCrossEntropy(nn.Module): def __init__(self, epsilon: float = 0.1, reduction='mean'): super().__init__() self.epsilon, self.reduction = epsilon, reduction def forward(self, output, target): c = output.size()[-1] log_preds = F.log_softmax(output, dim=-1) loss = reduce_loss(-log_preds.sum(dim=-1), self.reduction) nll = F.nll_loss(log_preds, target, reduction=self.reduction) return lin_comb(loss / c, nll, self.epsilon)学习率调整,使用ReduceLROnPlateau学习调度器,如果三个epoch准确率没有提升,则减少学习率exp_lr_scheduler = lr_scheduler.ReduceLROnPlateau(optimizer_ft,mode='max',patience=3,verbose=True)模型性能验证集上的acc为0.974,提交到ModelArts上为0.978比赛总结这次的比赛对我来说收获挺大的,有些东西真是在学校里边体会不到的,还得多实践,同时也认识到了不同地区的小伙伴,寒假快要结束了,又是新的学期啊,可能只有短短一个多月?我们都加油,祝大家始终保持心里有火,眼里有光的状态!
-
ModelArts、Hilens联合开发助力人工智能落地电子科技大学 自动化工程学院 贵兴泰 由华为云携手上海交通大学学生创新中心举办的“第二届华为云人工智能大赛 · 无人车挑战杯”总决赛已成功落下帷幕。来自电子科技大学的“暑期休闲队”,自身拥有扎实的模式识别、机器人等学科知识,以及借助华为云一站式AI开发管理平台ModelArts和端云协同解决方案HiLens,进行无人车模型开发与部署,最终获得季军。“暑期休闲队”撰文分享其参赛体验,包括如何使用华为云ModelArts和HiLens实现无人车的目标检测,多源数据融合及行驶控制的能力等。一 队伍背景故事1 “我们为什么参加”我们是来自电子科技大学自动化工程学院以及计算机科学与工程的五名研究生新生,因为研究生研究方向多为模式识别、机器人等领域,并且对人工智能技术非常感兴趣,因此在今年七月份的时候自发组织报名参加了今年的华为云无人车挑战赛。五位队员都有较为丰富的科研竞赛经历,且都是华为的忠实粉丝,对于这次全新的比赛充满了信心与热情。2 “我们遇到了哪些困难”首先是因为今年特殊的疫情原因,我们五个人前期无法集合在一起进行比赛项目的商讨以及规划,正式开始备赛是在九月初,因此我们的准备时间只有大概十五天,但是在学校学院的支持下,我们可以有一个比较好的调试场地,我们从开学也是直接进入高强度的开发工作中,在前往上海之前已经把基本功能实现。在半决赛和决赛的过程中,主要是小车巡线功能对光线环境有些敏感,在决赛比赛中时出现了跑出轨道的情况,不过我们队伍负责巡线的队员通过丰富的临场调车经验,还是及时的解决了这个问题,最终也取得了不错的成绩3 “我们的欢乐时光”现在回想一下我们备赛的日子,最欢乐的时光就是五个人在校园里调车的日日夜夜,一起面对技术难点,一起享受灵感实现的快乐,看着一台小车从什么都不会到最后实现了各种各样的功能。当然,在决赛的时候,最终能取得季军的成绩也让我们非常开心。二 赛题介绍小车需要在规定赛道上通过层层关卡,包括交通灯识别(出发&泊车)、弯道行驶、斑马线行人识别、限速解限速识别、自动泊车、竞速等。小车不仅仅要完成所有的赛点,还要跑得快。而这里考验的是参赛者的综合能力,包括车体结构、底盘控制、传感器、网络通信、云端数据处理、人工智能等多学科的知识,而难点在于将这些知识点融合贯通。参赛队员需要结合华为云人工智能平台(华为云ModelArts一站式AI开发与管理平台、HiLens端云协同AI开发应用平台)以及ROS操作系统对小车进行开发。三 整体解决方案:此次无人车大赛中参赛车辆主要有三个传感器:激光雷达和两个摄像头,分别是小车自身的摄像头以及HiLens Kit上的摄像头,而激光雷达+相机的多源数据融合解决方案正是无人驾驶领域最为主流的技术。我们队伍对每个传感器的作用进行了总结:利用激光雷达进行可通行区域检测以及动态避障,利用小车摄像头进行车道线检测以及利用HiLens Kit进行目标检测以及相应的决策控制。3.1 激光雷达通过获取点云数据在小车行驶前方的有效扇区内进行障碍均值坐标计算,给与有无障碍状态实现近距应急障碍检测,行人障碍检测,因此本车的一大亮点是当在行驶过程任意状态检测到障碍物都可以进行及时的刹车,在备赛过程中大大方便了我们的调试。可行进区域检测通过对激光雷达对可行进区域边界进行检测,获得可行进区域均值点。再通过阿克曼地盘运动边界确定前进点,并且获得期望方向。我们利用上面两个技术完成了比赛中对于在人行道处对障碍物的检测以及顺利通过交叉路口两个任务 3.2 利用小车车头部分的摄像头进行车道线检测,检测方案如下:Step1 :使用高斯滤波,均值滤波,大津法对图像进行处理。Step2:在图像中逐行搜索边界点。Step3:滤除不合理边界点。Step4:使用最小二乘法对左右边线进行修复。Step5:计算图像中线。Step6:使用最小二乘法对中线进行修复。Step7:使用PID计算转角。车道线检测效果如下:3.3再通过HiLens Kit进行目标检测, HiLens Kit是由华为云开发的多模态AI开发套件,使用的AI芯片是华为自研的Ascend 310芯片,具体16T的算力。同时,开发者不仅可以使用设备自带的摄像头,还可以外接摄像头,同时处理10-16路视频分析。HiLens Kit检测到各种目标后,通过socket协议发送给ROS端,并在ROS端进行一系列决策控制完成红灯停、绿灯行、人行道停止、限速牌限速、解限速牌解限速以及黄灯泊车一系列操作。 3.4小车整体实行方案如图:ROS通信如图:四 华为云ModelArts平台的使用比赛需要利用ModelArts平台进行目标检测任务,检测包括红绿黄灯检测、限速解限速牌检测、人行道检测。使用ModelArts平台进行模型搭建的流程包括:数据获取与增强、数据集准备、模型选择与训练、模型转换4.1 数据获取与增强 本次比赛除了官方提供的训练集外,在决赛阶段我们还额外增加了在测试场地与比赛场地的训练集,训练集的获取首先通过HiLens Kit摄像头捕捉到行驶路段的视频,保存到/tmp目录下,再通过tcp从HiLens 传到本地使用opencv间隔地从视频中截取图像作为我们的原始数据集。 此外,我们还利用了三种数据增强的方法,来解决数据量较少带来的过拟合问题,分别是horizontal flip、cutout和mix up。 horizontal flip就是水平镜像翻转,这个方法实现较为简单,但是镜像翻转使用时要注意只有当一个图像分布不具备视觉手性的时候,我们才能在不改变原先图像分布的前提下,使用镜像翻转来增强数据集,因为人行道、预选赛的红绿灯就不具备视觉手性,因此我们使用镜像翻转对这类图像来进行数据增强,转换效果如下: Cutout和mixup是计算机视觉中常用的两种数据增强方法,Cutout是将图片的随机区域填充噪声,而mixup是一种运用在计算机视觉中的对图像进行混类增强的算法,它可以将不同类之间的图像进行混合,从而扩充训练数据集,增强效果如下:4.2 数据集准备 Step1 下载OBS Browser,配置OBS桶,将原始采集数据上传至OBS桶内,并创建数据集。对象存储服务(Object Storage Service)是一款稳定、安全、高效、易用的云存储服务,具备标准Restful API接口,可存储任意数量和形式的非结构化数据对象存储服务OBS配置说明文档:https://support.huaweicloud.com/obs/index.htmlOBS控制台说明文档:https://support.huaweicloud.com/usermanual-obs/obs-usermanual-zh.pdf再进入ModelArts平台的数据标注模块,创建数据集,选择物体检测,添加标签集。数据集创建参考:https://support.huaweicloud.com/engineers-modelarts/modelarts_23_0004.html Step2 在ModelArts中进行标注在“数据标注”页面单击“未标注”页签,此页面展示所有未标注的图片数据。单击任意一张图片,进入图片标注界面。用鼠标框选图片中的物体所在区域,然后在弹出的对话框中选择标签颜色,输入标签名称,按“Enter”键完成此标签的添加。标注完成后,左侧图片目录中此图片的状态将显示为“已标注”。如下图ModelArts数据标注说明:https://support.huaweicloud.com/exemlug-modelarts/modelarts_21_0011.html 4.3 模型选择与训练 在ModelArts里选择模型并创建训练任务,我们选择的模型是YOLO v3,YOLO是one stage的算法,相较于two stage的类似rcnn之类的模型的特点是速度快,这在无人车实时目标检测任务中非常重要。YOLO v3在v2基础上增加了网络复杂度,牺牲了少量速度来换取精度提升,且精度足够满足比赛需求。模型选择之后等待训练任务完成。 训练完成后可以通过可视化观察训练情况4.4 模型转换 在ModelArts训练得到理想模型后,需要在HiLens Studio里面完成模型转化,生成昇腾芯片上可使用的模型(OM模型)(这一步也可以在HiLens Studio里进行),参考:ModelArts平台模型转换工具指南:https://support.huaweicloud.com/engineers-modelarts/modelarts_23_0107.html Hilens Studio 模型转换指能:https://support.huaweicloud.com/usermanual-hilens/hilens_02_0098.html五 华为云端云协同AI开发平台HiLens的使用5.1 HiLens配置 使用HiLens Kit之前,需要开通HiLens服务。首先注册华为云账号,并完成实名认证,接着进入控制台选择登录HiLens管理控制台,完成HiLens的权限申请。 通过PC 与 HiLens Kit 组网后,通过web可以界面化地登录到HiLens Kit 管理平台,进行一键式操作链接无线网络。5.2 HiLens Studio的使用 在HiLens控制台中进入HiLens Studio,首先需要新建一个project,在技能模板中我们可以选择无人车比赛的模板技能,并基于此模板进行修改,在project中我们主要有utils.py、socket_config.py以及main.py,其中utils.py用来对图片进行预处理、检测框的标注并输出类别、标注框坐标信息等功能,socket_config.py主要将检测结果编码并构建socket通信协议与ROS端进行信息交互,main.py用来调用上述文件以及训练好的模型。main.py文件中我们利用多线程避免因为socket通信造成的程序堵塞。 模型检测实际比赛效果如下:六 亮点(1) 鲁棒性好,我们的数据采集于多场景,因此在不同环境下检测效果较为稳定。(2) 连续帧间检测稳定,我们针对每项分类单独设置置信度阈值,防止一帧检测到一帧检测不到,并且在决策时保证严格的条件再进行控制指令,避免因外界客观因素造成的误识别。(3) 小车巡线能力强,如下图,在小车行驶在交叉路口的过程中,并没有完整的车道线,但依然可以通过补线操作实现巡线,并且图像处理速度快,因此我队参赛车辆可以接近满速跑完全程,也因此我队在半决赛与决赛中均给裁判团以及观众留下了极为深刻的印象。(4) 多源数据融合提升决策效果,如以下两个例子:识别到人行道后,告知转弯方向,(例如上图,告知将要左转),帮助小车巡线七 ModelArts与HiLens联合开发感想 在人工智能发展迅速的今天,如何将人工智能算法与多学科交叉并落地实现真正的智能时代成为广大学者与研发者共同的目标。华为云平台开发的ModelArts与HiLens的联合使用给予不论是人工智能初学者还是经验丰富的工程师更为便捷高效的开发环境。本次比赛,这ModelArts与HiLens联合使用的解决方案对比赛提供了非常高质量的服务。其优点如下:(1) 数据操作包括数据上传、数据标注以及数据集的发布极为方便。(2) 算法市场中华为云以及广大开发者提供了针对各种任务,包括但不限于图像分类、目标检测、语义分割等任务的算法,使用者可以直接调参使用。(3) ModelArts支持模型部署到多种生产环境,可部署为云端在线推理和批量推理,也可以直接部署到端和边。(4) ModelArts训练的模型可以通过模型转化并协同HiLens开发相关技能,将技能直接部署到端侧设备,实现算法落地。(5) HiLens端侧设备注册后可在设备管理处进行管理,包括查看、注销设备,以及一键升级设备的固件版本等。(6) HiLens提供大量的技能模板,开发者可以基于各种模板进行技能开发与部署。(7) 昇腾芯片加速使得模型推理更加迅速,使得时延更低。 参考文献:DeVries, T.; Taylor, G. W. Improved Regularization of Convolutional Neural Networks with Cutout. arXiv:1708.04552 [cs] 2017. Zhang, H.; Cisse, M.; Dauphin, Y. N.; Lopez-Paz, D. Mixup: Beyond Empirical Risk Minimization. arXiv:1710.09412 [cs, stat] 2018. Lin, Z.; Sun, J.; Davis, A.; Snavely, N. Visual Chirality. 2020 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR) 2020, 12292–12300. https://doi.org/10.1109/CVPR42600.2020.01231. Redmon, J.; Farhadi, A. YOLOv3: An Incremental Improvement. 2018. Zheng, Z.; Wang, P.; Liu, W.; Li, J.; Ye, R.; Ren, D. Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression. arXiv:1911.08287 [cs] 2019. Yamauchi, Brian. "Frontier-based exploration using multiple robots." Proceedings of the second international conference on Autonomous agents. 1998. Lopez Perez, Jose J., et al. "Distributed multirobot exploration based on scene partitioning and frontier selection." Mathematical Problems in Engineering 2018 (2018).
-
大赛报名地址:https://competition.huaweicloud.com/information/1000041344/introduction?track=-99
-
如果节点尚未准备好AI节点,可以在LLD中不安装AI节点,安装完流水线之后,参照“安装AI应用”章节单独安装AI节点,然后部署AI应用。整柜发货整柜发货场景,FusionCube已经在产线完成预安装,安装流程如图1所示。图1 安装流程不同的Cube系列化版本,安装流程会有略微不同,安装过程中的主要的差异点如下:只有标准版包含数据平台。安装后检查过程中需要根据实际LLD规划中的存在的组件进行检查,请忽略不涉及的组件的检查。散件发货散件发货场景,各个设备单独到货后,需要手工安装硬件和软件,安装流程如图2所示。图2 安装流程不同的Cube系列化版本,安装流程会有略微不同,安装过程中的主要的差异点如下:只有标准版包含数据平台。安装后检查过程中需要根据实际LLD规划中的存在的组件进行检查,请忽略不涉及的组件的检查。
-
华为云发布盘古系列超大规模预训练模型,包括30亿参数的全球最大视觉(CV)预训练模型,以及与循环智能、鹏城实验室联合开发的千亿参数、40TB训练数据的全球最大中文语言(NLP)预训练模型。其中,盘古NLP大模型由华为云、循环智能和鹏城实验室联合开发,具备领先的语言理解和模型生成能力:在权威的中文语言理解评测基准CLUE榜单中,盘古NLP大模型在总排行榜及分类、阅读理解单项均排名第一,刷新三项榜单世界历史纪录;总排行榜得分83.046,多项子任务得分业界领先, 向人类水平(85.61)迈进了一大步。盘古NLP大模型–业界首个千亿参数中文大模型盘古NLP大模型由华为云、循环智能和鹏城实验室联合开发,具备领先的语言理解和模型生成能力:在权威的中文语言理解评测基准CLUE榜单中,盘古NLP大模型在总排行榜及分类、阅读理解单项均排名第一,刷新三项榜单世界历史纪录;总排行榜得分83.046,多项子任务得分业界领先, 向人类水平(85.61)迈进了一大步。盘古NLP大模型预训练阶段学习超40TB文本数据,并通过行业数据的小样本调优,提升模型在场景中的应用性能预训练阶段沉淀了大量的通用知识,同时既能做生成又能做理解的特性让大模型有能力支持行业知识库和数据库的嵌入,对接行业经验encoder-decoder架构基础上植入了特点训练技巧、方法,性能优异。中文权威CLUE榜单分类任务、阅读理解任务,总成绩排名第一;Rouge Score平均分0.53基于提示(prompt-based)调优、动态冰化等一系列正则化技术,实现小样本学习任务上超越GPT系列盘古CV大模型–超30亿参数业界最大CV大模型CV大模型,解决AI工程难以泛化和复制的问题。现有的AI工程需要针对不同场景做定制化开发,费时费力;盘古CV大模型的出现,使AI开发进入工业化模式,即一套流水线能够复制到不同的场景中去,大大节约研发的人力和算力。盘古CV大模型首次兼顾图像判别与生成能力,能同时满足底层图像恢复与高层语义理解需求能够简单高效融合行业知识,快速适配各种下游任务。盘古CV大模型已经在100余项实际任务中得到验证,大幅提升了业务测试精度,节约90%以上的研发成本相关文献/视频匠心故事 |“盘古”开天记,AI落地时 https://bbs.huaweicloud.com/blogs/298020“玩转”17亿个小分子,盘古大模型家族又添新成员https://bbs.huaweicloud.com/blogs/301226华为“天才少年”在研究什么?看谢凌曦揭秘千亿参数盘古大模型https://bbs.huaweicloud.com/blogs/281852 盘古大模型,开启工业化AIhttps://bbs.huaweicloud.com/live/HDZ_live/202110251500.html数据集干货下载数据集大全列表跳转链接文本分类模型--基于外卖评论数据集 https://bbs.huaweicloud.com/forum/thread-176871-1-1.html 物体检测-model-car-and-person https://bbs.huaweicloud.com/forum/thread-176870-1-1.html 钢筋检测模型 基于目标检测的方法检测钢筋的横截面 https://bbs.huaweicloud.com/forum/thread-176869-1-1.html 23种美食识别模型 图像分类模型 https://bbs.huaweicloud.com/forum/thread-176868-1-1.html 猫狗识别模型 40张图片小数据集训练的模型 https://bbs.huaweicloud.com/forum/thread-176867-1-1.html 识别昆虫, 提高农产品产量, 稳定市场价格 https://bbs.huaweicloud.com/forum/thread-176866-1-1.html 猴子物种亚类的细粒度识别 即便是对于生物学家, 分辨一种他不熟悉的物种亚类也极具挑战 https://bbs.huaweicloud.com/forum/thread-176865-1-1.html 图像分割-Fast-SCNN https://bbs.huaweicloud.com/forum/thread-176864-1-1.html DynamicRCNN-目标检测 https://bbs.huaweicloud.com/forum/thread-176863-1-1.html人脸检测-RetinaFace 支持Pytorch, GPU训练, 支持CPU,GPU推理 https://bbs.huaweicloud.com/forum/thread-176862-1-1.html文字识别-Aster https://bbs.huaweicloud.com/forum/thread-176861-1-1.html 命名实体识别-FLAT-NER https://bbs.huaweicloud.com/forum/thread-176860-1-1.html 行人姿态估计-HRNet https://bbs.huaweicloud.com/forum/thread-176859-1-1.html 指定姿态行人图像生成-XingGAN https://bbs.huaweicloud.com/forum/thread-176858-1-1.html CrowdDet (目标检测/Pytorch) https://bbs.huaweicloud.com/forum/thread-176857-1-1.html PointRend(图像分割/Pytorch) https://bbs.huaweicloud.com/forum/thread-176856-1-1.html 物体检测-CenterNet-Hourglass https://bbs.huaweicloud.com/forum/thread-176855-1-1.html Speaker change point detection-Maxout DNN-d-vector https://bbs.huaweicloud.com/forum/thread-176854-1-1.html 目标检测-TSD https://bbs.huaweicloud.com/forum/thread-176853-1-1.html GFocal loss 目标检测-Pytorch https://bbs.huaweicloud.com/forum/thread-176733-1-1.html conv-ensemble-str MM2018 https://bbs.huaweicloud.com/forum/thread-176724-1-1.html 强化学习游戏训练框架ASED https://bbs.huaweicloud.com/forum/thread-176722-1-1.html 遥感卫星影像数据集 "华为云杯"2020人工智能创新应用大赛数据集 https://bbs.huaweicloud.com/forum/thread-176720-1-1.html 街景图像语义分割数据集 华为云"云上先锋"AI挑战赛数据集 https://bbs.huaweicloud.com/forum/thread-176719-1-1.html TownCentreXVID目标跟踪数据集 数据是一个5分钟的视频 https://bbs.huaweicloud.com/forum/thread-176718-1-1.html 西安美食分类数据https://bbs.huaweicloud.com/forum/thread-176717-1-1.html 西安旅游主题图片数据集 "华为云杯"2019人工智能创新应用大赛数据集 https://bbs.huaweicloud.com/forum/thread-176715-1-1.html 机械硬盘故障预测数据集 来自backblaze公司的2020年机械硬盘故障预测数据集 https://bbs.huaweicloud.com/forum/thread-176712-1-1.html VOC2012子集--适用于图像分割算法训练 https://bbs.huaweicloud.com/forum/thread-176708-1-1.html Protein MSA数据库 https://bbs.huaweicloud.com/forum/thread-176706-1-1.html Cityscapes Dataset https://bbs.huaweicloud.com/forum/thread-176704-1-1.html 钢筋检测数据集 250张,PASCAL标注格式 https://bbs.huaweicloud.com/forum/thread-176702-1-1.html ECS-50(声音分类)数据集 https://bbs.huaweicloud.com/forum/thread-176701-1-1.html 四类美食图片分类小数据集 图片总数40张 https://bbs.huaweicloud.com/forum/thread-176700-1-1.html 中文语句情感分类(manifest) https://bbs.huaweicloud.com/forum/thread-176699-1-1.html COCO2017子集--适用于目标检测算法训练 https://bbs.huaweicloud.com/forum/thread-176695-1-1.html 二分类猫狗图片分类小数据集 图片总数40张 https://bbs.huaweicloud.com/forum/thread-176693-1-1.html 10类常见美食图片数据集 https://bbs.huaweicloud.com/forum/thread-176692-1-1.html 化合物-蛋白质相互作用(CPI)识别数据集 "华为云杯"2021人工智能创新应用大赛创客https://bbs.huaweicloud.com/forum/thread-176690-1-1.html 8类常见生活**图片数据集 https://bbs.huaweicloud.com/forum/thread-176689-1-1.html 口罩检测小数据集 总共291张图,PASCAL标注格式 https://bbs.huaweicloud.com/forum/thread-176688-1-1.html 爱(AI)美食--10类常见美食图片数据集 https://bbs.huaweicloud.com/forum/thread-176687-1-1.html 文本分类数据集--外卖评论 https://bbs.huaweicloud.com/forum/thread-176685-1-1.html 四类花卉图像分类小数据集 图片总数40张 https://bbs.huaweicloud.com/forum/thread-176683-1-1.html pedestrian_detection_334 已标注的多场景下的行人检测数据集,用于目标检测,334张https://bbs.huaweicloud.com/forum/thread-176682-1-1.html 红绿灯、斑马线、限速、解限速数据集 无人车挑战杯大赛训练集 https://bbs.huaweicloud.com/forum/thread-176681-1-1.html dataset-car-and-person-500 已标注的街道场景中的车辆和路人数据集,目标检测https://bbs.huaweicloud.com/forum/thread-176680-1-1.html “华为云杯”2020人工智能创新应用大赛(数据集来源于北京二号卫星) https://bbs.huaweicloud.com/forum/thread-176679-1-1.html 爱(AI)美食-美食图片分类Baseline https://bbs.huaweicloud.com/forum/thread-176676-1-1.html 第十六届中国研究生数学建模竞赛-华为赛题 https://bbs.huaweicloud.com/forum/thread-176672-1-1.html 【“华为云杯”2019人工智能创新应用大赛 — 训练数据】 https://bbs.huaweicloud.com/forum/thread-176671-1-1.html 【2019华为云人工智能大赛·**分类挑战杯】训练集、测试集 https://bbs.huaweicloud.com/forum/thread-176668-1-1.html
-
2021年6月2日晚上19:00 举办了华为云AI论文精读会2021 第六期:知识蒸馏模型TinyBert解读分享嘉宾是来自西北工业大学的李朝阳~ 领域属于MindSpore,不了解MindSpore的小伙伴还不快来听分享~华为云AI论文精读会致力于让更多人低门槛使用经典算法,助力AI开发者基于ModelArts,实现高效率论文复现和挑战!观看地址:https://bbs.huaweicloud.com/live/cloud_live/202106021900.html
-
2021年5月24日举办了华为云AI论文精读会2021 第五期:基于迁移学习的语义分割算法分享嘉宾是来自电子科技大学的刘亚豪~论文领域是迁移学习领域哦~来不及等待!感兴趣的小伙伴快点击下方链接!观看地址:https://res-static.hc-cdn.cn/cloudbu-site/china/zh-cn/competition/1621818551519065248.mp4
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签