OpenCV 與深度學習:從圖像分類到目標檢測技術


一、深度學習:從 “人工設計” 到 “自動學習”

1.1 深度學習的定位:AI、機器學習與深度學習的關系

  • 人工智能(AI):是一個寬泛的領域,目標是構建能模擬人類智能的系統,涵蓋推理、感知、決策等能力。
  • 機器學習(ML):是實現 AI 的核心方法,通過算法讓系統從數據中學習規律,而非依賴硬編碼規則。例如,傳統機器學習需人工設計特征(如 SIFT 特征用于圖像匹配),再通過分類器(如 SVM)完成任務。
  • 深度學習(DL):是機器學習的子集,基于人工神經網絡實現自動特征提取。與傳統 ML 不同,深度學習無需人工設計特征,而是通過多層網絡從原始數據中逐層學習高階特征(如從像素→邊緣→紋理→物體部件→完整物體)。

三者關系可概括為:AI 是目標,ML 是路徑,DL 是 ML 的進階工具

1.2 深度學習的核心優勢:自動特征提取

傳統機器學習的瓶頸在于特征工程—— 依賴領域專家手工設計特征(如用 “顏色直方圖 + HOG 特征” 描述車輛),當數據復雜或場景變化時,特征魯棒性極差。而深度學習通過層級特征學習突破這一限制:

  • 以圖像為例,淺層網絡學習邊緣、紋理等基礎特征;
  • 中層網絡組合基礎特征形成部件(如車輪、車窗);
  • 深層網絡進一步抽象為完整物體(如汽車、行人)。

這種 “端到端” 的學習模式,使其在圖像、語音、文本等復雜數據上表現遠超傳統方法。

1.3 主流深度學習框架與 OpenCV 的協同

深度學習框架簡化了模型構建與訓練流程,而 OpenCV 的dnn模塊則專注于模型部署,二者形成 “訓練 - 部署” 閉環。主流框架包括:

框架開發者核心優勢與 OpenCV 適配性
TensorFlowGoogle生態完善,支持分布式訓練支持 TensorFlow 模型直接加載
PyTorchMeta動態計算圖,調試便捷通過 ONNX 格式間接支持(推薦)
ONNX Runtime微軟 + 社區跨框架兼容,推理高效OpenCV 原生支持 ONNX 模型
飛槳(PaddlePaddle)百度中文文檔豐富,產業級工具鏈支持 Paddle 模型導出為 ONNX 后加載

OpenCV 的dnn模塊支持直接讀取 ONNX、TensorFlow、Caffe 等格式模型,無需依賴原訓練框架,特別適合邊緣設備部署(如嵌入式系統、移動端)。

二、神經網絡:深度學習的 “基石”

2.1 神經網絡的生物學啟發

人工神經網絡(ANN)靈感源自人腦神經元的連接機制:

  • 生物神經元:通過突觸接收信號,整合后傳遞給其他神經元;
  • 人工神經元:輸入信號經加權求和后,通過激活函數產生輸出(模擬神經元 “興奮 / 抑制” 狀態)。

2.2 神經網絡的核心結構

  • 輸入層:接收原始數據(如圖像的像素值),神經元數量等于輸入特征維度(如 224×224×3 的圖像對應 150528 個神經元)。
  • 隱藏層:位于輸入層與輸出層之間,負責特征提取。層數(深度)和神經元數量是關鍵超參數(如 ResNet50 有 50 層隱藏層)。
  • 輸出層:輸出預測結果,神經元數量等于任務維度(如 10 類分類對應 10 個神經元,輸出概率分布)。

2.3 神經網絡的訓練

訓練的目標是通過調整權重w和偏置b,使模型預測值接近真實標簽。核心流程包括:

  1. 前向傳播:輸入數據經網絡計算得到預測值,通過損失函數(如交叉熵)計算與真實標簽的誤差。
  2. 反向傳播:基于鏈式法則,從輸出層反向計算各權重對損失的梯度(影響程度)。
  3. 參數更新:通過優化器(如 Adam、SGD)根據梯度調整權重,降低損失

經過多輪迭代(Epoch),模型逐漸收斂,最終具備對新數據的泛化能力。

2.4 主流神經網絡架構及其應用

