【人工智能】-- 智能家居

2a20c54b85e042bfa2440367ae4807e9.gif

https://blog.csdn.net/2302_76516899?spm=1000.2115.3001.5343

個人主頁:歡迎來到?Papicatch的博客

?課設專欄 :學生成績管理系統

專業知識專欄:?專業知識?

文章目錄

🍉引言

🍉基于深度卷積神經網絡的表情識別

🍈流程圖

🍈模型設計

🍍網絡架構選擇

🍍卷積層設計

🍍池化層

🍍激活函數

🍍全連接層

🍍正則化

🍍模型融合

🍈模型設計實現

🍍數據準備

🍍導入所需的庫

🍍定義模型結構

🍍?數據預處理

🍍編譯模型

🍍加載數據并進行訓練

🍍在測試集上進行評估

🍍進行表情預測

🍈模型推理

🍉氛圍燈控制

🍈照明技術

🍈通信技術

🍈傳感器技術

🍈控制算法?

🍈智能控制技術

🍈電源管理技術

🍈軟件和用戶界面

🍈開發流程圖

🍉人臉表情識別模型推理功能插件構建

🍈模型選擇與訓練

🍈模型轉換與優化

🍈接口設計

🍈數據預處理

🍈推理引擎集成

🍈錯誤處理與異常情況

🍈性能優化

測試與驗證

🍈系統開放插件

🍈人臉圖像獲取插件實現

🍍攝像頭訪問與控制

🍍圖像采集

🍍人臉檢測

🍍圖像裁剪與調整

🍍圖像質量優化

🍍數據格式轉換

🍍實時性與性能優化

🍍跨平臺支持

🍈代碼實現

🍈人臉圖像識別模型推理實現

🍈可視化交互界面插件實現

🍉總結


2a20c54b85e042bfa2440367ae4807e9.gif

🍉引言

????????在當今科技飛速發展的時代,人工智能與智能家居的結合正逐漸改變著我們的生活方式。

????????人工智能使得智能家居具備了更強的學習和適應能力。例如,智能恒溫器可以通過學習用戶的日常溫度偏好和行為模式,自動調整室內溫度,以達到節能和舒適的最佳平衡。

智能家居開發詳細流程

🍉基于深度卷積神經網絡的表情識別

????????深度卷積神經網絡(DCNN)在表情識別這一復雜任務中展現出了卓越的性能,而 OpenCV 作為一個功能強大且廣泛應用的計算機視覺庫,為實現基于 DCNN 的表情識別系統提供了堅實的基礎和便利的工具。

????????在開始構建表情識別系統之前,至關重要的一步是精心準備豐富且具有代表性的數據集。這些數據集通常包含了數量眾多、涵蓋各種不同場景和個體的人臉圖像,并且每一張圖像都被準確地標注了其所對應的表情類別,常見的表情類別如高興、悲傷、憤怒、恐懼、驚訝、厭惡以及中性等。

????????在數據預處理階段,OpenCV 發揮了關鍵作用。可以運用?cv2.imread()?函數方便地讀取圖像文件。為了使輸入模型的圖像尺寸統一,便于模型處理,會使用?cv2.resize()?函數對圖像進行縮放操作。同時,為了消除不同圖像之間由于光照、對比度等因素造成的差異,通過?cv2.normalize()?函數對像素值進行歸一化處理,將其范圍限定在特定的區間內,以提高模型的訓練效率和準確性。

????????構建深度卷積神經網絡模型是表情識別的核心部分。可以選擇一些知名且性能出色的預訓練模型,例如 VGG、ResNet 等。這些預訓練模型在大規模圖像數據集上進行過訓練,已經學習到了通用的圖像特征。也可以根據具體需求,自定義設計適合表情識別任務的網絡結構。

????????在訓練過程中,為了進一步豐富數據,增加模型的泛化能力,利用 OpenCV 進行數據增強操作。例如,使用?cv2.flip()?函數實現圖像的隨機水平或垂直翻轉,使用?cv2.rotate()?函數進行隨機旋轉,或者使用?cv2.addNoise()?函數為圖像添加適量的噪聲。

????????深度學習框架(如 TensorFlow、PyTorch 等)與 OpenCV 的結合是實現高效訓練的關鍵。在訓練過程中,將經過 OpenCV 預處理和增強后的數據集輸入到模型中,通過反向傳播算法不斷調整模型的參數,以最小化預測結果與真實標簽之間的誤差。

