国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Jetbot智能車如何識別與周邊物體的距離

NVIDIA英偉達企業解決方案 ? 來源:NVIDIA英偉達 ? 作者:NVIDIA英偉達 ? 2022-02-07 11:35 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

避撞功能是 Jetbot 一開始最令人矚目的功能,因為這是所有小車都必須具備的最基本“自我保護”的能力,而 Jetbot 沒有任何距離傳感,只憑著一個 CSI 攝像頭就能完成這項任務,對很多人來說是一件蠻神奇的事情,Jetbot 是如何識別與周邊物體的距離,來決定是繼續前進還是得轉向?

這里請大家先沉淀一下來思考,人腦是如何學習判斷前方的路是可以繼續前進?或是有障礙物、坑洞必須轉向?請先忘記您的成年人身份,試著模擬剛學會爬行的小嬰兒,如何逐步學習并建立這方面的“認知系統”呢?小嬰兒對前方的信息來源,有以下三個特點:

只有視覺(眼睛)的輸入

沒有距離的概念

缺乏物件的分類

在沒有其他干預的狀況下,小嬰兒必定得經過不斷地碰撞與摔倒之后,自身防御系統會逐步學習并修正決策機制,這是動物界最原始的學習機制。小嬰兒在這個過程所接收的信息,就是沒有距離、沒有物件類別的最基本“圖像”而已。

到目前為止,Jetbot 的運作邏輯是最接近人類行進思維的一套智能無人車,因為我們并不需要去判斷與障礙物(或坑洞)之間的確實距離是多近,也不需要分辨前面障礙物是什么東西,就能下達“前進”或“轉向”的決策。

當我們安裝好 Jetbot 智能車與系統軟件之后,接下去就是為每個特定功能添加“深度學習”的智能識別技術進去。例如這個避障的應用就只使用到最基礎的“圖像識別”能力,將 CSI 鏡頭的每幀畫面識別出“無阻礙(free)”與“有阻礙(blocked)”兩種狀態,然后發出對應指令去驅動電機執行運動。

任何要添加深度學習的智能識別功能,都必須執行以下三個步驟:

數據收集與整理

模型訓練

執行識別

這個避障功能的實驗代碼在 Jetbot 的 notebooks/collision_avoidance 下,里面有 8 個 .ipynb 文件,包括 1 個 data_collecton.ipynb、3 個 train_modelxxx.ipynb 與 4 個 live_demoxxx.ipynb,分別對應上面所說的三個步驟。不過這些實驗代碼不需要全都用上,這里以 data_collecton.ipynb、train_model.ipynb 與 live_demo.ipynb 這三個最基本的代碼來做說明。

礙于篇幅問題,本文先帶著大家運行 live_demo.ipynb 代碼,去體驗一下 Jetbot 的避障功能,畢竟前面花了這么多時間與精力所組裝的系統,先跑起來能獲得一些成就感之后,在下一篇文章里再說明比較枯燥的“數據收集與整理”、“模型訓練”兩大步驟,這樣才算完成整個流程。

為了讓大家能夠先行體驗,這里提供原創團隊預訓練的 best_model.pth 模型的鏈接,模型的訓練方式會在下一篇文章里面說明,這里只管下載到 collision_avoidance 目錄下使用就行。文件鏈接如下:https://drive.google.com/file/d/1UsRax8bR3R-e-0-80KfH2zAt-IyRPtnW/view

由于我們未得到原創團隊的授權,不能擅自下載這個存放在 Google 網盤上的文件,再分享給讀者下載,請大家能夠理解,這需要讀者請自行設法下載!

接下來開啟 notebooks/collision_avoidance/live_demo.ipynb 工作腳本,逐步執行就能讓 Jetbot 小車執行避障的功能。這里面主要分為以下三大部分:

1. 加載訓練的模型:

這里關于深度學習的部分,全部使用 PyTorch 這個輕量級的框架,對于不熟悉的讀者來說,一開始的兩行代碼可能就已經會產生不小的困擾,現在就簡單地逐行說明:

model = torchvision.models.alexnet(pretrained=False)

torchvision 是 PyTorch 里面專門用在視覺應用的深度學習庫。

由于 PyTorch 內建支持很多常用的神經網絡結構,這里要使用深度卷積網絡始祖的 AlexNet,是因為前面提供下載連接的 best_model.pth 就是以 AlexNet 進行訓練的圖像識別模型,因此這里對應地用 torchvision.models.alexnet 函數來創建 model 對象。

由于現在是要執行推理任務而不是做訓練,因此 pretrained=FALSE

model.classifier[6] = torch.nn.Linear(model.classifier[6].in_features, 2)

這行代碼是至關重要的,首先在這行代碼上方加入“print(model.classifier)”,執行后會看到以下的數據結構:

Sequential(

(0):Dropout(p=0.5, inplace=False)

(1):Linear(in_features=9216, out_features=4096, bias=True)

(2):ReLU(inplace=True)

(3):Dropout(p=0.5, inplace=False)

(4):Linear(in_features=4096, out_features=4096, bias=True)

(5):ReLU(inplace=True)

(6):Linear(in_features=4096, out_features=1000, bias=True)

)

這是 torchvision 里為 AlexNet 神經網絡所預先定義的圖像分類功能的結構,其中 classifier[6].out_features 是模型最終的輸出數量,也就是分類數量。

因為 AlexNet 這個“深度神經網絡”的鼻祖,是在 2012 年 ILSVRC 競賽中以 1000 分類的 ImageNet 數據集作為測試標,一舉拔得頭籌而開創“深度學習”新時代,這個 1000 分類的 AlexNet 圖像分類模型便成為這個領域的經典之作,因此在標準的 AlexNet 模型中就保留“1000”這個數字作為基準。

在這個避障應用中只使用“free”與“blockerd”兩個分類,因此需將 classifier[6] 的輸出類別數量調整為 2。請在代碼下方加入“print(model.classifier[6])”指令,打印出修改后的內容,會看到“out_features”的值已經變成 2。

注意:每種神經網絡的處理方式是不同的,必須根據PyTorch的定義進行調整。

接下去三行代碼就是將模型文件加載進來,然后存到 CUDA 設備去,相對直觀:

model.load_state_dict(torch.load('best_model.pth'))

device = torch.device('cuda')

model = model.to(device)

2. 圖像格式轉換與正規化處理:

這幾乎是所有視覺類深度學習應用中不可或缺的步驟,比較繁瑣的部分是不同神經網絡存在細節上的差異,不過總的來說都脫離不了以下部分:

(1) 顏色空間轉換:所有神經網絡都有自己定義的顏色空間格式,這里的 AlexNet 接受 RGB 數據,而 CSI 攝像頭的格式為 BGR,這樣就必須進行格式轉換。這部分的處理幾乎都使用 OpenCV、numpy、PIL 這些強大的圖像處理庫就可以,下面這行代碼就是執行這個功能。

x = cv2.cvtColor(x, cv2.COLOR_BGR2RGB)

(2) 張量順序轉換:將 HWC 順序轉換成 CHW 順序,下面指令就是執行順序調整:

x = x.transpose((2, 0, 1))

(3) 正規化(normalization)處理:透過減去數據對應維度的統計平均值,消除公共部分以凸顯個體之間的差異和特征的一種平穩的分布計算。下面使用到的 [0.485, 0.456, 0.406]、[0.229, 0.224, 0.225] 兩組數據,是業界經過公認的經驗數據。

mean = 255.0 * np.array([0.485, 0.456, 0.406])

stdev = 255.0 * np.array([0.229, 0.224, 0.225])

以上就是針對讀入圖像與模型之間對應的一些轉換與計算的過程。

3. 創建控制元件并與攝像頭進行關聯:

這里使用的 traitlets、IPython.display、ipwidgets.wiegets 與 jetbot 的 Camera 庫,在前面的文章里都說明過,比較重要的代碼如下:

(1) blocked_slider:用于顯示所獲取圖像是“blocked”類的幾率