神經網絡的架構設計需適配任務特性,典型架構包括:

  • 卷積神經網絡(CNN):通過卷積層(局部感知 + 權值共享)、池化層(降維)處理網格數據(如圖像),是圖像分類、目標檢測的核心架構(如 VGG、ResNet)。
  • 循環神經網絡(RNN):通過時序記憶處理序列數據(如文本、語音),LSTM、GRU 變體解決了長序列梯度消失問題,用于機器翻譯、語音識別。
  • Transformer:基于自注意力機制,并行處理序列數據,在 NLP(如 BERT)和計算機視覺(如 Vision Transformer)中全面替代 RNN。
  • 生成對抗網絡(GAN):由生成器(造 “假數據”)和判別器(辨 “真假”)對抗訓練,用于圖像生成(如 Stable Diffusion)、數據增強。

三、圖像分類:讓機器 “識別” 圖像內容

3.1 圖像分類的定義與核心流程

圖像分類是計算機視覺的基礎任務:給定一張圖像,輸出其對應的類別標簽(如 “貓”“狗”“汽車”)。核心流程括:

  1. 數據輸入:圖像以像素矩陣形式輸入(如 256×256×3 的 RGB 圖像,含 3 個顏色通道)。
  2. 特征提取:通過模型(如 CNN)自動提取關鍵特征(如貓的尖耳朵、狗的毛發紋理)。
  3. 分類決策:基于特征匹配到預定義類別,輸出標簽及置信度(如 “貓,98%”)。

3.2 經典數據集:模型訓練的 “基石”

數據集的規模與質量直接決定模型性能,主流圖像分類數據集包括:

數據集類別數樣本量特點典型應用
MNIST10(手寫數字)7 萬28×28 灰度圖,入門級數字識別教學
CIFAR-10/10010/1006 萬 / 6 萬32×32 彩色圖,小樣本輕量級模型測試
ImageNet10001400 萬高分辨率,覆蓋日常物體模型性能基準(如 ResNet、EfficientNet)
Food-101101(美食)10 萬細粒度分類,背景復雜餐飲行業商品識別
CheXpert14(疾病)22 萬醫療影像,標簽模糊肺炎、肺癌輔助診斷

數據集劃分:通常分為訓練集(模型學習)、驗證集(超參數調優)、測試集(性能評估),比例常見為 7:1:2。

3.3 基于 OpenCV 的圖像分類實現:預訓練模型的應用

訓練一個高精度分類模型需海量數據和算力,實際應用中多采用遷移學習—— 基于預訓練模型(如在 ImageNet 上訓練的 ResNet、MobileNet)微調。OpenCV 的dnn模塊支持直接加載預訓練模型,步驟如下:

  1. 模型與標簽加載:讀取 ONNX 格式的預訓練模型(如 MobileNetV2)和類別標簽文件(如 ImageNet 的 1000 類標簽)。
  2. 圖像預處理:通過blobFromImage調整圖像尺寸(如 224×224)、歸一化(像素值縮放到 [0,1])、通道轉換(BGR→RGB,適配模型訓練格式)。
  3. 推理與結果解析:模型前向傳播得到預測概率,取最大值對應的類別為結果。

示例代碼核心片段

void imageGategorizeTest(Mat &src)
{// 1.加載模型文件String modelTxt = "./MobileNetSSD_deploy.prototxt";String modelBin = "./MobileNetSSD_deploy.caffemodel";dnn::Net net = dnn::readNetFromCaffe(modelTxt, modelBin);if (net.empty()){cout << "模型加載失敗" << endl;return;}// 2.加載標簽文件vector<String> labels;String labelsFile = "./MobileNetSSD_deploy.txt";ifstream ifs(labelsFile.c_str());if (!ifs.is_open()){cout << "標簽文件加載失敗" << endl;return;}// 3.對本次需要圖像分類的圖片做預處理// 將圖片轉成像素值在0-1之間,大小32*32Mat blob = dnn::blobFromImage(src, 1.0, Size(32, 32), Scalar(127.5, 127.5, 127.5), true, false);// 4.將圖片輸入到模型中進行前向傳播net.setInput(blob);// 5.獲取模型輸出結果Mat output = net.forward();// 6.解析輸出結果// 7.將結果顯示在圖片上
}

