支持向量機(SVM)在肝臟CT/MRI圖像分類(肝癌檢測)中的應用及實現

在這里插入圖片描述

🧑 博主簡介:CSDN博客專家、CSDN平臺優質創作者,高級開發工程師,數學專業,10年以上C/C++, C#, Java等多種編程語言開發經驗,擁有高級工程師證書;擅長C/C++、C#等開發語言,熟悉Java常用開發技術,能熟練應用常用數據庫SQL server,Oracle,mysql,postgresql等進行開發應用,熟悉DICOM醫學影像及DICOM協議,業余時間自學JavaScript,Vue,qt,python等,具備多種混合語言開發能力。撰寫博客分享知識,致力于幫助編程愛好者共同進步。歡迎關注、交流及合作,提供技術支持與解決方案。\n技術合作請加本人wx(注明來自csdn):xt20160813

支持向量機(SVM)在肝臟CT/MRI圖像分類(肝癌檢測)中的應用及實現

支持向量機(SVM)在肝臟CT/MRI圖像分類(肝癌檢測)中的應用因其對高維數據和小樣本場景的優異性能,在醫學影像領域具有重要價值。本文將深入探討SVM在肝癌檢測中的實現,聚焦于肝臟CT/MRI圖像分類,以LiTS(Liver Tumor Segmentation Benchmark)3DIRCADb數據集為例,全面覆蓋概念、原理、實現細節、優化技巧及可視化分析,并輔以流程圖。


一、肝癌檢測任務概述

1.1 任務背景

肝癌(包括原發性肝細胞癌和轉移性肝癌)是全球主要的癌癥死亡原因之一。CT和MRI是肝癌診斷的主要影像學手段,SVM在以下任務中表現出色:

  • 二分類:區分正常肝臟與肝癌病變。
  • 多分類:識別肝癌分期(早期、晚期)或病變類型(原發性、轉移性)。
  • 檢測與分割結合:基于分割結果提取特征,輸入SVM進行分類。

1.2 數據集介紹

  • LiTS(Liver Tumor Segmentation Benchmark)
    • 包含131例CT掃描,標注了肝臟和腫瘤區域。
    • 圖像分辨率:512x512像素,切片厚度1-3mm。
    • 特點:包含多樣化的肝癌病灶(大小、形狀、位置差異大)。
  • 3DIRCADb
    • 包含20例CT和MRI圖像,標注了肝臟、腫瘤及其他結構。
    • 特點:數據集規模小,適合小樣本場景研究。
  • 任務目標:基于CT/MRI圖像提取特征,使用SVM分類正常/異常或不同病變類型。

1.3 挑戰

  • 高維特征:肝臟圖像特征維度高(如紋理、形狀特征)。
  • 樣本稀缺:標注數據成本高,樣本量有限。
  • 不平衡數據:正常肝臟樣本遠多于腫瘤樣本。
  • 圖像異質性:CT/MRI模態差異、患者解剖結構差異。
  • 噪聲與偽影:CT圖像中的噪聲、MRI中的運動偽影。

二、SVM在肝癌檢測中的核心原理

2.1 SVM核心思想

SVM通過尋找最優超平面,最大化兩類樣本的幾何間隔,在高維特征空間中實現分類。對于肝癌檢測,樣本是圖像特征(如紋理、形狀),標簽是“正常”或“異常”。

  • 函數間隔 γ ^ i = y i ( w T x i + b ) \hat{\gamma}_i = y_i(w^T x_i + b) γ^?i?=yi?(wTxi?+b),其中 w w w 是超平面法向量, b b b 是偏置, y i ∈ { ? 1 , 1 } y_i \in \{-1, 1\} yi?{?1,1}
  • 幾何間隔 γ i = γ ^ i ∥ w ∥ \gamma_i = \frac{\hat{\gamma}_i}{\|w\|} γi?=wγ^?i??
  • 優化目標
    min ? w , b 1 2 ∥ w ∥ 2 s.t. y i ( w T x i + b ) ≥ 1 \min_{w, b} \frac{1}{2}\|w\|^2 \quad \text{s.t.} \quad y_i(w^T x_i + b) \geq 1 w,bmin?21?w2s.t.yi?(wTxi?+b)1

2.2 軟間隔與正則化

