欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

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

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

基于LSS范式的BEV感知算法優(yōu)化部署詳解

地平線HorizonRobotics ? 來源:地平線HorizonRobotics ? 2024-01-02 14:13 ? 次閱讀

簡介

BEV即Bird's Eye View(鳥瞰視圖)是一種從空中俯視場景的視角。由多張不同視角采集的圖像通過不同的空間轉(zhuǎn)換方式形成,如下圖所示,左側(cè)為6張不同位置的相機采集的圖像,右側(cè)為轉(zhuǎn)換的BEV圖像。

38ecd2b0-a6e8-11ee-8b88-92fbcf53809c.png

BEV感知模型指的是直接輸出BEV坐標系下的感知結(jié)果,如動靜態(tài)檢測目標,車道線,路面標識等。BEV坐標系好處是:

1. 成本低。相比3D點云的方式來補充3維信息,純視覺方案的成本更低;

2. 可以直接給到下游任務(wù),例如預(yù)測和規(guī)劃;

3. 可以在模型中融合各視角的特征,提升感知效果;

4. 可以更好的和各類傳感器進行融合。

對于下游的預(yù)測和規(guī)控任務(wù)而言,需要的是3D的目標,因此在傳統(tǒng)的自動駕駛方案中,2D的感知推理結(jié)果需要通過復(fù)雜的后處理去解決3D坐標提升的問題。而BEV感知模型是更接近于一種端到端的解決方案。

當前主要的BEV 轉(zhuǎn)換方式為以下三種:

? IPM-based:基于地面平坦假設(shè)的逆透視映射方式,技術(shù)簡單成本低,但是對上下坡情況擬合效果不好。

? LSS-based:通過顯示的深度估計方式構(gòu)建三維視錐點云特征,也是較常用的轉(zhuǎn)換方式。

? Transformer-based:用transformer機制學(xué)習(xí)3D query和2D 圖像特征之間的關(guān)系來建模。部署時global attention的計算量較大, 需要考慮端側(cè)運行時對性能的影響。

在實際部署時,需要考慮算法的端側(cè)性能。地平線的參考算法目前已賦能多家客戶實現(xiàn)BEV感知算法在征程5上的部署和開發(fā),多家客戶已實現(xiàn)BEV demo開發(fā)。本文以LSS范式的BEV感知算法為例,介紹地平線提供的參考算法如何在公版的基礎(chǔ)上做算法在征程5芯片的適配和模型的優(yōu)化。

整體框架

3904526e-a6e8-11ee-8b88-92fbcf53809c.png

BEV 感知架構(gòu)

BEV系列的模型使用多視圖的當前幀的6個RGB圖像作為輸入。輸出是目標的3D Box和BEV分割結(jié)果。多視角圖像首先使用2D主干獲取2D特征。然后投影到3D BEV視角。接著對BEV feature 編碼獲取BEV特征。最后,接上任務(wù)特定的head,輸出多任務(wù)結(jié)果。模型主要包括以下部分:

Part1—2D Image Encoder:圖像特征提取層。使用2D主干網(wǎng)絡(luò)(efficientnet)和FastSCNN輸出不同分辨率的特征圖。返回最后一層--上采樣至1/16原圖大小層,用于下一步投影至3D BEV坐標系中;

Part2—View transformer:采用不同的轉(zhuǎn)換方式完成圖像特征到BEV 3D特征的轉(zhuǎn)換;

Part3—BEV transforms:對BEV特征做數(shù)據(jù)增強,僅發(fā)生在訓(xùn)練階段;

Part4—3D BEV Encoder:BEV特征提取層;

Part5—BEV Decoder:分為Detection Head和Segmentation Head。

LSS方案

公版的LSS方案如下:

39198dd2-a6e8-11ee-8b88-92fbcf53809c.png

公版的LSS方案分為3個部分:

1. 將圖像從2d平面提升到3d空間,生成3d視錐(frustum)點云,并對點云上所有的點預(yù)測context特征,生成context特征點云;

2. 對視錐點云和context特征點云進行 “Splat” 操作,在BEV網(wǎng)格中構(gòu)建BEV特征;

3. BEV特征后,可通過“Shooting”完成特定的下游任務(wù),比如Motion Planning。

模型部署分析

在部署之前,需要對公版模型做部署分析,避免模型中有BPU無法支持的算子和某些對性能影響較大的算子。對于無法支持的算子,需要做替換;對于影響性能的算子需要做優(yōu)化。同時為了達到更好的精度會增加訓(xùn)練策略的優(yōu)化和量化策略的優(yōu)化。本章節(jié)先對公版模型做部署分析,最后給出地平線的優(yōu)化方式。

問題1 大尺寸運算導(dǎo)致性能瓶頸

由于深度特征的增加,feature的維度是高于4維的,考慮到transpose算子的耗時問題和部署問題,LSS方案中會存在維度的折疊,對feature做view和H維度的折疊。對應(yīng)的操作為:depth_feature會做view和Dim、H和W的折疊。維度折疊會導(dǎo)致feature的維度變大,在生成視錐點云時,其涉及的操作mul操作的輸入也就增大了,在做部署時會導(dǎo)致DDR帶寬問題。因此公版的步驟1中的大尺寸算子計算需要做對應(yīng)的優(yōu)化。

問題2 BEVpooling的索引操作支持問題

公版在做2D到3D轉(zhuǎn)換時,從圖像空間的index映射到BEV空間的index,相同的BEV空間index相加后再賦值到BEV tensor上,即公版的步驟二??紤]到征程5對索引操作無法支持,因此該操作在部署時需要做替換。

問題3 分割頭粒度太粗

地平線提供的是多任務(wù)的BEV感知算法,對于多任務(wù)模型來說不同的任務(wù)需要特定的范圍和粒度,特別是對于分割模型來說,分割的目標的粒度較小,因此相比于檢測任務(wù)來說feature需要細化,即用更大的分辨率來表示。

問題4 grid 量化精度誤差問題

對于依賴相機內(nèi)外參的模型來說,轉(zhuǎn)換時的點坐標極其重要,因此需要保障該部分的精度。同時grid的表示范圍需要使用更大比特位的量化。

針對以上4個問題,本章節(jié)會介紹該部分在征程5的實現(xiàn)方式使其可以在板端部署并高速運行。

性能優(yōu)化

mul的性能優(yōu)化

為了減少大量的transpose操作和優(yōu)化mul算子的耗時問題, 我們選擇把深度和 feature 分別做grid_sample后執(zhí)行mul操作,具體操作如下:

Python
#depth  B, N, D,H, W
depth = tensor(B,N,D,H,W)
feat = tensor(B,N,C,H,W)


#depth  B, 1, N *D, H*W
depth = depth.view(B, 1, N*D, H*W)


#feat -> B,C,N,H,W-> B, C, N*H, W
feat = feat.permute(0, 2, 1, 3, 4).view(B, C, N*H, W)


for i in range(self.num_points):
    homo_feat = self.grid_sample(
        feat,
        fpoints[i * B : (i + 1) * B],
    )


    homo_dfeat = self.dgrid_sample(
        dfeat,
        dpoints[i * B : (i + 1) * B],
    )
    homo_feat = self.floatFs.mul(homo_feat, homo_dfeat)
    homo_feats.append(homo_feat)

mul操作的計算量大幅減少,性能上提升4~5倍!

BEV_pooling部署優(yōu)化

使用grid_sample代替公版的3D空間轉(zhuǎn)換。即從原來的前向wrap-從圖像空間特征轉(zhuǎn)換到BEV空間特征,改為從BEV空間拉取圖像空間特征。

公版實現(xiàn):

a.通過一個深度估計變成6D的tensor

