YOLOV10實時端到端目標檢測

代碼地址:GitHub - THU-MIG/yolov10: YOLOv10: Real-Time End-to-End Object Detection

論文地址:https://arxiv.org/pdf/2405.14458

本文介紹了YOLO系列目標檢測器在實時和高效方面的優勢,但是仍然存在一些缺陷,包括依賴非極大值抑制(NMS)后處理導致部署效率降低,以及模型架構設計還有待進一步優化。提出了一種一致雙賦值策略(?consistent dual assignment),用于無需NMS的YOLO訓練,可以在保持檢測性能的同時提高部署效率。提出了一種全面的高效-高精度驅動的模型設計策略,從效率和精度兩個角度對YOLO的各個組件進行了優化設計。基于上述方法,提出了新一代實時端到端目標檢測器YOLOv10,在不同模型規模下,YOLOv10都能實現業界最優的計算效率和檢測精度權衡。在COCO數據集上進行了大量實驗,結果表明YOLOv10在各種模型規模下均顯著優于其他先進的檢測器,如在相似mAP水平下,YOLOv10-S/X比RT-DETR-R18/R101加速1.8/1.3倍。


就在昨天yolo的第10個版本來了,是不是yolov9都還沒有吃透,這緊接著yolov10就來了

Introduction

這篇文章主要討論了兩個方面來推進實時端到端目標檢測任務中YOLO系列模型的性能-效率權衡:

提出了一種稱為"一致雙賦值(?consistent dual assignment)"的方法,用于YOLO模型的無NMS訓練。這種方法在訓練時保留了one-to-many賦值的豐富監督信息,而在推理時則采用one-to-one賦值避免使用NMS后處理,從而獲得更高的推理效率。
提出了一種"全面的效率-精度驅動"的模型設計策略。在效率方面,引入了輕量級分類頭、空間-通道解耦下采樣和基于rank-guided的塊設計等技術減少計算冗余。在精度方面,探索了大核卷積和部分自注意力模塊來提高模型能力。


Related Work

Real-time object detectors.回顧了YOLO系列模型的發展歷程,包括YOLOv1到YOLOv9,以及其他一些重要的實時檢測器如PPYOLOE、RTMDet、YOLO-MS、Gold-YOLO等。
End-to-end object detectors.?介紹了基于Transformer的DETR及其變體(如Deformable DETR、DINO、RT-DETR等)如何實現端到端目標檢測。另一方面也提到了一些基于CNN的端到端檢測器,如OneNet、DeFCN、FCOS等。
這部分概括了YOLO系列和一些其他實時端到端檢測器的最新進展,為接下來提出的YOLOv10工作做鋪墊。同時也指出了現有工作在后處理(依賴NMS)和模型架構設計方面的不足,為作者的工作方向提供了動機。


Methodology

Consistent Dual Assignments for NMS-free Training

3.1節介紹了作者提出的一種稱為"一致雙賦值"(Consistent Dual Assignments)的訓練策略,使YOLO模型能夠在訓練時享有豐富的監督信號,同時在推理時免去NMS后處理,實現真正的端到端檢測,提升部署的推理效率。主要內容包括:

雙標簽賦值(Dual Label Assignments)

為YOLO模型引入另一個one-to-one分支,與原有的one-to-many分支共同優化。前者避免了冗余預測,后者提供豐富監督。在推理時只使用one-to-one分支的預測。

與一對多分配不同,一對一匹配僅將一個預測分配給每個GT,從而避免了 NMS 后處理。然而,它會導致監督薄弱,從而導致精度和收斂速度欠佳。幸運的是,這種缺陷可以通過一對多分配來彌補。為了實現這一目標,作者為 YOLO 引入了雙標簽分配,以結合兩種策略的優點。具體而言,如圖2(a)所示。

作者為YOLOs加入了另一個一對一的頭。它保留了與原來的一對多分支相同的結構并采用相同的優化目標,但利用一對一匹配來獲得標簽分配。在訓練過程中,兩個頭部與模型共同優化,讓backbone和neck享受一對多任務提供的豐富監督。在推理過程中,丟棄一對多的頭部,并利用一對一的頭部進行預測。這使 YOLO 能夠進行端到端部署,而不會產生任何額外的推理成本。此外,在一對一匹配中,作者采用top one selection,這達到了與匈牙利匹配相同的性能,但額外的訓練時間更少。