肝臟圖像常包含噪聲或異常值,SVM引入軟間隔,允許部分樣本誤分類:
min ? w , b , ξ 1 2 ∥ w ∥ 2 + C ∑ ξ i s.t. y i ( w T x i + b ) ≥ 1 ? ξ i , ξ i ≥ 0 \min_{w, b, \xi} \frac{1}{2}\|w\|^2 + C \sum \xi_i \quad \text{s.t.} \quad y_i(w^T x_i + b) \geq 1 - \xi_i, \xi_i \geq 0 w,b,ξmin?21?w2+Cξi?s.t.yi?(wTxi?+b)1?ξi?,ξi?0
其中, C C C控制模型復雜度和錯誤容忍度。

2.3 核技巧

肝癌特征通常非線性可分,SVM通過核函數將數據映射到高維空間。常用核函數:

  • RBF核 exp ? ( ? γ ∥ x i ? x j ∥ 2 ) \exp(-\gamma \|x_i - x_j\|^2) exp(?γxi??xj?2),適合復雜非線性特征。
  • 線性核:適合高維稀疏特征。
  • 多項式核:適合特定幾何特征。

2.4 對偶問題

通過拉格朗日乘子法將原始問題轉為對偶問題:
max ? α ∑ α i ? 1 2 ∑ ∑ α i α j y i y j K ( x i , x j ) \max_{\alpha} \sum \alpha_i - \frac{1}{2} \sum \sum \alpha_i \alpha_j y_i y_j K(x_i, x_j) αmax?αi??21?αi?αj?yi?yj?K(xi?,xj?)
其中, α i > 0 \alpha_i > 0 αi?>0的樣本為支持向量,決定分類邊界。


三、SVM在肝癌檢測中的實現流程

以下是SVM在肝臟CT/MRI圖像分類中的完整實現流程,結合LiTS數據集。

3.1 數據預處理

  • 圖像標準化:將CT圖像的Hounsfield單位歸一化到[0, 1],MRI圖像進行強度歸一化。
  • 肝臟分割:使用U-Net或傳統分割算法(如水平集)提取肝臟區域。
  • 數據增強:旋轉、翻轉、縮放增加樣本多樣性。
  • 病灶標注:基于LiTS提供的腫瘤掩膜,提取病灶區域。

3.2 特征提取

肝癌檢測中常用的特征包括:

  • 紋理特征:灰度共生矩陣(GLCM,提取對比度、相關性)、局部二值模式(LBP)。
  • 形狀特征:病灶的體積、表面面積、長短軸比。
  • 深度特征:使用預訓練3D-CNN(如3D-ResNet)提取高維特征。

代碼示例(提取GLCM特征):

import cv2
import numpy as np
from skimage.feature import graycomatrix, graycopropsdef extract_glcm_features(image):"""提取灰度共生矩陣(GLCM)特征參數:image: 肝臟CT/MRI切片(灰度圖)返回:特征向量(對比度、相關性、能量、同質性)"""# 轉換為灰度圖并量化到256級gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)gray = (gray / gray.max() * 255).astype(np.uint8)# 計算GLCMglcm = graycomatrix(gray, distances=[1], angles=[0, np.pi/4, np.pi/2], levels=256)# 提取特征features = []for prop in ['contrast', 'correlation', 'energy', 'homogeneity']:feature = graycoprops(glcm, prop).ravel()features.append(feature)return np.hstack(features)# 加載LiTS數據集(假設已分割肝臟區域)
images = [...]  # 肝臟CT/MRI切片列表
labels = [...]  # 標簽:0(正常),1(肝癌)
features = [extract_glcm_features(img) for img in images]

3.3 數據標準化與不平衡處理

  • 標準化:對特征進行均值-方差歸一化。
  • 不平衡處理:使用SMOTE過采樣或調整類權重。

代碼示例

from sklearn.preprocessing import StandardScaler
from imblearn.over_sampling import SMOTE# 特征標準化
scaler = StandardScaler()
features_scaled = scaler.fit_transform(features)# SMOTE過采樣
smote = SMOTE(random_state=42)
features_resampled, labels_resampled = smote.fit_resample(features_scaled, labels)

3.4 SVM模型訓練

使用RBF核SVM,通過網格搜索優化參數 (C) 和 (\gamma)。

代碼示例

