根據YOLO數據集標簽計算檢測框內目標面積占比(YOLO7-10都適用)

程序:

路徑改成自己的,閾值可以修改也可以默認

#zhouzhichao
#25年5月17日
#計算時頻圖中信號面積占檢測框面積的比值import os
import numpy as np
import pandas as pd
from PIL import Image# Define the path to the directory containing the label txt files
label_dir = r'D:\實驗室\論文\論文-多信號參數估計\JCR3\Principle\微調原理\diff_snr\snr_dataset\label_txt'
img_dir = r'D:\實驗室\論文\論文-多信號參數估計\JCR3\Principle\微調原理\diff_snr\snr_dataset\6'
binary_output_dir = r'D:\實驗室\論文\論文-多信號參數估計\JCR3\Principle\像素面積比值\binary img'# Make sure the output directory exists
os.makedirs(binary_output_dir, exist_ok=True)# Initialize lists for storing the results for each class
ratios_0 = []
ratios_1 = []
ratios_2 = []
ratios_3 = []# Function to calculate the ratio of signal area to the bounding box area
def calculate_area_ratio(image_path, label_path, binary_output_dir):# Load the image and convert it to grayscaleimage = Image.open(image_path).convert('L')  # Convert to grayscale (L mode)image_array = np.array(image)# Read the label filewith open(label_path, 'r') as file:labels = file.readlines()for label in labels:# Parse the labellabel_data = label.strip().split()class_id = int(label_data[0])  # Class IDx_center = float(label_data[1])  # x center normalizedy_center = float(label_data[2])  # y center normalizedbox_width = float(label_data[3])  # box width normalizedbox_height = float(label_data[4])  # box height normalized# Convert the normalized values to pixel values based on image sizeimg_width, img_height = image.sizex_center_px = int(x_center * img_width)y_center_px = int(y_center * img_height)box_width_px = int(box_width * img_width)box_height_px = int(box_height * img_height)# Calculate the bounding box coordinatesx_min = max(x_center_px - box_width_px // 2, 0)y_min = max(y_center_px - box_height_px // 2, 0)x_max = min(x_center_px + box_width_px // 2, img_width)y_max = min(y_center_px + box_height_px // 2, img_height)# Extract the bounding box regionbbox_region = image_array[y_min:y_max, x_min:x_max]# Threshold the image (binary thresholding)binary_region = np.where(bbox_region > 128, 1, 0)  # 128 as threshold# Calculate the area of the signal inside the bounding box (sum of binary values)signal_area = np.sum(binary_region)# Calculate the area of the bounding boxbox_area = box_width_px * box_height_px# Save the binary image of the region to the output folderbinary_image = Image.fromarray(binary_region.astype(np.uint8) * 255)  # Convert to 0-255 scale for savingbinary_image.save(os.path.join(binary_output_dir, f'binary_{class_id}_{x_center_px}_{y_center_px}.png'))# Calculate the area ratioarea_ratio = signal_area / box_area if box_area > 0 else 0if class_id==0:ratios_0.append(area_ratio)if class_id==1:ratios_1.append(area_ratio)if class_id == 2:ratios_2.append(area_ratio)if class_id == 3:ratios_3.append(area_ratio)# Traverse all the label files and calculate area ratios
for label_file in os.listdir(label_dir):if label_file.endswith('.txt'):# Get corresponding image pathlabel_path = os.path.join(label_dir, label_file)image_name = label_file.replace('.txt', '.jpg')  # Assuming image is in .jpg formatimage_path = os.path.join(img_dir, image_name)# Calculate area ratios for the current label filecalculate_area_ratio(image_path, label_path, binary_output_dir)data = {'ratios_0': ratios_0,'ratios_1': ratios_1,'ratios_2': ratios_2,'ratios_3': ratios_3
}# 創建一個 DataFrame
df = pd.DataFrame(data)# 保存到 Excel 文件
file_path = r'D:\實驗室\論文\論文-多信號參數估計\JCR3\Principle\像素面積比值\area_ratios.xlsx'
df.to_excel(file_path, index=False)
print()

