Link to this sectionSKU-110K 데이터셋#
SKU-110K 데이터셋은 11,743개의 밀집된 소매점 선반 이미지로 구성된 단일 클래스 객체 탐지 데이터셋으로, 8,219개의 학습, 588개의 검증, 2,936개의 테스트 이미지로 나뉩니다. 모든 제품은 단일 클래스인 object 하에서 하나의 바운딩 박스로 주석 처리되어 있습니다. 여기서 명칭은 110,000개의 탐지 클래스가 아니라 이미지 전체에 걸쳐 촬영된 110,000개 이상의 고유한 재고 관리 단위(SKU)를 의미합니다. Eran Goldman 등이 CVPR 2019 논문 Precise Detection in Densely Packed Scenes을 위해 생성한 이 데이터셋은 170만 개 이상의 주석이 달린 제품을 포함하며(이미지당 평균 약 147개), 혼잡한 소매 환경에서 컴퓨터 비전 모델을 위한 까다로운 벤치마크 역할을 합니다.
Watch: How to Train YOLOv10 on SKU-110k Dataset using Ultralytics | Retail Dataset

Link to this section주요 특징#
- 단일 클래스 탐지: 모든 제품은 단일 클래스인
object(names: {0: object}) 하에서 하나의 바운딩 박스로 라벨링되어 있으며, 주석에는 SKU별 카테고리 라벨이 포함되어 있지 않습니다. - 극도의 객체 밀도: 전 세계의 소매점 선반 이미지들은 평균적으로 147개의 밀집된 제품을 포함하고 있으며, 종종 비슷하거나 동일해 보이는 객체들이 아주 가까운 위치에 배치되어 있습니다.
- 대규모: 11,743개의 이미지에 걸쳐 110,000개 이상의 고유 SKU와 170만 개 이상의 주석 처리된 바운딩 박스가 포함되어 있어 최첨단 객체 탐지 모델에 도전 과제를 제시합니다.
Link to this section데이터셋 구조#
SKU-110K 데이터셋은 세 개의 서브셋으로 나뉘며, 모두 단일 object 클래스를 공유합니다:
| Split | 이미지 | 설명 |
|---|---|---|
| 학습(Train) | 8,219 | 모델 학습을 위한 이미지 및 주석 |
| 검증 | 588 | 학습 중 평가를 위한 별도의 이미지 |
| 테스트 | 2,936 | 학습된 모델의 최종 평가를 위한 이미지 |
Link to this section응용 분야#
SKU-110K 데이터셋은 소매점 선반 디스플레이와 같이 밀집된 장면에서 객체 탐지 작업을 위한 딥러닝 모델을 학습하고 평가하는 데 널리 사용됩니다. 주요 활용 분야는 다음과 같습니다:
- 소매 재고 관리 및 자동화
- 전자상거래 플랫폼에서의 제품 인식
- 매장 진열 계획(Planogram) 준수 확인
- 매장 내 셀프 체크아웃 시스템
- 창고 내 로봇 피킹 및 분류
브라우저에서 직접 선반 이미지를 주석 처리하고, 소매점 탐지 데이터셋을 학습 및 관리하려면 Ultralytics Platform을 통해 전체 워크플로를 실행하십시오.
Link to this section데이터셋 YAML#
SKU-110K.yaml 파일은 데이터셋 경로, 클래스 이름 및 기타 메타데이터를 포함한 데이터셋 구성을 정의합니다. 이 파일은 Ultralytics 저장소(https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/SKU-110K.yaml)에서 관리됩니다.
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/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: 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 polars as pl
from ultralytics.utils 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 = pl.read_csv(dir / "annotations" / d, has_header=False, new_columns=names, infer_schema_length=None).to_numpy() # annotations
images, unique_images = x[:, 0], np.unique(x[:, 0])
with open((dir / d).with_suffix(".txt").__str__().replace("annotations_", ""), "w", encoding="utf-8") 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", encoding="utf-8") 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 labelLink to this section사용법#
SKU-110K는 처음 학습을 시작할 때 자동으로 다운로드되며, 11,743개의 이미지를 저장하기 위해 약 13.6 GB의 여유 디스크 공간이 필요합니다. 다운로드 스크립트는 원본 주석을 가져와 YOLO 형식으로 변환하며, 이 과정은 몇 분 정도 소요될 수 있습니다.
SKU-110K 데이터셋에서 640 이미지 크기로 100 에폭 동안 YOLO26n 모델을 훈련하려면 다음 코드 조각을 사용할 수 있습니다. 사용 가능한 인수의 전체 목록은 모델 훈련 페이지를 참조하십시오.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="SKU-110K.yaml", epochs=100, imgsz=640)Link to this section샘플 데이터 및 주석#
SKU-110K 이미지는 수십 개의 거의 동일한 항목이 나란히 놓여 있는 실제 매장 선반의 밀집된 제품들을 포착합니다. 다음은 주석이 포함된 예시 이미지입니다.