????????當模型訓練完成后,進入測試階段。再次利用 OpenCV 讀取待識別的人臉圖像,經過與訓練時相同的預處理步驟后,將其輸入到訓練好的模型中進行預測。模型會輸出一個概率分布,表示該圖像屬于各個表情類別的可能性。

????????假設我們訓練了一個基于 ResNet 的表情識別模型,當使用 OpenCV 讀取一張新的人臉圖像并進行預處理后,輸入到模型中。模型輸出的概率分布為 [0.05, 0.85, 0.03, 0.02, 0.03, 0.02] ,分別對應悲傷、高興、憤怒、恐懼、驚訝和厭惡。由于高興對應的概率值 0.85 最高,所以可以判斷這張圖像的表情為高興。

????????然而,在實際應用中,還需要面對諸多挑戰和需要優化的方面。例如,模型的復雜度可能導致計算資源需求過高,影響實時性,需要進行模型壓縮和優化。不同的光照條件、拍攝角度、面部遮擋等因素可能影響識別效果,需要增強模型在這些情況下的魯棒性。此外,還需要考慮如何將表情識別系統與實際的應用場景進行無縫集成,以實現更有價值的應用。

🍈流程圖

🍈模型設計

????????在設計基于深度卷積神經網絡的表情識別模型時,需要綜合考慮多個因素以實現準確且高效的表情分類

🍍網絡架構選擇

????????可以采用經典的卷積神經網絡架構,如 VGGNet、ResNet 或 Inception 系列。以 ResNet 為例,其通過引入殘差連接解決了深度網絡中的梯度消失問題,使得能夠構建更深的網絡以學習更復雜的特征。

🍍卷積層設計

????????卷積層用于提取圖像的局部特征。通常,在初始層使用較小的卷積核(如 3x3)來捕捉基本的紋理和形狀信息。隨著網絡深度增加,可以逐漸增加卷積核的大小或數量,以獲取更全局和抽象的特征。

🍍池化層

????????池化層用于減少特征圖的空間維度,降低計算量并引入一定的平移不變性。常見的池化方式有最大池化和平均池化。?

🍍激活函數

????????ReLU(Rectified Linear Unit)是常用的激活函數,因其計算簡單且能有效避免梯度消失問題。但在某些情況下,如為了處理梯度消失或提高模型的表達能力,也會使用 Leaky ReLU 或 Parametric ReLU 等變體。?

🍍全連接層

????????在網絡的末端,通常會連接幾個全連接層來將學到的特征映射到表情類別空間。全連接層的神經元數量根據表情類別的數量進行調整。?

🍍正則化

????????為了防止過擬合,可以采用 L1 和 L2 正則化、Dropout 等技術。Dropout 會在訓練過程中隨機將神經元的輸出設置為 0,強制網絡學習更具魯棒性的特征。?

🍍模型融合

????????還可以考慮將多個不同架構或在不同數據集上訓練的模型進行融合,以綜合它們的優勢,提高識別性能。?

例如,設計一個簡單的表情識別模型,可能包含以下結構:

  • 輸入層:接收預處理后的人臉圖像,例如尺寸為 224x224 的彩色圖像。
  • 卷積層 1:使用 32 個 3x3 的卷積核,步長為 1,ReLU 激活函數,輸出 224x224x32 的特征圖。
  • 池化層 1:2x2 的最大池化,步長為 2,輸出 112x112x32 的特征圖。
  • 卷積層 2:64 個 3x3 的卷積核,步長為 1,ReLU 激活函數,輸出 112x112x64 的特征圖。
  • 池化層 2:2x2 的最大池化,步長為 2,輸出 56x56x64 的特征圖。
  • .....
  • 全連接層 1:512 個神經元,ReLU 激活函數。
  • 全連接層 2:輸出為表情類別數量(假設 7 種表情),Softmax 激活函數用于最終的分類。

🍈模型設計實現

????????以下是一個使用 Python 和深度學習框架(如 TensorFlow 或 PyTorch)來實現基于深度卷積神經網絡的表情識別模型的基本步驟:?

🍍數據準備

  • 收集大量帶有表情標簽的人臉圖像數據集。
  • 將數據集劃分為訓練集、驗證集和測試集。

