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

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

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

物件檢測進(jìn)行模型訓(xùn)練的詳細(xì)步驟

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

當(dāng)前面的準(zhǔn)備工作都已妥善之后,就可以進(jìn)入模型訓(xùn)練的步驟,后面的工作就是計算設(shè)備的事情了。

4、 執(zhí)行 TAO 模型訓(xùn)練:

TAO 工具提供提供 QAT (Quantize Aware Training) 量化感知的訓(xùn)練模式,不過目前 QAT 效果還在驗證當(dāng)中,倒也不急于使用,因此我們還是以標(biāo)準(zhǔn)模式來訓(xùn)練,就是將配置文件中 training_config 設(shè)置組的 “enable_qat” 參數(shù)設(shè)為 “false” 就行,然后直接執(zhí)行指令塊的命令,TAO 就會啟動視覺類容器來執(zhí)行模型訓(xùn)練任務(wù)。

這里提供兩組執(zhí)行訓(xùn)練所花費的時間參考數(shù)據(jù):

  • NVIDIA Qudra RTX A4000/16GB 顯存:48 秒/回合

  • NVIDIA RTX-2070/16GB 顯存:67 秒/回合

  • 兩張卡一起訓(xùn)練:40秒/回合

為了更有效率地執(zhí)行,我們可以在training_config設(shè)置組里添加 “checkpoint_interval: 10” 參數(shù),這樣每 10 回合生成一個中間文件,這樣能節(jié)省大約 7GB 的空間?,F(xiàn)在檢查一下所生成的中間模型文件,如下圖所示總共 8 個。

e7b9fa68-d055-11ec-bce3-dac502259ad0.png

接下去我們看看這 8 個模型的訓(xùn)練效果如何,因為得挑一個精確度 (mAP) 最好的文件,進(jìn)行后面的修剪任務(wù)。

通常越后面的模型 mAP 值越高,但這不是絕對的,最好是有明確的數(shù)據(jù)來做依據(jù),才是比較科學(xué)的態(tài)度。在 experiment_dir_unpruned/ssd_training_log_resnet18.csv 提供這些記錄,右鍵點擊文件 -> Open With-> CSVTable 之后,就會看到如下圖的內(nèi)容。

e7f135aa-d055-11ec-bce3-dac502259ad0.png

表中可以看到,越下面模型的 mAP 值越高,這樣就能明確的選擇 “epoch_080” 的模型來進(jìn)行后續(xù)工作,記得在 “%set_env EPOCH=” 后面填入?yún)?shù)值,例如要選擇第 80 回合的模型文件,就輸入 “080”,然后繼續(xù)往下進(jìn)行。

5、評估模型好的訓(xùn)練:

這個步驟的目的是為了確認(rèn)模型是否符合要求?有時候可能效果最好的模型,效果還未達(dá)到預(yù)期目標(biāo),如果是這樣的話,就得回到第 4 步驟,以前面找到效果最好的模型,作為遷移選項的預(yù)訓(xùn)練模型,就是將配置文件的 training_config 設(shè)置組的 “pretrain_model_path” 改成 ssd_resnet18_epoch_080.tlt 的完整路徑,然后再做 80 回合的訓(xùn)練。

執(zhí)行評估效果的結(jié)構(gòu)在本指令塊輸出的最下方,如下圖所示。

e82abc8a-d055-11ec-bce3-dac502259ad0.png

比對一下這里顯示的精準(zhǔn)度,與前面 ssd_training_log_resnet18.csv 記錄的結(jié)果是相同的,其實這個步驟是有點冗余,可以忽略!

6、修剪模型:

如果您的模型要放在計算資源充沛的設(shè)備上執(zhí)行推理的話,其實后面的步驟是可以省略的,因此修剪模型的目的,是要在精確度維持水平的基礎(chǔ)上將模型進(jìn)行優(yōu)化,這對 Jetson 這類計算資源吃緊的邊緣設(shè)備來說就非常重要,因為這對推理性能有很大的影響,因此要看您所需要執(zhí)行推理的設(shè)備是什么,再決定是否要進(jìn)行修剪。

每個神經(jīng)網(wǎng)絡(luò)都有各自的修剪重點,必須找到對應(yīng)的說明文件,例如這里對ssd進(jìn)行修剪,請訪問https://docs.nvidia.com/tao/tao-toolkit/text/object_detection/ssd.html,在里面的 “Pruning the Model” 有非常詳細(xì)的參數(shù)說明。

