SpectralGPT: Spectral Foundation Model 論文翻譯1

遙感領域的通用大模型 2023.11.13在CVPR發表

原文地址:[2311.07113] SpectralGPT: Spectral Foundation Model (arxiv.org)

摘要

? 基礎模型最近引起了人們的極大關注,因為它有可能以一種自我監督的方式徹底改變視覺表征學習領域。雖然大多數基礎模型都是為了有效地處理各種視覺任務的RGB圖像而定制的,但在光譜數據方面的研究存在明顯的差距,光譜數據為場景理解提供了有價值的信息,特別是在遙感(RS)應用中。為了填補這一空白,我們首次創建了一個通用的RS基礎模型,名為SpectralGPT,該模型專門用于使用新型3D generative pretrained transformer(GPT)處理光譜RS圖像。與現有基礎模型相比,SpectralGPT

  1. 以漸進式訓練方式適應不同尺寸、分辨率、時間序列和區域的輸入圖像,充分利用廣泛的遙感大數據;
  2. 利用3D token生成空間光譜耦合;
  3. 通過多目標重建捕獲光譜序列模式;
  4. 在100萬張光譜RS圖像上進行訓練,生成超過6億個參數的模型。

我們的評估突出了預訓練的SpectralGPT模型的顯著性能改進,這意味著巨大的潛力

引言

? 光譜成像能夠捕獲大量的光譜信息,從而實現對物體和場景的高度精確的分析和識別,這超出了單獨使用RGB數據的可能性。這使得多/高光譜(MS/HS)遙感(RS)數據成為首選工具和廣泛的地球觀測(EO)應用的關鍵組成部分,包括土地利用/土地覆蓋測繪、生態系統監測、天氣預報、能源開發、生物多樣性保護和地質勘探。遙感衛星任務(如Landsat-8/9、Sentinel-2、高分-1/2/6等)的光譜數據的可用性和可及性迅速擴大,進一步為EO相關領域的新發現和進步提供了機會。然而,這種增長也產生了兩個具有挑戰性的困難,需要迅速注意和有效解決。

  • 從海量光譜數據中提取和挖掘信息的能力有限。現有的以專家為中心和數據驅動的模型已經達到了極限,不足以有效地從如此大量的光譜RS數據中學習視覺表示。為了將光譜遙感大數據的智能處理和分析能力提高到與其體量相匹配的水平,迫切需要創建新一代模型。
  • 在少數標簽和無標簽的情況下對地球觀測(EO)任務有限的預測和解釋能力。與光譜遙感數據的可用性相比,在像素級和圖像級都缺乏相應的標簽。標記數據的缺乏阻礙了深度學習和人工智能模型在實際EO任務中的全面監督應用。需要采取緊急行動,創建包含譜知識的RS基礎模型。

image-20231124123302270

? 在自我監督學習技術以及基于transformer的方法的遷移能力進步的推動下,基于基礎模型的預訓練技術的飛速發展。值得注意的是,這種激增在自然語言處理和計算機視覺領域尤為明顯。Pretraining agent tasks 通常分為對比學習和生成學習。顧名思義,前者旨在教會模型區分相似和不相似的示例,而后者側重于訓練模型生成新數據或從部分觀測中恢復完整數據。它們的區別如圖1所示。對比學習的兩個代表性框架是動量對比(MoCo)[14]和簡單對比學習(SimCLR)[15]。MoCo引入動量更新來改進對比學習過程,而SimCLR利用數據增強來增強用于對比學習的圖像對的多樣性和復雜性。自從MoCo和SimCLR框架最初提出建議以來,已經開發了許多變體。這些變體旨在解決原始框架的特定挑戰或限制,或進一步提高其性能。例如,SimCLR的一些變體加入了新的數據增強類型或改進了訓練目標,而MoCo的一些變體探索了不同的動量更新策略或使用額外的損失來改進對比學習。隨著**視覺變形(vision transformer, ViT)**的興起,基于掩膜圖像建模(mask image modeling, MIM)的生成學習在視覺預訓練任務方面取得了重大進展。來自圖像轉換器(BEiT)的雙向編碼器表示,如[23]所示,是構建在ViT之上的MIM架構的一個突出例子。MIM允許輸入所有圖像patches,這為適應各種網絡體系結構提供了靈活性。然而,與MIM相關的高計算成本在一定程度上限制了它在某些應用中的實際應用。他等人[24]提出了掩碼自編碼器(MAE)作為MIM的一種特殊替代方案。在MAE中,使用未遮擋的補丁或像素來重建那些被遮擋的補丁或像素。這種方法計算效率更高,也增強了預訓練模型的推理能力,從而使其更適用于各種應用。