🍍導入所需的庫

    import tensorflow as tfimport numpy as npimport cv2

🍍定義模型結構

    def create_model():model = tf.keras.Sequential([tf.keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(224, 224, 3)),tf.keras.layers.MaxPooling2D((2, 2)),tf.keras.layers.Conv2D(64, (3, 3), activation='relu'),tf.keras.layers.MaxPooling2D((2, 2)),tf.keras.layers.Conv2D(128, (3, 3), activation='relu'),tf.keras.layers.MaxPooling2D((2, 2)),tf.keras.layers.Flatten(),tf.keras.layers.Dense(128, activation='relu'),tf.keras.layers.Dense(7, activation='softmax')  # 假設 7 種表情類別])return model

🍍?數據預處理

    def preprocess_image(image_path):image = cv2.imread(image_path)image = cv2.resize(image, (224, 224))image = image / 255.0  # 歸一化return image

🍍編譯模型

    model = create_model()model.compile(optimizer='adam',loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),metrics=['accuracy'])

🍍加載數據并進行訓練

    train_images = []train_labels = []for image_path, label in training_data:image = preprocess_image(image_path)train_images.append(image)train_labels.append(label)train_images = np.array(train_images)train_labels = np.array(train_labels)model.fit(train_images, train_labels, epochs=10, batch_size=32, validation_split=0.1)

🍍在測試集上進行評估

    test_images = []test_labels = []for image_path, label in test_data:image = preprocess_image(image_path)test_images.append(image)test_labels.append(label)test_images = np.array(test_images)test_labels = np.array(test_labels)loss, accuracy = model.evaluate(test_images, test_labels)

🍍進行表情預測

    new_image_path = 'new_image.jpg'new_image = preprocess_image(new_image_path)prediction = model.predict(np.expand_dims(new_image, axis=0))predicted_label = np.argmax(prediction)

🍈模型推理

????????模型推理是將訓練好的表情識別模型應用于新的未知數據以進行表情預測的過程。

????????首先,需要確保已經完成了模型的訓練,并保存了訓練好的模型參數。在實際推理時,加載這些保存的模型參數。

????????對于輸入的新圖像,同樣需要進行與訓練數據相同的預處理步驟。這可能包括圖像的讀取、裁剪、調整大小、歸一化等操作,以確保輸入數據的格式和范圍與訓練時一致。

????????將預處理后的圖像數據輸入到加載的模型中。模型會根據其學習到的特征和模式,計算出每個表情類別的概率分布。

????????例如,假設我們的模型預測結果是一個包含 7 個元素的概率數組?[0.1, 0.2, 0.05, 0.3, 0.15, 0.1, 0.1]?,分別對應 7 種表情類別(高興、悲傷、憤怒、恐懼、驚訝、厭惡、中性)。

????????為了確定最終的表情預測類別,通常會選擇概率最大的類別作為輸出結果。在上述例子中,概率最大的是第四個元素?0.3?,對應的表情類別可能是恐懼,那么就預測該圖像的表情為恐懼。

????????為了提高推理的效率和準確性,還可以采用一些優化技術,如模型量化、剪枝等,以減少模型的計算量和參數數量,同時不顯著降低性能。

????????此外,在實際應用中,可能需要對連續的圖像幀進行推理,以獲取更準確和穩定的表情識別結果。可以通過對多個幀的預測結果進行平滑處理或采用基于時間序列的分析方法來實現。

????????例如,在視頻流的表情識別中,可以設置一個時間窗口,對窗口內的幀進行綜合分析,而不是僅僅依賴于單個幀的預測結果。

🍉氛圍燈控制

🍈照明技術

  • 發光二極管(LED):是氛圍燈最常用的光源。其具有高效、節能、壽命長、顏色多樣等優點。不同類型的 LED 如 RGB LED 或 RGBW LED 能夠提供更豐富的色彩組合。
  • 光學設計:包括透鏡、反射器等的設計,用于控制燈光的發散角度、均勻度和亮度分布,以達到理想的照明效果。

🍈通信技術

  • 藍牙:常用于短距離無線控制,例如通過手機與氛圍燈進行連接和控制。
  • Wi-Fi:提供更穩定和高速的數據傳輸,適用于大規模的氛圍燈系統或需要與其他智能設備集成的場景。
  • Zigbee:一種低功耗、短距離的無線通信技術,適合構建大規模的傳感器和控制網絡。

