零基础入门语义分割-地表建筑物识别参赛记录(一)

赛题描述

在这里插入图片描述

本质其实就是基本的语义分割问题。

基本目的

熟悉比赛流程;
以前就知道mask rcnn, 这次主要是为了更进一步了解语义分割;
后续会熟悉一下阿里的DSW,不会白嫖的参赛者不是好码农;
提升一下技能点,增加提分要点秘诀和代码实践能力;

基本元素

使用pytorch官方的语义分割模型fcn_resnet50,并且修改最后的classifier,添加自定义的loss函数.感觉改的还是挺精妙的。而且添加了tqdm,让训练过程有了一个逐步完成的过程,要比print数据更有意思。

  • 数据下载
FileNameSizeLink
test_a.zip314.49MBhttp://tianchi-competition.oss-cn-hangzhou.aliyuncs.com/531872/%E5%9C%B0%E8%A1%A8%E5%BB%BA%E7%AD%91%E7%89%A9%E8%AF%86%E5%88%AB/test_a.zip
test_a_samplesubmit.csv46.39KBhttp://tianchi-competition.oss-cn-hangzhou.aliyuncs.com/531872/%E5%9C%B0%E8%A1%A8%E5%BB%BA%E7%AD%91%E7%89%A9%E8%AF%86%E5%88%AB/test_a_samplesubmit.csv
train.zip3.68GBhttp://tianchi-competition.oss-cn-hangzhou.aliyuncs.com/531872/%E5%9C%B0%E8%A1%A8%E5%BB%BA%E7%AD%91%E7%89%A9%E8%AF%86%E5%88%AB/train.zip
train_mask.csv.zip97.52MBhttp://tianchi-competition.oss-cn-hangzhou.aliyuncs.com/531872/%E5%9C%B0%E8%A1%A8%E5%BB%BA%E7%AD%91%E7%89%A9%E8%AF%86%E5%88%AB/train_mask.csv.zip
  • 预训练模型与安装包

(1)预训练模型下载的是fcn_resnet50,参见 下载链接

model_urls = {
    'fcn_resnet50_coco': 'https://download.pytorch.org/models/fcn_resnet50_coco-1167a1af.pth',
    'fcn_resnet101_coco': 'https://download.pytorch.org/models/fcn_resnet101_coco-7ecb50ca.pth'
}

手动下载后,放到 C:\Users\xxx_username\.cache\torch\hub\checkpoints 即可
(2)主要是数据增强模块 albumentations 等,这个后面要好好看一下

运行过程

主要是距离打卡deadline大概只有4个小时时间,所以主要是在本地构建,上传csv。

  • nvidia-gtx1060 ,
  • 12g内存,
  • win10
  • pytorch 1.6 python3.6

(1)根据我对于pytorch模型的了解,其实输入任意尺寸的图片都是可以正常处理的。因为在输出的时候有做AdaptiveMaxPool2d,所以最终的尺寸一定会在fc layer之前匹配到最后的输出的feature map的尺寸要求。这个也是pytorch模型没有像keras那样要求input shape是个固定值的原因。当然最好是在dataload的时候固定尺寸大小,而且这个大小最好能和模型的标准尺寸对应。因为后续要做T.Normalize,这个值大概率是通过kmeans统计出来的,以便于加速同一批次固定尺寸图片快速收敛。
(2)考虑到图片过大,在cpu上的占用资源过大,我选择将img size = 128, batchsize=8,。
训练一次大致是25分钟,选择epoch=5,大致是训练2个半小时。
(3)在jupyter notebook上训练,但是出现一些问题并解决:

“ImportError: FloatProgress not found. Please update
jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html”

这是因为jupyter或者ipywidgets没安装或者没关联造成

解决方案:

1,卸载jupyter:pip uninstall jupyter

2,安装jupyter:pip install jupyter

3,安装ipywidgets:pip install ipywidgets

4,关联:jupyter nbextension enable --py widgetsnbextension

运行结果

在这里插入图片描述

后续提升

在这里插入图片描述

REF

参赛链接
baseline讲解过程
天池实验室DSW新手使用手册

天池赛事的零基础入门语义分割-地表建筑物识别任务是一个面向初学者的语义分割竞赛。任务的目标是利用机器学习和计算机视觉技术,对卫星图像中的地表建筑物进行标记和识别。 在这个任务中,参赛者需要使用给定的训练数据集进行模型的训练和优化。训练数据集包含了一系列卫星图像和相应的像素级标注,标注了地表建筑物的位置。参赛者需要通过分析训练数据集中的图像和标注信息,来构建一个能够准确地识别地表建筑物的模型。 参赛者需要注意的是,语义分割是指将图像中的每个像素进行分类,使得同一类别的像素具有相同的标签。因此,在地表建筑物识别任务中,参赛者需要将地表建筑物区域与其他区域进行区分,并正确地进行标记。这对于初学者来说可能是一个挑战,因此需要掌握基本的图像处理和机器学习知识。 参赛者可以根据自己的理解,选择合适的算法和模型来完成这个任务。常见的方法包括卷积神经网络(CNN),通过设计适当的网络结构和训练方式,提高模型的准确性和泛化能力。同时,数据预处理和数据增强技术也是提高模型性能的关键。参赛者可以通过对数据进行增强和扩充,提高模型的鲁棒性和识别能力。 最后,参赛者需要使用训练好的模型对测试数据集进行预测,并生成预测结果。这些预测结果将用于评估参赛者模型的性能和准确度。评估指标通常包括像素级准确度(Pixel Accuracy)和平均交并比(Mean Intersection over Union),参赛者需要根据这些指标来评估和改进自己的模型。 总之,通过参加这个任务,初学者可以通过实践和挑战来提高自己的图像处理和机器学习技能,并掌握语义分割的基本概念和方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI扩展坞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值