turns-00055.parquet:45370
3ad4938b1a49fb0d5620ed3e
turn 5/19gpt-4o-2024-11-20PersianItaly637 words
degenerate_repetitionAbsentFinal dense release
USER
اکنون 5 تصویر اول هر کدام از image و label را از فولدرهای test , train , valid چاپ کن تا تطلبق و ترتیب تصاویر را چک کنیم
ASSISTANT
برای چاپ 5 تصویر اول از هر کدام از پوشههای `test`، `train` و `valid` (تصاویر و فایلهای لیبل) و چک کردن اینکه ترتیب و انطباق فایلها درست است، میتوان کد زیر را اجرا کرد. این کد به پوشههای مقصد دسترسی پیدا میکند و دادهها را بررسی میکند.
---
### کد نهایی:
```python
import os
# مسیرهای پوشههای تقسیمشده
base_path = "dataset_splits"
datasets = ["train", "valid", "test"] # مجموعهها
# تابع برای چاپ 5 فایل اول در هر پوشه
def print_first_five(dataset):
# مسیر پوشه تصاویر و لیبلها
images_dir = os.path.join(base_path, dataset, "images")
labels_dir = os.path.join(base_path, dataset, "labels")
# دریافت لیست نام فایلها و مرتبسازی آنها
image_files = sorted(os.listdir(images_dir))
label_files = sorted(os.listdir(labels_dir))
# چاپ تعداد فایلها در مجموعه
print(f"\n--- {dataset.upper()} SET ---")
print(f"Total Images: {len(image_files)}")
print(f"Total Labels: {len(label_files)}")
# اطمینان از تطابق بین نام تصاویر و لیبلها
assert len(image_files) == len(label_files), f"تعداد تصاویر و لیبلها در مجموعه {dataset} یکسان نیست!"
for img_file, lbl_file in zip(image_files, label_files):
assert os.path.splitext(img_file)[0] == os.path.splitext(lbl_file)[0], \
f"تصویر {img_file} با لیبل {lbl_file} همخوانی ندارد!"
# چاپ 5 تای اول تصاویر و لیبلها
print("First 5 Images:", image_files[:5])
print("First 5 Labels:", label_files[:5])
# نمایش محتوای لیبلهای 5 تای اول
for i in range(min(5, len(label_files))):
label_path = os.path.join(labels_dir, label_files[i])
with open(label_path, "r") as f:
label_content = f.read()
print(f"\nLabel Content for {label_files[i]}:\n{label_content}")
# اجرای بررسی برای مجموعههای train, valid, test
for dataset in datasets:
print_first_five(dataset)
```
---
### توضیحات کد:
1. **مسیر مشترک مجموعهها**:
- مسیر کلی `dataset_splits`، که شامل ترکیب دادهها (`train`، `valid` و `test`) است، مورد استفاده قرار میگیرد.
- در هر مجموعه، تصاویر در پوشه `images` و لیبلها در پوشه `labels` قرار دارند.
2. **جمعآوری فایلها**:
- فایلها در هر پوشه بهصورت مرتب (`sorted`) جمعآوری میشوند.
3. **بررسی انطباق**:
- تعداد فایلهای تصاویر و لیبلها بررسی میشوند تا یکسان باشند.
- اسامی فایلها بدون پسوند مورد بررسی قرار میگیرند تا از مطابقت آنها اطمینان حاصل شود.
4. **چاپ فایلها**:
- پنج فایل اول از تصاویر و لیبلها چاپ میشود.
- همچنین محتوای فایلهای لیبل چاپ میشود تا اطمینان حاصل شود که دادهها به درستی جفت شدهاند.
---
### خروجی:
فرض کنید:
- مجموعه دادهها شامل 100 نمونه بوده که به `train`، `valid` و `test` تقسیم شدهاند.
- هر لیبل شامل اطلاعات کلاسبندی و مختصات است.
نمونه خروجی برای هر بخش به صورت زیر خواهد بود:
```
--- TRAIN SET ---
Total Images: 72
Total Labels: 72
First 5 Images: ['00001.jpg', '00002.jpg', '00003.jpg', '00004.jpg', '00005.jpg']
First 5 Labels: ['00001.txt', '00002.txt', '00003.txt', '00004.txt', '00005.txt']
Label Content for 00001.txt:
0 0.1 0.2 0.3 0.4
Label Content for 00002.txt:
1 0.4 0.6 0.2 0.3
---
--- VALID SET ---
Total Images: 18
Total Labels: 18
First 5 Images: ['00073.jpg', '00074.jpg', '00075.jpg', '00076.jpg', '00077.jpg']
First 5 Labels: ['00073.txt', '00074.txt', '00075.txt', '00076.txt', '00077.txt']
Label Content for 00073.txt:
1 0.4 0.5 0.3 0.2
Label Content for 00074.txt:
0 0.3 0.4 0.2 0.2
---
--- TEST SET ---
Total Images: 10
Total Labels: 10
First 5 Images: ['00091.jpg', '00092.jpg', '00093.jpg', '00094.jpg', '00095.jpg']
First 5 Labels: ['00091.txt', '00092.txt', '00093.txt', '00094.txt', '00095.txt']
Label Content for 00091.txt:
2 0.5 0.5 0.3 0.3
Label Content for 00092.txt:
0 0.3 0.4 0.1 0.2
```
---
### تأیید:
- **مطابقت تعداد فایلها**: تعداد تصاویر و لیبلها در هر مجموعه یکسان است.
- **مطابقت نام فایلها**: اسامی فایلهای تصاویر و لیبلها همخوان هستند.
- **مطابقت محتوای فایلهای لیبل**: نمونهای از محتوای فایلهای لیبل چاپ میشود تا بررسی شود دادهها صحیح هستند.
---
### نکته اختیاری:
اگر نیاز به مشاهده مستقیم تصاویر دارید، میتوانید از کتابخانههایی مانند OpenCV یا Matplotlib برای نمایش آنها استفاده کنید. برای مثال:
```python
import cv2
import matplotlib.pyplot as plt
# نمونه کد برای نمایش یک تصویر
img_path = os.path.join("dataset_splits", "train", "images", "00001.jpg")
img = cv2.imread(img_path)
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.show()
```