SKU-110k Veri Seti
SKU-110k veri kümesi, nesne algılama görevlerinde araştırmayı desteklemek için tasarlanmış, yoğun şekilde paketlenmiş perakende raf görüntülerinden oluşan bir koleksiyondur. Eran Goldman ve arkadaşları tarafından geliştirilen veri kümesi, birbirine yakın konumlandırılmış, genellikle benzer ve hatta aynı görünen yoğun şekilde paketlenmiş nesneler içeren 110.000'den fazla benzersiz mağaza tutma birimi (SKU) kategorisi içerir.
Temel Özellikler
- SKU-110k, dünyanın dört bir yanından mağaza raflarının görüntülerini içerir ve son teknoloji ürünü nesne dedektörleri için zorluk teşkil eden yoğun şekilde paketlenmiş nesneler içerir.
- Veri kümesi, 110.000'den fazla benzersiz SKU kategorisi içermekte ve çok çeşitli nesne görünümleri sağlamaktadır.
- Ek açıklamalar, nesneler için sınırlayıcı kutular ve SKU kategori etiketlerini içerir.
Veri Kümesi Yapısı
SKU-110k veri kümesi üç ana alt küme halinde düzenlenmiştir:
- Eğitim seti: Bu alt küme, nesne algılama modellerini eğitmek için kullanılan görüntüleri ve ek açıklamaları içerir.
- Doğrulama seti: Bu alt küme, eğitim sırasında model doğrulaması için kullanılan görüntülerden ve ek açıklamalardan oluşur.
- Test kümesi: Bu alt küme, eğitilmiş nesne algılama modellerinin nihai değerlendirmesi için tasarlanmıştır.
Uygulamalar
SKU-110k veri kümesi, özellikle perakende raf teşhirleri gibi yoğun şekilde paketlenmiş sahnelerde nesne algılama görevlerinde derin öğrenme modellerini eğitmek ve değerlendirmek için yaygın olarak kullanılmaktadır. Veri setinin çeşitli SKU kategorileri ve yoğun şekilde paketlenmiş nesne düzenlemeleri, onu bilgisayarla görme alanındaki araştırmacılar ve uygulayıcılar için değerli bir kaynak haline getirmektedir.
Veri Kümesi YAML
Veri kümesi yapılandırmasını tanımlamak için bir YAML (Yet Another Markup Language) dosyası kullanılır. Veri kümesinin yolları, sınıfları ve diğer ilgili bilgiler hakkında bilgi içerir. SKU-110K veri kümesi için SKU-110K.yaml
dosyası şu adreste tutulur https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/SKU-110K.yaml.
ultralytics/cfg/datasets/SKU-110K.yaml
# Ultralytics YOLO 🚀, AGPL-3.0 license
# SKU-110K retail items dataset https://github.com/eg4000/SKU110K_CVPR19 by Trax Retail
# Documentation: https://docs.ultralytics.com/datasets/detect/sku-110k/
# Example usage: yolo train data=SKU-110K.yaml
# parent
# ├── ultralytics
# └── datasets
# └── SKU-110K ← downloads here (13.6 GB)
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ../datasets/SKU-110K # dataset root dir
train: train.txt # train images (relative to 'path') 8219 images
val: val.txt # val images (relative to 'path') 588 images
test: test.txt # test images (optional) 2936 images
# Classes
names:
0: object
# Download script/URL (optional) ---------------------------------------------------------------------------------------
download: |
import shutil
from pathlib import Path
import numpy as np
import pandas as pd
from tqdm import tqdm
from ultralytics.utils.downloads import download
from ultralytics.utils.ops import xyxy2xywh
# Download
dir = Path(yaml['path']) # dataset root dir
parent = Path(dir.parent) # download dir
urls = ['http://trax-geometry.s3.amazonaws.com/cvpr_challenge/SKU110K_fixed.tar.gz']
download(urls, dir=parent)
# Rename directories
if dir.exists():
shutil.rmtree(dir)
(parent / 'SKU110K_fixed').rename(dir) # rename dir
(dir / 'labels').mkdir(parents=True, exist_ok=True) # create labels dir
# Convert labels
names = 'image', 'x1', 'y1', 'x2', 'y2', 'class', 'image_width', 'image_height' # column names
for d in 'annotations_train.csv', 'annotations_val.csv', 'annotations_test.csv':
x = pd.read_csv(dir / 'annotations' / d, names=names).values # annotations
images, unique_images = x[:, 0], np.unique(x[:, 0])
with open((dir / d).with_suffix('.txt').__str__().replace('annotations_', ''), 'w') as f:
f.writelines(f'./images/{s}\n' for s in unique_images)
for im in tqdm(unique_images, desc=f'Converting {dir / d}'):
cls = 0 # single-class dataset
with open((dir / 'labels' / im).with_suffix('.txt'), 'a') as f:
for r in x[images == im]:
w, h = r[6], r[7] # image width, height
xywh = xyxy2xywh(np.array([[r[1] / w, r[2] / h, r[3] / w, r[4] / h]]))[0] # instance
f.write(f"{cls} {xywh[0]:.5f} {xywh[1]:.5f} {xywh[2]:.5f} {xywh[3]:.5f}\n") # write label
Kullanım
SKU-110K veri kümesinde 640 görüntü boyutuyla 100 epok için bir YOLOv8n modelini eğitmek için aşağıdaki kod parçacıklarını kullanabilirsiniz. Kullanılabilir bağımsız değişkenlerin kapsamlı bir listesi için Model Eğitimi sayfasına bakın.
Tren Örneği
Örnek Veriler ve Açıklamalar
SKU-110k veri kümesi, nesne algılama görevleri için zengin bir bağlam sağlayan, yoğun şekilde paketlenmiş nesneler içeren çeşitli perakende raf görüntüleri içerir. İşte veri kümesinden bazı veri örnekleri ve bunlara karşılık gelen ek açıklamalar:
- Yoğun şekilde paketlenmiş perakende raf görüntüsü: Bu görüntü, bir perakende raf ortamında yoğun şekilde paketlenmiş nesnelerin bir örneğini göstermektedir. Nesneler, sınırlayıcı kutular ve SKU kategori etiketleri ile açıklanmıştır.
Örnek, SKU-110k veri kümesindeki verilerin çeşitliliğini ve karmaşıklığını sergilemekte ve nesne algılama görevleri için yüksek kaliteli verilerin önemini vurgulamaktadır.
Atıflar ve Teşekkür
Araştırma veya geliştirme çalışmalarınızda SKU-110k veri setini kullanıyorsanız, lütfen aşağıdaki makaleye atıfta bulunun:
SKU-110k veri setini bilgisayarla görme araştırma topluluğu için değerli bir kaynak olarak oluşturdukları ve sürdürdükleri için Eran Goldman ve arkadaşlarına teşekkür ederiz. SKU-110k veri kümesi ve yaratıcıları hakkında daha fazla bilgi için SKU-110k veri kümesi GitHub deposunu ziyaret edin.