# Ultralytics YOLOv5 🚀, 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)