一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

電子發(fā)燒友App

硬聲App

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

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

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>NVIDIA Jetson Nano上的智能視頻分析

NVIDIA Jetson Nano上的智能視頻分析

2023-07-06 | zip | 0.00 MB | 次下載 | 免費

資料介紹

例如,未來的城市,也被稱為智慧城市,應(yīng)該部署攝像頭網(wǎng)絡(luò)來提供監(jiān)控以防止犯罪、有效管理交通并減少能源使用。工作原理基于多層神經(jīng)網(wǎng)絡(luò),使用無限數(shù)據(jù)集進(jìn)行訓(xùn)練。然而,訓(xùn)練深度學(xué)習(xí)網(wǎng)絡(luò)是一項計算密集型任務(wù),需要并行執(zhí)行許多矩陣乘法運算。因此,許多最先進(jìn)的商用單板計算機不是執(zhí)行上述任務(wù)的合適硬件平臺,因為它們是單線程性能優(yōu)化架構(gòu)。隨著開發(fā)人員套件的到來,例如 NVIDIA 的 Jetson Nano,專門用于運行人工智能工作負(fù)載,

?

在這個項目中,我們將注意力集中在計算機視覺中的一個突出主題:行人分析。我們根據(jù)人們行為分析可以為地方當(dāng)局提供的不同用例做出這一選擇,以定制該技術(shù)可能定位的當(dāng)?shù)厝丝诘男枨蟆?/font>例如,我們設(shè)想以下應(yīng)用程序:

  • 統(tǒng)計出入地鐵或公交車站的人數(shù),以規(guī)范行人交通。
  • 統(tǒng)計在商店櫥窗里看文章的人數(shù),以建立一定數(shù)量的潛在客戶。

使用深度學(xué)習(xí)算法計算人數(shù)絕非易事,因為在訓(xùn)練神經(jīng)網(wǎng)絡(luò)時需要考慮許多參數(shù)。例如,捕獲相機所在的高度會擾亂快照的質(zhì)量,從而給圖片引入噪點,從而更難跟蹤照片場景中的每個行人。因此,訓(xùn)練階段可能意味著進(jìn)一步的步驟來識別圖像的屬性。

解決方案

為了克服這些挑戰(zhàn),我們提出了一種基于 NVIDIA Jetson Nano 的解決方案來計算從攝像機前經(jīng)過的人數(shù)。我們算法的工作原理基于以下任務(wù):

  • 以高捕捉率捕捉圖像。
  • 不同幀率下的人物檢測。
  • 跟蹤每個檢測到的人以在下一個數(shù)據(jù)幀中關(guān)聯(lián)。
  • 通過在每個快照上區(qū)分個體來對個體進(jìn)行計數(shù)。

除了人數(shù)統(tǒng)計算法外,還開發(fā)了一個基于網(wǎng)絡(luò)的應(yīng)用程序,以使用用戶選擇的各種參數(shù)來監(jiān)控跟蹤和統(tǒng)計結(jié)果。

項目計劃

這個項目使用了一個攝像頭,可以從街道上無縫捕捉圖像,并將它們傳輸?shù)?NVIDIA 的 Jetson Nano 進(jìn)行進(jìn)一步處理。除了圖像處理之外,Jetson Nano 還托管一個基于 Web 的應(yīng)用程序,連接到托管該應(yīng)用程序的互聯(lián)網(wǎng)的所有設(shè)備都可以訪問該應(yīng)用程序。這個項目需要一個攝像頭從街道上捕捉圖像并將它們傳輸?shù)?Jetson Nano 以處理信息。

pYYBAGOIJPOAN8HPAAFOj88gwLo782.jpg
帶有 Waveshare 金屬外殼的 jetson nano
?

硬件

本節(jié)列出了開發(fā)該項目所需的硬件組件:

  • Jetson Nano 開發(fā)者套件
  • Jetson Nano Waveshare 金屬外殼(B 型)
  • IMX219 傳感器 160 度 8MP 網(wǎng)絡(luò)攝像頭
  • 無線網(wǎng)卡AC8265
  • 微型SD

您可以在此處找到在 Waveshare 金屬外殼中組裝 Jetson Nano 的說明。

poYBAGOIJPmASTRlAAIQ3pOzLkY793.jpg
將無線網(wǎng)卡安裝到 Jetson Nano 中
?