? 然而,這些先進的模型在RS中的探索相對不足。針對RS任務設計,Wang等人[25]訓練了包含1億參數transformer的模型,開發了一種新的旋轉變大小窗口注意機制,用于對下游任務的模型進行微調。不同于僅依賴少數可見圖像patches來推斷整個圖像的mae方法,Sun等人[26]通過在其RS預訓練模型中實施MIM策略,考慮了所有圖像patches,無論是掩碼的還是未掩碼的。盡管計算成本增加,推理效率降低,但MIM允許靈活地使用各種深度架構作為網絡骨干,如ViT和Swin transformer[27]。這兩項初步研究的成功表明,預訓練模型在紅外光譜中的應用潛力巨大。成像光譜學的快速發展鞏固了光譜遙感在紅外光譜中的重要性。這種突出源于它有效利用豐富的光譜信息的獨特能力。然而,現有的遙感基礎模型由于對多波段數據的建模能力有限,在應用于光譜數據時遇到了挑戰。光譜數據與現有基礎模型之間的具體差距可以總結如下:

  1. (對比現有的RS基礎模型):它們通常難以捕獲三維張量數據中固有的空間光譜表示。這些模型中的大多數主要設計用于處理類似RGB圖像的數據,這限制了它們完全捕獲和表征光譜信息的能力。因此,它們處理此類數據類型的適用性仍然受到限制。
  2. (對比視頻數據基礎模型):計算機視覺中已經有針對視頻數據設計的基礎模型[28],[29],但視頻數據與光譜數據之間存在顯著差異。主要區別在于視頻中連續幀之間的內容變化以及所有幀之間經常存在的冗余。因此,針對視頻數據預先訓練的網絡設計往往不太適合頻譜數據。
  3. (對比光譜數據基礎模型):事實上,最近關于光譜數據基礎模型的研究相對較少。只有一篇會議論文,即SatMAE[30],深入研究了預訓練transformer的利用,例如MAE,用于光譜衛星圖像。SatMAE的核心設計方法包括對相鄰的光譜帶進行分組,類似于RGB波段。然而,這種做法無意中破壞了光譜的連續性,導致三維空間-光譜耦合特征和光譜序列數據的不理想捕獲。此外,有關預訓練樣本數量和有效訓練策略的限制進一步阻礙了這方面的性能提高。

