0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

物件檢測(cè)的模型訓(xùn)練與優(yōu)化

NVIDIA英偉達(dá)企業(yè)解決方案 ? 來(lái)源:NVIDIA英偉達(dá)企業(yè)解決方案 ? 作者:NVIDIA英偉達(dá)企業(yè)解 ? 2022-04-27 10:26 ? 次閱讀

物件檢測(cè) (objectdetection) 或物件定位 (object location) 是目前普及度最高的人工智能應(yīng)用,也是過(guò)去幾年中神經(jīng)網(wǎng)絡(luò)發(fā)展最迅猛的領(lǐng)域,短短幾年之中創(chuàng)造出非常多優(yōu)異的經(jīng)典算法,并且各有所長(zhǎng),如今在數(shù)量與質(zhì)量上都還持續(xù)進(jìn)化中,這現(xiàn)象其實(shí)也是造成使用者很大困擾之處,因?yàn)榫烤鼓姆N神經(jīng)網(wǎng)絡(luò)最適合您的使用場(chǎng)景,最終還是得經(jīng)過(guò)實(shí)際驗(yàn)證之后才能確認(rèn)。

TAO 工具非常高效地協(xié)助我們解決這個(gè)難題,讓我們?cè)诓涣私飧鞣N神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)與算法、也不熟悉 Tensorflow 或 Pytorch 這些復(fù)雜框架之前,不用撰寫(xiě)任何 C++Python 代碼,就能非常輕易地訓(xùn)練好深度學(xué)習(xí)模型,并且快速驗(yàn)證不同網(wǎng)絡(luò)模型的性能與效果,這估計(jì)能減少能降低 80% 以上的前期學(xué)習(xí)與評(píng)估的時(shí)間成本。

在 TAO 的 cv_samples 里提供多個(gè)物件檢測(cè)算法,包括 detectnet_v2、dssd、ssd、facenet、fast_rcnn、lprnet、mask_rcnn、retinanet、unet、ssd、yolo_v4等十多個(gè)物件檢測(cè)范例,每一個(gè)流程與本系列前一個(gè) “圖像分類的模型訓(xùn)練” 的范例是一致的,因此這里只挑選目前普及度較高的 ssd 神經(jīng)網(wǎng)絡(luò)進(jìn)行示范就行。

首先進(jìn)入 Jupyter 操作界面,打開(kāi) cv_samples/ssd/ssd.ipynb腳本,然后按照以下步驟逐步執(zhí)行:

0. 環(huán)境變量配置與路徑映射(Setup env variables and map drives):

在系列文章 “視覺(jué)類訓(xùn)練腳本的環(huán)境配置” 內(nèi)有詳細(xì)的講解,這里只要對(duì)下面兩變量進(jìn)行處理就可以:

  • %env KEY=<您的NGC秘鑰>

  • “%envLOCAL_PROJECT_DIR=YOUR_LOCAL_PROJECT_DIR_PATH”改成“os.environ["LOCAL_PROJECT_DIR"] = os.getcwd()”

然后執(zhí)行這部分的 4 個(gè)指令塊

  1. 安裝 TAO 啟動(dòng)器(Install the TAO launcher):

跳過(guò)第一個(gè)安裝指令塊,執(zhí)行“!tao info”指令塊就行。

2. 準(zhǔn)備數(shù)據(jù)集與預(yù)訓(xùn)練模型(Preparedataset and pre-trained model)

數(shù)據(jù)集處理通常是模型訓(xùn)練過(guò)程比較消耗人力的步驟。這里推薦不使用腳本里的步驟去下載與解壓縮,因?yàn)檫@里指向的下載位置在國(guó)外網(wǎng)站,這對(duì)大部分使用者是很困擾的,因此最好自行手動(dòng)下載處理。

(1) TAO 的物件檢測(cè)模型訓(xùn)練支持 KITTI 標(biāo)注格式,這里使用的范例數(shù)據(jù)集與系列文章“視覺(jué)數(shù)據(jù)格式處理與增強(qiáng)”是同一套,如果前面實(shí)驗(yàn)已將下載的話就復(fù)制一份過(guò)來(lái)就行,也可以重新在https://pan.baidu.com/s/1WcRt9ONqsYhLRmL8Rg8_YQ(密碼855n),下載 data_object_image_2.zip 與 data_object_label_2.zip 到 ssd.ipynb 相同目錄下,然后執(zhí)行以下指令進(jìn)行解壓縮:

cd ~/tao/cv_samples/ssd  # 請(qǐng)根據(jù)您實(shí)際路徑unzip -u data_object_image_2.zip -d dataunzip-udata_object_label_2.zip-ddata

會(huì)在這個(gè)工作目錄下生成 data/training/image_2、data/training/label_2data/testing三個(gè)子目錄,其中訓(xùn)練用數(shù)據(jù)量為 7481 張圖片、測(cè)試數(shù)據(jù)量為 7518 張。

如果有自己的數(shù)據(jù)集想要轉(zhuǎn)到 TAO 來(lái)進(jìn)行訓(xùn)練,除了先將標(biāo)注格式轉(zhuǎn)成 KITTI 之外,最好也遵循上面的路徑結(jié)構(gòu),這樣就不需修改 spec 目錄下相關(guān)配置文件里面的設(shè)定值,對(duì)初學(xué)者是最便利的方式。

(1) 接著調(diào)用 generate_val_dataset.py,從訓(xùn)練數(shù)據(jù)中提取 10% 內(nèi)容作為校驗(yàn)用途,存放在 data/val 目錄,于是在 data/training 下面的圖像與標(biāo)注文件數(shù)量就剩下 6733 個(gè)。然后執(zhí)行 “2.3Generate tfrecords” 指令塊,將訓(xùn)練與校驗(yàn)數(shù)據(jù)集都轉(zhuǎn)成 tfrecords 格式,分別存放在對(duì)應(yīng)的路徑之下。

(2) 如果要配合遷移學(xué)習(xí)功能的話,接下來(lái)就是從 NGC 下載合適的預(yù)訓(xùn)練模型。這里選擇的是 “nvidia/tao/pretrained_object_detection:resnet18”,最終下載的模型文件為 89MB 大小的 resnet_18.hdf5 模型文件。

只要這個(gè)數(shù)據(jù)集整理步驟做得完整,后面的部分就會(huì)很簡(jiǎn)單。

3. 提供訓(xùn)練用配置文件(Providetraining specification)

在 TAO 所有范例里,配置文件是所有內(nèi)容的精華之處,這必須由專業(yè)算法工程師群進(jìn)行調(diào)試,不僅要這些神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)與算法有足夠深入的了解,還需要經(jīng)過(guò)足夠長(zhǎng)的重復(fù)調(diào)試過(guò)程,才能調(diào)試出一個(gè)夠完整的優(yōu)化參數(shù)組合,這部分是英偉達(dá)非常龐大精英人力與成本的所提煉出來(lái)的精髓。

物件檢測(cè)應(yīng)用的設(shè)定組,比前面的圖像分類要復(fù)雜很多,雖然初學(xué)者沒(méi)有能力去做細(xì)節(jié)參數(shù)的調(diào)整,但還是得了解一下主要結(jié)構(gòu),對(duì)于學(xué)習(xí)深度神經(jīng)網(wǎng)絡(luò)會(huì)有很大的幫助。

在 ssd 項(xiàng)目的 specs 目錄下有 5 個(gè)配置文件,其中與訓(xùn)練相關(guān)的有 4 個(gè),但實(shí)際使用到的就是ssd_train_resnet18_kitti.txt與ssd_retrain_resnet18_kitti.txt這兩個(gè)配置文件。

前者是提供給首次訓(xùn)練模型時(shí)使用,后者是對(duì)修剪過(guò)的模型進(jìn)行再訓(xùn)練時(shí)使用,兩者的內(nèi)容幾乎一樣,主要差異在配合遷移學(xué)習(xí)功能的部分,前者使用“pretrain_model_path”指向從NGC下載的預(yù)訓(xùn)練模型,后者使用“pruned_model_path”指向后面會(huì)操作的 “修剪過(guò)的模型”,其他參數(shù)都一樣。

現(xiàn)在就以 ssd_train_resnet18_kitti.txt 配置文件來(lái)做說(shuō)明,里面總共有 6 個(gè)參數(shù)組:

(1) ssd_config:

這是根據(jù)網(wǎng)絡(luò)種類所命名,不同網(wǎng)絡(luò)的配置組內(nèi)容都不太一樣,例如 yolov3 范例的配置組為 “yolov3_config”,以此類推。每種神經(jīng)網(wǎng)絡(luò)都有截然不同的參數(shù)內(nèi)容,在 ssd 網(wǎng)絡(luò)有 12 個(gè)參數(shù)的設(shè)定,而 yolo_v4 網(wǎng)絡(luò)有將近 20 個(gè),所以網(wǎng)絡(luò)之間的配置是不能套用或互換的。如果未來(lái)要開(kāi)發(fā)自己的特殊模型,最好從現(xiàn)有的 20 范例里面去挑選,就能以該網(wǎng)絡(luò)的配置文件為基礎(chǔ)進(jìn)行修改。

