主頁 > 後端開發 > 基于深度學習的三維語意理解(分割)綜述串列

基于深度學習的三維語意理解(分割)綜述串列

2020-10-03 18:37:47 後端開發

基于深度學習的三維語意理解(分割)綜述串列

文章目錄

  • 基于深度學習的三維語意理解(分割)綜述串列
  • 前言
  • 基于深度學習的三維語意理解(分割)綜述串列
    • 一、 從三維模型中進行深度學習
      • 1.1基于點云的方法
      • 1.2基于體素的方法
      • 1.3基于mesh的方法
    • 二、多模態融合的方法
          • Frustum-based Mthods
      • 2.1緊耦合
      • 2.2松耦合
  • 總結


前言

隨著2016年pointnet的發表,三維空間中的語音理解逐漸進入了爆發式的增長,本文對至今一些優秀的文章進行部分整理,

基于深度學習的三維語意理解(分割)綜述串列

一、 從三維模型中進行深度學習

1.1基于點云的方法

  1. 基于多視圖
    (1)MVCNN(Su et al )(2015)
    (2)MHBN(Yu et al)(2018)
    (3)View-GCN(Wei et al)(2020)
    (4)SnapNet(Boulch et al)(2017)(可分割)
    (5)DeepPr3SS(Lawin et al)(2017)(可分割)
    (6)TangentConv(Tatarchenko ta al)(2018)(可分割)
    (7)MV3D(Chen et al.)(2017)
    (8)RT3D(Zeng et al )(2018)
    (9)ContFuse(Liang et al)(2018)
    (10)AVOD(Ku et al)(2018)
    (11)SCANet(Lu et al )(2019)
    (12)MMF(Liang et al)(2019)

注:
基于BEV的方法: (且是single shot methods)
(1)PIXOR(Yang et al)(2018)
(2)HDNET(Yang et al)(2018)
(3)BirdNet(Beltran et al.)(2018)
(4)PointPillars(Lang et al.)(2019) (被引250+)

工業界的文章,速度極快的提升了 ,
作者寫作的出發點: 對三維點云進行實時檢測的一種方法,
本文貢獻:
提出了一種端到端的網路,利用原始的三維點云資料,,在不丟失三維資訊的同時,將點云資料轉換為pillars,然后通過一種新穎的編碼器,將這種資料轉換為一種偽二維影像(一種三維張量)然后再這種偽二維資料中,進行大量的CNN,來完成高速,實時的檢測任務,
關鍵點:在三維點云上的BEV轉換成的pillars;將pillars轉換為偽二維影像;利用CNN進行深度學習;速度極快,可以達到105Hz,
網路架構:
在這里插入圖片描述
三大步驟:
(1) Pillar Feature Net(生成偽影像)
首先在俯視圖的平面上打網格(H x W)的維度;然后對于每個網格所對應的柱子中的每一個點都取(x,y,z,r,x_c,y_c,z_c,x_p,y_p)9個維度,其中前三個為每個點的真實位置坐標,r為反射率,帶c下標的是點相對于柱子中心的偏差,帶p下標的是對點相對于網格中心的偏差,每個柱子中點多于N的進行采樣,少于N的進行填充0,于是就形成了一種三維張量pillars(D,N,P),其中D=9, N為點數(設定值),P為HW,
然后通過本文的編碼器,將pillars中的資料,進行資料轉換,用一個簡化的PointNet將D維轉換為C維(學習特征的一個小程序),變成(C,N,P)讓對N維方向上進行最大池化操作,使得其變為(C,P),此時P是H
W(BEV的網格解析度),此時我們又成了一個三維張量(H,W,C)一種偽二維影像,
(2)在偽影像上進行成熟的2維CNN操作,速度比三維卷積快了相當多,
(3)基于SSD的目標檢測頭進行bbox回歸,

(5)Point-GNN(Shi et al )(2020)

  1. 基于球形投影(Spherical)
    在這里插入圖片描述

圖片上方為球形投影的結果,下方是點云,
上方影像的每一行對應于從激光雷達的每個激光獲得的點,在此,影像中的最低行對應于激光雷達中的最低激光,是激光雷達附近最接近的環,如上所示,
投影不是及那個曲面進行簡單地展開,而是一個基于坐標系變換的程序,(將三維的點用圖片的形式來表示)
具體如何進行球面投影,可以參考https://blog.csdn.net/weixin_43199584/article/details/105260463