from sklearn.svm import SVC
from sklearn.model_selection import GridSearchCV, train_test_split
from sklearn.metrics import classification_report, confusion_matrix# 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(features_resampled, labels_resampled, test_size=0.2, random_state=42
)# 定義SVM模型
svm = SVC(kernel='rbf', probability=True)# 網格搜索優化參數
param_grid = {'C': [0.1, 1, 10, 100],'gamma': ['scale', 'auto', 0.001, 0.01, 0.1]
}
grid_search = GridSearchCV(svm, param_grid, cv=5, scoring='f1', n_jobs=-1)
grid_search.fit(X_train, y_train)# 輸出最佳參數和分數
print("最佳參數:", grid_search.best_params_)
print("最佳F1分數:", grid_search.best_score_)# 使用最佳模型預測
best_model = grid_search.best_estimator_
y_pred = best_model.predict(X_test)# 評估模型
print("測試集分類報告:\n", classification_report(y_test, y_pred))
print("混淆矩陣:\n", confusion_matrix(y_test, y_pred))

3.5 決策邊界與支持向量可視化

對于高維特征,使用PCA降維到2D以可視化決策邊界。

代碼示例

import matplotlib.pyplot as plt
from sklearn.decomposition import PCA# 降維到2D
pca = PCA(n_components=2)
features_2d = pca.fit_transform(features_resampled)# 訓練2D SVM
svm_2d = SVC(kernel='rbf', C=grid_search.best_params_['C'], gamma=grid_search.best_params_['gamma'])
svm_2d.fit(features_2d, labels_resampled)# 創建網格
x_min, x_max = features_2d[:, 0].min() - 1, features_2d[:, 0].max() + 1
y_min, y_max = features_2d[:, 1].min() - 1, features_2d[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02), np.arange(y_min, y_max, 0.02))# 計算決策函數
Z = svm_2d.decision_function(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)# 繪制決策邊界和支持向量
plt.contourf(xx, yy, Z, levels=[-1, 0, 1], alpha=0.4, colors=['#FF9999', '#99FF99'])
plt.scatter(features_2d[:, 0], features_2d[:, 1], c=labels_resampled, cmap='coolwarm', edgecolors='k', s=50)
plt.scatter(features_2d[svm_2d.support_, 0], features_2d[svm_2d.support_, 1], s=100, facecolors='none', edgecolors='black', label='Support Vectors')
plt.title('SVM Decision Boundary for Liver Cancer Classification')
plt.xlabel('PCA Component 1')
plt.ylabel('PCA Component 2')
plt.legend()
plt.show()

可視化結果

  • 紅色區域:肝癌類。
  • 綠色區域:正常類。
  • 黑色空心圓:支持向量,靠近決策邊界的樣本。

3.6 混淆矩陣可視化

混淆矩陣直觀展示模型分類性能。

代碼示例

import seaborn as sns# 繪制混淆矩陣
cm = confusion_matrix(y_test, y_pred)
plt.figure(figsize=(6, 6))
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', xticklabels=['Normal', 'Cancer'], yticklabels=['Normal', 'Cancer'])
plt.title('Confusion Matrix for Liver Cancer Classification')
plt.xlabel('Predicted Label')
plt.ylabel('True Label')
plt.show()

混淆矩陣圖表

