Diff of /data/Argoverse.yaml [000000] .. [190ca4]

Switch to unified view

a b/data/Argoverse.yaml
1
# YOLOv5 🚀 by Ultralytics, AGPL-3.0 license
2
# Argoverse-HD dataset (ring-front-center camera) http://www.cs.cmu.edu/~mengtial/proj/streaming/ by Argo AI
3
# Example usage: python train.py --data Argoverse.yaml
4
# parent
5
# ├── yolov5
6
# └── datasets
7
#     └── Argoverse  ← downloads here (31.3 GB)
8
9
10
# 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, ..]
11
path: ../datasets/Argoverse  # dataset root dir
12
train: Argoverse-1.1/images/train/  # train images (relative to 'path') 39384 images
13
val: Argoverse-1.1/images/val/  # val images (relative to 'path') 15062 images
14
test: Argoverse-1.1/images/test/  # test images (optional) https://eval.ai/web/challenges/challenge-page/800/overview
15
16
# Classes
17
names:
18
  0: person
19
  1: bicycle
20
  2: car
21
  3: motorcycle
22
  4: bus
23
  5: truck
24
  6: traffic_light
25
  7: stop_sign
26
27
28
# Download script/URL (optional) ---------------------------------------------------------------------------------------
29
download: |
30
  import json
31
32
  from tqdm import tqdm
33
  from utils.general import download, Path
34
35
36
  def argoverse2yolo(set):
37
      labels = {}
38
      a = json.load(open(set, "rb"))
39
      for annot in tqdm(a['annotations'], desc=f"Converting {set} to YOLOv5 format..."):
40
          img_id = annot['image_id']
41
          img_name = a['images'][img_id]['name']
42
          img_label_name = f'{img_name[:-3]}txt'
43
44
          cls = annot['category_id']  # instance class id
45
          x_center, y_center, width, height = annot['bbox']
46
          x_center = (x_center + width / 2) / 1920.0  # offset and scale
47
          y_center = (y_center + height / 2) / 1200.0  # offset and scale
48
          width /= 1920.0  # scale
49
          height /= 1200.0  # scale
50
51
          img_dir = set.parents[2] / 'Argoverse-1.1' / 'labels' / a['seq_dirs'][a['images'][annot['image_id']]['sid']]
52
          if not img_dir.exists():
53
              img_dir.mkdir(parents=True, exist_ok=True)
54
55
          k = str(img_dir / img_label_name)
56
          if k not in labels:
57
              labels[k] = []
58
          labels[k].append(f"{cls} {x_center} {y_center} {width} {height}\n")
59
60
      for k in labels:
61
          with open(k, "w") as f:
62
              f.writelines(labels[k])
63
64
65
  # Download
66
  dir = Path(yaml['path'])  # dataset root dir
67
  urls = ['https://argoverse-hd.s3.us-east-2.amazonaws.com/Argoverse-HD-Full.zip']
68
  download(urls, dir=dir, delete=False)
69
70
  # Convert
71
  annotations_dir = 'Argoverse-HD/annotations/'
72
  (dir / 'Argoverse-1.1' / 'tracking').rename(dir / 'Argoverse-1.1' / 'images')  # rename 'tracking' to 'images'
73
  for d in "train.json", "val.json":
74
      argoverse2yolo(dir / annotations_dir / d)  # convert VisDrone annotations to YOLO labels