(1)SqueezeSeg(wu et al 2017)(可分割)

本文的核心貢獻,是對三維的點云進行預處理,將點云資料變換成圖片的形式來表示,然后利用成熟的二維卷積的方法來完成分割任務,

(2)SqueezeSeg22(Wu et al 2018)(可分割)
(3)RangeNet++(Milioto et al 2019)(可分割)

RangeNet++是以SqueezeSeg和SqueezeSegV2為基礎,都使用了點云的球面投影的方法,可以將點云資料轉換為可以支持很多成熟的二維影像處理方法的資料,(用圖片的方式來表示點云)(有效的將點云資料進行降維的方法),同時該方案計算量相對較小,適合于自動駕駛等領域進行實時處理,
處理流程:

  1. 將三維點云資料通過球投影的方式轉換為二維的表示方法,
  2. 在該二維的iamge上進行2D全卷積語意分割,
  3. 將分割成功的2D資訊轉換到3D點云上
  4. 對分割結果進行優化,
  1. MLP
    (1)PointNet(Qi et al)(2016)(可分割)

見https://blog.csdn.net/qq_41918369/article/details/108075239

(2)PointNet++(Qi et al)(2017)(可分割)

見https://blog.csdn.net/qq_41918369/article/details/108075239

(3)3DContextNet(Zeng et al.)(2017)(可分割)
(4)A-SCN(xie et al.)(2018)(可分割)
(5)PointSIFT(Jiang et al )(2018)(可分割)
(6)Engelman(Engleman et al)(2018)(可分割)
(7)PAT(Yang et al.)(2019)(可分割)
(8)LSANet(chen et al)(2019)(可分割)
(9)PointWeb(Zhao et al)(2019)(可分割)
(10)ShellNet(Zhang et al )(2019)(可分割)
(11)RandLA-Net(Hu et al)(2019)(可分割)
(12)Mo-Net(Joseph-Rivlin et al)(2018)
(13)SRN(Duan et al)(2019)
(14)JustLookUp(Lin et al)(2019)
(15)PointASNL(Yan et al)(2020)
(16)PointRCNN(Shi et al)(2019)

作者提出了一種三維物體檢測器pointRCNN,可以直接從原始的點云中檢測三維物體,(該網路為two-stage網路),stage-1直接從點云中生成多個粗略的3Dbox,stage-2,優化一階段的3Dbox并對每個box中的物體進行class分類,
stage-1:
先通過pointnet++對每個點的特征進行提取,然后通過點的特征,將所有的點分為前景點和背景點,并將背景點洗掉,同時在前景點上,對每個點都生成一個box,然后通過部分優化,留下,部分得分最高的box,
stage-2:
將stage-1中生成的部分精準的box進行標準化坐標變換,然后再通過區域的pointnet,進行區域特征的學習,得到區域的特征向量,再和全域的特征向量進行拼接,然后優化每個點的特征,然后重新生成一個最優的3D-box,同時完成class任務,

  1. 基于圖卷積網路的方法
    (1)SPG(Landrieu and Simonovski)(2017)(可分割)
    (2)SSP(Landrieu and Bussaha)(2019)(可分割)
    (3)DGCNN(Wang et al)(2018)(可分割)

本文貢獻:(1)EdgeConv在保證置換不變性的同事捕獲區域幾何資訊,
(2)DGCNN可以在動態更新圖的同事,在語意上將點聚合起來,
(3)EdgeConv可以遷入多個已有的多個點云處理框架中,
本文提出了一個新的神經網路模塊——EdgeConv.
EdgeConv的優點:(1)包含了區域鄰域的資訊,
(2)可以通過EdgeConv模塊的回圈使用,提取全域的形狀特征,
(3)在多層系統中,特征空間中的相對關系包含了語意特征,
EdgeConv的不足:EdgeConv考慮了點的坐標與領域點的距離,但是忽略了相鄰點之間的向量方向,最侄訓是損失了一部分的區域幾何資訊,
EdgeConv
首先提取中心點與臨近店之間的邊特征,再進行卷積操作,
具體步驟:
(1)先利用MLP對每個點提取一遍特征
(2)再利用多種方式將點和周圍點的特征進行融合,本文提出了四種融合方式,此處介紹一種,我個人認為最合理的一種方式:將中心點的特征,與中心點與K個臨近點之間的特征差進行串聯,然后輸入MLP中,這樣便融合了點之間的區域關系和點的全域特征,
作者認為PointNet++不足的原因: pointnet++在處理區域區域的點的時候未來保證置換不變性而導致過于獨立,這樣會忽視了點之間的集合相關資訊,導致一部分的資訊丟失,

