中秋节的广西甘蔗——智蔗见智·向新而生

时间:2022-12-13 20:00:24


中秋节的时候我们理论上应该放假,但是放假、什么是放假?咱们程序员需要放假?不可能的。所以利用假期时间搞定广西万顷甘蔗地的图像分析还是会有很大的成就感的。


目录

​​训练资源地址​​

​​obs环境准备​​

​​运行-共计运行差不多50s​​

​​baseline复现​​

​​训练方式​​

​​baseline演示​​

​​训练集和验证集的划分​​

​​编辑开始训练​​


训练资源地址

接下来我们使用华为云的平台来处理甘蔗地图片。

可以在华为云中下载获取,这里得通过桶进行保存:​​AI Gallery_数据详情_开发者_华为云​

训练集数据压缩包解压后是一系列png格式图片,​*_img.png​​表示遥感图像,与其同名且后缀为​_mask.png​的图像为对应的label图像。

中秋节的广西甘蔗——智蔗见智·向新而生

中秋节的广西甘蔗——智蔗见智·向新而生

obs环境准备

先登录到存储服务

​https://storage.huaweicloud.com/obs/?locale=zh-cn&region=cn-north-4​

中秋节的广西甘蔗——智蔗见智·向新而生

我这有现成的桶我就不再创建了。

中秋节的广西甘蔗——智蔗见智·向新而生

没有的需要自己创建一下。

中秋节的广西甘蔗——智蔗见智·向新而生

进入桶:

中秋节的广西甘蔗——智蔗见智·向新而生

进入:

​https://console.huaweicloud.com/modelarts/?region=cn-north-4#/dashboard​

咱们需要使用CodeLab

中秋节的广西甘蔗——智蔗见智·向新而生

有72小时免费示例,初始化的时候需要等待一会。我9点52开始初始化的。

中秋节的广西甘蔗——智蔗见智·向新而生

大概1分多钟完成的。

中秋节的广西甘蔗——智蔗见智·向新而生

这里咱们选择C【Conda-python3】

中秋节的广西甘蔗——智蔗见智·向新而生

进入编码阶段了。示例的桶是我的链接。具体看需求使用啊,从哪里复制到哪里。这里先有个说明,咱们接下来看baseline复现。

import moxing as mox

# 拷贝obs数据到notebook环境中
mox.file.copy('obs://mytestbosqwe8403000/data/train.zip', './train.zip')
# 拷贝notebook环境中数据到obs
mox.file.copy('./train.zip', 'obs://mytestbosqwe8403000/data/train.zip')

!unzip train.zip &> /dev/null
# copy_parallel用于copy文件夹
mox.file.copy_parallel('./train', 'obs://mytestbosqwe8403000/data/train/')

baseline复现

通过在modelarts中notebook中编写代码获取(注意这里路径没有换行)

obs地址为​obs://ma-competitions-bj4/guangxi_remote_sense_segmentation/code/​,可以通过在notebook中新建如下代码将baseline的代码copy到你的环境下。

import moxing as mox
mox.file.copy_parallel('obs://ma-competitions-bj4/guangxi_remote_sense_segmentation/code/', 'obs://mytestbosqwe8403000/data/baseline/')

拿到baseline的代码后,可以看到四个文件夹,一共有两个baseline code及其对应的推理代码。对应解释如下

中秋节的广西甘蔗——智蔗见智·向新而生

也可以直接复制到代码区

import moxing as mox
mox.file.copy_parallel('obs://mytestbosqwe8403000/data/baseline/', './baseline')

中秋节的广西甘蔗——智蔗见智·向新而生

层级介绍 

|-- inference-for-mmseg           (推理代码)mmsegmentation 适配 ModelArts 中AI应用的演示代码
|-- model
| `-- README.md 演示代码说明文件
| `-- otherfiles...
|-- inference-for-pl (推理代码)pytorch-lightning-unet 适配 ModelArts 中AI应用的演示代码
|-- model
| `-- README.md 演示代码说明文件
| `-- otherfiles...
|-- mmsegmentation mmsegmentation适配于比赛数据的修改版本
| `-- README.md 安装说明和convnext-upernet相关训练指令说明
| `-- otherfiles...
|-- pytorch-lightning-unet 基于pytorch-lightning的unet实现
| `-- README.md 安装说明和unet相关训练指令说明
`-- otherfiles...

其中【/baseline/pytorch-lightning-unet/README.md】是说明文档

中秋节的广西甘蔗——智蔗见智·向新而生

训练方式

​https://console.huaweicloud.com/modelarts/?region=cn-north-4#/dev-container/create​

直接如下图选择并创建,有券免费。

中秋节的广西甘蔗——智蔗见智·向新而生

创建需要等一会,完成之后点击【打开】 

中秋节的广西甘蔗——智蔗见智·向新而生

主要使用文件类型 

中秋节的广西甘蔗——智蔗见智·向新而生

复制baseline

import moxing as mox
mox.file.copy_parallel('obs://ma-competitions-bj4/guangxi_remote_sense_segmentation/code/', './baseline')

复制train

mox.file.copy_parallel('obs://mytestbosqwe8403000/data/train.zip', './train.zip')

中秋节的广西甘蔗——智蔗见智·向新而生

环境升级

添加一个Terminal

中秋节的广西甘蔗——智蔗见智·向新而生

升级命令

pip install torchvision==0.12.0 --upgrade

中秋节的广西甘蔗——智蔗见智·向新而生

解压zip压缩包

unzip train.zip

中秋节的广西甘蔗——智蔗见智·向新而生

批量操作

pip install opencv-python
pip install matplotlib
pip install pytorch-lightning==1.6.5
pip install torchmetrics

baseline演示

当前的文档中3个内容1是baseline代码,2是操作文件,3是训练图片

中秋节的广西甘蔗——智蔗见智·向新而生

训练集和验证集的划分

中秋节的广西甘蔗——智蔗见智·向新而生

在72和73行是训练集和测试集 

中秋节的广西甘蔗——智蔗见智·向新而生

要求的路径是./dataset下,是train.py的相对路径,所以需要单独创建一个dataset文件夹,然后在往里面放置两个文件夹train与split_imgs分别是训练集和测试集,他的代码中有这个文件处理,我们直接都放一个文件夹就行。

中秋节的广西甘蔗——智蔗见智·向新而生

中秋节的广西甘蔗——智蔗见智·向新而生

再在/home/ma-user/work/baseline/pytorch-lightning-unet/dataset文件夹下创建train与split_imgs的文件夹,这里复制过来train的文件夹改个名字就行。

cp -r ./train ./baseline/pytorch-lightning-unet/dataset/train
cp -r ./train ./baseline/pytorch-lightning-unet/dataset/split_imgs

中秋节的广西甘蔗——智蔗见智·向新而生

可以看到已经粘贴过去了。

中秋节的广西甘蔗——智蔗见智·向新而生

航拍照片与标记照片都在一个文件夹里面,但是他的代码里面有区分,我们就不用管了。

中秋节的广西甘蔗——智蔗见智·向新而生

开始训练

由于刚才一直在【/home/ma-user/work/】下干活了,咱们需要进入到train.py的文件夹执行

cd ./baseline/pytorch-lightning-unet/
python train.py

中秋节的广西甘蔗——智蔗见智·向新而生

由于max是50,预计时间70小时左右。

中秋节的广西甘蔗——智蔗见智·向新而生