3.4 圖像分類的挑戰與進階方向

  • 小樣本學習:在數據稀缺場景(如稀有物種識別),通過元學習(Meta-Learning)、數據增強(如 Mixup、CutMix)提升性能。
  • 細粒度分類:區分同類別的細微差異(如不同品種的狗),需結合注意力機制聚焦關鍵特征(如毛色、體型)。
  • 零樣本學習:識別訓練中未見過的類別,通過語義嵌入(如將 “類別名” 與 “圖像特征” 映射到同一空間)實現跨類別遷移。

四、目標檢測:讓機器 “定位并識別” 多目標

4.1 目標檢測與圖像分類的差異

圖像分類僅輸出圖像的整體標簽,而目標檢測需同時完成:

  • 定位:用邊界框(Bounding Box)標記圖像中所有目標的位置;
  • 分類:為每個邊界框分配類別標簽。

例如,在一張街景圖中,目標檢測需輸出 “行人(x1,y1,x2,y2)”“汽車(x3,y3,x4,y4)” 等結果,是自動駕駛、安防監控的核心技術。

4.2 目標檢測的評價指標

  • IoU(交并比):衡量預測框與真實框的重疊程度,計算公式為\(IoU = \frac{預測框 \cap 真實框}{預測框 \cup 真實框}\),通常以 IoU≥0.5 作為 “檢測正確” 的閾值。
  • Precision(精確率):預測為正例的樣本中,真正例的比例(\(\text{Precision} = \frac{TP}{TP+FP}\)),反映 “少誤判” 能力。
  • Recall(召回率):所有正例中被正確預測的比例(\(\text{Recall} = \frac{TP}{TP+FN}\)),反映 “少漏判” 能力。
  • mAP(平均精度均值):對每個類別計算 P-R 曲線下面積(AP),再取均值,是衡量整體性能的核心指標。
  • FPS(每秒幀率):反映模型推理速度,實時場景需≥24 FPS。

4.3 目標檢測算法分類:單階段與兩階段

兩階段檢測算法(Two-Stage)

先生成候選區域(可能含目標的區域),再分類 + 回歸邊界框,精度高但速度慢。

  • 代表算法:R-CNN(候選區 + CNN 分類)→ Fast R-CNN(共享特征提取)→ Faster R-CNN(用 RPN 生成候選區,端到端訓練)。
  • 優勢:定位精準,小目標檢測性能好;
  • 劣勢:步驟復雜,速度難以滿足實時需求(如 Faster R-CNN 在 GPU 上約 5 FPS)。
單階段檢測算法(One-Stage)

直接從圖像中回歸類別與邊界框,速度快但精度略低,適合實時場景。

  • 代表算法:YOLO(You Only Look Once)、SSD(Single Shot MultiBox Detector)。
  • 核心思想:通過預設錨框(Anchor Box)覆蓋圖像,同時預測錨框的類別概率與位置偏移。

4.4 YOLO 算法:單階段檢測的標桿

YOLO 以 “速度快、易部署” 著稱,從 v1 到 v8 持續優化,成為工業界首選方案。

YOLOv1:單階段檢測的開創者
  • 核心設計:將圖像劃分為 7×7 網格,每個網格預測 2 個邊界框(含中心坐標、寬高、置信度)和 20 類概率,共輸出 7×7×30 的張量。
  • 優勢:速度遠超兩階段算法(GPU 上 45 FPS);
  • 劣勢:小目標、密集目標檢測效果差,定位精度低。
YOLOv3:經典版本的平衡之道
  • 核心改進
    • 采用 Darknet-53 主干網絡,增強特征提取能力;
    • 多尺度預測(從 3 個不同分辨率特征圖檢測,適配不同大小目標);
    • 更豐富的錨框設計(9 種尺寸,覆蓋多樣目標)。
  • 性能:在 COCO 數據集上 mAP 達 57.9%,速度 32 FPS,實現精度與速度的平衡。
YOLOv5:工程化優化的典范
  • 核心改進
    • 基于 PyTorch 實現,支持自動錨框計算、超參數優化;
    • 引入 CSP 結構(跨階段局部網絡),減少計算量;
    • 支持多尺度訓練(640×640、1280×1280),提升小目標檢測能力。
  • 優勢:易用性強,模型輕量化(如 YOLOv5s 在 CPU 上可實時推理),社區支持完善。
YOLOv8:最新升級
  • 引入無錨框(Anchor-Free)設計,動態適配目標形狀;
  • 采用 C2f 模塊增強特征融合,mAP 較 v5 提升 3%+;
  • 支持分類、檢測、分割多任務,部署更靈活。