🍈傳感器技術

  • 環境光傳感器:用于檢測周圍環境的光線強度,從而自動調整氛圍燈的亮度,以保持舒適的視覺效果。
  • 人體傳感器:可以感知人的存在和活動,實現當有人進入房間時自動開啟氛圍燈,或者根據人的位置調整燈光的照射方向。

🍈控制算法?

  • 顏色混合算法:對于 RGB 類型的氛圍燈,需要精確的顏色混合算法來實現準確的色彩輸出。
  • 亮度調節算法:確保在調節亮度時,燈光的顏色和均勻度不受影響。
  • 場景模式算法:根據不同的預設場景(如閱讀、聚會、睡眠等),自動配置燈光的顏色、亮度和變化模式。

🍈智能控制技術

  • 語音控制:通過語音識別技術,用戶可以通過語音指令來控制氛圍燈的開關、顏色和模式等。
  • 自動化控制:結合時間、天氣、室內溫度等因素,實現氛圍燈的自動控制。例如,在夜晚自動開啟柔和的燈光,在寒冷的天氣中使用暖色調燈光。

🍈電源管理技術

  • 高效的電源轉換:確保將輸入電源有效地轉換為適合 LED 工作的電壓和電流,提高能源利用效率。
  • 電源穩定性:提供穩定的電源輸出,防止電壓波動對燈光效果產生影響。

🍈軟件和用戶界面

  • 移動應用程序:提供直觀、友好的用戶界面,方便用戶進行各種控制操作和場景設置。
  • 云服務:支持遠程控制、數據存儲和設備管理,實現多設備的統一控制和個性化配置。

????????例如,在一個智能家居的氛圍燈系統中,通過 Wi-Fi 連接到家庭網絡,利用環境光傳感器自動根據室內光線調整亮度,用戶可以通過手機應用選擇不同的顏色和場景模式,同時系統還支持語音控制,如“打開閱讀模式的燈光”。電源管理模塊保證了燈光的穩定工作和節能效果。

🍈開發流程圖

🍉人臉表情識別模型推理功能插件構建

構建人臉表情識別模型推理功能插件需要以下關鍵步驟:

🍈模型選擇與訓練

  • 選擇適合的深度卷積神經網絡架構,如 ResNet、VGG 等,并在大規模的人臉表情數據集上進行訓練。
  • 確保模型能夠準確地識別多種常見的表情類別。

🍈模型轉換與優化

  • 將訓練好的模型轉換為適合在插件中使用的格式,例如 TensorFlow Lite 格式,以減少模型大小和提高推理速度。
  • 進行模型量化、剪枝等優化操作,降低計算量和內存占用。

🍈接口設計

  • 定義清晰的輸入和輸出接口。輸入通常是預處理后的人臉圖像數據,輸出是表情類別的預測結果。
  • 設計友好的 API,以便其他應用程序能夠方便地調用插件。

🍈數據預處理

  • 在插件中實現圖像的讀取、裁剪、尺寸調整、歸一化等預處理操作,確保輸入數據符合模型的要求。

🍈推理引擎集成

  • 選擇高效的推理引擎,如 TensorFlow Lite 推理引擎或 ONNX Runtime 等,并將其集成到插件中。

🍈錯誤處理與異常情況

  • 設計完善的錯誤處理機制,處理輸入數據異常、模型加載失敗、推理過程中的錯誤等情況。

🍈性能優化

  • 利用多線程、并行計算等技術提高推理效率。
  • 對內存使用進行優化,避免內存泄漏。

測試與驗證

  • 使用大量的測試數據對插件進行準確性和性能測試。
  • 與其他已有的表情識別方法進行對比,驗證插件的優越性。

????????例如,假設我們構建了一個基于 TensorFlow Lite 的人臉表情識別插件。在輸入一張人臉圖像后,插件首先讀取圖像并進行預處理,然后通過 TensorFlow Lite 推理引擎進行計算,最終輸出表情類別為“高興”的預測結果。在整個過程中,如果出現圖像格式錯誤或模型加載異常,插件會返回相應的錯誤代碼和提示信息。

🍈系統開放插件

🍈人臉圖像獲取插件實現

????????實現人臉圖像獲取插件通常涉及以下關鍵步驟和技術