Python
volume = depth.unsqueeze(1) * cvt_feature.unsqueeze(2)
volume = volume.view(B, N, volume_channel_index[-1], self.D, H, W)
volume = volume.permute(0, 1, 3, 4, 5, 2)

b.從圖像空間的index映射到BEV空間的index,相同的BEV空間index相加后再賦值到BEV tensor上

Python
def voxel_pooling(self, geom_feats, x):
        ...
        # flatten x
        x = x.reshape(Nprime, C)
        # flatten indices
        geom_feats = ((geom_feats - (self.bx - self.dx/2.)) / self.dx).long()
        geom_feats = geom_feats.view(Nprime, 3)
        ...
        # filter out points that are outside box
        kept = (geom_feats[:, 0] >= 0) & (geom_feats[:, 0] < nx[0]) 
            & (geom_feats[:, 1] >= 0) & (geom_feats[:, 1] < nx[1]) 
            & (geom_feats[:, 2] >= 0) & (geom_feats[:, 2] < nx[2])
        geom_feats = geom_feats[kept]
        x = x[kept]
        ...
        # argsort and get tensors from the same voxel next to each other
        ranks = geom_feats[:, 0] * (nx[1] * nx[2] * B) 
            + geom_feats[:, 1] * (nx[2] * B) 
            + geom_feats[:, 2] * B 
            + geom_feats[:, 3]
        sorts = ranks.argsort()
        x, geom_feats, ranks = x[sorts], geom_feats[sorts], ranks[sorts]
        ...
        return final

2. 地平線實現(xiàn):

使用grid_sample代替公版的3D空間轉(zhuǎn)換。grid_sample為采樣算子,通過輸入圖像特征和2D點坐標grid,完成圖像特征到BEV特征的轉(zhuǎn)換,其工作原理見下圖。

39240e38-a6e8-11ee-8b88-92fbcf53809c.png

Grid_Samples 原理圖

horizon_plugin_pytorch提供的grid_sample算子和公版輸入略有差異,地平線已支持公版的grid_sample算子。

由于該轉(zhuǎn)換方式是前向映射,前向映射會產(chǎn)生的BEV index并不均勻,最多的一個voxel有100多個點,最少有效點為0。我們在提供的源代碼中使用了每個voxel使用了10個點,如果想要提升精度可以考慮增加每個voxel的有效點。

Python
#num_point為10
for i in range(self.num_points):
    homo_feat = self.grid_sample(
        feat,
        fpoints[i * B : (i + 1) * B],
    )


    homo_dfeat = self.dgrid_sample(
        dfeat,
        dpoints[i * B : (i + 1) * B],
    )
    homo_feat = self.floatFs.mul(homo_feat, homo_dfeat)
    homo_feats.append(homo_feat)

精度優(yōu)化

多任務(wù)模型的精度優(yōu)化

參考BEVerse模型對多任務(wù)根據(jù)不同粒度進行細化,在分割頭做解碼之前,將BEV feature的分辨率增大,map size為[200,400],實現(xiàn)上由grid_sample完成。

39351e08-a6e8-11ee-8b88-92fbcf53809c.png

Python
#init map module
if (self.bev_size and self.task_size and self.task_size != self.bev_size):
    self.grid_sample = hnn.GridSample(
        mode="bilinear",
        padding_mode="zeros",
    )


#decoder module forward
def forward(self, feats: Tensor, meta: Dict) -> Any:
    feat = feats[self.task_feat_index]
    if hasattr(self, "grid_sample"):
        batch_size = feat.shape[0]


        new_coords = self.new_coords.repeat(batch_size, 1, 1, 1)
        feat = self.grid_sample(feat, self.quant_stub(new_coords))
    feat = [feat]
    pred = self.head(feat)
    return self._post_process(meta, pred)

浮點模型精度的優(yōu)化

