要開發(fā)準(zhǔn)確的計(jì)算機(jī)視覺 AI 應(yīng)用程序,您需要大量高質(zhì)量的數(shù)據(jù)。對于傳統(tǒng)的數(shù)據(jù)集,您可能需要花費(fèi)數(shù)月的時間來收集圖像、獲取注釋和清理數(shù)據(jù)。完成后,您可以找到邊緣案例并需要更多數(shù)據(jù),從而重新開始循環(huán)。
多年來,這種循環(huán)阻礙了人工智能的發(fā)展,尤其是在計(jì)算機(jī)視覺領(lǐng)域。 Lexset 構(gòu)建工具,使您能夠生成數(shù)據(jù) 來解決這個瓶頸。作為 AI 培訓(xùn)周期的一部分,可以開發(fā)和迭代具有培訓(xùn)數(shù)據(jù)的強(qiáng)大新工作流。
Lexset 的 Seahaven 平臺可以在幾分鐘內(nèi)生成完全帶注釋的數(shù)據(jù)集,包括照片級真實(shí)感 RGB 圖像、語義分割和深度圖。迭代可以快速有效地提高模型的準(zhǔn)確性。尋找異常事件或罕見情況的數(shù)據(jù)不再需要幾個月的時間。只需快速調(diào)整配置并生成新數(shù)據(jù),即可使您的模型比以往任何時候都更好。
從 Seahaven 生成的合成數(shù)據(jù)可用于微調(diào)和定制 NVIDIA TAO 工具包中的預(yù)訓(xùn)練模型。 TAO 工具包是一種低代碼 AI 模型開發(fā)解決方案,它抽象了 AI 框架的復(fù)雜性,并使您能夠使用 transfer learning 為您的特定用例創(chuàng)建定制的、生產(chǎn)就緒的模型。
通過使用 Seahaven 和 TAO 工具包創(chuàng)建初始數(shù)據(jù)集,大大減少時間并提高準(zhǔn)確性。最重要的是,您可以使用合成數(shù)據(jù)快速調(diào)整模型以適應(yīng)不斷變化的條件和不斷增加的復(fù)雜性。
解決方案概述
對于這個實(shí)驗(yàn),您可以使用一個簡單的用例,構(gòu)建一個計(jì)算機(jī)視覺模型,該模型能夠發(fā)現(xiàn)并區(qū)分常見的硬件項(xiàng)目,例如螺釘。您從一個簡單的背景開始,引入更多的復(fù)雜性來展示合成數(shù)據(jù)如何適應(yīng)不斷變化的條件。
我們創(chuàng)建了一個包含四個螺釘注釋的圖像的數(shù)據(jù)集,并使用 TAO 工具包對象檢測模型開始。我們使用了更快的 R-CNN 、 RetinaNet 和 YOLOv3 。
在這篇文章中,我介紹了運(yùn)行這個示例數(shù)據(jù)集所需的步驟,您可以通過更快的R-CNN來運(yùn)行這個示例數(shù)據(jù)集。要運(yùn)行RetinaNet或YOLOv3,步驟相同,并且在提供的Jupyter筆記本中。
我還分享了 Lexset 合成數(shù)據(jù)如何與模型訓(xùn)練配合使用,以快速解決隨著用例變得更加復(fù)雜而可能出現(xiàn)的準(zhǔn)確性問題。
要創(chuàng)建自己的數(shù)據(jù)集以與 TAO 工具包一起使用,請按照 Using Seahaven 和 Seahaven documentation 中的說明進(jìn)行操作。
要再現(xiàn)所述結(jié)果,請遵循以下主要步驟:
使用預(yù)先訓(xùn)練的 ResNet-18 模型,并在 Lexset 的四螺釘合成數(shù)據(jù)集上訓(xùn)練 ResNet-18 更快的 RCNN 模型。
在合成數(shù)據(jù)集上使用經(jīng)過最佳訓(xùn)練的權(quán)重,并使用真實(shí)世界四螺桿數(shù)據(jù)集的 10% 對其進(jìn)行微調(diào)。
在真實(shí)螺釘驗(yàn)證數(shù)據(jù)集上評估最佳訓(xùn)練和微調(diào)權(quán)重。
對經(jīng)過訓(xùn)練的模型進(jìn)行推理。
先決條件
NVIDIA TAO 工具包需要 NVIDIA GPU (例如, A100 )和驅(qū)動程序才能使用其 Docker 容器,因此必須有一個才能繼續(xù)。
您還需要至少 16 GB 的物理 RAM 、 50 GB 的可用內(nèi)存和 8 核。我們在 Python 3.6.9 上進(jìn)行了測試,并使用了 Ubuntu 18.04 。 TAO 工具包需要 NVIDIA 驅(qū)動程序 455 。 xx 或更高版本。
tao 啟動器嚴(yán)格來說是一個只支持 python3 的包,能夠在 Python 3.6.9 或 3.7 或 3.8 上運(yùn)行。
按照 Docker 官方說明 安裝 docker ce 。
安裝 docker ce 后,請遵循 post-installation steps 以確保 docker 可以在沒有 sudo 的情況下運(yùn)行。
Install nvidia-container-toolkit 。
您必須有一個 NGC 帳戶和一個與您的帳戶關(guān)聯(lián)的 API 密鑰。
下載數(shù)據(jù)集
從 Google 驅(qū)動器文件夾 (筆記本中也提供了鏈接)下載數(shù)據(jù)集,其中包含螺釘合成圖像和真實(shí)圖像的所有 zip 文件。
● synthetic_dataset_without_complex_phase1.zip ● synthetic_dataset_with_complex_phase2.zip ● real_dataset.zip
將synthetic_dataset_without_complex_phase1.zip
和real_dataset.zip
中的數(shù)據(jù)集提取到/data
目錄中。數(shù)據(jù)集目錄結(jié)構(gòu)應(yīng)如下所示:
├── real_test ├── real_train ├── synthetic_test └── synthetic_train
TAO Toolkit 支持 KITTI 格式的數(shù)據(jù)集,并且提供的數(shù)據(jù)集已經(jīng)是該格式。要進(jìn)一步驗(yàn)證,請參閱 KITTI 文件格式 。
環(huán)境設(shè)置
使用virtualenvwrapper創(chuàng)建新的虛擬環(huán)境。有關(guān)更多信息,請參閱 Python 指南中的 Virtual Environments 。
按照說明安裝virtualenv和virtualenvwrapper后,設(shè)置 Python 版本:
echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3" >> ~/.bashrc source ~/.bashrc mkvirtualenv launcher -p /usr/bin/python3
克隆存儲庫:
git clone https://github.com/Lexset/NVIDIA-TAO-Toolkit---Synthetic-Data.git cd tao-screws
要安裝環(huán)境所需的依賴項(xiàng),請安裝需求。 txt 文件:
pip3 install -r requirements.txt
啟動 Jupyter 筆記本:
cd faster_rcnn jupyter notebook --ip 0.0.0.0 --allow-root --port 8888
設(shè)置 TAO 工具包裝載
筆記本有一個生成~/.tao_mounts.json文件的腳本。
{ "Mounts": [ { "source": "ABSOLUTE_PATH_TO_PROJECT_NETWORK_DIRECTORY", "destination": "/workspace/tao-experiments" }, { "source": "ABSOLUTE_PATH_TO_PROJECT_NETWORK_SPECS_DIRECTORY", "destination": "/workspace/tao-experiments/faster_rcnn/specs" } ], "Envs": [ { "variable": "CUDA_VISIBLE_DEVICES", "value": "0" } ], "DockerOptions": { "shm_size": "16G", "ulimits": { "memlock": -1, "stack": 67108864 }, "user": "1001:1001" } }
代碼示例在 Ubuntu 主目錄中生成全局~/.tao_mounts.json文件。
將數(shù)據(jù)集處理為 TFRecords
下載數(shù)據(jù)集并將其放入數(shù)據(jù)目錄后,下一步是將 KITTI 文件轉(zhuǎn)換為 NVIDIA TAO 工具包使用的 TFRecord 格式。為合成數(shù)據(jù)集和真實(shí)數(shù)據(jù)集生成 TFrecords 。 Jupyter 筆記本中的此代碼示例生成 TFrecords :
#KITTI trainval !tao faster_rcnn dataset_convert --gpu_index $GPU_INDEX -d $SPECS_DIR/faster_rcnn_tfrecords_kitti_synth_train.txt \ -o $DATA_DOWNLOAD_DIR/tfrecords/kitti_synthetic_train/kitti_synthetic_train !tao faster_rcnn dataset_convert --gpu_index $GPU_INDEX -d $SPECS_DIR/faster_rcnn_tfrecords_kitti_synth_test.txt \ -o $DATA_DOWNLOAD_DIR/tfrecords/kitti_synthetic_test/kitti_synthetic_test
筆記本中的下一個代碼示例對真實(shí)數(shù)據(jù)集應(yīng)用了相同的轉(zhuǎn)換。
下載 ResNet-18 卷積主干網(wǎng)
在本地設(shè)置 NGC CLI 時,下載卷積主干網(wǎng) ResNet-18 。
!ngc registry model list nvidia/tao/pretrained_object_detection*
使用合成數(shù)據(jù)運(yùn)行基準(zhǔn)測試
以下命令開始對合成數(shù)據(jù)進(jìn)行訓(xùn)練,所有日志都保存在out_resnet18_synth_amp16.log文件中。要查看日志,請打開文件,如果文件已打開,請刷新選項(xiàng)卡。
!tao faster_rcnn train --gpu_index $GPU_INDEX -e $SPECS_DIR/default_spec_resnet18_synth_train.txt --use_amp > out_resnet18_synth_amp16.log
或者,您可以使用tail
命令查看日志的最后幾行。
!tail -f ./out_resnet18_synth_amp16.log
在合成數(shù)據(jù)集上完成訓(xùn)練后,可以使用以下命令在 10% 合成驗(yàn)證數(shù)據(jù)集上評估合成訓(xùn)練模型:
!tao faster_rcnn evaluate --gpu_index $GPU_INDEX -e $SPECS_DIR/default_spec_resnet18_synth_train.txt
您可以看到如下結(jié)果。
[email protected] = 0.9986
您還可以看到每個類的各個地圖分?jǐn)?shù)。
用真實(shí)數(shù)據(jù)微調(diào)綜合訓(xùn)練模型
現(xiàn)在,使用來自合成訓(xùn)練的最佳訓(xùn)練權(quán)重,并對真實(shí)螺釘數(shù)據(jù)集的 10% 進(jìn)行微調(diào)。real_train中的/train文件夾已處于 10% 的拆分狀態(tài),您可以使用以下命令開始微調(diào):
!tao faster_rcnn train --gpu_index $GPU_INDEX -e $SPECS_DIR/default_spec_resnet18_real_train.txt --use_amp > out_resnet18_synth_fine_tune_10_amp16.log
結(jié)果:實(shí)際數(shù)據(jù)改善了 10%
每個歷元的地圖分?jǐn)?shù)如下所示:
[email protected] = 0.9408 [email protected] = 0.9714 [email protected] = 0.9732 [email protected] = 0.9781 [email protected] = 0.9745 [email protected] = 0.9780 [email protected] = 0.9815 [email protected] = 0.9820 [email protected] = 0.9803 [email protected] = 0.9796 [email protected] = 0.9810 [email protected] = 0.9817
只需對真實(shí)螺釘數(shù)據(jù)集的 10% 進(jìn)行微調(diào),即可快速改善結(jié)果, mAP 得分超過 98% 。從合成數(shù)據(jù)集中學(xué)習(xí)到的功能在微調(diào)過程中對實(shí)際螺釘數(shù)據(jù)集的 10% 有所幫助。
在合成螺釘驗(yàn)證數(shù)據(jù)集中添加復(fù)雜背景
為了進(jìn)一步驗(yàn)證綜合訓(xùn)練模型,我們向復(fù)雜背景數(shù)據(jù)集中添加了 300 多幅圖像。由于初始合成數(shù)據(jù)集不是在復(fù)雜背景下獲取的,因此平均精度顯著下降。
就像真實(shí)世界一樣,隨著用例變得更加復(fù)雜,準(zhǔn)確性也會受到影響。當(dāng)對包含更復(fù)雜或敵對背景的圖像進(jìn)行驗(yàn)證時,地圖得分從 98% 左右下降到 83.5% 。
重新訓(xùn)練具有復(fù)雜背景的合成數(shù)據(jù)集
這就是合成數(shù)據(jù)真正閃耀的地方。為了減少在復(fù)雜圖像上驗(yàn)證時地圖的丟失,我生成了具有更復(fù)雜背景的其他圖像,以添加到訓(xùn)練數(shù)據(jù)中。我只是調(diào)整了背景,以便新的訓(xùn)練數(shù)據(jù)集在幾秒鐘內(nèi)就準(zhǔn)備好了。新數(shù)據(jù)集推出后,性能提高了令人難以置信的 10-12% ,而無需進(jìn)行其他更改。
具有復(fù)雜背景的數(shù)據(jù)集位于前面提到的 zip 文件synthetic_dataset_with_complex.zip中。提取此文件并用相同的名稱替換/ data 目錄中的文件夾,以獲得具有復(fù)雜背景的更新合成數(shù)據(jù)集。
Average Mean Precision: mAP= 94.97% Increase in mAP score: 11.47%
具體來說,在幾分鐘的工作后,復(fù)雜背景系統(tǒng)的準(zhǔn)確率提高了 11.47% ,達(dá)到 94.97% 。
結(jié)論
結(jié)果表明,使用合成數(shù)據(jù)和 TAO 工具包進(jìn)行迭代是多么有效和快速。使用 Lexset’s Seahaven ,您可以在幾分鐘內(nèi)生成新數(shù)據(jù),并使用它解決引入復(fù)雜背景時遇到的準(zhǔn)確性問題。
合成數(shù)據(jù)集的重要性現(xiàn)在已經(jīng)很清楚了,因?yàn)獒槍φ鎸?shí)螺釘數(shù)據(jù)的 90% 驗(yàn)證數(shù)據(jù)集上的微調(diào)模型的性能非常好。當(dāng)實(shí)際或真實(shí)數(shù)據(jù)較少時,使用合成數(shù)據(jù)集進(jìn)行初始特征學(xué)習(xí)。合成數(shù)據(jù)集可以節(jié)省大量時間和成本,同時產(chǎn)生優(yōu)異的結(jié)果。
我相信這是計(jì)算機(jī)視覺發(fā)展的未來,數(shù)據(jù)生成與模型迭代同步進(jìn)行。這將為用戶提供更大的控制,并使您能夠構(gòu)建世界上最好的系統(tǒng)。
關(guān)于作者
Christian Gartland 是 Lexset 的軟件工程師,他在 Lexset 生產(chǎn)合成數(shù)據(jù)集,并為公司的合成數(shù)據(jù)生成平臺 Seahaven 開發(fā)新功能。在加入 Lexset 之前,他為建筑、工程和建筑行業(yè)開發(fā)了軟件。他擁有倫斯勒理工學(xué)院建筑學(xué)士學(xué)位。
審核編輯:郭婷
-
NVIDIA
+關(guān)注
關(guān)注
14文章
5258瀏覽量
105843 -
gpu
+關(guān)注
關(guān)注
28文章
4915瀏覽量
130714 -
python
+關(guān)注
關(guān)注
56文章
4825瀏覽量
86264
發(fā)布評論請先 登錄
NVIDIA GTC巴黎亮點(diǎn):全新Cosmos Predict-2世界基礎(chǔ)模型與CARLA集成加速智能汽車訓(xùn)練
首創(chuàng)開源架構(gòu),天璣AI開發(fā)套件讓端側(cè)AI模型接入得心應(yīng)手
英偉達(dá)GTC2025亮點(diǎn) NVIDIA推出Cosmos世界基礎(chǔ)模型和物理AI數(shù)據(jù)工具的重大更新
技術(shù)分享 | AVM合成數(shù)據(jù)仿真驗(yàn)證方案

英偉達(dá)推出基石世界模型Cosmos,解決智駕與機(jī)器人具身智能訓(xùn)練數(shù)據(jù)問題

NVIDIA發(fā)布Cosmos平臺,加速物理AI開發(fā)
NVIDIA推出加速物理AI開發(fā)的Cosmos世界基礎(chǔ)模型
NVIDIA發(fā)布Cosmos?平臺,助力物理AI系統(tǒng)發(fā)展
NVIDIA推出面向RTX AI PC的AI基礎(chǔ)模型
NVIDIA推出全新生成式AI模型Fugatto
NVIDIA助力Figure發(fā)布新一代對話式人形機(jī)器人
NVIDIA Omniverse微服務(wù)助力構(gòu)建大規(guī)模數(shù)字孿生
NVIDIA為AI城市挑戰(zhàn)賽構(gòu)建合成數(shù)據(jù)集
NVIDIA Nemotron-4 340B模型幫助開發(fā)者生成合成訓(xùn)練數(shù)據(jù)

NVIDIA AI Foundry 為全球企業(yè)打造自定義 Llama 3.1 生成式 AI 模型

評論