? 為了填補這些空白,我們設計了SpectralGPT,這是一種為光譜數據精心定制的開創性RS基礎模型。SpectralGPT具有開創性的元素,例如3D掩蔽策略,用于從空間-光譜混合令牌中學習視覺表示的編碼器,以及用于保留光譜序列特征的多目標重建解碼器。這些創新顯著增強了SpectralGPT從光譜數據中學習內在知識表示的能力,為各種RS下游應用的場景理解提供了有價值的見解。圖2展示了SpectralGPT預訓練的視覺概述及其在不同下游任務中的通用應用,強調了其深遠的貢獻。

  • 光譜數據定制基礎模型:SpectralGPT是第一個專門為光譜遙感數據設計的基礎模型。SpectralGPT在MAE框架中考慮了光譜數據的獨特特征,即空間光譜耦合和光譜序列性,具有簡單而有效的3D GPT網絡。
  • 大規模訓練數據:SpectralGPT是在來自Sentinel-2衛星的廣泛數據集上進行訓練的,該數據集擁有超過100萬張光譜圖像。這項工作在三個不同的模型迭代(base、Large和huge)的創建中達到高潮,分別包含大約1億個、3億個和6億個參數。
  • 預訓練的靈活性:SpectralGPT采用漸進式訓練策略,使其能夠處理不同大小、分辨率、時間序列和地理區域的輸入圖像。這種創新的設計使模型的編碼器暴露在各種各樣的信息中,最終增強了其有效表示廣泛特征的能力。
  • 先進的3D掩模和重建:SpectralGPT利用3D張量形狀的空間光譜掩模,對光譜RS數據的掩模率至少為90%。此外,它采用開創性的多目標重建策略,全面捕獲局部空間光譜特征和光譜序列信息。這些創新通過推理極大地提高了模型的學習能力。
  • 在下游任務中的卓越性能:SpectralGPT的影響擴展到下游RS模型,在各種任務中,它優于現有的最先進的(SOTA)競爭對手,包括單/多標簽場景分類、語義分割和變化檢測。
  • 新的基準數據集:我們策劃了一個新的基準數據集,名為SegMunich,它專注于德國慕尼黑市內的城市地區及其鄰近社區。該數據集是為了滿足語義分割任務的需求而設計的,有13個類,便于下游分析。

SpectralGPT 介紹

A.簡要回顧MAE

? MAE是一種簡單的自動編碼方法[31],可以重建原始信號。像所有的自編碼器一樣,MAE包括一個編碼器,它將觀察到的信號映射到一個電位表示,以及一個解碼器,從電位表示重建原始信號。然而,與經典的自編碼器相比,MAE采用非對稱設計,使編碼器只能對部分和觀察到的信號(沒有掩碼令牌)進行操作。此外,MAE采用輕量級解碼器從潛在表示和掩碼令牌重構完整信號。具體而言,MAE的實施過程可分為以下幾個步驟:

  1. 給定H × W × C的輸入圖像,采用ViT中的策略將其劃分為規則的、不重疊的patch,大小為p × p × C; 記為 x = { x 1 , x 2 , . . . , x H p × W p } x=\{x_1,x_2,...,x_{\frac{H}{p}\times \frac{W}{p}}\} x={x1?,x2?,...,xpH?×pW??}
  2. 接下來,對這些patch執行掩膜操作,以識別可見(或未掩膜)和掩膜的patch。即 $ x_{vis} = {x_i |i \in vis}$。只有可見的patch被發送到待學習的編碼器中。
  3. 編碼器 f e n f_{en} fen?使用ViT實現,其中每個可見patch首先由共享矩陣 E s E_s Es?線性投影,結合位置嵌入 E p o s E_{pos} Epos?,然后通過一系列transformer塊進行處理。因此,第i個patch的編碼器輸出可以表示為 z i = f e n ( E s x i + E p o s ) z_i= f_{en}(E_sx_i + E_{pos}) zi?=fen?Es?xi?+Epos?
  4. MAE解碼器的輸入,用 g d e g_{de} gde?表示,是一組完整的tokens,包括編碼的可見patch和掩碼tokens(例如, z m z_m zm?)。編碼特征(來自編碼器的潛在表示)和掩碼tokens用作輸入,并與輕量級ViT解碼器的位置嵌入相結合。解碼器的最后一層是一個線性投影(例如,W),它輸出的幾個通道等于一個patch中的像素數。然后對輸出進行重塑以重建圖像為 x ^ = g d e ( W ( [ z v i s , z m ] ) + p o s ) \hat{x} = g_{de}(W([z_{vis},z_m])+pos) x^=gde?(W([zvis?,zm?])+pos),其中 z v i s z_{vis} zvis?是可見補丁的編碼表示。
  5. MAE中使用的損失函數是均方誤差(mean squared error, MSE),對可見和被掩蓋的patch進行計算(類似于BERT[32])

