YOLO-01目標檢測基礎

1、概念

  • 目標檢測(Object Detection)是計算機視覺中的一個重要領域,它涉及到識別圖片或視頻某一幀中的物體是什么類別,并確定它們的位置。通常用于多個物體的識別,可以同時處理圖像中的多個實例,并為每個實例提供一個邊界框和類別標簽

  • 目標檢測面臨到的問題:

    • 目標種類和數量問題

    • 目標尺度問題

    • 環境干擾問題

2、標注

  • 在目標檢測任務中,標注主要涉及的是邊界框標注,即為圖像中的每一個需要檢測的目標物體畫出一個邊界框,并給定類別標簽

  • 在訓練目標檢測模型的時候,我們就需要先為數據集做標注

3、本質

  • 對于目標檢測,主要是關注兩個問題:

    • 目標在哪里?where

    • 目標是什么?what

  • 以下圖為例說明:

4、目標檢測、圖像分類、圖像分割

  • 目標檢測是指在圖像中找到特定類別的物體,并用邊界框(Bounding Boxes)標出它們的位置。除了識別圖像中的物體外,目標檢測還需要確定這些物體的具體位置

  • 圖像分類是指識別圖像中的主要物體或類別。它只關心圖像屬于哪個類別,而不關心物體的具體位置

  • 圖像分割是指在圖像中識別特定類別的物體,并用像素級別的標簽來表示這些物體的位置。它不僅需要識別物體是什么,還需要精確地描繪物體的輪廓,目標分割為了了兩類

    • 語義分割(Semantic Segmentation):僅識別物體的類別,不區分不同的實例,即為整個圖像中的每個像素分配一個類別標簽

    • 實例分割(Instance Segmentation):不僅識別物體的類別,還區分不同的實例(個體),即為每個物體提供一個精確的分割掩碼

  • 目標檢測和目標分割的區別圖示:

    • 目標檢測:識別圖像中存在的內容和檢測其位置,如下圖,以識別和檢測人(person)為例

    • 語義分割:對圖像中的每個像素打上類別標簽,如下圖,把圖像分為人(紅色)、樹木(深綠)、草地(淺綠)、天空(藍色)標簽

    • 實例分割:目標檢測和語義分割的結合,在圖像中將目標檢測出來(目標檢測),然后對每個像素打上標簽(語義分割)。對比上圖、下圖,如以人(person)為目標,語義分割不區分屬于相同類別的不同實例(所有人都標為紅色),實例分割區分同類的不同實例(使用不同顏色區分不同的人)

5、應用場景

  • 自動駕駛:檢測周圍的車輛、行人、交通燈、道路標志等

  • 安防監控:監控公共場,發現異常行為,保障公共安全

  • 人臉檢測

  • 醫學影像分析:在醫學影像方面可以識別腫瘤、組織變異等,用于醫療輔助

  • 無人機應用:識別特定目標,引導無人機飛行,比如監測天氣、線路檢測、搜尋救援、軍事等

  • 缺陷檢測:工業

6、技術架構

  • 目標檢測方法可以根據其架構和技術特點進行分類。目前主流的目標檢測方法可以分為兩大類:兩階段檢測方法(Two-stage Detection Methods)和單階段檢測方法(One-stage Detection Methods)

  • 分類信息如下表:

one-stagetwo-stage
主要算法YOLO系列、SSDR-CNN、Fast R-CNN、Faster R-CNN
檢測精度較低(版本不斷更新,精度不斷增加)較高
檢測速度較快(達到視頻流檢測級別)較慢

