計算機視覺——基于樹莓派的YOLO11模型優化與實時目標檢測、跟蹤及計數的實踐

概述

設想一下,你在多地擁有多個倉庫,要同時監控每個倉庫的實時狀況,這對于時間和精力而言,都構成了一項艱巨挑戰。從成本和可靠性的層面考量,大規模部署計算設備也并非可行之策。一方面,大量計算設備的購置、維護成本會讓你的預算不堪重負;另一方面,設備數量增多,出現故障的概率也會相應提升,這無疑會給倉庫的穩定監控帶來極大的不確定性。

基于云的系統看似是一個解決之道,但實際上也存在諸多弊端。云計算系統在運行過程中,常常會受到網絡狀況、服務器負載等因素的影響,導致數據處理速度緩慢,甚至出現服務中斷的情況。并且,隨著數據量的不斷增長以及使用時長的累積,基于云的系統所產生的費用也會持續攀升,這無疑會進一步加重你的經濟負擔。

在此種情形下,邊緣計算技術的優勢便凸顯出來。與傳統模式中將數據在本地與遙遠服務器之間來回傳輸不同,邊緣計算支持在數據產生的源頭直接進行本地處理。這種方式不僅能夠顯著減少數據傳輸過程中的延遲,還能降低對網絡帶寬的依賴,從而大大提高了數據處理的效率和穩定性。

在眾多實現邊緣計算的方案中,在 樹莓派 上運用 YOLO11 是一種極具性價比的選擇。樹莓派以其低成本、低功耗且具備一定計算能力的特性,為邊緣計算提供了一個理想的硬件載體。而 YOLO11 作為先進的目標檢測算法,能夠高效精準地識別和分析圖像或視頻中的目標物體。將二者結合,能夠在倉庫現場實現實時的數據處理與分析,為倉庫的安全管理和高效運營提供有力保障。

一、樹莓派

樹莓派最初是一款信用卡大小的計算機,其設計初衷是激發人們對基礎計算機科學的興趣。隨著時間的推移,它已發展成為各類應用的首選平臺,尤其是在邊緣人工智能領域表現出色。2012 年,樹莓派基金會發布了第一代樹莓派,當時售價僅約合人民幣 230 元,這一舉措立刻在愛好者、教育工作者和專業人士群體中引發了極大的轟動。截至目前,樹莓派系列的銷量已突破6000 萬臺,且每一代產品都在前一代的基礎上實現了性能的顯著提升。
在這里插入圖片描述

1.1 樹莓派各代產品快速概覽

  • 樹莓派 1:作為低成本單板計算領域的先驅,其處理能力相對有限,更適合執行輕量級任務以及開展教育項目。
  • 樹莓派 2 和 3:這兩代產品在 CPU 性能上有了顯著升級,內存容量也有所增加,同時還內置了 Wi - Fi 和藍牙連接功能。這些改進為開展輕量級服務器任務、機器人技術研究以及早期人工智能實驗奠定了堅實基礎。
  • 樹莓派 4:引入了 USB 3.0 端口,最高支持 8GB 內存,并配備了更強大的 GPU。這些特性拓寬了其在計算機視覺、媒體中心以及更復雜應用場景中的應用范圍。
  • 樹莓派 5:作為最新款型號,配備了2.4 GHz 四核 ARM Cortex - A76 處理器、經過優化的VideoCore VII GPU,支持PCIe連接,以及4GB 或 8GB 配置的 LPDDR4X - 4267 SDRAM,性能得到了進一步飛躍。

1.2 為什么樹莓派非常適合邊緣人工智能

  1. 成本效益高:樹莓派價格低于人民幣 700 元(樹莓派 5 基礎版通常約為 350 元),這使得用戶能夠在不同位置部署多個設備。想象一下,用這些小巧的板子裝備整個工廠車間,實現分布式實時分析,而無需擔心超出預算。
  2. 強大的社區支持:豐富的開源文檔、眾多的技術論壇以及社區驅動的庫,讓故障排除變得更加輕松。例如,picamera2 或 libcamera 等工具可以直接集成攝像頭模塊,用戶幾乎可以立即捕獲圖像數據,用于基于 YOLO 的推理。
  3. 改進的硬件加速:隨著樹莓派各代新產品的不斷推出,其硬件加速能力也在持續提升。樹莓派 5 增強的 GPU,再加上可能添加的谷歌珊瑚 USB 加速器,能夠為更復雜的 YOLO11 變體提供額外的性能提升。