🍍攝像頭訪問與控制

  • 使用相關的庫和 API 來訪問計算機或移動設備的攝像頭。例如,在 Windows 平臺上可以使用 DirectShow 庫,在 Android 上可以使用 Camera2 API 等。
  • 實現對攝像頭參數的設置,如分辨率、幀率、對焦模式等,以滿足不同的需求。

🍍圖像采集

  • 按照設定的參數從攝像頭實時獲取圖像幀。
  • 可以選擇采集單幀圖像或連續的視頻流。

🍍人臉檢測

  • 集成人臉檢測算法或使用現有的人臉檢測庫,如 OpenCV 中的人臉檢測模塊。
  • 在獲取的圖像中檢測并定位人臉區域。

🍍圖像裁剪與調整

  • 基于人臉檢測的結果,裁剪出只包含人臉的圖像區域。
  • 對裁剪后的人臉圖像進行大小調整、旋轉校正等操作,以確保圖像的一致性和規范性。

🍍圖像質量優化

  • 進行圖像去噪、增強對比度等處理,提高圖像質量。

🍍數據格式轉換

  • 將獲取和處理后的圖像數據轉換為適合后續處理或傳輸的格式,如 JPEG、PNG 或 RAW 格式。

🍍實時性與性能優化

  • 采用緩沖機制和多線程技術,確保圖像獲取的實時性,避免卡頓和延遲。
  • 對圖像處理算法進行優化,減少計算量和內存占用。

🍍跨平臺支持

  • 確保插件能夠在多種操作系統(如 Windows、Mac OS、Linux、Android、iOS 等)上運行,并提供一致的接口和功能。

🍈代碼實現

????????以下是一個使用 Python 和 OpenCV 庫實現簡單人臉圖像獲取插件的示例代碼:

import cv2def get_face_image():# 打開攝像頭cap = cv2.VideoCapture(0)if not cap.isOpened():print("無法打開攝像頭")return# 加載人臉檢測模型face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')while True:# 讀取一幀圖像ret, frame = cap.read()if not ret:print("無法獲取圖像")break# 轉換為灰度圖像,便于人臉檢測gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)# 進行人臉檢測faces = face_cascade.detectMultiScale(gray, 1.3, 5)for (x, y, w, h) in faces:# 裁剪出人臉區域face_image = frame[y:y + h, x:x + w]# 調整人臉圖像大小face_image_resized = cv2.resize(face_image, (200, 200))# 顯示人臉圖像cv2.imshow('Face Image', face_image_resized)# 按 'q' 鍵退出if cv2.waitKey(1) & 0xFF == ord('q'):break# 釋放攝像頭資源cap.release()cv2.destroyAllWindows()if __name__ == "__main__":get_face_image()

????????這段代碼首先打開攝像頭,加載人臉檢測模型,然后在每一幀圖像中檢測人臉,裁剪并調整人臉圖像大小進行顯示。用戶按下?q?鍵可退出程序。

🍈人臉圖像識別模型推理實現

????????以下是一個使用 TensorFlow 和 OpenCV 實現簡單人臉圖像識別模型推理的示例代碼。這里假設已經有訓練好的模型并保存為?model.h5?文件。

import tensorflow as tf
import cv2
import numpy as npdef recognize_face(image_path):# 加載模型model = tf.keras.models.load_model('model.h5')# 讀取圖像image = cv2.imread(image_path)image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)image = cv2.resize(image, (224, 224))  # 根據模型輸入要求調整大小# 歸一化image = image / 255.0image = np.expand_dims(image, axis=0)# 推理predictions = model.predict(image)predicted_class = np.argmax(predictions)# 假設類別標簽為 0: 高興, 1: 悲傷, 2: 憤怒 等classes = ['高興', '悲傷', '憤怒', '其他']print(f'預測的表情是: {classes[predicted_class]}')if __name__ == "__main__":recognize_face('test_image.jpg')

🍈可視化交互界面插件實現

????????以下是一個使用 Python 的?Tkinter?庫來創建簡單可視化交互界面插件的示例代碼:

from tkinter import Tk, Label, Button, Entrydef on_button_click():input_text = entry.get()label.config(text=f"您輸入的是: {input_text}")root = Tk()# 標簽
label = Label(root, text="這是一個示例界面")
label.pack()# 輸入框
entry = Entry(root)
entry.pack()# 按鈕
button = Button(root, text="點擊我", command=on_button_click)
button.pack()root.mainloop()