一致匹配度量(Consistent Matching Metric)

引入統一的匹配度量公式,使one-to-one分支的最佳正樣本與one-to-many分支一致,從而兩個分支可以協調優化,one-to-one分支獲得改進的監督對齊。

其中p表示分類得分,\widehat{b}b分別表示prediction和instance的邊界框。s表示空間先驗,指示預測的錨點是否在實例內。\alpha\beta是兩個重要的超參數,用于平衡語義預測任務和位置回歸任務的影響。將一對多和一對一指標分別表示為m_{o2m} = m(\alpha_{o2m},\beta _{o2m})m_{o2o} = m(\alpha_{o2o},\beta _{o2o})。這些指標會影響兩個heads的標簽分配和監督信息。

在雙標簽分配中,一對多分支比一對一分支提供更豐富的監督信號。直觀地說,如果能夠協調一對一head和一對多head的監督,就可以將一對一head優化到一對多head優化的方向。因此,一對一head可以在推理過程中提供更好的樣本質量,從而獲得更好的性能。為此,首先分析了兩個head之間的監督差距。

由于訓練過程中的隨機性,一開始就用相同的值初始化兩個head并產生相同的預測來啟動檢查,即一對一head和一對多head為每個預測-實例對生成相同的pIoU。兩個分支的回歸目標并不沖突,因為匹配的預測共享相同的目標,并且不匹配的預測將被忽略。因此,監管差距在于不同的分類對象。

給定一個實例,將預測的最大IoU表示為u^{*},最大的一對多和一對一匹配分數分別表示為 m_{o2m}^{*}m_{o2o}^{*}。假設一對多分支產生正樣本\Omega,一對一分支選擇度量m_{o2o,i}=m_{o2o}^{*}的第i個預測,然后可以推導出分類目標t_{o2m,j}= u^{*}\cdot \frac{m_{o2m,j}}{m_{o2m}^{*}} \leq u^{*}對于j\in \Omega,以及任務對齊損失t_{o2o,i}= u^{*}\cdot \frac{m_{o2o,i}}{m_{o2o}^{*}} = u^{*}。因此,兩個分支之間的監督差距可以通過不同分類目標的1-Wasserstein距離得出,即

差距隨著t_{o2m,i}的增加而減小,即i\Omega內排名更高。當t_{o2m,i} = u^{*}時達到最小值,即i\Omega中最好的正樣本,如圖2(a)所示。為了實現這一點,提出了一致的匹配指標,即\alpha_{o2o} = r\cdot \alpha_{o2m}\beta_{o2o} = r\cdot \beta_{o2m},這意味著m_{o2o} = m^{r}_{o2m}。因此,一對多head的最佳正樣本也是一對一head的最佳樣本。因此,兩個head可以一致、和諧地進行優化。為簡單起見,默認取r=1,即\alpha_{o2o} = \alpha_{o2m}\beta_{o2o} = \beta_{o2m}。為了驗證改進的監督對齊,計算了訓練后一對多結果的前 1 / 5 / 10 內的一對一匹配對數。如圖 2(b) 所示。在一致匹配指標下改進了對齊。更多的細節可以看論文的附錄。


Holistic Efficiency-Accuracy Driven Model Design

3.2節介紹了作者提出的一種全面的效率-精度驅動的模型設計策略,旨在從效率和精度兩個角度對YOLO模型的不同組件進行優化,以進一步推進YOLO的性能-效率邊界。

Efficiency driven model design.?YOLO 中的組件由stem、下采樣層、stages with basic building blocks和head組成。stem產生的計算成本很少,因此對其他三個部分進行效率驅動的模型設計。

總結如下:

  • 輕量級分類頭-采用深度可分離卷積構建更高效的分類頭,降低計算開銷。
  • 空間-通道解耦下采樣-將下采樣操作解耦為通道變換和空間降維兩步,以獲得更高效率。
  • 基于rank-guided的塊設計-分析網絡各階段的冗余程度,對冗余階段采用更緊湊的基本塊結構,如緊湊的逆殘差塊(CIB)。