程序依照的公式:

生成結果:

可用于繪制論文實驗圖:

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

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

相關文章

AI神經網絡降噪 vs 傳統單/雙麥克風降噪的核心優勢對比

1. 降噪原理的本質差異 對比維度傳統單/雙麥克風降噪AI神經網絡降噪技術基礎基于固定規則的信號處理(如譜減法、維納濾波)基于深度學習的動態建模(DNN/CNN/Transformer)噪聲樣本依賴預設有限噪聲類型訓練數據覆蓋數十萬種真實環境…

了解Android studio 初學者零基礎推薦(3)

kotlin中的數據類及對象 使用泛型創建可重復使用的類 我們將常在線答題考試,有的考試題型包括判斷,或者填空,以及數學題,此外試題內容還包括難易程度:"easy”,"medium","hard",…

【占融數科-注冊/登錄安全分析報告】

前言 由于網站注冊入口容易被黑客攻擊,存在如下安全問題: 暴力破解密碼,造成用戶信息泄露短信盜刷的安全問題,影響業務及導致用戶投訴帶來經濟損失,尤其是后付費客戶,風險巨大,造成虧損無底洞…

記錄一次請求數據很慢的災難

起因: 因公司業務需要,對接了一個平臺的 api。對接完成之后,發現只要打開開關,就別的接口就訪問很慢,出現 gatway time out。 排查: 先看下主服務器和 slave 服務器的狀態: 主服務&#xff…

力扣-將x減到0的最小操作數

1.題目描述 2.題目鏈接 1658. 將 x 減到 0 的最小操作數 - 力扣(LeetCode) 3.題目分析 1)正面求解困難 題目要求我們每次都從最左邊或者最右邊取一個數,使x-元素的值,并在數組中移除該元素。最后返回的最小操作數…

排序復習/上(C語言版)

目錄 1.排序概念 2.冒泡排序 效率性能測試代碼: 性能分析: 3.直接插入排序 單趟: 整體: 性能分析: 4.希爾排序(基于插入排序的優化) 單趟單組: 單趟多組: 降低…

程序編輯器快捷鍵總結

程序編輯器快捷鍵總結 函數跳轉 函數跳轉 Creator : F2VSCode : F12visual Studio : F12

【LUT技術專題】極小尺寸LUT算法:TinyLUT

TinyLUT: Tiny Look-Up Table for Efficient Image Restoration at the Edge(2024 NeurIPS) 專題介紹一、研究背景二、TinyLUT方法2.1 Separable Mapping Strategy2.2 Dynamic Discretization Mechanism 三、實驗結果四、總結 本文將從頭開始對TinyLUT: …

解決:VMware 虛擬機 Ubuntu 系統共享文件夾無法訪問問題

以下是解決 VMware 虛擬機 Ubuntu 系統共享文件夾無法訪問 問題的完整過程總結,按關鍵步驟和邏輯順序梳理: 系統版本:Ubuntu 22.04.5 1. 確認 VMware Tools 已安裝 驗證方法:通過 ps -ef | grep vmtoolsd 檢查是否存在 vmtools…

YOLOv8 的雙 Backbone 架構:解鎖目標檢測新性能

一、開篇:為何踏上雙 Backbone 探索之路 在目標檢測的領域中,YOLOv8 憑借其高效與精準脫穎而出,成為眾多開發者和研究者的得力工具。然而,傳統的單 Backbone 架構,盡管已經在諸多場景中表現出色,但仍存在一…

k8s網絡架構

Kubernetes 網絡架構的設計目標是為 Pod 提供一個高效、靈活且可擴展的網絡環境,同時確保 Pod 之間的通信簡單直接,類似于在同一個物理網絡中。以下是 Kubernetes 網絡架構的原理和核心組件的詳細解析: 一、Kubernetes 網絡模型的基本原則 Ku…

C++高頻面試考點 -- 智能指針