(4)PyramNet(Kang and Liu.)(2019)(可分割)
(5)GACNet(Wang et al)(2019)(可分割)
(6)SPH3D-GCN(Lei et al)(2019)(可分割)
(7)HEPIN(Jiang et al )(2019)(可分割)
(8)DPAM(Liu et al.)(2019)(可分割)
(9)ECC(Simonovsky et al)(2017)
(10)KCNet(Shen et al.)(2017)
(11)FoldingNet(Yang et al.)(2017)
(12)AGCN(Li et al.)(2018)
(13)LocalSpecGCN(Wang et al )(2018)
(14)RGCNN(Te et al .)(2018)
(15)3DTI-Net(Pan et al )(2018)
(16)ClusterNet(Chen et al.)(2019)
(17)DPAM(Liu et al.)(2019)
(18)Grid-GCN(Xu et al.)(2020)
(19)DeepGCNs(2019)(可分割)

本文作者認為CNN(完美的應用歐氏距離的資料中)成功的原因在于:CNN可以設計并使用深層的網路結構,,但現在GCN(用來處理拓撲結構的資料)現階段只能處理2-3層的資料,(由于深層的GCN的Aggregate容易造成over
smooth問題,即節點間的feature難以區分),本文來探究能否也生成一個深層的GCN網路模型,

本文解決深度GCN出現的問題的方法,使用residual/dense connections 和DGCNN中的 edge conv
三種方法方法一同來克服了深度GCN中出現的問題,

  1. 基于點的卷積的方法
    (1)PointCNN(Li et al)(2018)(可分割)(被引400+)

本文的主要貢獻是:引入了一個新的運算方法X-Conv
本作者想要解決對無序的點云的卷積問題,作者的解決核心思路是:將無序的點云進行有序化變換,然后使用卷積的方法,進行特征提取,
作者的解決方案:使用空間變換網路(STN)從前一層的資料中提取K個點,預測一個K*K大小的轉置矩陣(X-transformation),用轉置矩陣對前一層的特征做變換,然后對變換后的特征用卷積,此外,同樣也在提取出k個近鄰后,將各個點轉換到區域坐標系,
PointCNN的優點:引數少,訓練時間短,比較優美

但pointconv作者認為該篇文章沒有實作置換不變性

X-Conv的具體程序看見周報筆記,

(2)MCCN(Hermosilla et al)(2018)(可分割)
(3)PointConv(Wu et al)(2018)(可分割)(被引150+)

作者的寫作出發點:作者通過對一維卷積和二維卷積的理解中,認為卷積主要由兩部分組成,(1)將目標點和周圍點都考慮進來,(K近鄰)(2)不同位置的點的輸入權重是不一樣的,所以本文是要解決如何得到一個關于不同K近鄰點的權重系數問題,(求解權重函式)
本文貢獻:
(1) 提出了一種新的三維卷積運算,pointconv,一種考慮密度的不斷跟新權重的網路,該網路最重要的創新是:可以有效地計算權重函式,
(2) 該網路能夠完全近似任何一組3D點上的3D連續卷積,
(3) 本文還提出了相應的反卷積操作PointDeconv,將特征傳播回原始解析度,像二維空間中一樣,使用全卷積網路能夠更精確的完成分割任務,
網路架構:
在這里插入圖片描述
(a) 是將全域坐標系下的全部點的坐標,轉換為以P為中心點后,轉化為區域坐標的程序,
(b) 中的上部分,是將(a)中轉化后的K近鄰點的區域坐標當做輸入,然后通過區域的多層感知器進行權重的訓練;下部分是將點的密度考慮進來,主要是處理點云采樣不均的問題.
注:(1)Pointconv中的MLP的權重在所有點之間是共享的,來保證排列不變性,
(2)作者為了證明pointconv是真正的卷積運算,作者還將2D影像中的所有像素轉換為具有2D坐標以及RGB值的點云格式,其分類結構可以和正常的影像的CNN媲美,
所以作者認為本篇文章既可以是三維場景中的CNN方法,

