国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

PointNet++詳解(一):數(shù)據(jù)增強(qiáng)方法

這篇具有很好參考價(jià)值的文章主要介紹了PointNet++詳解(一):數(shù)據(jù)增強(qiáng)方法。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


如有錯(cuò)誤,懇請指出。


下面是pointnet++項(xiàng)目實(shí)現(xiàn)的點(diǎn)云數(shù)據(jù)增強(qiáng)方法,主要包括隨機(jī)旋轉(zhuǎn)、隨機(jī)縮放、隨機(jī)丟棄、隨機(jī)平移、隨機(jī)擾動(dòng)等等。

github項(xiàng)目鏈接:https://github.com/yanx27/Pointnet_Pointnet2_pytorch

1. 隨機(jī)順序

# 作用: 隨機(jī)打亂Batch中點(diǎn)云及其label的順序
def shuffle_data(data, labels):
    """ Shuffle data and labels.
        Input:
          data: B,N,... numpy array
          label: B,... numpy array
        Return:
          shuffled data, label and shuffle indices
    """
    idx = np.arange(len(labels))
    np.random.shuffle(idx)
    return data[idx, ...], labels[idx], idx

# 作用: 隨機(jī)打亂一個(gè)點(diǎn)云中點(diǎn)的順序
def shuffle_points(batch_data):
    """ Shuffle orders of points in each point cloud -- changes FPS behavior.
        Use the same shuffling idx for the entire batch.
        Input:
            BxNxC array
        Output:
            BxNxC array
    """
    idx = np.arange(batch_data.shape[1])    # 根據(jù)索引隨機(jī)點(diǎn)順序
    np.random.shuffle(idx)
    return batch_data[:,idx,:]

2. 隨機(jī)旋轉(zhuǎn)

這里貼上的是沿3個(gè)軸隨機(jī)旋轉(zhuǎn)

# 作用: 對每個(gè)點(diǎn)云與法向量均進(jìn)行沿xyz三個(gè)軸隨機(jī)(小幅度)旋轉(zhuǎn)
def rotate_perturbation_point_cloud_with_normal(batch_data, angle_sigma=0.06, angle_clip=0.18):
    """ Randomly perturb the point clouds by small rotations
        Input:
          BxNx6 array, original batch of point clouds and point normals
          angle_sigma: 權(quán)重系數(shù), 控制隨機(jī)角度的大小
          angle_clip:  確定隨機(jī)角度的上下限(-0.18~0.18)
        Return:
          BxNx3 array, rotated batch of point clouds
    """
    rotated_data = np.zeros(batch_data.shape, dtype=np.float32)
    for k in range(batch_data.shape[0]):
        # 對xyz三個(gè)軸方向隨機(jī)生成一個(gè)旋轉(zhuǎn)角度
        angles = np.clip(angle_sigma*np.random.randn(3), -angle_clip, angle_clip)
        # 根據(jù)公式構(gòu)建三個(gè)軸方向的旋轉(zhuǎn)矩陣
        Rx = np.array([[1,0,0],
                       [0,np.cos(angles[0]),-np.sin(angles[0])],
                       [0,np.sin(angles[0]),np.cos(angles[0])]])
        Ry = np.array([[np.cos(angles[1]),0,np.sin(angles[1])],
                       [0,1,0],
                       [-np.sin(angles[1]),0,np.cos(angles[1])]])
        Rz = np.array([[np.cos(angles[2]),-np.sin(angles[2]),0],
                       [np.sin(angles[2]),np.cos(angles[2]),0],
                       [0,0,1]])
        # 按照內(nèi)旋方式:Z-Y-X旋轉(zhuǎn)順序獲得整體的旋轉(zhuǎn)矩陣
        R = np.dot(Rz, np.dot(Ry,Rx))
        shape_pc = batch_data[k,:,0:3]
        shape_normal = batch_data[k,:,3:6]
        # 分別對坐標(biāo)與法向量進(jìn)行旋轉(zhuǎn),整體公式應(yīng)該為: Pt = (Rz * Ry * Rx) * P
        rotated_data[k,:,0:3] = np.dot(shape_pc.reshape((-1, 3)), R)
        rotated_data[k,:,3:6] = np.dot(shape_normal.reshape((-1, 3)), R)
    return rotated_data

3. 隨機(jī)噪聲