? 值得注意的是,我們進行了歸一化處理,即計算每個patch中像素值的均值和標準差,并對patch進行歸一化處理,即 x n o r m = x i ? u i σ i ∣ i ∈ v i s x_norm = {\frac{x_i-u_i}{\sigma_i}|i\in vis} xn?orm=σi?xi??ui??ivis。在這種情況下,編碼器重建任務更改為重建歸一化像素值。

B. SpectralGPT方法概述

? 我們的SpectralGPT模型由三個關鍵組件組成:用于處理光譜數據的3D掩模用于學習光譜視覺表示的編碼器用于多目標重建的解碼器。使我們的方法與眾不同的是一種漸進的訓練方式,其中模型使用不同類型的光譜數據進行訓練。該策略增強了所提出的SpectralGPT基礎模型,賦予其更大的靈活性、魯棒性和泛化能力。圖2提供了具有各種下游任務的擬議SpectralGPT的說明性工作流程。

image-20231124125343064

C.光譜數據的3D掩膜

? 受基于mae框架的視頻類數據的時空不可知采樣的啟發[29],我們將多波段光譜圖像建模為三維張量數據。為了實現這一點,我們實現了一個3D立方體掩蔽策略,可以有效地處理類張量光譜數據。我們的方法利用90%的掩蔽率以有效的方式捕獲空間和光譜的視覺表示,從而從輸入的光譜數據中提取更準確和多樣化的知識。

? 給定一個H×W×D給定三維立方體光譜圖像,我們沿著空間和光譜維度將其劃分為非重疊的3D張量token。每個token的大小為p × p × k,其中p和k分別是空間維度和光譜維度的token大小。如此,我們可以得到 H p × W p × D k \frac{H}{p}\times\frac{W}{p}\times\frac{D}{k} pH?×pW?×kD?個token,記為記為 x = { x 1 , x 2 , . . . , x H p × W p × D k } x=\{x_1,x_2,...,x_{\frac{H}{p}\times\frac{W}{p}\times\frac{D}{k}}\} x={x1?,x2?,...,xpH?×pW?×kD??},可見圖像和掩膜圖像表示為 x v i s x_{vis} xvis? x m a s k x_{mask} xmask?
[ x v i s , x m a s k ] = M ? x , [x_{vis},x_{mask}] = M \cdot x, [xvis?,xmask?]=M?x,
? 其中 M ∈ 0 , 1 H p × W p × D k M\in {0,1}^{\frac{H}{p}\times\frac{W}{p}\times\frac{D}{k}} M0,1pH?×pW?×kD?是一個標記的二進制掩碼,指示應該屏蔽哪些標記,即標記中的所有像素都設置為零。

D.可見標記的編碼器

? 與MAE中的編碼器類似,所有可見標記$ x_{vis} = {x_i |i \in vis}$ 空間-光譜混合表示首先使用共享線性投影 E s E_s Es?轉換為特征嵌入。通過編碼器 f θ f_θ fθ?學習到的關于變量 θ θ θ的表示表示為 f θ ( E s x i + E p o s ) f_θ(E_sx_i+ E_{pos}) fθ?(Es?xi?+Epos?),其中 E p o s E_{pos} Epos?表示位置編碼。編碼器 f θ f_θ fθ?由多個堆疊自注意(SA) transfromer塊組成。編碼器中使用的SA模塊可以構造如下。

  • 對輸入嵌入 z i z_i zi?使用可訓練矩陣 W Q , W K , W V W_Q ,W_K,W_V WQ?,WK?,WV?,線性變化為query Q i Q_i Qi?、key K i K_i Ki?、value V i V_i Vi?

  • 查詢和關鍵字嵌入之間的注意力分數 S i S_i Si?以點積的形式計算并乘 1 d \frac{1}{\sqrt d} d ?1? ,通過softmax。然后,結果分數被用來對值嵌入進行加權,這些值嵌入被求和以產生最終的輸出嵌入。原SA的完整過程公式為
    Q i = w i W Q , K i = x i W K , V i = x i W V S i = s o f t m a x ( Q i K i T d ) , z i = A t t e n t i o n ( Q i , K i , V i ) = S i V i , Q_i =w_iW_Q,K_i = x_iW_K,V_i = x_iW_V\\ S_i = softmax(\frac{Q_iK^T_i}{\sqrt d}),\\ z_i = Attention(Q_i,K_i,V_i) = S_iV_i,\\ Qi?=wi?WQ?,Ki?=xi?WK?,Vi?=xi?WV?Si?=softmax(d ?Qi?KiT??),zi?=Attention(Qi?,Ki?,Vi?)=Si?Vi?,

  • 最后,輸出特征z具有相同的維度a,可以被后續編碼器進一步處理