關(guān)于這個(gè)配置組的內(nèi)容就不多時(shí)間去說(shuō)明,初學(xué)者先不要貿(mào)然去修改,以免訓(xùn)練過(guò)程發(fā)生不可預(yù)期的錯(cuò)誤,或者模型效果不好。

(2) training_config:

執(zhí)行訓(xùn)練時(shí)的一些參數(shù)設(shè)定,這是使用者能進(jìn)行調(diào)整的部分,包括以下部分:

  • batch_size_per_gpu:根據(jù)執(zhí)行訓(xùn)練的GPU總顯存進(jìn)行調(diào)整

  • num_epochs:訓(xùn)練回合數(shù),這里設(shè)定為80

  • enable_qat:開(kāi)啟QAT訓(xùn)練模式,這里預(yù)設(shè)值為 ”false”,表示不開(kāi)啟

  • checkpoint_interval:每多少回合生成一次模型文件,這里預(yù)設(shè)值為1

  • learning_rate、regularizer 與 optimizer:如果對(duì) ssd 有深入了解的,可以進(jìn)一步調(diào)整。

(3) evaluation_config:

這些存放模型評(píng)估的一些參數(shù),可以根據(jù)計(jì)算設(shè)備的顯存值調(diào)整 batch_size 大小,不過(guò)這些并不影響訓(xùn)練的結(jié)果。

(4) nms_config:

NMS (Non-maximumsuppression) 非極大抑制應(yīng)用的目的,是要消除多余的框,找到最佳的物體檢查位置。

(5) augmentation_config:

這部分的參數(shù)內(nèi)容請(qǐng)參考系類文章 “視覺(jué)類的數(shù)據(jù)增強(qiáng)”,有詳細(xì)的說(shuō)明。雖然沒(méi)辦法進(jìn)入 TAO 源碼(未開(kāi)放)去確認(rèn),但這項(xiàng)參數(shù)設(shè)定組應(yīng)該顯示在物件檢測(cè)模型訓(xùn)練過(guò)程中,并將“數(shù)據(jù)增強(qiáng)”功能加進(jìn)來(lái),這對(duì)提高模型精準(zhǔn)度會(huì)起到很大的效果。

(6) dataset_config:

這里最主要配置數(shù)據(jù)源的路徑,以及類別 “key:value” 對(duì)的映射關(guān)系;

  • 一組 data_source:

里面包含 tfrecords_path 與 image_directory_path 兩個(gè)路徑設(shè)定;

  • 多組 target_class_mapping:

每一組對(duì)應(yīng)的 “key” 是數(shù)據(jù)集的原始類別名稱,后面映射的 “value” 是訓(xùn)練后模型的識(shí)別分類。

例如這里使用的 KITTI 數(shù)據(jù)集中,原始分類有 “car/ van/cyclist/ person_sitting/ pedestrian/ DontCare/ tram/ truck/ misc” 等 9 種分類,經(jīng)過(guò)映射后只保留 “Car/cyclist/ pedestrian” 三個(gè)分類,沒(méi)有在映射組里的分類就會(huì)忽略,例如 truck、misc 等。

如果使用自己的數(shù)據(jù)集訓(xùn)練模型,這部分需要自行調(diào)整到合適的類別對(duì)應(yīng),否則訓(xùn)練的結(jié)果也不能實(shí)現(xiàn)您要達(dá)到的識(shí)別效果。

  • 一組 validation_data_sources:

包括 label_directory_path 與 label_directory_path,存放校驗(yàn)數(shù)據(jù)集的圖像與標(biāo)注路徑。

以上 6 組配置在每個(gè)物件檢測(cè)模型的配置文件中都有,但是配置內(nèi)容不盡相同, TAO 已經(jīng)為所支持的網(wǎng)絡(luò)都提供優(yōu)化過(guò)的參數(shù)內(nèi)容,初學(xué)者只要直接使用就可以,等日后有更深入的掌握,再試著去修改這些參數(shù)。

原文標(biāo)題:NVIDIA Jetson Nano 2GB 系列文章(61):物件檢測(cè)的模型訓(xùn)練與優(yōu)化

