PyTorch框架——基于深度學習YOLOv8神經網絡學生課堂行為檢測識別系統

基于YOLOv8深度學習的學生課堂行為檢測識別系統,其能識別三種學生課堂行為:names: ['舉手', '讀書', '寫字']

具體圖片見如下:

第一步:YOLOv8介紹

YOLOv8?是 ultralytics 公司在 2023 年 1月 10 號開源的 YOLOv5 的下一個重大更新版本,目前支持圖像分類、物體檢測和實例分割任務,在還沒有開源時就收到了用戶的廣泛關注。

YOLOv8 算法的核心特性和改動可以歸結為如下:

提供了一個全新的 SOTA 模型,包括 P5 640 和 P6 1280 分辨率的目標檢測網絡和基于 YOLACT 的實例分割模型。和 YOLOv5 一樣,基于縮放系數也提供了 N/S/M/L/X 尺度的不同大小模型,用于滿足不同場景需求

Backbone:
骨干網絡和 Neck 部分可能參考了 YOLOv7 ELAN 設計思想,將 YOLOv5 的 C3 結構換成了梯度流更豐富的 C2f 結構,并對不同尺度模型調整了不同的通道數。

屬于對模型結構精心微調,不再是無腦一套參數應用所有模型,大幅提升了模型性能。不過這個 C2f 模塊中存在 Split 等操作對特定硬件部署沒有之前那么友好了

Head: Head部分較yolov5而言有兩大改進:1)換成了目前主流的解耦頭結構(Decoupled-Head),將分類和檢測頭分離 2)同時也從 Anchor-Based 換成了 Anchor-Free

Loss :1) YOLOv8拋棄了以往的IOU匹配或者單邊比例的分配方式,而是使用了Task-Aligned Assigner正負樣本匹配方式。2)并引入了 Distribution Focal Loss(DFL)

Train:訓練的數據增強部分引入了 YOLOX 中的最后 10 epoch 關閉 Mosiac 增強的操作,可以有效地提升精度

第二步:YOLOv8網絡結構

第三步:代碼展示

# Ultralytics YOLO 🚀, AGPL-3.0 licensefrom pathlib import Pathfrom ultralytics.engine.model import Model
from ultralytics.models import yolo
from ultralytics.nn.tasks import ClassificationModel, DetectionModel, OBBModel, PoseModel, SegmentationModel, WorldModel
from ultralytics.utils import ROOT, yaml_loadclass YOLO(Model):"""YOLO (You Only Look Once) object detection model."""def __init__(self, model="yolo11n.pt", task=None, verbose=False):"""Initialize YOLO model, switching to YOLOWorld if model filename contains '-world'."""path = Path(model)if "-world" in path.stem and path.suffix in {".pt", ".yaml", ".yml"}:  # if YOLOWorld PyTorch modelnew_instance = YOLOWorld(path, verbose=verbose)self.__class__ = type(new_instance)self.__dict__ = new_instance.__dict__else:# Continue with default YOLO initializationsuper().__init__(model=model, task=task, verbose=verbose)@propertydef task_map(self):"""Map head to model, trainer, validator, and predictor classes."""return {"classify": {"model": ClassificationModel,"trainer": yolo.classify.ClassificationTrainer,"validator": yolo.classify.ClassificationValidator,"predictor": yolo.classify.ClassificationPredictor,},"detect": {"model": DetectionModel,"trainer": yolo.detect.DetectionTrainer,"validator": yolo.detect.DetectionValidator,"predictor": yolo.detect.DetectionPredictor,},"segment": {"model": SegmentationModel,"trainer": yolo.segment.SegmentationTrainer,"validator": yolo.segment.SegmentationValidator,"predictor": yolo.segment.SegmentationPredictor,},"pose": {"model": PoseModel,"trainer": yolo.pose.PoseTrainer,"validator": yolo.pose.PoseValidator,"predictor": yolo.pose.PosePredictor,},"obb": {"model": OBBModel,"trainer": yolo.obb.OBBTrainer,"validator": yolo.obb.OBBValidator,"predictor": yolo.obb.OBBPredictor,},}class YOLOWorld(Model):"""YOLO-World object detection model."""def __init__(self, model="yolov8s-world.pt", verbose=False) -> None:"""Initialize YOLOv8-World model with a pre-trained model file.Loads a YOLOv8-World model for object detection. If no custom class names are provided, it assigns defaultCOCO class names.Args:model (str | Path): Path to the pre-trained model file. Supports *.pt and *.yaml formats.verbose (bool): If True, prints additional information during initialization."""super().__init__(model=model, task="detect", verbose=verbose)# Assign default COCO class names when there are no custom namesif not hasattr(self.model, "names"):self.model.names = yaml_load(ROOT / "cfg/datasets/coco8.yaml").get("names")@propertydef task_map(self):"""Map head to model, validator, and predictor classes."""return {"detect": {"model": WorldModel,"validator": yolo.detect.DetectionValidator,"predictor": yolo.detect.DetectionPredictor,"trainer": yolo.world.WorldTrainer,}}def set_classes(self, classes):"""Set classes.Args:classes (List(str)): A list of categories i.e. ["person"]."""self.model.set_classes(classes)# Remove background if it's givenbackground = " "if background in classes:classes.remove(background)self.model.names = classes# Reset method class names# self.predictor = None  # reset predictor otherwise old names remainif self.predictor:self.predictor.model.names = classes

