【目標檢測】評估指標詳解:Precision/Recall/F1-Score

🧑 博主簡介:曾任某智慧城市類企業算法總監,目前在美國市場的物流公司從事高級算法工程師一職,深耕人工智能領域,精通python數據挖掘、可視化、機器學習等,發表過AI相關的專利并多次在AI類比賽中獲獎。CSDN人工智能領域的優質創作者,提供AI相關的技術咨詢、項目開發和個性化解決方案等服務,如有需要請站內私信或者聯系任意文章底部的的VX名片(ID:xf982831907

💬 博主粉絲群介紹:① 群內初中生、高中生、本科生、研究生、博士生遍布,可互相學習,交流困惑。② 熱榜top10的常客也在群里,也有數不清的萬粉大佬,可以交流寫作技巧,上榜經驗,漲粉秘籍。③ 群內也有職場精英,大廠大佬,可交流技術、面試、找工作的經驗。④ 進群免費贈送寫作秘籍一份,助你由寫作小白晉升為創作大佬。⑤ 進群贈送CSDN評論防封腳本,送真活躍粉絲,助你提升文章熱度。有興趣的加文末聯系方式,備注自己的CSDN昵稱,拉你進群,互相學習共同進步。

在這里插入圖片描述

【目標檢測】評估指標詳解:Precision/Recall/F1-Score

    • 一、引言
    • 二、為什么需要評估指標?
    • 三、基礎概念:混淆矩陣
    • 四、核心指標解析
      • 4.1 精確率 (Precision):檢測的準確性
      • 4.2 召回率 (Recall):檢測的覆蓋率
      • 4.3 F1分數 (F1-Score):綜合平衡指標
    • 五、目標檢測中的特殊考量
      • 5.1 IoU (交并比)
      • 5.2 置信度閾值
    • 六、完整代碼實現
    • 七、代碼解析與輸出
      • 7.1 模擬數據生成
      • 7.2 評估指標計算
      • 7.3 典型輸出結果
      • 7.4 PR曲線分析
    • 八、評估指標關系圖解
      • 8.1 精確率-召回率平衡
      • 8.2 置信度閾值影響
      • 8.3 F1分數的平衡作用
    • 九、目標檢測中的高級指標
      • 9.1 AP (Average Precision)
      • 9.2 mAP (mean Average Precision)
      • 9.3 不同IoU閾值的mAP
    • 十、實際應用指南
      • 10.1 根據需求選擇指標
      • 10.2 模型調優策略
      • 10.3 指標提升技巧
    • 十一、總結

一、引言

??目標檢測模型的性能評估如同考試評分,需要精確衡量模型的能力。本文將用通俗易懂的方式解析三大核心評估指標:精確率(Precision)、召回率(Recall)和F1分數(F1-Score),并提供可運行的Python代碼。

二、為什么需要評估指標?

??目標檢測模型訓練完成后,我們需要回答關鍵問題:

  • 模型檢測的準確度如何?
  • 有多少真實物體被漏檢?
  • 模型產生了多少誤報?

??評估指標就是回答這些問題的"評分標準"。

三、基礎概念:混淆矩陣

??混淆矩陣是理解評估指標的基石:

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

??在目標檢測中:

  • TP (True Positive):正確檢測到的物體(IoU > 閾值)
  • FP (False Positive):誤報(檢測到不存在的物體)
  • FN (False Negative):漏檢(未檢測到真實物體)

四、核心指標解析

4.1 精確率 (Precision):檢測的準確性

精確率 = TP / (TP + FP)
  • 含義:模型預測的正例中有多少是真實的
  • 通俗理解:警察抓人時,抓對人(真正罪犯)的比例
  • 應用場景:對誤報敏感的任務(如醫療診斷)

4.2 召回率 (Recall):檢測的覆蓋率

召回率 = TP / (TP + FN)
  • 含義:實際的正例中有多少被檢測到
  • 通俗理解:所有罪犯中有多少被警察抓到
  • 應用場景:對漏檢敏感的任務(如安防監控)

4.3 F1分數 (F1-Score):綜合平衡指標

F1 = 2 × (Precision × Recall) / (Precision + Recall)
  • 含義:精確率和召回率的調和平均數
  • 通俗理解:平衡抓對人(精確率)和抓全人(召回率)的綜合評分
  • 特點:在精確率和召回率之間取得平衡

五、目標檢測中的特殊考量

5.1 IoU (交并比)

??目標檢測中,判斷檢測是否正確需要計算IoU:

IoU = 交集面積 / 并集面積

通常IoU ≥ 0.5才被認為是正確檢測(TP)

在這里插入圖片描述

5.2 置信度閾值

??每個檢測框都有置信度分數,影響評估結果:

  • 閾值越高:精確率↑,召回率↓
  • 閾值越低:精確率↓,召回率↑

六、完整代碼實現

import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import precision_recall_curve, average_precision_score# 1. 模擬真實數據和預測數據
def generate_sample_data(num_objects=50, detection_rate=0.8, false_positive_rate=0.3):"""生成模擬檢測數據"""# 真實物體 (每個物體用[x,y,w,h]表示)true_objects = np.random.rand(num_objects, 4) * 100# 正確檢測 (TP)num_detected = int(num_objects * detection_rate)true_positives = true_objects[:num_detected] + np.random.normal(0, 2, (num_detected, 4))tp_confidences = np.random.uniform(0.7, 0.95, num_detected)# 漏檢 (FN)false_negatives = true_objects[num_detected:]# 誤報 (FP)num_fp = int(num_objects * false_positive_rate)false_positives = np.random.rand(num_fp, 4) * 100fp_confidences = np.random.uniform(0.4, 0.7, num_fp)# 合并預測結果all_detections = np.vstack([true_positives, false_positives])all_confidences = np.concatenate([tp_confidences, fp_confidences])detection_types = ['TP'] * num_detected + ['FP'] * num_fp# 為每個檢測生成標簽 (1=TP, 0=FP)detection_labels = np.concatenate([np.ones(num_detected),  # TP標簽np.zeros(num_fp)        # FP標簽])return true_objects, all_detections, all_confidences, detection_types, detection_labels# 2. 計算IoU
def calculate_iou(boxA, boxB):"""計算兩個邊界框的交并比(IoU)"""# 提取坐標xA = max(boxA[0], boxB[0])yA = max(boxA[1], boxB[1])xB = min(boxA[0] + boxA[2], boxB[0] + boxB[2])yB = min(boxA[1] + boxA[3], boxB[1] + boxB[3])# 計算交集面積inter_area = max(0, xB - xA) * max(0, yB - yA)# 計算并集面積boxA_area = boxA[2] * boxA[3]boxB_area = boxB[2] * boxB[3]union_area = boxA_area + boxB_area - inter_area# 計算IoUiou = inter_area / union_area if union_area > 0 else 0return iou# 3. 計算評估指標
def calculate_metrics(true_objects, detections, confidences, iou_threshold=0.5):"""計算精確率、召回率、F1分數"""# 初始化結果num_true = len(true_objects)num_detections = len(detections)# 記錄匹配狀態matched_true = np.zeros(num_true, dtype=bool)matched_detections = np.zeros(num_detections, dtype=bool)# 遍歷所有檢測結果for i, det in enumerate(detections):for j, true_obj in enumerate(true_objects):iou = calculate_iou(det, true_obj)if iou >= iou_threshold and not matched_true[j]:matched_true[j] = Truematched_detections[i] = Truebreak# 計算基本指標TP = np.sum(matched_detections)FP = num_detections - TPFN = num_true - np.sum(matched_true)# 計算評估指標precision = TP / (TP + FP) if (TP + FP) > 0 else 0recall = TP / (TP + FN) if (TP + FN) > 0 else 0f1 = 2 * (precision * recall) / (precision + recall) if (precision + recall) > 0 else 0return precision, recall, f1, TP, FP, FN, matched_detections# 4. 繪制PR曲線
def plot_pr_curve(true_objects, detections, confidences, detection_labels):"""繪制精確率-召回率曲線"""# 計算不同置信度閾值下的指標thresholds = np.linspace(0, 1, 100)precisions = []recalls = []# 計算AP (平均精度) - 使用正確的標簽和置信度ap = average_precision_score(detection_labels, confidences)for thresh in thresholds:# 篩選高于閾值的檢測mask = confidences >= threshfiltered_detections = detections[mask]if len(filtered_detections) > 0:p, r, _, _, _, _, _ = calculate_metrics(true_objects, filtered_detections, confidences[mask])precisions.append(p)recalls.append(r)else:precisions.append(0)recalls.append(0)# 繪制曲線plt.figure(figsize=(10, 6))plt.plot(recalls, precisions, 'b-', linewidth=2, label='PR曲線')plt.fill_between(recalls, precisions, alpha=0.2, color='b')# 標記關鍵點plt.scatter(recalls[::10], precisions[::10], c='r', s=50, zorder=5, label=f'閾值點 (AP={ap:.3f})')plt.xlabel('召回率(Recall)')plt.ylabel('精確率(Precision)')plt.title('精確率-召回率曲線 (PR Curve)')plt.grid(True)plt.legend()plt.xlim([0, 1])plt.ylim([0, 1])plt.savefig('pr_curve.png', dpi=300)plt.show()return ap# 5. 可視化檢測結果
def visualize_detections(true_objects, detections, confidences, detection_types):"""可視化真實物體和檢測結果"""plt.figure(figsize=(12, 8))# 創建模擬圖像img = np.ones((100, 100, 3)) * 0.8# 繪制真實物體 (綠色)for obj in true_objects:x, y, w, h = objrect = plt.Rectangle((x, y), w, h, fill=False, edgecolor='g', linewidth=2, label='真實物體')plt.gca().add_patch(rect)# 繪制檢測結果for i, (det, conf, det_type) in enumerate(zip(detections, confidences, detection_types)):x, y, w, h = detcolor = 'b' if det_type == 'TP' else 'r'rect = plt.Rectangle((x, y), w, h, fill=False, edgecolor=color, linewidth=2, label=f'檢測({det_type})' if i == 0 else None)plt.gca().add_patch(rect)# 添加置信度標簽plt.text(x, y-5, f'{conf:.2f}', color=color, fontsize=9,bbox=dict(facecolor='white', alpha=0.7))# 設置圖像范圍plt.xlim(0, 100)plt.ylim(0, 100)plt.gca().invert_yaxis()  # 圖像坐標系plt.title('目標檢測結果可視化 (綠色:真實物體, 藍色:正確檢測, 紅色:誤報)')plt.legend()plt.grid(True)plt.savefig('detection_results.png', dpi=300)plt.show()# 6. 主程序
def main():# 生成模擬數據np.random.seed(42)true_objects, detections, confidences, detection_types, detection_labels = generate_sample_data(num_objects=20, detection_rate=0.7, false_positive_rate=0.2)# 計算評估指標precision, recall, f1, TP, FP, FN, matched_detections = calculate_metrics(true_objects, detections, confidences)# 打印結果print("="*50)print("目標檢測評估指標報告")print("="*50)print(f"真實物體數量: {len(true_objects)}")print(f"檢測結果數量: {len(detections)}")print(f"真正例(TP): {TP} (正確檢測)")print(f"假正例(FP): {FP} (誤報)")print(f"假反例(FN): {FN} (漏檢)")print("-"*50)print(f"精確率(Precision): {precision:.4f}")print(f"召回率(Recall): {recall:.4f}")print(f"F1分數(F1-Score): {f1:.4f}")print("="*50)# 可視化檢測結果print("可視化檢測結果...")visualize_detections(true_objects, detections, confidences, detection_types)# 繪制PR曲線print("繪制PR曲線...")ap = plot_pr_curve(true_objects, detections, confidences, detection_labels)print(f"平均精度(AP): {ap:.4f}")# 不同置信度閾值的影響print("\n不同置信度閾值對指標的影響:")thresholds = [0.2, 0.4, 0.6, 0.8]results = []for thresh in thresholds:mask = confidences >= threshfiltered_detections = detections[mask]p, r, f, _, _, _, _ = calculate_metrics(true_objects, filtered_detections, confidences[mask])results.append((thresh, p, r, f))# 打印表格print("閾值 | 精確率 | 召回率 | F1分數")print("-"*30)for thresh, p, r, f in results:print(f"{thresh:.1f}   | {p:.4f} | {r:.4f} | {f:.4f}")# 繪制指標變化曲線plt.figure(figsize=(10, 6))thresholds, precisions, recalls, f1s = zip(*results)plt.plot(thresholds, precisions, 'bo-', label='精確率')plt.plot(thresholds, recalls, 'ro-', label='召回率')plt.plot(thresholds, f1s, 'go-', label='F1分數')plt.xlabel('置信度閾值')plt.ylabel('指標值')plt.title('不同置信度閾值對評估指標的影響')plt.legend()plt.grid(True)plt.savefig('threshold_impact.png', dpi=300)plt.show()# F1分數的平衡作用演示print("\nF1分數的平衡作用演示:")scenarios = [("高精確率低召回率", 0.9, 0.3),("平衡", 0.7, 0.7),("低精確率高召回率", 0.3, 0.9)]for name, p, r in scenarios:f1 = 2 * p * r / (p + r) if (p + r) > 0 else 0print(f"{name}: Precision={p:.2f}, Recall={r:.2f}, F1={f1:.4f}")if __name__ == "__main__":main()

七、代碼解析與輸出

7.1 模擬數據生成

generate_sample_data 函數:
- 生成真實物體(綠色框)
- 生成正確檢測(TP,藍色框)
- 生成誤報檢測(FP,紅色框)
- 生成漏檢物體(FN)

在這里插入圖片描述

7.2 評估指標計算

calculate_metrics 函數:
1. 計算每個檢測框與真實框的IoU
2. 匹配IoU>0.5的檢測為TP
3. 計算:Precision = TP / (TP + FP)Recall = TP / (TP + FN)F1 = 2 × (P × R) / (P + R)

在這里插入圖片描述

7.3 典型輸出結果

在這里插入圖片描述

7.4 PR曲線分析

  • X軸:召回率(Recall)
  • Y軸:精確率(Precision)
  • 曲線下面積(AP):綜合性能指標

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

八、評估指標關系圖解

8.1 精確率-召回率平衡

高精確率場景:警察只抓確認的罪犯 → 抓得準但抓得少
高召回率場景:警察懷疑所有可疑人 → 抓得多但誤抓多
理想平衡點:F1分數最高處

8.2 置信度閾值影響

閾值提高 → 精確率↑ 召回率↓
閾值降低 → 精確率↓ 召回率↑

8.3 F1分數的平衡作用

場景1:Precision=0.9, Recall=0.3 → F1=0.45
場景2:Precision=0.7, Recall=0.7 → F1=0.70
場景3:Precision=0.3, Recall=0.9 → F1=0.45

九、目標檢測中的高級指標

9.1 AP (Average Precision)

AP = ∫ Precision(Recall) dRecall
  • PR曲線下面積
  • 綜合反映不同召回率下的精確率

9.2 mAP (mean Average Precision)

mAP = 所有類別AP的平均值
  • 多類別檢測的標準指標
  • COCO競賽的核心評估指標

9.3 不同IoU閾值的mAP

指標IoU閾值特點
mAP@0.50.50寬松標準
mAP@0.750.75嚴格標準
mAP@[.5:.95]0.5-0.95綜合性能

?? AP和mAP將在后面的文章做詳細的講解;

十、實際應用指南

10.1 根據需求選擇指標

  • 安全關鍵場景(自動駕駛):
    優先召回率:減少漏檢
    
  • 用戶體驗場景(相冊管理):
    優先精確率:減少誤報
    

10.2 模型調優策略

# 精確率低 → 減少誤報
1. 提高置信度閾值
2. 增加難負樣本訓練
3. 優化分類分支# 召回率低 → 減少漏檢
1. 降低置信度閾值
2. 增加錨框密度
3. 優化特征提取網絡

10.3 指標提升技巧

# 提升F1分數
if precision < recall:# 精確率是短板 → 減少FPmodel.focus_on_precision()
else:# 召回率是短板 → 減少FNmodel.focus_on_recall()

十一、總結

??三大評估指標是目標檢測的性能標尺:

  1. 精確率(Precision):衡量檢測的準確性

    • 公式:TP / (TP + FP)
    • 優化方向:減少誤報
  2. 召回率(Recall):衡量檢測的覆蓋率

    • 公式:TP / (TP + FN)
    • 優化方向:減少漏檢
  3. F1分數(F1-Score):綜合平衡指標

    • 公式:2 × (P × R) / (P + R)
    • 應用場景:需要平衡準確性和覆蓋率的任務

關鍵點回顧

  • 混淆矩陣是評估基礎:TP/FP/FN
  • IoU閾值決定檢測是否有效(通常0.5)
  • PR曲線展示不同閾值下的性能
  • F1分數是精確率和召回率的調和平均
  • 實際應用中需根據場景需求選擇優化方向

??掌握這些評估指標,你就能科學評估目標檢測模型的性能,針對性地優化模型,構建更精準、更可靠的檢測系統!

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

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

相關文章

【unity游戲開發——網絡】網絡協議、TCP vs UDP 本質區別

注意&#xff1a;考慮到熱更新的內容比較多&#xff0c;我將熱更新的內容分開&#xff0c;并全部整合放在【unity游戲開發——網絡】專欄里&#xff0c;感興趣的小伙伴可以前往逐一查看學習。 文章目錄 一、網絡協議概述二、OSI七層模型三、TCP/IP四層模型四、核心傳輸協議對比…

Spark Streaming 與 Flink 實時數據處理方案對比與選型指南

Spark Streaming 與 Flink 實時數據處理方案對比與選型指南 實時數據處理在互聯網、電商、物流、金融等領域均有大量應用&#xff0c;面對海量流式數據&#xff0c;Spark Streaming 和 Flink 成為兩大主流開源引擎。本文基于生產環境需求&#xff0c;從整體架構、編程模型、容…

鴻蒙HarmonyOS 5小游戲實踐:記憶翻牌(附:源代碼)

記憶翻牌游戲是一款經典的益智游戲&#xff0c;它能有效鍛煉玩家的記憶力和觀察能力。本文將詳細介紹如何使用鴻蒙&#xff08;HarmonyOS&#xff09;的ArkUI框架開發一款完整的記憶翻牌游戲&#xff0c;涵蓋游戲設計、核心邏輯實現和界面構建的全過程。 游戲設計概述 記憶翻牌…

【Linux庖丁解牛】— 文件系統!

1 引?"塊"概念 其實硬盤是典型的“塊”設備&#xff0c;操作系統讀取硬盤數據的時候&#xff0c;其實是不會?個個扇區地讀取&#xff0c;這樣 效率太低&#xff0c;?是?次性連續讀取多個扇區&#xff0c;即?次性讀取?個”塊”&#xff08;block&#xff09;。…

如何通過自動化減少重復性工作

通過自動化減少重復性工作的關鍵策略包括&#xff1a;1、識別可被規則化操作的任務、2、引入RPA&#xff08;機器人流程自動化&#xff09;工具、3、整合AI與業務流程系統、4、部署腳本與低代碼平臺、5、持續優化自動化場景與效率。 其中&#xff0c;“引入RPA工具”被廣泛認為…

知識變現全鏈路設計:從IP打造到商業閉環的系統方法論|創客匠人

一、變現低效根源&#xff1a;碎片化努力為何換不來持續增長&#xff1f; 創客匠人服務上千位知識創業者后發現&#xff0c;變現乏力多因缺乏系統設計&#xff1a;某營銷專家的課程因定位模糊、表達生硬、渠道單一&#xff0c;低價仍少有人問。文檔中提出的“六大超級設計公式…

如何利用人工智能大模型提升流量質量

摘要 流量質量是衡量數字化營銷效果的重要指標之一&#xff0c;它反映了用戶對網站或應用的興趣和滿意度。流量質量的常用評估方法有點擊率、跳出率和用戶停留時間等。本文將介紹如何利用人工智能大模型來分析和優化這些指標&#xff0c;提高流量質量&#xff0c;從而提升數字…

從單體架構到微服務:微服務架構演進與實踐

一、單體架構的困境與演進 &#xff08;一&#xff09;單體應用的初始優勢與演進路徑 在系統發展的初期&#xff0c;單體架構憑借其簡單性和開發效率成為首選。單體應用將整個系統的所有功能模塊整合在一個項目中&#xff0c;以單一進程的方式運行&#xff0c;特別適合小型系…

Elasticsearch 自定義排序:使用 Painless 腳本實現復雜排序邏輯

需求背景&#xff1a; 從es查詢數據出來的時候&#xff0c;要求type為CATALOG的數據排在最前面&#xff0c;也就是目錄類型的要放在最前面&#xff0c;而且要求按照層級排序&#xff0c;從L1到L5順序排序 直接上解法&#xff1a; {//查詢條件"query": {"bool…

華為云Flexus+DeepSeek征文|華為云數字人 + DeepSeek:智能交互的革命性突破

目錄 前言 關于華為云數字人和云服務 1、華為云數字人 &#xff08;1&#xff09;MetaStudio介紹 &#xff08;2&#xff09;應用場景 &#xff08;3&#xff09;功能特性 &#xff08;4&#xff09;使用體驗 2、華為云云服務 華為云數字人結合DeepSeek的核心流程 1、…

【GESP】C++四級練習 luogu-P5729 【深基5.例7】工藝品制作

GESP C四級練習&#xff0c;二維/多維數組練習&#xff0c;難度★★☆☆☆。 題目題解詳見&#xff1a;【GESP】C四級練習 luogu-P5729 【深基5.例7】工藝品制作 | OneCoder 【GESP】C四級練習 luogu-P5729 【深基5.例7】工藝品制作 | OneCoderGESP C四級練習&#xff0c;二維…

通過npm install -g yarn安裝Yarn顯示Proxy代理相關問題如何解決?

手動下載yarn.msi安裝包或者yarn.js文件 參考&#xff1a;windows 怎么下載yarn安裝包并將下載的yarn文件移動到全局目錄并添加執行權限&#xff1f;-CSDN博客

arm交叉編譯qt應用中含opengl問題解決

問題是采用正點原子方案中&#xff0c;用虛擬機交叉編譯含opengl的qt程序會出現編譯失敗問題&#xff0c;因為正點原子中的交叉編譯qt源碼時沒有編opengl。 野火似乎有解決&#xff1a; https://doc.embedfire.com/linux/rk356x/Qt/zh/latest/lubancat_qt/install/install_arm…

服務器排查與加固服務詳細介紹

一、服務概述 服務器排查與加固服務是針對企業核心信息資產&#xff08;服務器&#xff09;的全方位安全保障方案&#xff0c;旨在通過系統性排查潛在風險、修復漏洞、優化配置&#xff0c;提升服務器抗攻擊能力&#xff0c;確保業務連續性和數據安全性。該服務覆蓋硬件、操作…

提升開發思維的設計模式(下)

上期回顧 提升開發思維的設計模式&#xff08;上&#xff09; 2. 設計模式分類&#xff08;23種設計模式&#xff09; 2.13 組合模式&#xff08;Composite Pattern&#xff09; 將對象組合成樹形結構&#xff0c;以表示“整體-部分”的層次結構。 通過對象的多態表現&#…

h5學習筆記:前端打包

這2天做了一個實驗。在非module傳統的網頁&#xff0c;要實現改名和避免緩存。原本這個事情早在幾年前就做過借助gulp的方式或者fis3 的工具來完成。然而隨著nodejs 來到了24版本后&#xff0c;似乎nodejs的版本這事情就變動復雜多變了。 為什么那么麻煩&#xff1f;實際上開發…

14.OCR字符識別

目錄 1. 識別方法 1. OCR識別 2. OCR識別方法1-助手識別 3. OCR識別方法2-算子分割識別 4.文本分割識別 2. 文本分割 1. 借用助手設置參數文本分割+混合識別 2. 借用助手設置參數文本分割場景2 3.不同字符場景 1.傾斜字符 1. 識別方法 1. OCR識別 *OCR *1. 概念 * …

如果將Word里每頁的行數設置成50行

https://www.zhihu.com/question/357856175 本文來自知乎林聽晴 第一步&#xff1a;新建一個Word文檔 打開“頁面布局”&#xff0c;之后點擊圖片圈起來的小圖標&#xff0c;即可出現“頁面設置”頁面。 ? ? 路徑&#xff1a;頁面設置—文檔網絡&#xff0c;可以看到默認行…

WebRTC(十一):RTCP和SRTCP

RTCP 基本概念 RTCP 是 RTP 的控制協議&#xff0c;用于監控媒體傳輸質量和參與者狀態&#xff0c;并與 RTP 一起工作。RTP 用于傳輸媒體數據&#xff08;如音視頻&#xff09;&#xff0c;RTCP 則用于傳輸控制信息。 RTCP 通常和 RTP 同時使用&#xff0c;并通過 不同端口&…

將element-plus table背景改成透明色

方法一:全局修改(推薦) /* 全局透明表格樣式 */ .el-table, .el-table__header-wrapper, .el-table__body-wrapper, .el-table__row {background-color: transparent !important; }/* 可選:自定義表頭和斑馬紋行的透明度 */ .el-table__header th {background-color: rgba(…