(1) Lightweight classification head.在 YOLO 中,分類頭和回歸頭通常共享相同的架構。但是,它們在計算開銷方面表現出明顯的差異。例如,YOLOv8-S中分類頭(5.95G/1.51M)的FLOPs和參數數量分別為2.5×和2.4×回歸頭(2.34G/0.64M)。然而,在分析了分類誤差和回歸誤差的影響(見表6)后,作者發現回歸頭對YOLO的性能具有更大的意義。因此,可以減少分類頭的開銷,而不必擔心會嚴重損害性能。因此,作者簡單地為分類頭采用輕量級架構,它由兩個深度可分離卷積組成,核大小為 3×3,后跟一個 1×1 卷積。

(2) Spatial-channel decoupled downsampling.YOLO 通常利用步幅為 2 的常規 3×3 標準卷積,同時實現空間下采樣(從H\times W\frac{H}{2}\times \frac{W}{2})和通道轉換(從C2C)。這引入了o(\frac{9}{2}HWC^{2}) 的不可忽略的計算成本和o(18C^{2}) 的參數量。相反,作者提出將空間縮減和信道增加操作解耦,從而實現更有效的下采樣。具體來說,首先利用逐點卷積來調制通道維度,然后利用深度卷積進行空間下采樣。這將計算成本降低到o(2HWC^{2} + \frac{9}{2}HWC),參數計數為o(2C^{2}+18C)。同時,它在縮減采樣過程中最大限度地保留了信息,從而在減少延遲的情況下實現了具有競爭力的性能。

(3) Rank-guided block design.YOLO通常對所有階段都使用相同的基本構建塊,例如YOLOv8中的瓶頸塊。為了徹底檢驗YOLO的這種同質設計,作者利用intrinsic rank來分析每個階段的冗余性。具體來說,作者計算每個階段最后一個基本塊中最后一個卷積的numerical rank,計算大于閾值的奇異值的數量。圖 3(a)給出了YOLOv8的結果,表明深階段和大模型容易表現出更多的冗余。這一觀察結果表明,簡單地對所有階段應用相同的塊設計對于最佳容量效率權衡來說是次優的。為了解決這個問題,作者提出了一種rank-guided block設計方案,旨在通過緊湊的架構設計來降低被證明是多余的階段的復雜性。

作者首先提出了一種compact inverted block(CIB)結構,該結構采用廉價的深度卷積進行空間混合,采用高性價比的逐點卷積進行通道混合,如圖3(b)所示。它可以作為高效的基本構建塊,例如,嵌入到ELAN結構中。然后,作者提倡以rank-guided block分配策略,以在保持競爭力的同時實現最佳效率。

具體來說,給定一個模型,根據其內在ranks按升序對其所有階段進行排序。進一步檢查了用 CIB 替換leading stage的基本塊的性能變化。如果與給定模型相比沒有性能下降,將繼續替換下一階段,否則停止該過程。因此,作者可以跨階段和模型規模實施自適應緊湊模塊設計,在不影響性能的情況下實現更高的效率。附錄中提供了算法的詳細信息。


Accuracy driven model design.?進一步探索了精度驅動設計的大核卷積和自注意力,旨在以最小的成本提高性能。

總結如下:

  • 大核卷積-在深層CIB中使用7x7大核深度可分離卷積,增大感受野,提高小目標檢測能力。
  • 部分自注意力(PSA)-提出PSA模塊,通過減少注意力頭數量降低計算開銷,同時引入全局建模能力。

(1) Large-kernel convolution.?采用大核深度卷積是擴大感受野和增強模型能力的有效方法。然而,簡單地在所有階段利用它們可能會在用于檢測小物體的淺層特征中引入污染,同時在高分辨率階段也會帶來大量的I/O開銷和延遲。因此,作者建議在深階段利用CIB中的大核深度卷積。具體來說,將 CIB 中第二個3×3深度卷積的核大小增加到7×7。此外,采用結構重參數化技術來引入另一個 3×3 深度卷積分支,以緩解優化問題,而不會產生推理開銷。此外,隨著模型大小的增加,其感受野自然擴大,使用大核卷積的好處會減少。因此,只對小模型尺度采用大核卷積。

