赛题描述
本质其实就是基本的语义分割问题。
基本目的
熟悉比赛流程;
以前就知道mask rcnn, 这次主要是为了更进一步了解语义分割;
后续会熟悉一下阿里的DSW,不会白嫖的参赛者不是好码农;
提升一下技能点,增加提分要点秘诀和代码实践能力;
基本元素
- baseline参照阿水大佬提供的FCN改动版本:
使用pytorch官方的语义分割模型fcn_resnet50
,并且修改最后的classifier
,添加自定义的loss函数
.感觉改的还是挺精妙的。而且添加了tqdm,让训练过程有了一个逐步完成的过程,要比print数据更有意思。
- 数据下载
FileName | Size | Link |
---|---|---|
test_a.zip | 314.49MB | http://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.csv | 46.39KB | http://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.zip | 3.68GB | http://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.zip | 97.52MB | http://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