從我們訓(xùn)練的模型中得到的坑洞預(yù)測(cè)和置信度分?jǐn)?shù):

我們?cè)撛趺崔k?
對(duì)象檢測(cè)數(shù)據(jù)集很有趣,因?yàn)樗鼈冇杀砀駭?shù)據(jù)(邊界框的注釋)和圖像數(shù)據(jù)(.png、.jpeg等)組成。COCO格式是對(duì)象檢測(cè)數(shù)據(jù)集的一種流行格式,我們將使用此格式下載坑洞數(shù)據(jù)集:https://public.roboflow.com/object-detection/pothole。Azure機(jī)器學(xué)習(xí)使用TABLAR DATASET格式,因此我們需要做的第一件事是將COCO轉(zhuǎn)換為TABLAR DATASET。轉(zhuǎn)換后,我們將選擇一種對(duì)象檢測(cè)算法,并最終訓(xùn)練模型。1-準(zhǔn)備數(shù)據(jù)集
我從Roboflow那里得到了數(shù)據(jù)集。它有665張標(biāo)有坑洞的道路圖片,由Atikur Rahman Chitholian創(chuàng)作并分享,作為其論文的一部分。Roboflow團(tuán)隊(duì)按照70/20/10將數(shù)據(jù)集劃分為訓(xùn)練-驗(yàn)證-測(cè)試集。每個(gè)拆分都有兩個(gè)主要組件:- _annotations.coco.json,一個(gè)包含images、categories和annotations的json文件
- 圖像本身(.jpg文件)
- images:包含有關(guān)數(shù)據(jù)集圖像的信息(id、文件名、大小等)
- categories:邊界框類別的名稱和id
- annotations:包含有關(guān)對(duì)象的信息,包括邊界框坐標(biāo)(在此數(shù)據(jù)集中,它們位于絕對(duì)坐標(biāo))、對(duì)象的圖像id和類別id


fromazureml.coreimportWorkspace workspace=Workspace.from_config()#如果你在一個(gè)aml計(jì)算實(shí)例上運(yùn)行notebook,這是可行的 default_datastore=workspace.get_default_datastore() datastore_name=default_datastore.name 注釋采用COCO格式(JSON),但tablerDataSet要求注釋采用JSON行。tablerDataset具有相同的元數(shù)據(jù),但以不同的鍵組織。以下是用于對(duì)象檢測(cè)的TablerDataset的外觀:
{ "image_url":"AmlDatastore://data_directory/../Image_name.image_format", "image_details":{ "format":"image_format", "width":"image_width", "height":"image_height" }, "label":[ { "label":"class_name_1", "topX":"xmin/width", "topY":"ymin/height", "bottomX":"xmax/width", "bottomY":"ymax/height", "isCrowd":"isCrowd" }, { "label":"class_name_2", "topX":"xmin/width", "topY":"ymin/height", "bottomX":"xmax/width", "bottomY":"ymax/height", "isCrowd":"isCrowd" }, "..." ] } 幸運(yùn)的是,微軟工程師編寫了一個(gè)腳本來(lái)轉(zhuǎn)換COCO:https://github.com/Azure/azureml-examples/blob/1a41978d7ddc1d1f831236ff0c5c970b86727b44/python-sdk/tutorials/automl-with-azureml/image-object-detection/coco2jsonl.py此文件的image_url鍵需要指向我們正在使用的數(shù)據(jù)存儲(chǔ)中的圖像文件(默認(rèn))。我們使用coco2jsonl的base_url參數(shù)指定。
#從coco文件生成訓(xùn)練jsonl文件 !pythoncoco2jsonl.py --input_coco_file_path"./potholeObjects/train/_annotations.coco.json" --output_dir"./potholeObjects/train"--output_file_name"train_pothole_from_coco.jsonl" --task_type"ObjectDetection" --base_url"AmlDatastore://{datastore_name}/potholeObjects/train/" 我們將對(duì)驗(yàn)證集運(yùn)行相同的命令。現(xiàn)在,下一步是將文件上傳到數(shù)據(jù)存儲(chǔ),并在AML中創(chuàng)建數(shù)據(jù)集。不要將數(shù)據(jù)集與數(shù)據(jù)存儲(chǔ)混淆。數(shù)據(jù)集是版本控制的打包數(shù)據(jù)對(duì)象,通常基于數(shù)據(jù)存儲(chǔ)中的文件創(chuàng)建。我們將從JSON行文件創(chuàng)建數(shù)據(jù)集。
fromazureml.coreimportDataset fromazureml.data.datapathimportDataPath fromazureml.dataimportDataType #上傳文件到數(shù)據(jù)存儲(chǔ) Dataset.File.upload_directory( src_dir="./potholeObjects/train/",target=DataPath(default_datastore,"/potholeObjects/train"),show_progress=True ) training_dataset_name="potholeObjectesTrainingDataset" #創(chuàng)建數(shù)據(jù)集 training_dataset=Dataset.Tabular.from_json_lines_files( path=DataPath(default_datastore,"/potholeObjects/train/train_pothole_from_coco.jsonl"), set_column_types={"image_url":DataType.to_stream(default_datastore.workspace)}, ) #在工作區(qū)中注冊(cè)數(shù)據(jù)集 training_dataset=training_dataset.register( workspace=workspace,name=training_dataset_name ) 對(duì)于訓(xùn)練和驗(yàn)證拆分,也將這樣做。如果一切順利,你可以看到AML內(nèi)部的圖像預(yù)覽。AML工作區(qū)內(nèi)的數(shù)據(jù)集預(yù)覽

