主頁 > 軟體設計 > 全球首個面向遙感任務設計的億級視覺Transformer大模型

全球首個面向遙感任務設計的億級視覺Transformer大模型

2023-02-02 08:21:47 軟體設計

作者:京東探索研究院

深度學習在很大程度上影響了遙感影像分析領域的研究,然而,大多數現有的遙感深度模型都是用ImageNet預訓練權重初始化的,其中自然影像不可避免地與航拍影像相比存在較大的域差距,這可能會限制下游遙感場景任務上的微調性能,

為此,京東探索研究院聯合武漢大學、悉尼大學借助迄今為止最大的遙感場景標注資料集MillionAID,從頭開始訓練包括卷積神經網路(CNN)和已經在自然影像計算機視覺任務中表現出了良好性能的視覺Transformer(Vision Transformer)網路,首次獲得了一系列基于監督學習的遙感預訓練基礎骨干模型,并進一步研究了ImageNet預訓練(IMP)和遙感預訓練(RSP)對包括語意分割、目標檢測在內的一系列下游任務的影響,

實驗結果證實了探索研究院先前提出的先進Vision Transformer系列模型ViTAE在遙感任務上的優越性,并發現RSP在遙感任務上的有效性以及感知相關語意方面具有的獨特性,實驗結果進一步表明RSP會受到上下游任務差異的影響,這些發現對遙感大規模資料集和預訓練方法提出了新的要求,

image.png

01

研究背景

近年來,深度學習憑借自動提取反映物體固有屬性的深度特征的優勢,在計算機視覺領域取得了令人印象深刻的突破,遙感領域也不例外,在遙感領域,最常用的是深度模型是卷積神經網路(CNN), 目前,幾乎所有的遙感深度模型都是在計算機視覺領域最著名的影像資料集 ImageNet-1K 資料集上進行預訓練,該資料集中來自 1,000 個不同類別的百萬張真實世界影像使模型能夠學習強大的表示,然后這些預訓練后的模型被可以用做遙感任務的骨干網路進行進一步微調,

盡管這些模型在遙感任務中取得了顯著的效果,但仍有一些問題需要研究,直觀地說,與自然影像相比,遙感影像在視角、顏色、紋理、布局、物件等方面明顯存在較大的域差距,以前的方法試圖通過進一步微調遙感影像資料集上的預訓練模型來縮小這一差距,然而,ImageNet預訓練(IMP)引入的系統偏差對性能有著不可忽視的副作用,另一方面,我們注意到,隨著遙感技術的進步,各種各樣的傳感器捕捉到了豐富的遙感影像,可以用于預訓練,作為一個代表性的例子,MillionAID 是迄今為止最大的遙感影像資料集,它是從包含多種傳感器影像的谷歌地球(GE)上收集的,并且具有類似ImageNet-1K的百萬級影像數量規模,這使遙感預訓練(RSP)成為可能,

RSP能夠從頭開始訓練深度模型,這意味著候選模型不必局限于現成的CNN,因此,在本文中,我們也研究了視覺Transformer(Vision Transformer)的骨干網路,它們在計算機視覺領域表現出了令人驚訝的性能,與CNN中擅長區域建模的卷積相比,Vision Transformer中的多頭自注意(MHSA)能夠靈活地捕捉不同的全域背景關系,最近,探索研究院提出的ViTAE模型探索了卷積和MHSA的平行結構,以同時建模區域性和長程依賴性,在ImageNet分類任務和下游視覺任務上取得了很好的結果,此外,它還通過擴張卷積模塊和層級設計提取多尺度特征,這對于計算機視覺下游任務,尤其是在遙感影像理解任務,都具有重要的價值,因此我們研究了CNN和層級Vision Transformer網路經過RSP后,在場景識別、語意分割、目標檢測和變化檢測等遙感任務上的微調性能,為了實作這些目標,我們在九個流行的資料集上進行了廣泛的實驗,并得出了一些有益的結論,RSP是遙感影像理解中的一個新興研究方向,但仍處于探索階段,尤其是基于Vision Transformer這種新型網路架構的預訓練方法,我們希望這項研究能夠填補這一空白,并為未來的研究提供有用的見解,

02