E.具有多目標重構的輕量級解碼器給定編碼器輸出特征

? 我們同時訓練一個輕量級解碼器,該解碼器具有相對于變量z的多目標重建策略,以從可見和掩碼圖像標記的潛在嵌入中恢復原始圖像標記。數學上,重建的圖像標記可以表示為 x ^ = g ( f θ ( M ? x ) ) \hat x = g (f_θ(M\cdot x)) x^=g(fθ?(M?x))。解碼器通常比編碼器更窄、更淺,通常由幾個transformer塊和一個線性重構層組成。提出的SpectralGPT以端到端方式訓練編碼器和解碼器,以最大限度地減少重建圖像token和原始圖像token之間的重建損失。在我們的方法中,重構損失由兩個部分組成:token到token,頻譜到頻譜。這種多目標重構使得學習表征能夠有效地捕獲空間-頻譜耦合特征和頻譜序列信息。使用像素空間中的MSE作為損失函數。

F.漸進式預訓練

? 所提出的SpectralGPT模型具有對不同輸入圖像尺寸具有高度適應性的優點,這對于處理具有不同尺寸、分辨率、時間變化率和地理覆蓋范圍的圖像的大型數據集特別有用。這是通過將輸入圖像分成固定大小的3D tokens(例如,8 × 8 × 3),然后通過編碼器-解碼器管道獨立處理來實現的。然后將產生的標記拼接在一起,形成最終的輸出圖像。這種方法確保了模型理論上可以處理任意維度的圖像,而不需要對體系結構或超參數進行任何更改。有了這個特性,所提出的模型允許將不同大小的圖像輸入到編碼器網絡中,并且只要將3D tokens裁剪為固定大小,就可以使用不同的傳感器、分辨率、時間序列和模態來輸入圖像。

? 值得強調的是,將不同類型的輸入圖像逐步輸入到網絡中,不僅有助于在輸入圖像的類型和大小上實現更大的靈活性,而且還有助于提高模型從不同數據源中提取有價值知識的能力,從而增強模型的泛化。例如,可以先輸入96 ×96像素的圖像,然后逐步輸入128 x 128像素的圖像,或者從哨兵2號數據開始,然后過渡到陸地衛星8號或高分2號數據。更廣泛地說,處理不同類型和大小的輸入圖像的能力可以產生更健壯和可泛化的特征,而不限于特定的輸入圖像類型或大小,從而提高模型的泛化和先前未見過的數據的性能。此外,這種輸入圖像大小和類型的靈活性在實際應用中特別有益,在實際應用中,輸入圖像可能來自不同的來源或具有不同的分辨率,從而允許模型更適應輸入圖像不可預測的現實場景。

G.預訓練數據集

? 我們的基礎模型是在一個全面的數據集上訓練的Sentinel-2衛星。該數據集包括12個光譜波段,并從兩個主要來源獲取:(1)fMoW- s2[30],一個基于世界功能地圖(fMoW)[33]的全球多樣化收集,標記為62個類別,(2)BigEarthNet[34],一個源自10多個歐洲國家的區域數據集。為了提供數據集的概述,圖3顯示了地球上有人居住地區的圖像樣本分布,總共有1,473,105張圖像。

image-20231124142851814