4.5 基于 OpenCV 的 YOLO 部署

以 YOLOv5 為例,部署步驟如下:

  1. 模型導出:將 PyTorch 訓練的.pt模型導出為 ONNX 格式(python export.py --weights yolov5s.pt --include onnx)。
  2. 圖像預處理:縮放至 640×640,歸一化(像素值 / 255),轉換為 RGB 格式。
  3. 推理與后處理:模型輸出含類別概率、邊界框坐標的張量,通過非極大值抑制(NMS)過濾冗余框,保留高置信度結果。

效果展示:輸入一張街景圖,YOLOv5 可實時檢測出行人、車輛、交通燈等目標,并標記邊界框與類別(如 “person: 0.98”“car: 0.95”)。

// 2. YOLO算法
void yoloDetect(Mat &src)
{// 1. 加載 YOLOv3 模型和配置文件String modelCfg = "./yolov3.cfg";String modelWeights = "./yolov3.weights";dnn::Net net = dnn::readNetFromDarknet(modelCfg, modelWeights);// 2. 加載類別標簽vector<String> classNames;ifstream ifs("./coco.names");String line;while (getline(ifs, line))classNames.push_back(line);// 3. 創建輸入 blobMat blob = dnn::blobFromImage(src, 1 / 255.0, Size(416, 416), Scalar(), true, false);net.setInput(blob);// 4. 獲取輸出層名稱vector<String> outNames = net.getUnconnectedOutLayersNames();vector<Mat> outs;net.forward(outs, outNames);// 5. 解析輸出,繪制檢測框float confThreshold = 0.5;float nmsThreshold = 0.4;vector<int> classIds;vector<float> confidences;vector<Rect> boxes;for (size_t i = 0; i < outs.size(); ++i){float *data = (float *)outs[i].data;for (int j = 0; j < outs[i].rows; ++j, data += outs[i].cols){Mat scores = outs[i].row(j).colRange(5, outs[i].cols);Point classIdPoint;double confidence;minMaxLoc(scores, 0, &confidence, 0, &classIdPoint);if (confidence > confThreshold){int centerX = (int)(data[0] * src.cols);int centerY = (int)(data[1] * src.rows);int width = (int)(data[2] * src.cols);int height = (int)(data[3] * src.rows);int left = centerX - width / 2;int top = centerY - height / 2;classIds.push_back(classIdPoint.x);confidences.push_back((float)confidence);boxes.push_back(Rect(left, top, width, height));}}}// 非極大值抑制vector<int> indices;dnn::NMSBoxes(boxes, confidences, confThreshold, nmsThreshold, indices);for (size_t i = 0; i < indices.size(); ++i){int idx = indices[i];Rect box = boxes[idx];rectangle(src, box, Scalar(0, 255, 0), 2);String label = format("%.2f", confidences[idx]);if (!classNames.empty()){label = classNames[classIds[idx]] + ":" + label;}putText(src, label, Point(box.x, box.y - 5), FONT_HERSHEY_SIMPLEX, 0.5, Scalar(0, 255, 0), 1);}imshow("YOLO檢測結果", src);
}

?

五、應用場景與未來趨勢

典型應用場景

  • 自動駕駛:實時檢測行人、車輛、交通標志,為決策系統提供環境信息(如特斯拉 FSD 采用類似 YOLO 的檢測算法)。
  • 安防監控:通過目標檢測 + 跟蹤,實現異常行為預警(如打架、闖入禁區)。
  • 醫療影像:檢測 CT、X 光中的病灶(如肺結節、腫瘤),輔助醫生提高診斷效率。
  • 零售電商:無人超市中商品識別、顧客行為分析,優化貨架陳列與庫存管理。

未來趨勢

  • 輕量化模型:通過模型壓縮(如剪枝、量化)、專用架構(如 MobileNet、ShuffleNet)適配邊緣設備(如手機、攝像頭)。
  • 多模態融合:結合視覺、文本、語音數據(如 “圖像 + 描述” 聯合檢測),提升復雜場景魯棒性。
  • 自監督學習:減少對標注數據的依賴,通過無標簽數據預訓練(如 MAE、SimCLR),降低落地成本。

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

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

相關文章

