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

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

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

在目前深度學(xué)習(xí)中比較普及的“物件檢測(cè)”應(yīng)用

NVIDIA英偉達(dá)企業(yè)解決方案 ? 來(lái)源:NVIDIA英偉達(dá)企業(yè)解決方案 ? 作者:NVIDIA英偉達(dá)企業(yè)解 ? 2021-06-09 15:46 ? 次閱讀

接下來(lái)的重點(diǎn),就是在目前深度學(xué)習(xí)中比較普及的“物件檢測(cè)”應(yīng)用,重點(diǎn)主要有以下三部分:

1. 簡(jiǎn)單說(shuō)明“物件檢測(cè)”的內(nèi)容。

2. 使用本項(xiàng)目的 detecnet 物件分類(lèi)指令,進(jìn)行多樣化的推理識(shí)別測(cè)試。

3. 深入說(shuō)明 jetson.inference 模塊的 detectNet() 以及相關(guān)的函數(shù)用法。

如此讓大家能快速掌握這項(xiàng)物件檢測(cè)功能,以及開(kāi)發(fā)代碼的重點(diǎn)。

物件檢測(cè)(object detection)簡(jiǎn)單說(shuō)明

這是比圖像分類(lèi)更進(jìn)一步的應(yīng)用,因?yàn)槿粘I钪?,在絕大部分可看到的畫(huà)面中,不會(huì)只存在一個(gè)物體,通常是多種類(lèi)別的多個(gè)物體,左圖識(shí)別出有“四個(gè)人”、右圖識(shí)別出“一個(gè)人與一匹馬”,當(dāng)然真的要細(xì)部再探索的話,還有其他類(lèi)別的物體也可以被識(shí)別,這是視覺(jué)類(lèi)深度學(xué)習(xí)中使用頻率最高的一種應(yīng)用。

在物件檢測(cè)的識(shí)別中,還只是比較“概略性”地將物體用“矩形框”的方式來(lái)標(biāo)識(shí),那能不能將物體的“實(shí)際形狀”更細(xì)膩地標(biāo)識(shí)出來(lái)呢?當(dāng)然可以,這就是更高階的“語(yǔ)義分割”應(yīng)用,留在下一篇文章里面說(shuō)明。

前面的圖像分類(lèi)是以“一張圖像”為單位,這里的物件檢測(cè)則是以“物件框”為單位,因此所需要的數(shù)據(jù)集就不僅僅是圖像了,還要將圖像中所需要的類(lèi)別加以標(biāo)注,然后存成特定格式之后,提供給訓(xùn)練框架去進(jìn)行模型訓(xùn)練,這是相當(dāng)耗費(fèi)人力的一個(gè)過(guò)程,而且標(biāo)注的細(xì)膩程度也會(huì)對(duì)最終的精確度產(chǎn)生影響。

關(guān)于這個(gè)模型的訓(xùn)練過(guò)程,會(huì)在后面的文章中帶著大家動(dòng)手做一次,這也是整個(gè) Hello AI World 項(xiàng)目中的一部分,而且也提供非常好用的工具,協(xié)助大家采集數(shù)據(jù)、標(biāo)注物件框、進(jìn)行模型訓(xùn)練等。

以上就是物件檢測(cè)的簡(jiǎn)單說(shuō)明,接下去直接使用項(xiàng)目提供的 detectnet 指令來(lái)進(jìn)行實(shí)驗(yàn)。

detectnet 指令的使用

與 imagenet 的調(diào)用邏輯是一樣的,當(dāng)系統(tǒng)編譯好之后,就生成 detectnet 指令,可以在 Jetson 設(shè)備中任何地方調(diào)用。同樣的,項(xiàng)目也為 detectnet 準(zhǔn)備了幾個(gè)預(yù)訓(xùn)練好的網(wǎng)絡(luò)模型,可以非常輕松地調(diào)用,預(yù)訓(xùn)練模型。