????????在上述代碼中,我們創建了一個窗口,包含一個標簽用于顯示提示信息,一個輸入框用于用戶輸入,以及一個按鈕。當點擊按鈕時,會獲取輸入框中的內容,并更新標簽的顯示內容。

🍉總結

????????總的來說,人工智能為智能家居帶來了巨大的潛力和機遇,將為我們創造更加便捷、舒適和安全的家居環境。但同時,我們也需要關注并解決相關的問題,確保其健康、可持續的發展。

2a20c54b85e042bfa2440367ae4807e9.gif

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

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

相關文章

[圖解]企業應用架構模式2024新譯本講解24-標識映射3

1 00:00:00,460 --> 00:00:02,580 超類定義了一個抽象方法 2 00:00:03,170 --> 00:00:03,450 3 00:00:06,410 --> 00:00:09,690 把reader內容 4 00:00:10,870 --> 00:00:12,350 把它變成一個領域對象 5 00:00:13,690 --> 00:00:15,800 但這里只是把它變成一個…

python安裝PyTorch+cuda

1,最終結果 import torchprint(torch.cuda.is_available()) #顯示True,則安裝成功 print(torch.__version__)#打印當前PyTorch版本號。 print(torch.version.cuda)#打印當前CUDA版本號。 print(torch.backends.cudnn.version())# 打印當前cuDNN版本號。 print(torc…

Ruby 語法

Ruby 語法 Ruby 是一種動態、開放源代碼的編程語言,由日本的松本行弘(Yukihiro Matsumoto)于1995年開發。Ruby 的設計哲學強調簡潔和效率,同時也是一種表達力強的語言。它結合了多種編程語言的特性,包括 Perl、Smalltalk、Eiffel、Ada 和 Lisp。Ruby 的語法簡單直觀,使得…

【愛上C++】vector用法詳解

文章目錄 一:vector簡介二:vector的創建和初始化三:vector的遍歷1.[]下標2.at()3.迭代器遍歷4.范圍for 四:vector的空間1.size2.max_size3.capacity4.reserve5.resize6.empty 五:vector的增刪查改1.push_back2.pop_back3.find4.insert5.erase6.swap7.assign Hello~同學們好&…

mAP(平均精度均值)全面解讀:評估目標檢測性能的黃金標準

mAP(平均精度均值)全面解讀:評估目標檢測性能的黃金標準 在目標檢測領域,評估模型性能是至關重要的一步。mAP(mean Average Precision,平均精度均值)作為目標檢測任務中一個關鍵的性能評估指標…

搭建純凈的SpringBoot工程

pom文件 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVe…

docker nginx mysql redis

啟動沒有數據卷的nginx docker run -d -p 86:80 --name my-nginx nginx把/etc/nginx中的配置復制到宿主機 docker cp my-nginx:/etc/nginx /home/nginxlkl把/html 中的文件復制到宿主機 docker cp my-nginx:/etc/nginx /home/nginxlkl刪除當前鏡像 docker rm -f my-nginx重新起…

ArrayList,Vector, LinkedList的存儲性能和特性舉例說明

ArrayList、Vector、LinkedList是Java中常用的三種集合類型&#xff0c;它們各自具有不同的存儲性能和特性。下面將分別舉例說明這三種集合的存儲性能和特性&#xff1a; ArrayList 存儲性能與特性&#xff1a; 底層實現&#xff1a;ArrayList底層是通過數組實現的&#xff…

Solidity:變量數據存儲和作用域 storage/memory/calldata

Solidity中的引用類型? 引用類型(Reference Type)&#xff1a;包括數組&#xff08;array&#xff09;和結構體&#xff08;struct&#xff09;&#xff0c;由于這類變量比較復雜&#xff0c;占用存儲空間大&#xff0c;我們在使用時必須要聲明數據存儲的位置。 數據位置? …

HarmonyOS ArkUi 字符串<展開/收起>功能

效果圖&#xff1a; 官方API&#xff1a; ohos.measure (文本計算) 方式一 measure.measureTextSize 跟方式二使用一樣&#xff0c;只是API調用不同&#xff0c;可仔細查看官網方式二 API 12 Preview Component export struct CustomTextSpan {State maxLines: number 1/…

迭代器模式(大話設計模式)C/C++版本