Docker 鏡像推送至 Coding 制品倉庫超時問題排查與解決

Docker 鏡像推送至 Coding 制品倉庫超時問題排查與解決 在將 Docker 鏡像推送至 Coding 的制品倉庫時&#xff0c;可能會遇到 docker push 命令超時失敗的問題。但使用 curl -i http://xxx.coding.xxxx.xx 測試時&#xff0c;連接卻能成功建立。以下是排查過程及解決方案。 問題…

https交互原理

Https 交互時序圖&#xff1a;HTTPS 通信中結合 RSA 和 AES 加密的流程&#xff0c;本質是利用 RSA 的安全特性交換 AES 密鑰&#xff0c;再用高效的 AES 加密實際數據傳輸。HTTPS 交互核心流程&#xff08;TLS/SSL 握手&#xff09; 1. 建立 TCP 連接 客戶端通過 TCP 三次握手…

LSTM入門案例(時間序列預測)| pytorch實現

需求 假如我有一個時間序列&#xff0c;例如是前113天的價格數據&#xff08;訓練集&#xff09;&#xff0c;然后我希望借此預測后30天的數據&#xff08;測試集&#xff09;&#xff0c;實際上這143天的價格數據都已經有了。這里為了簡單&#xff0c;每一天的數據只有一個價…

WPS、Word加載項開發流程(免費最簡版本)

文章目錄1 加載項對比2 WPS 加載項2.1 本地開發2.1.1 準備開發環境2.1.2 新建 WPS 加載項項目2.1.3 運行項目2.2 在線部署2.2.1 編譯項目2.2.2 部署項目2.2.3 生成分發文件2.2.4 部署分發文件2.3 安裝加載項2.4 取消發布3 Word 加載項3.1 本地開發3.1.1 準備開發環境3.1.2 新建…

Flink SQL 性能優化實戰

最近我們組在大規模上線Flink SQL作業。首先&#xff0c;在進行跑批量初始化完歷史數據后&#xff0c;剩下的就是消費Kafka歷史數據進行追數了。但是發現某些作業的追數過程十分緩慢&#xff0c;要運行一晚上甚至三四天才能追上最新數據。由于是實時數倉指標計算上線初期&#…

HTML 樹結構(DOM)深入講解教程

一、HTML 樹結構的核心概念 1.1 DOM&#xff08;文檔對象模型&#xff09;的定義 DOM&#xff08;Document Object Model&#xff09;是 W3C 制定的標準接口&#xff0c;允許程序或腳本&#xff08;如 JavaScript&#xff09;動態訪問和更新 HTML/XML 文檔的內容、結構和樣式。…

用鼠標點擊終端窗口的時候出現:0;61;50M0;61;50M0;62;50M0

在做aws webrtc viewer拉流壓測的過程中&#xff0c;我本地打開了多個終端&#xff0c;用于連接EC2實例&#xff1a; 一個終端用于啟動 ‘并發master腳本’、監控master端的cpu、mem&#xff1b;一個終端用于監控master端的帶寬情況&#xff1b;一個終端用于監控viewer端的cpu、…

C++-linux 5.gdb調試工具

GDB調試工具 在C/C開發中&#xff0c;程序運行時的錯誤往往比編譯錯誤更難定位。GDB&#xff08;GNU Debugger&#xff09;是Linux環境下最強大的程序調試工具&#xff0c;能夠幫助開發者追蹤程序執行流程、查看變量狀態、定位內存錯誤等。本章將從基礎到進階&#xff0c;全面講…

Update~Read PLC for Chart ~ Log By Shift To be... Alarm AI Machine Learning

上圖~ 持續迭代 1、增加報警彈窗,具體到哪個值,雙邊規格具體是多少 2、實時顯示當前值的統計特征,Max Min AVG ... import tkinter as tk from tkinter import simpledialog import time import threading import queue import logging from datetime import datet…

es的自定義詞典和停用詞

在 Elasticsearch 中&#xff0c;自定義詞典是優化分詞效果的核心手段&#xff0c;尤其適用于中文或專業領域的文本處理。以下是關于 ES 自定義詞典的完整指南&#xff1a; 為什么需要自定義詞典&#xff1f; 默認分詞不足&#xff1a; ES 自帶的分詞器&#xff08;如 Standard…

微算法科技技術突破:用于前饋神經網絡的量子算法技術助力神經網絡變革