系統(tǒng)預(yù)設(shè)的神經(jīng)網(wǎng)絡(luò)是 “SSD-Mobilenet-v2”,基于 91 種分類(lèi)的 COCO 數(shù)據(jù)集進(jìn)行模型訓(xùn)練,詳細(xì)的類(lèi)別內(nèi)容可以參考 ~/jetson-inference/data/networks 目錄下的ssd_coco_labels.txt,事實(shí)上能識(shí)別的物件有 90 種,另外加一個(gè) “unlabeled” 種類(lèi)。

detectnet 的參數(shù)調(diào)用與 imagenet 幾乎一致,輸入源與輸出標(biāo)的的支持方式完全相同,因此我們可以執(zhí)行下面指令,直接看看得到怎樣的效果:

cbee2fd4-c46c-11eb-9e57-12bb97331649.png

在執(zhí)行過(guò)程中,會(huì)看到命令終端不斷出現(xiàn)類(lèi)似下圖的信息,里面顯示一些重要的信息,包括“使用的網(wǎng)絡(luò)模型文件”、“4 個(gè)執(zhí)行階段占用時(shí)間”、“檢測(cè)到滿足閾值的物件數(shù)”、“物件類(lèi)別/置信度”,以及“物件位置”等信息。

cc1e55e2-c46c-11eb-9e57-12bb97331649.png

detectnet 也能導(dǎo)出 RTP 視頻流到指定的電腦,詳細(xì)用法請(qǐng)參考前面 “Utils的videoOutput 工具”一文中有詳細(xì)說(shuō)明,這個(gè)用法的實(shí)用度非常高,可以讓你將 Jetson Nano 2GB 設(shè)備放置在任何能接網(wǎng)絡(luò)的角落,不斷讀取攝像頭內(nèi)容在 Jetson 上執(zhí)行物件識(shí)別,然后將結(jié)果傳輸?shù)侥愕淖烂骐娔X或筆記本上,這樣你就可以非常輕松地進(jìn)行監(jiān)控。

輸入 “detectnet --help” 可以得到完整的幫助信息,由于內(nèi)容太多,我們?cè)谶@里不占用篇幅去說(shuō)明,多嘗試一些指令的組合,會(huì)讓你進(jìn)一步掌握這個(gè)指令的重點(diǎn)。

接下來(lái)看看如何在 Python 代碼中,調(diào)用這個(gè)項(xiàng)目的物件檢測(cè)函數(shù),來(lái)開(kāi)發(fā)自己的物件檢測(cè)應(yīng)用。

detectNet()函數(shù)的用法

與前面圖像分類(lèi)的邏輯一樣,作者雖然在 ~/jetson-inference/python/examples 下面提供了一個(gè) my-detection.py 范例,這個(gè)就是我們一開(kāi)始所示范的“ 10 行代碼威力”的內(nèi)容,這個(gè)范例的好處是“代碼量最少”,但對(duì)應(yīng)的缺點(diǎn)就是“彈性小、完整度不夠”,因此從務(wù)實(shí)的角度,我們還是推薦以 /usr/local/bin/detect.py 這只代碼為主,這只代碼能執(zhí)行的功能,與 detectnet 指令幾乎一致。

與 imagenet.py 代碼相同的,一開(kāi)始有一段“參數(shù)解析”的指令,如下截圖:

cc9cf1f4-c46c-11eb-9e57-12bb97331649.png

這部分同樣請(qǐng)參考先前的“參數(shù)解析功能”文章,在這里不重復(fù)贅述。接下來(lái)我們將與物件檢測(cè)有關(guān)的指令挑出來(lái)說(shuō)明,這樣可以讓讀者更加容易將焦點(diǎn)集中在有關(guān)的部分:

51 行:net = jetson.inference.detectNet(opt.network, sys.argv, opt.threshold)

用 jetson.inferene.detectNet() 函數(shù)建立 net 這個(gè)物件檢測(cè)對(duì)象,與前面的 imageNet() 的邏輯是一樣的,不過(guò)這里所輸入的參數(shù),除了 network(網(wǎng)絡(luò)模型類(lèi)別)之外,還多了一個(gè) threshold(閾值)。因?yàn)槲锛z測(cè)的功能,是要在圖像中識(shí)別出“所有可能”的物件,如果沒(méi)有一個(gè)“最低門(mén)檻”的限制,就會(huì)滿屏都是物件。