第四步:統計訓練過程的一些指標,相關指標都有

第五步:運行(支持圖片、文件夾、攝像頭和視頻功能)

第六步:整個工程的內容

有訓練代碼和訓練好的模型以及訓練過程,提供數據,提供GUI界面代碼

項目完整文件下載請見演示與介紹視頻的簡介處給出:???

PyTorch框架——基于深度學習YOLOv8神經網絡學生課堂行為檢測識別系統_嗶哩嗶哩_bilibili

?

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

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

相關文章

kafka學習筆記6 ACL權限 —— 筑夢之路

在Kafka中,ACL(Access Control List)是用來控制誰可以訪問Kafka資源(如主題、消費者組等)的權限機制。ACL配置基于Kafka的kafka-acls.sh工具,能夠管理對資源的讀取、寫入等操作權限。 ACL介紹 Kafka的ACL是…

探秘自然地理:從太陽到地球的奇妙之旅與災害預警

在浩瀚無垠的宇宙中,我們的地球與太陽緊密相連,它們的奧秘和變化,時刻影響著我們的生活。今天,就讓我們一同深入探索自然地理的基礎知識,揭開太陽與地球的神秘面紗,同時了解那些可能給我們帶來巨大影響的自…

領域算法 - 負載均衡算法

負載均衡算法 文章目錄 負載均衡算法一:常規負載均衡算法二:Nginx負載均衡算法 一:常規負載均衡算法 二:Nginx負載均衡算法 # 定義負載均衡設備的Ip及設備狀態 upstream bakend {ip_hash; server 127.0.0.1:9090 down; server…

Access數據庫教案(Excel+VBA+Access數據庫SQL Server編程)

文章目錄: 一:Access基礎知識 1.前言 1.1 基本流程 1.2 基本概念?? 2.使用步驟方法 2.1 表【設計】 2.1.1 表的理論基礎 2.1.2 Access建庫建表? 2.1.3 表的基本操作 2.2 SQL語句代碼【設計】 2.3 窗體【交互】? 2.3.1 多方式創建窗體 2.3.2 窗體常用的控件 …

圖片生成Prompt編寫技巧

1. 圖片情緒(場景氛圍) 一張圖片一般都會有一個情緒基調,因為作畫本質上也是在傳達一些情緒,一般都會借助圖片的氛圍去轉達。例如:比如家庭聚會一般是歡樂、喜樂融融。斷壁殘垣一般是悲涼。還有蕭瑟、孤寂等。 2.補充細…

算法題目總結-鏈表

文章目錄 1.環形鏈表1.答案2.思路 2.兩數相加1.答案2.結果 3.反轉鏈表1.答案2.思路 4.反轉鏈表 II1.答案2.思路 5.K 個一組翻轉鏈表1.答案2.思路 6.刪除鏈表的倒數第 N 個結點1.答案2.思路 7.刪除排序鏈表中的重復元素 II1.答案2.思路 8.旋轉鏈表1.答案2.思路 9.LRU 緩存1.答案…

【Unity3D】3D物體擺放、場景優化案例Demo

目錄 PlaceManager.cs(放置管理類) Ground.cs(地板類) 和 GroundData.cs(地板數據類) 額外知識點說明 1、MeshFilter和MeshRenderer的Bounds區別 2、Gizmos 繪制一個平行于斜面的立方體 通過網盤分享的文件:PlaceGameDemo2.unitypackage 鏈接: https://pan.baid…

OpenEuler學習感悟

在初次接觸 OpenEuler 時,我深感其學習難度較大。它與我之前熟悉的操作系統存在諸多差異,學習過程中,需要理解復雜的內核機制、掌握獨特的系統配置方法。但正是這種挑戰,激發了我深入探索的熱情。 從理論學習入手,我發…

C# OpenCvSharp 部署文檔矯正,包括文檔扭曲/模糊/陰影等情況