TAO 提供以下 6 種模型修剪的方式,設(shè)定值的粗體字為預(yù)設(shè)值

  • 標(biāo)準(zhǔn)化器 (normalizer):使用參數(shù) -n,設(shè)定值為 “max/L2”;

  • 均衡器 (equalization_criterion):使用參數(shù) -eq,設(shè)定值為 “union/ intersection/ arithmetic_mean/geometric_mean”;

  • 修剪粒度 (pruning_granularity):使用參數(shù) -pq,設(shè)定值為正整數(shù),預(yù)設(shè)值為 8;

  • 修剪閾值 (pruning threshold):使用參數(shù) -pth,設(shè)定值為小于 1 的浮點數(shù),預(yù)設(shè)值為 0.1

  • 最小數(shù)量過濾器 (min_num_filters):使用參數(shù) -nf,設(shè)定值為正整數(shù),預(yù)設(shè)值為 16;

  • 排除層 (excluded_layers):使用參數(shù) -el,設(shè)定值為正整數(shù),預(yù)設(shè)值為空值(不排除)

在大家還不熟悉這些參數(shù)用法時,最簡單的方法就是調(diào)整閾值 (-pth) 的大小去找到平衡點,通常這個值越高就會損失較大的精度值,模型也會比較更小大。參數(shù)預(yù)設(shè)值為 0.1,差不多達(dá)0.3 已經(jīng)是極限,再大可能就會讓精準(zhǔn)度低于一般要求。

這個步驟會用到 ssd_train_resnet18_kitti.txt 配置文件,修剪完的模型會存放在 -o參數(shù)所指定的目錄,這里是“$USER_EXPERIMENT_DIR/experiment_dir_pruned”,輸出的模型文件名為 “ssd_resnet18_pruned.tlt”,后面的“重新訓(xùn)練剪裁模型”步驟,就會以這個文件作為遷移學(xué)習(xí)的訓(xùn)練基礎(chǔ)。

這個修剪過的模型文件還不能作為部署用途,還得經(jīng)過下個步驟去重新訓(xùn)練之后,是我們最終所需要的版本。

7、重新訓(xùn)練修剪過的模型:

這個步驟與前面的模型訓(xùn)練幾乎是一樣的,唯一不同的地方就是前面以 NCG 下載resnet_18.hdf5 為基礎(chǔ)導(dǎo)入遷移學(xué)習(xí)的功能,這里是以 ssd_resnet18_pruned.tlt 這個修剪過的文件為基礎(chǔ),同樣用最前面的數(shù)據(jù)集進(jìn)行訓(xùn)練。

以這個項目為例,未剪裁模型的大小為 101.7MB,用閾值為 0.1 所剪裁的重新訓(xùn)練模型大小只剩 22.5MB、閾值為 0.3 所剪裁的模型大小只剩 9.8MB。重新訓(xùn)練后同樣會生成很多模型文件,同樣查看 experiment_dir_retrain 目錄下面的 ssd_training_log_resnet18.csv,挑出精度最好的一個準(zhǔn)備下個評估環(huán)節(jié)。

8、評價重新訓(xùn)練的模型:

與前面的評估方式一樣,找到效果最好的一個,然后將數(shù)值填入 “%set_envEPOCH=” 里,準(zhǔn)備在訓(xùn)練設(shè)備上測試一下推理的效果。

如果修剪后重新訓(xùn)練的模型精度與未修剪的相差不多,這個模型就可以用來作為后面的推理測試,如果精度差距較大,就得回到第 6 步驟重新執(zhí)行修剪工作與第 7 步驟重新訓(xùn)練,一直到獲得滿意精度的模型為止。

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

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

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

    關(guān)注

    14

    文章

    4817

    瀏覽量

    102637
  • TAO
    TAO
    +關(guān)注

    關(guān)注

    0

    文章

    10

    瀏覽量

    6987
  • 模型訓(xùn)練
    +關(guān)注

    關(guān)注

    0

    文章

    17

    瀏覽量

    1328

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

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

