تست سلامت دیتاست

برای انجام یک "بررسی سلامت داده‌ها" به منظور اطمینان از کیفیت و مناسب بودن داده‌ها برای آموزش مدل‌های یادگیری ماشین، می‌توان از مراحلی مشابه آنچه در بالا توضیح داده شد استفاده کرد. در ادامه، یک راهنمای مرحله به مرحله به زبان فارسی برای تولید نقشه حرارتی از همپوشانی حاشیه‌نویسی‌ها ارائه شده است:

راهنمای مرحله به مرحله برای تولید نقشه حرارتی همپوشانی حاشیه‌نویسی‌ها

1. آماده‌سازی داده‌ها

تمام حاشیه‌نویسی‌های مجموعه داده را جمع‌آوری کنید. این شامل جعبه‌های محدودکننده، چندضلعی‌ها یا ماسک‌های قطعه‌بندی به همراه متاداده‌های مرتبط مانند نام فایل‌های تصویر یا شناسه‌های حاشیه‌نویسی است.

import pandas as pd

# مثال: بارگذاری حاشیه‌نویسی‌ها در یک DataFrame
annotations = pd.read_csv('annotations.csv')

2. محاسبه مناطق همپوشانی

برای هر تصویر، مناطق همپوشانی بین حاشیه‌نویسی‌ها را محاسبه کنید. اگر از جعبه‌های محدودکننده استفاده می‌کنید، این شامل بررسی تقاطع بین جعبه‌ها می‌شود.

import numpy as np

def compute_iou(box1, box2):
    # محاسبه تقاطع-به-اتحاد برای دو جعبه محدودکننده
    x1, y1, w1, h1 = box1
    x2, y2, w2, h2 = box2

    xi1 = max(x1, x2)
    yi1 = max(y1, y2)
    xi2 = min(x1 + w1, x2 + w2)
    yi2 = min(y1 + h1, y2 + h2)
    inter_area = max(0, xi2 - xi1) * max(0, yi2 - yi1)

    box1_area = w1 * h1
    box2_area = w2 * h2
    union_area = box1_area + box2_area - inter_area

    iou = inter_area / union_area
    return iou

# مثال: محاسبه IOU برای همه حاشیه‌نویسی‌های یک تصویر
image_annotations = annotations[annotations['image_id'] == 'image_1']
overlaps = np.zeros((len(image_annotations), len(image_annotations)))

for i in range(len(image_annotations)):
    for j in range(i + 1, len(image_annotations)):
        box1 = image_annotations.iloc[i][['x', 'y', 'width', 'height']].values
        box2 = image_annotations.iloc[j][['x', 'y', 'width', 'height']].values
        overlaps[i, j] = compute_iou(box1, box2)
        overlaps[j, i] = overlaps[i, j]

3. جمع‌آوری همپوشانی‌ها

مناطق همپوشانی را جمع‌آوری کنید تا آمارهایی مانند تعداد همپوشانی‌ها را محاسبه کنید.

# خلاصه‌سازی تعداد همپوشانی‌ها
overlap_counts = np.sum(overlaps > 0.5, axis=0)  # مثال: آستانه 0.5 برای همپوشانی

4. تولید نقشه حرارتی

یک نقشه حرارتی تولید کنید تا همپوشانی‌های جمع‌آوری شده را نشان دهید.

import matplotlib.pyplot as plt
import seaborn as sns

# مثال: تولید نقشه حرارتی
plt.figure(figsize=(10, 8))
sns.heatmap(overlaps, annot=True, cmap='coolwarm', cbar=True)
plt.title('نقشه حرارتی همپوشانی حاشیه‌نویسی‌ها')
plt.xlabel('شاخص حاشیه‌نویسی')
plt.ylabel('شاخص حاشیه‌نویسی')
plt.show()

5. مصورسازی

نقشه حرارتی را مصورسازی کنید تا الگوهای همپوشانی یا توافق در سراسر مجموعه داده‌ها شناسایی شود.

6. تفسیر و تحلیل

نقشه حرارتی را تفسیر کنید تا کیفیت و ثبات حاشیه‌نویسی‌ها را ارزیابی کنید. به دنبال مناطق با همپوشانی بالا یا پایین باشید و در صورت لزوم بررسی‌های بیشتری انجام دهید.

مثال از اسکریپت بررسی سلامت داده‌ها

در اینجا یک مثال از اسکریپتی که مراحل بالا را یکپارچه می‌کند ارائه شده است:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

def compute_iou(box1, box2):
    x1, y1, w1, h1 = box1
    x2, y2, w2, h2 = box2

    xi1 = max(x1, x2)
    yi1 = max(y1, y2)
    xi2 = min(x1 + w1, x2 + w2)
    yi2 = min(y1 + h1, y2 + h2)
    inter_area = max(0, xi2 - xi1) * max(0, yi2 - yi1)

    box1_area = w1 * h1
    box2_area = w2 * h2
    union_area = box1_area + box2_area - inter_area

    iou = inter_area / union_area
    return iou

# بارگذاری حاشیه‌نویسی‌ها
annotations = pd.read_csv('annotations.csv')

# مقداردهی اولیه ماتریس همپوشانی
num_annotations = len(annotations)
overlaps = np.zeros((num_annotations, num_annotations))

# محاسبه همپوشانی‌ها
for i in range(num_annotations):
    for j in range(i + 1, num_annotations):
        box1 = annotations.iloc[i][['x', 'y', 'width', 'height']].values
        box2 = annotations.iloc[j][['x', 'y', 'width', 'height']].values
        overlaps[i, j] = compute_iou(box1, box2)
        overlaps[j, i] = overlaps[i, j]

# تولید نقشه حرارتی
plt.figure(figsize=(10, 8))
sns.heatmap(overlaps, annot=False, cmap='coolwarm', cbar=True)
plt.title('نقشه حرارتی همپوشانی حاشیه‌نویسی‌ها')
plt.xlabel('شاخص حاشیه‌نویسی')
plt.ylabel('شاخص حاشیه‌نویسی')
plt.show()

# جمع‌آوری آمار همپوشانی
overlap_counts = np.sum(overlaps > 0.5, axis=0)  # تنظیم آستانه بر حسب نیاز
print('تعداد همپوشانی‌ها:', overlap_counts)

نتیجه‌گیری

این اسکریپت یک چارچوب پایه برای انجام بررسی سلامت مجموعه داده‌ها از طریق مصورسازی همپوشانی حاشیه‌نویسی‌ها فراهم می‌کند. آستانه همپوشانی را تنظیم کرده و محاسبه همپوشانی را بر اساس ویژگی‌های خاص حاشیه‌نویسی‌ها و نیازهای کاربردی خود اصلاح کنید.

گیف بارگذاری شود

Last updated