2.進(jìn)行實(shí)驗(yàn)
在AML內(nèi)部,你運(yùn)行的一切都稱為實(shí)驗(yàn)。要使用AutoML訓(xùn)練模型,你將創(chuàng)建一個(gè)實(shí)驗(yàn),指向它假定運(yùn)行的計(jì)算目標(biāo),并提供AutoML參數(shù)的配置。讓我們首先創(chuàng)建實(shí)驗(yàn)并從工作區(qū)獲取計(jì)算機(jī)實(shí)例:fromazureml.coreimportExperiment experiment_name="pothole-yolov5-model" experiment=Experiment(workspace,name=experiment_name) compute_target=workspace.compute_targets['gpu-computer']#給計(jì)算實(shí)例的名稱 在這里,我將使用yolov5默認(rèn)參數(shù)運(yùn)行實(shí)驗(yàn)。你需要提供超參數(shù)、計(jì)算目標(biāo)、訓(xùn)練數(shù)據(jù)和驗(yàn)證數(shù)據(jù)(如示例所示,驗(yàn)證數(shù)據(jù)集是可選的)。
fromazureml.automl.core.shared.constantsimportImageTask fromazureml.train.automlimportAutoMLImageConfig fromazureml.train.hyperdriveimportGridParameterSampling,choice automl_config_yolov5=AutoMLImageConfig( task=ImageTask.IMAGE_OBJECT_DETECTION, compute_target=compute_target, training_data=training_dataset, validation_data=validation_dataset, hyperparameter_sampling=GridParameterSampling({"model_name":choice("yolov5")}), iterations=1, ) 現(xiàn)在可以提交實(shí)驗(yàn)了:
automl_image_run=experiment.submit(automl_config_yolov5) 你可以使用Workspace web界面監(jiān)控實(shí)驗(yàn):

