توزیع اندازه نسبی

دستورالعمل برای تحلیل و مصورسازی توزیع اندازه‌های حاشیه‌نویسی نسبت به تصویر

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

1. محاسبه اندازه حاشیه‌نویسی

اندازه هر حاشیه‌نویسی را نسبت به تصویر مربوطه محاسبه کنید. این کار را می‌توان با محاسبه نسبت مساحت یا ابعاد جعبه محدودکننده انجام داد.

2. گروه‌بندی حاشیه‌نویسی‌ها بر اساس دسته‌بندی اندازه

حاشیه‌نویسی‌ها را بر اساس اندازه نسبی‌شان به تصویر در دسته‌های اندازه مختلف گروه‌بندی کنید. به عنوان مثال، می‌توانید حاشیه‌نویسی‌ها را به صورت کوچک، متوسط و بزرگ بر اساس آستانه‌های تعریف شده دسته‌بندی کنید.

3. محاسبه اندازه متوسط تصویر

اندازه متوسط تصاویر حاوی حاشیه‌نویسی‌ها را برای هر دسته اندازه محاسبه کنید. این کار را می‌توان با میانگین‌گیری ابعاد (مثلاً عرض و ارتفاع) تصاویر با حاشیه‌نویسی‌ها در هر دسته اندازه انجام داد.

4. مصورسازی توزیع

یک نمودار (مثلاً نمودار ستونی) برای مصورسازی توزیع حاشیه‌نویسی‌ها در دسته‌های اندازه ایجاد کنید. هر ستون نماینده یک دسته اندازه است و ارتفاع ستون درصد حاشیه‌نویسی‌ها در آن دسته نسبت به کل تعداد حاشیه‌نویسی‌ها را نشان می‌دهد.

5. افزودن اطلاعات اضافی

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

کد پایتون برای اجرای مراحل فوق

در اینجا یک نمونه کد پایتون برای انجام این تحلیل و مصورسازی ارائه شده است:

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

# بارگذاری حاشیه‌نویسی‌ها و تصاویر
annotations = pd.read_csv('annotations.csv')  # فرض بر این است که حاوی ستون‌های 'image_id', 'x', 'y', 'width', 'height' است
images = pd.read_csv('images.csv')  # فرض بر این است که حاوی ستون‌های 'image_id', 'width', 'height' است

# محاسبه اندازه نسبی حاشیه‌نویسی‌ها
annotations = annotations.merge(images, on='image_id')
annotations['relative_area'] = (annotations['width_x'] * annotations['height_x']) / (annotations['width_y'] * annotations['height_y'])

# تعریف آستانه‌ها برای دسته‌بندی اندازه‌ها
small_threshold = 0.01
large_threshold = 0.1

annotations['size_category'] = pd.cut(annotations['relative_area'],
                                      bins=[0, small_threshold, large_threshold, np.inf],
                                      labels=['Small', 'Medium', 'Large'])

# محاسبه توزیع حاشیه‌نویسی‌ها در دسته‌های اندازه
size_distribution = annotations['size_category'].value_counts(normalize=True) * 100

# محاسبه اندازه متوسط تصاویر در هر دسته اندازه
average_image_size_by_category = annotations.groupby('size_category').apply(lambda x: (x['width_y'] * x['height_y']).mean())

# اندازه متوسط تصویر مجموعه داده‌ها
average_dataset_image_size = (images['width'] * images['height']).mean()

# مصورسازی توزیع حاشیه‌نویسی‌ها
fig, ax1 = plt.subplots(figsize=(10, 6))

color = 'tab:blue'
ax1.set_xlabel('Size Category')
ax1.set_ylabel('Percentage of Annotations', color=color)
ax1.bar(size_distribution.index, size_distribution.values, color=color, alpha=0.6)
ax1.tick_params(axis='y', labelcolor=color)

# اضافه کردن اندازه متوسط تصاویر به نمودار
ax2 = ax1.twinx()  
color = 'tab:red'
ax2.set_ylabel('Average Image Size', color=color)  
ax2.bar(average_image_size_by_category.index, average_image_size_by_category.values, color=color, alpha=0.4)
ax2.axhline(y=average_dataset_image_size, color='cyan', linestyle='--', label='Average Dataset Image Size')
ax2.tick_params(axis='y', labelcolor=color)

fig.tight_layout()  
plt.title('Distribution of Annotations by Size Category and Average Image Sizes')
plt.legend(loc='upper right')
plt.show()

توضیحات کد

  • بارگذاری داده‌ها: حاشیه‌نویسی‌ها و تصاویر از فایل‌های CSV بارگذاری می‌شوند.

  • محاسبه اندازه نسبی: اندازه نسبی هر حاشیه‌نویسی نسبت به تصویر مربوطه محاسبه می‌شود.

  • دسته‌بندی اندازه‌ها: حاشیه‌نویسی‌ها بر اساس آستانه‌های تعریف شده به دسته‌های کوچک، متوسط و بزرگ تقسیم می‌شوند.

  • محاسبه توزیع و اندازه متوسط: توزیع حاشیه‌نویسی‌ها در دسته‌های مختلف محاسبه شده و اندازه متوسط تصاویر در هر دسته به دست می‌آید.

  • مصورسازی: توزیع حاشیه‌نویسی‌ها و اندازه متوسط تصاویر در هر دسته به صورت نمودار ستونی نمایش داده می‌شود.

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

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

Last updated