(2) Partial self-attention (PSA).自注意力由于其卓越的全局建模能力而被廣泛用于各種視覺任務。但是,它表現出很高的計算復雜性和內存占用。為了解決這個問題,鑒于普遍存在的注意力頭冗余,作者提出了一種高效的部分自注意力(PSA)模塊設計,如圖3(c)所示。

具體來說,在 1×1 卷積之后將通道上的特征均勻地劃分為兩部分。只將一個部分輸入到由多頭自注意力模塊(MHSA)和前饋網絡(FFN)組成的N_{PSA}中。然后將兩個部分連接起來,并通過 1×1 卷積融合。此外,按照 [Levit: a vision transformer in convnet’s clothing for faster inference] 將query和key的維度賦值為 MHSA 中值的一半,并將LayerNorm替換為BatchNorm以實現快速推理。此外,PSA僅放置在分辨率最低的Stage 4之后,避免了自注意力的二次計算復雜性帶來的過多開銷。這樣,就可以以較低的計算成本將全局表示學習能力整合到YOLO中,從而很好地增強了模型的能力,提高了性能。


Experiments

作者選擇 YOLOv8作為基線模型,因為它具有值得稱贊的延遲-準確性平衡以及它在各種模型大小中的可用性。作者采用一致的雙重分配進行無NMS訓練,并在此基礎上進行整體效率精度驅動的模型設計,從而帶來了作者的YOLOv10模型。YOLOv10 具有與 YOLOv8 相同的變體,即 N / S / M / L / X。此外,作者通過簡單地增加YOLOv10-M的寬度比例因子,推導出了一個新的變體YOLOv10-B。作者在相同的從頭開始訓練設置下驗證了COCO上提出的檢測器。

Comparison with state-of-the-arts

如表 1 所示, YOLOv10 在各種型號規模上實現了最先進的性能和端到端延遲。作者首先將 YOLOv10 與基線模型(即 YOLOv8)進行比較。在 N / S / M / L / X 五種變體上,YOLOv10 實現了1.2% / 1.4% / 0.5% / 0.5% / 0.3% / 0.5% AP 改進,參數量減少了 28% / 36% / 41% / 44% / 57%,計算量減少了 23% / 24% / 25% / 27% / 38%,延遲降低了 70% / 65% / 50% / 41% / 37%。與其他 YOLO 相比,YOLOv10 在精度和計算成本之間也表現出更好的權衡。具體來說,對于輕量級和小型型號,YOLOv10-N/S 的性能比 YOLOv6-3.0-N / S 高出 1.5 AP 和 2.0 AP,參數分別減少 51% / 61% 和計算量減少 41% / 52%。對于中型機型,與YOLOv9-C / YOLO-MS相比,YOLOv10-B/M在相同或更好的性能下分別享受了46%/62%的延遲降低。對于大型型號,與 Gold-YOLO-L 相比,作者的 YOLOv10-L 參數減少了 68%,延遲降低了 32%,AP 顯著提高了 1.4%。此外,與 RT-DETR 相比,YOLOv10 獲得了顯著的性能和延遲改進。值得注意的是,在相似的性能下,YOLOv10-S / X 的推理速度分別比 RT-DETR-R18 / R101 快 1.8× 和 1.3×。


Model Analyses?

Ablationstudy.

表 2 中介紹了基于 YOLOv10-S 和 YOLOv10-M 的消融結果。可以觀察到,無 NMS 訓練和一致的雙重分配顯著降低了 YOLOv10-S 的端到端延遲 4.63ms,同時保持了 44.3% AP 的競爭性能。此外,作者的效率驅動模型設計減少了 11.8 M 參數和 20.8 GFLOPs,YOLOv10-M 的延遲大幅降低了 0.65ms,很好地顯示了其有效性。此外,作者的精度驅動模型設計在 YOLOv10-S 和 YOLOv10-M 上實現了 1.8 AP 和 0.7 AP 的顯著改進,僅單獨只有 0.18 毫秒和 0.17 毫秒的延遲開銷,這很好地證明了其優勢。


AnalysesforNMS-freetraining.