(4)ConvPoint(Boulch et al.)(2019)(可分割)
(5)A-CNN(Komarichev et al)(2019)(可分割)
(6)KPConv(Thomas et al)(2019)(可分割)
(7)InterpCNN(Mao et al)(2019)(可分割)
(8)DPC(Engelmann et al.)(2019)(可分割)
(9)SphericalCNN(Spherical)(2017)
(10)Point wise CNN(Hua et al)(2017)
(11)Tensor field Network(Thomas et al)(2018)
(12)Flex-Convolution(Groh et al.)(2018)
(13)PCNN(Matan et al.)(2018)
(14)SpiderCNN(Xu et al)(2018)
(15)MCCNN(Hermosilla et al)(2018)
(16)Geo-CNN(Lan et al)(2018)
(17)Ψ-CNN(Lei et al)(2019)
(18)LP-3DCNN(Kumawat et al.)(2019)
(19)RS-CNN(Liu et al.)(2019)
(20)KPConv(Thomas . Charles R. QI et al )(facebook ai )(2019)(被引150+)

(21)SFCNN(Rao et al.)(2019)
(22)DensePoint(Liu et al)(2019)
(23)ConvPoint(Boulch et al.)(2020)

  • (24) Associatively Segmenting Instances and Semantics in Point
    Clouds.(Wang et al.)(2019)(可分割)(被引50+)
    (26)4D Spatio-Temporal ConvNets: Minkowski Convolutional Neural Networks(choy et al )(2019)(被引50+)
    (27)Deep Hough Voting for 3D Object Detection in Point Clouds(Qi,et al. )(2019)(被參考100+)
    (28) Complexer-YOLO: Real-Time 3D Object Detection and Tracking on Semantic Point Clouds(semon et al)(2019)(被引32)
  1. 基于RNN的方法

回圈神經網路的本質是:像人一樣擁有記憶的能力,使得機器能夠聯系背景關系的陳述句,理解當 前單詞或者預陳述句的意思 現階段的RNN的各種變形還可以學習二維視頻資訊和三維視頻的資訊,
RNN與CNN的本質區別:CNN沒有記憶功能,它的輸出僅依賴于輸入和網路的權重值,但 RNN有記憶功能,他的輸出不僅依賴于當前的輸入,還依賴當前的記憶,
CNN的輸入是單一的圖片等單一性質的資料,而RNN的輸入是一個序列,一個隨時間變化的序列

(1)G+RCU(Engelam et al)(2018)(可分割)
(2)RSNet(Huang et al)(2018)(可分割)
(3)3P-RNN(Ye et al )(2018)(可分割)

本文的3P(Pointwise Pyramid Pooling)
也是先通過MLP來提取點云的特征,然后設定一個金字塔模型,對不同大小的區域的點云分別提取區域資訊(大區域,小區域,等)和全域資訊,然后獲得每個點的全部資訊,(此時每個點的特征為特征向量,)
再將特征向量放入雙向的RNN中,進行學習,然后通過全連接層來完成分割任務

(4)DARNet(Zhao et al )(2019)(可分割)
(5)PointRNN(Fan et al)(2018)

一個用來處理動態點云的深度學習網路,主要貢獻:本提出了PointRNN和其兩個變體,PointGRU、PointLSTM 都可以應用于移動點云的預測(結合給定點的歷史運動軌跡來預測點云的未來軌跡)動態點云學習
注:傳統的RNN是以一維向量作為輸入的,RNN的一些變體如Cubic
ConvLSTM可以用來對二維視頻進行深度學習,本文PointRNN是進一步的變體,可以對三維點云視頻(動態三維點云)進行深度學習

  1. 基于晶格的方法(Lattice)
    (1)LatticeNet(Rosu et al.)(2019)(可分割)

該網路可以在 (2)中晶格的基礎上可以實作大點云的有效處理

(2)SPLATNet(Su et al.)(2018)