# 作用: 對點(diǎn)云數(shù)據(jù)添加噪聲, 進(jìn)行小范圍擾動(dòng)
def jitter_point_cloud(batch_data, sigma=0.01, clip=0.05):
    """ Randomly jitter points. jittering is per point.
        Input:
          BxNx3 array, original batch of point clouds
          angle_sigma: 權(quán)重系數(shù), 控制隨機(jī)噪聲幅度
          angle_clip:  確定隨機(jī)噪聲的上下限(-0.05~0.05)
        Return:
          BxNx3 array, jittered batch of point clouds
    """
    B, N, C = batch_data.shape
    assert(clip > 0)
    jittered_data = np.clip(sigma * np.random.randn(B, N, C), -1*clip, clip)
    jittered_data += batch_data    # 添加噪聲
    return jittered_data

4. 隨機(jī)平移

# 作用: 對每個(gè)點(diǎn)云進(jìn)行隨機(jī)平移, 對點(diǎn)云中的每個(gè)點(diǎn)添加一個(gè)隨機(jī)的移動(dòng)距離
def shift_point_cloud(batch_data, shift_range=0.1):
    """ Randomly shift point cloud. Shift is per point cloud.
        Input:
          BxNx3 array, original batch of point clouds
        Return:
          BxNx3 array, shifted batch of point clouds
    """
    B, N, C = batch_data.shape
    shifts = np.random.uniform(-shift_range, shift_range, (B,3))    # 對每個(gè)batch的點(diǎn)云設(shè)置一個(gè)隨機(jī)的移動(dòng)偏差
    for batch_index in range(B):
        batch_data[batch_index,:,:] += shifts[batch_index,:]    # 每個(gè)點(diǎn)都進(jìn)行移動(dòng)
    return batch_data

5. 隨機(jī)縮放

# 作用: 對每個(gè)點(diǎn)云進(jìn)行隨機(jī)縮放, 實(shí)現(xiàn)方法是乘積因子直接與點(diǎn)云數(shù)據(jù)相乘即可
def random_scale_point_cloud(batch_data, scale_low=0.8, scale_high=1.25):
    """ Randomly scale the point cloud. Scale is per point cloud.
        Input:
            BxNx3 array, original batch of point clouds
        Return:
            BxNx3 array, scaled batch of point clouds
    """
    B, N, C = batch_data.shape
    scales = np.random.uniform(scale_low, scale_high, B)    # 0.8~1.25間的隨機(jī)縮放
    for batch_index in range(B):
        batch_data[batch_index,:,:] *= scales[batch_index]  # 每個(gè)點(diǎn)都進(jìn)行縮放
    return batch_data

6. 隨機(jī)丟棄

# 作用: 隨機(jī)丟棄點(diǎn)云中的點(diǎn), 操作是將丟棄點(diǎn)全部賦予first point的值, 也就是是一個(gè)偽丟棄(shape是沒有改變的)
def random_point_dropout(batch_pc, max_dropout_ratio=0.875):
    ''' batch_pc: BxNx3 '''
    for b in range(batch_pc.shape[0]):
        dropout_ratio = np.random.random()*max_dropout_ratio  # 設(shè)置隨機(jī)丟棄的概率,區(qū)間是0~0.875
        drop_idx = np.where(np.random.random((batch_pc.shape[1])) <= dropout_ratio)[0]  # 找到那些比概率低的索引值來丟棄
        if len(drop_idx) > 0:
            batch_pc[b,drop_idx,:] = batch_pc[b,0,:]   # 這里所謂的丟棄就是將值設(shè)置與第一個(gè)點(diǎn)相同
    return batch_pc

ps:在PointNet++分組采樣k個(gè)鄰域點(diǎn)時(shí),如果符合距離的點(diǎn)不足k個(gè),也是使用第一個(gè)點(diǎn)來對其他不滿足距離的點(diǎn)進(jìn)行替換,達(dá)到了一種單點(diǎn)重復(fù)多次的效果。和這里的隨機(jī)丟棄使用的一樣的方法。


參考資料:

https://github.com/yanx27/Pointnet_Pointnet2_pytorch文章來源地址http://www.zghlxwxcb.cn/news/detail-765902.html