fromazureml.automl.core.shared.constantsimportImageTask fromazureml.train.automlimportAutoMLImageConfig fromazureml.train.hyperdriveimportBanditPolicy,RandomParameterSampling fromazureml.train.hyperdriveimportchoice,uniform parameter_space={ "model":choice( { "model_name":choice("yolov5"), "learning_rate":uniform(0.0001,0.01), "model_size":choice("small","medium"),#模型相關(guān) #'img_size':choice(640,704,768),#特定型號(hào);可能需要有大內(nèi)存的GPU }, { "model_name":choice("fasterrcnn_resnet50_fpn"), "learning_rate":uniform(0.0001,0.001), "optimizer":choice("sgd","adam","adamw"), "min_size":choice(600,800),#模型相關(guān) #'warmup_cosine_lr_warmup_epochs':choice(0,3), }, ), } tuning_settings={ "iterations":10, "max_concurrent_iterations":2, "hyperparameter_sampling":RandomParameterSampling(parameter_space), "early_termination_policy":BanditPolicy( evaluation_interval=2,slack_factor=0.2,delay_evaluation=6 ), } automl_image_config=AutoMLImageConfig( task=ImageTask.IMAGE_OBJECT_DETECTION, compute_target=compute_target, training_data=training_dataset, validation_data=validation_dataset, **tuning_settings, )
3-將預(yù)測(cè)可視化
這個(gè)yolov5模型是使用Pytorch訓(xùn)練的,因此我們可以下載模型并使用Jupyter筆記本檢查預(yù)測(cè)。我的花了56分鐘訓(xùn)練。獲取模型需要做的第一件事是注冊(cè)工作區(qū)中的最佳運(yùn)行,以便訪問(wèn)模型。best_child_run=automl_image_run.get_best_child() model_name=best_child_run.properties["model_name"] model_output_path=best_child_run.properties["model_output_path"] #從最佳運(yùn)行中注冊(cè)模型 model=best_child_run.register_model( model_name=model_name,model_path=model_output_path ) 現(xiàn)在我們可以下載模型了并運(yùn)行推斷。為此,我們將使用azureml contrib automl dnn vision包中的代碼:
fromazureml.contrib.automl.dnn.vision.common.model_export_utilsimportload_model,run_inference fromazureml.contrib.automl.dnn.vision.object_detection_yolo.writers.scoreimport_score_with_model TASK_TYPE='image-object-detection' model_settings={"img_size":640,"model_size":"medium","box_score_thresh":0.1,"box_iou_thresh":0.5} model_wrapper=load_model(TASK_TYPE,'model.pt',**model_settings) sample_image="./img-23_jpg.rf.e6aa0daf83e72ccbf1ea10eb6a6ab3bd.jpg" withopen(sample_image,'rb')asf: bytes_img=f.read() model_response=run_inference(model_wrapper,bytes_img,_score_with_model) 我使用Microsoft教程中的代碼來(lái)可視化邊界框。以下是測(cè)試圖像的結(jié)果:從我們訓(xùn)練的模型中得到的坑洞預(yù)測(cè)和置信度分?jǐn)?shù):

最后
Azure機(jī)器學(xué)習(xí)是一個(gè)很好的工具,可以讓你開始機(jī)器學(xué)習(xí)(在我們的例子中是深度學(xué)習(xí)),因?yàn)樗[藏了很多復(fù)雜性。你可以在Jupyter筆記本上查看所有代碼:https://github.com/dmesquita/azureml-automl-potholes-object-detection。管道中的下一步是將模型部署為web服務(wù)。如果你有興趣,也可以使用Microsoft教程檢查如何做到這一點(diǎn):https://github.com/dmesquita/azureml-automl-potholes-object-detection。參考引用Pothole Dataset. Shared By. Atikur Rahman Chitholian. November 2020. License. ODbL v1.0 審核編輯 :李倩
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8477瀏覽量
133803 -
訓(xùn)練模型
+關(guān)注
關(guān)注
1文章
37瀏覽量
3911
原文標(biāo)題:AutoML:訓(xùn)練模型以識(shí)別凹坑
文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺(jué)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
AI模型是如何訓(xùn)練的?訓(xùn)練一個(gè)模型花費(fèi)多大?
電子發(fā)燒友網(wǎng)報(bào)道(文/李彎彎)在深度學(xué)習(xí)中,經(jīng)常聽到一個(gè)詞“模型訓(xùn)練”,但是模型是什么?又是怎么訓(xùn)練的?在人工智能中,面對(duì)大量的數(shù)據(jù),要在雜亂無(wú)章的內(nèi)容中,準(zhǔn)確、容易地
【大語(yǔ)言模型:原理與工程實(shí)踐】大語(yǔ)言模型的預(yù)訓(xùn)練
增長(zhǎng)。DeepMind在相關(guān)論文中指出,模型大小和訓(xùn)練Token數(shù)應(yīng)以相似速率增長(zhǎng),以確保最佳性能。因此,構(gòu)建與模型規(guī)模相匹配的預(yù)訓(xùn)練數(shù)據(jù)至
發(fā)表于 05-07 17:10
Pytorch模型訓(xùn)練實(shí)用PDF教程【中文】
本教程以實(shí)際應(yīng)用、工程開發(fā)為目的,著重介紹模型訓(xùn)練過(guò)程中遇到的實(shí)際問(wèn)題和方法。在機(jī)器學(xué)習(xí)模型開發(fā)中,主要涉及三大部分,分別是數(shù)據(jù)、模型和損失
發(fā)表于 12-21 09:18
AutoML和神經(jīng)架構(gòu)搜索介紹
AutoMl及NAS概述:更有效地設(shè)計(jì)神經(jīng)網(wǎng)絡(luò)模型工具
發(fā)表于 09-04 06:37
node.js在訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)模型識(shí)別圖像中物體的方法
如何在Node.js環(huán)境下使用訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)模型(Inception、SSD)識(shí)別圖像中的物體。
AutoML新書:AutoML系統(tǒng)背后的基礎(chǔ)知識(shí)
傳統(tǒng)上,術(shù)語(yǔ)AutoML用于描述模型選擇和/或超參數(shù)優(yōu)化的自動(dòng)化方法。這些方法適用于許多類型的算法,例如隨機(jī)森林,梯度提升機(jī)器(gradient boosting machines),神經(jīng)網(wǎng)絡(luò)等
Waymo用AutoML自動(dòng)生成機(jī)器學(xué)習(xí)模型
Waymo十周年之際,發(fā)布了自動(dòng)駕駛機(jī)器學(xué)習(xí)模型的構(gòu)建思路,原來(lái)很多內(nèi)部架構(gòu)是由 AutoML 完成的。
關(guān)于AutoML的完整資源列表
在傳統(tǒng)深度學(xué)習(xí)的模型構(gòu)建中,主要包含以下步驟:數(shù)據(jù)處理、特征工程、模型架構(gòu)選擇、超參數(shù)優(yōu)化、模型后處理、結(jié)果分析。這些步驟往往會(huì)耗費(fèi)大量人力和時(shí)間。在 AutoML 中,則可以對(duì)大部分