6.1 two-stage

  • 兩階段檢測開始于 2014 年左右,是目標檢測領域中非常重要的一類方法,這類方法通常因為其高檢測精度和可靠性而被廣泛應用于各種復雜的目標檢測任務中

  • 兩階段檢測方法將目標檢測任務分為兩個連續的階段:

    • 第一階段:第一階段是生成候選區域(Region Proposals),即可能包含目標的區域,通常通過區域提議網絡(RPN)或其他方法實現

    • 第二階段:對生成的候選區域進行分類和邊界框回歸,即確定候選區域中的物體類別以及調整候選區域的位置,以更精確地框中目標

  • 基本流程如下:

    • 第一步 Input:輸入一張圖像

    • 第二步 Conv&pooling:使用卷積神經網絡做深度特征提取,通過稱這個卷積神經網絡為主干神經網

    • 第三步 Conv-proposal:使用 RPN 網絡生成候選區域,并對這些區域進行初步的分類(區分背景和目標)以及位置預測?

    • 第四步 roi pooling:候選區域進一步精確進行位置回歸和修正,對不同大小的候選區域提取固定尺寸的特征圖

    • 第五步 fc:全連接層,對候選區域的特征進行表示

    • 第六步 Lcls、Lreg:通過分類和回歸來分別完成對候選目標的類別的預測以及候選目標位置的優化,這里的類別不同于 RPN 網絡的類別,這里通常會得到物體真實的類別,回歸主要得到當前目標具體的坐標位置,通常表示為一個矩形框,即四個值(x,y,w,h)

6.2 one-stage

  • 單階段目標檢測開始于 2016 年左右,沒有像 two-stage 那樣先生成候選框,而是直接回歸物體的類別概率和位置坐標值

  • 基本流程圖如下:

    • 第一步 Input:輸入一張圖像

    • 第二步 CNN:使用卷積神經網絡做深度特征提取,通過稱這個卷積神經網絡為主干網絡

    • 第三步 Lcls、Lreg:通過分類和回歸來分別完成對候選目標的類別的預測以及候選目標位置的優化

7、指標

7.1 邊界框

  • 目標檢測任務中,Bounding Box(邊界框) 是用來定位圖像中檢測到的物體位置的一個矩形框。每個檢測出的物體都會被分配一個邊界框,用來表示該物體在圖像中的位置大小

  • 邊界框通常由以下信息表示:

    • 類別標簽(Class Label):表示這個物體是什么,例如“貓”、“車”、“人”等

    • 置信度分數(Confidence Score):表示模型對該檢測結果的置信程度,通常是一個 0 到 1 之間的值

    • 邊界框坐標(Bounding Box Coordinates):表示矩形框的位置和大小

7.2 交并比

  • 目標檢測任務中,IoU(Intersection over Union,交并比)是一個非常關鍵的評估指標,用于衡量模型預測的邊界框(Predicted Bounding Box)與真實邊界框(Ground Truth Bounding Box)之間的重合程度

  • IoU 的計算方式是兩個邊界框的交集面積除以它們的并集面積,公式如下:

  • IoU 計算公式圖形表示如下

  • IoU 值是介于 [0,1] 之間的,以下是對不同取值的一個說明:

IoU 值含義說明
IoU = 0兩個框完全不重合,預測框與真實框沒有任何交集
0 < IoU < 0.5有一定重合,但重合度較低,預測效果一般
0.5 ≤ IoU < 1重合度較高,預測框接近真實框,效果較好
IoU = 1完全重合,預測框與真實框完全一致,可能是理想情況或存在過擬合風險
  • 圖示:紅框是預測框,綠色框是真實框

7.3 置信度

  • 在目標檢測中,置信度是模型對預測框是否包含目標物體、以及框的位置是否準確的“信心值”,取值范圍 0 到 1 之間的數值

  • 在一些經典的目標檢測模型中(如 YOLO),置信度通常由兩個部分組成:置信度 = Pr(Object) × 預測的 IOU

    • Pr(Object)=1:邊界框內有對象

    • Pr(Object)=0:邊界框內沒有對象

  • 預測的 IoU:不是真實計算出來的,而是模型自己“估計”的,表示它認為這個框和真實框有多接近

  • 在深度學習的目標檢測任務中,置信度是由網絡的輸出層(通常包括卷積層、池化層和全連接層等)共同作用的結果

  • 在目標檢測任務中,通常涉及到三種類型的置信度:目標存在置信度、類別置信度、綜合置信度

類型含義
目標存在置信度表示當前預測框中存在目標物體的概率(不管是什么類別)
類別置信度表示當前框中的物體屬于某個類別的概率(如“貓”、“狗”、“人”等)
綜合置信度最終輸出的置信度,等于目標存在置信度 × 類別置信度
  • 總結:

階段置信度的計算方式說明
訓練階段 使用真實框(Ground Truth)計算 IoU模型通過對比預測框與真實框,學習如何提升置信度
預測階段模型無法訪問真實框,置信度完全由網絡直接輸出通過設置置信度閾值(如 0.5)過濾低質量預測框,再通過 NMS 去除重復框