系統(tǒng)已經(jīng)給這兩個(gè)參數(shù)都提供預(yù)設(shè)值,network 預(yù)設(shè)為 “SSD-Mobilenet-v2”、threshold 預(yù)設(shè)值為 0.5。

如果要在代碼外部利用參數(shù)去改變?cè)O(shè)定,就可以如以下方式:

--network=multiped,表示要使用“Multiped-500”這個(gè)網(wǎng)絡(luò)模型

--threshold=0.3,表示將閾值改成0.3

這樣 net 對(duì)象就具備了執(zhí)行物件檢測(cè)的相關(guān)功能,然后再繼續(xù)以下的步驟。

63 行:detections = net.Detect(img, overlay=opt.overlay)

這道指令,就是將 input.Capture() 獲取的一幀圖形,傳入 net.Detect() 函數(shù)去執(zhí)行物件檢測(cè)的推理識(shí)別計(jì)算,另一個(gè)參數(shù) “overlay” 的功能是“檢測(cè)覆蓋”的一個(gè)標(biāo)識(shí),只影響顯示輸出的方式,與檢測(cè)結(jié)果并沒(méi)有關(guān)系,大部分時(shí)候都不需要去改變。

這里最重要的是 detections 這個(gè)數(shù)組變量,由于每幀圖像所檢測(cè)出來(lái)物件數(shù)量是不固定的,數(shù)組的結(jié)構(gòu)在說(shuō)明文件中并未完整表達(dá),因此需要從執(zhí)行的代碼中去找到蛛絲馬跡,這個(gè)部分在下一道指令中可以找到答案。

66~69 行:

print(“detected {:d} objects in image”.format(len(detections)))

for detection in detections:

print(detection)

這部分執(zhí)行完之后,會(huì)在命令終端上顯示兩個(gè)很重要的信息:

本幀圖像所找到滿足閾值的物件數(shù)量。

前面變量detections的數(shù)據(jù)結(jié)構(gòu)。

在命令終端執(zhí)行以下指令,

看看所顯示的信息,如下截屏:

ccc09b36-c46c-11eb-9e57-12bb97331649.png

這里可以看到,代碼最后面 “l(fā)en(detections)” 的值,就是本幀圖像所檢測(cè)到的物件數(shù)量,而 detections 的數(shù)據(jù)結(jié)構(gòu)就是:

ClassID:類(lèi)別編號(hào)

Confidence:置信度

Left:標(biāo)框左坐標(biāo)

Top:標(biāo)框上坐標(biāo)

Right:標(biāo)框右坐標(biāo)

Bottom:標(biāo)框下坐標(biāo)

Width:框的寬度 = Right - Left

Height:框的高度 = Bottom - Top

Area:面積 = Width x Height

Center:中心點(diǎn)坐標(biāo) = ( (Left+Right)/2, (Top+Bottom)/2 )

確認(rèn)了 net.Detect() 返回值之后,就能很輕易地以這些數(shù)據(jù)去開(kāi)發(fā)滿足特定要求的應(yīng)用。

至于后面的 output.Render(img)、output.Status() 這些函數(shù),在前面的文章里面都講解的很清楚,這里不再重復(fù)。

到這里,要利用 Hello AI World 這個(gè)項(xiàng)目所提供的庫(kù)資源,去開(kāi)發(fā)自己的應(yīng)用程序,就顯得非常簡(jiǎn)單了。

編輯:jq

聲明:本文內(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)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4333

    瀏覽量

    62721
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4797

    瀏覽量

    68707
  • 數(shù)據(jù)集
    +關(guān)注

    關(guān)注

    4

    文章

    1208

    瀏覽量

    24727
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5506

    瀏覽量

    121255

