Export
Introduction
In this notebook, we'll explore Qwen3-VL's 2D object detection and grounding capabilities using Together AI's API. We'll cover:
- Multi-target object detection
- Detection with additional attributes (color, type, etc.)
- Point-based grounding
- Specific object detection using natural language descriptions
Qwen3-VL outputs coordinates in a relative scale from 0 to 1000, which can be easily converted to actual pixel coordinates.
Install required libraries
[ ]
[2]
Using model: Qwen/Qwen3.5-397B-A17B API Key configured: True
[3]
1. Multi-Target Object Detection
Detect multiple instances of different object categories in an image.
[5]
{
"detections": [
{
"bbox_2d": [
74,
361,
325,
812
],
"label": "plate/dish",
"type": "plate",
"color": "white"
},
{
"bbox_2d": [
320,
664,
565,
958
],
"label": "plate/dish",
"type": "plate",
"color": "white"
},
{
"bbox_2d": [
553,
575,
809,
904
],
"label": "plate/dish",
"type": "plate",
"color": "white with floral pattern"
},
{
"bbox_2d": [
743,
441,
999,
904
],
"label": "plate/dish",
"type": "plate",
"color": "white"
},
{
"bbox_2d": [
488,
187,
743,
570
],
"label": "plate/dish",
"type": "plate",
"color": "white"
},
{
"bbox_2d": [
300,
132,
480,
394
],
"label": "plate/dish",
"type": "plate",
"color": "white with brown floral pattern"
},
{
"bbox_2d": [
691,
180,
999,
498
],
"label": "plate/dish",
"type": "tray",
"color": "black"
},
{
"bbox_2d": [
284,
318,
607,
691
],
"label": "plate/dish",
"type": "steamer basket",
"color": "metallic"
},
{
"bbox_2d": [
164,
0,
305,
355
],
"label": "wine bottle",
"type": "dark green glass"
},
{
"bbox_2d": [
613,
71,
730,
210
],
"label": "bowl",
"type": "ceramic",
"color": "white with red rim"
},
{
"bbox_2d": [
255,
81,
332,
225
],
"label": "bowl",
"type": "ceramic",
"color": "white"
},
{
"bbox_2d": [
0,
802,
103,
1000
],
"label": "bowl",
"type": "ceramic",
"color": "white"
},
{
"bbox_2d": [
618,
937,
756,
1000
],
"label": "bowl",
"type": "ceramic",
"color": "white"
},
{
"bbox_2d": [
462,
483,
598,
648
],
"label": "bowl",
"type": "square ceramic",
"color": "black"
},
{
"bbox_2d": [
642,
52,
712,
181
],
"label": "spoon",
"type": "plastic",
"color": "white with blue handle"
},
{
"bbox_2d": [
95,
814,
223,
1000
],
"label": "cup",
"type": "glass",
"color": "clear"
},
{
"bbox_2d": [
728,
842,
847,
1000
],
"label": "cup",
"type": "glass",
"color": "clear"
},
{
"bbox_2d": [
900,
433,
999,
470
],
"label": "chopsticks",
"type": "wooden",
"color": "light brown"
},
{
"bbox_2d": [
798,
798,
839,
1000
],
"label": "chopsticks",
"type": "wooden",
"color": "light brown"
}
]
}
Image size: (640, 479)
[7]
{
"detections": [
{
"bbox_2d": [
17,
665,
236,
999
],
"label": "person",
"type": "head",
"color": "black"
},
{
"bbox_2d": [
188,
670,
437,
999
],
"label": "person",
"type": "head",
"color": "gray"
},
{
"bbox_2d": [
378,
786,
602,
999
],
"label": "person",
"type": "head",
"color": "black"
},
{
"bbox_2d": [
565,
684,
798,
999
],
"label": "person",
"type": "head",
"color": "beige"
},
{
"bbox_2d": [
753,
701,
1000,
999
],
"label": "person",
"type": "head",
"color": "black"
},
{
"bbox_2d": [
792,
515,
1000,
845
],
"label": "person",
"type": "head",
"color": "gray"
},
{
"bbox_2d": [
846,
385,
1000,
565
],
"label": "person",
"type": "head",
"color": "blue"
},
{
"bbox_2d": [
809,
243,
957,
450
],
"label": "person",
"type": "head",
"color": "black"
},
{
"bbox_2d": [
737,
77,
980,
355
],
"label": "person",
"type": "head",
"color": "black"
},
{
"bbox_2d": [
628,
234,
777,
437
],
"label": "person",
"type": "head",
"color": "black"
},
{
"bbox_2d": [
523,
295,
658,
523
],
"label": "person",
"type": "head",
"color": "blue"
},
{
"bbox_2d": [
439,
376,
602,
577
],
"label": "person",
"type": "head",
"color": "black"
},
{
"bbox_2d": [
413,
567,
647,
806
],
"label": "person",
"type": "head",
"color": "black"
},
{
"bbox_2d": [
581,
501,
828,
772
],
"label": "person",
"type": "head",
"color": "black"
},
{
"bbox_2d": [
617,
350,
857,
587
],
"label": "person",
"type": "head",
"color": "black"
},
{
"bbox_2d": [
322,
479,
498,
786
],
"label": "person",
"type": "head",
"color": "white"
},
{
"bbox_2d": [
135,
494,
325,
834
],
"label": "person",
"type": "head",
"color": "beige"
},
{
"bbox_2d": [
0,
469,
189,
737
],
"label": "person",
"type": "head",
"color": "black"
},
{
"bbox_2d": [
92,
272,
272,
467
],
"label": "person",
"type": "head",
"color": "blue"
},
{
"bbox_2d": [
177,
328,
426,
594
],
"label": "person",
"type": "head",
"color": "brown"
},
{
"bbox_2d": [
355,
254,
520,
479
],
"label": "person",
"type": "head",
"color": "white"
},
{
"bbox_2d": [
355,
165,
552,
385
],
"label": "person",
"type": "head",
"color": "blue"
},
{
"bbox_2d": [
225,
184,
388,
385
],
"label": "person",
"type": "head",
"color": "black"
},
{
"bbox_2d": [
232,
121,
420,
300
],
"label": "person",
"type": "head",
"color": "white"
},
{
"bbox_2d": [
25,
165,
192,
404
],
"label": "person",
"type": "head",
"color": "blue"
},
{
"bbox_2d": [
0,
284,
102,
494
],
"label": "person",
"type": "head",
"color": "black"
},
{
"bbox_2d": [
0,
67,
78,
260
],
"label": "person",
"type": "head",
"color": "black"
},
{
"bbox_2d": [
62,
97,
243,
277
],
"label": "person",
"type": "head",
"color": "black"
},
{
"bbox_2d": [
138,
10,
275,
192
],
"label": "person",
"type": "head",
"color": "blue"
},
{
"bbox_2d": [
50,
0,
140,
107
],
"label": "person",
"type": "head",
"color": "black"
},
{
"bbox_2d": [
252,
50,
350,
194
],
"label": "person",
"type": "head",
"color": "white"
},
{
"bbox_2d": [
320,
0,
410,
142
],
"label": "person",
"type": "head",
"color": "blue"
},
{
"bbox_2d": [
375,
52,
482,
200
],
"label": "person",
"type": "head",
"color": "black"
},
{
"bbox_2d": [
452,
0,
555,
97
],
"label": "person",
"type": "head",
"color": "blue"
},
{
"bbox_2d": [
450,
65,
588,
272
],
"label": "person",
"type": "head",
"color": "black"
},
{
"bbox_2d": [
535,
17,
655,
172
],
"label": "person",
"type": "head",
"color": "black"
},
{
"bbox_2d": [
562,
84,
782,
328
],
"label": "person",
"type": "head",
"color": "brown"
},
{
"bbox_2d": [
648,
55,
832,
200
],
"label": "person",
"type": "head",
"color": "black"
},
{
"bbox_2d": [
685,
0,
775,
107
],
"label": "person",
"type": "head",
"color": "black"
},
{
"bbox_2d": [
752,
0,
855,
125
],
"label": "person",
"type": "head",
"color": "white"
},
{
"bbox_2d": [
825,
0,
1000,
194
],
"label": "person",
"type": "head",
"color": "beige"
},
{
"bbox_2d": [
745,
240,
805,
317
],
"label": "hand",
"type": "hand",
"color": "skin"
},
{
"bbox_2d": [
742,
310,
807,
379
],
"label": "hand",
"type": "hand",
"color": "skin"
},
{
"bbox_2d": [
800,
588,
872,
689
],
"label": "hand",
"type": "hand",
"color": "skin"
},
{
"bbox_2d": [
832,
437,
895,
500
],
"label": "hand",
"type": "hand",
"color": "skin"
},
{
"bbox_2d": [
955,
280,
1000,
357
],
"label": "hand",
"type": "hand",
"color": "skin"
},
{
"bbox_2d": [
770,
127,
822,
210
],
"label": "hand",
"type": "hand",
"color": "skin"
},
{
"bbox_2d": [
767,
37,
845,
115
],
"label": "hand",
"type": "hand",
"color": "skin"
},
{
"bbox_2d": [
965,
84,
1000,
152
],
"label": "hand",
"type": "hand",
"color": "skin"
},
{
"bbox_2d": [
617,
12,
665,
75
],
"label": "hand",
"type": "hand",
"color": "skin"
},
{
"bbox_2d": [
588,
45,
642,
127
],
"label": "hand",
"type": "hand",
"color": "skin"
},
{
"bbox_2d": [
505,
252,
560,
327
],
"label": "hand",
"type": "hand",
"color": "skin"
},
{
"bbox_2d": [
455,
65,
520,
162
],
"label": "hand",
"type": "hand",
"color": "skin"
},
{
"bbox_2d": [
225,
95,
265,
157
],
"label": "hand",
"type": "hand",
"color": "skin"
},
{
"bbox_2d": [
180,
130,
230,
194
],
"label": "hand",
"type": "hand",
"color": "skin"
},
{
"bbox_2d": [
255,
127,
295,
200
],
"label": "hand",
"type": "hand",
"color": "skin"
},
{
"bbox_2d": [
115,
65,
167,
125
],
"label": "hand",
"type": "hand",
"color": "skin"
},
{
"bbox_2d": [
0,
215,
35,
295
],
"label": "hand",
"type": "hand",
"color": "skin"
},
{
"bbox_2d": [
92,
365,
148,
445
],
"label": "hand",
"type": "hand",
"color": "skin"
},
{
"bbox_2d": [
140,
387,
210,
472
],
"label": "hand",
"type": "hand",
"color": "skin"
},
{
"bbox_2d": [
200,
240,
257,
322
],
"label": "hand",
"type": "hand",
"color": "skin"
},
{
"bbox_2d": [
362,
342,
410,
422
],
"label": "hand",
"type": "hand",
"color": "skin"
},
{
"bbox_2d": [
455,
335,
515,
397
],
"label": "hand",
"type": "hand",
"color": "skin"
},
{
"bbox_2d": [
542,
505,
617,
587
],
"label": "hand",
"type": "hand",
"color": "skin"
},
{
"bbox_2d": [
582,
580,
657,
665
],
"label": "hand",
"type": "hand",
"color": "skin"
},
{
"bbox_2d": [
640,
375,
692,
467
],
"label": "hand",
"type": "hand",
"color": "skin"
},
{
"bbox_2d": [
785,
922,
852,
999
],
"label": "hand",
"type": "hand",
"color": "skin"
},
{
"bbox_2d": [
598,
887,
655,
962
],
"label": "hand",
"type": "hand",
"color": "skin"
},
{
"bbox_2d": [
165,
910,
260,
999
],
"label": "hand",
"type": "hand",
"color": "skin"
},
{
"bbox_2d": [
30,
892,
107,
977
],
"label": "hand",
"type": "hand",
"color": "skin"
},
{
"bbox_2d": [
250,
620,
315,
697
],
"label": "hand",
"type": "hand",
"color": "skin"
},
{
"bbox_2d": [
327,
592,
392,
677
],
"label": "hand",
"type": "hand",
"color": "skin"
},
{
"bbox_2d": [
0,
565,
27,
652
],
"label": "hand",
"type": "hand",
"color": "skin"
},
{
"bbox_2d": [
305,
965,
372,
999
],
"label": "hand",
"type": "hand",
"color": "skin"
}
]
}
Image size: (640, 639)
2. Detection with Additional Attributes
You can specify output format to include additional information like object attributes, descriptions, etc.
[8]
{
"detections": [
{
"bbox_2d": [
354,
425,
382,
483
],
"label": "vehicle",
"type": "car",
"color": "white"
},
{
"bbox_2d": [
412,
354,
438,
406
],
"label": "vehicle",
"type": "car",
"color": "white"
},
{
"bbox_2d": [
428,
231,
452,
282
],
"label": "vehicle",
"type": "car",
"color": "white"
},
{
"bbox_2d": [
373,
586,
403,
655
],
"label": "vehicle",
"type": "car",
"color": "gray"
},
{
"bbox_2d": [
404,
635,
435,
709
],
"label": "vehicle",
"type": "car",
"color": "light blue"
},
{
"bbox_2d": [
485,
608,
516,
680
],
"label": "vehicle",
"type": "car",
"color": "black"
},
{
"bbox_2d": [
550,
648,
580,
718
],
"label": "vehicle",
"type": "car",
"color": "dark gray"
},
{
"bbox_2d": [
518,
872,
549,
964
],
"label": "vehicle",
"type": "car",
"color": "white"
},
{
"bbox_2d": [
548,
443,
575,
498
],
"label": "vehicle",
"type": "car",
"color": "white"
},
{
"bbox_2d": [
550,
346,
575,
390
],
"label": "vehicle",
"type": "car",
"color": "white"
},
{
"bbox_2d": [
560,
219,
580,
257
],
"label": "vehicle",
"type": "car",
"color": "white"
},
{
"bbox_2d": [
557,
156,
574,
187
],
"label": "vehicle",
"type": "car",
"color": "white"
},
{
"bbox_2d": [
557,
89,
574,
120
],
"label": "vehicle",
"type": "car",
"color": "white"
},
{
"bbox_2d": [
558,
86,
574,
115
],
"label": "vehicle",
"type": "car",
"color": "white"
},
{
"bbox_2d": [
594,
82,
613,
110
],
"label": "vehicle",
"type": "car",
"color": "white"
},
{
"bbox_2d": [
599,
49,
618,
78
],
"label": "vehicle",
"type": "car",
"color": "white"
},
{
"bbox_2d": [
578,
107,
594,
135
],
"label": "vehicle",
"type": "car",
"color": "light blue"
},
{
"bbox_2d": [
536,
173,
552,
204
],
"label": "vehicle",
"type": "car",
"color": "dark gray"
},
{
"bbox_2d": [
511,
206,
529,
240
],
"label": "vehicle",
"type": "car",
"color": "red"
},
{
"bbox_2d": [
536,
61,
554,
87
],
"label": "vehicle",
"type": "car",
"color": "black"
},
{
"bbox_2d": [
554,
2,
568,
20
],
"label": "vehicle",
"type": "car",
"color": "black"
},
{
"bbox_2d": [
558,
39,
572,
65
],
"label": "vehicle",
"type": "car",
"color": "black"
},
{
"bbox_2d": [
560,
0,
574,
18
],
"label": "vehicle",
"type": "car",
"color": "white"
},
{
"bbox_2d": [
574,
14,
598,
80
],
"label": "vehicle",
"type": "bus",
"color": "red"
},
{
"bbox_2d": [
716,
468,
760,
512
],
"label": "vehicle",
"type": "car",
"color": "red"
},
{
"bbox_2d": [
745,
403,
782,
457
],
"label": "vehicle",
"type": "car",
"color": "black"
},
{
"bbox_2d": [
729,
258,
757,
289
],
"label": "vehicle",
"type": "car",
"color": "red"
},
{
"bbox_2d": [
689,
275,
728,
302
],
"label": "vehicle",
"type": "car",
"color": "black"
},
{
"bbox_2d": [
684,
295,
729,
322
],
"label": "vehicle",
"type": "car",
"color": "silver"
},
{
"bbox_2d": [
687,
316,
731,
350
],
"label": "vehicle",
"type": "car",
"color": "black"
},
{
"bbox_2d": [
679,
225,
697,
260
],
"label": "vehicle",
"type": "car",
"color": "white"
},
{
"bbox_2d": [
772,
236,
807,
280
],
"label": "vehicle",
"type": "car",
"color": "black"
},
{
"bbox_2d": [
819,
355,
860,
382
],
"label": "vehicle",
"type": "car",
"color": "black"
},
{
"bbox_2d": [
815,
378,
864,
405
],
"label": "vehicle",
"type": "car",
"color": "silver"
},
{
"bbox_2d": [
826,
403,
870,
430
],
"label": "vehicle",
"type": "car",
"color": "black"
},
{
"bbox_2d": [
867,
358,
908,
387
],
"label": "vehicle",
"type": "car",
"color": "white"
},
{
"bbox_2d": [
868,
382,
900,
407
],
"label": "vehicle",
"type": "car",
"color": "white"
},
{
"bbox_2d": [
875,
401,
921,
430
],
"label": "vehicle",
"type": "car",
"color": "white"
},
{
"bbox_2d": [
878,
825,
931,
915
],
"label": "vehicle",
"type": "car",
"color": "white"
},
{
"bbox_2d": [
914,
819,
964,
909
],
"label": "vehicle",
"type": "car",
"color": "black"
},
{
"bbox_2d": [
953,
821,
1000,
907
],
"label": "vehicle",
"type": "car",
"color": "white"
},
{
"bbox_2d": [
856,
935,
934,
1000
],
"label": "vehicle",
"type": "car",
"color": "black"
},
{
"bbox_2d": [
960,
912,
1000,
1000
],
"label": "vehicle",
"type": "car",
"color": "black"
},
{
"bbox_2d": [
932,
975,
972,
1000
],
"label": "vehicle",
"type": "car",
"color": "white"
},
{
"bbox_2d": [
302,
952,
339,
1000
],
"label": "vehicle",
"type": "car",
"color": "white"
},
{
"bbox_2d": [
319,
388,
333,
414
],
"label": "vehicle",
"type": "bicycle",
"color": "black"
},
{
"bbox_2d": [
177,
901,
196,
942
],
"label": "vehicle",
"type": "bicycle",
"color": "black"
}
]
}
Image size: (640, 480)
3. Point-based Grounding
Instead of bounding boxes, you can use points to locate objects.
[9]
{
"detections": [
{
"point_2d": [
39,
625
],
"label": "person",
"role": "player",
"shirt_color": "red"
},
{
"point_2d": [
146,
848
],
"label": "person",
"role": "player",
"shirt_color": "white"
},
{
"point_2d": [
152,
364
],
"label": "person",
"role": "player",
"shirt_color": "red"
},
{
"point_2d": [
171,
355
],
"label": "person",
"role": "player",
"shirt_color": "white"
},
{
"point_2d": [
182,
293
],
"label": "person",
"role": "player",
"shirt_color": "red"
},
{
"point_2d": [
240,
161
],
"label": "person",
"role": "player",
"shirt_color": "red"
},
{
"point_2d": [
247,
161
],
"label": "person",
"role": "player",
"shirt_color": "white"
},
{
"point_2d": [
295,
298
],
"label": "person",
"role": "player",
"shirt_color": "white"
},
{
"point_2d": [
334,
257
],
"label": "person",
"role": "player",
"shirt_color": "red"
},
{
"point_2d": [
343,
333
],
"label": "person",
"role": "referee",
"shirt_color": "dark"
},
{
"point_2d": [
433,
149
],
"label": "person",
"role": "player",
"shirt_color": "red"
},
{
"point_2d": [
445,
137
],
"label": "person",
"role": "player",
"shirt_color": "white"
},
{
"point_2d": [
497,
108
],
"label": "person",
"role": "referee",
"shirt_color": "black"
},
{
"point_2d": [
489,
410
],
"label": "person",
"role": "player",
"shirt_color": "red"
},
{
"point_2d": [
477,
455
],
"label": "person",
"role": "player",
"shirt_color": "white"
},
{
"point_2d": [
518,
230
],
"label": "person",
"role": "player",
"shirt_color": "white"
},
{
"point_2d": [
518,
256
],
"label": "person",
"role": "player",
"shirt_color": "red"
},
{
"point_2d": [
645,
232
],
"label": "person",
"role": "player",
"shirt_color": "red"
},
{
"point_2d": [
655,
159
],
"label": "person",
"role": "player",
"shirt_color": "white"
},
{
"point_2d": [
787,
347
],
"label": "person",
"role": "player",
"shirt_color": "white"
},
{
"point_2d": [
822,
252
],
"label": "person",
"role": "player",
"shirt_color": "blue"
},
{
"point_2d": [
759,
587
],
"label": "person",
"role": "player",
"shirt_color": "red"
},
{
"point_2d": [
979,
642
],
"label": "person",
"role": "player",
"shirt_color": "white"
}
]
}
4. Specific Object Detection by Description
Find specific objects using natural language descriptions.
[12]
{
"detections": [
{
"bbox_2d": [
653,
232,
727,
259
],
"label": "air vent",
"type": "ceiling vent"
}
]
}
Image size: (640, 480)
[ ]