7.4 混淆矩陣

  • 混淆矩陣是一種用于評估分類模型性能的表格形式,特別適用于監督學習中的分類任務。它通過將模型的預測結果與真實標簽進行對比,幫助我們直觀地理解模型在各個類別上的表現

  • 在混淆矩陣中:

    • 列(Columns):表示真實類別(True Labels)

    • 行(Rows):表示預測類別(Predicted Labels)

    • 單元格中的數值:表示在該真實類別與預測類別組合下的樣本數量

  • 在目標檢測任務中,混淆矩陣的構建依賴于 IoU 閾值,因為 IoU 決定了哪些預測被認為是“正確檢測”,從而影響 TP、FP、FN 的統計,最終影響混淆矩陣的結構和數值

實際為正類實際為負類
預測為正類TP(真正例)FP(假正例)
預測為負類FN(假反例)TN(真反例)

7.5 精確度和召回率

  • 精確度(Precision):在所有預測為正類的樣本中,預測正確的比例,也稱為查準率

  • 召回率(Recall):在所有實際為正類的樣本中,預測正確的比例,也稱為查全率

  • 準確度、精確度、召回率、F1 分數在機器學習中已經講過,定義和公式如下圖:

  • 混淆矩陣在目標檢測中的 TP、FP、FN、TN 的含義
類型定義通俗解釋示例
TP(True Positive) 真正例預測類別正確,且預測框與真實框的 IoU ≥ 閾值模型正確識別了目標,位置也大致準確模型預測這是一個“貓”,IoU=0.85,確實是一只貓
FP(False Positive) 假正例兩種情況: 1. 類別錯誤:預測類別錯誤,即使 IoU ≥ 閾值 2. 類別正確,但 IoU < 閾值模型誤以為檢測到了目標,但實際上錯了模型預測該物體為“貓”,且預測框與真實框的 IoU 為 0.4,但實際類別為“狗”;或者模型預測為“貓”,IoU 為 0.3,類別雖然正確,但定位精度未達到設定的閾值
FN(False Negative) 假反例真實存在目標,但模型沒有檢測出來模型漏掉了真實目標圖片里有一只貓,但模型沒檢測到
TN(True Negative) 真反例圖像背景區域被正確識別為“無目標”模型沒有把背景誤認為是目標圖像背景區域沒有預測框,模型正確識別為“無物體”

7.6 mAP

7.6.1 PR曲線

  • PR曲線,即精確率(Precision)- 召回率(Recall)曲線,是評估分類模型性能的重要工具之一,尤其是在類別不平衡問題中。它通過展示不同閾值下的精確率和召回率之間的關系,幫助我們理解模型在不同決策邊界上的表現

  • PR 曲線的生成過程:

    • 對于每個樣本,模型會輸出一個預測分數或置信度,表示該樣本屬于某一類別的概率

    • 設定多個置信度閾值:通常會設定一系列的置信度閾值,比如從 0 到 1,每隔 0.1 設置一個閾值,這些閾值將用于決定哪些預測被視為“正例”(Positive),哪些被視為“負例”(Negative)

    • 對于每一個閾值,根據預測分數與該閾值的比較結果,我們可以計算出當前閾值下的精確率(Precision)和召回率(Recall)

    • 將每個閾值下的精確率和召回率作為坐標點,繪制在二維平面上,橫軸為召回率,縱軸為精確率,從而形成一條曲線

7.6.2 AP

  • 在 PR 曲線中,曲線上每個點表示了在對應召回率下的最大精確率值。當 P=R 時成為平衡點(BEP),如果這個值較大,則說明學習器的性能較好。所以 PR 曲線越靠近右上角性能越好。即 PR 曲線的面積越大,表示分類模型在精確率和召回率之間有更好的權衡,性能越好

  • 常用的評估指標是 PR 曲線下的面積,即 AP(Average Precision),通過 PR 曲線下的面積來計算 AP,從而綜合評估模型在不同置信度閾值下的性能,值越接近 1 越好

  • 平均精度(Average Precision, AP)通過計算每個類別在不同置信度閾值下的 Precision(查準率)和 Recall(查全率)的平均值來綜合評估模型的性能。AP 被廣泛應用于評估模型在不同置信度閾值下的表現,并且是計算 mAP(平均平均精度)的基礎

  • AP 就是用來衡量一個訓練好的模型在識別每個類別時的表現好壞。AP 越高,說明模型在這個類別上的識別能力越強