在浮點模型的訓(xùn)練上,使用數(shù)據(jù)增強來增強模型的泛化能力,通過嘗試不同的增強方式,最終選取BEVRotate方式對輸入數(shù)據(jù)做transform。相比于未做數(shù)據(jù)增強的浮點模型mAP提升1.5個點,NDS提升0.6個點。詳細實驗記錄見實驗結(jié)果章節(jié)。

393c1618-a6e8-11ee-8b88-92fbcf53809c.png

該實驗結(jié)果為中間結(jié)果,非最終精度數(shù)據(jù)

量化精度的優(yōu)化

BEV_LSS的量化訓(xùn)練采用horizon_plugin_pytorch的Calibration方式來實現(xiàn)的,通過插入偽量化節(jié)點對多個batch的校準數(shù)據(jù)基于數(shù)據(jù)分布特征來計算量化系數(shù),從而達到模型的量化。BEV_LSS模型無需QAT訓(xùn)練就可以達到和浮點相當?shù)木取?/p>

除了量化方式上的優(yōu)化,地平線對輸入的grid也做了優(yōu)化,包括了

1. 手動計算scale,使用固定的scale作為grid的量化系數(shù)。

Python
#fix scale
def get_grid_quant_scale(grid_shape, view_shape):
    max_coord = max(*grid_shape, *view_shape)
    coord_bit_num = math.ceil(math.log(max_coord + 1, 2))
    coord_shift = 15 - coord_bit_num
    coord_shift = max(min(coord_shift, 8), 0)
    grid_quant_scale = 1.0 / (1 << coord_shift)
    return grid_quant_scale
#get grid_quant_scale
grid_quant_scale = get_grid_quant_scale(grid_size, featview_shape)


##init
self.quant_stub = QuantStub(grid_quant_scale)

2.grid_sample算子的輸入支持int16量化,為了保障grid的精度,地平線選擇int16量化。

Python
self.quant_stub.qconfig = qconfig_manager.get_qconfig(
    activation_qat_qkwargs={"dtype": qint16, "saturate": True},
    activation_calibration_qkwargs={"dtype": qint16, "saturate": True},
)

基于以上對量化精度的優(yōu)化后,最終定點精度達到和浮點相當?shù)乃剑?strong>量化精度達到99.7%!

實驗結(jié)果

1.性能和精度數(shù)據(jù)

數(shù)據(jù)集 Nuscenes
Input shape 256x704
backbone efficientnetb0
bev shape 128x128
FPS(單核) 138
latency(ms) 8.21
分割精度(浮點/定點)iou divider 46.55/47.45
ped_crossing 27.91/28.44
Boundary 47.06/46.03
Others 85.59/84.49
檢測精度(浮點/定點) NDS 0.3009/0.3000
mAP 0.2065/0.2066

注:grid_sample的input_feature H,W ∈ [1, 1024] 且 H*W ≤ 720*1024

2. 不同數(shù)據(jù)增強方式對浮點模型的精度影響。

39491494-a6e8-11ee-8b88-92fbcf53809c.png

該實驗結(jié)果為中間結(jié)果,非最終精度數(shù)據(jù)

3.地平線征程5部署LSS范式的BEV模型通用建議

?選用BPU高效支持的算子替換不支持的算子。

? num_point會直接影響性能和精度,可以根據(jù)需求做權(quán)衡。處于訓(xùn)練速度考慮使用topk選擇點,若想要更高的精度可以對點的選擇策略做優(yōu)化。

? grid使用fixed scale來保障量化精度,如超過int8表示范圍則開啟int16量化,具體見grid量化精度優(yōu)化章節(jié)。

?對于分辨率較大導(dǎo)致帶寬瓶頸或不支持問題,可以拆分為多個計算,緩解帶寬壓力,保障模型可以順利編譯。

?對于常量計算(例如:grid計算)編譯時可以作為模型的輸入,提升模型的運行性能。

總結(jié)

