Spaces:
Running
Running
# YOLOv5 π by Ultralytics, AGPL-3.0 license | |
# Objects365 dataset https://www.objects365.org/ by Megvii | |
# Example usage: python train.py --data Objects365.yaml | |
# parent | |
# βββ yolov5 | |
# βββ datasets | |
# βββ Objects365 β downloads here (712 GB = 367G data + 345G zips) | |
# 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/Objects365 # dataset root dir | |
train: images/train # train images (relative to 'path') 1742289 images | |
val: images/val # val images (relative to 'path') 80000 images | |
test: # test images (optional) | |
# Classes | |
names: | |
0: Person | |
1: Sneakers | |
2: Chair | |
3: Other Shoes | |
4: Hat | |
5: Car | |
6: Lamp | |
7: Glasses | |
8: Bottle | |
9: Desk | |
10: Cup | |
11: Street Lights | |
12: Cabinet/shelf | |
13: Handbag/Satchel | |
14: Bracelet | |
15: Plate | |
16: Picture/Frame | |
17: Helmet | |
18: Book | |
19: Gloves | |
20: Storage box | |
21: Boat | |
22: Leather Shoes | |
23: Flower | |
24: Bench | |
25: Potted Plant | |
26: Bowl/Basin | |
27: Flag | |
28: Pillow | |
29: Boots | |
30: Vase | |
31: Microphone | |
32: Necklace | |
33: Ring | |
34: SUV | |
35: Wine Glass | |
36: Belt | |
37: Monitor/TV | |
38: Backpack | |
39: Umbrella | |
40: Traffic Light | |
41: Speaker | |
42: Watch | |
43: Tie | |
44: Trash bin Can | |
45: Slippers | |
46: Bicycle | |
47: Stool | |
48: Barrel/bucket | |
49: Van | |
50: Couch | |
51: Sandals | |
52: Basket | |
53: Drum | |
54: Pen/Pencil | |
55: Bus | |
56: Wild Bird | |
57: High Heels | |
58: Motorcycle | |
59: Guitar | |
60: Carpet | |
61: Cell Phone | |
62: Bread | |
63: Camera | |
64: Canned | |
65: Truck | |
66: Traffic cone | |
67: Cymbal | |
68: Lifesaver | |
69: Towel | |
70: Stuffed Toy | |
71: Candle | |
72: Sailboat | |
73: Laptop | |
74: Awning | |
75: Bed | |
76: Faucet | |
77: Tent | |
78: Horse | |
79: Mirror | |
80: Power outlet | |
81: Sink | |
82: Apple | |
83: Air Conditioner | |
84: Knife | |
85: Hockey Stick | |
86: Paddle | |
87: Pickup Truck | |
88: Fork | |
89: Traffic Sign | |
90: Balloon | |
91: Tripod | |
92: Dog | |
93: Spoon | |
94: Clock | |
95: Pot | |
96: Cow | |
97: Cake | |
98: Dinning Table | |
99: Sheep | |
100: Hanger | |
101: Blackboard/Whiteboard | |
102: Napkin | |
103: Other Fish | |
104: Orange/Tangerine | |
105: Toiletry | |
106: Keyboard | |
107: Tomato | |
108: Lantern | |
109: Machinery Vehicle | |
110: Fan | |
111: Green Vegetables | |
112: Banana | |
113: Baseball Glove | |
114: Airplane | |
115: Mouse | |
116: Train | |
117: Pumpkin | |
118: Soccer | |
119: Skiboard | |
120: Luggage | |
121: Nightstand | |
122: Tea pot | |
123: Telephone | |
124: Trolley | |
125: Head Phone | |
126: Sports Car | |
127: Stop Sign | |
128: Dessert | |
129: Scooter | |
130: Stroller | |
131: Crane | |
132: Remote | |
133: Refrigerator | |
134: Oven | |
135: Lemon | |
136: Duck | |
137: Baseball Bat | |
138: Surveillance Camera | |
139: Cat | |
140: Jug | |
141: Broccoli | |
142: Piano | |
143: Pizza | |
144: Elephant | |
145: Skateboard | |
146: Surfboard | |
147: Gun | |
148: Skating and Skiing shoes | |
149: Gas stove | |
150: Donut | |
151: Bow Tie | |
152: Carrot | |
153: Toilet | |
154: Kite | |
155: Strawberry | |
156: Other Balls | |
157: Shovel | |
158: Pepper | |
159: Computer Box | |
160: Toilet Paper | |
161: Cleaning Products | |
162: Chopsticks | |
163: Microwave | |
164: Pigeon | |
165: Baseball | |
166: Cutting/chopping Board | |
167: Coffee Table | |
168: Side Table | |
169: Scissors | |
170: Marker | |
171: Pie | |
172: Ladder | |
173: Snowboard | |
174: Cookies | |
175: Radiator | |
176: Fire Hydrant | |
177: Basketball | |
178: Zebra | |
179: Grape | |
180: Giraffe | |
181: Potato | |
182: Sausage | |
183: Tricycle | |
184: Violin | |
185: Egg | |
186: Fire Extinguisher | |
187: Candy | |
188: Fire Truck | |
189: Billiards | |
190: Converter | |
191: Bathtub | |
192: Wheelchair | |
193: Golf Club | |
194: Briefcase | |
195: Cucumber | |
196: Cigar/Cigarette | |
197: Paint Brush | |
198: Pear | |
199: Heavy Truck | |
200: Hamburger | |
201: Extractor | |
202: Extension Cord | |
203: Tong | |
204: Tennis Racket | |
205: Folder | |
206: American Football | |
207: earphone | |
208: Mask | |
209: Kettle | |
210: Tennis | |
211: Ship | |
212: Swing | |
213: Coffee Machine | |
214: Slide | |
215: Carriage | |
216: Onion | |
217: Green beans | |
218: Projector | |
219: Frisbee | |
220: Washing Machine/Drying Machine | |
221: Chicken | |
222: Printer | |
223: Watermelon | |
224: Saxophone | |
225: Tissue | |
226: Toothbrush | |
227: Ice cream | |
228: Hot-air balloon | |
229: Cello | |
230: French Fries | |
231: Scale | |
232: Trophy | |
233: Cabbage | |
234: Hot dog | |
235: Blender | |
236: Peach | |
237: Rice | |
238: Wallet/Purse | |
239: Volleyball | |
240: Deer | |
241: Goose | |
242: Tape | |
243: Tablet | |
244: Cosmetics | |
245: Trumpet | |
246: Pineapple | |
247: Golf Ball | |
248: Ambulance | |
249: Parking meter | |
250: Mango | |
251: Key | |
252: Hurdle | |
253: Fishing Rod | |
254: Medal | |
255: Flute | |
256: Brush | |
257: Penguin | |
258: Megaphone | |
259: Corn | |
260: Lettuce | |
261: Garlic | |
262: Swan | |
263: Helicopter | |
264: Green Onion | |
265: Sandwich | |
266: Nuts | |
267: Speed Limit Sign | |
268: Induction Cooker | |
269: Broom | |
270: Trombone | |
271: Plum | |
272: Rickshaw | |
273: Goldfish | |
274: Kiwi fruit | |
275: Router/modem | |
276: Poker Card | |
277: Toaster | |
278: Shrimp | |
279: Sushi | |
280: Cheese | |
281: Notepaper | |
282: Cherry | |
283: Pliers | |
284: CD | |
285: Pasta | |
286: Hammer | |
287: Cue | |
288: Avocado | |
289: Hamimelon | |
290: Flask | |
291: Mushroom | |
292: Screwdriver | |
293: Soap | |
294: Recorder | |
295: Bear | |
296: Eggplant | |
297: Board Eraser | |
298: Coconut | |
299: Tape Measure/Ruler | |
300: Pig | |
301: Showerhead | |
302: Globe | |
303: Chips | |
304: Steak | |
305: Crosswalk Sign | |
306: Stapler | |
307: Camel | |
308: Formula 1 | |
309: Pomegranate | |
310: Dishwasher | |
311: Crab | |
312: Hoverboard | |
313: Meat ball | |
314: Rice Cooker | |
315: Tuba | |
316: Calculator | |
317: Papaya | |
318: Antelope | |
319: Parrot | |
320: Seal | |
321: Butterfly | |
322: Dumbbell | |
323: Donkey | |
324: Lion | |
325: Urinal | |
326: Dolphin | |
327: Electric Drill | |
328: Hair Dryer | |
329: Egg tart | |
330: Jellyfish | |
331: Treadmill | |
332: Lighter | |
333: Grapefruit | |
334: Game board | |
335: Mop | |
336: Radish | |
337: Baozi | |
338: Target | |
339: French | |
340: Spring Rolls | |
341: Monkey | |
342: Rabbit | |
343: Pencil Case | |
344: Yak | |
345: Red Cabbage | |
346: Binoculars | |
347: Asparagus | |
348: Barbell | |
349: Scallop | |
350: Noddles | |
351: Comb | |
352: Dumpling | |
353: Oyster | |
354: Table Tennis paddle | |
355: Cosmetics Brush/Eyeliner Pencil | |
356: Chainsaw | |
357: Eraser | |
358: Lobster | |
359: Durian | |
360: Okra | |
361: Lipstick | |
362: Cosmetics Mirror | |
363: Curling | |
364: Table Tennis | |
# Download script/URL (optional) --------------------------------------------------------------------------------------- | |
download: | | |
from tqdm import tqdm | |
from utils.general import Path, check_requirements, download, np, xyxy2xywhn | |
check_requirements('pycocotools>=2.0') | |
from pycocotools.coco import COCO | |
# Make Directories | |
dir = Path(yaml['path']) # dataset root dir | |
for p in 'images', 'labels': | |
(dir / p).mkdir(parents=True, exist_ok=True) | |
for q in 'train', 'val': | |
(dir / p / q).mkdir(parents=True, exist_ok=True) | |
# Train, Val Splits | |
for split, patches in [('train', 50 + 1), ('val', 43 + 1)]: | |
print(f"Processing {split} in {patches} patches ...") | |
images, labels = dir / 'images' / split, dir / 'labels' / split | |
# Download | |
url = f"https://dorc.ks3-cn-beijing.ksyun.com/data-set/2020Objects365%E6%95%B0%E6%8D%AE%E9%9B%86/{split}/" | |
if split == 'train': | |
download([f'{url}zhiyuan_objv2_{split}.tar.gz'], dir=dir, delete=False) # annotations json | |
download([f'{url}patch{i}.tar.gz' for i in range(patches)], dir=images, curl=True, delete=False, threads=8) | |
elif split == 'val': | |
download([f'{url}zhiyuan_objv2_{split}.json'], dir=dir, delete=False) # annotations json | |
download([f'{url}images/v1/patch{i}.tar.gz' for i in range(15 + 1)], dir=images, curl=True, delete=False, threads=8) | |
download([f'{url}images/v2/patch{i}.tar.gz' for i in range(16, patches)], dir=images, curl=True, delete=False, threads=8) | |
# Move | |
for f in tqdm(images.rglob('*.jpg'), desc=f'Moving {split} images'): | |
f.rename(images / f.name) # move to /images/{split} | |
# Labels | |
coco = COCO(dir / f'zhiyuan_objv2_{split}.json') | |
names = [x["name"] for x in coco.loadCats(coco.getCatIds())] | |
for cid, cat in enumerate(names): | |
catIds = coco.getCatIds(catNms=[cat]) | |
imgIds = coco.getImgIds(catIds=catIds) | |
for im in tqdm(coco.loadImgs(imgIds), desc=f'Class {cid + 1}/{len(names)} {cat}'): | |
width, height = im["width"], im["height"] | |
path = Path(im["file_name"]) # image filename | |
try: | |
with open(labels / path.with_suffix('.txt').name, 'a') as file: | |
annIds = coco.getAnnIds(imgIds=im["id"], catIds=catIds, iscrowd=False) | |
for a in coco.loadAnns(annIds): | |
x, y, w, h = a['bbox'] # bounding box in xywh (xy top-left corner) | |
xyxy = np.array([x, y, x + w, y + h])[None] # pixels(1,4) | |
x, y, w, h = xyxy2xywhn(xyxy, w=width, h=height, clip=True)[0] # normalized and clipped | |
file.write(f"{cid} {x:.5f} {y:.5f} {w:.5f} {h:.5f}\n") | |
except Exception as e: | |
print(e) | |