原文標(biāo)題:Jetson Nano 2GB 系列文章(23): “Hello AI World 的物件識(shí)別應(yīng)用

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    GPU深度學(xué)習(xí)中的應(yīng)用 GPUs圖形設(shè)計(jì)中的作用

    隨著人工智能技術(shù)的飛速發(fā)展,深度學(xué)習(xí)作為其核心部分,已經(jīng)成為推動(dòng)技術(shù)進(jìn)步的重要力量。GPU(圖形處理單元)深度學(xué)習(xí)中扮演著至關(guān)重要的角色,
    的頭像 發(fā)表于 11-19 10:55 ?563次閱讀

    NPU深度學(xué)習(xí)中的應(yīng)用

    隨著人工智能技術(shù)的飛速發(fā)展,深度學(xué)習(xí)作為其核心驅(qū)動(dòng)力之一,已經(jīng)眾多領(lǐng)域展現(xiàn)出了巨大的潛力和價(jià)值。NPU(Neural Processing Unit,神經(jīng)網(wǎng)絡(luò)處理單元)是專(zhuān)門(mén)為深度
    的頭像 發(fā)表于 11-14 15:17 ?658次閱讀

    GPU深度學(xué)習(xí)應(yīng)用案例

    GPU深度學(xué)習(xí)中的應(yīng)用廣泛且重要,以下是一些GPU深度學(xué)習(xí)應(yīng)用案例: 一、圖像識(shí)別 圖像識(shí)別是深度
    的頭像 發(fā)表于 10-27 11:13 ?408次閱讀

    FPGA做深度學(xué)習(xí)能走多遠(yuǎn)?

    今天給大俠帶來(lái)FPAG技術(shù)交流群里平時(shí)討論的問(wèn)題答疑合集(十四),以后還會(huì)多推出本系列,話不多說(shuō),上貨。 FPGA技術(shù)交流群目前已有十多個(gè)群,QQ和微信均覆蓋,有需要的大俠可以進(jìn)群,一起交流學(xué)習(xí)
    發(fā)表于 09-27 20:53

    深度學(xué)習(xí)算法嵌入式平臺(tái)上的部署

    隨著人工智能技術(shù)的飛速發(fā)展,深度學(xué)習(xí)算法各個(gè)領(lǐng)域的應(yīng)用日益廣泛。然而,將深度學(xué)習(xí)算法部署到資源受限的嵌入式平臺(tái)上,仍然是一個(gè)具有挑戰(zhàn)性的任
    的頭像 發(fā)表于 07-15 10:03 ?1472次閱讀

    深度學(xué)習(xí)工業(yè)機(jī)器視覺(jué)檢測(cè)中的應(yīng)用

    隨著深度學(xué)習(xí)技術(shù)的快速發(fā)展,其工業(yè)機(jī)器視覺(jué)檢測(cè)中的應(yīng)用日益廣泛,并展現(xiàn)出巨大的潛力。工業(yè)機(jī)器視覺(jué)檢測(cè)是工業(yè)自動(dòng)化領(lǐng)域的重要組成部分,通過(guò)圖
    的頭像 發(fā)表于 07-08 10:40 ?1096次閱讀

    基于深度學(xué)習(xí)的無(wú)人機(jī)檢測(cè)與識(shí)別技術(shù)

    隨著無(wú)人機(jī)技術(shù)的快速發(fā)展,無(wú)人機(jī)軍事、民用、商業(yè)等多個(gè)領(lǐng)域的應(yīng)用日益廣泛。然而,無(wú)人機(jī)的廣泛使用也帶來(lái)了諸多挑戰(zhàn),如空域安全、隱私保護(hù)等問(wèn)題。因此,開(kāi)發(fā)高效、準(zhǔn)確的無(wú)人機(jī)檢測(cè)與識(shí)別技術(shù)顯得尤為重要。本文將深入探討基于深度
    的頭像 發(fā)表于 07-08 10:32 ?1292次閱讀

    基于AI深度學(xué)習(xí)的缺陷檢測(cè)系統(tǒng)

    工業(yè)生產(chǎn)中,缺陷檢測(cè)是確保產(chǎn)品質(zhì)量的關(guān)鍵環(huán)節(jié)。傳統(tǒng)的人工檢測(cè)方法不僅效率低下,且易受人為因素影響,導(dǎo)致誤檢和漏檢問(wèn)題頻發(fā)。隨著人工智能技術(shù)的飛速發(fā)展,特別是深度
    的頭像 發(fā)表于 07-08 10:30 ?1498次閱讀

    深度學(xué)習(xí)視覺(jué)檢測(cè)中的應(yīng)用

    能力,還使得機(jī)器能夠模仿人類(lèi)的某些智能行為,如識(shí)別文字、圖像和聲音等。深度學(xué)習(xí)的引入,極大地推動(dòng)了人工智能技術(shù)的發(fā)展,特別是圖像識(shí)別、自然語(yǔ)言處理、語(yǔ)音識(shí)別等領(lǐng)域取得了顯著成果。
    的頭像 發(fā)表于 07-08 10:27 ?751次閱讀

    基于深度學(xué)習(xí)的小目標(biāo)檢測(cè)

    計(jì)算機(jī)視覺(jué)領(lǐng)域,目標(biāo)檢測(cè)一直是研究的熱點(diǎn)和難點(diǎn)之一。特別是小目標(biāo)檢測(cè)方面,由于小目標(biāo)圖像中所占比例小、特征不明顯,使得
    的頭像 發(fā)表于 07-04 17:25 ?933次閱讀

    TensorFlow與PyTorch深度學(xué)習(xí)框架的比較與選擇

    深度學(xué)習(xí)作為人工智能領(lǐng)域的一個(gè)重要分支,在過(guò)去十年中取得了顯著的進(jìn)展。構(gòu)建和訓(xùn)練深度學(xué)習(xí)模型的過(guò)程中,
    的頭像 發(fā)表于 07-02 14:04 ?982次閱讀

    深度解析深度學(xué)習(xí)下的語(yǔ)義SLAM

    隨著深度學(xué)習(xí)技術(shù)的興起,計(jì)算機(jī)視覺(jué)的許多傳統(tǒng)領(lǐng)域都取得了突破性進(jìn)展,例如目標(biāo)的檢測(cè)、識(shí)別和分類(lèi)等領(lǐng)域。近年來(lái),研究人員開(kāi)始視覺(jué)SLAM算法中引入
    發(fā)表于 04-23 17:18 ?1312次閱讀
    <b class='flag-5'>深度</b>解析<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>下的語(yǔ)義SLAM

    深度學(xué)習(xí)檢測(cè)小目標(biāo)常用方法

    深度學(xué)習(xí)的效果在某種意義上是靠大量數(shù)據(jù)喂出來(lái)的,小目標(biāo)檢測(cè)的性能同樣也可以通過(guò)增加訓(xùn)練集中小目標(biāo)樣本的種類(lèi)和數(shù)量來(lái)提升。
    發(fā)表于 03-18 09:57 ?735次閱讀
    <b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>檢測(cè)</b>小目標(biāo)常用方法

    【技術(shù)科普】主流的深度學(xué)習(xí)模型有哪些?AI開(kāi)發(fā)工程師必備!

    深度學(xué)習(xí)科學(xué)計(jì)算中獲得了廣泛的普及,其算法被廣泛用于解決復(fù)雜問(wèn)題的行業(yè)。所有深度學(xué)習(xí)算法都使用
    的頭像 發(fā)表于 01-30 15:26 ?643次閱讀
    【技術(shù)科普】主流的<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>模型有哪些?AI開(kāi)發(fā)工程師必備!

    基于機(jī)器視覺(jué)和深度學(xué)習(xí)的焊接質(zhì)量檢測(cè)系統(tǒng)

    基于機(jī)器視覺(jué)和深度學(xué)習(xí)的焊接質(zhì)量檢測(cè)系統(tǒng)是一種創(chuàng)新性的技術(shù)解決方案,它結(jié)合了先進(jìn)的計(jì)算機(jī)視覺(jué)和深度學(xué)習(xí)算法,用于實(shí)時(shí)監(jiān)測(cè)和評(píng)估焊接過(guò)程中的焊
    的頭像 發(fā)表于 01-18 17:50 ?826次閱讀