迭代器模式 C #include <iostream> #include <string> #include <vector>using namespace std;// 迭代抽象類,用于定義得到開始對象、得到下一個對象、判斷是否到結尾、當前對象等抽象方法&#xff0c;統一接口 class Iterator { public:Iterator(){};virtu…

作為產品經理,如何用大模型給我們賦能?非常詳細,收藏我這篇就夠了

作為一名產品經理&#xff0c;如果您考慮轉行至大模型領域&#xff0c;您將能夠將產品管理技能與大模型技術相結合&#xff0c;從而在產品開發和創新方面獲得一系列好處。以下是轉行大模型對產品經理的一些潛在益處&#xff1a; 更深入的技術理解&#xff1a;了解大模型技術將…

LeetCode 1351, 1, 208

目錄 1351. 統計有序矩陣中的負數題目鏈接標簽簡答二分查找思路代碼 優化思路代碼 1. 兩數之和題目鏈接標簽思路代碼 208. 實現 Trie (前綴樹)題目鏈接標簽思路代碼 1351. 統計有序矩陣中的負數 題目鏈接 1351. 統計有序矩陣中的負數 標簽 數組 二分查找 矩陣 簡答二分查找…

使用 Python 處理 Lumerical 導出的 .txt 文件(完結)

使用 Python 處理 Lumerical 導出的 .txt 文件 引言正文以 , 隔開的波長與透射率以 \t 隔開的波長與透射率引言 之前在 添加鏈接描述 一文中我們已經介紹了如何將 Lumerical 仿真中的 S 參數相關數據導出為 .txt 文件。這里我們來分享如何使用 Python 對這些數據進行處理。 正…

如果國產BI工具也有頂流,它們一定會上榜

在數據驅動的今天&#xff0c;商業智能&#xff08;BI&#xff09;工具已成為企業不可或缺的助手&#xff0c;它們通過強大的數據處理和分析能力&#xff0c;幫助企業洞察市場趨勢&#xff0c;優化運營決策。如果BI工具界也有“頂流”&#xff0c;那么奧威BI、帆軟BI&#xff0…

原生CSS變量

原生CSS 變量 css中我們可以統一設置 變量 方便頁面維護 聲明 變量聲明的時候&#xff0c;變量名之前加上兩根連詞線&#xff08;–&#xff09;即可。例如&#xff1a; 聲明的變量是有作用域的&#xff0c;比如是在html中聲明的變量&#xff0c;那么該變量在html中的任何地方都…

我國甜菜堿行業規模較大 未來行業發展前景較好

我國甜菜堿行業規模較大 未來行業發展前景較好 甜菜堿化學名稱三甲基甘氨酸&#xff0c;是一種在動植物體內廣泛存在的季銨型生物堿。它具有多種生物學功能&#xff0c;包括滲透調節、甲基供體等&#xff0c;廣泛應用于飼料、食品、醫藥和化妝品等行業。甜菜堿的提取主要來源于…

揭秘SmartEDA:電路仿真軟件如何貫穿課前課中課后,助力電子學習新紀元!

在電子設計與自動化的學習道路上&#xff0c;一款強大的電路仿真軟件往往能為學生們帶來事半功倍的效果。今天&#xff0c;我們就來深入探討一下SmartEDA這款電路仿真軟件在課前、課中、課后的全方位應用&#xff0c;看看它如何助力我們的電子學習步入新紀元&#xff01; 1、課…

直播平臺集成美顏工具詳解:視頻美顏SDK開發指南

本篇文章&#xff0c;小編將詳細介紹如何在直播平臺中集成美顏工具&#xff0c;幫助開發者更好地理解視頻美顏SDK的開發過程。 一、美顏工具的作用和原理 1.1 美顏工具的作用 美顏工具主要用于提升直播視頻的畫面質量&#xff0c;讓主播和觀眾在鏡頭前看起來更加美觀。這些功…

2024年最新ComfyUI漢化及manager插件安裝詳解!

前言 在ComfyUI文生圖詳解中&#xff0c;學習過如果想要安裝相應的模型&#xff0c;需要到模型資源網站&#xff08;抱抱臉、C站、魔塔、哩布等&#xff09;下載想要的模型&#xff0c;手動安裝到ComfyUI安裝目錄下對應的目錄中。 為了簡化這個流程&#xff0c;我們需要安裝Co…