執(zhí)行

NVIDIA 的 Jetson Nano 附帶一個軟件開發(fā)工具包,稱為 Jetpack 4.3.1,它是 GNU/Linux Ubuntu 操作系統(tǒng)的變體,用于構(gòu)建人工智能應(yīng)用程序。此 SDK 的安裝說明可在以下鏈接中找到。

該應(yīng)用程序有 2 個主要組件:

  • 一個 python 編寫的后端應(yīng)用程序。
  • 基于 Angular 8 框架的 typescript 編寫的前端應(yīng)用程序。

后端應(yīng)用程序執(zhí)行以下任務(wù):

  • 從相機源捕獲幀。
  • 加載對象檢測算法。
  • 在每一幀上運行推理。
  • 過濾圖像圖像。
  • 通過 API 公開結(jié)果。

前端應(yīng)用程序改為使用后端的 API 來呈現(xiàn)結(jié)果并處理捕獲的數(shù)據(jù)。在以下部分中,將詳細(xì)介紹后端和前端應(yīng)用程序,重點介紹其每個組件。讀者可以在本文末尾找到完整的源代碼。

poYBAGOIJPyAceXrAADA1Y5WM9A535.jpg
前端應(yīng)用程序的登陸頁面
?

后端 - 捕獲信息

將攝像頭捕獲的數(shù)據(jù)提取到 NVIDIA 的 Jetson Nano 中的最快方法是使用 gstream-lib 庫,該庫從插入的 CSI 攝像頭的流源中設(shè)置。OpenCV 的 VideoCapture 函數(shù)通過從設(shè)備內(nèi)存中的指定緩沖區(qū)獲取圖像數(shù)據(jù)來讀取流式源。

后端 - 對象檢測

對象檢測 API 基于構(gòu)建在 TensorRT 之上的檢測框架,可簡化 Mobilenet SSD 模型的加載。在初始化期間,NVIDIA 的 Jetson Nano 使用 PyCUDA python 庫來訪問 CUDA 的并行計算 API。同時,它創(chuàng)建了一個流屬性,可以在 Jetson Nano 的內(nèi)存中獲取拍攝的圖像,以使用深度學(xué)習(xí)訓(xùn)練的模型執(zhí)行推理操作。

class TrtSSD(object):
    """ TensorRT SSD mobilenet implementation """

    def _load_plugins(self):
        ctypes.CDLL("models/ssd_mobilenet/libflattenconcat.so")
        trt.init_libnvinfer_plugins(self.trt_logger, '')

    def _load_engine(self):
        TRTbin = 'models/ssd_mobilenet/TRT_%s.bin' % self.model
        with open(TRTbin, 'rb') as f, trt.Runtime(self.trt_logger) as runtime:
            return runtime.deserialize_cuda_engine(f.read())

    def _create_context(self):
        for binding in self.engine:
            size = trt.volume(self.engine.get_binding_shape(binding)) * \
                   self.engine.max_batch_size
            host_mem = cuda.pagelocked_empty(size, np.float32)
            cuda_mem = cuda.mem_alloc(host_mem.nbytes)
            self.bindings.append(int(cuda_mem))
            if self.engine.binding_is_input(binding):
                self.host_inputs.append(host_mem)
                self.cuda_inputs.append(cuda_mem)
            else:
                self.host_outputs.append(host_mem)
                self.cuda_outputs.append(cuda_mem)
        return self.engine.create_execution_context()

    def __init__(self, model, input_shape, output_layout=7):
        """Initialize TensorRT plugins, engine and conetxt."""
        self.model = model
        self.input_shape = input_shape
        self.output_layout = output_layout
        self.trt_logger = trt.Logger(trt.Logger.INFO)
        self._load_plugins()
        self.engine = self._load_engine()

        self.host_inputs = []
        self.cuda_inputs = []
        self.host_outputs = []
        self.cuda_outputs = []
        self.bindings = []
        self.stream = cuda.Stream()
        self.context = self._create_context()

    def __del__(self):
        """Free CUDA memories."""
        del self.stream
        del self.cuda_outputs
        del self.cuda_inputs

    def detect(self, img, conf_th=0.3, conf_class=[]):
        """Detect objects in the input image."""
        img_resized = _preprocess_trt(img, self.input_shape)
        np.copyto(self.host_inputs[0], img_resized.ravel())

        cuda.memcpy_htod_async(
            self.cuda_inputs[0], self.host_inputs[0], self.stream)
        self.context.execute_async(
            batch_size=1,
            bindings=self.bindings,
            stream_handle=self.stream.handle)
        cuda.memcpy_dtoh_async(
            self.host_outputs[1], self.cuda_outputs[1], self.stream)
        cuda.memcpy_dtoh_async(
            self.host_outputs[0], self.cuda_outputs[0], self.stream)
        self.stream.synchronize()

        output = self.host_outputs[0]
        return _postprocess_trt(img, output, conf_th, self.output_layout, conf_class)