? 斯坦福大學的研究人員精心制作了一項研究數據集,利用fMoW數據集的地理坐標和時間戳。這個過程的目的是構造一個時間哨兵2號的一系列圖像為了確保數據質量,排除了sentinel -2之前的fMoW圖像。對于部分之前的fMoW圖像的位置,進行選擇性管理,包括排除這些特定于速度的圖像,并每隔6個月引入補充捕獲,以豐富時間序列。這種方法最終創建了fMoW Sentinel2數據集,表示為fMoW- s2。該數據集主要覆蓋了fMoW位置,并保留了與原始fMoW數據集中的標簽鏡像。fMoW-S2數據集由Sentinel-2光譜圖像(B1-12和B8A)組成,分為三個子集:712874張訓練圖像、84939張驗證圖像和84966張測試圖像,共882779張。每個圖像的平均尺寸約為45像素高和60像素寬。有關fMoW-S2數據集的更多詳細信息,有興趣的人士可參閱專門的網站,在這!。

? 此外,該研究結合了BigEarthNet數據集,特別是BigEarthNet- s2變體,在這!,包括590,326個不同的、不重疊的Sentinel-2光譜圖像標記。使用該方法對不同變體模型進行預訓練,涉及使用712,874張fMoW-S2圖像和354,196張bigearth - s2圖像。值得注意的是,只有10%的帶有標簽的bigearth - s2圖像(總計35420張)被用于下游任務的微調。

H.實現細節和實驗設置

? 根據既定慣例,我們承認Sentinel-2圖像包含13個光譜波段。然而,為了在信道組成方面協調預訓練和下游任務之間的數據集,我們選擇在所有fMoW數據集圖像中保留12個優勢波段,不包括波段B10。為了保證數據的一致性,我們將光譜圖像逐波段歸一化,將其值縮放到0到1的標準化范圍。隨后,我們遵循既定的方法[30]進行預處理。這包括在原始大小的0.2倍到1.0倍范圍內隨機裁剪圖像,將它們調整為96 × 96像素,并應用水平翻轉。這些細致的步驟共同有助于我們的譜基礎模型的魯棒性和兼容性。我們采用普通的ViT-Base架構作為網絡骨干。為了使模型適應光譜數據,我們使用了8×8×3像素的令牌大小,有效地劃分了圖像。例如,一個大小為96 × 96 × 12像素的圖像被分割成12 × 12 × 4個標記。從先前的工作[29]中獲得靈感,我們的方法結合了兩個可學習的位置嵌入。其中一種嵌入是專門用于空間信息的,而另一種是專門用于捕獲跨光譜通道的變化的。這種增強進一步提高了模型從光譜輸入中提取有意義特征的能力。

? 我們的預訓練嚴格遵循先前研究中概述的方法[30]。利用8個NVIDIA GeForce RTX 4090 gpuAMD EPYC7Y83的計算能力。我們實現了AdamW優化器[35],其基本學習率為 1 0 ? 4 10^{-4} 10?4 ,加上半周期余弦衰減學習率調整策略。為了保證魯棒性,我們采用了90%的3D掩蔽率,便于有效的訓練。該模型在fMoW-S2數據集上進行了跨越200個epoch的綜合預訓練。在此階段之后,模型繼續在BigEarthNetS2數據集上進行100 epoch的訓練。雖然這個階段需要將輸入尺寸修改為128 × 128 × 12,但其他設置保持一致。為了區分不同的階段,僅在fMoW數據集上預訓練的模型表示為SpectralGPT,而在兩個數據集上以漸進的方式預訓練的模型表示為SpectralGPT+。這種細致的策略有效地提高了模型在不同數據集上的適應性和性能。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/168163.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/168163.shtml
英文地址,請注明出處:http://en.pswp.cn/news/168163.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

VSCode 連接遠程服務器問題及解決辦法

端口號不一樣,需要在配置文件中添加Port Host 27.223.26.46HostName 27.223.*.*User userForwardAgent yesPort 14111輸入密碼后可以連接 在vscode界面,終端,生成公鑰&私鑰 ssh-keygen可以看到有id_rsa和id_rsa.pub兩個文件生成&#…