注意:本文使用的是樹莓派 5(8GB)。

如果有關注過YOLO系列模型,就會了解到它們以高精度和實時目標檢測能力而聞名。從 YOLOv3、YOLOv5 到 YOLOv8 等每一個新版本,都引入了更優的架構,以更快速、高效地處理計算機視覺任務。如今,YOLO11進一步推動了這些優化,以下是它在像樹莓派這樣的邊緣設備上脫穎而出的原因:

  • 低延遲:由于采用了諸如C3k2C2PSA模塊等架構改進,YOLO11 不僅能夠準確地檢測目標,還能以毫秒級延遲完成檢測。這在需要快速決策以節省時間、資源甚至挽救生命的場景中至關重要,例如無人機應用、機器人技術或安全系統。
  • NCNN 集成:通過將 PyTorch 權重轉換為專為邊緣設備設計的NCNN格式,推理時間最多可縮短62%,使實時檢測不再僅僅停留在理論層面。
  • 保持高 mAP:盡管 YOLO11 的模型更為輕量,但在常見的目標檢測基準測試中仍能保持約**55%**的平均精度均值(mAP)。這種速度和精度的平衡確保了在提高效率的同時,不會犧牲檢測質量。

我們之所以選擇在樹莓派上使用YOLO11,是因為它在速度精度資源效率方面實現了最佳平衡。傳統的解決方案可能需要強大的 GPU 或大型計算集群才能實現實時結果,而 YOLO11 可以直接在邊緣設備上運行——無需額外的硬件加速器(當然,如果您有需求,也可以添加)。

二、實現流程

為了在樹莓派上實現高效的實時目標檢測與跟蹤,我們首先需要構建一個適合的開發環境,并對YOLO11模型進行優化導出。以下是詳細的實現流程:

2.1 環境搭建

首先,創建一個獨立的Python開發環境,以確保依賴庫的兼容性與穩定性:

conda create -n yolo11xrpi python=3.11
conda activate yolo11xrpi
pip install ultralytics

此環境配置為后續模型導出與推理任務提供了必要的基礎支持。

2.2 模型導出策略

鑒于樹莓派的硬件特性,我們重點關注三種模型導出格式:OpenVINO、NCNN 和 MNN。這三種格式均針對邊緣設備進行了優化,能夠在保持模型精度的同時,顯著提升推理速度。

  • OpenVINO:作為英特爾推出的工具包,OpenVINO通過深度優化,能夠在英特爾硬件及兼容設備(如樹莓派)上實現高效的神經網絡推理。它提供了豐富的預優化模型與推理引擎,能夠顯著降低推理延遲。
  • NCNN:由騰訊開發的高性能神經網絡推理框架,專為ARM架構的移動與邊緣設備設計。NCNN以其輕量級特性與高效的計算性能,成為在樹莓派上部署深度學習模型的理想選擇。
  • MNN:阿里巴巴開發的移動神經網絡框架,針對移動與嵌入式平臺進行了全面優化。MNN支持多種硬件加速技術,包括GPU加速,能夠在樹莓派上實現快速且穩定的推理。

我們使用Ultralytics提供的導出命令將YOLO11模型轉換為上述格式:

yolo export model=yolo11n.pt format=ncnn

詳細的導出參數與配置可參考Ultralytics文檔。

在本實驗中,我們選用YOLO11n模型作為主要研究對象,因其在存儲空間占用與檢測精度之間取得了良好的平衡,能夠滿足樹莓派的硬件約束,同時提供較高的幀率與檢測精度。

2.3 代碼實現

2.3.1 導入庫與設置

導入必要的Python庫,為后續的圖像處理、模型推理與結果展示提供支持:

import cv2
import numpy as np
import time
from ultralytics import YOLO
from collections import defaultdict
  • OpenCV(cv2:用于視頻幀的讀取、邊界框的繪制以及圖像的顯示與保存。
  • NumPy(np:用于高效的數值計算與數組操作,便于處理模型輸出的檢測結果。
  • time:用于測量每幀的處理時間,進而計算實時幀率(FPS)。
  • YOLO:Ultralytics提供的YOLO模型接口,用于加載預訓練模型并執行檢測與跟蹤任務。
  • defaultdict:用于存儲跟蹤目標的歷史信息,無需手動檢查鍵是否存在,簡化了代碼邏輯。

2.3.2 定義推理函數

定義inference函數,封裝模型推理的完整流程:

def inference(model,mode,task,video_path=None,save_output=False,output_path="output.mp4",show_output=True,count=False,show_tracks=False,
):pass

該函數接受以下參數:

  • model:加載的YOLO模型實例。
  • mode:輸入模式,可選值為"cam"(使用網絡攝像頭)或"video"(從視頻文件讀取)。
  • task:任務類型,可選值為"detect"(目標檢測)或"track"(目標跟蹤)。
  • video_path:當mode"video"時,指定視頻文件的路徑。
  • save_output:是否保存處理后的視頻輸出。
  • output_path:保存輸出視頻的路徑。
  • show_output:是否實時顯示處理結果。
  • count:是否對檢測到的目標進行計數。
  • show_tracks:是否繪制目標的運動軌跡。

2.3.3 預處理

根據輸入模式初始化視頻捕獲對象,并設置相關參數:

if mode == "cam":cap = cv2.VideoCapture(0)
elif mode == "video":if video_path is None:raise ValueError("Please provide a valid video path for video mode.")cap = cv2.VideoCapture(video_path)
else:raise ValueError("Invalid mode. Use 'cam' or 'video'.")track_history = defaultdict(lambda: [])
seen_ids_per_class = defaultdict(set)fourcc = cv2.VideoWriter_fourcc(*"mp4v")
input_fps = cap.get(cv2.CAP_PROP_FPS)
out = None
  • 創建VideoCapture對象,用于從網絡攝像頭或視頻文件中讀取視頻幀。
  • 初始化track_history字典,用于存儲每個跟蹤目標的歷史軌跡信息,便于后續繪制運動軌跡。
  • 初始化seen_ids_per_class字典,用于記錄每個類別中已檢測到的唯一目標ID,以便進行目標計數。
  • 設置視頻編碼格式與輸入視頻的幀率,為保存輸出視頻做準備。

2.3.4 主處理循環

進入主循環,逐幀處理視頻數據:

while cap.isOpened():success, frame = cap.read()if not success:print("Failed to read frame or end of video")breakstart_time = time.time()class_counts = defaultdict(int)if task == "track":results = model.track(frame, conf=0.3, persist=True, tracker="bytetrack.yaml")elif task == "detect":results = model.predict(frame, conf=0.5)else:raise ValueError("Invalid task. Use 'detect' or 'track'.")end_time = time.time()annotated_frame = results[0].plot()
  • 從視頻捕獲對象中讀取一幀,若讀取失敗則退出循環。
  • 記錄當前幀的處理開始時間,用于后續計算幀率。
  • 根據任務類型(檢測或跟蹤),調用YOLO模型的相應方法進行推理。
    • 在跟蹤模式下,設置較低的置信度閾值(conf=0.3),并啟用目標持久化跟蹤(persist=True),同時指定跟蹤算法配置文件("bytetrack.yaml")。
    • 在檢測模式下,使用較高的置信度閾值(conf=0.5)進行目標檢測。
  • 記錄當前幀的處理結束時間,并調用results[0].plot()方法生成帶有檢測或跟蹤結果的注釋幀。

2.3.5 YOLO的輸出張量解析

YOLO模型的輸出結果存儲在results列表中,其中results[0]包含了當前幀的檢測或跟蹤信息。關鍵屬性如下:

  • results[0].boxes:包含檢測到的目標邊界框信息。
    • boxes.xywh:以(x_center, y_center, width, height)格式表示邊界框的中心點坐標、寬度與高度。
    • boxes.cls:每個邊界框對應的類別索引,可通過results[0].names將其映射為類別名稱。
    • boxes.id(僅在跟蹤模式下可用):每個邊界框的唯一跟蹤ID,用于在連續幀中標識同一目標。

2.3.6 檢測與跟蹤邏輯

檢測模式

在檢測模式下,對每個檢測到的目標進行類別統計:

if task == "detect":results = model.predict(frame, conf=0.5)if results[0].boxes and results[0].boxes.cls is not None:boxes = results[0].boxes.xywh.cpu()class_ids = results[0].boxes.cls.int().cpu().tolist()names = results[0].namesif count:class_counts = defaultdict(int)for cls_id in class_ids:class_counts[names[cls_id]] += 1
  • 獲取檢測結果中的邊界框坐標、類別索引以及類別名稱映射表。
  • 若啟用了目標計數功能(count=True),則遍歷類別索引列表,統計每個類別的目標數量。
跟蹤模式

在跟蹤模式下,利用目標的唯一ID進行更復雜的處理:

if task == "track":results = model.track(frame, conf=0.3, persist=True, tracker="bytetrack.yaml")if task == "track" and results[0].boxes.id is not None:track_ids = results[0].boxes.id.int().cpu().tolist()for box, cls_id, track_id in zip(boxes, class_ids, track_ids):x, y, w, h = boxclass_name = names[cls_id]if count:seen_ids_per_class[class_name].add(track_id)track_history[track_id].append((x, y))
  • 獲取跟蹤結果中的目標ID列表。
  • 遍歷每個目標的邊界框、類別索引與跟蹤ID,執行以下操作:
    • 若啟用了目標計數功能,則將當前目標的跟蹤ID添加到對應類別的集合中,確保每個目標僅被計數一次。
    • 將當前目標的坐標信息添加到其跟蹤歷史記錄中,便于后續繪制運動軌跡。

2.3.7 目標計數與軌跡繪制

在跟蹤模式下,通過維護目標的唯一ID,實現對每個類別的唯一目標數量統計:

if count:seen_ids_per_class[class_name].add(track_id)

在檢測模式下,僅對當前幀中的目標進行簡單計數:

if task == "detect" and count:for cls_id in class_ids:class_counts[names[cls_id]] += 1

通過這兩種方式,我們能夠在不同任務模式下靈活地統計目標數量,滿足多樣化的應用場景需求。

三、推理結果與性能分析

為了評估YOLO11模型在樹莓派上的推理性能,我們對其進行了全面的基準測試。測試環境為樹莓派5,使用YOLO11n模型在COCO數據集上進行評估,圖像尺寸設置為640×640像素。測試結果如下表所示:

格式狀態大小 (MB)mAP (50-95)推理時間 (ms/幀)FPS
PyTorch?5.40.610360.092.78
TorchScript?10.50.608472.032.12
ONNX?10.20.608156.846.38
OpenVINO?10.40.60980.9312.36
TensorFlow SM?26.50.608510.251.96
TensorFlow GD?10.30.608515.561.94
TensorFlow Lite?10.30.608354.822.82
PaddlePaddle?20.40.608665.491.5
MNN?10.10.610115.838.63
NCNN?10.20.611292.103.42

從測試結果可以看出,OpenVINO和MNN格式在樹莓派上表現出了較高的推理速度,分別達到了12.36 FPS和8.63 FPS。其中,OpenVINO格式在保持較高平均精度均值(mAP)的同時,具有最快的推理速度,適合對實時性要求較高的應用場景;而NCNN格式雖然在推理速度上略遜于OpenVINO,但其mAP值最高,達到了0.611,表明在檢測精度方面具有一定優勢。

為了進一步驗證模型在實際應用中的效果,我們分別使用MNN、OpenVINO和NCNN格式進行了目標檢測與跟蹤任務的推理實驗,并通過視頻展示了推理結果。以下是部分實驗結果的描述:

3.1 MNN格式推理結果

使用MNN格式進行目標檢測與跟蹤任務的推理實驗,結果表明,該格式在樹莓派上能夠實現較為流暢的實時推理,平均幀率約為8-10 FPS。實驗中,模型能夠準確地檢測出視頻中的目標,并為其繪制邊界框與類別標簽。在跟蹤任務中,目標的運動軌跡能夠被清晰地繪制出來,且跟蹤效果穩定,即使在目標發生遮擋或快速運動的情況下,仍能保持較好的跟蹤精度。這表明MNN格式在樹莓派上具有良好的適用性,能夠在資源受限的嵌入式設備上實現高效的目標檢測與跟蹤。

在樹莓派上部署yolo11目標檢測與行人追蹤效果

3.2 OpenVINO格式推理結果

在OpenVINO格式下進行目標檢測與分割任務的推理實驗,結果顯示,該格式在樹莓派上能夠實現較高的推理速度,平均幀率可達10-12 FPS。在目標檢測任務中,模型能夠快速準確地檢測出視頻中的目標,并為其繪制邊界框與類別標簽。在目標分割任務中,模型能夠對目標進行較為精細的分割,分割結果的邊界較為清晰,且與目標的實際輪廓較為貼合。這表明OpenVINO格式在樹莓派上具有較高的推理效率和較好的分割精度,適合對實時性和分割精度要求較高的應用場景。

基于OpenVINO對yolo11分割推理結果

3.3 NCNN格式推理結果

使用NCNN格式進行目標檢測與姿態估計任務的推理實驗,實驗結果表明,該格式在樹莓派上能夠實現較為準確的目標檢測與姿態估計。在目標檢測任務中,模型能夠準確地檢測出視頻中的目標,并為其繪制邊界框與類別標簽。在姿態估計任務中,模型能夠對目標的姿態進行較為準確的估計,并繪制出目標的關鍵點與姿態骨架。雖然NCNN格式的推理速度略低于OpenVINO格式,但其檢測精度和姿態估計精度較高,能夠滿足對檢測精度和姿態估計精度要求較高的應用場景。

在樹莓派上輸出基于 yolo11 的姿態 ncnn 推理結果

3.4 實時檢測、跟蹤與計數實驗結果

了模擬實時工業應用場景,我們進行了實時目標檢測、跟蹤與計數的實驗。實驗中,模型能夠實時地檢測出視頻中的目標,并對其進行跟蹤與計數。在檢測任務中,模型能夠準確地檢測出視頻中的目標,并為其繪制邊界框與類別標簽;在跟蹤任務中,目標的運動軌跡能夠被清晰地繪制出來,且跟蹤效果穩定;在計數任務中,模型能夠準確地統計出每個類別的目標數量,并實時顯示在屏幕上。實驗結果表明,該系統能夠在實時場景中實現高效的目標檢測、跟蹤與計數,滿足工業生產中的實時監控與統計需求。

yolo11在樹莓派基于mnn與ncnn效果

四、 回顧與總結

4.1 樹莓派在邊緣人工智能中的重要性

樹莓派作為一種經濟實惠且功能強大的嵌入式計算平臺,在邊緣人工智能領域具有重要的應用價值。隨著邊緣人工智能市場的快速發展,越來越多的應用場景需要在本地進行數據處理,以減少對云端計算的依賴,降低延遲,提高數據隱私性。樹莓派憑借其低功耗、高性能的特點,以及強大的社區支持,成為在邊緣部署人工智能的理想選擇之一。特別是樹莓派5的推出,其在處理能力和硬件接口方面都有了顯著提升,進一步拓展了其在邊緣人工智能領域的應用范圍。

4.2 YOLO11模型的優化特性

YOLO11模型是專門為邊緣設備優化的目標檢測模型,與YOLOv8相比,它在顯著降低模型復雜度(最多降低37%)的同時,仍保持了較高的檢測精度(約85%的平均精度均值)。這種優化使得YOLO11能夠在資源受限的樹莓派上實現高效的實時目標檢測,為邊緣設備上的復雜計算機視覺任務提供了可能。其輕量級的模型結構和高效的推理性能,使其成為在樹莓派上部署目標檢測應用的首選模型之一。

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

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

相關文章

通信協議記錄儀-產品規格書

以下是為 ??通信協議記錄儀(ProtoLogger Pro)?? 的??詳細產品規格書??,覆蓋 ??技術細節、場景需求、競品差異化??,確保可作為產品開發、市場營銷及競品分析的核心依據。 ??通信協議記錄儀產品規格書?? ??產品名稱??:ProtoLogger Pro(中文名稱:蹲守…

python:sklearn 決策樹(Decision Tree)

5. 決策樹(Decision Tree) - 第5章 算法思想:基于信息增益(ID3)或基尼不純度(CART)遞歸劃分特征。 編寫 test_dtree_1.py 如下 # -*- coding: utf-8 -*- """ 5. 決策樹&…

【2-sat】2-sat算法內容及真題

A.2-sat簡介 2-sat算法可以求解給定推出關系下的一種合法情況。題目中重常常,給定一些布爾變量A、B、C、D…,再給出一系列形如 B ? A , C ? D B \longrightarrow A , C \longrightarrow \neg D B?A,C?D的推出關系,詢問使得所有推出關系…

【git】獲取特定分支和所有分支

1 特定分支 1.1 克隆指定分支&#xff08;默認只下載該分支&#xff09; git clone -b <分支名> --single-branch <倉庫URL> 示例&#xff08;克隆 某一個 分支&#xff09;&#xff1a; git clone -b xxxxxx --single-branch xxxxxxx -b &#xff1a;指定分支…

LWIP帶freeRTOS系統移植筆記

以正點原子學習視頻為基礎的文章 LWIP帶freeRTOS系統移植 準備資料/工程 1、lwIP例程1 lwIP裸機移植 工程 &#xff0c; 作為基礎工程 改名為LWIP_freeRTOS_yizhi工程 2、lwIP例程6 lwIP_FreeRTOS移植 工程 3、freeRTO源碼 打開https://www.freertos.org/網址下載…

組網技術知識點

1.port-isloate enable命令用于實現兩個接口之間的二層數據隔離&#xff0c;三層數據互通。 2.交換機最多支持4096個VLAN&#xff0c;編號為1-4094 3.display bfd session all&#xff1a;查看BFD會話狀態是否UP 4.RJ45通過雙絞線連接以太網&#xff1b; AUI端口&#xff1…

Linux系統:進程程序替換以及相關exec接口

本節重點 理解進程替換的相關概念與原理掌握相關程序替換接口程序替換與進程創建的區別程序替換的注意事項 一、概念與原理 進程程序替換是操作系統中實現多任務和資源復用的關鍵機制&#xff0c;允許進程在運行時動態加載并執行新程序。 1.1 定義 進程程序替換是指用新程…

從此,K8S入門0門檻!

前言 當你想要入門K8S的時候&#xff0c;往往會被各種概念搞的暈乎乎的&#xff0c;什么API Server&#xff0c;Scheduler&#xff0c;Controller manager&#xff0c;Etcd&#xff0c;Pod&#xff0c;Kubelet&#xff0c;kube-proxy&#xff0c;deployment…… 哪怕你使用了…

[Python開發] 如何用 VSCode 編寫和管理 Python 項目(從 PyCharm 轉向)

在 Python 開發領域,PyCharm 一直是廣受歡迎的 IDE,但其遠程開發功能(如遠程 SSH 調試)僅在付費版中提供。為了適應服務器部署需求,很多開發者開始將目光轉向更加輕量、靈活且免費擴展能力強的 VSCode。本篇文章將詳細介紹,從 PyCharm 轉向 VSCode 后,如何高效搭建和管理…

處方流轉平臺權限控制模塊設計(基于RBAC模型)

這是基于筆者的一些經驗設計并加以完善的方案&#xff0c;僅供參考。 處方流轉平臺權限控制模塊設計&#xff08;基于RBAC模型&#xff09; 1. 需求分析 處方流轉平臺需要嚴格的權限控制&#xff0c;確保&#xff1a; 患者隱私數據保護處方開具、審核、調配、發藥等流程的合…

基于BM1684X+RK3588的智能工業視覺邊緣計算盒子解決方案

智能工業視覺邊緣計算終端技術方案書? ?1. 產品概述? 1.1 產品定位 面向工業自動化場景的高性能AI視覺處理設備集成BM1684X&#xff08;8TOPS INT8&#xff09;AI加速芯片 RK3588&#xff08;6TOPS NPU&#xff09;異構計算支持工業級多相機接入、實時缺陷檢測、高精度定…

軟件工程中的 QFD

: 軟件工程中的 QFD 在軟件工程領域,隨著市場競爭的加劇和用戶需求的日益復雜,如何有效地將用戶需求轉化為軟件產品,成為軟件開發團隊面臨的重要挑戰。而質量功能部署(Quality Function Deployment,QFD)作為一種強大的工具,為這一問題提供了有效的解決方案。 一、QF…

Vue2基礎速成

一、準備工作 首先下載vue2的JavaScript庫&#xff0c;并且命名為vue.min.js 下載鏈接&#xff1a;https://cdn.jsdelivr.net/npm/vue2&#xff08;若鏈接失效可去vue官網尋找&#xff09; CTRLS即可下載保存 文件目錄結構 二、使用操作原生DOM與使用VUE操作DOM的便捷性比較…

日語學習-日語知識點小記-構建基礎-JLPT-N4階段(14):かもしれません (~た?~ない)ほうがいいです

日語學習-日語知識點小記-構建基礎-JLPT-N4階段&#xff08;1&#xff14;&#xff09;&#xff1a;かもしれません &&#xff08;&#xff5e;た?&#xff5e;ない&#xff09;ほうがいいです 1、前言&#xff08;1&#xff09;情況說明&#xff08;2&#xff09;工程師…

傳統銀行服務和 區塊鏈支付無縫融合的一種解決方案

Dragonfly Capital 的合伙人 Alex Pack 曾表示:“DeFi 的目標是重構全球銀行體系,并打造開放且無須許可的經營環境。”在 DeFi 的金融世界中,加密資產架構在區塊鏈上,通過各個協議實現資產之間的高效轉移和價值的實時流通,如 Metamask 錢包的自托管,Uniswap 的資產交易,…

基于深度學習的毒蘑菇檢測

文章目錄 任務介紹數據概覽數據處理數據讀取與拼接字符數據轉化標簽數據映射數據集劃分數據標準化 模型構建與訓練模型構建數據批處理模型訓練 文件提交結果附錄 任務介紹 本次任務為毒蘑菇的二元分類&#xff0c;任務本身并不復雜&#xff0c;適合初學者&#xff0c;主要亮點…

時間給了我們什么?

時間給了我們什么&#xff1f; ?春秋易逝&#xff0c;青春難留&#xff0c;轉瞬之間已過半百。 ?過往中&#xff0c;有得有失&#xff0c;這就是人生。 ?一日三餐四季&#xff0c;日起日落里&#xff0c;成就了昨天、今天和明天&#xff0c;在歷史長河中&#xff0c;皆是…

軟件工程國考

軟件工程-同等學力計算機綜合真題及答案 &#xff08;2004-2014、2017-2024&#xff09; 2004 年軟工 第三部分 軟件工程 &#xff08;共 30 分&#xff09; 一、單項選擇題&#xff08;每小題 1 分&#xff0c;共 5 分&#xff09; 軟件可用性是指&#xff08; &#xff09…

數據結構*棧

棧 什么是棧 這里的棧與我們之前常說的棧是不同的。之前我們說的棧是內存棧&#xff0c;它是JVM內存的一部分&#xff0c;用于存儲局部變量、方法調用信息等。每個線程都有自己獨立的棧空間&#xff0c;當線程啟動時&#xff0c;棧就會被創建&#xff1b;線程結束&#xff0c…

IntelliJ IDEA 保姆級使用教程

文章目錄 一、創建項目二、創建模塊三、創建包四、創建類五、編寫代碼六、運行代碼注意 七、IDEA 常見設置1、主題2、字體3、背景色 八、IDEA 常用快捷鍵九、IDEA 常見操作9.1、類操作9.1.1、刪除類文件9.1.2、修改類名稱注意 9.2、模塊操作9.2.1、修改模塊名快速查看 9.2.2、導…