-
比赛地址:https://competition.huaweicloud.com/information/1000029609/introduction?track=111黑客松比赛2020春季赛第一题解题交流用单线纸画了一个3比特QRC的线路,作为第一题的思路分享,抛砖引玉了!这个思路实现N比特QRC需要N个辅助比特,|t>,|w0>,|w1>,...|w_{n-1}>,其中|t>作临时工作比特用,随用随恢复,而|wi>用来表示从高位起第i位以后(从第0位算起),是否还需要比较,当|wi> = |1>时后续比较有效,用Toffoli门实现控制。三比特情况的线路图如下,其中|w2>不是必需的,仅用来示意,它可以方便的拓展到更多比特的情形。原文:https://bbs.huaweicloud.com/forum/thread-51801-1-1.html
-
比赛简介共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多分钟。
-
说明:为了让大家辛苦分享的内容不被埋没,可以被看到,已经把所有选手分享的内容都汇总到本帖,也请大家看到优秀内容给分享者一些鼓励,多多评论点赞哦~比赛链接:https://competition.huaweicloud.com/information/1000037176/introduction内容汇总如下视频分享帖:1.华为云DevCloud软件编程大赛—优秀选手作品展播2.华为云DevCloud软件编程大赛 直播答疑会 视频录播3.5月7日直播录播4.txt文档和pygame实现每日pk地图本机跑5.赛道一:思路及经验分享,希望对大家有所帮助!!(来自有幸被选中优秀选手视频展播的小白)6.赛道一思路分享(一等奖)7.【华为云DEVCLOUD软件编程大赛赛道一】参赛视频分享及初级代码讲述、心得体会心得、算法思路类分享帖:1.口罩大作战(赛道一)二等奖解题思路分享2.最后一天的十次机会也用完了,来说说感受3.关于口罩大作战赛道一(C++)的记录和总结——White-Loub4.赛道一小结(C++)_本次竞赛算法思路与部分具体实现代码以及学习c++的资源链接和计算机速成课视频链接5.口罩大作战(赛道一)python思路以及代码分享6.赛道一解题思路分享7.赛道一:思路及经验分享,希望对大家有所帮助!!(来自有幸被选中优秀选手视频展播的小白)8.【华为云DEVCLOUD软件编程大赛赛道一】参赛视频分享及初级代码讲述、心得体会9.赛道一思路分享(一等奖)10.口罩大作战(赛道一)陪跑经历和算法思路代码(C++)分享11.【华为云DEVCLOUD软件编程大赛赛道一】参赛视频分享及初级代码讲述、心得体会12.口罩大作战(赛道一)算法思路分享(三等奖)16.赛道一 综合排名第六 算法小白思路分享(三等奖)代码分享帖:1.口罩大作战(赛道一)二等奖解题思路分享2.赛道一口罩配送大作战代码分享3.关于口罩大作战赛道一(C++)的记录和总结——White-Loub4.txt文档和pygame实现每日pk地图本机跑5.赛道一python地图绘制分享6.赛道一python分享7.大赛塞到一代码。献丑了。8.口罩大作战(赛道一)python思路以及代码分享9.赛道一解题思路分享10.赛道一:思路及经验分享,希望对大家有所帮助!!(来自有幸被选中优秀选手视频展播的小白)11.【华为云DEVCLOUD软件编程大赛赛道一】参赛视频分享及初级代码讲述、心得体会12.口罩大作战(赛道一)陪跑经历和算法思路代码(C++)分享13.【华为云DEVCLOUD软件编程大赛赛道一】参赛视频分享及初级代码讲述、心得体会14.【赛道一代码分享】 可以完成 但效果不好测试工具分享:1.官方测试工具2.赛道一,基于官方测试程序改的随机地图生成,自动测试1000幅(可自己更改测试数目),适用于配送结束未配送完的同学其他:华为云DevCloud软件编程大赛常见问题华为云DevCloud软件编程大赛——选手问题收集帖
-
赛事介绍 美食数据包含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比赛总结这次的比赛对我来说收获挺大的,有些东西真是在学校里边体会不到的,还得多实践,同时也认识到了不同地区的小伙伴,寒假快要结束了,又是新的学期啊,可能只有短短一个多月?我们都加油,祝大家始终保持心里有火,眼里有光的状态!
-
一、周周星分享——什么都做不队大家好,我们是“什么都做不队”团队,很荣幸获得了本次的周周星。下面是本次的分享:1. 复赛的数据是更加复杂,我们在尝试的时候发现去重这个操作对数据的影响还是挺大的,针对不同的特征进行去重操作后 对最后的得分影响非常高,关于这一点我们初步认为大量塞港数据或者疫情影响数据导致。比如在测试集中LR运单号,我们尝试在匹配相似路径,最后发现部分属于2020的相似路径大部分出现一个情况: 到港口前开始停顿不动。 这可能是疫情原因导致的 也可能是塞港行为。我们认为上分的关键就是来处理这种异常运单号(可能会过拟合测试集)2. 特征选择:大家可以考虑使用少量特征,这个复赛数据有一个问题就是把初赛中某些强特带入能反向上分,可以尽量使用一些泛化能力强的特征。3. 模型方面 调参对模型的影响还是很大的,可以进一步参数通过调参上分。4. 接下来我们尝试去使用xgboost,ctb等其他模型看看是否会有提升效果,模型应该还是需要多多尝试。以上就是我们团队的分享 最后祝大家上分!二、周周星分享——智能集美大家好,我们是“智能集美”团队。首先感谢前几周的周周星的分享,下面是我们的一些思路心得。 1、数据清洗 A榜还有一周就要结束了,数据清洗的重要性我想大家都也明白。 初赛洗数据的方法已经不完全适用,所以我们除了保留了初赛部分简单的洗数据方法(如去除速度方向异常的gps记录),更多的采用的是画图找异常运单号的方式。通过先将各个运单号的航线画出来,找到可能为异常数据的运单号,再通提取这些异常数据的运单号数据,通过观察数据来判断是否进行删除。(在观察航线图的时候,还可以通过观察同一路由的其它运单号进行横向比对) 2、特征工程 特征工程是一个比较玄学的东西,大家可以尝试增删特征,找对比较合适的特征搭配。(我也在找…) 3、模型选择 LGB,永远滴神。参数还是有一定的影响的,在实在没有其它思路的时候可以考虑调参。 4、塞港问题 塞港显然是一个对结果影响很大的因素,但我们目前也没有什么很好的解决方案,毕竟有的船才刚刚走了百分之十到二十的路程,实在不知道怎么判断它有没有塞港。 我们接下来会特别关注一下经常塞港的路由,试图寻找到一些规律,同时我们接下来还会考虑疫情对于航线的影响,最后祝大家都能够取得好成绩。三、周周星分享--突然Ping通大家好,我们是“突然Ping通”团队,很高兴获得本次比赛的最后一周周周星,首先感谢前两周周周星的分享,让我们也有机会获得周周星。简要分享一下我们的思路:1、我们数据处理方式和初赛差不多,不过在初赛的基础上加了一步处理塞港状态的代码,根据之前官方人员提示经纬度在误差0.25之内可算到港,距离大概在30-40千米左右,所以我们对一些塞港的和到港又开走的数据进行了截断,就我们的方案在本地而言清洗完这类数据效果更好。由于测试集存在一些“离谱”的数据,比如FA订单,这些数据模型不能预测,所以我们对这类订单进行了后处理。2、特征工程一开始使用初赛的方案,但是效果不好,删除几个强特反而能够上分,所以大家可以尝试用少量特征调试。3、看到上周有周周星分享调参能上分,我们这周也用调参工具尝试调参,确实能上不少分,所以大家也可以尝试换换祖传参数,上一波分。大赛赛题:https://competition.huaweicloud.com/information/1000037843/introduction
-
一、周周星分享——无能的万金油大家好,我们是“无能的万金油”团队,很荣幸获得了本次的周周星。下面是我们对于复赛数据的部分理解和思路:1、比赛进行到这里,对于训练集和测试集的清洗就不说什么了,大家也意识到其实上分是一件越来越玄学的事情,在初赛表现好的模型,复赛却不一定好原因也很简单,每条路径的不确定影响因素太多了。。 天气、疫情、塞港等突发事件,导致运船并不会按正常路线行驶,同时又由于人为录入的原因,路由信息也并不完全准确,有的船只的实际停靠港口也不一致。在就是test是截断的数据,就更导致trace可能写的 A-B-C 但实际是 A-C 甚至 A-C-D, 而你拿到的只有C-D或者,-C的部分数据,这就更加大了预测难度。2、针对上面的情况,我们其实能够知道,做的特征并不一定越全越好,而且有时候也不一定(强特)就好,因为强特代表训练集的平均特征,但是拿到的数据其实分布是各种各样的。反而“弱”一点的特征,少部分特征的泛化能力特强。3、对于A榜,我觉得没必要太纠结分数,因为数据分布太不一致了,更多的应该表现在模型的泛化能力上,测试下各个特征组合预测的时间分布特点,不然B榜很容易翻车。4、最后说下数据训练,找相似路由匹配的思路是个方向,但是这方面要细化才可能达到好的效果,需要一点点测试。5、如果单纯追求分数的话,完全可以采用探榜的方式,我们其实很大一部分也是探榜提升来的,但是说实话对B榜预测没有实际意义,最多用来做验证,所以后期不会再采取这样的尝试。大赛赛题:https://competition.huaweicloud.com/information/1000037843/introduction
-
一、周周星分享——练习生团队大家好,我们是“练习生”团队,很荣幸获得了本次的周周星。下面是我们对于复赛数据的部分理解和思路:1、与初赛稍微对数据进行清洗,分数就能得到显著提升不同,复赛对于数据进行清洗产生的效益似乎并不太高,我认为如果初赛已经获得了一个相对较好的成绩,那么说明原先的数据清洗是有一定道理的,可能部分需要进行微调,但是没有必要完全重构。2、对于清洗数据收益甚微的情况,大家可以考虑一下特征的搭配,或许不使用全部特征,也能够获得较大收益。3、模型依然还是LGB模型,并没有什么特别4、对测试集的清洗也是一个关键点,分数上限不高,大部分也和测试集数据有关,目前我们做的只是简单的去重,进行操作的时候,要关注测试集的订单号总数是否发生变化。5、之后我们可能会尝试构造一些新的特征如时间特征、起始点终点的国家、城市等。以上是我们的分享,希望能和大家一起交流进步,祝大家取得好成绩。二、周周星分享—e402冲冲冲大家好,我们是“e402冲冲冲”团队,很荣幸获得了复赛第一周的周周星。下面分享一下我们对于复赛数据的一些理解和思路:1. 由于是复赛的第一周,我们主要是对数据集进行了清洗工作,清洗思路和初赛一样,包括:去掉direction为-1的记录,去重(去除loadingOrder, carrierName, timestamp和vesselMMSI相同的记录),去除路径中两点之间距离过大的的订单,出发港与目的港是否和路径匹配等。 2. 我们的主要思路也是相似轨迹的方法,这里我们采取了聚类的方法(感谢初赛周周星大佬的思路),从训练集中提取和测试集相似的轨迹进行训练,但是测试集中有很多轨迹是在训练集当中找不到的,这个就要自己处理。 3. 目前使用的还是LGB模型,特征也主要是一些统计特征。其实我们的方法也比较常规,相似轨迹的方法大家都有讨论,初赛也有很多团队使用,但是里面的一些细节例如测试集中找不到的轨迹就需要仔细思考。目前复赛第一周我们的主要工作也还是数据清洗,仍然处于探索阶段。希望能和大家一起交流进步,祝大家取得好成绩。 大赛赛题:https://competition.huaweicloud.com/information/1000037843/introduction
-
开发者大赛AppCube低代码开发竞赛已圆满落幕!其中的一些参赛选手在现场和评委专家做了深入交流,给我们做了一些参赛分享。下文来自本次大赛银奖得主:重庆协盟装饰工程有限公司分享人:何平获奖作品:协盟管理数字化分享内容:重庆协盟装饰工程有限公司,作为一家专业从事建筑装修装饰的工程企业,我们这次参赛的作品是“协盟管理**”。 作为装饰企业的我们,虽然身上吃土,但心怀科技。同时也希望引入优秀的管理方法和先进的管理工具来提升自身的管理水平和管理效率,从而推动企业和行业的进步和发展。 但理想和现实总是有着巨大的差距,理想再美好,也解决不了我们作为传统企业缺乏专业开发人员和相应的技术沉淀的事实。但幸运的时,华为AppCube低代码平台的出现,替我们弥补了短板,让我们的理想有了变成现实的可能。所以这次本着“输出倒逼输入”的心态,报名参加了2020年华为秋季开发者大赛的AppCube赛道的比赛。可能因为我们是AppCube的典型客户,也可能因为我们不是从技术而是从企业经营的角度来参与比赛和显现作品,并且要应用AppCube来打造我们企业的数字化管理系统的决心打动了评委,我们在这次比赛中幸运地获得了银奖。 重庆协盟装饰工程有限公司成立于2017年,公司服务范围涉及重庆、成都、昆明、贵阳和广西等西南地区。公司年度产值从2017年的1000万,到2018的1个亿,再到2019年的2.6个亿,可以说前三年都是高速发展。 但在2020年的今年,我们下调了产值目标,不是因为疫情,而是因为我们之前推动我们成功的方法已经无法再适应公司的下一阶段的增长和发展。 公司之前之所以发展这么快,是因为引入了类阿米巴式的项目合伙制,让所有的项目管理人员都可分享项目利润,这充分调动了每个管理人员的积极性。但这种诸侯割据的片区管理自治模式,也导致每个片区一套打法,管理一度混乱,使公司经营的无效成本不断攀升。 但我们的老板呢,又是一个非常反感命令式管理的人,不希望通过人盯人的方式进行管理,认为那是一种退步,还是愿意充分的相信人,授权人。 为了解决在片区自治的基础上解决我们的管理问题,公司管理团队经过反思和思考,并通过咨询公司的帮助,最终决定通过引入OKR和PDCA等管理方法,以及游戏化的自驱动管理思想来推动我们的管理改革,并通过用数字化管理系统的形式来进行显现和实施,进而实现“打造协盟管理**,用数据驱动公司业务增长”的目的。 在路演现场充分表达了我们的想法和决心后,我们得到了各位评委充分认可和回应。特别是我们作为唯一一名传统企业的参赛选手的身份,更是让大家深感意外,说我们是传统行业里最具创新精神的企业。 华为专家的充分认可和AppCube的技术支撑能力,极大地给了我们打造好管理**的信心,我们也相信在华为的帮助下,我们离这个目标只会越来越近。 我们希望通过“AppCube平台”作为桥梁,建设“协盟管理**”为契机,与华为建立深度的合作伙伴关系。用我们的行业管理经验和华为的数字化能力,向“智慧工地”这一纵深市场进行开拓和发展,为公司的建立第二曲线,与华为协手共进,科技新生。
上滑加载中
推荐直播
-
华为云码道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华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签