/competition/entrance/531872/introduction
【天池赛事】零基础入门语义分割-地表建筑物识别:第一章 赛题及baseline
1 赛题背景2 任务安排3 赛制说明4 赛题数据CV实践-语义分割|问题汇总1 赛题背景
本次新人赛是 Datawhale 与天池联合发起的[零基础入门系列赛事——零基础入门语义分割之地表建筑物识别]。
赛题以计算机视觉为背景,要求选手使用给定的航拍图像训练模型并完成地表建筑物识别任务。为更好的引导大家入门,我们为本赛题定制了学习方案和学习任务,具体包括语义分割的模型和具体的应用案例。在具体任务中我们将讲解具体工具和使用和完成任务的过程。
通过对本方案的完整学习,可以帮助掌握语义分割基本技能。同时我们也将提供专属的视频直播学习通道。
2 任务安排
Task1:赛题理解与 baseline(3 天)
– 学习主题:理解赛题内容解题流程
– 学习内容:赛题理解、数据读取、比赛 baseline 构建
– 学习成果:比赛 baseline 提交
Task2:数据扩增方法(3 天)
– 学习主题:语义分割任务中数据扩增方法
– 学习内容:掌握语义分割任务中数据扩增方法的细节和使用
– 学习成果:数据扩增方法的实践
Task3:网络模型结构发展(3 天)
– 学习主题:掌握语义分割模型的发展脉络
– 学习内容: FCN、 Unet、 DeepLab、 SegNet、 PSPNet
– 学习成果:多种网络模型的搭建
Task4:评价函数与损失函数(3 天)
– 学习主题:语义分割模型各种评价函数与损失函数
– 学习内容: Dice、 IoU、 BCE、 Focal Loss、 Lovász-Softmax
– 学习成果:评价/损失函数的实践
Task5:模型训练与验证(3 天)
– 学习主题:数据划分方法
– 学习内容:三种数据划分方法、模型调参过程
– 学习成果:数据划分具体操作
Task6:分割模型模型集成(3 天)
– 学习主题:语义分割模型集成方法
– 学习内容: LookaHead、 SnapShot、 SWA、 TTA
– 学习成果:模型集成思路
3 赛制说明
本次赛事分为两个阶段,分别为正式赛及长期赛。
正式赛赛制选手报名成功后,选手下载数据,可以本地或天池 PAI 平台完成模型训练,并在测试集上进行提交。
在正式赛后,本场比赛将长期开放,报名和参赛无时间限制。每天每位参赛选手可提交 3 次完成初赛打分;排行榜每小时更新,按照评测指标得分从高到低排序;排行榜将选择历史最优成绩进行展示。
4 赛题数据
数据说明
赛题数据来源(Inria Aerial Image Labeling),并进行拆分处理。数据集报名后可见并可下载。赛题数据为航拍图,需要参赛选手识别图片中的地表建筑具体像素位置。
评价函数
赛题使用Dice coefficient来衡量选手结果与真实标签的差异性,Dice coefficient可以按像素差异性来比较结果的差异性。Dice coefficient的具体计算方式如下:
2∗∣X∩Y∣∣X∣+∣Y∣{{2*|X\cap Y|}\over {|X|+|Y|}} ∣X∣+∣Y∣2∗∣X∩Y∣
其中X是预测结果,Y为真实标签的结果。当X与Y完全相同时Dice coefficient为1,排行榜使用所有测试集图片的平均Dice coefficient来衡量,分数值越大越好。
CV实践-语义分割|问题汇总
Q:赛题数据如何下载
A:下载SS_Data_A_0201.md
,该文件内有数据的下载链接,见下表:
Q:使用预训练模型出现显存溢出问题
A:1. 减小模型训练的Batch Size;2. 更换硬件条件【建议:先随机从训练集中抽取一些数据跑通Baseline】。
Q: Baseline中Transform.Normalize里的参数是官方建议的标准化参数吗?
A:使用预训练的模型时,输入数据要与预训练的数据做同样的处理,即保持类似的分布,不同框架以及不同预训练模型的参数不同,以Pytorch为例,可参考文档:/Cadene/pretrained-models.pytorch。
Q:如何安装GDAL、rasterio、tqdm等库?
A:在jupyter notebook中使用!pip install some_package --user
或者在terminal中使用pip install some_package --user
命令。
注:
GDAL和rasterio建议使用whl来安装,下载地址为:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pip;
albumentations有三种安装方式,推荐使用conda:
pip install albumentations
pip install -U git+/albu/albumentations
conda install -c conda-forge imgaug
conda install albumentations -c albumentations
Opencv(cv2)安装命令:
python -m pip install opencv-python
Q:关于天池的常见问题,如数据挂载、第三方库安装、DSW操作等
A:请参考天池的新手文档:/forum/postDetail?spm=TODO.TODO.header.2.21864825A5pdfB&postId=121050。
Q:代码运行有问题,或者环境配置完后但使用不了第三方库
A:1. 重启Kernel或者Python服务;2.若涉及到路径,请查看路径是否包含中文【虽然Python3对中文编码进行了处理,但最好还是优先使用英文:)】;3. 重新创建新的虚拟环境,重新配置第三库【防止原始环境的第三方库版本不适合】。
Q:天池存储空间达到上限【免费空间为5G】,无法安装库或者解压数据等操作
A:1.若条件允许,优先使用本地计算机操作;2.若本地条件不允许,可使用Kaggle或Colab;3.适合薅羊毛的平台:/account/【赠送8元点券,每邀请一个好友赠送8元】和/auth/register?user=18630188817&fromId=a3f006115d4&source=link【注册后有100元的注册券,可以免费用20+小时,邀请一个好友送50】
Q:赛题内容以及Baseline的讲解直播如何观看?
A:直播已经结束,录播请关注Datawhale的b站,地址为:/431850986?from=search&seid=724423084384707923
Q:代码output = model(image)['out']
中的['out']
能不能删除
A:不能,Baseline中的FCN模型有两个输出,只取out部分。
Q:image, mask = dataset[0]
,读取不了图片,image返回NoneType类型
A:1. 天池解压可能导致文件损坏;2. 查看文件路径是否正确。
Q:如何切换相应环境的Kernel?
A:分以下两步:
conda install ipykernel #安装插件
python -m ipykernel install --name Name #将环境添加到Jyputer中(Name是此环境显示在Jyputer中的名称,可自定义)```
Q:数据扩充那里有一个resize成256*256有什么特殊作用吗?
A:在FCN中对数据输入的尺寸没有要求,所以该大小可以自由调整,但是要对分辨率和占用空间做个权衡。
Q:几个提升模型精度的思路
A:1. 使用更强的数据增强方法;2. 模型调参,如学习率、图像尺寸等;3. 调整优化算法、损失函数,考虑正则方法;4 . 更换更强模型,如UNet、DeepLab等;5. 考虑集成方法;6. ……
注:
注意样本的分配,绘制学习曲线,基于模型的学习效果(是否过拟合、欠拟合)来确定合适的优化策略;具体请参考本次学习的pdf教程以及Datawhale往期的学习~
Q:如何加载本地模型参数?
A:两种方法:
# 先初始化模型,再读取模型参数(适用于文件只保存了参数)model = TheModelClass(*args, **kwargs)model.load_state_dict(torch.load(PATH, map_location=device)) #map_location为切换设备
# 直接读取模型(适用于文件既保存了模型结构以及参数)model = torch.load(PATH, map_location=device)
Q:模型预训练参数文件下载慢
A:可使用镜像:https://coggle.club/note/dl/pretrained-models
Q:rle编码shape要求必须是512么?若将编码参数shape改为128会导致识别率骤降么?
A:1. shape不是必须为512的,但是编码前和解码后的图像尺寸要一样(本题图像数据的尺寸为512*512,所以该参数设为512);2.rle只是编码,不是降维,如果直接改shape,就相当于编码内容错误,所得信息不是图像的正确表达,自然识别率会骤降。所以在本题中,先编码成512,之后随便缩放。
如果觉得《【天池赛事】零基础入门语义分割-地表建筑物识别》对你有帮助,请点赞、收藏,并留下你的观点哦!