7.6.3 AP計算

11 點插值法:只需要選取當 Recall >= 0, 0.1, 0.2, …, 1 共11個點,找到所有大于等于該 Recall 值的點,并選取這些點中最大的 Precision 值作為該 Recall 下的代表值,然后 AP 就是這 11 個 Precision 的平均值

面積法:需要針對每一個不同的Recall值(包括0和1),選取其大于等于這些 Recall 值時的 Precision 最大值,然后計算 PR 曲線下面積作為 AP 值,假設真實目標數為 M,recall 取樣間隔為 [0, 1/M, …, M/M],假設有 8 個目標,recall 取值 = [0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875, 1.0]

7.6.4? 繪制圖形

  • 繪制 PR 曲線,計算 AP 值

import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import precision_recall_curve, average_precision_score# 真實標簽,表示每個樣本的實際類別
y_true = np.array([1, 1, 0, 1, 0, 1, 0, 0, 1, 1])
# 模型預測的概率分數,表示每個樣本屬于正類的可能性
probas_pred = np.array([0.9, 0.8, 0.7, 0.6, 0.55, 0.54, 0.53, 0.52, 0.51, 0.50])
# 計算精確度和召回率
precision, recall, thresholds = precision_recall_curve(y_true=y_true, probas_pred=probas_pred)
# 計算平均精確度
AP = average_precision_score(y_true=y_true, y_score=probas_pred)
print("平均精確度:", AP)
# 繪制PR曲線
plt.figure(figsize=(8, 6))
plt.plot(recall, precision, marker='o', label='PR curve')
plt.xlabel('Recall')
plt.ylabel('Precision')
plt.title('Precision-Recall Curve')
plt.legend()
plt.grid(True)
plt.show()

運行結果:

7.6.5 mAP

  • 平均平均精度(mean Average Precision,mAP) 是在不同置信度閾值下計算的平均精確度(Average Precision, AP)的平均值AP 是在不同召回率水平下的精確度平均值,而 mAP 則是多個類別上的 AP 的平均值

名稱含義說明
AP(Average Precision)衡量模型在某一類別上的檢測或分類性能通過 Precision-Recall 曲線下的面積來計算,值越高表示模型在該類別上的性能越好
mAP(mean Average Precision)模型在所有類別上的 AP 的平均值衡量模型整體性能的綜合指標,值越高表示模型在所有類別上的平均表現越好
  • mAP 計算步驟:

    • 計算每個類別的 AP:對于數據集中包含的每個類別,分別計算 AP

    • 計算 mAP:將所有類別的 AP 取平均值,得到 mAP

8、NMS后處理

  • 非極大值抑制(Non-Maximum Suppression,NMS) 是目標檢測任務中常用的后處理技術,用于去除冗余的邊界框(Bounding Boxes),保留最有可能的檢測結果

  • 在目標檢測中,模型通常會對同一目標生成多個邊界框(預測框),這些邊界框之間可能高度重疊。NMS 的作用就是篩選出置信度高、位置準確的邊界框,抑制其他冗余的預測框

  • NMS 的基本思想是:對于每一個預測的類別,按照預測邊界框的置信度(Confidence Score)對所有邊界框進行排序,然后依次考慮每個邊界框,將其與之前的邊界框進行比較,如果重疊度過高,則丟棄當前邊界框,保留置信度更高的那個,對于每個類別會獨立進行操作

  • NMS 的步驟:

    • 設定目標框置信度閾值,常設置為 0.5,小于閾值的目標框被過濾掉

    • 將所有預測的滿足置信度范圍的邊界框按照它們的置信度從高到低排序

    • 選取置信度最高的框(不同類型分開處理)添加到輸出列表,并將其從候選框列表中刪除

    • 對于當前正在考慮的邊界框,計算其與前面已選定的邊界框的重疊程度(IoU),如果當前邊界框與已選定邊界框的 IoU 大于某個閾值(如 0.5),則將其抑制(即不保留,重合度過高);否則保留當前邊界框,并繼續處理下一個邊界框

    • 重復上述步驟,直到所有邊界框都被處理完畢

    • 輸出列表就是最后留下來的目標框