curl 命令的一些基本用法,

curl 是一個用于在命令行中進行網絡請求的工具。以下是一些 curl 命令的常見用法: 從 URL 下載文件并保存為本地文件: curl -O URL例如: curl -O https://example.com/file.zip這將會將 file.zip 下載到當前目錄。 將文件下載到指定位置&…

Nginx如何配置負載均衡

nginx的負載均衡有4種模式: 1)、輪詢(默認) 每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器down掉,能自動剔除。 2)、weight 指定輪詢幾率,weight和訪問比率成正比,用于后端服務…

C#,《小白學程序》第五課:隊列(Queue)其一,排隊的技術與算法

日常生活中常見的排隊&#xff0c;軟件怎么體現呢&#xff1f; 排隊的基本原則是&#xff1a;先到先得&#xff0c;先到先吃&#xff0c;先進先出 1 文本格式 /// <summary> /// 《小白學程序》第五課&#xff1a;隊列&#xff08;Queue&#xff09; /// 日常生活中常見…

antDesignPro a-table樣式二次封裝

antDesignPro是跟element-ui類似的一個樣式框架&#xff0c;其本身就是一個完整的后臺系統&#xff0c;風格樣式都很統一。我使用的是antd pro vue&#xff0c;版本是1.7.8。公司要求使用這個框架&#xff0c;但是UI又有自己的一套設計。這就導致我需要對部分組件進行一定的個性…

nodejs微信小程序+python+PHP-青云商場管理系統的設計與實現-安卓-計算機畢業設計

目 錄 摘 要 I ABSTRACT II 目 錄 II 第1章 緒論 1 1.1背景及意義 1 1.2 國內外研究概況 1 1.3 研究的內容 1 第2章 相關技術 3 2.1 nodejs簡介 4 2.2 express框架介紹 6 2.4 MySQL數據庫 4 第3章 系統分析 5 3.1 需求分析 5 3.2 系統可行性分析 5 3.2.1技術可行性&#xff1a;…

mysql 性能參數調優詳解

1 優化連接池 連接池運行機制 MySQL連接器中的連接池&#xff0c;用以提高數據庫密集型應用程序的性能和可擴展性&#xff0c;默認啟用。MySQL連接器負責管理連接池中的多個連接&#xff0c;自動創建、打開、關閉和破壞連接&#xff0c;多個連接的創建&#xff0c;可滿足多客戶…

C++算法 —— 貪心(4)

文章目錄 1、分發餅干2、最優除法3、跳躍游戲Ⅱ4、跳躍游戲Ⅰ5、加油站6、單調遞增的數字7、壞了的計算器 1、分發餅干 455. 分發餅干 其實看完這個題會發現&#xff0c;如果給定的兩個數組不排序的話會非常難受&#xff0c;所以無論怎樣&#xff0c;先排序。接下來需要比較兩…

項目管理套路:看這一篇絕對夠用??

寫論文必不可少的&#xff0c;就是創建代碼并進行實驗。好的項目管理可以讓實驗進行得更加順利。本篇博客以一次項目實踐為例&#xff0c;介紹項目管理的方法&#xff0c;以及可能遇到的問題&#xff0c;并提供一些可行的解決方案。 目錄 項目管理工具開始第一步版本管理十分關…

GB/T 32223-2015 建筑門窗五金件檢測

建筑門窗五金件包括操縱部件&#xff08;傳動機構用執手、旋轉執手、雙面執手、單點鎖閉器&#xff09;、承載部件&#xff08;合頁&#xff0c;鉸鏈、滑撐、滑輪&#xff09;、傳動啟閉部件&#xff08;傳動鎖閉器、多點鎖閉器、插銷&#xff09;、輔助部件&#xff08;撐擋、…

【JavaWeb】TomcatJavaWebHTTP