AutoML技術(shù)提高NVIDIA GPU和RAPIDS速度
AutoGluon AutoML 工具箱使培訓(xùn)和部署尖端技術(shù)變得很容易 復(fù)雜業(yè)務(wù)問(wèn)題的精確機(jī)器學(xué)習(xí)模型。此外, AutoGluon 與 RAPIDS 的集成充分利用了 NVIDIA GPU 計(jì)算的潛力,使復(fù)雜模型的

AI模型是如何訓(xùn)練的?訓(xùn)練一個(gè)模型花費(fèi)多大?
電子發(fā)燒友網(wǎng)報(bào)道(文/李彎彎)在深度學(xué)習(xí)中,經(jīng)常聽到一個(gè)詞“模型訓(xùn)練”,但是模型是什么?又是怎么訓(xùn)練的?在人工智能中,面對(duì)大量的數(shù)據(jù),要在雜亂無(wú)章的內(nèi)容中,準(zhǔn)確、容易地
使用 NVIDIA TAO 工具套件和預(yù)訓(xùn)練模型加快 AI 開發(fā)
NVIDIA 發(fā)布了 TAO 工具套件 4.0 。該工具套件通過(guò)全新的 AutoML 功能、與第三方 MLOPs 服務(wù)的集成以及新的預(yù)訓(xùn)練視覺(jué) AI 模型提高開發(fā)者的生產(chǎn)力。該工具套件的企業(yè)版現(xiàn)在
卷積神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練步驟
卷積神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練步驟? 卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)是一種常用的深度學(xué)習(xí)算法,廣泛應(yīng)用于圖像識(shí)別、語(yǔ)音識(shí)別、自然語(yǔ)言處理等諸多
人臉識(shí)別模型訓(xùn)練是什么意思
人臉識(shí)別模型訓(xùn)練是指通過(guò)大量的人臉數(shù)據(jù),使用機(jī)器學(xué)習(xí)或深度學(xué)習(xí)算法,訓(xùn)練出一個(gè)能夠識(shí)別和分類人臉的模型
人臉識(shí)別模型訓(xùn)練失敗原因有哪些
: 1.1 數(shù)據(jù)量不足 人臉識(shí)別模型需要大量的數(shù)據(jù)進(jìn)行訓(xùn)練,以提高模型的泛化能力。如果數(shù)據(jù)量不足,模型
人臉識(shí)別模型訓(xùn)練流程
人臉識(shí)別模型訓(xùn)練流程是計(jì)算機(jī)視覺(jué)領(lǐng)域中的一項(xiàng)重要技術(shù)。本文將詳細(xì)介紹人臉識(shí)別模型的訓(xùn)練流程,包括
評(píng)論