blocked_slider = widgets.FloatSlider(description='blocked', min=0.0, max=1.0, orientation='vertical')

(2)speed_slider:用于調整 Jetbot 小車行進速度比

speed_slider = widgets.FloatSlider(description='speed', min=0.0, max=0.5, value=0.0, step=0.01, orientation='horizontal')

(3)camera_link:將攝像頭獲取圖像與 image 變量進行關聯,并執行格式轉換,才能在下方“display”指令之后,將攝像頭圖像動態地在 Jupyter 里顯示。

camera_link = traitlets.dlink((camera, 'value'), (image, 'value'), transform=bgr8_to_jpeg)

執行這個階段代碼之后,下面應該會出現如下圖左方的顯示框,試著在鏡頭前晃動手,看看畫面內容是否產生變化?顯示框右邊與下方分別出現“blocked”與“speed”兩個滑塊,就是前面代碼所建立的小工具。

由于后面會使用到這個 “speed” 滑塊對 Jetbot 進行速度調整,并且我們也希望能實時觀察到攝像頭的畫面,因此建議用鼠標在畫面上點擊右鍵,點選上圖右方 “Create New View for Output” 去創建另一個獨立輸出框,然后進行位置調整如下圖,這樣就方便后續的操作。

4. 將控制元件與網絡模型、機電控制進行結合:

這是整個應用中最核心的整合與計算過程,雖然代碼量不多,但信息量卻非常大,現在將這部分切割成幾個小塊來進行說明。

(1) 獲取圖像進行識別:

def update(change):

x = change['new']

x= preprocess(x)

y= model(x)

。。。

update({'new': camera.value})

這里首先定義 “update(change)”,在最下方用”update()”進行調用。

在“update({'new': camera.value})” 里使用{key:value}對的方式,將 camera.value 圖像內容透過 change['new'] 傳給 x 變量;

將 x 變量傳入進行前面定義的 preprocess() 格式轉換與正規化處理;

y 是 model(x) 推理計算所得出來“blocked”與“free”兩個類的個別置信度,例如為[-0.9425, 0.4077];

(2) 將置信度轉換成[0,1]范圍的值:

y= F.softmax(y, dim=1)

prob_blocked= float(y.flatten()[0])

blocked_slider.value= prob_blocked

這里調用 torch.nn.functional.softmax 函數,將所有類置信度的總和調整為1,如此一來前面的[-0.9425, 0.4077]就轉換成[0.2058, 0.7942];

作為行進的決策判斷,我們只要在兩個類別中挑選任何一個都可以,這里的代碼以“blocked”類幾率值作為判斷的依據,因此取 float(y.flatten()[0]) 的值,如果改用“free”的幾率,就取 float(y.flatten()[1]) 的值。

然后將這個值同時也傳給 blocked_slider.value,現在看看前面輸出的 blocked 滑塊的值是否跟著產生變化!

(3)用 prob_blocked 值控制 Jetbot 行進:

ifprob_blocked < 0.5:

robot.forward(speed_slider.value)

else:

robot.left(speed_slider.value)

這里設定以 0.5 的幾率值為上限,當 prob_blocked < 0.5 時就前進,否則就原地左轉,當然您也可以改成往右轉。

Jetbot 的行進速度由“speed_slider.value”變量所控制,這個數值得透過前面輸出畫面的 “speed” 滑塊去調整速度,最高值可以到 0.5,這是前面創建滑塊時就定義的。

執行到這里的時候,正常狀況應該如下:

攝像頭傳回的畫面是實時更新;

“blocked”滑塊固定在某個值;

現在調整“speed”滑塊的值并不會讓電機開始轉動。

現在可以將 Jetbot 小車放到您安排的執行場地上,在執行下一個步驟之前,建議透過“speed”滑塊將速度控制在 0.25 以下,避免啟動后造成 Jetbot 小車爆沖。

5. 啟動攝像頭的動態關聯:

這里其實就只有下面這一道指令:

camera.observe(update, names='value')