本文通過對LSS范式的BEV多任務(wù)模型在地平線征程5上量化部署的優(yōu)化,使得模型在該計算方案上用遠低于1%的量化精度損失,得到latency為8.21ms的部署性能,同時,通過LSS范式的BEV模型的部署經(jīng)驗,可以推廣到基于該范式的BEV模型的優(yōu)化中,以便更好的在端側(cè)部署。







審核編輯:劉清

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

    關(guān)注

    0

    文章

    6

    瀏覽量

    6657
  • LSS
    LSS
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    1979
  • pytorch
    +關(guān)注

    關(guān)注

    2

    文章

    808

    瀏覽量

    13380

原文標題:好算法更要配好用的芯片 —— 基于LSS范式的BEV感知算法優(yōu)化部署詳解

文章出處:【微信號:horizonrobotics,微信公眾號:地平線HorizonRobotics】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    BEV感知算法:下一代自動駕駛的核心技術(shù)

    首先,BEV視圖存在遮擋小的優(yōu)點,由于視覺的透視效應(yīng),現(xiàn)實世界的物體在2D圖像中很容易受到其他物體的遮擋,因此,傳統(tǒng)的基于2D的感知方式只能感知可見的目標,對于被遮擋的部分算法將無能為
    發(fā)表于 01-25 15:38 ?4338次閱讀
    <b class='flag-5'>BEV</b><b class='flag-5'>感知</b><b class='flag-5'>算法</b>:下一代自動駕駛的核心技術(shù)

    基于改進群搜索優(yōu)化算法的認知無線電協(xié)作頻譜感知

    基于改進群搜索優(yōu)化算法的認知無線電協(xié)作頻譜感知_江輝
    發(fā)表于 01-07 16:00 ?4次下載

    認知無線網(wǎng)絡(luò)中多信道頻譜感知周期優(yōu)化算法_劉洋

    認知無線網(wǎng)絡(luò)中多信道頻譜感知周期優(yōu)化算法_劉洋
    發(fā)表于 01-08 11:07 ?0次下載

    基于粒子群優(yōu)化算法的水質(zhì)傳感器優(yōu)化部署研究_余幸運

    基于粒子群優(yōu)化算法的水質(zhì)傳感器優(yōu)化部署研究_余幸運
    發(fā)表于 03-22 09:19 ?1次下載

    云計算中能耗和性能感知的虛擬機優(yōu)化部署算法

    優(yōu)化虛擬機部署是數(shù)據(jù)中心降低能耗的一個重要方法。目前大多數(shù)虛擬機部署算法都明顯地降低了能耗,但過度虛擬機整合和遷移引起了系統(tǒng)性能較大的退化。針對該問題,首先構(gòu)建虛擬機
    發(fā)表于 11-23 15:43 ?0次下載

    基于粒子群優(yōu)化PSO算法部署策略

    針對云計算基礎(chǔ)設(shè)施即服務(wù)(IaaS)中的虛擬機部署問題,提出一種基于粒子群優(yōu)化(PSO)算法部署策略。由于PSO算法在處理虛擬機
    發(fā)表于 12-26 10:32 ?1次下載

    基于二項感知覆蓋的自適應(yīng)虛擬力粒子群優(yōu)化算法

    數(shù)據(jù)感知層的無線傳感器網(wǎng)絡(luò)覆蓋范圍對感知服務(wù)質(zhì)量具有非常重要的意義。鑒于無線傳感器網(wǎng)絡(luò)初始部署的隨機性所造成的覆蓋冗余、覆蓋空洞以及粒子群算法自身的早熟收斂等問題,提出一種基于二項
    發(fā)表于 05-18 16:57 ?5次下載

    LSS的功能介紹,它的應(yīng)用都有哪些

    日益更新的工業(yè)自動化系統(tǒng),為了讓用戶更好地應(yīng)對工業(yè)通信協(xié)議新功能,上海泗博在原有基礎(chǔ)上對Modbus轉(zhuǎn)CANopen網(wǎng)關(guān)--MCO-242/ MCC-425進行功能升級,新增LSS從站功能。 LSS
    的頭像 發(fā)表于 04-25 14:09 ?3233次閱讀
    <b class='flag-5'>LSS</b>的功能介紹,它的應(yīng)用都有哪些

    黑芝麻智能在BEV感知方面的研發(fā)進展

    日前,在由黑芝麻智能主辦的“2023智能汽車高峰論壇”上,黑芝麻智能深度學(xué)習(xí)研發(fā)高級總監(jiān)王祚官發(fā)表了主題為“BEV感知,給自動駕駛開啟‘上帝視角’”的主旨演講,分享黑芝麻智能在BEV感知
    的頭像 發(fā)表于 05-15 16:39 ?1611次閱讀

    Sparse4D系列算法:邁向長時序稀疏化3D目標檢測的新實踐

    Open AI Day公布其BEV感知算法之后,相關(guān)研究層出不窮,感知效果取得了顯著提升,BEV也幾乎成為了多傳感器特征融合的代名詞。但是
    的頭像 發(fā)表于 06-21 10:11 ?2279次閱讀
    Sparse4D系列<b class='flag-5'>算法</b>:邁向長時序稀疏化3D目標檢測的新實踐

    CVPR上的新頂流:BEV自動駕駛感知范式

    BEV自動駕駛感知好比一個從高處統(tǒng)觀全局的“上帝視角”,將三維環(huán)境信息投影到二維平面,以俯視視角展示環(huán)境中的物體和地形。在路徑規(guī)劃、障礙物檢測、自動駕駛決策等方面,BEV感知都展現(xiàn)出了
    的頭像 發(fā)表于 08-23 14:51 ?1136次閱讀
    CVPR上的新頂流:<b class='flag-5'>BEV</b>自動駕駛<b class='flag-5'>感知</b>新<b class='flag-5'>范式</b>

    BEV感知中的Transformer算法介紹

    BEV下的每個grid作為query,在高度上采樣N個點,投影到圖像中sample到對應(yīng)像素的特征,且利用了空間和時間的信息。并且最終得到的是BEV featrue,在此featrue上做Det和Seg。
    的頭像 發(fā)表于 09-04 10:22 ?1462次閱讀
    <b class='flag-5'>BEV</b><b class='flag-5'>感知</b>中的Transformer<b class='flag-5'>算法</b>介紹

    BEV感知的二維特征點

    BEV感知的二維特征點 首先來簡單介紹一下什么是BEV感知。 BEV感知(Bird’s Eye
    的頭像 發(fā)表于 11-14 11:37 ?735次閱讀

    Nullmax揭秘BEV-AI技術(shù)架構(gòu)加速量產(chǎn)方案演進

    12月19日,Nullmax首席科學(xué)家成二康博士應(yīng)邀出席2023全球自動駕駛峰會(GADS 2023),在自動駕駛BEV感知技術(shù)論壇上發(fā)表《BEV-AI技術(shù)架構(gòu) – 量產(chǎn)方案演進》主題報告,透過Nullmax量產(chǎn)方案演進路線圖,
    的頭像 發(fā)表于 12-22 14:46 ?1265次閱讀

    黑芝麻智能開發(fā)多重亮點的BEV算法技術(shù) 助力車企高階自動駕駛落地

    隨著視覺算法的演進,BEV(Bird's-Eye-View Perception)感知算法成為主機廠和自動駕駛公司發(fā)力城市場景的核心技術(shù)之一,
    的頭像 發(fā)表于 03-29 18:18 ?2022次閱讀
    黑芝麻智能開發(fā)多重亮點的<b class='flag-5'>BEV</b><b class='flag-5'>算法</b>技術(shù) 助力車企高階自動駕駛落地