基于Faster R-CNN的安全帽目標檢測

基于Faster R-CNN的安全帽目標檢測項目通常旨在解決工作場所,特別是建筑工地的安全監管問題。這類項目使用計算機視覺技術,特別是深度學習中的Faster R-CNN算法,來自動檢測工人是否正確佩戴了安全帽,從而確保遵守安全規定并減少事故風險。

項目背景與目標: 在建筑、礦山和其他高風險作業環境中,安全帽是保護工人免受頭部傷害的基本裝備。然而,人工檢查安全帽的佩戴情況效率低下且容易出錯。因此,開發自動化檢測系統可以提高工作效率和安全性。

技術細節:

  • 數據收集:?項目首先需要收集大量包含工人頭像和安全帽的圖像數據,這些數據可能來自于監控攝像頭或專門拍攝的照片。
  • 數據標注:?對于每一張圖片,需要手動標注安全帽的位置,這通常涉及劃定邊界框并標記類別(例如,有安全帽、無安全帽)。
  • 模型訓練:?使用標注過的數據集來訓練Faster R-CNN模型。Faster R-CNN是一個兩階段的目標檢測模型,它包括一個區域提議網絡(RPN)用于生成候選區域,以及一個用于分類和定位的后續網絡。
  • 模型評估:?在測試集上評估模型的性能,調整超參數以優化準確性和召回率。
  • 部署:?將訓練好的模型部署到實際環境中,如連接到現場的攝像頭,實時分析視頻流,識別未戴安全帽的人員。

應用與優勢:

  • 實時監控:系統能夠連續地分析視頻流,及時發現未佩戴安全帽的情況。
  • 減少人力成本:自動化檢測減少了對人工監督的需求,節省了人力資源。
  • 提高安全性:通過及時提醒未遵守安全規定的工人,降低潛在的事故風險。
  • 數據分析:收集的數據可用于進一步分析安全行為模式,幫助改善安全管理策略。

挑戰與限制:

  • 光照條件變化:室外環境光照變化大,可能影響檢測效果。
  • 遮擋問題:工人的姿勢、其他物體或人群的遮擋會增加檢測難度。
  • 計算資源:實時視頻處理需要強大的計算能力,尤其是在邊緣設備上。

總之,基于Faster R-CNN的安全帽目標檢測項目是一個綜合了數據科學、計算機視覺和深度學習技術的解決方案,旨在提高工作場所的安全性。

?

1. 🔥 訓練模型前的準備

  • A.數據準備

數據的標注仍然采用VOC格式的數據標注形式,如果是其他的標注形式比如COCO請自行實現相關代碼。將數據最終轉化為如下形式:

    #  單行數據的結構: (path_filename, x1, y1, x2, y2, class_name)# Note:#   一個path_filename 可能對應多個類別(class_name),每個類別占用一行數據#   x1, y1, x2, y2 是原圖像的坐標, 而不是ratio后圖像上的坐標#   (x1, y1) 標注框的左上坐標; (x2, y2) 標注框的右下坐標#   x1,y1-------------------#   |                       |#   |                       |#   |                       |#   |                       |#   ---------------------x2,y2

可以運行如下代碼實現數據集的準備工作:

python3 ./data/data_pro.py

將在./data文件夾下生成annotation.txt文件,這樣訓練數據的準備工作即完成。

# path_filename, x1, y1, x2, y2, class_name
/home/myuser/xujing/Faster-R-CNN_hat/data/JPEGImages/000605.jpg,37,12,151,154,hat
/home/myuser/xujing/Faster-R-CNN_hat/data/JPEGImages/000605.jpg,243,1,393,176,hat
/home/myuser/xujing/Faster-R-CNN_hat/data/JPEGImages/PartB_02176.jpg,92,593,180,684,person
/home/myuser/xujing/Faster-R-CNN_hat/data/JPEGImages/PartB_02176.jpg,229,648,357,777,person
  • B.配置文件準備

根據自己的訓練集和訓練任務修改./keras_frcnn/config.py的配置文件,相關參數的解釋和配置如下:

self.verbose = True  # 顯示訓練過程
self.network = 'vgg' # backbone 目前支持vgg(VGG16),resnet50,xception,inception_resnet_v2# 數據增強策略
self.use_horizontal_flips = False  # 水平隨機裁剪
self.use_vertical_flips = False  # 垂直隨機裁剪
self.rot_90 = False    # 隨機90度旋轉# Anchor Box的scale
# 根據具體的情況去修改,一般是圖像或目標的大小做調整!!!!
# self.anchor_box_scales = [128,256,512]
self.anchor_box_scales = [4,8,16,64,128,256,512,1024]# Anchor Box的ratio
self.anchor_box_ratios = [[1, 1], [1, 2], [2, 1]]
# self.anchor_box_ratios = [[1, 1]]# 圖像最小變填充后的尺寸
self.im_size = 600# 圖像channel-wise上的mean和std,這個值是根據ImageNet數據集得到的
# 可以根據自己訓練集調整
self.img_channel_mean = [103.939, 116.779, 123.68]
self.img_scaling_factor = 1.0# 一次得到的ROI的個數
self.num_rois = 32# RPN網絡特征圖的縮小倍數(VGG16的是16,其他網絡請自行修改該參數)
# 換網絡時 要換的!!!
self.rpn_stride = 16
# 訓練時是否做類別blance
self.balanced_classes = False# Regression時的scaling the stdev
self.std_scaling = 4.0
self.classifier_regr_std = [8.0, 8.0, 4.0, 4.0]# 訓練集制作過程中的正負樣本的劃分策略,詳細才考faster R-CNN原論文
# overlaps for RPN
self.rpn_min_overlap = 0.3
self.rpn_max_overlap = 0.7# overlaps for classifier ROIs
self.classifier_min_overlap = 0.1
self.classifier_max_overlap = 0.5# class類別映射
self.class_mapping = None# base network的預訓練模型的存放位置
# keras預訓練模型可以在這里下載: https://github.com/fchollet/deep-learning-modelsself.model_path = './pre_train/vgg16_weights_tf_kernels_notop.h5'  # 我們使用VGG16

2. 🐎 訓練模型

預訓練模型:Shell下運行

python3 train_frcnn.py --path="./data/annotation.txt" --network="vgg" --input_weight_path="./pre_train/vgg16_weights_tf_kernels_notop.h5"

windows下直接運行我們寫好的批處理文件:

run_train.bat

3. 🚀 模型推斷

將需要測試的圖像和視頻拷貝到./new_test文件夾

  • A.單張圖像推斷

Shell下運行:

python3 test_frcnn.py --path="./new_test"

windows下直接運行我們寫好的批處理文件:

run_inference.bat
  • B.視頻推斷

Shell下運行:

python3 test_frcnn_video.py --path="./new_test/test_video.mp4"

windows下直接運行我們寫好的批處理文件:

test_video.bat

4. 🎉 DEMO

?

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

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

相關文章

實驗一:圖像信號的數字化