這是由 jetbot 所提供的函數,將 camera.value 與前面定義的 update(change) 進行動態連接上,現在 Jetbot 小車就應該開始行動了,攝像頭里的畫面也在不停更新,右方“blocked”滑塊的值也在不斷跳動(更新),現在試著調整“speed”滑塊,是不是就能改變行進的速度了!

好了,現在就可以看看您 Jetbot 小車的避障功能執行的如何?如果想停止工作的話,就繼續往下執行暫停的指令就可以。

最后需要說明的,假如您的避障功能執行的不是太好,例如無法順利識別一些障礙物或坑洞的話,通常是因為您的測試場所或者使用的攝像頭規格(廣角),與原廠提供的模型數據有比較大的差異,甚至場地明暗度也會有影響,如果測試效果不如預期的話,就得自己重頭收集數據并重新訓練模型,這才是解決問題的根本之道。

原文標題:NVIDIA Jetson Nano 2GB 系列文章(49):智能避撞之現場演示

文章出處:【微信公眾號:NVIDIA英偉達企業解決方案】歡迎添加關注!文章轉載請注明出處。

審核編輯:湯梓紅


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • NVIDIA
    +關注

    關注

    14

    文章

    5592

    瀏覽量

    109716
  • 鏡頭
    +關注

    關注

    2

    文章

    544

    瀏覽量

    26779
  • 智能識別
    +關注

    關注

    0

    文章

    215

    瀏覽量

    19069

原文標題:NVIDIA Jetson Nano 2GB 系列文章(49):智能避撞之現場演示