MillionAID, ViTAE 和ViTAEv2的介紹

1.MillionAID

MillionAID 是迄今為止遙感領域最大的資料集,它包含 100,0848 個不重疊的場景,有51類,每類大約有2,000-45,000影像,該資料集來自谷歌地球,由包括但不限于 SPOT、IKONOS、WorldView 和 Landsat 系列的多種傳感器組成,因而影像解析度不同,最大解析度可達0.5m,最小的則有153m,影像大小范圍從 110110 到 31,67231,672,該資料集均為RGB影像,非常適合訓練典型的視覺神經網路模型,

2.ViTAE 和ViTAEv2

image.png

ViTAE是探索研究院最近提出的先進Vision Transformer模型,它采用深窄式設計,在網路開始時迅速降采樣,然后將網路加深,在提高性能的同時降低模型大小和計算成本,ViTAE 模型首先通過三個Reduction Cell將輸入影像下采樣到1/16解析度,與 ViT 類似,在添加位置編碼之前,將class token與第三個Reduction Cell的輸出連接,然后堆疊多個Normal Cell,并始終保持特征圖解析度,最后一個Normal Cell的class token輸入到線性層進行分類,ViTAE 模型在 ImageNet 資料集上分類性能表現出色,但它不方便像CNN那樣產生層次化的中間特征,從而遷移到分割、檢測和姿態估計等其它下游任務(目前有一些新技術來解決這個問題,例如ViTDet,并已取得較好成果,請關注我們的復現Repo:https://github.com/ViTAE-Transformer/ViTDet),

在此基礎上,探索研究院提出了 ViTAEv2,它采用了 ResNet 和 Swin 等流行骨干網路的層次化設計,在 ViTAEv2 中,網路被分成四個階段,每個階段首先采用Reduction Cell進行下采樣,然后堆疊多個 Normal Cell進行特征變換,在最后一個階段的Normal Cell后使用全域平均池化層來替換class token,當對下游任務進行微調時,該池化層被移除,剩下的網路與相應任務的解碼器相連,圖 2 顯示了原始 ViTAE 和 ViTAEv2的網路架構,

image.png

Reduction Cell和Normal Cell是 ViTAE 中最重要的兩個模塊,它們是基于典型的Transformer模塊來構建的,Reduction Cell用于下采樣并提供多尺度背景關系,具體來說,在輸入歸一化層和 MHSA 層之前,這些特征會通過一個金字塔縮減模塊(PRM),該模塊包含具有不同擴張率的多個并行的擴張卷積,其中步幅大小控制了空間降采樣率,在 PRM 后,來自平行分支的特征在通道維連接,PRM 將 CNN 的尺度不變性引入 ViTAE,而區域性建模則是通過將輸入到PRM 的特征同時送入到并行卷積模塊 (PCM) 中來完成,PCM 位于與包含 PRM 和 MHSA 的全域依賴路徑平行的附加分支中,它由三個連續的卷積層組成,通過調整步幅,PCM 的下采樣率與 PRM 相同,來自MHSA、PCM 和原始殘差分支的三個特征在輸入前饋網路(FFN)之前進行加法融合,需要注意的是,Normal Cell和Reduction Cell具有類似結構,但是不包括 PRM模塊,

受 Swin Transformer的啟發,ViTAEv2中上述cell中的一些 MHSA 被替換為視窗MHSA(WMHSA)以降低計算成本,考慮到后期特征尺寸變小,不需要用視窗劃分特征,因此,只有前兩個階段的 MHSA 被 WMHSA 替代,需要說明的是,ViTAEv2采用的 WMHSA 不需要像Swin Transformer那樣進行回圈偏移,因為 WMHSA 是在 PRM 的合并多尺度特征上進行的,其中不同區域之間已經通過擴張卷積的重疊感受野實作了資訊交換,此外,因為卷積已經能夠編碼位置資訊,ViTAEv2也不需要再使用相對位置編碼,ViTAE 和 ViTAEv2 中不同cell的詳細結構和比較如圖3所示,

在本次研究中,我們主要評估原始 ViTAE 的“Small”版本,名為 ViTAE-S,相應的,我們還采用了 ViTAEv2-S 模型,因為它具有出色的表征能力和對下游任務更好的可遷移性,

03

遙感預訓練的實施

1. 確定預訓練模型

我們首先確定用于RSP的深度模型的型別,為此,我們從MillionAID官方訓練集中構建了一個迷你訓練集和迷你評估集,分別有9775和225張影像,注:后一組是通過從每個類別中隨機選擇5張影像來平衡類別,對于CNN,使用了經典的ResNet-50 ,由于本研究主要探討RSP下的CNN和Vision Transformer模型的性能,因此我們還評估了一系列典型的基于Vision Transformer的網路,包括DeiT-S 、PVT-S 和Swin-T,選擇特定版本模型的一個考量是為了確保這些模型和ResNet-50以及ViTAE-S模型具有相似的引數量,此外,考慮到ViT是視覺Transformer的最基本模型,我們選擇了其最小版本ViT-B 模型以供參考,

image.png

image.png

表II展示了各個模型的結果,可以看出,盡管ViT-B的引數最多,但其性能不如經典的ResNet-50,DeiT-S表現最差,因為我們沒有采用教師模型輔助訓練,由于我們的任務是利用遙感影像進行預訓練,因此獲取相應的教師模型可以認為是我們的目標而不是前提,通過引入特征金字塔的設計范式,PVT-S與ViT-B相比提高了準確性,在此基礎上,原始ViTAE-S模型進一步考慮了區域性和尺度不變性這些傳統CNN具有的歸納偏置,

然而,由于早期下采樣模塊(Reduction Cell, RC)中的特征解析度較大,需要更多的計算,因此需要花費較多的訓練時間,Swin-T通過在固定視窗中限制MHSA來解決這個問題,并采用視窗偏移來隱式促進視窗之間的通信,ViTAEv2引入了這種視窗多頭自注意力(Window MHSA, WMHSA),并因為卷積旁路已經能夠促進跨窗資訊互動,從而省去了視窗偏移和相對位置編碼操作,最終,ViTAEv2-S實作了最佳性能,并以2.3%的top-1準確率超過了第二名,

基于上述結果,我們選擇候選模型的具體程式如下,首先,我們選擇ResNet-50作為常規CNN中的代表網路,經過遙感預訓練的ResNet-50,可以在一系列遙感資料集上提供一組新的CNN參考基線,由于準確率低、引數多,我們沒有選擇DeiT-S和ViT-B模型作為候選模型,此外,由于堆疊Transformer的設計,它們很難遷移到下游任務中,(目前有一些新技術來解決這個問題,例如ViTDet,并已取得較好成果,請關注我們的復現Repo:https://github.com/ViTAE-Transformer/ViTDet),

Swin Transformer也具有PVT的特征金字塔結構,并采用WMHSA取代全域MHSA,節省了顯存和計算量,由于Swin-T的top-1精度大于PVT且需要的訓練時間較少,因此我們在后續實驗中也選擇了Swin-T作為候選模型,對于ViTAE模型,我們選擇性能最強的模型,即ViTAEv2-S,以期望在后續任務(如遙感場景識別)中具有良好的性能,

2. 獲得合適的權重

在確定上述候選模型后,我們對它們進行 RSP 以獲得預訓練的權重,具體來說,為了保持類別平衡,我們在 MillionAID 資料集的每個類別中隨機選擇 1,000 張影像,形成包含 51,000 張影像的驗證集,與包含 50,000 張影像的 ImageNet 驗證集的規模相當,并把剩下的 949,848 張影像用于訓練,

image.png

為了獲得合適的預訓練權重,我們在不同訓練代數(epoch)的配置下分別訓練 ViTAEv2-S 模型,結果如表III所示,可以觀察到模型在大約 40 個 epoch 后開始性能飽和,因為與訓練 20 個 epoch 相比,top-1 準確率僅提高了 0.64%,而接下來的 20 個 epoch 只帶來了 0.23% 的增益,因此,我們首先選擇訓練了 40 個 epoch 的網路權重作為 ViTAEv2-S 的 RSP 引數,并應用于后續任務,直覺上,在大規模預訓練資料集上表現良好的模型在下游任務上也會表現良好,因此,我們還在下游任務中使用了經過 100 個 epoch 訓練的網路權重,這些模型分別用后綴“E40”和“E100”表示,

對于 ResNet-50 和 Swin-T,我們遵循Swin 的訓練設定,即模型訓練了 300 個 epoch,在實驗中,我們觀察到 Swin-T-E120 在驗證集上的 top-1 準確率大致相當于 ViTAEv2-S-E40,因此,我們也選擇了 Swin-T-E120 的訓練權重,同樣,我們也選擇了最終的網路權重 Swin-T-E300 作為與 ViTAEv2-S-E100 的比較,為了使實驗公平,還考慮了使用 40 個 epoch 訓練的 ResNet-50 和 Swin-T 的權重,因為它們與 ViTAEv2-S-E40 經過了同樣的訓練代數,

image.png

最終的預訓練模型列在表IV中,可以看出,驗證集準確率幾乎隨著訓練 epoch 的增加而增加,但是,Swin-T-E300 的性能略低于 Swin-T-E120,盡管如此,我們仍然保留了Swin-T-E300 模型,因為模型在訓練階段見到更多的樣本之后,它可能具有更強的泛化能力,

04

下游任務上的微調實驗

1. 場景識別
 
image.png

定量實驗: 表 V 展示了使用不同方法預訓練的上述候選模型和其他 SOTA 方法的結果,最后三組中的粗體字表示每組中最好的結果,而“*”表示所有模型中最好的(在其他任務中含義相同),與 ImageNet 預訓練的 ResNet-50 相比,我們的遙感預訓練 ResNet-50 在所有設定下均提高了準確性,這些結果意味著 RSP 為后續微調程序的優化帶來了更好的起點,同樣,RSP-Swin-T 在三個設定上的表現優于 IMP-Swin-T,在其他兩個設定上也取得了可比較的結果,此外,與其他復雜方法相比,ResNet-50 和 Swin-T 僅使用 RSP 權重而不改變網路結構的情況下就取得了有競爭力的結果,從而證明了遙感預訓練的價值,

此外,在比較 ImageNet 預訓練的 ResNet-50 和 Swin-T 時,我們可以發現 IMP-Swin-T 在所有設定上的表現都更好,因為Vision Transformer具有更強的背景關系建模能力,不過在通過 RSP 權重進行初始化后,ResNet 變得更具競爭力,由于 ViTAEv2-S同時具有區域建模能力和遠程依賴建模能力,無論 IMP 和 RSP,它在幾乎所有設定上都優于 ResNet-50 和 Swin-T,此外,RSP-ViTAEv2-S 在除 AID (5:5) 之外的幾乎所有設定上都實作了最佳性能,

image.png

定性實驗:圖4 顯示了不同評估模型來自各種場景的影像的不同區域的回應,與 IMP-ResNet-50 相比,RSP-ResNet-50 更關注重要目標,這意味著 RSP 有助于 ResNet-50 學習更好的表示,歸功于 MillionAID 資料集中提供的大量語意相似的遙感影像,令人驚訝的是,IMP-Swin-T 模型主要關注背景區域,但經過 RSP 之后,其前景回應得到了顯著增強,ViTAEv2-S通過結合CNN和視覺轉換器的優勢,同時具備區域和全域背景關系捕捉能力,實作了對整個場景的全面感知,RSP-ViTAEv2-S 不僅關注主要物件,還考慮了背景中的相關區域,在前景物體上,RSP-ViTAEv2-S 也能給予更高的關注度,在物件分布復雜的場景,RSP-ViTAEv2-S能夠形成統一且完整的地物表征,有效感知場景的整體資訊,

2. 語意分割

image.png

定量實驗: 表VII 展示了采用UperNet 框架時,我們的方法和其他 SOTA 方法在iSAID資料集上的分割結果,可以看出,將骨干網路從 ResNet-50 更改為 Swin-T,再更改為 ViTAEv2-S 時,性能有所提高,結果與上述場景識別結果一致,表明視覺Transformer具有更好的表示能力,另一方面,經過ImageNet預訓練的IMP-Swin-T 取得了具有競爭力的結果,而IMP-ViTAEv2-S 在 iSAID 資料集上取得了最佳性能,表VII 還顯示了 RSP 模型的優勢在于感知一些具有明確遙感語意的類別,例如“橋梁”,這符合之前場景識別任務中的發現,

image.png

定性實驗: 圖 6 中展示了在 Potsdam 資料集上采用不同預訓練骨干網路的UperNet 分割模型的一些視覺分割結果,對于長條形地物,其長度較長,要求模型能夠捕獲長程背景關系,而寬度又較窄,對模型的區域感知能力又提出了要求,而ViTAEv2網路因為將CNN的區域性和尺度不變性引入到Vision Transfomer網路中,同時具有了CNN和Transformer的優勢,因而能夠同時實作全域和區域感知,因此,只有ViTAEv2-S成功連接了長條狀低矮植被(如紅框所示),

3. 目標檢測

image.png

定量實驗: 表VIII 顯示了 目標檢測實驗的結果,在具有挑戰性的 DOTA 資料集上,可以看出使用先進的 ORCN 檢測框架,采用ResNet-50 或 Swin-T 骨干網路的模型表現良好,ViTAEv2-S 通過引入了 CNN 的區域性和尺度不變性等歸納偏差,獲得了驚人的性能,將 ORCN 基線提高了近 2% mAP,需要注意的另一點是,RSP在這三個骨干網路上的性能都優于IMP,RSP-ViTAEv2-S 的總體mAP比IMP-ViTAEv2-S 高,因為 RSP 在“橋梁”以及包括“直升機”和“飛機”在內的飛行器類別上具有顯著優勢,而在其他類別上,這兩種模型之間的差距并不很大,

image.png

定性實驗: 圖7 可視化了 DOTA 測驗集上使用 ViTAEv2-S 骨干網路的 ORCN 模型的一些檢測結果,紅框表示,當物件密集分布時,RSP-ViTAEv2-S 仍然可以預測正確的物件類別,而 IMP-ViTAEv2-S 被密集背景關系混淆并做出錯誤預測,對于長條形的“橋梁”類別,IMP-ViTAEv2-S 產生了漏檢(見黃色框),而 RSP-ViTAEv2-S 模型以更高的置信度分數成功檢測到該物體,這再一次呼應了先前的發現,

4. 變化檢測

image.png

定量實驗: 表X 中展示了采用不同預訓練骨干網路的BIT 框架在變化檢測任務上的定量實驗結果,可以看到,自監督的 SeCo 預訓練權重在此任務上表現良好,雖然SeCo 的目標是經過對比學習以實作季節不變性特征學習,但由于其采用了多頭子空間嵌入的方式對變化特征進行編碼,所以其仍然能在具體的分支上學習到對季節變化敏感的特征表示,盡管如此,通過 IMP 或 RSP 預訓練的 ViTAEv2-S 的性能優于 SeCo-ResNet-50,顯示了使用先進骨干網路的好處,與其他方法相比,ViTAEv2-S取得了最佳性能,顯示了將先進的Vision Transformer模型應用于遙感領域的潛力,

通過不同模型在不同任務下RSP和IMP下的性能對比,我們可以推斷出變化檢測所需表示的粒度應該介于分割和檢測之間,因為它雖然是一個分割任務,但是只有兩個類別,不需要去識別特定的語意類別,

定性實驗: 圖8展示了一些視覺變化檢測結果,可以看出,IMP 的 ResNet-50 和 Swin-T 并不能很好地檢測到自然場景中田野內道路的變化,采用 RSP 可以部分緩解這個問題,SeCo-ResNet-50 進一步提高了道路區域的檢測,這與表X 中的結果一致,與上述模型相比,ViTAEv2-S 模型有效地捕捉到了道路細節,在人工變化的場景中,ViTAEv2-S 模型解決了所有其他模型結果中存在的物件粘連問題,這表明 ViTAEv2-S 的特征在區分物體和背景方面更具判別力,

5. 不同遙感預訓練骨干網路的綜合比較

image.png

最后,我們全面比較了 RSP 在所有任務上的不同骨干網路的性能,具體來說,我們對每個任務的所有資料集的分數進行平均計算,結果如表XI,可以發現,預訓練更多 epoch 的骨干通常在下游任務上表現更好,因為它們獲得了更強的表示,盡管也有例外,例如預訓練300代的 Swin-T 模型在物件檢測任務表現不如預訓練120代的對應模型,這暗示任務差異也很重要,結合了 CNN 和Vision Transformer優勢的ViTAEv2-S模型在所有任務上都表現出了最好的性能,

05

結論

在這項研究中,我們在最大的遙感資料集 MillionAID 上研究了基于 CNN 和Vision Transformer的遙感預訓練問題,并綜合評估了它們在場景識別、語意分割、物件檢測和變化檢測四個下游任務上的表現,并將它們與 ImageNet 預訓練和其他 SOTA 方法進行比較,通過綜合分析實驗結果,我們得出以下結論:

(1) 與傳統的 CNN 模型相比,視覺Transformer在一系列遙感任務上表現出色,特別是 ViTAEv2-S這種將 CNN 的固有歸納偏置引入到Vision Transformer的先進模型,在這些任務的幾乎所有設定中都實作了最佳性能,

(2) 經典 IMP 使深度模型能夠學習更通用的表示,因此,IMP 在處理遙感影像資料時,仍可以產生具有競爭力的基線結果,RSP 產生了可與 IMP相當或者更好的結果,并且由于減輕了上游預訓練任務和下游任務之間的資料差異,因此在某些特定類別(例如“橋梁”和“飛機”)上表現更為出色,

(3) 任務之間的差異對 RSP 的性能也有影響,如果特定下游任務所需的表示更接近上游預訓練任務(例如場景識別),則 RSP 通常會帶來更好的性能,

我們希望這項研究可以為遙感社區提供有關使用先進Vision Transformer和遙感預訓練的有用見解,為了方便大家使用,所有遙感預訓練模型及相關代碼均已開源,詳見https://github.com/ViTAE-Transformer/ViTAE-Transformer-Remote-Sensing ,另外,關于采用非層次化Vision Transformer模型應用于下游任務的研究進展,可以關注ViTDet的方法以及我們的復現代碼:https://github.com/ViTAE-Transformer/ViTDet ,我們也會在ViTAE-Transformer-Remote-Sensing的官方repo中不斷更新相應的結果,

論文鏈接:https://arxiv.org/abs/2204.02825

專案地址:https://github.com/ViTAE-Transformer/ViTAE-Transformer-Remote-Sensing

參考文獻

[1] D.Wang, J. Zhang, B.Du, G-S.Xia and and D. Tao, “An Empirical Study of Remote Sensing Pretraining”, arXiv preprint, axXiv: 2204: 02825, 2022.

[2] Y. Long, G.-S. Xia, S. Li, W. Yang, M. Y. Yang, X. X. Zhu, L. Zhang, and D. Li, “On creating benchmark dataset for aerial image interpretation: Reviews, guidances and million-aid,” IEEE JSTARS, vol. 14, pp. 4205–4230, 2021.

[3] Y. Xu, Q. Zhang, J. Zhang, and D. Tao, “Vitae: Vision transformer advanced by exploring intrinsic inductive bias,” NeurIPS, vol. 34, 2021.

[4] Q. Zhang, Y. Xu, J. Zhang, and D. Tao, “Vitaev2: Vision transformer advanced by exploring inductive bias for image recognition and beyond,” arXiv preprint arXiv:2202.10108, 2022.

[5] T. Xiao, Y. Liu, B. Zhou, Y. Jiang, and J. Sun, “Unified perceptual parsing for scene understanding,” in ECCV, 2018, pp. 418–434.

[6] X. Xie, G. Cheng, J. Wang, X. Yao, and J. Han, “Oriented r-cnn for object detection,” in ICCV, October 2021, pp. 3520–3529.

[7] H. Chen, Z. Qi, and Z. Shi, “Remote Sensing Image Change Detection With Transformers,” IEEE TGRS., vol. 60, p.3095166, Jan. 2022.

[8] Y. Li, H. Mao, R. Girshick, K. He. Exploring Plain Vision Transformer Backbones for Object Detection[J]. arXiv preprint arXiv:2203.16527, 2022.

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

標籤:架構設計

上一篇:微服務之間的最佳呼叫方式

下一篇:風控核心子域——名單服務構建及挑戰

標籤雲
其他(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)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more