收藏 人收藏

    評論

    相關(guān)推薦

    如何訓(xùn)練自己的AI大模型

    訓(xùn)練自己的AI大模型是一個復(fù)雜且耗時的過程,涉及多個關(guān)鍵步驟。以下是一個詳細(xì)訓(xùn)練流程: 一、明確需求和目標(biāo) 首先,需要明確自己的需求和目標(biāo)
    的頭像 發(fā)表于 10-23 15:07 ?98次閱讀

    如何訓(xùn)練ai大模型

    訓(xùn)練AI大模型是一個復(fù)雜且耗時的過程,涉及多個關(guān)鍵步驟和細(xì)致的考量。 一、數(shù)據(jù)準(zhǔn)備 1. 數(shù)據(jù)收集 確定數(shù)據(jù)類型 :根據(jù)模型的應(yīng)用場景,確定需要收集的數(shù)據(jù)類型,如文本、圖像、音頻等。
    的頭像 發(fā)表于 10-17 18:17 ?372次閱讀

    AI訓(xùn)練的基本步驟

    AI(人工智能)訓(xùn)練是一個復(fù)雜且系統(tǒng)的過程,它涵蓋了從數(shù)據(jù)收集到模型部署的多個關(guān)鍵步驟。以下是對AI訓(xùn)練過程的詳細(xì)闡述,包括每個
    的頭像 發(fā)表于 07-17 16:57 ?1251次閱讀

    使用TensorFlow進(jìn)行神經(jīng)網(wǎng)絡(luò)模型更新

    使用TensorFlow進(jìn)行神經(jīng)網(wǎng)絡(luò)模型的更新是一個涉及多個步驟的過程,包括模型定義、訓(xùn)練、評估以及根據(jù)新數(shù)據(jù)或需求
    的頭像 發(fā)表于 07-12 11:51 ?267次閱讀

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

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

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

    能力,逐漸成為NLP領(lǐng)域的研究熱點。大語言模型的預(yù)訓(xùn)練是這一技術(shù)發(fā)展的關(guān)鍵步驟,它通過在海量無標(biāo)簽數(shù)據(jù)上進(jìn)行訓(xùn)練,使
    的頭像 發(fā)表于 07-11 10:11 ?320次閱讀

    tensorflow簡單的模型訓(xùn)練

    在本文中,我們將詳細(xì)介紹如何使用TensorFlow進(jìn)行簡單的模型訓(xùn)練。TensorFlow是一個開源的機器學(xué)習(xí)庫,廣泛用于各種機器學(xué)習(xí)任務(wù),包括圖像識別、自然語言處理等。我們將從安裝
    的頭像 發(fā)表于 07-05 09:38 ?413次閱讀

    如何在TensorFlow中構(gòu)建并訓(xùn)練CNN模型

    在TensorFlow中構(gòu)建并訓(xùn)練一個卷積神經(jīng)網(wǎng)絡(luò)(CNN)模型是一個涉及多個步驟的過程,包括數(shù)據(jù)預(yù)處理、模型設(shè)計、編譯、訓(xùn)練以及評估。下面
    的頭像 發(fā)表于 07-04 11:47 ?583次閱讀

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

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

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

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

    解讀PyTorch模型訓(xùn)練過程

    PyTorch作為一個開源的機器學(xué)習(xí)庫,以其動態(tài)計算圖、易于使用的API和強大的靈活性,在深度學(xué)習(xí)領(lǐng)域得到了廣泛的應(yīng)用。本文將深入解讀PyTorch模型訓(xùn)練的全過程,包括數(shù)據(jù)準(zhǔn)備、模型構(gòu)建、訓(xùn)
    的頭像 發(fā)表于 07-03 16:07 ?733次閱讀

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

    詳細(xì)介紹深度學(xué)習(xí)模型訓(xùn)練的全過程,包括數(shù)據(jù)預(yù)處理、模型構(gòu)建、損失函數(shù)定義、優(yōu)化算法選擇、訓(xùn)練過程以及模型
    的頭像 發(fā)表于 07-01 16:13 ?781次閱讀

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

    數(shù)據(jù)格式的轉(zhuǎn)換、數(shù)據(jù)字段的匹配和整合等。通過數(shù)據(jù)級凈化,可以進(jìn)一步提高數(shù)據(jù)的質(zhì)量和可用性,為后續(xù)的數(shù)據(jù)分析和建模提供更有價值的數(shù)據(jù)支持。 在得到了大語言模型的數(shù)據(jù)之后,就是對其進(jìn)行預(yù)訓(xùn)練。大圓
    發(fā)表于 05-07 17:10

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

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

    【飛騰派4G版免費試用】 第二章:在PC端使用 TensorFlow2 訓(xùn)練目標(biāo)檢測模型

    本章記錄了如何使用TensorFlow2 進(jìn)行目標(biāo)檢測模型訓(xùn)練的過程。
    的頭像 發(fā)表于 12-15 06:40 ?2322次閱讀
    【飛騰派4G版免費試用】 第二章:在PC端使用 TensorFlow2 <b class='flag-5'>訓(xùn)練</b>目標(biāo)<b class='flag-5'>檢測</b><b class='flag-5'>模型</b>