隨著量子計算和機器學習的迅猛發展&#xff0c;企業界正逐步邁向融合這兩大領域的新時代。在這一背景下&#xff0c;微算法科技&#xff08;NASDAQ:MLGO&#xff09;成功研發出一套用于前饋神經網絡的量子算法&#xff0c;突破了傳統神經網絡在訓練和評估中的性能瓶頸。這一創新…

一文讀懂循環神經網絡(RNN)—語言模型+讀取長序列數據(2)

目錄 讀取長序列數據 為什么需要 “讀取長序列數據”&#xff1f; 讀取長序列數據的核心方法 1. 滑動窗口&#xff08;Sliding Window&#xff09; 2. 分段截取&#xff08;Segmentation&#xff09; 3. 滾動生成&#xff08;Rolling Generation&#xff09; 4. 關鍵信息…

Oracle Virtualbox 虛擬機配置靜態IP

Oracle Virtualbox 虛擬機配置靜態IP VirtualBox的網卡&#xff0c;默認都是第一個不能自定義&#xff0c;后續新建的可以自定義。 新建NAT網卡、host主機模式網卡 依次點擊&#xff1a;管理->工具->網絡管理器新建host主機模式網卡 這個網卡的網段自定義&#xff0c;創建…

Linux RAID1 創建與配置實戰指南(mdadm)

Linux RAID1 創建與配置實戰指南&#xff08;mdadm&#xff09;一、RAID1 核心價值與實戰目標RAID1&#xff08;磁盤鏡像&#xff09; 通過數據冗余提供高可靠性&#xff1a;當單塊硬盤損壞時&#xff0c;數據不丟失支持快速陣列重建讀寫性能略低于單盤&#xff08;鏡像寫入開銷…

MySQL數據庫----函數

目錄函數1&#xff0c;字符串函數2&#xff0c;數值函數3&#xff0c;日期函數4&#xff0c;流程函數函數 1&#xff0c;字符串函數 MySQL中內置了很多字符串函數 2&#xff0c;數值函數 3&#xff0c;日期函數 4&#xff0c;流程函數

1.2 vue2(組合式API)的語法結構以及外部暴露

vue2 vue3中可以寫vue2的語法&#xff0c;vue2的結構像一個花盆里的根&#xff08;根組件App.vue&#xff09;&#xff0c;根上可以插上不同的枝杈和花朵&#xff08;組件&#xff09;。 組件的結構&#xff1a; // 這里寫邏輯行為 <script lang"ts"> export d…

Swift 解 LeetCode 324:一步步實現擺動排序 II,掌握數組重排的節奏感

文章目錄摘要描述題解答案題解代碼&#xff08;Swift&#xff09;題解代碼分析步驟一&#xff1a;排序數組步驟二&#xff1a;左右指針分段步驟三&#xff1a;按位置交錯插入示例測試及結果示例 1示例 2示例 3&#xff08;邊界情況&#xff09;時間復雜度分析空間復雜度分析總結…

使用SQLMAP的文章管理系統CMS的sql注入滲透測試

SQLMAP注入演示&#xff1a;抓包拿到Cookie:召喚sqlmap&#xff1a;sqlmap -u "http://192.168.1.99:8085/show.php?id34" --cookie "pma_langzh_CN; kbqug_admin_username2621-PL_LxhFjyVe43ZuQvht6MI5q0ZcpRVV5FI0pzQ6XR8; kbqug_siteid2621-PL_LxhFjyVe4yA5…

I3C通信協議核心詳解

一、物理層與電氣特性雙線結構 SCL&#xff08;串行時鐘線&#xff09;&#xff1a;主設備控制&#xff0c;支持 推挽&#xff08;Push-Pull&#xff09;輸出&#xff08;高速模式&#xff09;和 開漏&#xff08;Open-Drain&#xff09;&#xff08;兼容I2C模式&#xff09;。…

Docker搭建Redis哨兵集群

Redis提供了哨兵機制實現主從集群下的故障轉移&#xff0c;其中包含了對主從服務的檢測、自動故障恢復和通知。 1.環境 centos7、redis6.2.4、MobaXterm 目的&#xff1a; 搭建redis的主從同步哨兵集群&#xff08;一主一從三哨兵&#xff09; 2.步驟 1.主從集群的搭建 主從…