本篇文章方法小眾,且文章難度
且同時pointNet、pointcnn處理起來復雜了一些,但相比于基于樹的點云處理網路相比,(樹的網路如OCNN都是講點云進行高效的組織化,然后再套用成熟的神經網路進行處理,一般不是end-to-end網路)但是本篇文章的方法把對點云的組織者一步驟放到了每一次卷積操作中,實作了end-to-end,
注;本文應用的bilateral convolution lays(BCLs)和permutohedra lattice 并非作者首創,
文章中BCL平滑地將輸入點映射到稀疏的格子上,在稀疏的點陣上執行卷積,然后將過濾后的信號平滑地插入到原始的輸入點上,主要分為: Splat、Convolve、Slice:
1.Splat: BCL首先將輸入特征結合到晶格
2.Convolve: BCL在這些點陣上進行卷積操作,(就像標準CNN一樣)
3.Slice:經過卷積后的信號插值(barycentric interpolation)投影回輸入信號,
注:該網路可以靈活地聯合處理處理多視圖影像和點云,
在這里插入圖片描述

  1. 有待閱讀后進行進一步分類
    (1)ShapeContexNet(Xie et al.)(2018)
    (2)PVNet(You et al.)(2018)
    (3)Point2Sequence(Liu et al )(2018)
    (4)PVRNet(You et al )(2018)
    (5)3DPointCapsNet(Zhao et al)(2018)
    (6)RCNet(Wu et al.)
    (7)PointDAN(Qin et al)(2019)

(8)3D FCN(Li et al.)(2017)
(9)Vote3Deep(Li et al.)(2017)
(10)VoxelNet(Zhou et al.)(2018)
(11)SECOND(Yan et al.)(2018)
(12)3DBN(Li et al)(2019)
(13)3DSSD(Yang et al.)(2020)

single shot methods

(14)LaserNet(Meyer et al)(2019)

(15)3D iou loss(Zhou et al)(2019)
(16)Part-A^2(Shi et al.)(2019)
(17)Fast Point RCNN(Chen et al.)(2019)
(18)VoteNet(QI et al.)(2019)

(19)LaserNet++(Mayer et al .)(2019)

(20)PV-RCNN(Shi et al )(2019)

(21)OHS(Chen et al.)(2019)

(22)ImVoteNet(Qi et al.)(2020)

(23)SA-SSD(He et al.)(2020)

1.2基于體素的方法

SECOND,PointPillar,Part-A^2

1.3基于mesh的方法

二、多模態融合的方法

(1)3DMV(Dai and NieBner)(2018)
(2)UPB(Chiang et al.)(2018)
(3)MVPNet(Jaritz et al.)(2019)

Frustum-based Mthods

(1)F-PointNets(QI et al )(2018)
(2)PointFusion(XU et al.)(2018)
(3)RoarNet(Shin et al.)(2018)
(4)SIFRNet(Zhao et al.)(2019)
(5)F-ConvNet(Wang et al.)(2019)
(6)Patch Refinement(Zhao et al )(2019)

2.1緊耦合

  1. voxel-based
    (1)CD-CVF( Yoo et al 韓國)(2020)

將雷達的點云體素化后 ,通卷積層進行預處理,生成在BEV下的特征地圖,然后對多視角(構成閉合環形)的image進行FPN(CNN的一種網路)進行預處理,生成特征地圖,然后用auto-calibrated
feature projection將多幅圖進行融合,生成BEV下的feature,再利用adaptive gated fusion
network來融合雷達和image預處理后的BEV圖,再進行正常的RPN,

  1. point-based
    (1) PI-RCNN(Xie et al)(2019)

point分支和image分支分別做3D目標檢測任務和語意分割任務,然后對每個點搜尋K臨近點,對這些點結合相機的內外參反向投入二維的語意地圖中,得出這幾個點對應二維中的像素的語意特征,然后將這幾個點的幾何特征和語意特征進行聯合積分,得到聯合特征;最后將幾何特征,語意特征,聯合特征進行拼接,更新該點的特征,從而完成二次優化的任務,實作點云資料和RGB資料的融合,

(2)PointPainting(cvpr2020)

該作業的fusion方式是采用二維語意分割資訊通過lidar資訊和image資訊的變換矩陣融合到點上,再采用baseline物體檢測;可以理解為對于語意分割出的物體多了一些資訊作為引導,得到更好的檢測精度,和上面的pi-rcnn的不同之處是該融合是一個串聯的網路結構,將語意分割后的特征和原始點云一起送入深度學習網路中.

2.2松耦合

(1)CLOCs

該網路經歷了三個主要的階段(1)2D和3D的目標檢測器分別提出proposals(2)將兩種模態的proposals編碼成稀疏張量(3)對于非空的元素采用二維卷積做對應的特征融合,

總結

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/152219.html

標籤:python

上一篇:機器學習筆記(3)

下一篇:字串知識

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more