Tomcat&JavaWeb&HTTP 文章目錄 Tomcat&JavaWeb&HTTP一、Tomcat1.1 版本選擇及安裝1.2 目錄1.3 WEB項目部署的方式 二、IDEA中Java Web開發部署流程三、HTTP協議3.1 發展歷程3.2 HTTP協議的會話方式3.3 請求報文3.4 響應報文 一、Tomcat Tomcat是Apache 軟件基…

php xml數據轉數組兩種方式

目錄 方法一、可以使用simplexml_load_string()函數將XML數據轉換為數組。 方法二、使用PHP內置的DOMDocument類來將XML數據轉換為數組的方法 方法一、可以使用simplexml_load_string()函數將XML數據轉換為數組。 $xmlData <root><name>John Doe</name>&l…

NX二次開發UF_CSYS_create_matrix 函數介紹

文章作者&#xff1a;里海 來源網站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CSYS_create_matrix Defined in: uf_csys.h int UF_CSYS_create_matrix(const double matrix_values [ 9 ] , tag_t * matrix_id ) overview 概述 Creates a 3 x 3 matrix. 創建…

nodejs+vue+python+PHP+微信小程序-青云商場管理系統的設計與實現-安卓-計算機畢業設計

研究步驟、措施&#xff1a; &#xff08;1&#xff09;與指導老師確定系統主要功能&#xff1b; &#xff08;2&#xff09;做需求分析及功能模塊劃分&#xff1b; &#xff08;3&#xff09;指導老師通過后&#xff0c;設計出用例圖&#xff0c;E-R圖&#xff0c;功能模塊圖 …

【XSLVGL2.0】如何新增一種語言和詞條

XSLVGL2.0 開發手冊 【XSLVGL2.0】如何新增一種語言和詞條 1、概述2、以外置資源的方式增加詞條3、以內置資源的方式增加詞條4、使用方法1、概述 本文件旨在介紹新增一種語言詞條的方法 2、以外置資源的方式增加詞條 假設項目需要增加一種英文的詞條。一般地,我們采用國際…

Git-將指定文件回退到指定版本

場景1&#xff1a;修改了文件/path/to/file&#xff0c;沒有提交&#xff0c;但是覺得改的不好&#xff0c;想還原。 解決&#xff1a; git checkout -- /path/to/file 場景2&#xff1a;修改了文件/path/to/file&#xff0c;已經提交&#xff0c;但是覺得改的不好&#xff0c…

老牌開源 SVG 編輯器 SVGEdit 是如何架構的?

大家好&#xff0c;我是前端西瓜哥。這次簡單看看 SVGEdit 的架構。 SVGEdit 的版本為 7.2.0。 SVGEdit 一款非常老牌的 SVG 圖形編輯器&#xff0c;用于編輯處理 SVG&#xff0c;start 數目前是 5.8k。 它的優點在于經過多年的開發&#xff0c;完成度高&#xff0c;較為成熟&a…

大眾博客系統測試報告【改】

一、項目背景 大眾博客系統采用前后端分離的方法來實現&#xff0c;同時使用了數據庫來存儲相關的數據&#xff0c;同時將其部署到云服務器上。前端主要有四個頁面構成&#xff1a;登錄頁、列表頁、詳情頁以及編輯頁&#xff0c;以上模擬實現了最簡單的大眾博客系統。其結合后端…

Tars-GO 開發

默認環境是安裝好的 創建服務: tarsgo make App Server Servant GoModuleName Tars 實例的名稱&#xff0c;有三個層級&#xff0c;分別是 App&#xff08;應用&#xff09;、Server&#xff08;服務&#xff09;、Servant&#xff08;服務者&#xff0c;有時也稱 Object&am…

LeetCode Hot100 74.搜索二維矩陣

題目&#xff1a; 給你一個滿足下述兩條屬性的 m x n 整數矩陣&#xff1a; 每行中的整數從左到右按非嚴格遞增順序排列。每行的第一個整數大于前一行的最后一個整數。 給你一個整數 target &#xff0c;如果 target 在矩陣中&#xff0c;返回 true &#xff1b;否則&#x…