目錄 一、實驗目的 二、實驗原理 三、實驗內容 四、源程序及結果 源程序(python): 結果: 五、結果分析 一、實驗目的 通過本實驗了解圖像的數字化過程,了解數字圖像的數據矩陣表示法。掌握取樣(象素個…

用Python爬蟲能實現什么?得到什么?

Python爬蟲是一種強大的工具,可以用來自動化地從互聯網上抓取數據和信息。使用Python實現爬蟲可以達成多種目的,包括但不限于以下幾個方面: 數據收集: 網頁內容抓取:可以抓取網頁上的文本、圖片、視頻等內容。搜索引擎…

Linux 網絡配置與連接

一、網絡配置 1.1 ifconfig 網卡配置查詢 ifconfig #查看所有啟動的網絡接口信息 ifconfig 指定的網卡 #查看指定網絡接口信息 1.2 修改網絡配置文件 vim /etc/sysconfig/network-scripts/ifcfg-ens33 #ens33網絡配置文…

【電源拓撲】反激拓撲

目錄 工作模式 固定頻率 CCM連續電流模式 DCM不連續電流模式 可變頻率 CRM電流臨界模式 反激電源CRM工作模式為什么要跳頻 反激電源應用場景 為什么反激電源功率做不大 電感電流爬升 反激變壓器的限制條件 精通反激電源設計的關鍵-反激電源變壓器設計 反激電源變壓…

MySQL 事務與鎖

事務ACID特性 原子性:事務要么同時成功,要么同時失敗,事務的原子性通過undo log日志保證 一致性:業務代碼要拋出報錯,讓數據庫回滾 隔離性:事務并發執行時,他們內部操作不能互相干擾 持久性&…

Python 讀取esxi上所有主機的設備信息

(主要是為了統計所有虛擬機的設備名稱和所屬主機) 代碼: from pyVim import connect from pyVmomi import vim import ssldef get_vm_devices(vm):devices []try:if vm.config is not None and hasattr(vm.config, hardware) and hasattr(v…

SpringBoot解決Apache Tomcat輸入驗證錯誤漏洞

Apache Tomcat是美國阿帕奇(Apache)基金會的一款輕量級Web應用服務器。該程序實現了對Servlet和JavaServer Page(JSP)的支持。 Apache Tomcat存在輸入驗證錯誤漏洞,該漏洞源于HTTP/2請求的輸入驗證不正確,會…

postgresql簡單導出數據與手動本地恢復(小型數據庫)

問題 需要每天手動備份postgresql。 步驟 導出數據 /opt/homebrew/opt/postgresql16/bin/pg_dump --file/Users/zhangyalin/backup_sql/<IP地址>_pg-2024_07_15_17_30_15-dump.sql --dbname<數據庫名> --username<用戶名> --host<IP地址> --port54…

Day53:圖論 島嶼數量 島嶼的最大面積

99. 島嶼數量 時間限制&#xff1a;1.000S 空間限制&#xff1a;256MB 題目描述 給定一個由 1&#xff08;陸地&#xff09;和 0&#xff08;水&#xff09;組成的矩陣&#xff0c;你需要計算島嶼的數量。島嶼由水平方向或垂直方向上相鄰的陸地連接而成&#xff0c;并且四周…

低空經濟持續發熱,無人機培訓考證就業市場及前景剖析

隨著科技的不斷進步和社會需求的日益增長&#xff0c;低空經濟已成為全球及我國經濟增長的新引擎。作為低空經濟的重要組成部分&#xff0c;無人機技術因其廣泛的應用領域和顯著的經濟效益&#xff0c;受到了社會各界的廣泛關注。為滿足市場對無人機人才的需求&#xff0c;無人…

深入剖析 Android 開源庫 EventBus 的源碼詳解

文章目錄 前言一、EventBus 簡介EventBus 三要素EventBus 線程模型 二、EventBus 使用1.添加依賴2.EventBus 基本使用2.1 定義事件類2.2 注冊 EventBus2.3 EventBus 發起通知 三、EventBus 源碼詳解1.Subscribe 注解2.注冊事件訂閱方法2.1 EventBus 實例2.2 EventBus 注冊2.2.1…

夢想CAD在線預覽編輯功能

1.最近有個需求&#xff0c;在web系統里進行在線進行CAD預覽和編輯&#xff0c;這里用的是夢想CAD實現此功能&#xff0c;夢想CAD官網文檔 2.CAD預覽&#xff0c;需要需要對CAD文件格式進行轉化&#xff0c;將dwg文件格式轉化為mxweb格式&#xff0c;再進行調用夢想CAD里的打開…

ipynb轉換為pdf、Markdown(.md)

Jupyter Notebook 文件&#xff08;.ipynb&#xff09;可以轉換成多種數據格式&#xff0c;以適應不同的使用場景和需求。以下是幾種常見的轉換格式及其簡潔描述&#xff1a; HTML: Jupyter Notebook可以直接導出為靜態的網頁&#xff08;HTML&#xff09;格式&#xff0c;這樣…

記一次IP數據處理過程,文本(CSV文件)處理,IP解析

個人博客&#xff1a;無奈何楊&#xff08;wnhyang&#xff09; 個人語雀&#xff1a;wnhyang 共享語雀&#xff1a;在線知識共享 Github&#xff1a;wnhyang - Overview 起因 突然接收到XX給的任務&#xff0c;要將一批IP數據處理一下&#xff0c;將IP對應的省市區解析出來…

PHP基礎語法

PHP 腳本在服務器上執行&#xff0c;然后將純 HTML 結果發送回瀏覽器。 基本的 PHP 語法 PHP 腳本可以放在文檔中的任何位置。 PHP 腳本以 <?php 開始&#xff0c;以 ?> 結束&#xff1a; <?php // PHP 代碼 ?> PHP 文件的默認文件擴展名是 .php。 PHP 文…

PHP智云物業管理平臺微信小程序系統源碼

?&#x1f3e0;智云物業管理新紀元&#xff01;微信小程序&#xff0c;讓家園管理更智慧&#x1f4f1; &#x1f3e1;【開篇&#xff1a;智慧生活&#xff0c;從物業開始】&#x1f3e1; 在快節奏的現代生活中&#xff0c;我們追求的不僅僅是家的溫馨&#xff0c;更是生活的…

基于hive數據庫的泰坦尼克號幸存者數據分析

進入 ./beeline -u jdbc:hive2://node2:10000 -n root -p 查詢 SHOW TABLES; 刪除 DROP TABLE IF EXISTS tidanic; 上傳數據 hdfs dfs -put train.csv /user/hive/warehouse/mytrain.db/tidanic 《泰坦尼克號幸存者數據分析》 1、原始數據介紹 泰坦尼克號是當時世界上…

達夢數據庫系列—28. 主備集群高可用測試

目錄 監視器關閉 監視器啟動&#xff0c;Detach備庫 主備正常&#xff0c;手動switchover 主庫故障&#xff0c;自動switchover 主庫故障&#xff0c;手動Takeover 主庫故障&#xff0c;備庫強制takeover 主庫重啟 備庫故障 公網連接異常 主庫私網異常 備庫私網異常…

實現給Nginx的指定網站開啟basic認證——http基本認證

一、問題描述 目前我們配置的網站內容都是沒有限制&#xff0c;可以讓任何人打開瀏覽器都能夠訪問&#xff0c;這樣就會存在一個問題&#xff08;可能會存在一些惡意訪問的用戶進行惡意操作&#xff0c;直接訪問到我們的敏感后臺路徑進行操作&#xff0c;風險就會很大&#xff…

云原生周刊:Score 成為 CNCF 沙箱項目|2024.7.15

開源項目 Trident Trident 是由 NetApp 維護的全面支持的開源項目。它從頭開始設計&#xff0c;旨在通過行業標準接口&#xff08;如容器存儲接口 CSI&#xff09;幫助您滿足容器化應用程序對持久性存儲的需求。 Monokle Monokle 通過提供用于編寫 YAML 清單、驗證策略和管…