- 밀집된 소매점 선반 이미지: 이 이미지는 소매점 선반 환경에서 밀집된 객체의 예시를 보여줍니다. 객체들은 단일
object클래스 하에서 바운딩 박스로 주석 처리되어 있습니다.
제품들이 밀집되어 배열된 SKU-110K는 이미지당 높은 객체 수로 인해 탐지기 성능을 일반적인 벤치마크 이상으로 끌어올리기 때문에, 강력한 소매점 전용 컴퓨터 비전 솔루션을 개발하는 데 매우 가치가 있습니다.
Link to this section인용 및 감사의 글#
연구나 개발 작업에 SKU-110K 데이터셋을 사용하는 경우 다음 논문을 인용해 주십시오:
@inproceedings{goldman2019dense,
author = {Eran Goldman and Roei Herzig and Aviv Eisenschtat and Jacob Goldberger and Tal Hassner},
title = {Precise Detection in Densely Packed Scenes},
booktitle = {Proc. Conf. Comput. Vision Pattern Recognition (CVPR)},
year = {2019}
}컴퓨터 비전 연구 커뮤니티를 위한 귀중한 자원으로서 SKU-110K 데이터셋을 만들고 유지 관리해 준 Eran Goldman 등에게 감사를 표합니다. SKU-110K 데이터셋 및 제작자에 대한 자세한 내용은 SKU-110K 데이터셋 GitHub 저장소를 방문하십시오.
Link to this sectionFAQ#
Link to this sectionSKU-110K 데이터셋은 어떤 용도로 사용되나요?#
SKU-110K 데이터셋은 Eran Goldman 등이 CVPR 2019 논문을 위해 생성한 11,743개의 밀집된 소매점 선반 이미지로 구성된 단일 클래스 객체 탐지 데이터셋입니다. 모든 제품은 하나의 object 바운딩 박스로 라벨링되어 있으며, 110,000개 이상의 고유한 재고 관리 단위(SKU)를 포함하고 있어 혼잡한 장면에서의 객체 탐지 및 소매점용 컴퓨터 비전 시스템 구축을 위한 강력한 벤치마크가 됩니다.
Link to this sectionSKU-110K 데이터셋은 110,000개의 클래스를 가지고 있나요?#
아니요. SKU-110K는 단일 클래스 데이터셋입니다. 모든 제품은 object 클래스(names: {0: object}) 하에서 하나의 바운딩 박스로 주석 처리됩니다. 이름에 포함된 "110K"는 탐지 클래스의 수가 아니라 이미지 전체에 촬영된 고유한 재고 관리 단위(SKU)의 수를 의미합니다.
Link to this sectionSKU-110K 데이터셋에는 몇 개의 이미지와 클래스가 포함되어 있나요?#
SKU-110K 데이터셋은 11,743개의 이미지(학습용 8,219개, 검증용 588개, 테스트용 2,936개)와 단일 탐지 클래스인 object를 포함합니다. 자세한 내용은 데이터셋 구조 섹션과 SKU-110K.yaml 구성을 참조하십시오.
Link to this sectionSKU-110K 데이터셋의 다운로드 크기는 얼마나 되나요?#
SKU-110K는 약 13.6 GB이며, data="SKU-110K.yaml"로 처음 학습을 시작할 때 자동으로 다운로드되므로 수동 다운로드가 필요하지 않습니다. 더 작은 데이터셋 옵션을 보려면 탐지 데이터셋 개요를 참조하십시오.
Link to this sectionSKU-110K 데이터셋을 사용하여 YOLO26 모델을 어떻게 학습하나요?#
SKU-110K 데이터셋에서 YOLO26 모델을 학습하는 방법은 간단합니다. 다음은 이미지 크기 640으로 100 에포크 동안 YOLO26n 모델을 학습하는 예시입니다:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="SKU-110K.yaml", epochs=100, imgsz=640)