9、檢測速度

9.1前向傳播耗時

  • 前向傳播耗時是指從輸入圖像到輸出最終檢測結果所消耗的總時間(單位:毫秒 ms),包括以下三個階段:

    1. 前處理耗時(Preprocessing)

      • 圖像歸一化(如 0~255 → 0~1)

      • 圖像縮放、填充、通道轉換(如 BGR → RGB)

      • 張量格式轉換(如 NHWC → NCHW)

    2. 網絡前向傳播耗時(Forward Pass)

      • 模型推理過程,即從輸入圖像經過網絡各層計算得到輸出結果的時間

    3. 后處理耗時(Postprocessing)

      • 應用非極大值抑制(NMS)

      • 置信度過濾、類別篩選等

9.2 FPS

  • FPS(每秒幀數)是指模型每秒鐘可以處理的圖像幀數,是衡量實時性的重要指標,計算公式

  • 實時性要求:

    • 實時檢測:通常要求 FPS ≥ 30

    • 低延遲場景(如無人機、自動駕駛):要求 FPS ≥ 60

    • 移動端/嵌入式設備:常要求在 15~25 FPS 之間達到可用性

9.3 FLOPS

  • FLOPS(Floating Point Operations Per Second,每秒浮點運算次數)是衡量計算設備性能的一個重要指標,特別是在高性能計算和深度學習領域。它表示設備在一秒內可以執行的浮點運算次數

單位全稱中文含義數值表示
KFLOPSKilo FLOPS千次浮點運算每秒10^3FLOPS
MFLOPSMega FLOPS百萬次浮點運算每秒10^6FLOPS
GFLOPSGiga FLOPS(常用單位)十億次浮點運算每秒10^9FLOPS
TFLOPSTera FLOPS萬億次浮點運算每秒10^{12}FLOPS
PFLOPSPeta FLOPS千萬億次浮點運算每秒10^{15}FLOPS

10、YOLO整體網絡結構

  • YOLO(You Only Look Once)是一類單階段目標檢測器(One-stage Detector),其核心特點是速度快、端到端推理。其網絡結構通常由以下 三個主要模塊 組成:Backbone(主干網絡)、Neck(頸部網絡)、Detection Head(檢測頭)

  • 網絡結構圖:

  • 內部結構圖:

10.1 Backbone network

  • 描述:

    • Backbone network,即主干網絡(骨干網絡),目標檢測網絡最為核心的部分,主要是使用不同的卷積神經網絡構建

  • 任務:

    • 特征提取:從輸入圖像中提取特征信息,這些特征通常包含豐富的信息,能夠幫助后續模塊進行目標檢測

10.2 Neck network

  • 描述:

    • Neck network,即頸部網絡,主要對主干網絡輸出的特征進行整合

  • 任務:

    • 特征融合:將主干網絡提取的多尺度特征進行融合,以增強特征的表達能力和魯棒性

10.3 Detection head

  • 描述:

    • Detection head,即檢測頭,在特征之上進行預測,包括物體的類別和位置

  • 任務:

    • 目標檢測:檢測頭的主要任務是基于融合后的特征圖,通過回歸任務預測邊界框的坐標,通過分類任務預測目標的類別,生成最終的檢測結果,包括邊界框和類別

10.4 總結

  • YOLOV1-YOLOV4:學習掌握 YOLO 作者的涉及思路和優化方式【理論】

  • YOLOV5 和 YOLO11:學習掌握使用 YOLO 開源算法完成模型的訓練、應用、優化等【實踐】

ModelBackboneNeckHead
v1GoogLeNetNoneFC → 7×7×(2x5+20)
v2Darknet19Passthrough13×13×5×(5+20)
v3Darknet53FPN13×13×3×(5+80), 26×26×3×(5+80), 52×52×3×(5+80)
v4Darknet53_CSPSPP、FPN、PAN13×13×3×(5+80), 26×26×3×(5+80), 52×52×3×(5+80)
v5Darknet53_CSPSPP、cspFPN、cspPAN13×13×3×(5+80), 26×26×3×(5+80), 52×52×3×(5+80)

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

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