{"type": "matrix","data": {"labels": ["Normal", "Cancer"],"datasets": [{"data": [[80, 5],   // TP, FP[3, 72]    // FN, TN],"backgroundColor": ["#99FF99","#FF9999","#FF9999","#99FF99"]}]},"options": {"title": {"display": true,"text": "Confusion Matrix for Liver Cancer Classification"},"scaleShowValues": true,"scales": {"xAxes": [{"scaleLabel": {"display": true,"labelString": "Predicted Label"}}],"yAxes": [{"scaleLabel": {"display": true,"labelString": "True Label"}}]}}
}

3.7 實現流程圖

以下是SVM在肝癌檢測中的完整流程:

原始CT/MRI圖像
預處理: 標準化/增強
肝臟分割: U-Net/傳統方法
特征提取: GLCM/形狀/深度特征
特征標準化
不平衡處理: SMOTE/類權重
SVM模型訓練
網格搜索優化C, γ
模型評估: F1/混淆矩陣
決策邊界可視化
預測新影像

四、優化技巧與實踐建議

4.1 處理不平衡數據

肝癌樣本通常遠少于正常樣本,可采用以下方法:

  • 類權重調整
    svm = SVC(kernel='rbf', class_weight={0: 1, 1: 5})  # 肝癌類權重更高
    
  • SMOTE過采樣(如前述代碼)。
  • 代價敏感學習:在SVM目標函數中引入不同類別的誤分類代價。

4.2 參數調優

  • C(懲罰系數):控制模型對錯誤的容忍度。建議測試 [0.1, 1, 10, 100]
  • γ(RBF核參數):控制決策邊界曲率。建議測試 'scale''auto'[0.001, 0.01, 0.1]
  • 交叉驗證:使用5折或10折交叉驗證,確保模型泛化能力。

4.3 特征優化

  • 深度特征:使用3D-ResNet或VGG提取特征,提升復雜病灶的分類性能。
    from tensorflow.keras.applications import ResNet50
    from tensorflow.keras.preprocessing import image
    from tensorflow.keras.applications.resnet50 import preprocess_inputdef extract_cnn_features(img):img = image.img_to_array(img.resize((224, 224)))img = np.expand_dims(img, axis=0)img = preprocess_input(img)model = ResNet50(weights='imagenet', include_top=False)features = model.predict(img)return features.flatten()
    
  • 特征選擇:使用L1正則化(如LinearSVC)篩選關鍵特征,降低維度。

4.4 多分類擴展

對于肝癌分期或類型分類,采用One-vs-Rest (OVR)One-vs-One (OVO)

svm_multi = SVC(kernel='rbf', decision_function_shape='ovr')
svm_multi.fit(features_scaled, labels_multi)  # labels_multi包含多類標簽

4.5 大規模數據優化

  • 增量學習:使用 sklearn.svm.SVCpartial_fit 方法,逐步更新模型。
  • 并行計算:使用 joblib 并行化網格搜索:
    grid_search = GridSearchCV(svm, param_grid, cv=5, n_jobs=-1)
    

五、前沿進展與工業應用

5.1 SVM與深度學習結合

  • 深度特征提取:使用3D-CNN(如3D-ResNet、U-Net)提取肝臟病灶特征,SVM作為分類器。
  • 優勢:結合深度學習的特征表達能力和SVM的小樣本魯棒性。
  • 示例:在LiTS數據集中,先用U-Net分割肝臟和腫瘤,再用SVM分類病灶類型。

5.2 增量式SVM

  • LS-SVM(最小二乘SVM):用等式約束代替不等式約束,加速訓練。
  • 在線SVM:適合動態更新的醫療影像數據流。

5.3 工業應用場景

  • 臨床輔助診斷:SVM模型集成到PACS系統,實時檢測肝癌病灶。
  • 分期評估:輔助醫生判斷肝癌分期,指導治療方案。
  • 多模態融合:結合CT和MRI特征,提升分類精度。

5.4 法規與可解釋性

  • 法規合規:確保模型符合FDA/NMPA認證要求,需提供支持向量和決策邊界的可解釋性。
  • 支持向量分析:支持向量可用于分析關鍵病例(如典型肝癌特征)。

六、完整代碼示例(基于LiTS數據集)

以下是基于LiTS數據集的完整SVM實現,涵蓋預處理、特征提取、模型訓練和評估。

import cv2
import numpy as np
from skimage.feature import graycomatrix, graycoprops
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.preprocessing import StandardScaler
from imblearn.over_sampling import SMOTE
from sklearn.metrics import classification_report, confusion_matrix
import matplotlib.pyplot as plt
import seaborn as sns# 1. 特征提取(GLCM)
def extract_glcm_features(image):"""提取GLCM特征參數:image: 肝臟CT/MRI切片(灰度圖)返回:特征向量(對比度、相關性、能量、同質性)"""gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)gray = (gray / gray.max() * 255).astype(np.uint8)glcm = graycomatrix(gray, distances=[1], angles=[0, np.pi/4, np.pi/2], levels=256)features = []for prop in ['contrast', 'correlation', 'energy', 'homogeneity']:feature = graycoprops(glcm, prop).ravel()features.append(feature)return np.hstack(features)# 2. 加載和預處理數據(假設已分割肝臟區域)
images = [...]  # 肝臟CT/MRI切片列表
labels = [...]  # 標簽:0(正常),1(肝癌)
features = np.array([extract_glcm_features(img) for img in images])
labels = np.array(labels)# 3. 特征標準化
scaler = StandardScaler()
features_scaled = scaler.fit_transform(features)# 4. 不平衡處理
smote = SMOTE(random_state=42)
features_resampled, labels_resampled = smote.fit_resample(features_scaled, labels)# 5. 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(features_resampled, labels_resampled, test_size=0.2, random_state=42
)# 6. 訓練SVM模型
svm = SVC(kernel='rbf', probability=True)
param_grid = {'C': [0.1, 1, 10], 'gamma': ['scale', 0.01, 0.1]}
grid_search = GridSearchCV(svm, param_grid, cv=5, scoring='f1', n_jobs=-1)
grid_search.fit(X_train, y_train)# 7. 輸出結果
print("最佳參數:", grid_search.best_params_)
print("最佳F1分數:", grid_search.best_score_)
best_model = grid_search.best_estimator_
y_pred = best_model.predict(X_test)
print("測試集分類報告:\n", classification_report(y_test, y_pred))# 8. 繪制混淆矩陣
cm = confusion_matrix(y_test, y_pred)
plt.figure(figsize=(6, 6))
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', xticklabels=['Normal', 'Cancer'], yticklabels=['Normal', 'Cancer'])
plt.title('Confusion Matrix for Liver Cancer Classification')
plt.xlabel('Predicted Label')
plt.ylabel('True Label')
plt.show()

七、總結與最佳實踐

SVM在肝臟CT/MRI圖像分類(肝癌檢測)中的應用結合了傳統特征(如GLCM)和深度特征(如3D-CNN),在小樣本和高維數據場景下表現優異。最佳實踐建議

  1. 預處理與分割:使用U-Net進行精確的肝臟和腫瘤分割。
  2. 特征選擇:結合GLCM、形狀特征和深度特征,提升分類性能。
  3. 不平衡處理:通過SMOTE或類權重調整,解決肝癌樣本稀缺問題。
  4. 參數優化:網格搜索優化 (C) 和 (\gamma),確保模型泛化能力。
  5. 可視化分析:結合混淆矩陣和決策邊界,評估模型性能和可解釋性。

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

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

相關文章

DeepSeek掃雷游戲網頁版HTML5(附源碼)

用DeepSeek幫忙生成一個網頁版的掃雷游戲,效果非常棒,基于HTML5實現,方便運行。 提示詞prompt 幫我做一個網頁版的 html5 掃雷游戲游戲功能說明 游戲難度: 1 簡單:1010 格子,10個地雷 2 中等:16…

Day53GAN對抗生成網絡思想

生成對抗網絡(GAN)是深度學習領域的一種革命性模型,由Ian Goodfellow等人于2014年提出。其核心思想源于博弈論中的零和博弈,通過兩個神經網絡(生成器和判別器)的對抗性訓練,實現數據的高質量生成…

meilisearch-輕量級搜索引擎

meilisearch是一款開源的輕量級搜索引擎,相比于elasticsearch等重量級搜索引擎,meilisearch注重數據搜索,從而而省去了其它不必要的功能(如支持聚合分析、分布式搜索等特性),以便于快速上手開發和構建應用。…

51c大模型~合集150

我自己的原文哦~ https://blog.51cto.com/whaosoft/14034001 #原來Scaling Law還能被優化 Meta這招省token又提效 2017 年,一篇《Attention Is All You Need》論文成為 AI 發展的一個重要分水嶺,其中提出的 Transformer 依然是現今主流語言模型…

每天一個前端小知識 Day 23 - PWA 漸進式 Web 應用開發

PWA 漸進式 Web 應用開發(離線緩存、桌面安裝等) 🧠 一、什么是 PWA? PWA(Progressive Web App)是一種讓 Web 應用具有類似原生 App 用戶體驗的技術體系。 PWA 不是一個框架,而是由一組瀏覽器 A…

音視頻會議服務搭建(設計方案-兩種集成方案對比)-03

前言在開始計劃之前,查閱了不少資料。一種方案是 Go層做信令業務,nodejs層來管理和mediasoup的底層交互,通過客戶端去調用Go層;第二種方案是 客戶端直接調用nodejs層來跟mediasoup去交互; 最終,當然不出意料…

【小白】linux安裝ffmpeg | java轉碼 【超詳細】

前言 最近在開發過程中,發現當我們上傳除了mp4以外的其他少見的格式,如 .flv .rmvb 格式的視頻時,在前端在線播放的時候會播放不出來畫面,所以 接下來,將要進行一個非常完美的工程,將視頻格式轉為.mp4 1.安…

一個簡單的腳本,讓pdf開啟夜間模式

因為平常我比較喜歡晚上看面試題。 市面上很多的面試題pdf都是白色的晚上看的話非常的刺眼。 所以我本能的去互聯網搜索看看有沒有pdf轉換為夜間模式的。 搜索了一段時間后發現并沒有這種東西。于是我自己做了一個轉換的python腳本。 import os import fitz # PyMuPDF from P…

Flink OceanBase CDC 環境配置與驗證

一、OceanBase 數據庫核心配置 1. 環境準備與版本要求 版本要求:OceanBase CE 4.0 或 OceanBase EE 2.2組件依賴:需部署 LogProxy 服務(社區版/企業版部署方式不同)兼容模式:支持 MySQL 模式(默認&#x…

c++對象池

【設計模式】其它經典模式-對象池模式(Object Pool Pattern)-CSDN博客 在C中,對象池(Object Pool)是一種管理對象生命周期的技術,旨在減少對象創建和銷毀的開銷,提高性能。對象池預先分配一定數…

JavaFX:Scene(場景)

簡介 Scene對象是JavaFX場景圖的根(root)。JavaFX 場景中包含所有可視的 JavaFX GUI 組件。JavaFX 場景由javafx.scene.Scene類表示。必須在 Stage(舞臺)上設置 Scene 對象才能使其可見。在本 JavaFX Scene 教程中,將向您展示如何創建 Scene 對象并向其添加 GUI 組件。 創…

vue3.4中的v-model的用法~

1.首先以前我們針對父子組件傳參是不是通過defineProps與defineEmits來實現的&#xff0c;但是這么比較繁瑣&#xff0c;因為他是單向傳參&#xff0c;而不是雙向的&#xff0c;這里我們要介紹的是vue3.4的v-model來實現雙向數據傳遞。 2、代碼示例&#xff1a; //父組件 <…

nvm常用指令匯總

nvm是用來管理nodejs的&#xff0c;可以方便安裝、切換、卸載當前環境的node版本。 以下是常用指令匯總&#xff1a;nvm list 查看本機已經安裝的node版本。*表示當前系統正在使用的node版本nvm install xx.xx.x 后邊加版本號&#xff0c;表示安裝指定的版本nvm use xx.xx.x當前…

洛谷P5021 [NOIP 2018 提高組] 賽道修建【題解】【二分答案+樹上貪心】

P5021 [NOIP 2018 提高組] 賽道修建 題意簡述 給定一棵含 n n n 個點的無向帶權樹&#xff0c;求將其分裂為 m m m 條鏈后&#xff0c;最短的一條鏈的最大長度是多少&#xff1f; 點可以重復使用&#xff0c;邊不可以重復使用。 思路 二分答案貪心判定貌似可以&#xff…

Portal認證過程雜談

Portal認證模型簡介 Portal認證模型通常由這四個設備組成 認證服務器即3A服務器&#xff0c;通常用radius服務器 接入設備通常就是NAC設備&#xff08;網絡接入控制&#xff09; Portal服務器就是Portal認證的認證網站&#xff08;通常叫門戶網站&#xff09; 認證過程簡述…

ZSGuardian ---AI賦能,新一代研發管理守護平臺 -即將上線

一場研發管理的革命 在數字化浪潮奔涌向前的今天&#xff0c;軟件開發與產品研發的節奏不斷加快&#xff0c;市場需求瞬息萬變&#xff0c;技術迭代日新月異。對于研發團隊而言&#xff0c;如何在復雜多變的環境中&#xff0c;高效地管理項目、保障產品質量、確保按時上線&…

小菜狗的云計算之旅,學習了解rsync+sersync實現數據實時同步(詳細操作步驟)

Rsyncsersync實現數據實時同步 目錄 Rsyncsersync實現數據實時同步 一、rsync概述 二、rsync運行原理 三、rsync部署 四、備份測試 五、使用非系統用戶備份數據 5.1 rsync的配置文件介紹 5.2 配置備份目錄 5.3 使用rsync用戶備份測試 5.4 pull拉取數據 六、rsyncse…

牛客周賽Round 99(Go語言)

A題 (A.go) 思路總結: 這道題要求判斷一個整數中是否包含連續的兩個9。 核心思路是將輸入的整數轉換為字符串&#xff0c;然后遍歷這個字符串&#xff0c;檢查是否存在相鄰的兩個字符都是9。如果找到了&#xff0c;就立即停止遍歷并輸出"YES"&#xff1b;如果遍歷完…

紅外圖像小目標檢測熱力圖可視化系統

原創代碼&#xff0c;可以工程修改含界面。

供應鏈管理:指標評估方式分類與詳解

一、指標評估方式分類與詳解 評估維度評估方式核心方法適用場景示例數據來源內部數據評估從企業ERP、MES、CRM等系統提取生產、財務、客戶等數據。成本、效率、質量等內部管理指標評估。生產成本數據&#xff08;MES系統&#xff09;、客戶滿意度&#xff08;CRM系統&#xff…