在推理結(jié)束時,根據(jù)檢測目的,基于置信概率閾值做出對象檢測決策。SSD MobileNet 模型在 Coco 數(shù)據(jù)集上獲取神經(jīng)網(wǎng)絡(luò)的預(yù)訓(xùn)練權(quán)重,產(chǎn)生 80 個輸出類。對于行人分析,引入了一個名為“Person”的類來收集檢測算法執(zhí)行期間使用的所有屬性。

檢測模型的驗證是通過樣本圖像在模塊中完成的,這使我們能夠毫不費力地交換被測模型。隨后,我們使用 Github 的 Actions 來評估每個模型的性能,避免在引入修改時出現(xiàn)故障。用戶可以使用 Pytest 框架訪問目錄“Test”中的模型評估。

后端 - 對象跟蹤

當(dāng)人在圖像中可見時,對象定位模塊會繪制一個邊界框。對象跟蹤算法連接到對象定位模塊的輸出,以確定何時有人進(jìn)入快照場景,量化在捕獲攝像機前經(jīng)過的人數(shù)。兩種算法都使用稱為“t”的時間度量來存儲與邊界框質(zhì)心相關(guān)的信息。在下一個時間間隔“t+1”中,它使用以下參數(shù)關(guān)聯(lián)兩個檢測到的質(zhì)心:

  • 最近的幀被認(rèn)為是同一個對象。
  • 當(dāng)存儲在內(nèi)存中的前一幀和當(dāng)前幀不匹配時,一個離開的對象被認(rèn)為是“消失的”。
  • 當(dāng)沒有檢測到對象的先前幀時,對象被認(rèn)為是“新的”。
  • 考慮到質(zhì)心在先前幀中的位置,計算質(zhì)心之間的距離。
pYYBAGOIJP-AYPwmAABjnLmJKYg231.png
對象跟蹤算法的架構(gòu)
?

該算法的魯棒性依賴于在保持與先前幀的質(zhì)心位置相關(guān)的信息的基礎(chǔ)上跟蹤快照場景中多個對象的準(zhǔn)確性。有關(guān)實現(xiàn)算法的更多詳細(xì)信息,請參閱 pyimagesearch 的博客。

后端 - Flask 應(yīng)用程序

后端 API 構(gòu)建在 Flask Web 應(yīng)用程序框架之上,它將 URL 路由鏈接到 Python 函數(shù)。本項目應(yīng)用的主要路線有:

  • ”/” 和 “/” 渲染來自靜態(tài)前端應(yīng)用程序的 html、css 和 js 文件。
  • “/imgs/” 以 jpg 字節(jié)發(fā)送圖像
  • “/api/delete”刪除本地圖片
  • “/api/single_image” 從相機捕獲圖像,如果需要運行對象檢測算法,然后將其發(fā)送到前端。
  • “/api/images”根據(jù)日期、時間和檢測到的對象類型等輸入過濾器發(fā)送圖像列表。
  • “/api/list_files” 用于計算每種過濾器的圖像數(shù)量,例如日期、時間和檢測到的對象類型。

前端

開發(fā)了一個基于 Angular 8 的 Web 應(yīng)用程序來執(zhí)行一些處理操作并直接從圖像中提取信息。這個基于 Web 的應(yīng)用程序通過 API 與后端應(yīng)用程序交互,可以在沒有主要限制的情況下加載保存的圖像。

用戶可以通過四個按鈕與 Web 應(yīng)用程序交互:

  • 實時捕獲模式用于動態(tài)修改每秒幀數(shù),并執(zhí)行對象檢測和跟蹤算法。
  • 統(tǒng)計模式通過 ChartJS 圖表即時查看快照的統(tǒng)計數(shù)據(jù)。此外,它還提供了以馬賽克模式可視化照片的選項。
  • Celery 任務(wù)模式可視化在處理階段執(zhí)行的循環(huán)異步任務(wù)。
  • 按日期過濾馬賽克照片的數(shù)據(jù)選擇器。