相關文章

Linux->動靜態庫

目錄 引入&#xff1a; 一&#xff1a;動靜態庫的介紹 1&#xff1a;庫的本質 2&#xff1a;庫的類別及優缺點 3&#xff1a;動態鏈接 4&#xff1a;靜態鏈接 二&#xff1a;頭文件和庫的查找 三&#xff1a;靜態庫的制作和使用 1&#xff1a;制作 2&#xff1a;指令打…

【LY88】雙系統指南及避坑

一. Windows重裝&#xff08;前提是Windows可正常使用&#xff0c;優點是無需U盤&#xff09; 1. PE工具和系統鏡像 機械師只只提供的資源鏈接 完成微PE工具的安裝并下載了系統鏡像之后&#xff0c;&#xff08;如果要裝ubuntu的話&#xff09;需確認磁盤分區格式和引導項。前…

Ubuntu22.04.1搭建php運行環境

步驟 1: 更新你的系統 首先&#xff0c;確保你的系統是最新的。打開終端并運行以下命令&#xff1a; sudo apt update sudo apt upgrade步驟 2: 安裝Apache Web服務器 使用Apache作為你的Web服務器。運行以下命令&#xff1a; sudo apt install apache2安裝完成后&#xff0c;你…

防止飛書重復回調通知分布式鎖

## 場景銷售訂單下&#xff0c;明細25明細款&#xff0c;發起飛書審批&#xff0c;飛書設置自動審核通過&#xff0c;導致會收到兩次審核通過通知加了分布式鎖 &#xff0c;仍導致執行業務執行兩遍了String lockKey "feihsu-approvalNotify:" instanceCode; RLock …

數據結構:下三角矩陣(Lower Triangular Matrix)

目錄 什么是下三角矩陣&#xff1f; 我們要存哪些元素&#xff1f;一共幾個&#xff1f; 推導索引映射公式 核心問題&#xff1a;給定 (i,j)&#xff0c;如何計算 k&#xff1f; 什么是下三角矩陣&#xff1f; 一個 n n 的矩陣&#xff0c;如果它在主對角線以上的所有元…

力扣209:長度最小的子數組

力扣209:長度最小的子數組題目思路代碼題目 給定一個含有 n 個正整數的數組和一個正整數 target 。 找出該數組中滿足其總和大于等于 target 的長度最小的 子數組 [numsl, numsl1, …, numsr-1, numsr] &#xff0c;并返回其長度。如果不存在符合條件的子數組&#xff0c;返回…

采購管理系統哪家性價比高?

在企業數字化轉型進程中&#xff0c;采購管理系統已成為降本增效的核心工具。但面對市場上五花八門的產品&#xff0c;“性價比” 成為企業選型時的關鍵考量 —— 既要功能貼合業務需求&#xff0c;又要成本可控&#xff0c;還需兼顧實施效率與長期擴展性。以下從性價比維度解析…

輕松打造Unity小游戲AR體驗

目錄 AR會話初始化 平面追蹤與相機定位 用戶交互處理 實時渲染 Unity 小游戲宿主現已支持 AR 功能&#xff0c;本文介紹如何從零開始創建一個可以在Unity小游戲宿主上運行的AR小游戲&#xff0c;歡迎大家試用&#xff01; 想為你的小游戲注入虛實交融的魔力嗎&#xff1f;…

IFCVF驅動+vhost-vfio提高虛擬機網絡性能

??IFCVF (Intel FPGA Virtual Function)?? 是 Intel 為其基于 FPGA 的智能網卡開發的 ??SR-IOV 虛擬功能驅動??,屬于 ??PF4 (Physical Function 4)?? 架構的一部分。它是專為高性能網絡虛擬化場景設計的硬件加速解決方案。 云計算智能網卡(soc)或DPU場景下,IFC…

Hook捕獲并攔截文件創建行為

需要用到minhook 先編譯DLL #include <Windows.h> #include <string> #include <TlHelp32.h> #include <Shlwapi.h>#include "MinHook.h" // 自動選擇正確的MinHook庫 #pragma comment(lib, "Shlwapi.lib") #if defined(_M_X64) …

圖像平滑處理