C高頻面試考點 – 智能指針 C11中引入智能指針的概念&#xff0c;方便堆內存管理。這是因為使用普通指針&#xff0c;容易造成堆內存泄漏&#xff0c;二次釋放&#xff0c;程序發生異常時內存泄漏等問題。 智能指針在C11版本之后提供&#xff0c;包含在頭文件<memory>中…

JavaScript關鍵字完全解析:從入門到精通

前言 JavaScript作為目前最流行的編程語言之一&#xff0c;擁有豐富的關鍵字體系。這些關鍵字是語言的基礎組成部分&#xff0c;理解它們的含義和用法對于掌握JavaScript至關重要。本文將詳細介紹JavaScript中的所有關鍵字&#xff0c;包括ES6的新增關鍵字&#xff0c;幫助開發…

#6 百日計劃第六天 java全棧學習

今天學的啥 上午 算法byd圖論 圖遍歷dfs bfs 沒學懂呵呵 找到兩個良心up 圖碼 labuladong 看算法還好 尚硅谷講的太淺了 那你問我 下午呢 下午 java 看了會廖雪峰的教程 回顧基礎 小林coding Java基礎八股文 還有集合的八股文 有的不是很懂 今天把Java基礎算是完…

(4)ModalAI VOXL

文章目錄 前言 4.1 購買什么 4.2 硬件設置 4.3 VOXL 攝像機配置 4.4 自動駕駛儀配置 4.4.1 使用 OpticalFlow 進行 EKF3 光源轉換 4.5 視頻 前言 本文介紹了如何將 ModalAI VOXL-CAM 與 ArduPilot 配合使用&#xff0c;以替代 GPS&#xff0c;從而實現 Loiter、PosHold…

大模型高效微調方法綜述:P-Tuning軟提示與lora低秩微調附案例代碼詳解

Prompt Tuning 和 P-Tuning 都屬于“軟提示”&#xff08;soft prompt&#xff09;范式&#xff0c;但 P-Tuning 首次提出用小型 LSTM/MLP 對提示嵌入進行編碼生成&#xff0c;而 Prompt Tuning&#xff08;又稱 Soft Prompt Tuning&#xff09;則直接對一段可訓練的嵌入序列做…

圖解深度學習 - 深度學習的工作原理

上一篇&#xff0c;我們已經知道機器學習是將輸入&#xff08;比如圖像&#xff09;映射到目標&#xff08;比如數字“4”&#xff09;的過程。這一過程是通過觀察許多輸入和目標的示例來完成的。 我們還知道&#xff0c;深度神經網絡通過一系列簡單的數據變換&#xff08;層&…

實現圖片自動壓縮算法,canvas壓縮圖片方法

背景&#xff1a; 在使用某些支持webgl的圖形庫&#xff08;eg&#xff1a;PIXI.js&#xff0c;fabric.js&#xff09;場景中&#xff0c;如果加載的紋理超過webgl可處理的最大紋理限制&#xff0c;會導致渲染的紋理缺失&#xff0c;甚至無法顯示。 方案 實現圖片自動壓縮算…

周界安全防護新突破:AI智能分析網關V4周界入侵檢測算法的技術應用

一、方案概述 在安防周界防護領域&#xff0c;傳統紅外對射、電子圍欄等防護系統弊端顯著&#xff0c;其誤報率高&#xff0c;易受飛鳥、樹枝等干擾&#xff0c;且在惡劣天氣、復雜光照下難以精準識別入侵。隨著安全需求升級&#xff0c;基于AI智能分析網關V4的周界翻越入侵檢…

解決服務器重裝之后vscode Remote-SSH無法連接的問題

在你的windows命令窗口輸入&#xff1a; ssh-keygen -R 服務器IPssh-keygen 不是內部或外部命令 .找到Git(安裝目錄)/usr/bin目錄下的ssh-keygen.exe(如果找不到&#xff0c;可以在計算機全局搜索) 2.屬性–>高級系統設置–>環境變量–>系統變量,找到Path變量&#…