pYYBAGOIJQKAcS9hAAEuOikAmuk908.png
單擊顯示詳細(xì)信息的圖像時彈出模態(tài)窗口
?

?

pYYBAGOIO8KABKybAADqgIJooBA075.png
前端應(yīng)用程序的側(cè)邊欄選項
?
pYYBAGOIO8SAc78QAABHucbf9tM851.png
每個過濾器的圖像數(shù)量(檢測到的對象和小時)
?

結(jié)果

在許多深度學(xué)習(xí)用例中,算法的推理階段是在邊緣設(shè)備上完成的,而神經(jīng)網(wǎng)絡(luò)的訓(xùn)練階段是在云端完成的。我們在三種不同的硬件架構(gòu)上測試了對象檢測應(yīng)用程序的推理階段:x86、ARM 和 Maxwell GPU。廣泛使用的 IntelAMD 處理器中的 x86 架構(gòu)簡化了深度學(xué)習(xí)算法的開發(fā),因為許多庫可用于執(zhí)行對象檢測任務(wù)。然而,由于嚴(yán)格的功耗限制,這種架構(gòu)不適合物聯(lián)網(wǎng)設(shè)備。另一方面,Raspberry Pi 內(nèi)置的 ARM 處理器在實時檢測階段和干擾階段都沒有提供良好的性能。除了被其他架構(gòu)超越之外,Raspberry Pi 的 ARM 內(nèi)核需要持續(xù)冷卻,以避免在神經(jīng)網(wǎng)絡(luò)訓(xùn)練期間發(fā)生節(jié)流。最后,集成在 NVIDIA 的 Jetson Nano 上的 Maxwell GPU 在性能和功耗之間提供了良好的平衡,因為基于 Tensor RT 框架構(gòu)建的對象檢測算法由于其被動冷卻可以在很長一段時間內(nèi)平穩(wěn)執(zhí)行系統(tǒng)和一個附加的外部風(fēng)扇。一個突出的事實是,與 x86 架構(gòu)相比,我們在 SSD Mobilenet 模型的推理階段獲得了更好的性能。下表顯示了每個架構(gòu)在訓(xùn)練和推理階段的延遲結(jié)果:集成在 NVIDIA 的 Jetson Nano 上的 Maxwell GPU 在性能和功耗之間提供了良好的平衡,因為基于 Tensor RT 框架構(gòu)建的對象檢測算法由于其被動冷卻系統(tǒng)可以在很長一段時間內(nèi)平穩(wěn)執(zhí)行,并且一個附加的外部風(fēng)扇。一個突出的事實是,與 x86 架構(gòu)相比,我們在 SSD Mobilenet 模型的推理階段獲得了更好的性能。下表顯示了每個架構(gòu)在訓(xùn)練和推理階段的延遲結(jié)果:集成在 NVIDIA 的 Jetson Nano 上的 Maxwell GPU 在性能和功耗之間提供了良好的平衡,因為基于 Tensor RT 框架構(gòu)建的對象檢測算法由于其被動冷卻系統(tǒng)可以在很長一段時間內(nèi)平穩(wěn)執(zhí)行,并且一個附加的外部風(fēng)扇。一個突出的事實是,與 x86 架構(gòu)相比,我們在 SSD Mobilenet 模型的推理階段獲得了更好的性能。下表顯示了每個架構(gòu)在訓(xùn)練和推理階段的延遲結(jié)果:

pYYBAGOIO8aAATMuAAA-hWut_uE836.png
ARM、x86 和 Maxwell GPU 架構(gòu)之間的性能比較。
?

對象跟蹤是使用 Celery 任務(wù)管理器執(zhí)行的。通過基于 Web 的應(yīng)用程序內(nèi)置的按鈕,可以啟動對象跟蹤任務(wù),檢查后臺運行的其他進(jìn)程。

最后但并非最不重要的一點是,用于驗證對象檢測和跟蹤的場景是辦公室內(nèi)的走廊,在正常工作日期間有 130 人經(jīng)過。在下面的捕獲編譯中,讀者可以觀察到我們實現(xiàn)的結(jié)果。