圖像平滑處理四種常用方式1. 均值濾波 (cv2.blur())2. 高斯濾波 (cv2.GaussianBlur())3. 中值濾波 (cv2.medianBlur())4、雙邊濾波 (cv2.bilateralFilter())總結存圖時遇到一個中文版亂碼問題四種常用方式 平滑處理&#xff08;也稱為模糊處理&#xff09;&#xff0c;用于減少…

fortigate的waf功能

在系統管理----可見功能----web應用防火墻打開waf功能Web 應用程序防火墻 &#xff08;WAF&#xff09; 配置文件可以檢測和阻止已知的 Web 應用程序攻擊。您可以將 WAF 配置文件配置為使用簽名和約束來檢查 Web 流量。您還可以強制實施 HTTP 方法策略&#xff0c;該策略控制與…

AI Compass前沿速覽:可靈創意工坊、字節Coze StudioCoze Loop、通義萬相2.2 、智譜GLM-4.5、騰訊混元3D世界模型開源

AI Compass前沿速覽&#xff1a;可靈創意工坊、字節Coze Studio&Coze Loop、通義萬相2.2 、智譜GLM-4.5、騰訊混元3D世界模型開源 AI-Compass 致力于構建最全面、最實用、最前沿的AI技術學習和實踐生態&#xff0c;通過六大核心模塊的系統化組織&#xff0c;為不同層次的學…

SpringCloud之Gateway

SpringCloud之Gateway 官網地址&#xff1a; https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/#gateway-request-predicates-factories 1. 什么是gateway Spring Cloud Gateway 是Spring Cloud官方推出的第二代網關框架&#xff0c;定位于取代 Net…

關于獲取某目錄及子目錄下所有文件且不包含隱藏文件

最近比較忙&#xff0c;很少寫blog了&#xff01;&#xff01;&#xff01;關于獲取目錄及子目錄下所有文件是常遇到的功能&#xff0c;一般通過遞歸遍歷實現。而生產場景中&#xff0c;一般是遍歷nas上的目錄&#xff0c;在nas上利用File.listFiles(),在linux系統上無法獲取含…

docker可視化管理工具lazydocker

Lazydocker 是一個用 Go 語言編寫的命令行 Docker 管理工具。它提供了一個簡潔、直觀的終端界面&#xff0c;支持鍵盤和鼠標操作&#xff0c;可通過方向鍵與快捷鍵實時查看和管理容器、鏡像、網絡等資源&#xff0c;大幅簡化了原本復雜的命令行操作&#xff0c;提升操作效率。2…

少林寺用什么數據庫?

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 作者&#xff1a;IT邦德 中國DBA聯盟(ACDU)成員&#xff0c;15年DBA工作經驗 Oracle、PostgreSQL ACE CSDN博客專家及B站知名UP主&#xff0c;全網粉絲15萬 擅長主流Oracle、MySQL、PG、高斯及…

C語言---萬能指針(void *)、查找子串(strncmp函數的應用)多維數組(一維數組指針、二維數組指針)、返回指針值函數、關鍵字(const)

一、字符串與指針用字符指針指向一個字符串&#xff0c;可以不定義字符數組&#xff0c;而定義字符指針。用字符指針指向字符串中的字符。不能使用指針去改變不能修改的空間。eg1. 運用指針將 src 的內容拷貝到 dest 中去void Strcpy(char *dest, char *src) {while(*src ! \0)…

Keepalived 實戰

一、高可用集群基礎核心概念與指標集群類型&#xff1a;LB&#xff08;負載均衡&#xff09;&#xff1a;如 LVS、HAProxy、Nginx&#xff0c;提升吞吐量&#xff1b;HA&#xff08;高可用&#xff09;&#xff1a;保障核心服務&#xff08;數據庫、Redis&#xff09;連續性&am…

窗口函數替代子查詢的復雜查詢簡化技巧

窗口函數通過單次掃描完成分析計算&#xff0c;能大幅簡化子查詢結構并提升性能&#xff0c;尤其在排名、累計計算等場景?15。以下是核心優化技巧&#xff1a;一、排名場景替代方案?部門工資排名?傳統子查詢需自連接和聚合計數&#xff1a;sqlSELECT e1.name, e1.salary, (S…