到了這里,關(guān)于PointNet++詳解(一):數(shù)據(jù)增強(qiáng)方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Fusion_PointClouds - 多激光雷達(dá)點(diǎn)云數(shù)據(jù)融合

    Fusion_PointClouds - 多激光雷達(dá)點(diǎn)云數(shù)據(jù)融合

    fusion_pointclouds 主要目的為Ubuntu環(huán)境下無人車多激光雷達(dá)標(biāo)定之后, 將多個(gè)激光雷達(dá)點(diǎn)云話題/坐標(biāo)系 通過PCL (Point Cloud Library)融合為 一個(gè)ros點(diǎn)云話題,以便于后期點(diǎn)云地面分割與地面處理等等。 1.1 應(yīng)用場景 圖1:為了保證激光雷達(dá)的360°環(huán)境覆蓋,我們需要用到多傳感器的拼

    2024年02月03日
    瀏覽(97)
  • 點(diǎn)云數(shù)據(jù)類型分析 sensor_msgs/PointCloud2

    ROS應(yīng)用中,使用到雷達(dá)、相機(jī)等傳感器。與單線雷達(dá)不同的是,多線雷達(dá)與深度相機(jī)的應(yīng)用都會(huì)涉及到多維問題。3D視覺處理的主要是點(diǎn)云,點(diǎn)云,是很多點(diǎn)的集合。在處理點(diǎn)云數(shù)據(jù)之前需了解點(diǎn)云數(shù)據(jù)類型sensor_msgs/PointCloud2,所以記錄一下學(xué)習(xí)過程。 點(diǎn)云是某個(gè)坐標(biāo)系下的

    2024年02月05日
    瀏覽(16)
  • YOLOv5數(shù)據(jù)增強(qiáng)方法

    YOLOv5的數(shù)據(jù)增強(qiáng)方法包括以下幾種: 隨機(jī)剪裁:隨機(jī)從輸入圖像中剪裁出一塊區(qū)域并將其作為新的輸入。 隨機(jī)翻轉(zhuǎn):隨機(jī)將輸入圖像左右或上下翻轉(zhuǎn)。 隨機(jī)顏色變化:隨機(jī)調(diào)整輸入圖像的對比度、亮度和飽和度。 隨機(jī)加噪:在輸入圖像上隨機(jī)添加噪聲。 隨機(jī)模糊:使用高

    2024年02月11日
    瀏覽(19)
  • 【論文閱讀筆記】序列數(shù)據(jù)的數(shù)據(jù)增強(qiáng)方法綜述

    【論文閱讀筆記】序列數(shù)據(jù)的數(shù)據(jù)增強(qiáng)方法綜述

    ?這篇論文探討了在深度學(xué)習(xí)模型中由于對精度的要求不斷提高導(dǎo)致模型框架結(jié)構(gòu)變得更加復(fù)雜和深層的趨勢。隨著模型參數(shù)量的增加,訓(xùn)練模型需要更多的數(shù)據(jù),但人工標(biāo)注數(shù)據(jù)的成本高昂,且由于客觀原因,獲取特定領(lǐng)域的數(shù)據(jù)可能變得困難。為了緩解數(shù)據(jù)不足的問題,

    2024年02月05日
    瀏覽(20)
  • 【深度學(xué)習(xí):數(shù)據(jù)增強(qiáng) 】提高標(biāo)記數(shù)據(jù)質(zhì)量的 5 種方法

    【深度學(xué)習(xí):數(shù)據(jù)增強(qiáng) 】提高標(biāo)記數(shù)據(jù)質(zhì)量的 5 種方法

    計(jì)算機(jī)視覺模型的復(fù)雜性、準(zhǔn)確性、速度和計(jì)算能力每天都在進(jìn)步。機(jī)器學(xué)習(xí)團(tuán)隊(duì)正在訓(xùn)練計(jì)算機(jī)視覺模型以更有效地解決問題,這使得標(biāo)記數(shù)據(jù)的質(zhì)量比以往任何時(shí)候都更加重要。 質(zhì)量差的標(biāo)記數(shù)據(jù),或者基于圖像或視頻的數(shù)據(jù)集中的錯(cuò)誤和錯(cuò)誤可能會(huì)給機(jī)器學(xué)習(xí)團(tuán)隊(duì)帶來

    2024年01月24日
    瀏覽(18)
  • 深度學(xué)習(xí)中的各種數(shù)據(jù)增強(qiáng)方法大全

    深度學(xué)習(xí)中的各種數(shù)據(jù)增強(qiáng)方法大全

    隨著深度學(xué)習(xí)在計(jì)算機(jī)視覺的廣泛應(yīng)用,以卷積神經(jīng)網(wǎng)絡(luò)為代表的深度學(xué)習(xí)模型取得了突破性的進(jìn)展。然而,直至今日,盡管提出了以 ViT 為代表的新一代視覺網(wǎng)絡(luò)架構(gòu),但數(shù)據(jù)問題仍然是構(gòu)建深度學(xué)習(xí)模型最常見的挑戰(zhàn)之一。在實(shí)際的應(yīng)用場景中,足量且高保真的優(yōu)質(zhì)數(shù)據(jù)

    2023年04月18日
    瀏覽(17)
  • 【語義分割】數(shù)據(jù)增強(qiáng)方法(原圖與標(biāo)簽同時(shí)擴(kuò)增)

    【語義分割】數(shù)據(jù)增強(qiáng)方法(原圖與標(biāo)簽同時(shí)擴(kuò)增)

    ? ?避免過擬合 ? ?提升模型的魯棒性 ? 提高模型的泛化能力 ? 避免樣本不均衡的問題 可分為兩類:在線增強(qiáng)和離線增強(qiáng)。這兩者的區(qū)別在于離線增強(qiáng)是在訓(xùn)練前對數(shù)據(jù)集進(jìn)行處理,往往能得到多倍的數(shù)據(jù)集,在線增強(qiáng)是在訓(xùn)練時(shí)對加載數(shù)據(jù)進(jìn)行預(yù)處理,不改變訓(xùn)練數(shù)據(jù)的

    2024年02月03日
    瀏覽(16)
  • 訓(xùn)練數(shù)據(jù)不夠怎么造?yolo5 最有用的trick 之?dāng)?shù)據(jù)增強(qiáng)詳解

    訓(xùn)練數(shù)據(jù)不夠怎么造?yolo5 最有用的trick 之?dāng)?shù)據(jù)增強(qiáng)詳解

    在深度學(xué)習(xí)領(lǐng)域,模型參數(shù)量往往數(shù)以百萬計(jì),因此要訓(xùn)練一個(gè)魯棒的模型往往需要大量的數(shù)據(jù),與此同時(shí),我們還可以利用各種數(shù)據(jù)增強(qiáng)的手段來增加模型訓(xùn)練數(shù)據(jù)的多樣性,令模型盡可能適應(yīng)不同的場景,防止過擬合的發(fā)生。 yolo5是Ultralytics公司于2020年開源的目標(biāo)檢測算

    2024年02月16日
    瀏覽(24)
  • Vivado cordic IP核rotate和translate使用詳解(附有代碼)

    Vivado cordic IP核rotate和translate使用詳解(附有代碼)

    Vivado cordic IP核rotate和translate使用詳解(附有代碼) 目錄 前言 一、cordic簡介 二、使用cordic IP核需要知道的預(yù)備知識 1.數(shù)據(jù)端口 2.Q Numbers Format 3.Vector Translation 4.Vector Rotation 三、IP核配置說明 1.translate 2.Rotate 四、Translate仿真 1.頂層代碼 2.仿真代碼 五、Rotate仿真 1.頂層代碼 2.仿真代

    2023年04月27日
    瀏覽(148)
  • YOLO數(shù)據(jù)集實(shí)現(xiàn)數(shù)據(jù)增強(qiáng)的方法(裁剪、平移 、旋轉(zhuǎn)、改變亮度、加噪聲等)

    YOLO數(shù)據(jù)集實(shí)現(xiàn)數(shù)據(jù)增強(qiáng)的方法(裁剪、平移 、旋轉(zhuǎn)、改變亮度、加噪聲等)

    最近我在做論文實(shí)驗(yàn)時(shí)從MSCOCO數(shù)據(jù)集中篩選了符合條件的1260張圖片,但數(shù)據(jù)樣本太少了,于是我就利用數(shù)據(jù)增強(qiáng)的方法實(shí)現(xiàn)了帶標(biāo)簽的樣本擴(kuò)充,最后擴(kuò)充為7560張圖片。本文就來記錄一下過程,有不懂的地方歡迎留言噢~ 目錄 前言 ??一、什么是數(shù)據(jù)增強(qiáng) ??二、數(shù)據(jù)增強(qiáng)的

    2024年02月09日
    瀏覽(4324)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包