edward2021
commited on
Commit
•
744c933
1
Parent(s):
ce1fcfd
add inference files
Browse files- assets/meta/scannetv2-labels.combined.tsv +608 -0
- assets/meta/scannetv2_raw_categories.json +609 -0
- pq3d/inference.py +180 -0
- pq3d/model.py +909 -0
- pq3d/utils.py +110 -0
- requirements.txt +106 -0
assets/meta/scannetv2-labels.combined.tsv
ADDED
@@ -0,0 +1,608 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
id raw_category category count nyu40id eigen13id nyuClass nyu40class eigen13class ModelNet40 ModelNet10 ShapeNetCore55 synsetoffset wnsynsetid wnsynsetkey mpcat40 mpcat40index
|
2 |
+
1 wall wall 8277 1 12 wall wall Wall n04546855 wall.n.01 wall 1
|
3 |
+
2 chair chair 4646 5 4 chair chair Chair chair chair chair 3001627 n03001627 chair.n.01 chair 3
|
4 |
+
22 books book 1678 23 2 book books Books n02870526 book.n.11 objects 39
|
5 |
+
3 floor floor 1553 2 5 floor floor Floor n03365592 floor.n.01 floor 2
|
6 |
+
5 door door 1483 8 12 door door Wall door n03221720 door.n.01 door 4
|
7 |
+
1163 object object 1313 40 7 otherprop Objects objects 39
|
8 |
+
16 window window 1209 9 13 window window Window n04587648 window.n.01 window 9
|
9 |
+
4 table table 1170 7 10 table table Table table table table 4379243 n04379243 table.n.02 table 5
|
10 |
+
56 trash can trash can 1090 39 6 garbage bin otherfurniture Furniture trash_bin 2747177 n02747177 ashcan.n.01 objects 39
|
11 |
+
13 pillow pillow 937 18 7 pillow pillow Objects pillow 3938244 n03938244 pillow.n.01 cushion 8
|
12 |
+
15 picture picture 862 11 8 picture picture Picture n03931044 picture.n.01 picture 6
|
13 |
+
41 ceiling ceiling 806 22 3 ceiling ceiling Ceiling n02990373 ceiling.n.01 ceiling 17
|
14 |
+
26 box box 775 29 7 box box Objects n02883344 box.n.01 objects 39
|
15 |
+
161 doorframe doorframe 768 8 12 door door Wall door doorframe.n.01 door 4
|
16 |
+
19 monitor monitor 765 40 7 monitor otherprop Objects monitor monitor tv or monitor 3211117 n03782190 monitor.n.04 objects 39
|
17 |
+
7 cabinet cabinet 731 3 6 cabinet cabinet Furniture cabinet 2933112 n02933112 cabinet.n.01 cabinet 7
|
18 |
+
9 desk desk 680 14 10 desk desk Table desk desk table 4379243 n03179701 desk.n.01 table 5
|
19 |
+
8 shelf shelf 641 15 6 shelves shelves Furniture bookshelf bookshelf 2871439 n02871439 bookshelf.n.01 shelving 31
|
20 |
+
10 office chair office chair 595 5 4 chair chair Chair chair chair chair 3001627 n04373704 swivel_chair.n.01 chair 3
|
21 |
+
31 towel towel 570 27 7 towel towel Objects n04459362 towel.n.01 towel 20
|
22 |
+
6 couch couch 502 6 9 sofa sofa Sofa sofa sofa sofa 4256520 n04256520 sofa.n.01 sofa 10
|
23 |
+
14 sink sink 488 34 7 sink sink Objects sink n04223580 sink.n.01 sink 15
|
24 |
+
48 backpack backpack 479 40 7 backpack otherprop Objects n02769748 backpack.n.01 objects 39
|
25 |
+
28 lamp lamp 419 35 7 lamp lamp Objects lamp lamp 3636649 n03636649 lamp.n.02 lighting 28
|
26 |
+
11 bed bed 370 4 1 bed bed Bed bed bed bed 2818832 n02818832 bed.n.01 bed 11
|
27 |
+
18 bookshelf bookshelf 360 10 6 bookshelf bookshelf Furniture bookshelf bookshelf 2871439 n02871439 bookshelf.n.01 shelving 31
|
28 |
+
71 mirror mirror 349 19 7 mirror mirror Objects n03773035 mirror.n.01 mirror 21
|
29 |
+
21 curtain curtain 347 16 13 curtain curtain Window curtain n03151077 curtain.n.01 curtain 12
|
30 |
+
40 plant plant 331 40 7 plant otherprop Objects plant n00017222 plant.n.02 plant 14
|
31 |
+
52 whiteboard whiteboard 327 30 7 whiteboard whiteboard Objects n03211616 display_panel.n.01 board_panel 35
|
32 |
+
96 radiator radiator 322 39 6 radiator otherfurniture Furniture n04041069 radiator.n.02 misc 40
|
33 |
+
22 book book 318 23 2 book books Books n02870526 book.n.11 objects 39
|
34 |
+
29 kitchen cabinet kitchen cabinet 310 3 6 cabinet cabinet Furniture n02933112 cabinet.n.01 cabinet 7
|
35 |
+
49 toilet paper toilet paper 291 40 7 toilet paper otherprop Objects n15075141 toilet_tissue.n.01 objects 39
|
36 |
+
29 kitchen cabinets kitchen cabinet 289 3 6 cabinet cabinet Furniture cabinet 2933112 n02933112 cabinet.n.01 cabinet 7
|
37 |
+
23 armchair armchair 281 5 4 chair chair Chair chair chair chair 3001627 n02738535 armchair.n.01 chair 3
|
38 |
+
63 shoes shoe 272 40 7 shoe otherprop Objects n04199027 shoe.n.01 clothes 38
|
39 |
+
24 coffee table coffee table 258 7 10 coffee table table Table table table table 4379243 n03063968 coffee_table.n.01 table 5
|
40 |
+
17 toilet toilet 256 33 7 toilet toilet Objects toilet toilet n04446276 toilet.n.01 toilet 18
|
41 |
+
47 bag bag 252 37 7 bag bag Objects suitcase 2773838 n02773838 bag.n.06 objects 39
|
42 |
+
32 clothes clothes 248 21 7 clothes clothes Objects n02728440 apparel.n.01 clothes 38
|
43 |
+
46 keyboard keyboard 246 40 7 keyboard otherprop Objects keyboard computer keyboard 3085013 n03085013 computer_keyboard.n.01 objects 39
|
44 |
+
65 bottle bottle 226 40 7 bottle otherprop Objects bottle bottle 2876657 n02876657 bottle.n.01 objects 39
|
45 |
+
97 recycling bin recycling bin 225 39 6 garbage bin otherfurniture Furniture trash_bin 2747177 n02747177 ashcan.n.01 objects 39
|
46 |
+
34 nightstand nightstand 224 32 6 night stand night stand Furniture night_stand night_stand n03015254 chest_of_drawers.n.01 chest_of_drawers 13
|
47 |
+
38 stool stool 221 40 7 stool otherprop Objects stool n04326896 stool.n.01 stool 19
|
48 |
+
33 tv tv 219 25 11 television television TV tv or monitor 3211117 n03211117 display.n.06 tv_monitor 22
|
49 |
+
75 file cabinet file cabinet 217 3 6 cabinet cabinet Furniture cabinet 2933112 n02933112 cabinet.n.01 cabinet 7
|
50 |
+
36 dresser dresser 213 17 6 dresser dresser Furniture dresser dresser n03015254 chest_of_drawers.n.01 chest_of_drawers 13
|
51 |
+
64 computer tower computer tower 203 40 7 computer otherprop Objects n03082979 computer.n.01 objects 39
|
52 |
+
32 clothing clothes 165 21 7 clothes clothes Objects n02728440 apparel.n.01 clothes 38
|
53 |
+
101 telephone telephone 164 40 7 telephone otherprop Objects telephone 4401088 n04401088 telephone.n.01 objects 39
|
54 |
+
130 cup cup 157 40 7 cup otherprop Objects cup cup or mug 3797390 n03797390 mug.n.04 objects 39
|
55 |
+
27 refrigerator refrigerator 154 24 6 refridgerator refridgerator Furniture n04070727 refrigerator.n.01 appliances 37
|
56 |
+
44 end table end table 147 7 10 table table Table table table table 4379243 n04379243 table.n.02 table 5
|
57 |
+
131 jacket jacket 146 40 7 jacket otherprop Objects n03589791 jacket.n.01 clothes 38
|
58 |
+
55 shower curtain shower curtain 144 28 7 shower curtain shower curtain Objects curtain n04209239 shower_curtain.n.01 curtain 12
|
59 |
+
42 bathtub bathtub 144 36 7 bathtub bathtub Objects bathtub bathtub tub 2808440 n02808440 bathtub.n.01 bathtub 25
|
60 |
+
59 microwave microwave 141 40 7 microwave otherprop Objects microwave 3761084 n03761084 microwave.n.02 appliances 37
|
61 |
+
159 kitchen counter kitchen counter 140 12 6 counter counter Furniture table table table 4379243 n03116530 counter.n.01 counter 26
|
62 |
+
74 sofa chair sofa chair 129 5 4 chair chair Chair chair chair chair 3001627 n03001627 chair.n.01 chair 3
|
63 |
+
82 paper towel dispenser paper towel dispenser 129 40 7 paper towel dispenser otherprop Objects objects 39
|
64 |
+
1164 bathroom vanity bathroom vanity 126 3 6 cabinet cabinet Furniture cabinet 2933112 n02933112 cabinet.n.01 table 5
|
65 |
+
93 suitcase suitcase 118 40 7 luggage otherprop Objects n02773838 bag.n.06 objects 39
|
66 |
+
77 laptop laptop 111 40 7 laptop otherprop Objects laptop laptop 3642806 n03642806 laptop.n.01 objects 39
|
67 |
+
67 ottoman ottoman 111 39 6 ottoman otherfurniture Furniture stool n03380724 footstool.n.01 stool 19
|
68 |
+
128 shower walls shower wall 109 1 12 wall wall Wall n04546855 wall.n.01 wall 1
|
69 |
+
50 printer printer 106 40 7 printer otherprop Objects printer 4004475 n04004475 printer.n.03 appliances 37
|
70 |
+
35 counter counter 104 12 6 counter counter Furniture table table table 4379243 n03116530 counter.n.01 counter 26
|
71 |
+
69 board board 100 38 7 board otherstructure Objects board_panel 35
|
72 |
+
100 soap dispenser soap dispenser 99 40 7 otherprop Objects n04254120 soap_dispenser.n.01 objects 39
|
73 |
+
62 stove stove 95 38 7 stove otherstructure Objects stove 4330267 n04330267 stove.n.02 appliances 37
|
74 |
+
105 light light 93 38 7 light otherstructure Objects n03665366 light.n.02 lighting 28
|
75 |
+
1165 closet wall closet wall 90 1 12 wall wall Wall n04546855 wall.n.01 wall 1
|
76 |
+
165 mini fridge mini fridge 87 24 6 refridgerator refridgerator Furniture n03273913 electric_refrigerator.n.01 appliances 37
|
77 |
+
7 cabinets cabinet 79 3 6 cabinet cabinet Furniture cabinet 2933112 n02933112 cabinet.n.01 cabinet 7
|
78 |
+
5 doors door 76 8 12 door door Wall door n03221720 door.n.01 door 4
|
79 |
+
76 fan fan 75 40 7 fan otherprop Objects n03320046 fan.n.01 misc 40
|
80 |
+
230 tissue box tissue box 73 40 7 tissue box otherprop Objects n02883344 box.n.01 objects 39
|
81 |
+
54 blanket blanket 72 40 7 blanket otherprop Objects n02849154 blanket.n.01 objects 39
|
82 |
+
125 bathroom stall bathroom stall 71 38 7 otherstructure Objects n02873839 booth.n.02 misc 40
|
83 |
+
72 copier copier 70 40 7 otherprop Objects n03257586 duplicator.n.01 appliances 37
|
84 |
+
68 bench bench 66 39 6 bench otherfurniture Furniture bench bench 2828884 n02828884 bench.n.01 seating 34
|
85 |
+
145 bar bar 66 38 7 bar otherstructure Objects n02788689 bar.n.03 misc 40
|
86 |
+
157 soap dish soap dish 65 40 7 soap dish otherprop Objects n04254009 soap_dish.n.01 objects 39
|
87 |
+
1166 laundry hamper laundry hamper 65 40 7 laundry basket otherprop Objects objects 39
|
88 |
+
132 storage bin storage bin 63 40 7 storage bin otherprop Objects objects 39
|
89 |
+
1167 bathroom stall door bathroom stall door 62 8 12 door door Wall door n03221720 door.n.01 door 4
|
90 |
+
232 light switch light switch 61 38 7 light switch otherstructure Objects n04372370 switch.n.01 misc 40
|
91 |
+
134 coffee maker coffee maker 61 40 7 otherprop Objects n03063338 coffee_maker.n.01 appliances 37
|
92 |
+
51 tv stand tv stand 61 39 6 tv stand otherfurniture Furniture tv_stand n03290653 entertainment_center.n.01 furniture 36
|
93 |
+
250 decoration decoration 60 40 7 otherprop Objects n03169390 decoration.n.01 misc 40
|
94 |
+
1168 ceiling light ceiling light 59 38 7 light otherstructure Objects n03665366 light.n.02 lighting 28
|
95 |
+
342 range hood range hood 59 38 7 range hood otherstructure Objects range_hood n04053677 range_hood.n.01 misc 40
|
96 |
+
89 blackboard blackboard 58 38 7 blackboard otherstructure Objects n02846511 blackboard.n.01 board_panel 35
|
97 |
+
103 clock clock 58 40 7 clock otherprop Objects clock 3046257 n03046257 clock.n.01 objects 39
|
98 |
+
99 wardrobe closet wardrobe 54 39 6 wardrobe otherfurniture Furniture wardrobe n04550184 wardrobe.n.01 furniture 36
|
99 |
+
95 rail rail 53 38 7 railing otherstructure Objects n04047401 railing.n.01 railing 30
|
100 |
+
154 bulletin board bulletin board 53 38 7 board otherstructure Objects n03211616 display_panel.n.01 board_panel 35
|
101 |
+
140 mat mat 52 20 5 floor mat floor mat Floor n03727837 mat.n.01 floor 2
|
102 |
+
1169 trash bin trash bin 52 39 6 garbage bin otherfurniture Furniture trash_bin 2747177 n02747177 ashcan.n.01 objects 39
|
103 |
+
193 ledge ledge 51 38 7 otherstructure Objects n09337253 ledge.n.01 misc 40
|
104 |
+
116 seat seat 49 39 6 furniture otherfurniture Furniture n04161981 seat.n.03 furniture 36
|
105 |
+
202 mouse mouse 49 40 7 mouse otherprop Objects n03793489 mouse.n.04 objects 39
|
106 |
+
73 basket basket 48 40 7 basket otherprop Objects basket 2801938 n02801938 basket.n.01 objects 39
|
107 |
+
78 shower shower 48 38 7 otherstructure Objects n04208936 shower.n.01 shower 23
|
108 |
+
1170 dumbbell dumbbell 48 40 7 otherprop Objects n03255030 dumbbell.n.01 objects 39
|
109 |
+
79 paper paper 46 26 7 paper paper Objects n14974264 paper.n.01 objects 39
|
110 |
+
80 person person 46 31 7 person person Objects person n05217688 person.n.02 misc 40
|
111 |
+
141 windowsill windowsill 45 38 7 otherstructure Objects n04590263 windowsill.n.01 window 9
|
112 |
+
57 closet closet 45 39 6 wardrobe otherfurniture Furniture wardrobe misc 40
|
113 |
+
102 bucket bucket 45 40 7 bucket otherprop Objects n02909870 bucket.n.01 misc 40
|
114 |
+
261 sign sign 44 40 7 sign otherprop Objects n04217882 signboard.n.01 objects 39
|
115 |
+
118 speaker speaker 43 40 7 speaker otherprop Objects speaker 3691459 n03691459 loudspeaker.n.01 objects 39
|
116 |
+
136 dishwasher dishwasher 43 38 7 dishwasher otherstructure Objects dishwasher 3207941 n03207941 dishwasher.n.01 appliances 37
|
117 |
+
98 container container 43 40 7 container otherprop Objects n03094503 container.n.01 objects 39
|
118 |
+
1171 stair rail stair rail 42 38 7 banister otherstructure Objects n02788148 bannister.n.02 railing 30
|
119 |
+
170 shower curtain rod shower curtain rod 42 40 7 otherprop Objects curtain 12
|
120 |
+
1172 tube tube 41 40 7 otherprop Objects misc 40
|
121 |
+
1173 bathroom cabinet bathroom cabinet 39 3 6 cabinet cabinet Furniture cabinet 2933112 n02933112 cabinet.n.01 cabinet 7
|
122 |
+
79 papers paper 39 26 7 paper paper Objects n14974264 paper.n.01 objects 39
|
123 |
+
221 storage container storage container 39 40 7 container otherprop Objects objects 39
|
124 |
+
570 paper bag paper bag 39 37 7 bag bag Objects n04122825 sack.n.01 objects 39
|
125 |
+
138 paper towel roll paper towel roll 39 40 7 paper towel otherprop Objects n03887697 paper_towel.n.01 towel 20
|
126 |
+
168 ball ball 39 40 7 ball otherprop Objects objects 39
|
127 |
+
276 closet doors closet door 38 8 12 door door Wall door n03221720 door.n.01 door 4
|
128 |
+
106 laundry basket laundry basket 37 40 7 laundry basket otherprop Objects basket 2801938 n03050864 clothes_hamper.n.01 objects 39
|
129 |
+
214 cart cart 37 40 7 cart otherprop Objects n03484083 handcart.n.01 shelving 31
|
130 |
+
276 closet door closet door 35 8 12 door door Wall door n03221720 door.n.01 door 4
|
131 |
+
323 dish rack dish rack 35 40 7 dish rack otherprop Objects n03207630 dish_rack.n.01 objects 39
|
132 |
+
58 stairs stairs 35 38 7 stairs otherstructure Objects n04298308 stairway.n.01 stairs 16
|
133 |
+
86 blinds blinds 35 13 13 blinds blinds Window n02851099 blind.n.03 blinds 32
|
134 |
+
2 stack of chairs chair 35 5 4 chair chair Chair chair chair chair 3001627 n03001627 chair.n.01 chair 3
|
135 |
+
399 purse purse 34 40 7 purse otherprop Objects n02774152 bag.n.04 objects 39
|
136 |
+
121 bicycle bicycle 33 40 7 bicycle otherprop Objects bicycle 2834778 n02834778 bicycle.n.01 objects 39
|
137 |
+
185 tray tray 32 40 7 tray otherprop Objects n04476259 tray.n.01 objects 39
|
138 |
+
300 plunger plunger 30 40 7 otherprop Objects n03970156 plunger.n.03 objects 39
|
139 |
+
180 paper cutter paper cutter 30 40 7 paper cutter otherprop Objects n03886940 paper_cutter.n.01 objects 39
|
140 |
+
163 toilet paper dispenser toilet paper dispenser 29 40 7 otherprop Objects objects 39
|
141 |
+
26 boxes box 29 29 7 box box Objects n02883344 box.n.01 objects 39
|
142 |
+
66 bin bin 28 40 7 bin otherprop Objects n02839910 bin.n.01 objects 39
|
143 |
+
208 toilet seat cover dispenser toilet seat cover dispenser 28 40 7 otherprop Objects objects 39
|
144 |
+
112 guitar guitar 28 40 7 guitar otherprop Objects guitar guitar 3467517 n03467517 guitar.n.01 objects 39
|
145 |
+
540 mailboxes mailbox 28 29 7 box box Objects mailbox 3710193 n03710193 mailbox.n.01 misc 40
|
146 |
+
395 handicap bar handicap bar 27 38 7 bar otherstructure Objects misc 40
|
147 |
+
166 fire extinguisher fire extinguisher 27 40 7 fire extinguisher otherprop Objects n03345837 fire_extinguisher.n.01 misc 40
|
148 |
+
122 ladder ladder 27 39 6 ladder otherfurniture Furniture stairs n03632277 ladder.n.01 stairs 16
|
149 |
+
120 column column 26 38 7 column otherstructure Objects n03074380 column.n.06 column 24
|
150 |
+
107 pipe pipe 25 40 7 pipe otherprop Objects n03944672 pipe.n.02 misc 40
|
151 |
+
283 vacuum cleaner vacuum cleaner 25 40 7 otherprop Objects n04517823 vacuum.n.04 objects 39
|
152 |
+
88 plate plate 24 40 7 plate otherprop Objects n03959485 plate.n.04 objects 39
|
153 |
+
90 piano piano 24 39 6 piano otherfurniture Furniture piano piano 3928116 n03928116 piano.n.01 furniture 36
|
154 |
+
177 water cooler water cooler 24 39 6 water cooler otherfurniture Furniture n04559166 water_cooler.n.01 misc 40
|
155 |
+
1174 cd case cd case 24 40 7 otherprop Objects objects 39
|
156 |
+
562 bowl bowl 24 40 7 bowl otherprop Objects bowl bowl 2880940 n02880940 bowl.n.03 objects 39
|
157 |
+
1175 closet rod closet rod 24 40 7 otherprop Objects n04100174 rod.n.01 misc 40
|
158 |
+
1156 bathroom counter bathroom counter 24 12 6 counter counter Furniture table table table 4379243 n03116530 counter.n.01 counter 26
|
159 |
+
84 oven oven 23 38 7 oven otherstructure Objects n03862676 oven.n.01 appliances 37
|
160 |
+
104 stand stand 23 39 6 stand otherfurniture Furniture table table table 4379243 n04301000 stand.n.04 table 5
|
161 |
+
229 scale scale 23 40 7 scale otherprop Objects n04141975 scale.n.07 objects 39
|
162 |
+
70 washing machine washing machine 23 39 6 washing machine otherfurniture Furniture washing_machine 4554684 n04554684 washer.n.03 appliances 37
|
163 |
+
325 broom broom 22 40 7 broom otherprop Objects n02906734 broom.n.01 objects 39
|
164 |
+
169 hat hat 22 40 7 hat otherprop Objects n03497657 hat.n.01 clothes 38
|
165 |
+
128 shower wall shower wall 22 1 12 wall wall Wall n04208936 shower.n.01 wall 1
|
166 |
+
331 guitar case guitar case 21 40 7 guitar case otherprop Objects objects 39
|
167 |
+
87 rack rack 21 39 6 stand otherfurniture Furniture n04038440 rack.n.05 shelving 31
|
168 |
+
488 water pitcher water pitcher 21 40 7 pitcher otherprop Objects n03950228 pitcher.n.02 objects 39
|
169 |
+
776 laundry detergent laundry detergent 21 40 7 otherprop Objects objects 39
|
170 |
+
370 hair dryer hair dryer 21 40 7 hair dryer otherprop Objects n03483316 hand_blower.n.01 objects 39
|
171 |
+
191 pillar pillar 21 38 7 column otherstructure Objects n03073977 column.n.07 column 24
|
172 |
+
748 divider divider 20 40 7 otherprop Objects wall 1
|
173 |
+
242 power outlet power outlet 19 40 7 otherprop Objects misc 40
|
174 |
+
45 dining table dining table 19 7 10 table table Table table table table 4379243 n04379243 table.n.02 table 5
|
175 |
+
417 shower floor shower floor 19 2 5 floor floor Floor n04208936 shower.n.01 floor 2
|
176 |
+
70 washing machines washing machine 19 39 6 washing machine otherfurniture Furniture washing_machine 4554684 n04554684 washer.n.03 appliances 37
|
177 |
+
188 shower door shower door 19 8 12 door door Wall door n04208936 shower.n.01 door 4
|
178 |
+
1176 coffee kettle coffee kettle 18 40 7 pot otherprop Objects n03612814 kettle.n.01 objects 39
|
179 |
+
1177 wardrobe cabinet wardrobe 18 39 6 wardrobe otherfurniture Furniture wardrobe n04550184 wardrobe.n.01 furniture 36
|
180 |
+
1178 structure structure 18 38 7 otherstructure Objects misc 40
|
181 |
+
18 bookshelves bookshelf 17 10 6 bookshelf bookshelf Furniture bookshelf bookshelf 2871439 n02871439 bookshelf.n.01 shelving 31
|
182 |
+
110 clothes dryer clothes dryer 17 39 6 otherfurniture Furniture n03251766 dryer.n.01 appliances 37
|
183 |
+
148 toaster toaster 17 40 7 toaster otherprop Objects n04442312 toaster.n.02 appliances 37
|
184 |
+
63 shoe shoe 17 40 7 shoe otherprop Objects n04199027 shoe.n.01 clothes 38
|
185 |
+
155 ironing board ironing board 16 39 6 ironing board otherfurniture Furniture n03586090 ironing_board.n.01 objects 39
|
186 |
+
572 alarm clock alarm clock 16 40 7 alarm clock otherprop Objects clock 3046257 n02694662 alarm_clock.n.01 objects 39
|
187 |
+
1179 shower head shower head 15 38 7 otherstructure Objects shower 23
|
188 |
+
28 lamp base lamp 15 35 7 lamp lamp Objects lamp lamp 3636649 n03636649 lamp.n.02 lighting 28
|
189 |
+
392 water bottle water bottle 15 40 7 bottle otherprop Objects bottle bottle 2876657 n04557648 water_bottle.n.01 objects 39
|
190 |
+
1180 keyboard piano keyboard piano 15 39 6 piano otherfurniture Furniture piano piano 3928116 n03928116 piano.n.01 furniture 36
|
191 |
+
609 projector screen projector screen 15 38 7 projector screen otherstructure Objects misc 40
|
192 |
+
1181 case of water bottles case of water bottles 15 40 7 otherprop Objects objects 39
|
193 |
+
195 toaster oven toaster oven 14 40 7 toaster oven otherprop Objects n04442441 toaster_oven.n.01 appliances 37
|
194 |
+
581 music stand music stand 14 39 6 music stand otherfurniture Furniture n03801760 music_stand.n.01 furniture 36
|
195 |
+
58 staircase stairs 14 38 7 stairs otherstructure Objects n04298308 stairway.n.01 stairs 16
|
196 |
+
1182 coat rack coat rack 14 40 7 otherprop Objects n03059103 coatrack.n.01 shelving 3
|
197 |
+
1183 storage organizer storage organizer 14 40 7 otherprop Objects shelving 3
|
198 |
+
139 machine machine 14 40 7 machine otherprop Objects n03699975 machine.n.01 appliances 37
|
199 |
+
1184 folded chair folded chair 14 5 4 chair chair Chair chair chair chair 3001627 n03001627 chair.n.01 chair 3
|
200 |
+
1185 fire alarm fire alarm 14 40 7 otherprop Objects n03343737 fire_alarm.n.02 misc 40
|
201 |
+
156 fireplace fireplace 13 38 7 fireplace otherstructure Objects n03346455 fireplace.n.01 fireplace 27
|
202 |
+
408 vent vent 13 40 7 otherprop Objects n04526241 vent.n.01 misc 40
|
203 |
+
213 furniture furniture 13 39 6 furniture otherfurniture Furniture n03405725 furniture.n.01 furniture 36
|
204 |
+
1186 power strip power strip 13 40 7 otherprop Objects objects 39
|
205 |
+
1187 calendar calendar 13 40 7 otherprop Objects objects 39
|
206 |
+
1188 poster poster 13 11 8 picture picture Picture n03931044 picture.n.01 picture 6
|
207 |
+
115 toilet paper holder toilet paper holder 13 40 7 toilet paper holder otherprop Objects objects 39
|
208 |
+
1189 potted plant potted plant 12 40 7 plant otherprop Objects plant n00017222 plant.n.02 plant 14
|
209 |
+
304 stuffed animal stuffed animal 12 40 7 stuffed animal otherprop Objects n04399382 teddy.n.01 objects 39
|
210 |
+
1190 luggage luggage 12 40 7 luggage otherprop Objects n02774630 baggage.n.01 objects 39
|
211 |
+
21 curtains curtain 12 16 13 curtain curtain Window curtain n03151077 curtain.n.01 curtain 12
|
212 |
+
312 headphones headphones 12 40 7 otherprop Objects n03261776 earphone.n.01 objects 39
|
213 |
+
233 crate crate 12 39 6 crate otherfurniture Furniture n03127925 crate.n.01 objects 39
|
214 |
+
286 candle candle 12 40 7 candle otherprop Objects lamp n02948072 candle.n.01 objects 39
|
215 |
+
264 projector projector 12 40 7 projector otherprop Objects n04009552 projector.n.02 objects 39
|
216 |
+
110 clothes dryers clothes dryer 12 39 6 otherfurniture Furniture n03251766 dryer.n.01 appliances 37
|
217 |
+
1191 mattress mattress 12 4 1 bed bed Bed bed bed bed 2818832 n02818832 bed.n.01 bed 11
|
218 |
+
356 dustpan dustpan 12 40 7 otherprop Objects n03259009 dustpan.n.02 objects 39
|
219 |
+
25 drawer drawer 11 39 6 drawer otherfurniture Furniture n03233905 drawer.n.01 furniture 36
|
220 |
+
750 rod rod 11 40 7 otherprop Objects pistol 3948459 n03427202 gat.n.01 misc 40
|
221 |
+
269 globe globe 11 40 7 globe otherprop Objects objects 39
|
222 |
+
307 footrest footrest 11 39 6 foot rest otherfurniture Furniture stool n03380724 footstool.n.01 stool 19
|
223 |
+
410 piano bench piano bench 11 39 6 piano bench otherfurniture Furniture bench bench 2828884 n02828884 bench.n.01 seating 34
|
224 |
+
730 breakfast bar breakfast bar 11 38 7 bar otherstructure Objects counter 26
|
225 |
+
216 step stool step stool 11 40 7 step stool otherprop Objects stool n04315713 step_stool.n.01 stool 19
|
226 |
+
1192 hand rail hand rail 11 38 7 railing otherstructure Objects railing 30
|
227 |
+
119 vending machine vending machine 11 40 7 machine otherprop Objects n04525305 vending_machine.n.01 appliances 37
|
228 |
+
682 ceiling fan ceiling fan 11 40 7 fan otherprop Objects n03320046 fan.n.01 misc 40
|
229 |
+
434 swiffer swiffer 11 40 7 otherprop Objects objects 39
|
230 |
+
126 foosball table foosball table 11 39 6 foosball table otherfurniture Furniture table table table 4379243 n04379243 table.n.02 table 5
|
231 |
+
919 jar jar 11 40 7 jar otherprop Objects jar 3593526 n03593526 jar.n.01 objects 39
|
232 |
+
85 footstool footstool 11 39 6 ottoman otherfurniture Furniture stool n03380724 footstool.n.01 stool 19
|
233 |
+
1193 folded table folded table 10 7 10 table table Table table table table 4379243 n04379243 table.n.02 table 5
|
234 |
+
108 round table round table 10 7 10 table table Table table table table 4379243 n04114554 round_table.n.02 table 5
|
235 |
+
135 hamper hamper 10 40 7 basket otherprop Objects basket 2801938 n03482405 hamper.n.02 objects 39
|
236 |
+
1194 poster tube poster tube 10 40 7 otherprop Objects objects 39
|
237 |
+
432 case case 10 40 7 case otherprop Objects objects 39
|
238 |
+
53 carpet carpet 10 40 7 rug otherprop Objects n04118021 rug.n.01 floor 2
|
239 |
+
1195 thermostat thermostat 10 40 7 otherprop Objects n04422875 thermostat.n.01 misc 40
|
240 |
+
111 coat coat 10 40 7 jacket otherprop Objects n03057021 coat.n.01 clothes 38
|
241 |
+
305 water fountain water fountain 10 38 7 water fountain otherstructure Objects n03241335 drinking_fountain.n.01 misc 40
|
242 |
+
1125 smoke detector smoke detector 10 40 7 otherprop Objects misc 40
|
243 |
+
13 pillows pillow 9 18 7 pillow pillow Objects pillow 3938244 n03938244 pillow.n.01 cushion 8
|
244 |
+
1196 flip flops flip flops 9 40 7 shoe otherprop Objects n04199027 shoe.n.01 clothes 38
|
245 |
+
1197 cloth cloth 9 21 7 clothes clothes Objects n02728440 apparel.n.01 clothes 38
|
246 |
+
1198 banner banner 9 40 7 otherprop Objects n02788021 banner.n.01 misc 40
|
247 |
+
1199 clothes hanger clothes hanger 9 40 7 otherprop Objects n03057920 coat_hanger.n.01 objects 39
|
248 |
+
1200 whiteboard eraser whiteboard eraser 9 40 7 otherprop Objects objects 39
|
249 |
+
378 iron iron 9 40 7 otherprop Objects n03584829 iron.n.04 objects 39
|
250 |
+
591 instrument case instrument case 9 40 7 case otherprop Objects objects 39
|
251 |
+
49 toilet paper rolls toilet paper 9 40 7 toilet paper otherprop Objects n15075141 toilet_tissue.n.01 objects 39
|
252 |
+
92 soap soap 9 40 7 soap otherprop Objects n04253437 soap.n.01 objects 39
|
253 |
+
1098 block block 9 40 7 otherprop Objects misc 40
|
254 |
+
291 wall hanging wall hanging 8 40 7 otherprop Objects n03491178 hanging.n.01 picture 6
|
255 |
+
1063 kitchen island kitchen island 8 38 7 kitchen island otherstructure Objects n03620600 kitchen_island.n.01 counter 26
|
256 |
+
107 pipes pipe 8 38 7 otherstructure Objects misc 40
|
257 |
+
1135 toothbrush toothbrush 8 40 7 toothbrush otherprop Objects n04453156 toothbrush.n.01 objects 39
|
258 |
+
189 shirt shirt 8 40 7 otherprop Objects n04197391 shirt.n.01 clothes 38
|
259 |
+
245 cutting board cutting board 8 40 7 cutting board otherprop Objects n03025513 chopping_board.n.01 objects 39
|
260 |
+
194 vase vase 8 40 7 vase otherprop Objects vase jar 3593526 n04522168 vase.n.01 objects 39
|
261 |
+
1201 shower control valve shower control valve 8 38 7 otherstructure Objects n04208936 shower.n.01 shower 23
|
262 |
+
386 exercise machine exercise machine 8 40 7 machine otherprop Objects gym_equipment 33
|
263 |
+
1202 compost bin compost bin 8 39 6 garbage bin otherfurniture Furniture trash_bin 2747177 n02747177 ashcan.n.01 objects 39
|
264 |
+
857 shorts shorts 8 40 7 shorts otherprop Objects clothes 38
|
265 |
+
452 tire tire 8 40 7 otherprop Objects n04440749 tire.n.01 objects 39
|
266 |
+
1203 teddy bear teddy bear 7 40 7 stuffed animal otherprop Objects n04399382 teddy.n.01 objects 39
|
267 |
+
346 bathrobe bathrobe 7 40 7 otherprop Objects n02807616 bathrobe.n.01 clothes 38
|
268 |
+
152 handrail handrail 7 38 7 railing otherstructure Objects n02788148 bannister.n.02 railing 30
|
269 |
+
83 faucet faucet 7 40 7 faucet otherprop Objects faucet 3325088 n03325088 faucet.n.01 misc 40
|
270 |
+
1204 pantry wall pantry wall 7 1 12 wall wall Wall n04546855 wall.n.01 wall 1
|
271 |
+
726 thermos thermos 7 40 7 flask otherprop Objects bottle bottle 2876657 n04422727 thermos.n.01 objects 39
|
272 |
+
61 rug rug 7 40 7 rug otherprop Objects n04118021 rug.n.01 floor 2
|
273 |
+
39 couch cushions cushion 7 18 7 pillow pillow Objects n03151500 cushion.n.03 cushion 8
|
274 |
+
1117 tripod tripod 7 39 6 stand otherfurniture Furniture n04485082 tripod.n.01 objects 39
|
275 |
+
540 mailbox mailbox 7 29 7 box box Objects mailbox 3710193 n03710193 mailbox.n.01 misc 40
|
276 |
+
1205 tupperware tupperware 7 40 7 otherprop Objects objects 39
|
277 |
+
415 shoe rack shoe rack 7 40 7 shoe rack otherprop Objects shelving 31
|
278 |
+
31 towels towel 6 27 7 towel towel Objects n04459362 towel.n.01 towel 20
|
279 |
+
1206 beer bottles beer bottle 6 40 7 bottle otherprop Objects bottle bottle 2876657 n02876657 bottle.n.01 objects 39
|
280 |
+
153 treadmill treadmill 6 39 6 treadmill otherfurniture Furniture n04477387 treadmill.n.01 gym_equipment 33
|
281 |
+
1207 salt salt 6 40 7 otherprop Objects objects 39
|
282 |
+
129 chest chest 6 39 6 chest otherfurniture Furniture dresser dresser chest_of_drawers 13
|
283 |
+
220 dispenser dispenser 6 40 7 otherprop Objects n03210683 dispenser.n.01 objects 39
|
284 |
+
1208 mirror doors mirror door 6 8 12 door door Wall door n03221720 door.n.01 door 4
|
285 |
+
231 remote remote 6 40 7 otherprop Objects remote_control 4074963 n04074963 remote_control.n.01 objects 39
|
286 |
+
1209 folded ladder folded ladder 6 39 6 ladder otherfurniture Furniture stairs n03632277 ladder.n.01 misc 40
|
287 |
+
39 cushion cushion 6 18 7 pillow pillow Objects n03151500 cushion.n.03 cushion 8
|
288 |
+
1210 carton carton 6 40 7 otherprop Objects objects 39
|
289 |
+
117 step step 6 38 7 otherstructure Objects n04314914 step.n.04 misc 40
|
290 |
+
822 drying rack drying rack 6 39 6 drying rack otherfurniture Furniture shelving 31
|
291 |
+
238 slippers slipper 6 40 7 shoe otherprop Objects n04241394 slipper.n.01 clothes 38
|
292 |
+
143 pool table pool table 6 39 6 pool table otherfurniture Furniture table table table 4379243 n03982430 pool_table.n.01 table 5
|
293 |
+
1211 soda stream soda stream 6 40 7 otherprop Objects objects 39
|
294 |
+
228 toilet brush toilet brush 6 40 7 toilet brush otherprop Objects objects 39
|
295 |
+
494 loft bed loft bed 6 4 1 bed bed Bed bed bed bed 2818832 n02818832 bed.n.01 bed 11
|
296 |
+
226 cooking pot cooking pot 6 40 7 pot otherprop Objects objects 39
|
297 |
+
91 heater heater 6 39 6 heater otherfurniture Furniture n03508101 heater.n.01 misc 40
|
298 |
+
1072 messenger bag messenger bag 6 37 7 bag bag Objects objects 39
|
299 |
+
435 stapler stapler 6 40 7 stapler otherprop Objects n04303497 stapler.n.01 objects 39
|
300 |
+
1165 closet walls closet wall 5 1 12 wall wall Wall n04546855 wall.n.01 wall 1
|
301 |
+
345 scanner scanner 5 40 7 otherprop Objects appliances 37
|
302 |
+
893 elliptical machine elliptical machine 5 40 7 machine otherprop Objects gym_equipment 33
|
303 |
+
621 kettle kettle 5 40 7 pot otherprop Objects n03612814 kettle.n.01 objects 39
|
304 |
+
1212 metronome metronome 5 40 7 otherprop Objects n03757604 metronome.n.01 objects 39
|
305 |
+
297 dumbell dumbell 5 40 7 otherprop Objects objects 39
|
306 |
+
1213 music book music book 5 23 2 book books Books n02870526 book.n.11 objects 39
|
307 |
+
1214 rice cooker rice cooker 5 40 7 otherprop Objects objects 39
|
308 |
+
1215 dart board dart board 5 38 7 board otherstructure Objects n03162940 dartboard.n.01 objects 39
|
309 |
+
529 sewing machine sewing machine 5 40 7 sewing machine otherprop Objects n04179913 sewing_machine.n.01 objects 39
|
310 |
+
1216 grab bar grab bar 5 38 7 railing otherstructure Objects railing 30
|
311 |
+
1217 flowerpot flowerpot 5 40 7 vase otherprop Objects vase jar 3593526 n04522168 vase.n.01 objects 39
|
312 |
+
1218 painting painting 5 11 8 picture picture Picture n03931044 picture.n.01 picture 6
|
313 |
+
1219 railing railing 5 38 7 railing otherstructure Objects n04047401 railing.n.01 railing 30
|
314 |
+
1220 stair stair 5 38 7 stairs otherstructure Objects stairs n04314914 step.n.04 stairs 16
|
315 |
+
525 toolbox toolbox 5 39 6 chest otherfurniture Furniture n04452615 toolbox.n.01 objects 39
|
316 |
+
204 nerf gun nerf gun 5 40 7 otherprop Objects objects 39
|
317 |
+
693 binders binder 5 40 7 binder otherprop Objects objects 39
|
318 |
+
179 desk lamp desk lamp 5 35 7 lamp lamp Objects lamp lamp 3636649 n03636649 lamp.n.02 lighting 28
|
319 |
+
1221 quadcopter quadcopter 5 40 7 otherprop Objects objects 39
|
320 |
+
1222 pitcher pitcher 5 40 7 pitcher otherprop Objects n03950228 pitcher.n.02 objects 39
|
321 |
+
1223 hanging hanging 5 40 7 otherprop Objects misc 40
|
322 |
+
1224 mail mail 5 40 7 otherprop Objects misc 40
|
323 |
+
1225 closet ceiling closet ceiling 5 22 3 ceiling ceiling Ceiling n02990373 ceiling.n.01 ceiling 17
|
324 |
+
1226 hoverboard hoverboard 5 40 7 otherprop Objects objects 39
|
325 |
+
1227 beanbag chair beanbag chair 5 39 6 bean bag otherfurniture Furniture n02816656 beanbag.n.01 chair 3
|
326 |
+
571 water heater water heater 5 40 7 water heater otherprop Objects n04560113 water_heater.n.01 misc 40
|
327 |
+
1228 spray bottle spray bottle 5 40 7 bottle otherprop Objects bottle bottle 2876657 n02876657 bottle.n.01 objects 39
|
328 |
+
556 rope rope 5 40 7 rope otherprop Objects n04108268 rope.n.01 objects 39
|
329 |
+
280 plastic container plastic container 5 40 7 container otherprop Objects objects 39
|
330 |
+
1229 soap bottle soap bottle 5 40 7 soap otherprop Objects objects 39
|
331 |
+
1230 ikea bag ikea bag 4 37 7 bag bag Objects 2773838 n02773838 bag.n.06 objects 39
|
332 |
+
1231 sleeping bag sleeping bag 4 40 7 otherprop Objects n04235860 sleeping_bag.n.01 objects 39
|
333 |
+
1232 duffel bag duffel bag 4 37 7 bag bag Objects suitcase 2773838 n02773838 bag.n.06 objects 39
|
334 |
+
746 frying pan frying pan 4 40 7 frying pan otherprop Objects n03400231 frying_pan.n.01 objects 39
|
335 |
+
1233 oven mitt oven mitt 4 40 7 otherprop Objects objects 39
|
336 |
+
1234 pot pot 4 40 7 pot otherprop Objects n04235860 sleeping_bag.n.01 objects 39
|
337 |
+
144 hand dryer hand dryer 4 40 7 otherprop Objects objects 39
|
338 |
+
282 dollhouse dollhouse 4 39 6 doll house otherfurniture Furniture n03219483 dollhouse.n.01 objects 39
|
339 |
+
167 shampoo bottle shampoo bottle 4 40 7 bottle otherprop Objects bottle bottle 2876657 n02876657 bottle.n.01 objects 39
|
340 |
+
1235 hair brush hair brush 4 40 7 otherprop Objects n02908217 brush.n.02 objects 39
|
341 |
+
1236 tennis racket tennis racket 4 40 7 otherprop Objects n04409806 tennis_racket.n.01 objects 39
|
342 |
+
1237 display case display case 4 40 7 case otherprop Objects objects 39
|
343 |
+
234 ping pong table ping pong table 4 39 6 ping pong table otherfurniture Furniture table table table 4379243 n04379243 table.n.02 table 5
|
344 |
+
563 boiler boiler 4 40 7 otherprop Objects misc 40
|
345 |
+
1238 bag of coffee beans bag of coffee beans 4 37 7 bag bag Objects suitcase 2773838 n02773838 bag.n.06 objects 39
|
346 |
+
1239 bananas banana 4 40 7 otherprop Objects n00021265 food.n.01 objects 39
|
347 |
+
1240 carseat carseat 4 40 7 otherprop Objects misc 40
|
348 |
+
366 helmet helmet 4 40 7 otherprop Objects helmet 3513137 n03513137 helmet.n.02 clothes 38
|
349 |
+
816 umbrella umbrella 4 40 7 umbrella otherprop Objects n04507155 umbrella.n.01 objects 39
|
350 |
+
1241 coffee box coffee box 4 40 7 otherprop Objects objects 39
|
351 |
+
719 envelope envelope 4 40 7 envelope otherprop Objects n03291819 envelope.n.01 objects 39
|
352 |
+
284 wet floor sign wet floor sign 4 40 7 sign otherprop Objects misc 40
|
353 |
+
1242 clothing rack clothing rack 4 39 6 stand otherfurniture Furniture n04038440 rack.n.05 shelving 31
|
354 |
+
247 controller controller 4 40 7 otherprop Objects n03096960 control.n.09 objects 39
|
355 |
+
1243 bath walls bathroom wall 4 1 12 wall wall Wall n04546855 wall.n.01 wall 1
|
356 |
+
1244 podium podium 4 39 6 otherfurniture Furniture n03159640 dais.n.01 furniture 36
|
357 |
+
1245 storage box storage box 4 29 7 box box Objects n02883344 box.n.01 objects 39
|
358 |
+
1246 dolly dolly 4 40 7 otherprop Objects misc 40
|
359 |
+
1247 shampoo shampoo 3 40 7 otherprop Objects n04183516 shampoo.n.01 objects 39
|
360 |
+
592 paper tray paper tray 3 40 7 paper tray otherprop Objects objects 39
|
361 |
+
385 cabinet door cabinet door 3 8 12 door door Wall door door 4
|
362 |
+
1248 changing station changing station 3 40 7 otherprop Objects misc 40
|
363 |
+
1249 poster printer poster printer 3 40 7 printer otherprop Objects printer 4004475 n04004475 printer.n.03 appliances 37
|
364 |
+
133 screen screen 3 40 7 otherprop Objects n03151077 curtain.n.01 curtain 12
|
365 |
+
301 soap bar soap bar 3 38 7 bar otherstructure Objects objects 39
|
366 |
+
1250 crutches crutches 3 40 7 otherprop Objects n03141823 crutch.n.01 objects 39
|
367 |
+
379 studio light studio light 3 38 7 light otherstructure Objects lighting 28
|
368 |
+
130 stack of cups cup 3 40 7 cup otherprop Objects cup cup or mug 3797390 n03797390 mug.n.04 objects 39
|
369 |
+
1251 toilet flush button toilet flush button 3 40 7 otherprop Objects objects 39
|
370 |
+
450 trunk trunk 3 40 7 otherprop Objects misc 40
|
371 |
+
1252 grocery bag grocery bag 3 37 7 bag bag Objects suitcase 2773838 n03461288 grocery_bag.n.01 objects 39
|
372 |
+
316 plastic bin plastic bin 3 40 7 bin otherprop Objects objects 39
|
373 |
+
1253 pizza box pizza box 3 29 7 box box Objects objects 39
|
374 |
+
385 cabinet doors cabinet door 3 3 6 cabinet cabinet Furniture cabinet 2933112 n02933112 cabinet.n.01 door 4
|
375 |
+
1254 legs legs 3 31 7 person person Objects person n05217688 person.n.02 misc 40
|
376 |
+
461 car car 3 40 7 car otherprop Objects car car 2958343 n02958343 car.n.01 misc 40
|
377 |
+
1255 shaving cream shaving cream 3 40 7 otherprop Objects n04186051 shaving_cream.n.01 objects 39
|
378 |
+
1256 luggage stand luggage stand 3 39 6 stand otherfurniture Furniture n04038440 rack.n.05 shelving 31
|
379 |
+
599 shredder shredder 3 40 7 otherprop Objects n04210120 shredder.n.01 objects 39
|
380 |
+
281 statue statue 3 40 7 sculpture otherprop Objects n04306847 statue.n.01 misc 40
|
381 |
+
1257 urinal urinal 3 33 7 toilet toilet Objects toilet toilet n04515991 urinal.n.01 toilet 18
|
382 |
+
1258 hose hose 3 40 7 otherprop Objects n03539875 hose.n.03 misc 40
|
383 |
+
1259 bike pump bike pump 3 40 7 otherprop Objects objects 39
|
384 |
+
319 coatrack coatrack 3 40 7 otherprop Objects n03059103 coatrack.n.01 shelving 31
|
385 |
+
1260 bear bear 3 40 7 otherprop Objects objects 39
|
386 |
+
28 wall lamp lamp 3 35 7 lamp lamp Objects lamp lamp 3636649 n03636649 lamp.n.02 lighting 28
|
387 |
+
1261 humidifier humidifier 3 40 7 otherprop Objects objects 39
|
388 |
+
546 toothpaste toothpaste 3 40 7 toothpaste otherprop Objects objects 39
|
389 |
+
1262 mouthwash bottle mouthwash bottle 3 40 7 bottle otherprop Objects bottle bottle 2876657 n02876657 bottle.n.01 objects 39
|
390 |
+
1263 poster cutter poster cutter 3 40 7 otherprop Objects objects 39
|
391 |
+
1264 golf bag golf bag 3 37 7 bag bag Objects suitcase 2773838 n03445617 golf_bag.n.01 objects 39
|
392 |
+
1265 food container food container 3 40 7 container otherprop Objects n03094503 container.n.01 objects 39
|
393 |
+
1266 camera camera 3 40 7 otherprop Objects objects 39
|
394 |
+
28 table lamp lamp 3 35 7 lamp lamp Objects lamp lamp 3636649 n04380533 table_lamp.n.01 lighting 28
|
395 |
+
1267 yoga mat yoga mat 3 20 5 floor mat floor mat Floor n03727837 mat.n.01 floor 2
|
396 |
+
1268 card card 3 40 7 otherprop Objects objects 39
|
397 |
+
1269 mug mug 3 40 7 cup otherprop Objects cup cup or mug 3797390 n03797390 mug.n.04 objects 39
|
398 |
+
188 shower doors shower door 3 38 7 otherstructure Objects n04208936 shower.n.01 door 4
|
399 |
+
689 cardboard cardboard 3 40 7 otherprop Objects objects 39
|
400 |
+
1270 rack stand rack stand 3 39 6 stand otherfurniture Furniture n04038440 rack.n.05 shelving 31
|
401 |
+
1271 boxes of paper boxes of paper 3 29 7 box box Objects n02883344 box.n.01 objects 39
|
402 |
+
1272 flag flag 3 40 7 otherprop Objects misc 40
|
403 |
+
354 futon futon 3 39 6 mattress otherfurniture Furniture n03408444 futon.n.01 sofa 10
|
404 |
+
339 magazine magazine 3 40 7 magazine otherprop Objects n06595351 magazine.n.01 objects 39
|
405 |
+
1009 exit sign exit sign 3 40 7 exit sign otherprop Objects misc 40
|
406 |
+
1273 rolled poster rolled poster 3 40 7 otherprop Objects objects 39
|
407 |
+
1274 wheel wheel 3 40 7 otherprop Objects objects 39
|
408 |
+
15 pictures picture 3 11 8 picture picture Picture n03931044 picture.n.01 picture 6
|
409 |
+
1275 blackboard eraser blackboard eraser 3 40 7 eraser otherprop Objects n03294833 eraser.n.01 objects 39
|
410 |
+
361 organizer organizer 3 40 7 otherprop Objects n03918737 personal_digital_assistant.n.01 objects 39
|
411 |
+
1276 doll doll 3 40 7 toy otherprop Objects n03219135 doll.n.01 objects 39
|
412 |
+
326 book rack book rack 3 39 6 bookrack otherfurniture Furniture objects 39
|
413 |
+
1277 laundry bag laundry bag 3 40 7 laundry basket otherprop Objects basket 2801938 n03050864 clothes_hamper.n.01 objects 39
|
414 |
+
1278 sponge sponge 3 40 7 otherprop Objects n01906749 sponge.n.04 objects 39
|
415 |
+
116 seating seat 3 39 6 furniture otherfurniture Furniture n04161981 seat.n.03 furniture 36
|
416 |
+
1184 folded chairs folded chair 2 5 4 chair chair Chair chair chair chair 3001627 n03001627 chair.n.01 chair 3
|
417 |
+
1279 lotion bottle lotion bottle 2 40 7 bottle otherprop Objects bottle bottle 2876657 n02876657 bottle.n.01 objects 39
|
418 |
+
212 can can 2 40 7 can otherprop Objects can 2946921 n02946921 can.n.01 objects 39
|
419 |
+
1280 lunch box lunch box 2 40 7 otherprop Objects objects 39
|
420 |
+
1281 food display food display 2 40 7 otherprop Objects misc 40
|
421 |
+
794 storage shelf storage shelf 2 40 7 otherprop Objects shelving 31
|
422 |
+
1282 sliding wood door sliding wood door 2 40 7 otherprop Objects door 4
|
423 |
+
955 pants pants 2 40 7 otherprop Objects n04489008 trouser.n.01 clothes 38
|
424 |
+
387 wood wood 2 40 7 otherprop Objects misc 40
|
425 |
+
69 boards board 2 38 7 board otherstructure Objects board_panel 35
|
426 |
+
65 bottles bottle 2 40 7 bottle otherprop Objects bottle bottle 2876657 n02876657 bottle.n.01 objects 39
|
427 |
+
523 washcloth washcloth 2 40 7 otherprop Objects n04554523 washcloth.n.01 towel 20
|
428 |
+
389 workbench workbench 2 39 6 bench otherfurniture Furniture bench table 4379243 n04600486 workbench.n.01 table 5
|
429 |
+
29 open kitchen cabinet kitchen cabinet 2 3 6 cabinet cabinet Furniture n02933112 cabinet.n.01 cabinet 7
|
430 |
+
1283 organizer shelf organizer shelf 2 15 6 shelves shelves Furniture bookshelf bookshelf 2871439 n02871439 bookshelf.n.01 shelving 31
|
431 |
+
146 frame frame 2 38 7 otherstructure Objects misc 40
|
432 |
+
130 cups cup 2 40 7 cup otherprop Objects cup cup or mug 3797390 n03797390 mug.n.04 objects 39
|
433 |
+
372 exercise ball exercise ball 2 40 7 ball otherprop Objects n04285146 sports_equipment.n.01 gym_equipment 33
|
434 |
+
289 easel easel 2 39 6 stand otherfurniture Furniture n03262809 easel.n.01 furniture 36
|
435 |
+
440 garbage bag garbage bag 2 37 7 bag bag Objects suitcase 2773838 n02773838 bag.n.06 objects 39
|
436 |
+
321 roomba roomba 2 40 7 otherprop Objects objects 39
|
437 |
+
976 garage door garage door 2 38 7 garage door otherstructure Objects door door 4
|
438 |
+
1256 luggage rack luggage stand 2 39 6 stand otherfurniture Furniture n04038440 shelving 31
|
439 |
+
1284 bike lock bike lock 2 40 7 otherprop Objects objects 39
|
440 |
+
1285 briefcase briefcase 2 40 7 otherprop Objects n02900705 briefcase.n.01 objects 39
|
441 |
+
357 hand towel hand towel 2 27 7 towel towel Objects n03490006 hand_towel.n.01 towel 20
|
442 |
+
1286 bath products bath product 2 40 7 otherprop Objects objects 39
|
443 |
+
1287 star star 2 40 7 otherprop Objects n09444783 star.n.03 misc 40
|
444 |
+
365 map map 2 40 7 map otherprop Objects n03720163 map.n.01 misc 40
|
445 |
+
1288 coffee bean bag coffee bean bag 2 37 7 bag bag Objects suitcase 2773838 n02773838 bag.n.06 objects 39
|
446 |
+
81 headboard headboard 2 39 6 headboard otherfurniture Furniture n03502200 headboard.n.01 bed 11
|
447 |
+
1289 ipad ipad 2 40 7 otherprop Objects objects 39
|
448 |
+
1290 display rack display rack 2 39 6 stand otherfurniture Furniture n04038440 rack.n.05 shelving 31
|
449 |
+
948 traffic cone traffic cone 2 40 7 cone otherprop Objects cone objects 39
|
450 |
+
174 toiletry toiletry 2 40 7 otherprop Objects n04447443 toiletry.n.01 objects 39
|
451 |
+
1028 canopy canopy 2 40 7 otherprop Objects misc 40
|
452 |
+
1291 massage chair massage chair 2 5 4 chair chair Chair chair chair chair 3001627 n03001627 chair.n.01 chair 3
|
453 |
+
1292 paper organizer paper organizer 2 40 7 otherprop Objects objects 39
|
454 |
+
1005 barricade barricade 2 40 7 otherprop Objects misc 40
|
455 |
+
235 platform platform 2 38 7 otherstructure Objects misc 40
|
456 |
+
1293 cap cap 2 40 7 hat otherprop Objects n03497657 hat.n.01 clothes 38
|
457 |
+
1294 dumbbell plates dumbbell plates 2 40 7 otherprop Objects objects 39
|
458 |
+
1295 elevator elevator 2 38 7 otherstructure Objects misc 40
|
459 |
+
1296 cooking pan cooking pan 2 40 7 pan otherprop Objects n03880531 pan.n.01 objects 39
|
460 |
+
1297 trash bag trash bag 2 37 7 bag bag Objects objects 39
|
461 |
+
1298 santa santa 2 40 7 otherprop Objects misc 40
|
462 |
+
1299 jewelry box jewelry box 2 29 7 box box Objects n02883344 box.n.01 objects 39
|
463 |
+
1300 boat boat 2 40 7 otherprop Objects misc 40
|
464 |
+
1301 sock sock 2 21 7 clothes clothes Objects n04254777 sock.n.01 clothes 38
|
465 |
+
1051 kinect kinect 2 40 7 kinect otherprop Objects objects 39
|
466 |
+
566 crib crib 2 39 6 crib otherfurniture Furniture furniture 36
|
467 |
+
1302 plastic storage bin plastic storage bin 2 40 7 container otherprop Objects n03094503 container.n.01 objects 39
|
468 |
+
1062 cooler cooler 2 24 6 refridgerator refridgerator Furniture n03102654 cooler.n.01 appliances 37
|
469 |
+
1303 kitchen apron kitchen apron 2 21 7 clothes clothes Objects n02728440 apparel.n.01 clothes 38
|
470 |
+
1304 dishwashing soap bottle dishwashing soap bottle 2 40 7 bottle otherprop Objects bottle bottle 2876657 n02876657 bottle.n.01 objects 39
|
471 |
+
1305 xbox controller xbox controller 2 40 7 otherprop Objects objects 39
|
472 |
+
1306 banana holder banana holder 2 40 7 otherprop Objects objects 39
|
473 |
+
298 ping pong paddle ping pong paddle 2 40 7 otherprop Objects table 5
|
474 |
+
1307 airplane airplane 2 40 7 otherprop Objects misc 40
|
475 |
+
1308 conditioner bottle conditioner bottle 2 40 7 bottle otherprop Objects bottle bottle 2876657 n02876657 bottle.n.01 objects 39
|
476 |
+
1309 tea kettle tea kettle 2 40 7 tea kettle otherprop Objects n04397768 teakettle.n.01 objects 39
|
477 |
+
43 bedframe bedframe 2 39 6 otherfurniture Furniture n02822579 bedstead.n.01 bed 11
|
478 |
+
1310 wood beam wood beam 2 38 7 otherstructure Objects beam 29
|
479 |
+
593 toilet paper package toilet paper package 2 40 7 otherprop Objects objects 39
|
480 |
+
1311 wall mounted coat rack wall mounted coat rack 2 40 7 otherprop Objects n03059103 coatrack.n.01 shelving 31
|
481 |
+
1312 film light film light 2 40 7 otherprop Objects lighting 28
|
482 |
+
749 ceiling lamp ceiling lamp 1 35 7 lamp lamp Objects lamp lamp 3636649 n03636649 lamp.n.02 lighting 28
|
483 |
+
623 chain chain 1 40 7 otherprop Objects chair 3
|
484 |
+
1313 sofa sofa 1 6 9 sofa sofa Sofa sofa sofa sofa 4256520 n04256520 sofa.n.01 sofa 10
|
485 |
+
99 closet wardrobe wardrobe 1 39 6 wardrobe otherfurniture Furniture wardrobe n04550184 wardrobe.n.01 furniture 36
|
486 |
+
265 sweater sweater 1 40 7 otherprop Objects n04370048 sweater.n.01 clothes 38
|
487 |
+
1314 kitchen mixer kitchen mixer 1 40 7 otherprop Objects appliances 37
|
488 |
+
99 wardrobe wardrobe 1 39 6 wardrobe otherfurniture Furniture wardrobe n04550184 wardrobe.n.01 furniture 36
|
489 |
+
1315 water softener water softener 1 40 7 otherprop Objects misc 40
|
490 |
+
448 banister banister 1 38 7 banister otherstructure Objects n02788148 bannister.n.02 railing 30
|
491 |
+
257 trolley trolley 1 40 7 trolley otherprop Objects n04335435 streetcar.n.01 misc 40
|
492 |
+
1316 pantry shelf pantry shelf 1 15 6 shelves shelves Furniture bookshelf bookshelf 2871439 n02871439 bookshelf.n.01 shelving 31
|
493 |
+
786 sofa bed sofa bed 1 4 1 bed bed Bed bed bed bed 2818832 n02818832 bed.n.01 bed 11
|
494 |
+
801 loofa loofa 1 40 7 otherprop Objects objects 39
|
495 |
+
972 shower faucet handle shower faucet handle 1 40 7 handle otherprop Objects shower 23
|
496 |
+
1317 toy piano toy piano 1 40 7 toy otherprop Objects n03964744 plaything.n.01 objects 39
|
497 |
+
1318 fish fish 1 40 7 otherprop Objects n02512053 fish.n.01 objects 39
|
498 |
+
75 file cabinets file cabinet 1 3 6 cabinet cabinet Furniture cabinet 2933112 n03337140 file.n.03 cabinet 7
|
499 |
+
657 cat litter box cat litter box 1 29 7 box box Objects objects 39
|
500 |
+
561 electric panel electric panel 1 40 7 otherprop Objects misc 40
|
501 |
+
93 suitcases suitcase 1 40 7 luggage otherprop Objects n02774630 baggage.n.01 objects 39
|
502 |
+
513 curtain rod curtain rod 1 38 7 curtain rod otherstructure Objects curtain 12
|
503 |
+
411 bunk bed bunk bed 1 39 6 bunk bed otherfurniture Furniture bed bed bed 2818832 n02920259 bunk_bed.n.01 bed 11
|
504 |
+
1122 chandelier chandelier 1 38 7 chandelier otherstructure Objects n03005285 chandelier.n.01 lighting 28
|
505 |
+
922 tape tape 1 40 7 tape otherprop Objects objects 39
|
506 |
+
88 plates plate 1 40 7 otherprop Objects n03959485 plate.n.04 objects 39
|
507 |
+
518 alarm alarm 1 40 7 alarm otherprop Objects clock 3046257 n02694662 alarm_clock.n.01 objects 39
|
508 |
+
814 fire hose fire hose 1 40 7 otherprop Objects n03346004 fire_hose.n.01 misc 40
|
509 |
+
1319 toy dinosaur toy dinosaur 1 40 7 toy otherprop Objects n03964744 plaything.n.01 objects 39
|
510 |
+
1320 cone cone 1 40 7 otherprop Objects objects 39
|
511 |
+
649 glass doors glass door 1 8 12 door door Wall door n03221720 door.n.01 door 4
|
512 |
+
607 hatrack hatrack 1 40 7 otherprop Objects n03059103 coatrack.n.01 shelving 31
|
513 |
+
819 subwoofer subwoofer 1 40 7 speaker otherprop Objects speaker 3691459 n04349401 subwoofer.n.01 objects 39
|
514 |
+
1321 fire sprinkler fire sprinkler 1 40 7 otherprop Objects misc 40
|
515 |
+
1322 trash cabinet trash cabinet 1 3 6 cabinet cabinet Furniture cabinet 2933112 n02933112 cabinet.n.01 cabinet 7
|
516 |
+
1204 pantry walls pantry wall 1 1 12 wall wall Wall n04546855 wall.n.01 wall 1
|
517 |
+
227 photo photo 1 40 7 photo otherprop Objects n03925226 photograph.n.01 picture 6
|
518 |
+
817 barrier barrier 1 40 7 otherprop Objects n02796623 barrier.n.01 misc 40
|
519 |
+
130 stacks of cups cup 1 40 7 otherprop Objects n03147509 cup.n.01 objects 39
|
520 |
+
712 beachball beachball 1 40 7 ball otherprop Objects n02814224 beach_ball.n.01 objects 39
|
521 |
+
1323 folded boxes folded boxes 1 40 7 otherprop Objects objects 39
|
522 |
+
1324 contact lens solution bottle contact lens solution bottle 1 40 7 bottle otherprop Objects bottle bottle 2876657 n02876657 bottle.n.01 objects 39
|
523 |
+
673 covered box covered box 1 29 7 box box Objects objects 39
|
524 |
+
459 folder folder 1 40 7 folder otherprop Objects n03376279 folder.n.02 objects 39
|
525 |
+
643 mail trays mail tray 1 40 7 mail tray otherprop Objects objects 39
|
526 |
+
238 slipper slipper 1 40 7 otherprop Objects n04241394 slipper.n.01 clothes 38
|
527 |
+
765 magazine rack magazine rack 1 39 6 stand otherfurniture Furniture n03704549 magazine_rack.n.01 shelving 31
|
528 |
+
1008 sticker sticker 1 40 7 sticker otherprop Objects n07272545 gummed_label.n.01 objects 39
|
529 |
+
225 lotion lotion 1 40 7 otherprop Objects n03690938 lotion.n.01 objects 39
|
530 |
+
1083 buddha buddha 1 40 7 otherprop Objects objects 39
|
531 |
+
813 file organizer file organizer 1 40 7 otherprop Objects objects 39
|
532 |
+
138 paper towel rolls paper towel roll 1 40 7 paper towel otherprop Objects n03887697 paper_towel.n.01 towel 20
|
533 |
+
1145 night lamp night lamp 1 35 7 lamp lamp Objects lamp lamp 3636649 n03636649 lamp.n.02 lighting 28
|
534 |
+
796 fuse box fuse box 1 40 7 otherprop Objects misc 40
|
535 |
+
1325 knife block knife block 1 40 7 otherprop Objects objects 39
|
536 |
+
363 furnace furnace 1 39 6 furnace otherfurniture Furniture n03404449 furnace.n.01
|
537 |
+
1174 cd cases cd case 1 40 7 otherprop Objects objects 39
|
538 |
+
38 stools stool 1 40 7 stool otherprop Objects stool n04326896 stool.n.01 stool 19
|
539 |
+
1326 hand sanitzer dispenser hand sanitzer dispenser 1 40 7 otherprop Objects n04254120 soap_dispenser.n.01 objects 39
|
540 |
+
997 teapot teapot 1 40 7 tea pot otherprop Objects n04398044 teapot.n.01 objects 39
|
541 |
+
1327 pen holder pen holder 1 40 7 otherprop Objects objects 39
|
542 |
+
1328 tray rack tray rack 1 40 7 otherprop Objects objects 39
|
543 |
+
1329 wig wig 1 40 7 otherprop Objects n04584207 wig.n.01 objects 39
|
544 |
+
182 switch switch 1 40 7 otherprop Objects n04372370 switch.n.01 misc 40
|
545 |
+
280 plastic containers plastic container 1 40 7 container otherprop Objects n03094503 container.n.01 objects 39
|
546 |
+
1330 night light night light 1 40 7 otherprop Objects lighting 28
|
547 |
+
1331 notepad notepad 1 40 7 otherprop Objects objects 39
|
548 |
+
1332 mail bin mail bin 1 40 7 otherprop Objects misc 40
|
549 |
+
1333 elevator button elevator button 1 40 7 otherprop Objects misc 40
|
550 |
+
939 gaming wheel gaming wheel 1 40 7 otherprop Objects objects 39
|
551 |
+
1334 drum set drum set 1 40 7 otherprop Objects objects 39
|
552 |
+
480 cosmetic bag cosmetic bag 1 37 7 bag bag Objects objects 39
|
553 |
+
907 coffee mug coffee mug 1 40 7 vessel otherprop Objects cup or mug 3797390 n03063599 coffee_mug.n.01 objects 39
|
554 |
+
1335 closet shelf closet shelf 1 15 6 shelves shelves Furniture bookshelf bookshelf 2871439 n02871439 bookshelf.n.01 shelving 31
|
555 |
+
1336 baby mobile baby mobile 1 40 7 otherprop Objects objects 39
|
556 |
+
829 diaper bin diaper bin 1 40 7 bin otherprop Objects objects 39
|
557 |
+
947 door wall door wall 1 1 12 wall wall Wall wall 1
|
558 |
+
1116 stepstool stepstool 1 40 7 step stool otherprop Objects objects 39
|
559 |
+
599 paper shredder shredder 1 40 7 otherprop Objects n04210120 shredder.n.01 objects 39
|
560 |
+
733 dress rack dress rack 1 40 7 otherprop Objects n03238762 dress_rack.n.01 misc 40
|
561 |
+
123 cover cover 1 40 7 blanket otherprop Objects objects 39
|
562 |
+
506 shopping bag shopping bag 1 37 7 bag bag Objects n04204081 shopping_bag.n.01 objects 39
|
563 |
+
569 sliding door sliding door 1 8 12 door door Wall door n04239074 sliding_door.n.01 door 4
|
564 |
+
1337 exercise bike exercise bike 1 40 7 machine otherprop Objects n04210120 shredder.n.01 gym_equipment 33
|
565 |
+
1338 recliner chair recliner chair 1 5 4 chair chair Chair chair chair chair 3001627 n03238762 dress_rack.n.01 chair 3
|
566 |
+
1314 kitchenaid mixer kitchen mixer 1 40 7 otherprop Objects appliances 37
|
567 |
+
1339 soda can soda can 1 40 7 can otherprop Objects can 2946921 n02946921 can.n.01 objects 39
|
568 |
+
1340 stovetop stovetop 1 38 7 stove otherstructure Objects stove 4330267 n04330267 stove.n.02 appliances 37
|
569 |
+
851 stepladder stepladder 1 39 6 ladder otherfurniture Furniture stairs n04315599 step_ladder.n.01 stairs 16
|
570 |
+
142 tap tap 1 40 7 faucet otherprop Objects faucet 3325088 n04559451 water_faucet.n.01 objects 39
|
571 |
+
436 cable cable 1 40 7 cables otherprop Objects objects 39
|
572 |
+
1341 baby changing station baby changing station 1 39 6 otherfurniture Furniture furniture 36
|
573 |
+
1342 costume costume 1 21 7 clothes clothes Objects n02728440 apparel.n.01 clothes 38
|
574 |
+
885 rocking chair rocking chair 1 5 4 chair chair Chair chair chair chair 3001627 n04099969 rocking_chair.n.01 chair 3
|
575 |
+
693 binder binder 1 40 7 binder otherprop Objects objects 39
|
576 |
+
815 media center media center 1 3 6 cabinet cabinet Furniture cabinet 2933112 n02933112 cabinet.n.01 cabinet 7
|
577 |
+
401 towel rack towel rack 1 40 7 otherprop Objects n04459773 towel_rack.n.01 misc 40
|
578 |
+
1343 medal medal 1 40 7 otherprop Objects objects 39
|
579 |
+
1184 stack of folded chairs folded chair 1 5 4 chair chair Chair chair chair chair 3001627 n03001627 chair.n.01 chair 3
|
580 |
+
1344 telescope telescope 1 40 7 otherprop Objects n04403638 telescope.n.01 objects 39
|
581 |
+
1345 closet doorframe closet doorframe 1 8 12 door door Wall door door 4
|
582 |
+
160 glass glass 1 38 7 glass otherstructure Objects n03438257 glass.n.02 misc 40
|
583 |
+
1126 baseball cap baseball cap 1 40 7 otherprop Objects cap 2954340 n02799323 baseball_cap.n.01 clothes 38
|
584 |
+
1346 battery disposal jar battery disposal jar 1 40 7 jar otherprop Objects jar 3593526 n03593526 jar.n.01 objects 39
|
585 |
+
332 mop mop 1 40 7 otherprop Objects n04367480 swab.n.02 objects 39
|
586 |
+
397 tank tank 1 40 7 otherprop Objects objects 39
|
587 |
+
643 mail tray mail tray 1 40 7 mail tray otherprop Objects objects 39
|
588 |
+
551 centerpiece centerpiece 1 40 7 centerpiece otherprop Objects n02994419 centerpiece.n.02 objects 39
|
589 |
+
1163 stick stick 1 40 7 stick otherprop Objects objects 39
|
590 |
+
1347 closet floor closet floor 1 2 5 floor floor Floor n03365592 floor.n.01 floor 2
|
591 |
+
1348 dryer sheets dryer sheets 1 40 7 otherprop Objects objects 39
|
592 |
+
803 bycicle bycicle 1 40 7 otherprop Objects misc 40
|
593 |
+
484 flower stand flower stand 1 39 6 stand otherfurniture Furniture furniture 36
|
594 |
+
1349 air mattress air mattress 1 4 1 bed bed Bed bed bed bed 2818832 n02690809 air_mattress.n.01 bed 11
|
595 |
+
1350 clip clip 1 40 7 otherprop Objects objects 39
|
596 |
+
222 side table side table 1 7 10 table table Table table table table 4379243 n04379243 table.n.02 table 5
|
597 |
+
1253 pizza boxes pizza box 1 29 7 box box Objects n02883344 box.n.01 objects 39
|
598 |
+
1351 display display 1 39 7 otherfurniture Furniture n03211117 display.n.06 misc 40
|
599 |
+
1352 postcard postcard 1 40 7 otherprop Objects objects 39
|
600 |
+
828 display sign display sign 1 40 7 sign otherprop Objects misc 40
|
601 |
+
1353 paper towel paper towel 1 40 7 paper towel otherprop Objects n03887697 paper_towel.n.01 towel 20
|
602 |
+
612 boots boot 1 40 7 shoe otherprop Objects n04199027 shoe.n.01 clothes 38
|
603 |
+
1354 tennis racket bag tennis racket bag 1 40 7 otherprop Objects objects 39
|
604 |
+
1355 air hockey table air hockey table 1 7 10 table table Table table table table 4379243 n04379243 table.n.02 table 5
|
605 |
+
1301 socks sock 1 21 7 clothes clothes Objects n04254777 sock.n.01 clothes 38
|
606 |
+
1356 food bag food bag 1 37 7 bag bag Objects objects 39
|
607 |
+
1199 clothes hangers clothes hanger 1 40 7 otherprop Objects n03057920 coat_hanger.n.01 misc 40
|
608 |
+
1357 starbucks cup starbucks cup 1 40 7 cup otherprop Objects cup cup or mug 3797390 n03797390 mug.n.04 objects 39
|
assets/meta/scannetv2_raw_categories.json
ADDED
@@ -0,0 +1,609 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[
|
2 |
+
"wall",
|
3 |
+
"chair",
|
4 |
+
"books",
|
5 |
+
"floor",
|
6 |
+
"door",
|
7 |
+
"object",
|
8 |
+
"window",
|
9 |
+
"table",
|
10 |
+
"trash can",
|
11 |
+
"pillow",
|
12 |
+
"picture",
|
13 |
+
"ceiling",
|
14 |
+
"box",
|
15 |
+
"doorframe",
|
16 |
+
"monitor",
|
17 |
+
"cabinet",
|
18 |
+
"desk",
|
19 |
+
"shelf",
|
20 |
+
"office chair",
|
21 |
+
"towel",
|
22 |
+
"couch",
|
23 |
+
"sink",
|
24 |
+
"backpack",
|
25 |
+
"lamp",
|
26 |
+
"bed",
|
27 |
+
"bookshelf",
|
28 |
+
"mirror",
|
29 |
+
"curtain",
|
30 |
+
"plant",
|
31 |
+
"whiteboard",
|
32 |
+
"radiator",
|
33 |
+
"book",
|
34 |
+
"kitchen cabinet",
|
35 |
+
"toilet paper",
|
36 |
+
"kitchen cabinets",
|
37 |
+
"armchair",
|
38 |
+
"shoes",
|
39 |
+
"coffee table",
|
40 |
+
"toilet",
|
41 |
+
"bag",
|
42 |
+
"clothes",
|
43 |
+
"keyboard",
|
44 |
+
"bottle",
|
45 |
+
"recycling bin",
|
46 |
+
"nightstand",
|
47 |
+
"stool",
|
48 |
+
"tv",
|
49 |
+
"file cabinet",
|
50 |
+
"dresser",
|
51 |
+
"computer tower",
|
52 |
+
"clothing",
|
53 |
+
"telephone",
|
54 |
+
"cup",
|
55 |
+
"refrigerator",
|
56 |
+
"end table",
|
57 |
+
"jacket",
|
58 |
+
"shower curtain",
|
59 |
+
"bathtub",
|
60 |
+
"microwave",
|
61 |
+
"kitchen counter",
|
62 |
+
"sofa chair",
|
63 |
+
"paper towel dispenser",
|
64 |
+
"bathroom vanity",
|
65 |
+
"suitcase",
|
66 |
+
"laptop",
|
67 |
+
"ottoman",
|
68 |
+
"shower walls",
|
69 |
+
"printer",
|
70 |
+
"counter",
|
71 |
+
"board",
|
72 |
+
"soap dispenser",
|
73 |
+
"stove",
|
74 |
+
"light",
|
75 |
+
"closet wall",
|
76 |
+
"mini fridge",
|
77 |
+
"cabinets",
|
78 |
+
"doors",
|
79 |
+
"fan",
|
80 |
+
"tissue box",
|
81 |
+
"blanket",
|
82 |
+
"bathroom stall",
|
83 |
+
"copier",
|
84 |
+
"bench",
|
85 |
+
"bar",
|
86 |
+
"soap dish",
|
87 |
+
"laundry hamper",
|
88 |
+
"storage bin",
|
89 |
+
"bathroom stall door",
|
90 |
+
"light switch",
|
91 |
+
"coffee maker",
|
92 |
+
"tv stand",
|
93 |
+
"decoration",
|
94 |
+
"ceiling light",
|
95 |
+
"range hood",
|
96 |
+
"blackboard",
|
97 |
+
"clock",
|
98 |
+
"wardrobe closet",
|
99 |
+
"rail",
|
100 |
+
"bulletin board",
|
101 |
+
"mat",
|
102 |
+
"trash bin",
|
103 |
+
"ledge",
|
104 |
+
"seat",
|
105 |
+
"mouse",
|
106 |
+
"basket",
|
107 |
+
"shower",
|
108 |
+
"dumbbell",
|
109 |
+
"paper",
|
110 |
+
"person",
|
111 |
+
"windowsill",
|
112 |
+
"closet",
|
113 |
+
"bucket",
|
114 |
+
"sign",
|
115 |
+
"speaker",
|
116 |
+
"dishwasher",
|
117 |
+
"container",
|
118 |
+
"stair rail",
|
119 |
+
"shower curtain rod",
|
120 |
+
"tube",
|
121 |
+
"bathroom cabinet",
|
122 |
+
"papers",
|
123 |
+
"storage container",
|
124 |
+
"paper bag",
|
125 |
+
"paper towel roll",
|
126 |
+
"ball",
|
127 |
+
"closet doors",
|
128 |
+
"laundry basket",
|
129 |
+
"cart",
|
130 |
+
"closet door",
|
131 |
+
"dish rack",
|
132 |
+
"stairs",
|
133 |
+
"blinds",
|
134 |
+
"stack of chairs",
|
135 |
+
"purse",
|
136 |
+
"bicycle",
|
137 |
+
"tray",
|
138 |
+
"plunger",
|
139 |
+
"paper cutter",
|
140 |
+
"toilet paper dispenser",
|
141 |
+
"boxes",
|
142 |
+
"bin",
|
143 |
+
"toilet seat cover dispenser",
|
144 |
+
"guitar",
|
145 |
+
"mailboxes",
|
146 |
+
"handicap bar",
|
147 |
+
"fire extinguisher",
|
148 |
+
"ladder",
|
149 |
+
"column",
|
150 |
+
"pipe",
|
151 |
+
"vacuum cleaner",
|
152 |
+
"plate",
|
153 |
+
"piano",
|
154 |
+
"water cooler",
|
155 |
+
"cd case",
|
156 |
+
"bowl",
|
157 |
+
"closet rod",
|
158 |
+
"bathroom counter",
|
159 |
+
"oven",
|
160 |
+
"stand",
|
161 |
+
"scale",
|
162 |
+
"washing machine",
|
163 |
+
"broom",
|
164 |
+
"hat",
|
165 |
+
"shower wall",
|
166 |
+
"guitar case",
|
167 |
+
"rack",
|
168 |
+
"water pitcher",
|
169 |
+
"laundry detergent",
|
170 |
+
"hair dryer",
|
171 |
+
"pillar",
|
172 |
+
"divider",
|
173 |
+
"power outlet",
|
174 |
+
"dining table",
|
175 |
+
"shower floor",
|
176 |
+
"washing machines",
|
177 |
+
"shower door",
|
178 |
+
"coffee kettle",
|
179 |
+
"wardrobe cabinet",
|
180 |
+
"structure",
|
181 |
+
"bookshelves",
|
182 |
+
"clothes dryer",
|
183 |
+
"toaster",
|
184 |
+
"shoe",
|
185 |
+
"ironing board",
|
186 |
+
"alarm clock",
|
187 |
+
"shower head",
|
188 |
+
"lamp base",
|
189 |
+
"water bottle",
|
190 |
+
"keyboard piano",
|
191 |
+
"projector screen",
|
192 |
+
"case of water bottles",
|
193 |
+
"toaster oven",
|
194 |
+
"music stand",
|
195 |
+
"staircase",
|
196 |
+
"coat rack",
|
197 |
+
"storage organizer",
|
198 |
+
"machine",
|
199 |
+
"folded chair",
|
200 |
+
"fire alarm",
|
201 |
+
"fireplace",
|
202 |
+
"vent",
|
203 |
+
"furniture",
|
204 |
+
"power strip",
|
205 |
+
"calendar",
|
206 |
+
"poster",
|
207 |
+
"toilet paper holder",
|
208 |
+
"potted plant",
|
209 |
+
"stuffed animal",
|
210 |
+
"luggage",
|
211 |
+
"curtains",
|
212 |
+
"headphones",
|
213 |
+
"crate",
|
214 |
+
"candle",
|
215 |
+
"projector",
|
216 |
+
"clothes dryers",
|
217 |
+
"mattress",
|
218 |
+
"dustpan",
|
219 |
+
"drawer",
|
220 |
+
"rod",
|
221 |
+
"globe",
|
222 |
+
"footrest",
|
223 |
+
"piano bench",
|
224 |
+
"breakfast bar",
|
225 |
+
"step stool",
|
226 |
+
"hand rail",
|
227 |
+
"vending machine",
|
228 |
+
"ceiling fan",
|
229 |
+
"swiffer",
|
230 |
+
"foosball table",
|
231 |
+
"jar",
|
232 |
+
"footstool",
|
233 |
+
"folded table",
|
234 |
+
"round table",
|
235 |
+
"hamper",
|
236 |
+
"poster tube",
|
237 |
+
"case",
|
238 |
+
"carpet",
|
239 |
+
"thermostat",
|
240 |
+
"coat",
|
241 |
+
"water fountain",
|
242 |
+
"smoke detector",
|
243 |
+
"pillows",
|
244 |
+
"flip flops",
|
245 |
+
"cloth",
|
246 |
+
"banner",
|
247 |
+
"clothes hanger",
|
248 |
+
"whiteboard eraser",
|
249 |
+
"iron",
|
250 |
+
"instrument case",
|
251 |
+
"toilet paper rolls",
|
252 |
+
"soap",
|
253 |
+
"block",
|
254 |
+
"wall hanging",
|
255 |
+
"kitchen island",
|
256 |
+
"pipes",
|
257 |
+
"toothbrush",
|
258 |
+
"shirt",
|
259 |
+
"cutting board",
|
260 |
+
"vase",
|
261 |
+
"shower control valve",
|
262 |
+
"exercise machine",
|
263 |
+
"compost bin",
|
264 |
+
"shorts",
|
265 |
+
"tire",
|
266 |
+
"teddy bear",
|
267 |
+
"bathrobe",
|
268 |
+
"handrail",
|
269 |
+
"faucet",
|
270 |
+
"pantry wall",
|
271 |
+
"thermos",
|
272 |
+
"rug",
|
273 |
+
"couch cushions",
|
274 |
+
"tripod",
|
275 |
+
"mailbox",
|
276 |
+
"tupperware",
|
277 |
+
"shoe rack",
|
278 |
+
"towels",
|
279 |
+
"beer bottles",
|
280 |
+
"treadmill",
|
281 |
+
"salt",
|
282 |
+
"chest",
|
283 |
+
"dispenser",
|
284 |
+
"mirror doors",
|
285 |
+
"remote",
|
286 |
+
"folded ladder",
|
287 |
+
"cushion",
|
288 |
+
"carton",
|
289 |
+
"step",
|
290 |
+
"drying rack",
|
291 |
+
"slippers",
|
292 |
+
"pool table",
|
293 |
+
"soda stream",
|
294 |
+
"toilet brush",
|
295 |
+
"loft bed",
|
296 |
+
"cooking pot",
|
297 |
+
"heater",
|
298 |
+
"messenger bag",
|
299 |
+
"stapler",
|
300 |
+
"closet walls",
|
301 |
+
"scanner",
|
302 |
+
"elliptical machine",
|
303 |
+
"kettle",
|
304 |
+
"metronome",
|
305 |
+
"dumbell",
|
306 |
+
"music book",
|
307 |
+
"rice cooker",
|
308 |
+
"dart board",
|
309 |
+
"sewing machine",
|
310 |
+
"grab bar",
|
311 |
+
"flowerpot",
|
312 |
+
"painting",
|
313 |
+
"railing",
|
314 |
+
"stair",
|
315 |
+
"toolbox",
|
316 |
+
"nerf gun",
|
317 |
+
"binders",
|
318 |
+
"desk lamp",
|
319 |
+
"quadcopter",
|
320 |
+
"pitcher",
|
321 |
+
"hanging",
|
322 |
+
"mail",
|
323 |
+
"closet ceiling",
|
324 |
+
"hoverboard",
|
325 |
+
"beanbag chair",
|
326 |
+
"water heater",
|
327 |
+
"spray bottle",
|
328 |
+
"rope",
|
329 |
+
"plastic container",
|
330 |
+
"soap bottle",
|
331 |
+
"ikea bag",
|
332 |
+
"sleeping bag",
|
333 |
+
"duffel bag",
|
334 |
+
"frying pan",
|
335 |
+
"oven mitt",
|
336 |
+
"pot",
|
337 |
+
"hand dryer",
|
338 |
+
"dollhouse",
|
339 |
+
"shampoo bottle",
|
340 |
+
"hair brush",
|
341 |
+
"tennis racket",
|
342 |
+
"display case",
|
343 |
+
"ping pong table",
|
344 |
+
"boiler",
|
345 |
+
"bag of coffee beans",
|
346 |
+
"bananas",
|
347 |
+
"carseat",
|
348 |
+
"helmet",
|
349 |
+
"umbrella",
|
350 |
+
"coffee box",
|
351 |
+
"envelope",
|
352 |
+
"wet floor sign",
|
353 |
+
"clothing rack",
|
354 |
+
"controller",
|
355 |
+
"bath walls",
|
356 |
+
"podium",
|
357 |
+
"storage box",
|
358 |
+
"dolly",
|
359 |
+
"shampoo",
|
360 |
+
"paper tray",
|
361 |
+
"cabinet door",
|
362 |
+
"changing station",
|
363 |
+
"poster printer",
|
364 |
+
"screen",
|
365 |
+
"soap bar",
|
366 |
+
"crutches",
|
367 |
+
"studio light",
|
368 |
+
"stack of cups",
|
369 |
+
"toilet flush button",
|
370 |
+
"trunk",
|
371 |
+
"grocery bag",
|
372 |
+
"plastic bin",
|
373 |
+
"pizza box",
|
374 |
+
"cabinet doors",
|
375 |
+
"legs",
|
376 |
+
"car",
|
377 |
+
"shaving cream",
|
378 |
+
"luggage stand",
|
379 |
+
"shredder",
|
380 |
+
"statue",
|
381 |
+
"urinal",
|
382 |
+
"hose",
|
383 |
+
"bike pump",
|
384 |
+
"coatrack",
|
385 |
+
"bear",
|
386 |
+
"wall lamp",
|
387 |
+
"humidifier",
|
388 |
+
"toothpaste",
|
389 |
+
"mouthwash bottle",
|
390 |
+
"poster cutter",
|
391 |
+
"golf bag",
|
392 |
+
"food container",
|
393 |
+
"camera",
|
394 |
+
"table lamp",
|
395 |
+
"yoga mat",
|
396 |
+
"card",
|
397 |
+
"mug",
|
398 |
+
"shower doors",
|
399 |
+
"cardboard",
|
400 |
+
"rack stand",
|
401 |
+
"boxes of paper",
|
402 |
+
"flag",
|
403 |
+
"futon",
|
404 |
+
"magazine",
|
405 |
+
"exit sign",
|
406 |
+
"rolled poster",
|
407 |
+
"wheel",
|
408 |
+
"pictures",
|
409 |
+
"blackboard eraser",
|
410 |
+
"organizer",
|
411 |
+
"doll",
|
412 |
+
"book rack",
|
413 |
+
"laundry bag",
|
414 |
+
"sponge",
|
415 |
+
"seating",
|
416 |
+
"folded chairs",
|
417 |
+
"lotion bottle",
|
418 |
+
"can",
|
419 |
+
"lunch box",
|
420 |
+
"food display",
|
421 |
+
"storage shelf",
|
422 |
+
"sliding wood door",
|
423 |
+
"pants",
|
424 |
+
"wood",
|
425 |
+
"boards",
|
426 |
+
"bottles",
|
427 |
+
"washcloth",
|
428 |
+
"workbench",
|
429 |
+
"open kitchen cabinet",
|
430 |
+
"organizer shelf",
|
431 |
+
"frame",
|
432 |
+
"cups",
|
433 |
+
"exercise ball",
|
434 |
+
"easel",
|
435 |
+
"garbage bag",
|
436 |
+
"roomba",
|
437 |
+
"garage door",
|
438 |
+
"luggage rack",
|
439 |
+
"bike lock",
|
440 |
+
"briefcase",
|
441 |
+
"hand towel",
|
442 |
+
"bath products",
|
443 |
+
"star",
|
444 |
+
"map",
|
445 |
+
"coffee bean bag",
|
446 |
+
"headboard",
|
447 |
+
"ipad",
|
448 |
+
"display rack",
|
449 |
+
"traffic cone",
|
450 |
+
"toiletry",
|
451 |
+
"canopy",
|
452 |
+
"massage chair",
|
453 |
+
"paper organizer",
|
454 |
+
"barricade",
|
455 |
+
"platform",
|
456 |
+
"cap",
|
457 |
+
"dumbbell plates",
|
458 |
+
"elevator",
|
459 |
+
"cooking pan",
|
460 |
+
"trash bag",
|
461 |
+
"santa",
|
462 |
+
"jewelry box",
|
463 |
+
"boat",
|
464 |
+
"sock",
|
465 |
+
"kinect",
|
466 |
+
"crib",
|
467 |
+
"plastic storage bin",
|
468 |
+
"cooler",
|
469 |
+
"kitchen apron",
|
470 |
+
"dishwashing soap bottle",
|
471 |
+
"xbox controller",
|
472 |
+
"banana holder",
|
473 |
+
"ping pong paddle",
|
474 |
+
"airplane",
|
475 |
+
"conditioner bottle",
|
476 |
+
"tea kettle",
|
477 |
+
"bedframe",
|
478 |
+
"wood beam",
|
479 |
+
"toilet paper package",
|
480 |
+
"wall mounted coat rack",
|
481 |
+
"film light",
|
482 |
+
"ceiling lamp",
|
483 |
+
"chain",
|
484 |
+
"sofa",
|
485 |
+
"closet wardrobe",
|
486 |
+
"sweater",
|
487 |
+
"kitchen mixer",
|
488 |
+
"wardrobe",
|
489 |
+
"water softener",
|
490 |
+
"banister",
|
491 |
+
"trolley",
|
492 |
+
"pantry shelf",
|
493 |
+
"sofa bed",
|
494 |
+
"loofa",
|
495 |
+
"shower faucet handle",
|
496 |
+
"toy piano",
|
497 |
+
"fish",
|
498 |
+
"file cabinets",
|
499 |
+
"cat litter box",
|
500 |
+
"electric panel",
|
501 |
+
"suitcases",
|
502 |
+
"curtain rod",
|
503 |
+
"bunk bed",
|
504 |
+
"chandelier",
|
505 |
+
"tape",
|
506 |
+
"plates",
|
507 |
+
"alarm",
|
508 |
+
"fire hose",
|
509 |
+
"toy dinosaur",
|
510 |
+
"cone",
|
511 |
+
"glass doors",
|
512 |
+
"hatrack",
|
513 |
+
"subwoofer",
|
514 |
+
"fire sprinkler",
|
515 |
+
"trash cabinet",
|
516 |
+
"pantry walls",
|
517 |
+
"photo",
|
518 |
+
"barrier",
|
519 |
+
"stacks of cups",
|
520 |
+
"beachball",
|
521 |
+
"folded boxes",
|
522 |
+
"contact lens solution bottle",
|
523 |
+
"covered box",
|
524 |
+
"folder",
|
525 |
+
"mail trays",
|
526 |
+
"slipper",
|
527 |
+
"magazine rack",
|
528 |
+
"sticker",
|
529 |
+
"lotion",
|
530 |
+
"buddha",
|
531 |
+
"file organizer",
|
532 |
+
"paper towel rolls",
|
533 |
+
"night lamp",
|
534 |
+
"fuse box",
|
535 |
+
"knife block",
|
536 |
+
"furnace",
|
537 |
+
"cd cases",
|
538 |
+
"stools",
|
539 |
+
"hand sanitzer dispenser",
|
540 |
+
"teapot",
|
541 |
+
"pen holder",
|
542 |
+
"tray rack",
|
543 |
+
"wig",
|
544 |
+
"switch",
|
545 |
+
"plastic containers",
|
546 |
+
"night light",
|
547 |
+
"notepad",
|
548 |
+
"mail bin",
|
549 |
+
"elevator button",
|
550 |
+
"gaming wheel",
|
551 |
+
"drum set",
|
552 |
+
"cosmetic bag",
|
553 |
+
"coffee mug",
|
554 |
+
"closet shelf",
|
555 |
+
"baby mobile",
|
556 |
+
"diaper bin",
|
557 |
+
"door wall",
|
558 |
+
"stepstool",
|
559 |
+
"paper shredder",
|
560 |
+
"dress rack",
|
561 |
+
"cover",
|
562 |
+
"shopping bag",
|
563 |
+
"sliding door",
|
564 |
+
"exercise bike",
|
565 |
+
"recliner chair",
|
566 |
+
"kitchenaid mixer",
|
567 |
+
"soda can",
|
568 |
+
"stovetop",
|
569 |
+
"stepladder",
|
570 |
+
"tap",
|
571 |
+
"cable",
|
572 |
+
"baby changing station",
|
573 |
+
"costume",
|
574 |
+
"rocking chair",
|
575 |
+
"binder",
|
576 |
+
"media center",
|
577 |
+
"towel rack",
|
578 |
+
"medal",
|
579 |
+
"stack of folded chairs",
|
580 |
+
"telescope",
|
581 |
+
"closet doorframe",
|
582 |
+
"glass",
|
583 |
+
"baseball cap",
|
584 |
+
"battery disposal jar",
|
585 |
+
"mop",
|
586 |
+
"tank",
|
587 |
+
"mail tray",
|
588 |
+
"centerpiece",
|
589 |
+
"stick",
|
590 |
+
"closet floor",
|
591 |
+
"dryer sheets",
|
592 |
+
"bycicle",
|
593 |
+
"flower stand",
|
594 |
+
"air mattress",
|
595 |
+
"clip",
|
596 |
+
"side table",
|
597 |
+
"pizza boxes",
|
598 |
+
"display",
|
599 |
+
"postcard",
|
600 |
+
"display sign",
|
601 |
+
"paper towel",
|
602 |
+
"boots",
|
603 |
+
"tennis racket bag",
|
604 |
+
"air hockey table",
|
605 |
+
"socks",
|
606 |
+
"food bag",
|
607 |
+
"clothes hangers",
|
608 |
+
"starbucks cup"
|
609 |
+
]
|
pq3d/inference.py
ADDED
@@ -0,0 +1,180 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import json
|
2 |
+
import os
|
3 |
+
import torch
|
4 |
+
|
5 |
+
import numpy as np
|
6 |
+
|
7 |
+
|
8 |
+
from pq3d.model import Query3DUnified
|
9 |
+
from pq3d.utils import LabelConverter, convert_pc_to_box, obj_processing_post, pad_sequence
|
10 |
+
from torch.utils.data import default_collate
|
11 |
+
from transformers import AutoTokenizer
|
12 |
+
|
13 |
+
ASSET_DIR = os.path.join(os.getcwd(), 'assets')
|
14 |
+
CKPT_DIR = os.path.join(os.getcwd(), 'checkpoint')
|
15 |
+
int2cat = json.load(open(os.path.join(ASSET_DIR, "meta/scannetv2_raw_categories.json"), 'r', encoding="utf-8"))
|
16 |
+
cat2int = {w: i for i, w in enumerate(int2cat)}
|
17 |
+
label_converter = LabelConverter(os.path.join(ASSET_DIR, "meta/scannetv2-labels.combined.tsv"))
|
18 |
+
|
19 |
+
def load_data(scan_id):
|
20 |
+
one_scan = {}
|
21 |
+
# load scan
|
22 |
+
pcd_data = torch.load(os.path.join(ASSET_DIR, f'inputs/{scan_id}', f'{scan_id}_pcd.pth'))
|
23 |
+
inst_to_label = torch.load(os.path.join(ASSET_DIR, f'inputs/{scan_id}', f'{scan_id}_inst.pth'))
|
24 |
+
points, colors, instance_labels = pcd_data[0], pcd_data[1], pcd_data[-1]
|
25 |
+
colors = colors / 127.5 - 1
|
26 |
+
pcds = np.concatenate([points, colors], 1)
|
27 |
+
one_scan['pcds'] = pcds
|
28 |
+
one_scan['instance_labels'] = instance_labels
|
29 |
+
one_scan['inst_to_label'] = inst_to_label
|
30 |
+
# convert to gt object
|
31 |
+
obj_pcds = []
|
32 |
+
inst_ids = []
|
33 |
+
inst_labels = []
|
34 |
+
bg_indices = np.full((points.shape[0], ), 1, dtype=np.bool_)
|
35 |
+
for inst_id in inst_to_label.keys():
|
36 |
+
if inst_to_label[inst_id] in cat2int.keys():
|
37 |
+
mask = instance_labels == inst_id
|
38 |
+
if np.sum(mask) == 0:
|
39 |
+
continue
|
40 |
+
obj_pcds.append(pcds[mask])
|
41 |
+
inst_ids.append(inst_id)
|
42 |
+
inst_labels.append(cat2int[inst_to_label[inst_id]])
|
43 |
+
if inst_to_label[inst_id] not in ['wall', 'floor', 'ceiling']:
|
44 |
+
bg_indices[mask] = False
|
45 |
+
one_scan['obj_pcds'] = obj_pcds
|
46 |
+
one_scan['inst_labels'] = inst_labels
|
47 |
+
one_scan['inst_ids'] = inst_ids
|
48 |
+
one_scan['bg_pcds'] = pcds[bg_indices]
|
49 |
+
# calculate box for matching
|
50 |
+
obj_center = []
|
51 |
+
obj_box_size = []
|
52 |
+
for obj_pcd in obj_pcds:
|
53 |
+
_c, _b = convert_pc_to_box(obj_pcd)
|
54 |
+
obj_center.append(_c)
|
55 |
+
obj_box_size.append(_b)
|
56 |
+
one_scan['obj_loc'] = obj_center
|
57 |
+
one_scan['obj_box'] = obj_box_size
|
58 |
+
# load image feat
|
59 |
+
feat_pth = os.path.join(ASSET_DIR, f'inputs/{scan_id}', f'{scan_id}_img_gt.pth')
|
60 |
+
feat_dict = torch.load(feat_pth)
|
61 |
+
feat_dim = next(iter(feat_dict.values())).shape[0]
|
62 |
+
n_obj = len(one_scan['inst_ids']) # the last one is for missing objects.
|
63 |
+
feat = torch.zeros((n_obj, feat_dim), dtype=torch.float32)
|
64 |
+
for i, cid in enumerate(one_scan['inst_ids']):
|
65 |
+
if cid in feat_dict.keys():
|
66 |
+
feat[i] = feat_dict[cid]
|
67 |
+
one_scan['image_obj_feat_gt'] = feat
|
68 |
+
# load voxel feat
|
69 |
+
feat_pth = os.path.join(ASSET_DIR, f'inputs/{scan_id}', f'{scan_id}_voxel_gt.pth')
|
70 |
+
feat_dict = torch.load(feat_pth)
|
71 |
+
feat_dim = next(iter(feat_dict.values())).shape[0]
|
72 |
+
n_obj = len(one_scan['inst_ids']) # the last one is for missing objects.
|
73 |
+
feat = torch.zeros((n_obj, feat_dim), dtype=torch.float32)
|
74 |
+
for i, cid in enumerate(one_scan['inst_ids']):
|
75 |
+
if cid in feat_dict.keys():
|
76 |
+
feat[i] = feat_dict[cid]
|
77 |
+
one_scan['voxel_obj_feat_gt'] = feat
|
78 |
+
# load point feat
|
79 |
+
feat_pth = os.path.join(ASSET_DIR, f'inputs/{scan_id}', f'{scan_id}_point_gt.pth')
|
80 |
+
feat_dict = torch.load(feat_pth)
|
81 |
+
feat_dim = next(iter(feat_dict.values())).shape[0]
|
82 |
+
n_obj = len(one_scan['inst_ids']) # the last one is for missing objects.
|
83 |
+
feat = torch.zeros((n_obj, feat_dim), dtype=torch.float32)
|
84 |
+
for i, cid in enumerate(one_scan['inst_ids']):
|
85 |
+
if cid in feat_dict.keys():
|
86 |
+
feat[i] = feat_dict[cid]
|
87 |
+
one_scan['pc_obj_feat_gt'] = feat
|
88 |
+
# convert to pq3d input
|
89 |
+
obj_labels = one_scan['inst_labels'] # N
|
90 |
+
obj_pcds = one_scan['obj_pcds']
|
91 |
+
obj_ids = one_scan['inst_ids']
|
92 |
+
# object filter
|
93 |
+
excluded_labels = ['wall', 'floor', 'ceiling']
|
94 |
+
def keep_obj(i, obj_label):
|
95 |
+
category = int2cat[obj_label]
|
96 |
+
# filter out background
|
97 |
+
if category in excluded_labels:
|
98 |
+
return False
|
99 |
+
# filter out objects not mentioned in the sentence
|
100 |
+
return True
|
101 |
+
selected_obj_idxs = [i for i, obj_label in enumerate(obj_labels) if keep_obj(i, obj_label)]
|
102 |
+
obj_labels = [obj_labels[i] for i in selected_obj_idxs]
|
103 |
+
obj_pcds = [obj_pcds[i] for i in selected_obj_idxs]
|
104 |
+
# subsample points
|
105 |
+
obj_pcds = np.array([obj_pcd[np.random.choice(len(obj_pcd), size=1024,
|
106 |
+
replace=len(obj_pcd) < 1024)] for obj_pcd in obj_pcds])
|
107 |
+
obj_fts, obj_locs, obj_boxes, rot_matrix = obj_processing_post(obj_pcds, rot_aug=False)
|
108 |
+
data_dict = {
|
109 |
+
"scan_id": scan_id,
|
110 |
+
"obj_fts": obj_fts.float(),
|
111 |
+
"obj_locs": obj_locs.float(),
|
112 |
+
"obj_labels": torch.LongTensor(obj_labels),
|
113 |
+
"obj_boxes": obj_boxes,
|
114 |
+
"obj_pad_masks": torch.ones((len(obj_locs)), dtype=torch.bool), # used for padding in collate
|
115 |
+
"obj_ids": [obj_ids[i] for i in selected_obj_idxs]
|
116 |
+
}
|
117 |
+
# convert image feature
|
118 |
+
feats = one_scan['image_obj_feat_' + 'gt']
|
119 |
+
valid = selected_obj_idxs
|
120 |
+
data_dict['mv_seg_fts'] = feats[valid]
|
121 |
+
data_dict['mv_seg_pad_masks'] = torch.ones(len(data_dict['mv_seg_fts']), dtype=torch.bool)
|
122 |
+
# convert voxel feature
|
123 |
+
feats = one_scan['voxel_obj_feat_' + 'gt']
|
124 |
+
valid = selected_obj_idxs
|
125 |
+
data_dict['voxel_seg_fts'] = feats[valid]
|
126 |
+
data_dict['voxel_seg_pad_masks'] = torch.ones(len(data_dict['voxel_seg_fts']), dtype=torch.bool)
|
127 |
+
# convert point feature
|
128 |
+
feats = one_scan['pc_obj_feat_' + 'gt']
|
129 |
+
valid = selected_obj_idxs
|
130 |
+
data_dict['pc_seg_fts'] = feats[valid]
|
131 |
+
data_dict['pc_seg_pad_masks'] = torch.ones(len(data_dict['pc_seg_fts']), dtype=torch.bool)
|
132 |
+
# build other
|
133 |
+
data_dict['query_locs'] = data_dict['obj_locs'].clone()
|
134 |
+
data_dict['query_pad_masks'] = data_dict['obj_pad_masks'].clone()
|
135 |
+
data_dict['seg_center'] = obj_locs.float()
|
136 |
+
data_dict['seg_pad_masks'] = data_dict['obj_pad_masks']
|
137 |
+
return data_dict
|
138 |
+
|
139 |
+
def form_batch(data_dict):
|
140 |
+
batch = [data_dict]
|
141 |
+
new_batch = {}
|
142 |
+
# merge list keys
|
143 |
+
list_keys = [k for k, v in batch[0].items() if isinstance(v, list)]
|
144 |
+
for k in list_keys:
|
145 |
+
new_batch[k] = [sample.pop(k) for sample in batch]
|
146 |
+
# merge tensor
|
147 |
+
padding_keys = [k for k, v in batch[0].items() if isinstance(v, torch.Tensor) and v.ndim > 0]
|
148 |
+
for k in padding_keys:
|
149 |
+
tensors = [sample.pop(k) for sample in batch]
|
150 |
+
padding_value = -100 if k == 'obj_labels' else 0
|
151 |
+
padded_tensor = pad_sequence(tensors, pad=padding_value)
|
152 |
+
new_batch[k] = padded_tensor
|
153 |
+
# others
|
154 |
+
new_batch.update(default_collate(batch))
|
155 |
+
return new_batch
|
156 |
+
|
157 |
+
def tokenize_txt(text):
|
158 |
+
tokenizer_name = 'openai/clip-vit-large-patch14'
|
159 |
+
tokenizer = AutoTokenizer.from_pretrained(tokenizer_name)
|
160 |
+
encoded_input = tokenizer([text], add_special_tokens=True, truncation=True)
|
161 |
+
data_dict = {}
|
162 |
+
data_dict['prompt'] = torch.FloatTensor(encoded_input.input_ids[0])
|
163 |
+
data_dict['prompt_pad_masks'] = torch.ones((len(data_dict['prompt']))).bool()
|
164 |
+
data_dict['prompt_type'] = 1 # txt
|
165 |
+
return data_dict
|
166 |
+
|
167 |
+
def inference(scan_id, text):
|
168 |
+
data_dict = load_data(scan_id)
|
169 |
+
data_dict.update(tokenize_txt(text))
|
170 |
+
data_dict = form_batch(data_dict)
|
171 |
+
model = Query3DUnified()
|
172 |
+
load_msg = model.load_state_dict(torch.load(os.path.join(CKPT_DIR, 'pytorch_model.bin')), strict=False)
|
173 |
+
data_dict = model(data_dict)
|
174 |
+
result_id = data_dict['obj_ids'][0][torch.argmax(data_dict['og3d_logits'][0]).item()]
|
175 |
+
print(f"finish infernece result id is {result_id}")
|
176 |
+
return result_id
|
177 |
+
|
178 |
+
if __name__ == '__main__':
|
179 |
+
inference("scene0050_00", "chair")
|
180 |
+
|
pq3d/model.py
ADDED
@@ -0,0 +1,909 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from enum import IntEnum
|
2 |
+
from functools import partial
|
3 |
+
import einops
|
4 |
+
import numpy as np
|
5 |
+
import torch
|
6 |
+
|
7 |
+
from contextlib import nullcontext
|
8 |
+
import torch
|
9 |
+
import torch.nn as nn
|
10 |
+
from transformers import CLIPTextModelWithProjection
|
11 |
+
import copy
|
12 |
+
from transformers import T5ForConditionalGeneration
|
13 |
+
from transformers.modeling_outputs import BaseModelOutput
|
14 |
+
import torch.nn.functional as F
|
15 |
+
|
16 |
+
def get_mlp_head(input_size, hidden_size, output_size, dropout=0):
|
17 |
+
return nn.Sequential(*[
|
18 |
+
nn.Linear(input_size, hidden_size),
|
19 |
+
nn.ReLU(),
|
20 |
+
nn.LayerNorm(hidden_size, eps=1e-12),
|
21 |
+
nn.Dropout(dropout),
|
22 |
+
nn.Linear(hidden_size, output_size)
|
23 |
+
])
|
24 |
+
|
25 |
+
def layer_repeat(module, N, share_layer=False):
|
26 |
+
if share_layer:
|
27 |
+
return nn.ModuleList([module] * N)
|
28 |
+
else:
|
29 |
+
return nn.ModuleList([copy.deepcopy(module) for _ in range(N - 1)] + [module])
|
30 |
+
|
31 |
+
class CLIPLanguageEncoder(nn.Module):
|
32 |
+
def __init__(self, weights="openai/clip-vit-large-patch14", output_dim=768, freeze_backbone=True, use_projection=False, projection_type='mlp', num_projection_layers=1, dropout=0.1):
|
33 |
+
super().__init__()
|
34 |
+
self.context = torch.no_grad if freeze_backbone else nullcontext
|
35 |
+
self.model = CLIPTextModelWithProjection.from_pretrained(weights)
|
36 |
+
self.use_projection = use_projection
|
37 |
+
self.projection_type = projection_type
|
38 |
+
if use_projection:
|
39 |
+
if projection_type == 'mlp':
|
40 |
+
self.projection = get_mlp_head(self.model.config.hidden_size, output_dim, output_dim, dropout=dropout)
|
41 |
+
else:
|
42 |
+
raise NotImplementedError
|
43 |
+
#self.attention = nn.MultiheadAttention(embed_dim=768, num_heads=12, batch_first=True)
|
44 |
+
|
45 |
+
def forward(self, txt_ids, txt_masks):
|
46 |
+
with self.context():
|
47 |
+
txt = self.model(txt_ids, txt_masks).last_hidden_state
|
48 |
+
txt = self.model.text_projection(txt)
|
49 |
+
txt = torch.nn.functional.normalize(txt, p=2, dim=2)
|
50 |
+
#txt = self.attention(txt, txt, txt, key_padding_mask=txt_masks.logical_not())[0]
|
51 |
+
if self.use_projection:
|
52 |
+
if self.projection_type == 'mlp':
|
53 |
+
txt = self.projection(txt)
|
54 |
+
elif self.projection_type == 'attention':
|
55 |
+
for attention_layer in self.projection:
|
56 |
+
txt = attention_layer(txt, tgt_key_padding_mask = txt_masks.logical_not())
|
57 |
+
else:
|
58 |
+
raise NotImplementedError
|
59 |
+
return txt
|
60 |
+
|
61 |
+
def _init_weights_bert(module, std=0.02):
|
62 |
+
"""
|
63 |
+
Huggingface transformer weight initialization,
|
64 |
+
most commonly for bert initialization
|
65 |
+
"""
|
66 |
+
if isinstance(module, nn.Linear):
|
67 |
+
# Slightly different from the TF version which uses truncated_normal for initialization
|
68 |
+
# cf https://github.com/pytorch/pytorch/pull/5617
|
69 |
+
module.weight.data.normal_(mean=0.0, std=std)
|
70 |
+
if module.bias is not None:
|
71 |
+
module.bias.data.zero_()
|
72 |
+
elif isinstance(module, nn.Embedding):
|
73 |
+
module.weight.data.normal_(mean=0.0, std=std)
|
74 |
+
if module.padding_idx is not None:
|
75 |
+
module.weight.data[module.padding_idx].zero_()
|
76 |
+
elif isinstance(module, nn.LayerNorm):
|
77 |
+
module.bias.data.zero_()
|
78 |
+
module.weight.data.fill_(1.0)
|
79 |
+
|
80 |
+
|
81 |
+
def break_up_pc(pc):
|
82 |
+
"""
|
83 |
+
Split the pointcloud into xyz positions and features tensors.
|
84 |
+
This method is taken from VoteNet codebase (https://github.com/facebookresearch/votenet)
|
85 |
+
|
86 |
+
@param pc: pointcloud [N, 3 + C]
|
87 |
+
:return: the xyz tensor and the feature tensor
|
88 |
+
"""
|
89 |
+
xyz = pc[..., 0:3].contiguous()
|
90 |
+
features = (
|
91 |
+
pc[..., 3:].transpose(1, 2).contiguous()
|
92 |
+
if pc.size(-1) > 3 else None
|
93 |
+
)
|
94 |
+
return xyz, features
|
95 |
+
|
96 |
+
class ObjectEncoder(nn.Module):
|
97 |
+
def __init__(self, backbone='none', input_feat_size=768, hidden_size=768, freeze_backbone=False, use_projection=False,
|
98 |
+
tgt_cls_num=607, pretrained=None, dropout=0.1, use_cls_head=True):
|
99 |
+
super().__init__()
|
100 |
+
self.freeze_backbone = freeze_backbone
|
101 |
+
self.context = torch.no_grad if freeze_backbone else nullcontext
|
102 |
+
# if backbone == 'pointnet++':
|
103 |
+
# self.backbone = PointNetPP(
|
104 |
+
# sa_n_points=[32, 16, None],
|
105 |
+
# sa_n_samples=[32, 32, None],
|
106 |
+
# sa_radii=[0.2, 0.4, None],
|
107 |
+
# sa_mlps=[[3, 64, 64, 128], [128, 128, 128, 256], [256, 256, 512, 768]],
|
108 |
+
# )
|
109 |
+
if use_cls_head:
|
110 |
+
self.cls_head = get_mlp_head(input_feat_size, input_feat_size // 2, tgt_cls_num, dropout=0.3)
|
111 |
+
|
112 |
+
self.use_projection = use_projection
|
113 |
+
if use_projection:
|
114 |
+
self.input_feat_proj = nn.Sequential(nn.Linear(input_feat_size, hidden_size), nn.LayerNorm(hidden_size))
|
115 |
+
else:
|
116 |
+
assert input_feat_size == hidden_size, "input_feat_size should be equal to hidden_size!"
|
117 |
+
if dropout > 0:
|
118 |
+
self.dropout = nn.Dropout(dropout)
|
119 |
+
|
120 |
+
# load weights
|
121 |
+
self.apply(_init_weights_bert)
|
122 |
+
if pretrained:
|
123 |
+
print("load pretrained weights from {}".format(pretrained))
|
124 |
+
pre_state_dict = torch.load(pretrained)
|
125 |
+
state_dict = {}
|
126 |
+
for k, v in pre_state_dict.items():
|
127 |
+
if k[0] in ['0', '2', '4']: # key mapping for voxel
|
128 |
+
k = 'cls_head.' + k
|
129 |
+
k = k.replace('vision_encoder.vis_cls_head.', 'cls_head.') # key mapping for mv
|
130 |
+
k = k.replace('point_cls_head.', 'cls_head.') # key mapping for pc
|
131 |
+
k = k.replace('point_feature_extractor.', 'backbone.')
|
132 |
+
state_dict[k] = v
|
133 |
+
warning = self.load_state_dict(state_dict, strict=False)
|
134 |
+
print(warning)
|
135 |
+
|
136 |
+
def freeze_bn(self, m):
|
137 |
+
for layer in m.modules():
|
138 |
+
if isinstance(layer, nn.BatchNorm2d):
|
139 |
+
layer.eval()
|
140 |
+
|
141 |
+
def forward(self, obj_feats, **kwargs):
|
142 |
+
if self.freeze_backbone and hasattr(self, 'backbone'):
|
143 |
+
self.freeze_bn(self.backbone)
|
144 |
+
|
145 |
+
batch_size, num_objs = obj_feats.shape[:2]
|
146 |
+
with self.context():
|
147 |
+
if hasattr(self, 'backbone'):
|
148 |
+
obj_feats = self.backbone(einops.rearrange(obj_feats, 'b o p d -> (b o) p d'))
|
149 |
+
obj_feats = einops.rearrange(obj_feats, '(b o) d -> b o d', b=batch_size)
|
150 |
+
|
151 |
+
obj_embeds = self.input_feat_proj(obj_feats) if self.use_projection else obj_feats
|
152 |
+
if hasattr(self, 'dropout'):
|
153 |
+
obj_embeds = self.dropout(obj_embeds)
|
154 |
+
|
155 |
+
if hasattr(self, 'cls_head'):
|
156 |
+
obj_cls_logits = self.cls_head(obj_feats)
|
157 |
+
return obj_embeds, obj_cls_logits
|
158 |
+
else:
|
159 |
+
return obj_embeds
|
160 |
+
|
161 |
+
class SelfAttentionLayer(nn.Module):
|
162 |
+
def __init__(
|
163 |
+
self,
|
164 |
+
d_model,
|
165 |
+
nhead,
|
166 |
+
dropout=0.0,
|
167 |
+
activation="relu",
|
168 |
+
normalize_before=False,
|
169 |
+
batch_first=False,
|
170 |
+
):
|
171 |
+
super().__init__()
|
172 |
+
self.self_attn = nn.MultiheadAttention(d_model, nhead, dropout=dropout, batch_first=batch_first)
|
173 |
+
|
174 |
+
self.norm = nn.LayerNorm(d_model)
|
175 |
+
self.dropout = nn.Dropout(dropout)
|
176 |
+
|
177 |
+
self.activation = get_activation_fn(activation)
|
178 |
+
self.normalize_before = normalize_before
|
179 |
+
|
180 |
+
self._reset_parameters()
|
181 |
+
|
182 |
+
def _reset_parameters(self):
|
183 |
+
for p in self.parameters():
|
184 |
+
if p.dim() > 1:
|
185 |
+
nn.init.xavier_uniform_(p)
|
186 |
+
|
187 |
+
def with_pos_embed(self, tensor, pos):
|
188 |
+
return tensor if pos is None else tensor + pos
|
189 |
+
|
190 |
+
def forward_post(
|
191 |
+
self, tgt, attn_mask=None, tgt_key_padding_mask=None, query_pos=None
|
192 |
+
):
|
193 |
+
q = k = self.with_pos_embed(tgt, query_pos)
|
194 |
+
tgt2 = self.self_attn(
|
195 |
+
q,
|
196 |
+
k,
|
197 |
+
value=tgt,
|
198 |
+
attn_mask=attn_mask,
|
199 |
+
key_padding_mask=tgt_key_padding_mask,
|
200 |
+
)[0]
|
201 |
+
tgt = tgt + self.dropout(tgt2)
|
202 |
+
tgt = self.norm(tgt)
|
203 |
+
|
204 |
+
return tgt
|
205 |
+
|
206 |
+
def forward_pre(
|
207 |
+
self, tgt, attn_mask=None, tgt_key_padding_mask=None, query_pos=None
|
208 |
+
):
|
209 |
+
tgt2 = self.norm(tgt)
|
210 |
+
q = k = self.with_pos_embed(tgt2, query_pos)
|
211 |
+
tgt2 = self.self_attn(
|
212 |
+
q,
|
213 |
+
k,
|
214 |
+
value=tgt2,
|
215 |
+
attn_mask=attn_mask,
|
216 |
+
key_padding_mask=tgt_key_padding_mask,
|
217 |
+
)[0]
|
218 |
+
tgt = tgt + self.dropout(tgt2)
|
219 |
+
|
220 |
+
return tgt
|
221 |
+
|
222 |
+
def forward(
|
223 |
+
self, tgt, attn_mask=None, tgt_key_padding_mask=None, query_pos=None
|
224 |
+
):
|
225 |
+
if self.normalize_before:
|
226 |
+
return self.forward_pre(
|
227 |
+
tgt, attn_mask, tgt_key_padding_mask, query_pos
|
228 |
+
)
|
229 |
+
return self.forward_post(
|
230 |
+
tgt, attn_mask, tgt_key_padding_mask, query_pos
|
231 |
+
)
|
232 |
+
|
233 |
+
|
234 |
+
class CrossAttentionLayer(nn.Module):
|
235 |
+
def __init__(
|
236 |
+
self,
|
237 |
+
d_model,
|
238 |
+
nhead,
|
239 |
+
dropout=0.0,
|
240 |
+
activation="relu",
|
241 |
+
normalize_before=False,
|
242 |
+
batch_first=False,
|
243 |
+
):
|
244 |
+
super().__init__()
|
245 |
+
self.multihead_attn = nn.MultiheadAttention(
|
246 |
+
d_model, nhead, dropout=dropout, batch_first=batch_first, add_zero_attn=True
|
247 |
+
)
|
248 |
+
|
249 |
+
self.norm = nn.LayerNorm(d_model)
|
250 |
+
self.dropout = nn.Dropout(dropout)
|
251 |
+
|
252 |
+
self.activation = get_activation_fn(activation)
|
253 |
+
self.normalize_before = normalize_before
|
254 |
+
|
255 |
+
self._reset_parameters()
|
256 |
+
|
257 |
+
def _reset_parameters(self):
|
258 |
+
for p in self.parameters():
|
259 |
+
if p.dim() > 1:
|
260 |
+
nn.init.xavier_uniform_(p)
|
261 |
+
|
262 |
+
def with_pos_embed(self, tensor, pos):
|
263 |
+
return tensor if pos is None else tensor + pos
|
264 |
+
|
265 |
+
def forward_post(
|
266 |
+
self,
|
267 |
+
tgt,
|
268 |
+
memory,
|
269 |
+
attn_mask=None,
|
270 |
+
memory_key_padding_mask=None,
|
271 |
+
pos=None,
|
272 |
+
query_pos=None,
|
273 |
+
):
|
274 |
+
tgt2 = self.multihead_attn(
|
275 |
+
query=self.with_pos_embed(tgt, query_pos),
|
276 |
+
key=self.with_pos_embed(memory, pos),
|
277 |
+
value=memory,
|
278 |
+
attn_mask=attn_mask,
|
279 |
+
key_padding_mask=memory_key_padding_mask,
|
280 |
+
)[0]
|
281 |
+
tgt = tgt + self.dropout(tgt2)
|
282 |
+
tgt = self.norm(tgt)
|
283 |
+
|
284 |
+
return tgt
|
285 |
+
|
286 |
+
def forward_pre(
|
287 |
+
self,
|
288 |
+
tgt,
|
289 |
+
memory,
|
290 |
+
attn_mask=None,
|
291 |
+
memory_key_padding_mask=None,
|
292 |
+
pos=None,
|
293 |
+
query_pos=None,
|
294 |
+
):
|
295 |
+
tgt2 = self.norm(tgt)
|
296 |
+
|
297 |
+
tgt2 = self.multihead_attn(
|
298 |
+
query=self.with_pos_embed(tgt2, query_pos),
|
299 |
+
key=self.with_pos_embed(memory, pos),
|
300 |
+
value=memory,
|
301 |
+
attn_mask=attn_mask,
|
302 |
+
key_padding_mask=memory_key_padding_mask,
|
303 |
+
)[0]
|
304 |
+
tgt = tgt + self.dropout(tgt2)
|
305 |
+
|
306 |
+
return tgt
|
307 |
+
|
308 |
+
def forward(
|
309 |
+
self,
|
310 |
+
tgt,
|
311 |
+
memory,
|
312 |
+
attn_mask=None,
|
313 |
+
memory_key_padding_mask=None,
|
314 |
+
pos=None,
|
315 |
+
query_pos=None,
|
316 |
+
):
|
317 |
+
if self.normalize_before:
|
318 |
+
return self.forward_pre(
|
319 |
+
tgt,
|
320 |
+
memory,
|
321 |
+
attn_mask,
|
322 |
+
memory_key_padding_mask,
|
323 |
+
pos,
|
324 |
+
query_pos,
|
325 |
+
)
|
326 |
+
return self.forward_post(
|
327 |
+
tgt, memory, attn_mask, memory_key_padding_mask, pos, query_pos
|
328 |
+
)
|
329 |
+
|
330 |
+
|
331 |
+
class FFNLayer(nn.Module):
|
332 |
+
def __init__(
|
333 |
+
self,
|
334 |
+
d_model,
|
335 |
+
dim_feedforward=2048,
|
336 |
+
dropout=0.0,
|
337 |
+
activation="relu",
|
338 |
+
normalize_before=False,
|
339 |
+
):
|
340 |
+
super().__init__()
|
341 |
+
# Implementation of Feedforward model
|
342 |
+
self.linear1 = nn.Linear(d_model, dim_feedforward)
|
343 |
+
self.dropout = nn.Dropout(dropout)
|
344 |
+
self.linear2 = nn.Linear(dim_feedforward, d_model)
|
345 |
+
|
346 |
+
self.norm = nn.LayerNorm(d_model)
|
347 |
+
|
348 |
+
self.activation = get_activation_fn(activation)
|
349 |
+
self.normalize_before = normalize_before
|
350 |
+
|
351 |
+
self._reset_parameters()
|
352 |
+
|
353 |
+
def _reset_parameters(self):
|
354 |
+
for p in self.parameters():
|
355 |
+
if p.dim() > 1:
|
356 |
+
nn.init.xavier_uniform_(p)
|
357 |
+
|
358 |
+
def with_pos_embed(self, tensor, pos):
|
359 |
+
return tensor if pos is None else tensor + pos
|
360 |
+
|
361 |
+
def forward_post(self, tgt):
|
362 |
+
tgt2 = self.linear2(self.dropout(self.activation(self.linear1(tgt))))
|
363 |
+
tgt = tgt + self.dropout(tgt2)
|
364 |
+
tgt = self.norm(tgt)
|
365 |
+
return tgt
|
366 |
+
|
367 |
+
def forward_pre(self, tgt):
|
368 |
+
tgt2 = self.norm(tgt)
|
369 |
+
tgt2 = self.linear2(self.dropout(self.activation(self.linear1(tgt2))))
|
370 |
+
tgt = tgt + self.dropout(tgt2)
|
371 |
+
return tgt
|
372 |
+
|
373 |
+
def forward(self, tgt):
|
374 |
+
if self.normalize_before:
|
375 |
+
return self.forward_pre(tgt)
|
376 |
+
return self.forward_post(tgt)
|
377 |
+
|
378 |
+
def get_activation_fn(activation_type):
|
379 |
+
if activation_type not in ["relu", "gelu", "glu"]:
|
380 |
+
raise RuntimeError(f"activation function currently support relu/gelu, not {activation_type}")
|
381 |
+
return getattr(F, activation_type)
|
382 |
+
|
383 |
+
class MultiHeadAttentionSpatial(nn.Module):
|
384 |
+
def __init__(
|
385 |
+
self, d_model, n_head, dropout=0.1, spatial_multihead=True, spatial_dim=5,
|
386 |
+
spatial_attn_fusion='mul',
|
387 |
+
):
|
388 |
+
super().__init__()
|
389 |
+
assert d_model % n_head == 0, 'd_model: %d, n_head: %d' % (d_model, n_head)
|
390 |
+
|
391 |
+
self.n_head = n_head
|
392 |
+
self.d_model = d_model
|
393 |
+
self.d_per_head = d_model // n_head
|
394 |
+
self.spatial_multihead = spatial_multihead
|
395 |
+
self.spatial_dim = spatial_dim
|
396 |
+
self.spatial_attn_fusion = spatial_attn_fusion
|
397 |
+
|
398 |
+
self.w_qs = nn.Linear(d_model, d_model)
|
399 |
+
self.w_ks = nn.Linear(d_model, d_model)
|
400 |
+
self.w_vs = nn.Linear(d_model, d_model)
|
401 |
+
|
402 |
+
self.fc = nn.Linear(d_model, d_model)
|
403 |
+
|
404 |
+
self.spatial_n_head = n_head if spatial_multihead else 1
|
405 |
+
if self.spatial_attn_fusion in ['mul', 'bias', 'add']:
|
406 |
+
self.pairwise_loc_fc = nn.Linear(spatial_dim, self.spatial_n_head)
|
407 |
+
elif self.spatial_attn_fusion == 'ctx':
|
408 |
+
self.pairwise_loc_fc = nn.Linear(spatial_dim, d_model)
|
409 |
+
elif self.spatial_attn_fusion == 'cond':
|
410 |
+
self.lang_cond_fc = nn.Linear(d_model, self.spatial_n_head * (spatial_dim + 1))
|
411 |
+
else:
|
412 |
+
raise NotImplementedError('unsupported spatial_attn_fusion %s' % (self.spatial_attn_fusion))
|
413 |
+
|
414 |
+
def forward(self, q, k, v, pairwise_locs, key_padding_mask=None, txt_embeds=None):
|
415 |
+
residual = q
|
416 |
+
q = einops.rearrange(self.w_qs(q), 'b l (head k) -> head b l k', head=self.n_head)
|
417 |
+
k = einops.rearrange(self.w_ks(k), 'b t (head k) -> head b t k', head=self.n_head)
|
418 |
+
v = einops.rearrange(self.w_vs(v), 'b t (head v) -> head b t v', head=self.n_head)
|
419 |
+
attn = torch.einsum('hblk,hbtk->hblt', q, k) / np.sqrt(q.shape[-1])
|
420 |
+
|
421 |
+
if self.spatial_attn_fusion in ['mul', 'bias', 'add']:
|
422 |
+
loc_attn = self.pairwise_loc_fc(pairwise_locs)
|
423 |
+
loc_attn = einops.rearrange(loc_attn, 'b l t h -> h b l t')
|
424 |
+
if self.spatial_attn_fusion == 'mul':
|
425 |
+
loc_attn = F.relu(loc_attn)
|
426 |
+
if not self.spatial_multihead:
|
427 |
+
loc_attn = einops.repeat(loc_attn, 'h b l t -> (h nh) b l t', nh=self.n_head)
|
428 |
+
elif self.spatial_attn_fusion == 'ctx':
|
429 |
+
loc_attn = self.pairwise_loc_fc(pairwise_locs)
|
430 |
+
loc_attn = einops.rearrange(loc_attn, 'b l t (h k) -> h b l t k', h=self.n_head)
|
431 |
+
loc_attn = torch.einsum('hblk,hbltk->hblt', q, loc_attn) / np.sqrt(q.shape[-1])
|
432 |
+
elif self.spatial_attn_fusion == 'cond':
|
433 |
+
spatial_weights = self.lang_cond_fc(residual)
|
434 |
+
spatial_weights = einops.rearrange(spatial_weights, 'b l (h d) -> h b l d', h=self.spatial_n_head,
|
435 |
+
d=self.spatial_dim + 1)
|
436 |
+
if self.spatial_n_head == 1:
|
437 |
+
spatial_weights = einops.repeat(spatial_weights, '1 b l d -> h b l d', h=self.n_head)
|
438 |
+
spatial_bias = spatial_weights[..., :1]
|
439 |
+
spatial_weights = spatial_weights[..., 1:]
|
440 |
+
loc_attn = torch.einsum('hbld,bltd->hblt', spatial_weights, pairwise_locs) + spatial_bias
|
441 |
+
loc_attn = torch.sigmoid(loc_attn)
|
442 |
+
|
443 |
+
if key_padding_mask is not None:
|
444 |
+
mask = einops.repeat(key_padding_mask, 'b t -> h b l t', h=self.n_head, l=q.size(2))
|
445 |
+
attn = attn.masked_fill(mask, -np.inf)
|
446 |
+
if self.spatial_attn_fusion in ['mul', 'cond']:
|
447 |
+
loc_attn = loc_attn.masked_fill(mask, 0)
|
448 |
+
else:
|
449 |
+
loc_attn = loc_attn.masked_fill(mask, -np.inf)
|
450 |
+
|
451 |
+
if self.spatial_attn_fusion == 'add':
|
452 |
+
fused_attn = (torch.softmax(attn, 3) + torch.softmax(loc_attn, 3)) / 2
|
453 |
+
else:
|
454 |
+
if self.spatial_attn_fusion in ['mul', 'cond']:
|
455 |
+
fused_attn = torch.log(torch.clamp(loc_attn, min=1e-6)) + attn
|
456 |
+
else:
|
457 |
+
fused_attn = loc_attn + attn
|
458 |
+
fused_attn = torch.softmax(fused_attn, 3)
|
459 |
+
|
460 |
+
assert torch.sum(torch.isnan(fused_attn) == 0), print(fused_attn)
|
461 |
+
|
462 |
+
output = torch.einsum('hblt,hbtv->hblv', fused_attn, v)
|
463 |
+
output = einops.rearrange(output, 'head b l v -> b l (head v)')
|
464 |
+
output = self.fc(output)
|
465 |
+
return output, fused_attn
|
466 |
+
|
467 |
+
class SpatialSelfAttentionLayer(nn.Module):
|
468 |
+
def __init__(
|
469 |
+
self,
|
470 |
+
d_model,
|
471 |
+
nhead,
|
472 |
+
dropout=0.0,
|
473 |
+
activation="relu",
|
474 |
+
normalize_before=False,
|
475 |
+
batch_first=False,
|
476 |
+
spatial_multihead=True, spatial_dim=5, spatial_attn_fusion='mul'
|
477 |
+
):
|
478 |
+
super().__init__()
|
479 |
+
self.self_attn = MultiHeadAttentionSpatial(
|
480 |
+
d_model, nhead, dropout=dropout,
|
481 |
+
spatial_multihead=spatial_multihead,
|
482 |
+
spatial_dim=spatial_dim,
|
483 |
+
spatial_attn_fusion=spatial_attn_fusion,
|
484 |
+
)
|
485 |
+
|
486 |
+
self.norm = nn.LayerNorm(d_model)
|
487 |
+
self.dropout = nn.Dropout(dropout)
|
488 |
+
|
489 |
+
self.activation = get_activation_fn(activation)
|
490 |
+
self.normalize_before = normalize_before
|
491 |
+
|
492 |
+
self._reset_parameters()
|
493 |
+
|
494 |
+
def _reset_parameters(self):
|
495 |
+
for p in self.parameters():
|
496 |
+
if p.dim() > 1:
|
497 |
+
nn.init.xavier_uniform_(p)
|
498 |
+
|
499 |
+
def with_pos_embed(self, tensor, pos):
|
500 |
+
return tensor if pos is None else tensor + pos
|
501 |
+
|
502 |
+
def forward_post(
|
503 |
+
self, tgt, attn_mask=None, tgt_key_padding_mask=None, query_pos=None,
|
504 |
+
pairwise_locs=None
|
505 |
+
):
|
506 |
+
q = k = self.with_pos_embed(tgt, query_pos)
|
507 |
+
tgt2 = self.self_attn(
|
508 |
+
q,
|
509 |
+
k,
|
510 |
+
tgt,
|
511 |
+
key_padding_mask=tgt_key_padding_mask,
|
512 |
+
pairwise_locs=pairwise_locs,
|
513 |
+
)[0]
|
514 |
+
tgt = tgt + self.dropout(tgt2)
|
515 |
+
tgt = self.norm(tgt)
|
516 |
+
|
517 |
+
return tgt
|
518 |
+
|
519 |
+
def forward_pre(
|
520 |
+
self, tgt, attn_mask=None, tgt_key_padding_mask=None, query_pos=None,
|
521 |
+
pairwise_locs=None
|
522 |
+
):
|
523 |
+
tgt2 = self.norm(tgt)
|
524 |
+
q = k = self.with_pos_embed(tgt2, query_pos)
|
525 |
+
tgt2 = self.self_attn(
|
526 |
+
q,
|
527 |
+
k,
|
528 |
+
tgt,
|
529 |
+
key_padding_mask=tgt_key_padding_mask,
|
530 |
+
pairwise_locs=pairwise_locs,
|
531 |
+
)[0]
|
532 |
+
tgt = tgt + self.dropout(tgt2)
|
533 |
+
|
534 |
+
return tgt
|
535 |
+
|
536 |
+
def forward(
|
537 |
+
self, tgt, attn_mask=None, tgt_key_padding_mask=None, query_pos=None,
|
538 |
+
pairwise_locs=None
|
539 |
+
):
|
540 |
+
if self.normalize_before:
|
541 |
+
return self.forward_pre(
|
542 |
+
tgt, attn_mask, tgt_key_padding_mask, query_pos,
|
543 |
+
pairwise_locs
|
544 |
+
)
|
545 |
+
return self.forward_post(
|
546 |
+
tgt, attn_mask, tgt_key_padding_mask, query_pos,
|
547 |
+
pairwise_locs
|
548 |
+
)
|
549 |
+
|
550 |
+
class QueryEncoderLayer(nn.Module):
|
551 |
+
def __init__(self, d_model, nhead, memories, dim_feedforward=2048, dropout=0.1, activation="relu", prenorm=False, spatial_selfattn=False, structure='mixed', memory_dropout=0, drop_memories_test=[]):
|
552 |
+
super().__init__()
|
553 |
+
if spatial_selfattn:
|
554 |
+
self.self_attn = SpatialSelfAttentionLayer(d_model, nhead, dropout=dropout, activation=activation, normalize_before=prenorm, batch_first=True)
|
555 |
+
else:
|
556 |
+
self.self_attn = SelfAttentionLayer(d_model, nhead, dropout=dropout, activation=activation, normalize_before=prenorm, batch_first=True)
|
557 |
+
cross_attn_layer = CrossAttentionLayer(d_model, nhead, dropout=dropout, activation=activation, normalize_before=prenorm, batch_first=True)
|
558 |
+
self.cross_attn_list = layer_repeat(cross_attn_layer, len(memories))
|
559 |
+
self.memory2ca = {memory:ca for memory, ca in zip(memories, self.cross_attn_list)}
|
560 |
+
self.ffn = FFNLayer(d_model, dim_feedforward, dropout=dropout, activation=activation, normalize_before=prenorm)
|
561 |
+
self.structure = structure
|
562 |
+
self.memories = memories
|
563 |
+
self.memory_dropout = memory_dropout
|
564 |
+
self.drop_memories_test = drop_memories_test
|
565 |
+
if structure == 'gate':
|
566 |
+
self.gate_proj = nn.Linear(d_model, d_model)
|
567 |
+
|
568 |
+
def forward(self, query, input_dict, pairwise_locs=None):
|
569 |
+
_, query_masks, query_pos = input_dict['query']
|
570 |
+
|
571 |
+
def sequential_ca(query, memories):
|
572 |
+
for memory in memories:
|
573 |
+
cross_attn = self.memory2ca[memory]
|
574 |
+
feat, mask, pos = input_dict[memory]
|
575 |
+
if mask.ndim == 2:
|
576 |
+
memory_key_padding_mask = mask
|
577 |
+
attn_mask = None
|
578 |
+
else:
|
579 |
+
memory_key_padding_mask = None
|
580 |
+
attn_mask = mask
|
581 |
+
query = cross_attn(tgt=query, memory=feat, attn_mask=attn_mask, memory_key_padding_mask = memory_key_padding_mask, query_pos = query_pos, pos = pos)
|
582 |
+
return query
|
583 |
+
|
584 |
+
def parallel_ca(query, memories):
|
585 |
+
assert 'prompt' not in memories
|
586 |
+
query_list = []
|
587 |
+
for memory in memories:
|
588 |
+
cross_attn = self.memory2ca[memory]
|
589 |
+
feat, mask, pos = input_dict[memory]
|
590 |
+
if mask.ndim == 2:
|
591 |
+
memory_key_padding_mask = mask
|
592 |
+
attn_mask = None
|
593 |
+
else:
|
594 |
+
memory_key_padding_mask = None
|
595 |
+
attn_mask = mask
|
596 |
+
update = cross_attn(tgt=query, memory=feat, attn_mask=attn_mask, memory_key_padding_mask = memory_key_padding_mask, query_pos = query_pos, pos = pos)
|
597 |
+
query_list.append(update)
|
598 |
+
# training time memory dropout
|
599 |
+
if self.training and self.memory_dropout > 0.0:
|
600 |
+
dropout_mask = torch.rand(query.shape[0], len(memories), device=query.device) > self.memory_dropout
|
601 |
+
num_remained_memories = dropout_mask.sum(dim=1)
|
602 |
+
dropout_mask = torch.logical_or(dropout_mask, num_remained_memories.unsqueeze(-1) == 0)
|
603 |
+
num_remained_memories = dropout_mask.sum(dim=1)
|
604 |
+
query_tensor = torch.stack(query_list, dim=1)
|
605 |
+
query = (query_tensor * dropout_mask.unsqueeze(-1).unsqueeze(-1)).sum(dim=1) / num_remained_memories.unsqueeze(-1).unsqueeze(-1).float()
|
606 |
+
else:
|
607 |
+
query = torch.stack(query_list, dim=1).mean(dim=1)
|
608 |
+
return query
|
609 |
+
|
610 |
+
memories = self.memories if self.training else [m for m in self.memories if m not in self.drop_memories_test]
|
611 |
+
|
612 |
+
if self.structure == 'sequential':
|
613 |
+
query = sequential_ca(query, memories)
|
614 |
+
elif self.structure == 'parallel':
|
615 |
+
query = parallel_ca(query, memories)
|
616 |
+
elif self.structure == 'mixed':
|
617 |
+
# [mv,pc,vx] + prompt
|
618 |
+
query = parallel_ca(query, [m for m in memories if m != 'prompt'])
|
619 |
+
query = sequential_ca(query, ['prompt'])
|
620 |
+
elif self.structure == 'gate':
|
621 |
+
prompt = sequential_ca(query, ['prompt'])
|
622 |
+
gate = torch.sigmoid(self.gate_proj(prompt))
|
623 |
+
update = parallel_ca(query, [m for m in self.memories if m != 'prompt'])
|
624 |
+
query = (1. - gate) * query + gate * update
|
625 |
+
else:
|
626 |
+
raise NotImplementedError(f"Unknow structure type: {self.structure}")
|
627 |
+
|
628 |
+
if isinstance(self.self_attn, SpatialSelfAttentionLayer):
|
629 |
+
query = self.self_attn(query, tgt_key_padding_mask = query_masks, query_pos = query_pos,
|
630 |
+
pairwise_locs = pairwise_locs)
|
631 |
+
else:
|
632 |
+
query = self.self_attn(query, tgt_key_padding_mask = query_masks, query_pos = query_pos)
|
633 |
+
query = self.ffn(query)
|
634 |
+
|
635 |
+
return query
|
636 |
+
|
637 |
+
class QueryMaskEncoder(nn.Module):
|
638 |
+
def __init__(self, memories=[], memory_dropout=0.0, hidden_size=768, num_attention_heads=12, num_layers=4,
|
639 |
+
share_layer=False, spatial_selfattn=False, structure='sequential', drop_memories_test=[], use_self_mask=False, num_blocks=1):
|
640 |
+
super().__init__()
|
641 |
+
|
642 |
+
self.spatial_selfattn = spatial_selfattn
|
643 |
+
query_encoder_layer = QueryEncoderLayer(hidden_size, num_attention_heads, memories, spatial_selfattn=spatial_selfattn, structure=structure, memory_dropout=memory_dropout, drop_memories_test=drop_memories_test)
|
644 |
+
self.unified_encoder = layer_repeat(query_encoder_layer, num_layers, share_layer)
|
645 |
+
|
646 |
+
self.apply(_init_weights_bert)
|
647 |
+
self.memory_dropout = memory_dropout
|
648 |
+
self.scene_meomories = [x for x in memories if x != 'prompt']
|
649 |
+
self.drop_memories_test = drop_memories_test
|
650 |
+
self.use_self_mask = use_self_mask
|
651 |
+
self.num_heads = num_attention_heads
|
652 |
+
self.num_blocks = num_blocks
|
653 |
+
|
654 |
+
def forward(self, input_dict, pairwise_locs, mask_head=None):
|
655 |
+
|
656 |
+
predictions_class, predictions_mask = [], []
|
657 |
+
|
658 |
+
query = input_dict['query'][0]
|
659 |
+
voxel_feat = input_dict['voxel'][0] if 'voxel' in input_dict.keys() else None
|
660 |
+
|
661 |
+
for block_counter in range(self.num_blocks):
|
662 |
+
for i, layer in enumerate(self.unified_encoder):
|
663 |
+
if mask_head is not None:
|
664 |
+
output_class, outputs_mask, attn_mask = mask_head(query)
|
665 |
+
predictions_class.append(output_class)
|
666 |
+
predictions_mask.append(outputs_mask)
|
667 |
+
if self.use_self_mask:
|
668 |
+
attn_mask[attn_mask.all(-1)] = False # prevent query to attend to no point
|
669 |
+
attn_mask = attn_mask.repeat_interleave(self.num_heads, 0)
|
670 |
+
for memory in input_dict.keys():
|
671 |
+
if memory in ['query', 'prompt']:
|
672 |
+
continue
|
673 |
+
input_dict[memory][1] = attn_mask
|
674 |
+
|
675 |
+
if isinstance(voxel_feat, list):
|
676 |
+
input_dict['voxel'][0] = voxel_feat[i] # select voxel features from multi-scale
|
677 |
+
query = layer(query, input_dict, pairwise_locs)
|
678 |
+
|
679 |
+
return query, predictions_class, predictions_mask
|
680 |
+
|
681 |
+
class PromptType(IntEnum):
|
682 |
+
TXT = 1
|
683 |
+
IMAGE = 2
|
684 |
+
LOC = 3
|
685 |
+
|
686 |
+
class GroundHead(nn.Module):
|
687 |
+
def __init__(self, input_size=768, hidden_size=768, dropout=0.3):
|
688 |
+
super().__init__()
|
689 |
+
self.og3d_head = get_mlp_head(
|
690 |
+
input_size, hidden_size,
|
691 |
+
1, dropout=dropout
|
692 |
+
)
|
693 |
+
|
694 |
+
def forward(self, obj_embeds, obj_masks=None, **kwargs):
|
695 |
+
og3d_logits = self.og3d_head(obj_embeds).squeeze(2)
|
696 |
+
if obj_masks is not None:
|
697 |
+
og3d_logits = og3d_logits.masked_fill_(obj_masks.logical_not(), -float('inf'))
|
698 |
+
return og3d_logits
|
699 |
+
|
700 |
+
class T5(nn.Module):
|
701 |
+
def __init__(self, variant='t5-small', input_size=768, use_projection=True, **kwargs):
|
702 |
+
super().__init__()
|
703 |
+
self.model = T5ForConditionalGeneration.from_pretrained(variant)
|
704 |
+
self.model.config.update(kwargs)
|
705 |
+
hidden_size = self.model.config.d_model
|
706 |
+
self.use_projection = use_projection
|
707 |
+
if use_projection:
|
708 |
+
self.input_proj = nn.Sequential(nn.Linear(input_size, hidden_size), nn.LayerNorm(hidden_size))
|
709 |
+
else:
|
710 |
+
assert input_size == hidden_size, "input_feat_size should be equal to hidden_size!"
|
711 |
+
|
712 |
+
def forward(self, query_embeds, attention_masks, labels=None):
|
713 |
+
if self.use_projection:
|
714 |
+
query_embeds = self.input_proj(query_embeds)
|
715 |
+
|
716 |
+
if labels is not None:
|
717 |
+
outputs = self.model(encoder_outputs=[query_embeds], attention_mask=attention_masks, labels=labels)
|
718 |
+
outputs = outputs.logits
|
719 |
+
else:
|
720 |
+
outputs = self.model.generate(encoder_outputs=BaseModelOutput(last_hidden_state=query_embeds), attention_mask=attention_masks, do_sample=False)
|
721 |
+
outputs = outputs[:, 1:] # remove the decoder start token for T5 generation output.
|
722 |
+
return outputs
|
723 |
+
|
724 |
+
def calc_pairwise_locs(obj_centers, obj_whls, eps=1e-10, pairwise_rel_type='center', spatial_dist_norm=True,
|
725 |
+
spatial_dim=5):
|
726 |
+
if pairwise_rel_type == 'mlp':
|
727 |
+
obj_locs = torch.cat([obj_centers, obj_whls], 2)
|
728 |
+
pairwise_locs = torch.cat(
|
729 |
+
[einops.repeat(obj_locs, 'b l d -> b l x d', x=obj_locs.size(1)),
|
730 |
+
einops.repeat(obj_locs, 'b l d -> b x l d', x=obj_locs.size(1))],
|
731 |
+
dim=3
|
732 |
+
)
|
733 |
+
return pairwise_locs
|
734 |
+
|
735 |
+
pairwise_locs = einops.repeat(obj_centers, 'b l d -> b l 1 d') \
|
736 |
+
- einops.repeat(obj_centers, 'b l d -> b 1 l d')
|
737 |
+
pairwise_dists = torch.sqrt(torch.sum(pairwise_locs ** 2, 3) + eps) # (b, l, l)
|
738 |
+
if spatial_dist_norm:
|
739 |
+
max_dists = torch.max(pairwise_dists.view(pairwise_dists.size(0), -1), dim=1)[0]
|
740 |
+
norm_pairwise_dists = pairwise_dists / einops.repeat(max_dists, 'b -> b 1 1')
|
741 |
+
else:
|
742 |
+
norm_pairwise_dists = pairwise_dists
|
743 |
+
|
744 |
+
if spatial_dim == 1:
|
745 |
+
return norm_pairwise_dists.unsqueeze(3)
|
746 |
+
|
747 |
+
pairwise_dists_2d = torch.sqrt(torch.sum(pairwise_locs[..., :2] ** 2, 3) + eps)
|
748 |
+
if pairwise_rel_type == 'center':
|
749 |
+
pairwise_locs = torch.stack(
|
750 |
+
[norm_pairwise_dists, pairwise_locs[..., 2] / pairwise_dists,
|
751 |
+
pairwise_dists_2d / pairwise_dists, pairwise_locs[..., 1] / pairwise_dists_2d,
|
752 |
+
pairwise_locs[..., 0] / pairwise_dists_2d],
|
753 |
+
dim=3
|
754 |
+
)
|
755 |
+
elif pairwise_rel_type == 'vertical_bottom':
|
756 |
+
bottom_centers = torch.clone(obj_centers)
|
757 |
+
bottom_centers[:, :, 2] -= obj_whls[:, :, 2]
|
758 |
+
bottom_pairwise_locs = einops.repeat(bottom_centers, 'b l d -> b l 1 d') \
|
759 |
+
- einops.repeat(bottom_centers, 'b l d -> b 1 l d')
|
760 |
+
bottom_pairwise_dists = torch.sqrt(torch.sum(bottom_pairwise_locs ** 2, 3) + eps) # (b, l, l)
|
761 |
+
bottom_pairwise_dists_2d = torch.sqrt(torch.sum(bottom_pairwise_locs[..., :2] ** 2, 3) + eps)
|
762 |
+
pairwise_locs = torch.stack(
|
763 |
+
[norm_pairwise_dists,
|
764 |
+
bottom_pairwise_locs[..., 2] / bottom_pairwise_dists,
|
765 |
+
bottom_pairwise_dists_2d / bottom_pairwise_dists,
|
766 |
+
pairwise_locs[..., 1] / pairwise_dists_2d,
|
767 |
+
pairwise_locs[..., 0] / pairwise_dists_2d],
|
768 |
+
dim=3
|
769 |
+
)
|
770 |
+
|
771 |
+
if spatial_dim == 4:
|
772 |
+
pairwise_locs = pairwise_locs[..., 1:]
|
773 |
+
return pairwise_locs
|
774 |
+
|
775 |
+
class Query3DUnified(torch.nn.Module):
|
776 |
+
def __init__(self):
|
777 |
+
super().__init__()
|
778 |
+
# record parameters
|
779 |
+
self.memories = ['mv', 'pc', 'voxel', 'prompt']
|
780 |
+
self.heads = ['ground', 'generation']
|
781 |
+
self.use_offline_voxel_fts = True
|
782 |
+
self.use_offline_attn_mask = False
|
783 |
+
self.inputs = self.memories[:]
|
784 |
+
self.pairwise_rel_type = 'center'
|
785 |
+
self.spatial_dim = 5
|
786 |
+
self.num_heads = 12
|
787 |
+
self.skip_query_encoder_mask_pred = True
|
788 |
+
# build prompt type
|
789 |
+
self.prompt_types = ['txt', 'loc']
|
790 |
+
# build feature encoder
|
791 |
+
self.txt_encoder = CLIPLanguageEncoder(use_projection=True, projection_type='mlp', num_projection_layers=1)
|
792 |
+
self.mv_encoder = ObjectEncoder(input_feat_size=768, hidden_size=768, use_projection=True, dropout=0.1, use_cls_head=False)
|
793 |
+
self.voxel_encoder = ObjectEncoder(input_feat_size=128,hidden_size=768, use_projection=True, dropout=0.1, use_cls_head=False)
|
794 |
+
self.pc_encoder = ObjectEncoder(input_feat_size=768, hidden_size=768, dropout=0.1,use_cls_head=False)
|
795 |
+
# build location encoder
|
796 |
+
dim_loc = 6
|
797 |
+
hidden_size = 768
|
798 |
+
self.dim_loc = dim_loc
|
799 |
+
self.hidden_size = hidden_size
|
800 |
+
self.coord_encoder = nn.Sequential(
|
801 |
+
nn.Linear(3, hidden_size),
|
802 |
+
nn.LayerNorm(hidden_size),
|
803 |
+
)
|
804 |
+
self.box_encoder = nn.Sequential(
|
805 |
+
nn.Linear(3, hidden_size),
|
806 |
+
nn.LayerNorm(hidden_size),
|
807 |
+
)
|
808 |
+
# build unified encoder
|
809 |
+
self.unified_encoder = QueryMaskEncoder(hidden_size=768, num_attention_heads=12, num_layers=4, spatial_selfattn=True, memories=self.memories, drop_memories_test=[], memory_dropout=0.6, structure='mixed', use_self_mask=False, num_blocks=1)
|
810 |
+
# build task head
|
811 |
+
self.ground_head = GroundHead(hidden_size=384, input_size=768, dropout=0.3)
|
812 |
+
self.generation_head = T5(variant='t5-small', input_size=768, use_projection=True, max_new_tokens=50)
|
813 |
+
|
814 |
+
def prompt_encoder(self, data_dict):
|
815 |
+
prompt = data_dict['prompt']
|
816 |
+
prompt_pad_masks = data_dict['prompt_pad_masks']
|
817 |
+
prompt_type = data_dict['prompt_type']
|
818 |
+
prompt_feat = torch.zeros(prompt.shape + (self.hidden_size,), device=prompt.device)
|
819 |
+
for type in self.prompt_types:
|
820 |
+
# get idx
|
821 |
+
idx = prompt_type == getattr(PromptType, type.upper())
|
822 |
+
if idx.sum() == 0:
|
823 |
+
continue
|
824 |
+
input = prompt[idx]
|
825 |
+
mask = prompt_pad_masks[idx]
|
826 |
+
# encode
|
827 |
+
if type == 'txt':
|
828 |
+
encoder = self.txt_encoder
|
829 |
+
feat = encoder(input.long(), mask)
|
830 |
+
elif type == 'loc':
|
831 |
+
loc_prompts = input[:, :self.dim_loc]
|
832 |
+
if self.dim_loc > 3:
|
833 |
+
feat = self.coord_encoder(loc_prompts[:, :3]).unsqueeze(1) + self.box_encoder(loc_prompts[:, 3:6]).unsqueeze(1)
|
834 |
+
mask[:, 1:] = False
|
835 |
+
else:
|
836 |
+
raise NotImplementedError(f'{type} is not implemented')
|
837 |
+
# put back to orignal prompt
|
838 |
+
prompt_feat[idx] = feat
|
839 |
+
prompt_pad_masks[idx] = mask
|
840 |
+
return prompt_feat, prompt_pad_masks.logical_not()
|
841 |
+
|
842 |
+
def forward(self, data_dict):
|
843 |
+
input_dict = {}
|
844 |
+
# build query
|
845 |
+
mask = data_dict['query_pad_masks'].logical_not()
|
846 |
+
query_locs = data_dict['query_locs'][:, :, :self.dim_loc]
|
847 |
+
if self.dim_loc > 3:
|
848 |
+
query_pos = self.coord_encoder(query_locs[:, :, :3]) + self.box_encoder(query_locs[:, :, 3:6])
|
849 |
+
feat = torch.zeros_like(query_pos)
|
850 |
+
pos = query_pos
|
851 |
+
input_dict['query'] = (feat, mask, pos)
|
852 |
+
# encode fts including point, voxel, image, and prompt
|
853 |
+
# the semantics of the attention mask in pytorch (True as masked) is the opposite as Huggingface Transformers (False as masked)
|
854 |
+
fts_locs = data_dict['seg_center']
|
855 |
+
if self.dim_loc > 3:
|
856 |
+
fts_pos = self.coord_encoder(fts_locs[:, :, :3]) + self.box_encoder(fts_locs[:, :, 3:6])
|
857 |
+
if self.dim_loc > 3:
|
858 |
+
fts_pos += self.box_encoder(fts_locs[:, :, 3:6])
|
859 |
+
for input in self.inputs:
|
860 |
+
feat, mask, pos = None, None, None
|
861 |
+
if input == 'prompt':
|
862 |
+
feat, mask = self.prompt_encoder(data_dict)
|
863 |
+
elif input == 'mv':
|
864 |
+
feat = self.mv_encoder(obj_feats = data_dict['mv_seg_fts'])
|
865 |
+
mask = data_dict['mv_seg_pad_masks'].logical_not()
|
866 |
+
pos = fts_pos
|
867 |
+
elif input == 'pc':
|
868 |
+
feat = self.pc_encoder(obj_feats = data_dict['pc_seg_fts'])
|
869 |
+
mask = data_dict['pc_seg_pad_masks'].logical_not()
|
870 |
+
pos = fts_pos
|
871 |
+
elif input == 'voxel':
|
872 |
+
feat = self.voxel_encoder(data_dict['voxel_seg_fts'])
|
873 |
+
mask = data_dict['voxel_seg_pad_masks'].logical_not()
|
874 |
+
pos = fts_pos
|
875 |
+
else:
|
876 |
+
raise NotImplementedError(f"Unknow input type: {input}")
|
877 |
+
input_dict[input] = [feat, mask, pos]
|
878 |
+
# build offline attention mask for guided mask training
|
879 |
+
if self.use_offline_attn_mask:
|
880 |
+
offline_attn_masks = data_dict['offline_attn_mask']
|
881 |
+
else:
|
882 |
+
offline_attn_masks = None
|
883 |
+
mask_head_partial = None
|
884 |
+
# generate features for spatial attention
|
885 |
+
if self.unified_encoder.spatial_selfattn:
|
886 |
+
pairwise_locs = calc_pairwise_locs(query_locs[:, :, :3], None,
|
887 |
+
pairwise_rel_type=self.pairwise_rel_type, spatial_dist_norm=True,
|
888 |
+
spatial_dim=self.spatial_dim)
|
889 |
+
else:
|
890 |
+
pairwise_locs = None
|
891 |
+
|
892 |
+
# unified encoding
|
893 |
+
query, predictions_class, predictions_mask = self.unified_encoder(input_dict, pairwise_locs, mask_head_partial)
|
894 |
+
|
895 |
+
# task head
|
896 |
+
for head in self.heads:
|
897 |
+
if head == 'ground':
|
898 |
+
inputs = [query, data_dict['query_pad_masks']]
|
899 |
+
logits = getattr(self, head + '_head')(*inputs)
|
900 |
+
data_dict[head + '_logits'] = logits
|
901 |
+
data_dict['og3d_logits'] = logits
|
902 |
+
elif head == 'generation':
|
903 |
+
inputs = [query, data_dict['query_pad_masks']] + [None]
|
904 |
+
logits = getattr(self, head + '_head')(*inputs)
|
905 |
+
data_dict[head + '_logits'] = logits
|
906 |
+
else:
|
907 |
+
raise NotImplementedError(f"Unknow head type: {head}")
|
908 |
+
|
909 |
+
return data_dict
|
pq3d/utils.py
ADDED
@@ -0,0 +1,110 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import csv
|
2 |
+
import numpy as np
|
3 |
+
import torch
|
4 |
+
|
5 |
+
|
6 |
+
def convert_pc_to_box(obj_pc):
|
7 |
+
xmin = np.min(obj_pc[:,0])
|
8 |
+
ymin = np.min(obj_pc[:,1])
|
9 |
+
zmin = np.min(obj_pc[:,2])
|
10 |
+
xmax = np.max(obj_pc[:,0])
|
11 |
+
ymax = np.max(obj_pc[:,1])
|
12 |
+
zmax = np.max(obj_pc[:,2])
|
13 |
+
center = [(xmin+xmax)/2, (ymin+ymax)/2, (zmin+zmax)/2]
|
14 |
+
box_size = [xmax-xmin, ymax-ymin, zmax-zmin]
|
15 |
+
return center, box_size
|
16 |
+
|
17 |
+
class LabelConverter(object):
|
18 |
+
def __init__(self, file_path):
|
19 |
+
self.raw_name_to_id = {}
|
20 |
+
self.nyu40id_to_id = {}
|
21 |
+
self.nyu40_name_to_id = {}
|
22 |
+
self.scannet_name_to_scannet_id = {'cabinet':0, 'bed':1, 'chair':2, 'sofa':3, 'table':4,
|
23 |
+
'door':5, 'window':6,'bookshelf':7,'picture':8, 'counter':9, 'desk':10, 'curtain':11,
|
24 |
+
'refrigerator':12, 'shower curtain':13, 'toilet':14, 'sink':15, 'bathtub':16, 'others':17}
|
25 |
+
self.id_to_scannetid = {}
|
26 |
+
self.scannet_raw_id_to_raw_name = {}
|
27 |
+
self.raw_name_to_scannet_raw_id = {}
|
28 |
+
|
29 |
+
with open(file_path, encoding='utf-8') as fd:
|
30 |
+
rd = list(csv.reader(fd, delimiter="\t", quotechar='"'))
|
31 |
+
for i in range(1, len(rd)):
|
32 |
+
raw_id = i - 1
|
33 |
+
scannet_raw_id = int(rd[i][0])
|
34 |
+
raw_name = rd[i][1]
|
35 |
+
nyu40_id = int(rd[i][4])
|
36 |
+
nyu40_name = rd[i][7]
|
37 |
+
self.raw_name_to_id[raw_name] = raw_id
|
38 |
+
self.scannet_raw_id_to_raw_name[scannet_raw_id] = raw_name
|
39 |
+
self.raw_name_to_scannet_raw_id[raw_name] = scannet_raw_id
|
40 |
+
self.nyu40id_to_id[nyu40_id] = raw_id
|
41 |
+
self.nyu40_name_to_id[nyu40_name] = raw_id
|
42 |
+
if nyu40_name not in self.scannet_name_to_scannet_id:
|
43 |
+
self.id_to_scannetid[raw_id] = self.scannet_name_to_scannet_id['others']
|
44 |
+
else:
|
45 |
+
self.id_to_scannetid[raw_id] = self.scannet_name_to_scannet_id[nyu40_name]
|
46 |
+
|
47 |
+
def build_rotate_mat(split, rot_aug=True, rand_angle='axis'):
|
48 |
+
if rand_angle == 'random':
|
49 |
+
theta = np.random.rand() * np.pi * 2
|
50 |
+
else:
|
51 |
+
ROTATE_ANGLES = [0, np.pi/2, np.pi, np.pi*3/2]
|
52 |
+
theta_idx = np.random.randint(len(ROTATE_ANGLES))
|
53 |
+
theta = ROTATE_ANGLES[theta_idx]
|
54 |
+
if (theta is not None) and (theta != 0) and (split == 'train') and rot_aug:
|
55 |
+
rot_matrix = np.array([
|
56 |
+
[np.cos(theta), -np.sin(theta), 0],
|
57 |
+
[np.sin(theta), np.cos(theta), 0],
|
58 |
+
[0, 0, 1]
|
59 |
+
], dtype=np.float32)
|
60 |
+
else:
|
61 |
+
rot_matrix = None
|
62 |
+
return rot_matrix
|
63 |
+
|
64 |
+
def obj_processing_post(obj_pcds, rot_aug=True):
|
65 |
+
obj_pcds = torch.from_numpy(obj_pcds)
|
66 |
+
rot_matrix = build_rotate_mat('val', rot_aug)
|
67 |
+
if rot_matrix is not None:
|
68 |
+
rot_matrix = torch.from_numpy(rot_matrix.transpose())
|
69 |
+
obj_pcds[:, :, :3] @= rot_matrix
|
70 |
+
|
71 |
+
xyz = obj_pcds[:, :, :3]
|
72 |
+
center = xyz.mean(1)
|
73 |
+
xyz_min = xyz.min(1).values
|
74 |
+
xyz_max = xyz.max(1).values
|
75 |
+
box_center = (xyz_min + xyz_max) / 2
|
76 |
+
size = xyz_max - xyz_min
|
77 |
+
obj_locs = torch.cat([center, size], dim=1)
|
78 |
+
obj_boxes = torch.cat([box_center, size], dim=1)
|
79 |
+
|
80 |
+
# centering
|
81 |
+
obj_pcds[:, :, :3].sub_(obj_pcds[:, :, :3].mean(1, keepdim=True))
|
82 |
+
|
83 |
+
# normalization
|
84 |
+
max_dist = (obj_pcds[:, :, :3]**2).sum(2).sqrt().max(1).values
|
85 |
+
max_dist.clamp_(min=1e-6)
|
86 |
+
obj_pcds[:, :, :3].div_(max_dist[:, None, None])
|
87 |
+
|
88 |
+
return obj_pcds, obj_locs, obj_boxes, rot_matrix
|
89 |
+
|
90 |
+
|
91 |
+
def pad_sequence(sequence_list, max_len=None, pad=0, return_mask=False):
|
92 |
+
lens = [x.shape[0] for x in sequence_list]
|
93 |
+
if max_len is None:
|
94 |
+
max_len = max(lens)
|
95 |
+
|
96 |
+
shape = list(sequence_list[0].shape)
|
97 |
+
shape[0] = max_len
|
98 |
+
shape = [len(sequence_list)] + shape
|
99 |
+
dtype = sequence_list[0].dtype
|
100 |
+
device = sequence_list[0].device
|
101 |
+
padded_sequence = torch.ones(shape, dtype=dtype, device=device) * pad
|
102 |
+
for i, tensor in enumerate(sequence_list):
|
103 |
+
padded_sequence[i, :tensor.shape[0]] = tensor
|
104 |
+
padded_sequence = padded_sequence.to(dtype)
|
105 |
+
|
106 |
+
if return_mask:
|
107 |
+
mask = torch.arange(max_len).to(device)[None, :] >= torch.LongTensor(lens).to(device)[:, None] # True as masked.
|
108 |
+
return padded_sequence, mask
|
109 |
+
else:
|
110 |
+
return padded_sequence
|
requirements.txt
ADDED
@@ -0,0 +1,106 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
aiofiles==23.2.1
|
2 |
+
altair==5.3.0
|
3 |
+
annotated-types==0.7.0
|
4 |
+
anyio==4.4.0
|
5 |
+
attrs==23.2.0
|
6 |
+
Brotli @ file:///croot/brotli-split_1714483155106/work
|
7 |
+
certifi @ file:///croot/certifi_1720453481653/work/certifi
|
8 |
+
chamfer==2.0.0
|
9 |
+
chardet @ file:///tmp/build/80754af9/chardet_1607706775000/work
|
10 |
+
charset-normalizer @ file:///tmp/build/80754af9/charset-normalizer_1630003229654/work
|
11 |
+
click==8.1.7
|
12 |
+
contourpy==1.2.1
|
13 |
+
cycler==0.12.1
|
14 |
+
dnspython==2.6.1
|
15 |
+
einops==0.8.0
|
16 |
+
email_validator==2.2.0
|
17 |
+
exceptiongroup==1.2.1
|
18 |
+
fastapi==0.111.0
|
19 |
+
fastapi-cli==0.0.4
|
20 |
+
ffmpy==0.3.2
|
21 |
+
filelock @ file:///croot/filelock_1700591183607/work
|
22 |
+
fonttools==4.53.1
|
23 |
+
fsspec==2024.6.1
|
24 |
+
gmpy2 @ file:///tmp/build/80754af9/gmpy2_1645438755360/work
|
25 |
+
gradio==4.37.2
|
26 |
+
gradio_client==1.0.2
|
27 |
+
h11==0.14.0
|
28 |
+
httpcore==1.0.5
|
29 |
+
httptools==0.6.1
|
30 |
+
httpx==0.27.0
|
31 |
+
huggingface-hub==0.23.4
|
32 |
+
idna @ file:///croot/idna_1714398848350/work
|
33 |
+
importlib_resources==6.4.0
|
34 |
+
Jinja2 @ file:///croot/jinja2_1716993405101/work
|
35 |
+
jsonschema==4.23.0
|
36 |
+
jsonschema-specifications==2023.12.1
|
37 |
+
kiwisolver==1.4.5
|
38 |
+
markdown-it-py==3.0.0
|
39 |
+
MarkupSafe @ file:///croot/markupsafe_1704205993651/work
|
40 |
+
matplotlib==3.9.1
|
41 |
+
mdurl==0.1.2
|
42 |
+
mkl-fft @ file:///croot/mkl_fft_1695058164594/work
|
43 |
+
mkl-random @ file:///croot/mkl_random_1695059800811/work
|
44 |
+
mkl-service==2.4.0
|
45 |
+
mpmath @ file:///croot/mpmath_1690848262763/work
|
46 |
+
networkx @ file:///croot/networkx_1717597493534/work
|
47 |
+
numpy @ file:///croot/numpy_and_numpy_base_1708638617955/work/dist/numpy-1.26.4-cp39-cp39-linux_x86_64.whl#sha256=6094eeedd869502faa0fd0a8c5ad3a70c5779be06ddd1feb7627e5c212fac420
|
48 |
+
nvidia-cublas-cu12==12.1.3.1
|
49 |
+
nvidia-cuda-cupti-cu12==12.1.105
|
50 |
+
nvidia-cuda-nvrtc-cu12==12.1.105
|
51 |
+
nvidia-cuda-runtime-cu12==12.1.105
|
52 |
+
nvidia-cudnn-cu12==8.9.2.26
|
53 |
+
nvidia-cufft-cu12==11.0.2.54
|
54 |
+
nvidia-curand-cu12==10.3.2.106
|
55 |
+
nvidia-cusolver-cu12==11.4.5.107
|
56 |
+
nvidia-cusparse-cu12==12.1.0.106
|
57 |
+
nvidia-nccl-cu12==2.20.5
|
58 |
+
nvidia-nvjitlink-cu12==12.5.82
|
59 |
+
nvidia-nvtx-cu12==12.1.105
|
60 |
+
orjson==3.10.6
|
61 |
+
packaging==24.1
|
62 |
+
pandas==2.2.2
|
63 |
+
pillow @ file:///croot/pillow_1714398848491/work
|
64 |
+
pydantic==2.8.2
|
65 |
+
pydantic_core==2.20.1
|
66 |
+
pydub==0.25.1
|
67 |
+
Pygments==2.18.0
|
68 |
+
pyparsing==3.1.2
|
69 |
+
PySocks @ file:///tmp/build/80754af9/pysocks_1605305812635/work
|
70 |
+
python-dateutil==2.9.0.post0
|
71 |
+
python-dotenv==1.0.1
|
72 |
+
python-multipart==0.0.9
|
73 |
+
pytz==2024.1
|
74 |
+
PyYAML==6.0.1
|
75 |
+
referencing==0.35.1
|
76 |
+
regex==2024.5.15
|
77 |
+
requests==2.32.3
|
78 |
+
rich==13.7.1
|
79 |
+
rpds-py==0.19.0
|
80 |
+
ruff==0.5.1
|
81 |
+
safetensors==0.4.3
|
82 |
+
semantic-version==2.10.0
|
83 |
+
shellingham==1.5.4
|
84 |
+
six==1.16.0
|
85 |
+
sniffio==1.3.1
|
86 |
+
starlette==0.37.2
|
87 |
+
sympy @ file:///croot/sympy_1701397643339/work
|
88 |
+
tokenizers==0.19.1
|
89 |
+
tomlkit==0.12.0
|
90 |
+
toolz==0.12.1
|
91 |
+
torch==2.0.0
|
92 |
+
torchaudio==2.0.0
|
93 |
+
torchvision==0.15.0
|
94 |
+
tqdm==4.66.4
|
95 |
+
transformers==4.42.3
|
96 |
+
triton==2.0.0
|
97 |
+
typer==0.12.3
|
98 |
+
typing_extensions @ file:///croot/typing_extensions_1715268824938/work
|
99 |
+
tzdata==2024.1
|
100 |
+
ujson==5.10.0
|
101 |
+
urllib3 @ file:///croot/urllib3_1718912636303/work
|
102 |
+
uvicorn==0.30.1
|
103 |
+
uvloop==0.19.0
|
104 |
+
watchfiles==0.22.0
|
105 |
+
websockets==11.0.3
|
106 |
+
zipp==3.19.2
|