轉(zhuǎn)載基于MindSpore的Deeplabv3—語(yǔ)義分割體驗(yàn)分享

      網(wǎng)友投稿 1512 2022-05-30

      實(shí)驗(yàn)介紹

      本實(shí)驗(yàn)主要介紹使用MindSpore深度學(xué)習(xí)框架在PASCAL VOC2012數(shù)據(jù)集上訓(xùn)練deeplabv3網(wǎng)絡(luò)模型。本實(shí)驗(yàn)使用了MindSpore開(kāi)源倉(cāng)庫(kù)model_zoo中的deeplabv3模型案例。

      deeplabv3簡(jiǎn)要介紹

      deeplabv1和deeplabv2,即帶孔卷積(atrous convolution), 能夠明確地調(diào)整filters的感受野,并決定DNN計(jì)算得到特征的分辨率。 deeplabv3中提出 Atrous Spatial Pyramid Pooling(ASPP)模塊, 挖掘不同尺度的卷積特征,以及編碼了全局內(nèi)容信息的圖像層特征,提升分割效果。 詳細(xì)介紹參考論文:http://arxiv.org/abs/1706.05587?。

      實(shí)驗(yàn)?zāi)康?/p>

      了解如何使用MindSpore加載常用的PASCAL VOC2012數(shù)據(jù)集。

      了解MindSpore的model_zoo模塊,以及如何使用model_zoo中的模型。

      了解deeplabv3這類(lèi)語(yǔ)義分割模型的基本結(jié)構(gòu)和編程方法。

      預(yù)備知識(shí)

      熟練使用Python,了解Shell及Linux操作系統(tǒng)基本知識(shí)。

      具備一定的深度學(xué)習(xí)理論知識(shí),如Encoder、Decoder、損失函數(shù)、優(yōu)化器,訓(xùn)練策略、Checkpoint等。

      了解華為云的基本使用方法,包括OBS(對(duì)象存儲(chǔ))、ModelArts(AI開(kāi)發(fā)平臺(tái))、訓(xùn)練作業(yè)等功能。華為云官網(wǎng):https://www.huaweicloud.com。

      了解并熟悉MindSpore AI計(jì)算框架,MindSpore官網(wǎng):https://www.mindspore.cn/。

      實(shí)驗(yàn)環(huán)境

      MindSpore 1.0.0(MindSpore版本會(huì)定期更新,本指導(dǎo)也會(huì)定期刷新,與版本配套)。

      華為云ModelArts(控制臺(tái)左上角選擇“華北-北京四”):ModelArts是華為云提供的面向開(kāi)發(fā)者的一站式AI開(kāi)發(fā)平臺(tái),集成了昇騰AI處理器資源池,用戶(hù)可以在該平臺(tái)**驗(yàn)MindSpore。。

      實(shí)驗(yàn)準(zhǔn)備

      數(shù)據(jù)集準(zhǔn)備

      Pascal VOC2012數(shù)據(jù)集主要是針對(duì)視覺(jué)任務(wù)中監(jiān)督學(xué)習(xí)提供標(biāo)簽數(shù)據(jù),它有二十個(gè)類(lèi)別。主要有四個(gè)大類(lèi)別,分別是人、常見(jiàn)動(dòng)物、交通車(chē)輛、室內(nèi)家具用品。這里只說(shuō)與圖像分割(segmentation)有關(guān)的信息,本用例使用已去除分割標(biāo)注的顏色,僅保留了分割任務(wù)的數(shù)據(jù)集。VOC2012官網(wǎng)地址,官方-。

      本實(shí)驗(yàn)指導(dǎo)的數(shù)據(jù)集可通過(guò)如下方式獲取:

      方式一,參考(推薦)lenet5(手寫(xiě)數(shù)字識(shí)別)或checkpoint(模型的保存和加載)實(shí)驗(yàn),拷貝他人共享的OBS桶中的數(shù)據(jù)集。

      import?moxingmoxing.file.copy_parallel(src_url="s3://share-course/dataset/voc2012/",?dst_url='voc2012/')

      方式二,從官網(wǎng)下載數(shù)據(jù)集

      另外,本實(shí)驗(yàn)采用fine-tune的訓(xùn)練方式,為了節(jié)省訓(xùn)練時(shí)間,我們提前準(zhǔn)備好了預(yù)訓(xùn)練的checkpoint文件,方便直接獲取使用。

      腳本準(zhǔn)備

      從課程gitee倉(cāng)庫(kù)上下載本實(shí)驗(yàn)相關(guān)腳本。

      上傳文件

      點(diǎn)擊新建的OBS桶名,再打開(kāi)“對(duì)象”標(biāo)簽頁(yè),通過(guò)“上傳對(duì)象”、“新建文件夾”等功能,將腳本和數(shù)據(jù)集上傳到OBS桶中,組織為如下形式:

      【轉(zhuǎn)載】基于MindSpore的Deeplabv3—語(yǔ)義分割體驗(yàn)分享

      deeplabv3├──?src?#?包括數(shù)據(jù)集處理、網(wǎng)絡(luò)定義等│???└──?*.py└──?main.ipynb?#?執(zhí)行腳本,包括訓(xùn)練和推理過(guò)程

      實(shí)驗(yàn)步驟

      代碼梳理

      代碼文件說(shuō)明:

      main.ipynb:代碼入口文件;

      dataset.py:數(shù)據(jù)處理文件;

      loss:loss定義文件;

      deeplab_v3: deeplabv3網(wǎng)絡(luò)定義文件;

      learning_rates.py: 學(xué)習(xí)率定義文件

      實(shí)驗(yàn)流程:

      修改main.ipynb訓(xùn)練參數(shù)并運(yùn)行,運(yùn)行訓(xùn)練cell得到模型文件。

      修改main.ipynb測(cè)試1(test 1 cell)參數(shù)并運(yùn)行,運(yùn)行測(cè)試1單元得到mean iou結(jié)果。

      修改main.ipynb測(cè)試2(test 2 cell)參數(shù)并運(yùn)行,運(yùn)行測(cè)試2單元得到可視化結(jié)果。

      數(shù)據(jù)處理(dataset.py)

      數(shù)據(jù)處理流程如下所示:

      將語(yǔ)義標(biāo)簽轉(zhuǎn)換為灰度圖(dataset.py中SegDataset.get_gray_dataset)

      將圖片和標(biāo)簽灰度圖轉(zhuǎn)換為mindrecord格式數(shù)據(jù)集(dataset.py中SegDataset.get_mindrecord_dataset)

      讀取mindrecord數(shù)據(jù)集并預(yù)處理。(dataset.py中SegDataset.get_dataset。其中preprocess_為數(shù)據(jù)預(yù)處理。)

      具體過(guò)程如下所示,見(jiàn)(main.ipynb)

      #?datasetdataset?=?data_generator.SegDataset(image_mean=args.image_mean,????????????????????????????????????image_std=args.image_std,????????????????????????????????????data_file=args.data_file,????????????????????????????????????batch_size=args.batch_size,????????????????????????????????????crop_size=args.crop_size,????????????????????????????????????max_scale=args.max_scale,????????????????????????????????????min_scale=args.min_scale,????????????????????????????????????ignore_label=args.ignore_label,????????????????????????????????????num_classes=args.num_classes,????????????????????????????????????num_readers=2,????????????????????????????????????num_parallel_calls=4,????????????????????????????????????shard_id=args.rank,????????????????????????????????????shard_num=args.group_size)dataset.get_gray_dataset()dataset.get_mindrecord_dataset(is_training=True)dataset?=?dataset.get_dataset(repeat=1)

      訓(xùn)練輸入文件導(dǎo)入

      import?moxing?as?moxdata_path?=?'./VOC2012'if?not?os.path.exists(data_path):????mox.file.copy_parallel(src_url="s3://share-course/dataset/voc2012_raw/",?dst_url=data_path)cfg.data_file?=?data_pathckpt_path?=?'deeplab_s8.ckpt'if?not?os.path.exists(ckpt_path):????mox.file.copy_parallel(src_url="s3://share-course/checkpoint/deeplabv3/deeplab_v3_s8-800_82.ckpt",?dst_url=ckpt_path)cfg.ckpt_file?=?ckpt_path

      訓(xùn)練輸入文件導(dǎo)入

      import?moxing?as?moxdata_path?=?'./VOC2012'if?not?os.path.exists(data_path):????mox.file.copy_parallel(src_url="s3://share-course/dataset/voc2012_raw/",?dst_url=data_path)cfg.data_file?=?data_pathfrom?src.data?import?dataset?as?data_generator#?datasetdataset?=?data_generator.SegDataset(image_mean=cfg.image_mean,????????????????????????????????????image_std=cfg.image_std,????????????????????????????????????data_file=cfg.data_file)dataset.get_gray_dataset()cfg.data_lst?=?os.path.join(cfg.data_file,'ImageSets/Segmentation/val.txt')cfg.voc_img_dir?=?os.path.join(cfg.data_file,'JPEGImages')cfg.voc_anno_gray_dir?=?os.path.join(cfg.data_file,'SegmentationClassGray')ckpt_path?=?'./model'if?not?os.path.exists(ckpt_path):????mox.file.copy_parallel(src_url="s3://{user_obs}/model",?dst_url=ckpt_path)???#?if?model?had?saved.cfg.ckpt_file?=?os.path.join(ckpt_path,'deeplab_v3_s8-3_91.ckpt')??print('loading?checkpoing:',cfg.ckpt_file)

      訓(xùn)練參數(shù)設(shè)定:

      cfg?=?edict({????"batch_size":?16,????"crop_size":?513,????"image_mean":?[103.53,?116.28,?123.675],????"image_std":?[57.375,?57.120,?58.395],????"min_scale":?0.5,????"max_scale":?2.0,????"ignore_label":?255,????"num_classes":?21,????"train_epochs"?:?3,????"lr_type":?'cos',????"base_lr":?0.0,????"lr_decay_step":?3*91,????"lr_decay_rate"?:0.1,????"loss_scale":?2048,??????????"model":?'deeplab_v3_s8',????'rank':?0,????'group_size':1,????'keep_checkpoint_max':1,????'train_dir':?'model',????'is_distributed':False,????'freeze_bn':True})

      測(cè)試參數(shù)設(shè)定:

      cfg?=?edict({????"batch_size":?1,????"crop_size":?513,????"image_mean":?[103.53,?116.28,?123.675],????"image_std":?[57.375,?57.120,?58.395],????"scales":?[1.0],???????????#?[0.5,0.75,1.0,1.25,1.75]????'flip':?True,????'ignore_label':?255,????'num_classes':21,????'model':?'deeplab_v3_s8',????'freeze_bn':?True,????????'if_png':False,????'num_png':5})

      實(shí)驗(yàn)結(jié)果

      訓(xùn)練日志結(jié)果

      converting?voc?color?png?to?gray?png?...converting?donecreating?mindrecord?dataset...number?of?samples:?1464number?of?samples?written:?1000number?of?samples?written:?1464Create?Mindrecord?Doneepoch:?1?step:?91,?loss?is?0.004917805Epoch?time:?183256.301,?per?step?time:?2013.806epoch:?2?step:?91,?loss?is?0.00791893Epoch?time:?47812.316,?per?step?time:?525.410epoch:?3?step:?91,?loss?is?0.0061199386Epoch?time:?47803.087,?per?step?time:?525.309

      測(cè)試iou結(jié)果

      the?gray?file?is?already?exists!loading?checkpoing:?./model/deeplab_v3_s8-3_91.ckptprocessed?100?imagesprocessed?200?imagesprocessed?300?imagesprocessed?400?imagesprocessed?500?imagesprocessed?600?imagesprocessed?700?imagesprocessed?800?imagesprocessed?900?imagesprocessed?1000?imagesprocessed?1100?imagesprocessed?1200?imagesprocessed?1300?imagesprocessed?1400?imagesmean?IoU?0.7709573541968988

      測(cè)試圖片輸出結(jié)果

      取其中一張圖片結(jié)果如下所示:

      prediction?num:?[?0??2?15]prediction?color:?['background',?'bicycle',?'person']prediction?class:?['aliceblue',?'red',?'tan']groundtruth?num:?[?0??2?15]groundtruth?color:?['background',?'bicycle',?'person']groundtruth?class:?['aliceblue',?'red',?'tan']

      注解:?以上三張圖片,第左邊為原始圖片,中間為預(yù)測(cè)語(yǔ)義分割圖,最右邊為真實(shí)語(yǔ)義分割標(biāo)簽圖。

      結(jié)論

      本實(shí)驗(yàn)主要介紹使用MindSpore實(shí)現(xiàn)deeplabv3網(wǎng)絡(luò),實(shí)現(xiàn)語(yǔ)義分割。分析原理和結(jié)果可得:

      deeplabv3網(wǎng)絡(luò)對(duì)語(yǔ)義分割任務(wù)有效。

      deeplabv3網(wǎng)絡(luò)對(duì)語(yǔ)義分割中細(xì)節(jié)效果較差。但是大概輪廓較好。

      EI智能體 AI 通用AI 機(jī)器學(xué)習(xí) MindSpore

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:GO語(yǔ)言實(shí)戰(zhàn)之函數(shù)與方法
      下一篇:excel表格退出受保護(hù)視圖的方法
      相關(guān)文章
      久久精品国产亚洲av高清漫画| 精品久久久久久亚洲综合网| 亚洲偷自拍另类图片二区| 亚洲AV无码专区在线播放中文| 国产国拍亚洲精品福利 | 亚洲色大成网站www永久| 亚洲成在人天堂一区二区| 亚洲av无码国产精品色午夜字幕| 亚洲真人无码永久在线| 国产午夜亚洲精品理论片不卡 | 亚洲精品第一国产综合境外资源| 亚洲AV无码一区二三区| 久久乐国产精品亚洲综合| 在线精品自拍亚洲第一区| 国产精品亚洲精品久久精品| 无码亚洲成a人在线观看| 精品亚洲福利一区二区| 亚洲av再在线观看 | 亚洲视频在线免费播放| 久久亚洲AV成人出白浆无码国产| 亚洲黄色片在线观看| 亚洲欧洲日本精品| 2020国产精品亚洲综合网| 亚洲中文字幕乱码一区| 亚洲人AV在线无码影院观看| 亚洲AV日韩AV无码污污网站| 五月天婷亚洲天综合网精品偷| 亚洲国产综合精品一区在线播放| 久久精品国产亚洲AV不卡| 亚洲美女又黄又爽在线观看| 亚洲AV无码国产丝袜在线观看 | 亚洲人成欧美中文字幕| 日本亚洲中午字幕乱码| 精品亚洲成α人无码成α在线观看 | 亚洲国产成人高清在线观看| 亚洲电影一区二区三区| 亚洲国产综合在线| 亚洲欧美乱色情图片| mm1313亚洲国产精品美女| 亚洲无人区午夜福利码高清完整版 | 亚洲v高清理论电影|