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

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

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

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

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

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

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

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

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

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

在系列文章 “視覺類訓(xùn)練腳本的環(huán)境配置” 內(nèi)有詳細(xì)的講解,這里只要對下面兩變量進(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 啟動器(Install the TAO launcher):

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

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

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

(1) TAO 的物件檢測模型訓(xùn)練支持 KITTI 標(biāo)注格式,這里使用的范例數(shù)據(jù)集與系列文章“視覺數(shù)據(jù)格式處理與增強(qiáng)”是同一套,如果前面實(shí)驗(yàn)已將下載的話就復(fù)制一份過來就行,也可以重新在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  # 請根據(jù)您實(shí)際路徑unzip -u data_object_image_2.zip -d dataunzip-udata_object_label_2.zip-ddata

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

如果有自己的數(shù)據(jù)集想要轉(zhuǎn)到 TAO 來進(jìn)行訓(xùn)練,除了先將標(biāo)注格式轉(zhuǎn)成 KITTI 之外,最好也遵循上面的路徑結(jié)構(gòu),這樣就不需修改 spec 目錄下相關(guān)配置文件里面的設(shè)定值,對初學(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 格式,分別存放在對應(yīng)的路徑之下。

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

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

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

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

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

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

現(xiàn)在就以 ssd_train_resnet18_kitti.txt 配置文件來做說明,里面總共有 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ò)之間的配置是不能套用或互換的。如果未來要開發(fā)自己的特殊模型,最好從現(xiàn)有的 20 范例里面去挑選,就能以該網(wǎng)絡(luò)的配置文件為基礎(chǔ)進(jìn)行修改。

關(guān)于這個(gè)配置組的內(nèi)容就不多時(shí)間去說明,初學(xué)者先不要貿(mào)然去修改,以免訓(xùn)練過程發(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:開啟QAT訓(xùn)練模式,這里預(yù)設(shè)值為 ”false”,表示不開啟

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

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

(3) evaluation_config:

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

(4) nms_config:

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

(5) augmentation_config:

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

(6) dataset_config:

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

  • 一組 data_source:

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

  • 多組 target_class_mapping:

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

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

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

  • 一組 validation_data_sources:

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

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

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

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

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 神經(jīng)網(wǎng)絡(luò)

    關(guān)注

    42

    文章

    4773

    瀏覽量

    100878
  • 檢測
    +關(guān)注

    關(guān)注

    5

    文章

    4496

    瀏覽量

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

    關(guān)注

    1

    文章

    3255

    瀏覽量

    48907

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

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

收藏 人收藏

    評論

    相關(guān)推薦

    AI模型部署邊緣設(shè)備的奇妙之旅:目標(biāo)檢測模型

    并非易事,它涉及到從選擇合適的算法架構(gòu)到針對特定硬件平臺進(jìn)行優(yōu)化等一系列復(fù)雜的工作。 接下來,我們將詳細(xì)介紹如何在資源受限的邊緣設(shè)備上成功部署目標(biāo)檢測模型,探索其背后的原理和技術(shù),并討論解決該領(lǐng)域內(nèi)常見
    發(fā)表于 12-19 14:33

    什么是大模型、大模型是怎么訓(xùn)練出來的及大模型作用

    本文通俗簡單地介紹了什么是大模型、大模型是怎么訓(xùn)練出來的和大模型的作用。 ? 什么是大模型模型
    的頭像 發(fā)表于 11-25 09:29 ?1760次閱讀
    什么是大<b class='flag-5'>模型</b>、大<b class='flag-5'>模型</b>是怎么<b class='flag-5'>訓(xùn)練</b>出來的及大<b class='flag-5'>模型</b>作用

    使用PyTorch在英特爾獨(dú)立顯卡上訓(xùn)練模型

    《PyTorch 2.5重磅更新:性能優(yōu)化+新特性》中的一個(gè)新特性就是:正式支持在英特爾獨(dú)立顯卡上訓(xùn)練模型
    的頭像 發(fā)表于 11-01 14:21 ?562次閱讀
    使用PyTorch在英特爾獨(dú)立顯卡上<b class='flag-5'>訓(xùn)練</b><b class='flag-5'>模型</b>

    AI大模型訓(xùn)練數(shù)據(jù)來源分析

    AI大模型訓(xùn)練數(shù)據(jù)來源廣泛且多元化,這些數(shù)據(jù)源對于構(gòu)建和優(yōu)化AI模型至關(guān)重要。以下是對AI大模型訓(xùn)練
    的頭像 發(fā)表于 10-23 15:32 ?730次閱讀

    AI大模型的性能優(yōu)化方法

    AI大模型的性能優(yōu)化是一個(gè)復(fù)雜而關(guān)鍵的任務(wù),涉及多個(gè)方面和策略。以下是一些主要的性能優(yōu)化方法: 一、模型壓縮與優(yōu)化
    的頭像 發(fā)表于 10-23 15:01 ?767次閱讀

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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