結(jié)論

在這個項目的制定和部署過程中,我們了解了 NVIDIA 的 Jetson Nano 提供的許多優(yōu)勢,可以執(zhí)行應(yīng)用于真實場景中的對象檢測和跟蹤的深度學(xué)習(xí)任務(wù)。該設(shè)備成功地在長時間內(nèi)識別和跟蹤人員,而不會達(dá)到失控的內(nèi)部溫度。此外,它的小尺寸因素使其成為物聯(lián)網(wǎng)應(yīng)用的理想選擇,因為它有助于在偏遠(yuǎn)或危險區(qū)域進(jìn)行安裝。

我們通過將神經(jīng)網(wǎng)絡(luò)的訓(xùn)練階段卸載到服務(wù)器上,在邊緣設(shè)備上維護(hù)推理階段來展示邊緣計算的概念。為了利用云上的計算,我們將數(shù)據(jù)從其來源(在本例中為 CSI 攝像機)移動到外部處理單元,克服了這種遷移的隱性挑戰(zhàn),例如延遲、可擴展性、隱私和動態(tài)網(wǎng)絡(luò)內(nèi)部的協(xié)調(diào)條件。

總之,我們的檢測和跟蹤深度學(xué)習(xí)算法的實施有效地解決了辦公室場景的動態(tài)行為,而不會被大量的物體所淹沒,在這種情況下,人們在一個普通的工作日出現(xiàn)。基于網(wǎng)絡(luò)的應(yīng)用程序通過引入簡單的圖像過濾器實現(xiàn)了進(jìn)一步的圖像處理。

最后,我們想強調(diào)的是,這只是深度學(xué)習(xí)算法的眾多用例之一,在 NVIDIA 的 Jetson Nano 等強大平臺上實施,可以提供解決社會日常問題的方法。通過添加更好的捕獲設(shè)備、實施新的檢測解決方案,或者在將數(shù)據(jù)遷移到云中的集中位置期間簡單地建立新的漏洞條件,可以利用這項工作的許多擴展。


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1人形機器人電機驅(qū)動和傳感報告
  2. 4.27 MB   |  9次下載  |  免費
  3. 2Altium Designer元件庫
  4. 17.11 MB   |  6次下載  |  免費
  5. 324V2A開關(guān)電源PCB資料分享
  6. 0.23 MB   |  4次下載  |  1 積分
  7. 4GD100PIX120C6SNA規(guī)格書
  8. 0.98 MB   |  3次下載  |  免費
  9. 5Multisim模擬電路仿真教程
  10. 1.93 MB   |  1次下載  |  3 積分
  11. 6BK7258英文規(guī)格書
  12. 1.67 MB   |  1次下載  |  免費
  13. 7RA4L1硬件手冊
  14. 21.89 MB  |  1次下載  |  免費
  15. 8RA4L1_SENSOR-V1原理圖
  16. 754.36 KB  |  1次下載  |  免費

本月

  1. 1晶體三極管的電流放大作用詳細(xì)說明
  2. 0.77 MB   |  32次下載  |  2 積分
  3. 2雙極型三極管放大電路的三種基本組態(tài)的學(xué)習(xí)課件免費下載
  4. 4.03 MB   |  25次下載  |  1 積分
  5. 3AIWA HS-J303 MKⅡ維修手冊
  6. 22.47 MB   |  24次下載  |  10 積分
  7. 4九陽豆?jié){機高清原理圖
  8. 2.47 MB   |  23次下載  |  1 積分
  9. 5多級放大電路的學(xué)習(xí)課件免費下載
  10. 1.81 MB   |  21次下載  |  2 積分
  11. 6AIWA HS-J202/HS-J202M/HS-J800維修手冊
  12. 13.60 MB   |  16次下載  |  10 積分
  13. 7東芝彩色電視機29SF6C維修說明書
  14. 4.86 MB   |  9次下載  |  1 積分
  15. 8人形機器人電機驅(qū)動和傳感報告
  16. 4.27 MB   |  9次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935127次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
  4. 1.48MB  |  420063次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233089次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191382次下載  |  10 積分
  9. 5十天學(xué)會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183338次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81586次下載  |  10 積分
  13. 7Keil工具M(jìn)DK-Arm免費下載
  14. 0.02 MB  |  73814次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65988次下載  |  10 積分