Dual label assignments.作者提出了無NMS的YOLO的雙標簽分配,既可以在訓練過程中帶來對一對多(o2m)分支的豐富監督,又可以在推理過程中帶來一對一(o2o)分支的高效。根據 YOLOv8-S(即表 2 中的 #1)驗證其優勢。具體來說,作者分別引入了僅使用 o2m 分支和僅使用 o2o 分支的訓練基線。如表 3 所示,作者的雙標簽分配實現了最佳的AP-延遲權衡。

Consistent matching metric.?作者引入了一致的匹配指標,使一對一head與一對多head更加和諧。基于 YOLOv8-S(即表 2 中的 #1)在不同的\alpha\beta下驗證了它的益處。如表4所示,建議的一致匹配指標,即\alpha_{o2o} = r\cdot \alpha_{o2m}\beta_{o2o} = r\cdot \beta_{o2m},可以達到最優性能,其中\alpha_{o2m} = 0.5\beta_{o2m} = 6。這種改進可歸因于監督差距的縮小(方程(2)),這改善了兩個分支之間的監督一致性。此外,所提出的一致匹配指標消除了對窮舉超參數調整的需要,這在實際場景中很有吸引力。


Analysesforefficiencydrivenmodeldesign.?

通過實驗逐步納入基于YOLOv10-S/M的效率驅動設計元素。作者的基線是 YOLOv10-S/M 模型,沒有效率精度驅動的模型設計,即表 2 中的 #2/#6。如表5所示,每個設計組件,包括輕量級分類頭、空間通道解耦下采樣和rank-guided模塊設計,都有助于減少參數計數、FLOPs和延遲。

重要的是,這些改進是在保持競爭性能的同時實現的。

Lightweight classification head.根據表 5 中 #1 和 #2 的 YOLOv10-S 分析了預測的類別和局部誤差對性能的影響。具體來說,通過一對一的分配將預測與實例進行匹配。然后,將預測的類別分數替換為實例標簽,從而得到的AP^{val}_{w/o c}沒有分類誤差。同樣,將預測的位置替換為實例的位置,從而生成AP^{val}_{w/o r}沒有回歸誤差。如表6所示,AP^{val}_{w/o r}遠高于AP^{val}_{w/o c},揭示了消除回歸誤差可以實現更大的改進。因此,性能瓶頸更多地在于回歸任務。因此,采用輕量級分級頭可以在不影響性能的情況下實現更高的效率。

Spatial-channel decoupled downsampling.為了提高效率,作者將下采樣操作解耦,其中通道維度首先通過逐點卷積 (PW) 增加,然后通過深度卷積 (DW) 降低分辨率,以實現最大的信息保留。作者將其與基于表5中#3的YOLOv10-S的DW空間縮減然后PW通道調制的基線方式進行了比較。如表7所示,作者的下采樣策略通過減少下采樣過程中的信息丟失,實現了0.7%的AP改善。

Compact inverted block (CIB).作者引入 CIB 作為緊湊的基本構建塊。根據表 5 中 #4 的 YOLOv10-S 驗證其有效性。具體而言,作者引入倒置殘差塊(IRB) 作為基線,其可實現次優 43.7% AP,如表 8 所示。然后,作者在它后面附加一個 3×3 的深度卷積 (DW),表示為“IRB-DW”,它帶來 0.5% 的 AP 改善。與“IRB-DW”相比,作者的CIB以最小的開銷,進一步實現了0.3%的AP改進,表明了它的優勢。

Rank-guided block design.作者引入了rank-guided塊設計,自適應集成緊湊的塊設計,以提高模型效率。根據表 5 中 #3 的 YOLOv10-S 驗證其優勢。根據內在rank按升序排序的階段是階段 8-4-7-3-5-1-6-2,如圖 3 所示。如表9所示,當逐漸用高效的CIB替換每個階段的bottleneck block時,作者觀察到從階段7開始的性能下降。因此,在Stage 8和4中,固有rank較低,冗余度較多,因此可以在不影響性能的情況下采用高效的模塊設計。這些結果表明,rank-guided塊設計可以作為提高模型效率的有效策略。


Analyses for accuracy driven model design.

精度驅動模型設計的分析。本文介紹了基于YOLOv10-S/M的精度驅動設計元素的逐步集成結果。作者的基線是 YOLOv10-S/M 模型,在納入了效率驅動設計后,即表 2 中的 #3/#7。如表10所示,采用大內核卷積和PSA模塊,在0.03ms和0.15ms的最小延遲增加下,YOLOv10-S的性能分別提高了0.4%和1.4%。請注意,YOLOv10-M 不采用大核卷積(參見表 12)。

Large-kernelconvolution.作者首先根據表 10 中 #2 的 YOLOv10-S 研究了不同內核大小的影響。如表11所示,性能隨著內核大小的增加而提高,并在7×7的內核大小附近停滯,表明了大感受野的好處。此外,在訓練過程中去除重參數化分支可實現0.1%的AP劣化,顯示出其優化效果。此外,作者基于YOLOv10-N / S / M檢查了跨模型尺度的大核卷積的好處。如表12所示,由于YOLOv10-M固有的大感受野,它對大型模型(即YOLOv10-M)沒有帶來任何改進。因此,作者只對小模型采用大核卷積,即YOLOv10-N/S。

Partialself-attention(PSA).作者引入了PSA,通過以最低的成本整合全局建模能力來提高性能。作者首先根據表 10 中 #3 的 YOLOv10S 驗證其有效性。具體來說,作者引入了transformer模塊,即MHSA,然后是FFN,作為基線,表示為“Trans.”。如表13所示,與它相比,PSA帶來了0.3%的AP改善,延遲降低了0.05ms。性能的提高可歸因于通過減輕注意力頭的冗余,緩解了自注意力中的優化問題。此外,作者還研究了不同N_{PSA}的影響。如表 13 所示,將N_{PSA}?提高到2?AP 可提高 0.2%,但延遲開銷為 0.1ms。因此,默認將N_{PSA}設置為 1,以增強模型能力,同時保持高效率。

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

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

相關文章

[240525] VMware Pro 個人可免費使用 | 人機交互角度 解釋 AI 同事出錯雖多但深得青睞之奧義

目錄 VMware Workstation Pro 個人可免費使用人機交互研究 ChatGPT 52%回答失實,78%邏輯不一致然卻備受青睞之奧義 VMware Workstation Pro 個人可免費使用 VMware 宣布 Fusion Pro(Mac)和 Workstation Pro(Windows 和 Linux&…

純度高的安卓和混血安卓

安卓陣營純安卓和改裝安卓,純安卓好用,權限控制力度做到很小,每相權限都交用戶控制,權限控制層面可以精確到文件夾和文件,剪切板讀和寫,而且有精確權限追蹤功能,國產高度定制安卓系統只有粗糙訪…

React useState修改對象

在 React 中,useState 是一個 Hook,它可以讓函數組件擁有狀態。當想要改變一個對象類型的狀態時,我們需要使用展開運算符(...)或者 Object.assign 來確保狀態是正確地更新。 以下是一個使用 useState 來更新對象的例子…

webstorm新建vue項目相關問題

前言 這個迭代后端需求偏少,前端code的鍵盤都起火星子了。來了4個外包支持,1個后端3個前端,還是不夠用啊。剛好趁這個機會稍微學習下vue,其實之前環境也配置過了,所以這里就不分享環境配置了,主要分享下新建…

基于單片機電梯控制系統設計與實現

摘 要: 介紹了電梯控制系統架構 , 指出了該系統的硬件設計和控制系統的軟件設計以及系統調試 , 使系統可根據按鍵 要求完成載客任務,為電梯控制系統的優化提供了參考 。 關鍵詞 : 電梯控制 ; 單片機 ; 系統設計 0 引言 在高層建筑中發揮…

Java開發大廠面試第22講:Redis 是如何保證系統高可用的?它的實現方式有哪些?

高可用是通過設計,減少系統不能提供服務的時間,是分布式系統的基礎也是保障系統可靠性的重要手段。而 Redis 作為一款普及率最高的內存型中間件,它的高可用技術也非常的成熟。 我們今天分享的面試題是,Redis 是如何保證系統高可用…

GPT-4o之多模態

前言 想必,很多小伙伴都知道GPT-4o已經發布了,一手基于多模態的問答顯示,看起來挺厲害的(也就是看起來, )。然后,我就順手看了看什么是多模態。 簡介 多模態(Multimodal&#xff…

什么是組態?什么是工業控制中的組態軟件?

隨著工業4.0和智能制造的發展,工控軟件的應用越來越廣泛,它們在提高生產效率、降低能耗和減少人力成本等方面發揮著越來越重要的作用。 什么是工控軟件? 工控軟件是指用于工業控制系統的軟件,主要應用于各種生產過程控制、自動化…

標準庫算法

歡迎訪問我的博客首頁。 標準庫算法 1. 查找對象的算法2. 其它只讀算法3. 二分搜索算法4. 寫容器元素的算法5. 劃分與排序算法6. 通用重排操作7. 排列算法8. 有序序 列的 集合算法9. 最 小值和 最大值10. 數值算法11. 參考 Pred 表示返回值為布爾類型的可調用對象。 1. 查找對…

Python序列的概念與使用-課后作業[python123題庫]

序列的概念與使用-課后作業 一、單項選擇題 1、關于Python組合數據類型,以下描述錯誤的是:??????????????????????????????????????????????????????????????????????????…

Flutter 中的 DecoratedBox 小部件:全面指南

Flutter 中的 DecoratedBox 小部件:全面指南 在Flutter中,DecoratedBox是一個功能豐富的小部件,它為子組件提供了多種裝飾效果,如背景色、邊框和陰影。通過DecoratedBox,你可以輕松地為任何小部件添加裝飾&#xff0c…

PLSQL連接Linux Oracle21c

PLSQL連接Linux Oracle21c 一、安裝PLsql 下載官網 https://www.allroundautomations.com/registered-plsqldev/ 二、Oracle Instant Client下載 使用plsql連接oracle的時候是需要本地先安裝oracle客戶端,英文名就是Oracle Instant Client。 官方下載地址&…

初出茅廬的小李博客之用MQTT.fx軟件進行消息發布與訂閱【 基于EMQX Cloud】

MQTT.fx軟件使用簡單介紹 MQTT.fx 的軟件界面如下圖所示,最上方為 MQTT Broker 連接地址欄,及其連接配置。其下方功能 Tabs 含有 Publish 發布欄、Subscribe 訂閱欄、Scripts 腳本欄、Broker Status 狀態消息欄、Log 日志信息控制欄。 連接之前要明確幾…

【Linux系列】軟鏈接使用

💝💝💝歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內容和知識,也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續學…

深入編程邏輯:從分支到循環的奧秘

新書上架~👇全國包郵奧~ python實用小工具開發教程http://pythontoolsteach.com/3 歡迎關注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目錄 一、編程邏輯的基石:分支與循環 分支邏輯詳解 代碼案例:判斷整數是…

函數的拓展

7.1.1 基本用法 在ES6之前,不能直接為函數的參數指定默認值,只能采用變通的方法。 function log(x.y){ y y || Worldl console.log(x,y); }log(hello) //hello World log(hello,Chine) //hello Chine log(hello,) //hello World上面的代碼檢查函數…

UE5 雙手握劍的實現(逆向運動學IK)

UE5 雙手握劍的實現 IK 前言 什么是IK? UE官方給我們提供了很多對于IK處理的節點,比如ABRIK、Two Bone IK、Full Body IK 、CCD IK等,但是看到這,很多人就好奇了,什么是IK? 首先我們來看看虛幻小白人的骨…

[圖解]產品經理創新之阿布思考法

0 00:00:00,000 --> 00:00:01,900 那剛才我們講到了 1 00:00:02,730 --> 00:00:03,746 業務序列圖 2 00:00:03,746 --> 00:00:04,560 然后怎么 3 00:00:05,530 --> 00:00:06,963 畫現狀,怎么改進 4 00:00:06,963 --> 00:00:09,012 然后改進的模式…

【Spring Security + OAuth2】授權

Spring Security OAuth2 第一章 Spring Security 快速入門 第二章 Spring Security 自定義配置 第三章 Spring Security 前后端分離配置 第四章 Spring Security 身份認證 第五章 Spring Security 授權 第六章 OAuth2 文章目錄 Spring Security OAuth21、基于request的授權1…

一條命令安裝Metasploit Framework

做安全滲透的人都或多或少的使用kali-Linux系統中msfconsole命令啟動工具,然而也經常會有人遇到這樣那樣的問題無法啟動 今天我們就用一條命令來重新安裝這個工具 curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/met…