文章出處:【微信公眾號(hào):NVIDIA英偉達(dá)企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(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īng)網(wǎng)絡(luò)

    關(guān)注

    42

    文章

    4717

    瀏覽量

    100009
  • 檢測(cè)
    +關(guān)注

    關(guān)注

    5

    文章

    4348

    瀏覽量

    91105
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3032

    瀏覽量

    48359

原文標(biāo)題:NVIDIA Jetson Nano 2GB 系列文章(61):物件檢測(cè)的模型訓(xùn)練與優(yōu)化

文章出處:【微信號(hào):NVIDIA-Enterprise,微信公眾號(hào):NVIDIA英偉達(dá)企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FP8模型訓(xùn)練中Debug優(yōu)化思路

    目前,市場(chǎng)上許多公司都積極開(kāi)展基于 FP8 的大模型訓(xùn)練,以提高計(jì)算效率和性能。在此,我們整理并總結(jié)了客戶及 NVIDIA 技術(shù)團(tuán)隊(duì)在 FP8 模型訓(xùn)練過(guò)程中的 debug 思路和方法
    的頭像 發(fā)表于 09-06 14:36 ?126次閱讀
    FP8<b class='flag-5'>模型</b><b class='flag-5'>訓(xùn)練</b>中Debug<b class='flag-5'>優(yōu)化</b>思路

    如何使用經(jīng)過(guò)訓(xùn)練的神經(jīng)網(wǎng)絡(luò)模型

    使用經(jīng)過(guò)訓(xùn)練的神經(jīng)網(wǎng)絡(luò)模型是一個(gè)涉及多個(gè)步驟的過(guò)程,包括數(shù)據(jù)準(zhǔn)備、模型加載、預(yù)測(cè)執(zhí)行以及后續(xù)優(yōu)化等。
    的頭像 發(fā)表于 07-12 11:43 ?461次閱讀

    大語(yǔ)言模型的預(yù)訓(xùn)練

    能力,逐漸成為NLP領(lǐng)域的研究熱點(diǎn)。大語(yǔ)言模型的預(yù)訓(xùn)練是這一技術(shù)發(fā)展的關(guān)鍵步驟,它通過(guò)在海量無(wú)標(biāo)簽數(shù)據(jù)上進(jìn)行訓(xùn)練,使模型學(xué)習(xí)到語(yǔ)言的通用知識(shí),為后續(xù)的任務(wù)微調(diào)奠定基礎(chǔ)。本文將深入探討大
    的頭像 發(fā)表于 07-11 10:11 ?249次閱讀

    人臉識(shí)別模型訓(xùn)練流程

    人臉識(shí)別模型訓(xùn)練流程是計(jì)算機(jī)視覺(jué)領(lǐng)域中的一項(xiàng)重要技術(shù)。本文將詳細(xì)介紹人臉識(shí)別模型訓(xùn)練流程,包括數(shù)據(jù)準(zhǔn)備、模型選擇、
    的頭像 發(fā)表于 07-04 09:19 ?498次閱讀

    人臉識(shí)別模型訓(xùn)練失敗原因有哪些

    人臉識(shí)別模型訓(xùn)練失敗的原因有很多,以下是一些常見(jiàn)的原因及其解決方案: 數(shù)據(jù)集質(zhì)量問(wèn)題 數(shù)據(jù)集是訓(xùn)練人臉識(shí)別模型的基礎(chǔ)。如果數(shù)據(jù)集存在質(zhì)量問(wèn)題,將直接影響
    的頭像 發(fā)表于 07-04 09:17 ?357次閱讀

    人臉識(shí)別模型訓(xùn)練是什么意思

    人臉識(shí)別模型訓(xùn)練是指通過(guò)大量的人臉數(shù)據(jù),使用機(jī)器學(xué)習(xí)或深度學(xué)習(xí)算法,訓(xùn)練出一個(gè)能夠識(shí)別和分類人臉的模型。這個(gè)模型可以應(yīng)用于各種場(chǎng)景,如安防監(jiān)
    的頭像 發(fā)表于 07-04 09:16 ?334次閱讀

    預(yù)訓(xùn)練模型的基本原理和應(yīng)用

    訓(xùn)練好的模型,這些模型通常在某些通用任務(wù)上表現(xiàn)出色,并且可以作為后續(xù)特定任務(wù)的起點(diǎn),通過(guò)遷移學(xué)習(xí)或微調(diào)(Fine-tuning)等方式進(jìn)行適應(yīng)和優(yōu)化。以下是對(duì)預(yù)
    的頭像 發(fā)表于 07-03 18:20 ?1433次閱讀

    深度學(xué)習(xí)模型訓(xùn)練過(guò)程詳解

    深度學(xué)習(xí)模型訓(xùn)練是一個(gè)復(fù)雜且關(guān)鍵的過(guò)程,它涉及大量的數(shù)據(jù)、計(jì)算資源和精心設(shè)計(jì)的算法。訓(xùn)練一個(gè)深度學(xué)習(xí)模型,本質(zhì)上是通過(guò)優(yōu)化算法調(diào)整
    的頭像 發(fā)表于 07-01 16:13 ?488次閱讀

    如何訓(xùn)練優(yōu)化神經(jīng)網(wǎng)絡(luò)

    神經(jīng)網(wǎng)絡(luò)是人工智能領(lǐng)域的重要分支,廣泛應(yīng)用于圖像識(shí)別、自然語(yǔ)言處理、語(yǔ)音識(shí)別等多個(gè)領(lǐng)域。然而,要使神經(jīng)網(wǎng)絡(luò)在實(shí)際應(yīng)用中取得良好效果,必須進(jìn)行有效的訓(xùn)練優(yōu)化。本文將從神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過(guò)程、常用優(yōu)
    的頭像 發(fā)表于 07-01 14:14 ?268次閱讀

    深度學(xué)習(xí)的模型優(yōu)化與調(diào)試方法

    深度學(xué)習(xí)模型訓(xùn)練過(guò)程中,往往會(huì)遇到各種問(wèn)題和挑戰(zhàn),如過(guò)擬合、欠擬合、梯度消失或爆炸等。因此,對(duì)深度學(xué)習(xí)模型進(jìn)行優(yōu)化與調(diào)試是確保其性能優(yōu)越的關(guān)鍵步驟。本文將從數(shù)據(jù)預(yù)處理、
    的頭像 發(fā)表于 07-01 11:41 ?458次閱讀

    談?wù)?十折交叉驗(yàn)證訓(xùn)練模型

    談?wù)?十折交叉驗(yàn)證訓(xùn)練模型
    的頭像 發(fā)表于 05-15 09:30 ?567次閱讀

    【大語(yǔ)言模型:原理與工程實(shí)踐】大語(yǔ)言模型的預(yù)訓(xùn)練

    大語(yǔ)言模型的核心特點(diǎn)在于其龐大的參數(shù)量,這賦予了模型強(qiáng)大的學(xué)習(xí)容量,使其無(wú)需依賴微調(diào)即可適應(yīng)各種下游任務(wù),而更傾向于培養(yǎng)通用的處理能力。然而,隨著學(xué)習(xí)容量的增加,對(duì)預(yù)訓(xùn)練數(shù)據(jù)的需求也相應(yīng)
    發(fā)表于 05-07 17:10

    谷歌模型訓(xùn)練軟件有哪些?谷歌模型訓(xùn)練軟件哪個(gè)好?

    谷歌在模型訓(xùn)練方面提供了一些強(qiáng)大的軟件工具和平臺(tái)。以下是幾個(gè)常用的谷歌模型訓(xùn)練軟件及其特點(diǎn)。
    的頭像 發(fā)表于 03-01 16:24 ?676次閱讀

    如何優(yōu)化深度學(xué)習(xí)模型?

    因?yàn)榇蟛糠秩耸褂玫?b class='flag-5'>模型都是預(yù)訓(xùn)練模型,使用的權(quán)重都是在大型數(shù)據(jù)集上訓(xùn)練好的模型,當(dāng)然不需要自己去初始化權(quán)重了。只有沒(méi)有預(yù)
    發(fā)表于 01-29 14:25 ?1039次閱讀
    如何<b class='flag-5'>優(yōu)化</b>深度學(xué)習(xí)<b class='flag-5'>模型</b>?

    如何基于深度學(xué)習(xí)模型訓(xùn)練實(shí)現(xiàn)圓檢測(cè)與圓心位置預(yù)測(cè)

    Hello大家好,今天給大家分享一下如何基于深度學(xué)習(xí)模型訓(xùn)練實(shí)現(xiàn)圓檢測(cè)與圓心位置預(yù)測(cè),主要是通過(guò)對(duì)YOLOv8姿態(tài)評(píng)估模型在自定義的數(shù)據(jù)集上訓(xùn)練
    的頭像 發(fā)表于 12-21 10:50 ?1397次閱讀
    如何基于深度學(xué)習(xí)<b class='flag-5'>模型</b><b class='flag-5'>訓(xùn)練</b>實(shí)現(xiàn)圓<b class='flag-5'>檢測(cè)</b>與圓心位置預(yù)測(cè)