文章出處:【微信號:NVIDIA-Enterprise,微信公眾號:NVIDIA英偉達企業解決方案】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    翱捷科技ASR8662 SoC助力新一代智能車機量產上市

    隨著智能座艙從“輔助駕駛”走向“沉浸交互”,用戶對于車載系統的流暢度、音質表現與互聯體驗提出了更高要求。近日,搭載翱捷科技高性價比八核智能SoC平臺——ASR8662 的新一代智能車機正式量產上市
    的頭像 發表于 10-17 15:08 ?1201次閱讀

    聯網智能車載終端4G全網通T-BOX設計與應用

    控制入口:接收遠程指令(如開鎖、空調控制)并執行 安全中樞:支持故障診斷、防盜追蹤及緊急救援 移動管家4G智能車載信息終端硬件YD8008 設計與關鍵參數硬件架構主流采用
    發表于 10-11 10:06

    企業班車智能車載終端:人臉識別、NFC與北斗定位的多重應用

    為什么企業班車智能車載終端需要用到這三大功能呢:一、人臉識別人臉識別技術在企業班車中的應用,主要體現在身份驗證和考勤管理兩個方面。首先,車載考勤打卡一體機通過人臉識別,班車可以迅速準確
    的頭像 發表于 09-23 10:42 ?726次閱讀
    企業班車<b class='flag-5'>智能車</b>載終端:人臉<b class='flag-5'>識別</b>、NFC與北斗定位的多重應用

    自動駕駛汽車如何準確識別物體

    [首發于智駕最前沿微信公眾號]自動駕駛汽車想要在道路上安全行駛,需要識別的東西遠比我們所知道的諸如紅綠燈、行人、車輛等復雜得多。其中有一個是我們經常會忽略,但同樣非常重要的障礙物,那就是小物體,像是
    的頭像 發表于 08-22 09:11 ?654次閱讀
    自動駕駛汽車如何準確<b class='flag-5'>識別</b>小<b class='flag-5'>物體</b>?

    智能座艙規MCU主流之選 芯馳科技亮相香港博會

    6月12日,2025首屆國際汽車及供應鏈博覽會(香港)在亞洲博覽館正式開幕。作為中國汽車國際化的重要窗口,本屆香港博會匯聚全球產業力量,中國智能車芯引領企業芯馳科技首度參展,面向全球展現中國智能
    的頭像 發表于 06-16 12:00 ?1163次閱讀

    華為乾崑智能車云服務通過CCRC IT產品信息安全認證

    華為乾崑智能車云服務順利通過中國網絡安全審查認證和市場監管大數據中心(CCRC)的IT產品信息安全認證,成為首個獲得聯網云服務平臺安全和數據安全最高等級認證的云服務平臺。乾崑云在個人隱私合規
    的頭像 發表于 06-14 10:58 ?1476次閱讀

    智能車淺談——手把手讓跑起來(電磁篇)

    前言電磁尋跡小車之前智能車系列已經做了一個比較詳細的解析,但是美中不足是知識點被拆的太零散,可能對于新手來說不太友好,所以借著有空就再寫一點能讓跑起來的方案。當然,也就僅僅限于可以跑起來,元素
    的頭像 發表于 05-22 19:32 ?2840次閱讀
    <b class='flag-5'>智能車</b>淺談——手把手讓<b class='flag-5'>車</b>跑起來(電磁篇)

    智能車電磁組——基本控制篇

    智能車電磁組——基本控制篇前言電磁的控制比較簡單,可以分為信號采集,舵機控制和電機控制三部分,電磁的控制算法也主要圍繞這三部分進行,剛開始起步可能對這三個模塊的要求不高,但是隨著車速的不斷提高
    的頭像 發表于 05-20 19:34 ?3770次閱讀
    <b class='flag-5'>智能車</b>電磁組——基本控制篇

    華為與博泰聯網達成合作意向

    近日,2025上海國際車展期間,華為智能汽車解決方案BU與博泰聯網科技(上海)股份有限公司達成了智能車控模組合作意向,簽署了伙伴合作意向書,向智能車控模組伙伴關系邁出關鍵一步。
    的頭像 發表于 05-08 11:37 ?1481次閱讀

    華為與7家伙伴達成智能車控模組合作意向

    )股份有限公司、北斗智聯科技有限公司、斯潤天朗(無錫)科技有限公司7家伙伴達成了智能車控模組合作意向,分別簽署了伙伴合作意向書,向智能車控模組伙伴體系構建邁出關鍵一步。
    的頭像 發表于 05-07 10:10 ?1207次閱讀

    請問訓練平臺訓練完的識別程序,可以實現在識別物體時屏幕再顯示出來,沒有識別物體時屏幕不顯示嗎?

    問題如題,訓練平臺訓練完的識別程序,可以實現在識別物體時屏幕再顯示出來,沒有識別物體時屏幕不顯示嗎?比較小白,可以解釋一下怎么做嗎?或者
    發表于 04-29 06:12

    芯馳科技升級智能座艙與智能車控芯片產品線

    近日,芯馳科技在2025年上海國際汽車展覽會上舉辦發布會,同步升級智能座艙與智能車控雙產品線。理想汽車CTO謝炎、北汽研究總院院長王磊、斑馬智行聯席CEO郝飛等產業鏈領袖共同見證此次發布,并高度肯定芯馳的產品創新力與量產實力。
    的頭像 發表于 04-25 11:17 ?988次閱讀

    智能車載終端為什么也要求保密性高?

    隨著技術和市場需求的發展,智能車載終端,尤其是車載支付終端、智能車載收費終端和車載考勤打卡終端的功能也日益多樣化,從原來單一的刷卡支付,到現在可以支持掃碼支付和刷臉支付。從以往的無法綁定乘車人
    的頭像 發表于 04-24 16:16 ?683次閱讀
    <b class='flag-5'>智能車</b>載終端為什么也要求保密性高?

    呱呱三人談 | 快 or 準?競賽車手激辯智能車黑科技!

    4月10日晚上7點 全網技術宅速歸!兩大競賽車手直播激辯智能車核心命題,贏家秘籍直接送到你嘴里!
    的頭像 發表于 04-08 20:06 ?594次閱讀
    呱呱三人談 | 快 or 準?競賽車手激辯<b class='flag-5'>智能車</b>黑科技!

    CLRC663如何增強對RFID標簽ic的識別距離

    我現在在使用clrc663通過ISO15693協議識別rifd標簽 ic無線圈(尺寸5*5mm),我現在的方案識別距離很短接近0時才能識別,我這邊需要將
    發表于 03-17 07:50