目錄 說明 效果 模型 項目 代碼 下載 參考 C# OpenCvSharp 部署文檔矯正,包括文檔扭曲/模糊/陰影等情況 說明 地址:https://github.com/RapidAI/RapidUnDistort 修正文檔扭曲/模糊/陰影等情況,使用onnx模型簡單輕量部署&#xff0c…

CSS 溢出問題及解決方案:實用案例與技巧

在網頁開發中,CSS 的布局和樣式起著至關重要的作用,但經常會遇到一個棘手的問題——溢出問題。溢出是指元素內的內容超出了其設定的容器大小,這不僅會影響頁面的美觀,還可能干擾用戶體驗。本文將詳細探討 CSS 溢出問題的案例&…

生成樹機制實驗

1 實驗內容 1、基于已有代碼,實現生成樹運行機制,對于給定拓撲(four_node_ring.py),計算輸出相應狀態下的生成樹拓撲 2、構造一個不少于7個節點,冗余鏈路不少于2條的拓撲,節點和端口的命名規則可參考four_node_ring.py,使用stp程序計算輸出生成樹拓撲 2 實驗原理 一、…

數據結構詳解——堆與二叉樹

? 目錄 樹的概念樹的表示方法二叉樹的概念特殊的二叉樹二叉樹的性質二叉樹的存儲結構順序存儲鏈式存儲 堆的概念與結構堆的性質堆的實現堆的初始化入堆堆的擴容向上調整算法出堆(最頂端元素)向下調整算法 二叉樹的實現二叉樹的創建二叉樹的銷毀二叉樹的…

【藍橋杯】43694.正則問題

題目描述 考慮一種簡單的正則表達式: 只由 x ( ) | 組成的正則表達式。 小明想求出這個正則表達式能接受的最長字符串的長度。 例如 ((xx|xxx)x|(x|xx))xx 能接受的最長字符串是: xxxxxx,長度是 6。 輸入描述 一個由 x()| 組成的正則表達式。…

mac m1下載maven安裝并配置環境變量

下載地址:Download Apache Maven – Maven 解壓到一個沒有中文和空格的文件夾 輸入pwd查看安裝路徑 輸入cd返回根目錄再輸入 code .zshrc 若顯示 command not found: code你可以通過以下步驟來安裝和配置 code 命令: 1. 確保你已經安裝了 Visual Studio…

【自己動手開發Webpack插件:開啟前端構建工具的個性化定制之旅】

在前端開發的世界里,Webpack無疑是構建工具中的“明星”。它強大的功能可以幫助我們高效地打包和管理前端資源。然而,有時候默認的Webpack功能可能無法完全滿足我們的特定需求,這時候就需要自定義Webpack插件來大展身手啦!今天&am…

移遠通信多模衛星通信模組BG95-S5獲得Skylo網絡認證,進一步拓展全球衛星物聯網市場

近日,全球領先的物聯網整體解決方案供應商移遠通信正式宣布,其支持“衛星蜂窩”多模式的高集成度NTN衛星通信模組BG95-S5已成功獲得NTN網絡運營商Skylo的網絡認證。BG95-S5也成為了獲得該認證的最新款移遠衛星通信模組。 BG95-S5模組順利獲得Skylo認證&a…

1.3.淺層神經網絡

目錄 1.3.淺層神經網絡 1.3.1 淺層神經網絡表示 1.3.2 單個樣本的向量化表示 1.3.4 激活函數的選擇 1.3.5 修改激活函數 1.3.5 練習??????? 1.3.淺層神經網絡 1.3.1 淺層神經網絡表示 之前已經說過神經網絡的結構了,在這不重復敘述。假設我們有如下…

StarRocks強大的實時數據分析

代碼倉庫:https://github.com/StarRocks/starrocks?tabreadme-ov-file StarRocks | A High-Performance Analytical Database 快速開始:StarRocks | StarRocks StarRocks 是一款高性能分析型數據倉庫,使用向量化、MPP 架構、CBO、智能物化…

2024年博客之星主題創作|貓頭虎分享AI技術洞察:2025年AI發展趨勢前瞻與展望

2025年AI發展趨勢前瞻:貓頭虎深度解析未來科技與商業機遇 摘要 2024年,AI技術迎來爆發式增長,AIGC、智能體、AIRPA、AI搜索、推理模型等技術不斷突破,AI應用場景持續擴展。2025年,AI將進入全新發展階段,W…

PG vs MySQL mvcc機制實現的異同

MVCC實現方法比較 MySQL 寫新數據時,把舊數據寫入回滾段中,其他人讀數據時,從回滾段中把舊的數據讀出來 PostgreSQL 寫新數據時,舊數據不刪除,直接插入新數據。 MVCC實現的原理 PG的MVCC實現原理 定義多版本的數據…