evals-lab 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/LICENSE.md +57 -0
  2. package/README.md +98 -0
  3. package/bin/evals-lab.js +196 -0
  4. package/lab/demo/CREDITS.md +92 -0
  5. package/lab/demo/datasets/demo-1.json +1839 -0
  6. package/lab/demo/datasets/demo-2.json +1683 -0
  7. package/lab/demo/manifest.json +12 -0
  8. package/lab/demo/pipelines/demo-1.json +104 -0
  9. package/lab/demo/pipelines/demo-2.json +104 -0
  10. package/lab/demo/sources/Demo 1/basketball-hoop.jpg +0 -0
  11. package/lab/demo/sources/Demo 1/blue-boardwalk.jpg +0 -0
  12. package/lab/demo/sources/Demo 1/busy-beach.jpg +0 -0
  13. package/lab/demo/sources/Demo 1/butcher-sign.jpg +0 -0
  14. package/lab/demo/sources/Demo 1/cactus-flower.jpg +0 -0
  15. package/lab/demo/sources/Demo 1/corner-shop.jpg +0 -0
  16. package/lab/demo/sources/Demo 1/crosswalk-cyclist-panorama.jpg +0 -0
  17. package/lab/demo/sources/Demo 1/cyanotype-room.jpg +0 -0
  18. package/lab/demo/sources/Demo 1/dead-end-sign.jpg +0 -0
  19. package/lab/demo/sources/Demo 1/dog-in-snow.jpg +0 -0
  20. package/lab/demo/sources/Demo 1/empty-bedroom.jpg +0 -0
  21. package/lab/demo/sources/Demo 1/farmers-market-stall.jpg +0 -0
  22. package/lab/demo/sources/Demo 1/four-jets.jpg +0 -0
  23. package/lab/demo/sources/Demo 1/german-shepherd.jpg +0 -0
  24. package/lab/demo/sources/Demo 1/harbour-bridge-dusk.jpg +0 -0
  25. package/lab/demo/sources/Demo 1/harrow-on-the-hill-sign.jpg +0 -0
  26. package/lab/demo/sources/Demo 1/hong-kong-street.jpg +0 -0
  27. package/lab/demo/sources/Demo 1/house-salisbury-street.jpg +0 -0
  28. package/lab/demo/sources/Demo 1/infrared-orchard.jpg +0 -0
  29. package/lab/demo/sources/Demo 1/keyboard-desk.jpg +0 -0
  30. package/lab/demo/sources/Demo 1/lighthouse-dunes.jpg +0 -0
  31. package/lab/demo/sources/Demo 1/mountain-lake.jpg +0 -0
  32. package/lab/demo/sources/Demo 1/museum-skeleton.jpg +0 -0
  33. package/lab/demo/sources/Demo 1/music-room.jpg +0 -0
  34. package/lab/demo/sources/Demo 1/old-red-car.jpg +0 -0
  35. package/lab/demo/sources/Demo 1/parked-car-plate.jpg +0 -0
  36. package/lab/demo/sources/Demo 1/phone-and-wallet.png +0 -0
  37. package/lab/demo/sources/Demo 1/phone-box.jpg +0 -0
  38. package/lab/demo/sources/Demo 1/pink-flamingo.jpg +0 -0
  39. package/lab/demo/sources/Demo 1/postcards.jpg +0 -0
  40. package/lab/demo/sources/Demo 1/red-roof-church.jpg +0 -0
  41. package/lab/demo/sources/Demo 1/roadside-mailboxes.jpg +0 -0
  42. package/lab/demo/sources/Demo 1/rodeo.jpg +0 -0
  43. package/lab/demo/sources/Demo 1/running-tap.tif +0 -0
  44. package/lab/demo/sources/Demo 1/snail-on-stem.jpg +0 -0
  45. package/lab/demo/sources/Demo 1/two-horses-field.jpg +0 -0
  46. package/lab/demo/sources/Demo 1/university-sign.jpg +0 -0
  47. package/lab/demo/sources/Demo 1/vegetable-crates.jpg +0 -0
  48. package/lab/demo/sources/Demo 1/watermarked-car.jpg +0 -0
  49. package/lab/demo/sources/Demo 1/watermarked-pills.jpg +0 -0
  50. package/lab/demo/sources/Demo 1/whiteboard-delegate.jpg +0 -0
  51. package/lab/demo/sources/Demo 1/whiteboard-germ-layers.jpg +0 -0
  52. package/lab/demo/sources/Demo 2/aerial-city.jpg +0 -0
  53. package/lab/demo/sources/Demo 2/alligator-pen.jpg +0 -0
  54. package/lab/demo/sources/Demo 2/arm-tattoo.jpg +0 -0
  55. package/lab/demo/sources/Demo 2/bed-and-plant.jpg +0 -0
  56. package/lab/demo/sources/Demo 2/bright-bedroom.jpg +0 -0
  57. package/lab/demo/sources/Demo 2/car-headlight.jpg +0 -0
  58. package/lab/demo/sources/Demo 2/child-in-surf.jpg +0 -0
  59. package/lab/demo/sources/Demo 2/city-highway.jpg +0 -0
  60. package/lab/demo/sources/Demo 2/corner-bakery.jpg +0 -0
  61. package/lab/demo/sources/Demo 2/cyclist-yellow-jacket.jpg +0 -0
  62. package/lab/demo/sources/Demo 2/excavator-street-signs.jpg +0 -0
  63. package/lab/demo/sources/Demo 2/globe-closeup.jpg +0 -0
  64. package/lab/demo/sources/Demo 2/harbour-village.jpg +0 -0
  65. package/lab/demo/sources/Demo 2/high-street-walkers.jpg +0 -0
  66. package/lab/demo/sources/Demo 2/hillside-rooftops.jpg +0 -0
  67. package/lab/demo/sources/Demo 2/house-at-night.jpg +0 -0
  68. package/lab/demo/sources/Demo 2/ivy-leaves.jpg +0 -0
  69. package/lab/demo/sources/Demo 2/man-with-alligator.jpg +0 -0
  70. package/lab/demo/sources/Demo 2/orange-mailbox-hedge.jpg +0 -0
  71. package/lab/demo/sources/Demo 2/pedal-boats.jpg +0 -0
  72. package/lab/demo/sources/Demo 2/pink-trees-vignette.jpg +0 -0
  73. package/lab/demo/sources/Demo 2/please-leave-quietly-sign.jpg +0 -0
  74. package/lab/demo/sources/Demo 2/railroad-crossing-sign.jpg +0 -0
  75. package/lab/demo/sources/Demo 2/roadworks-sign.jpg +0 -0
  76. package/lab/demo/sources/Demo 2/roundabout-sign.jpg +0 -0
  77. package/lab/demo/sources/Demo 2/sea-cave.jpg +0 -0
  78. package/lab/demo/sources/Demo 2/shadow-on-sand.jpg +0 -0
  79. package/lab/demo/sources/Demo 2/signpost-a404.jpg +0 -0
  80. package/lab/demo/sources/Demo 2/street-fruit-cart.jpg +0 -0
  81. package/lab/demo/sources/Demo 2/street-sign-parnassusweg.jpg +0 -0
  82. package/lab/demo/sources/Demo 2/two-horses-close.jpg +0 -0
  83. package/lab/demo/sources/Demo 2/victorian-house.jpg +0 -0
  84. package/lab/demo/sources/Demo 2/vintage-dashboard.jpg +0 -0
  85. package/lab/demo/sources/Demo 2/volcano-at-dusk.jpg +0 -0
  86. package/lab/demo/sources/Demo 2/wall-camera.jpg +0 -0
  87. package/lab/demo/sources/Demo 2/watch-for-rocks-sign.jpg +0 -0
  88. package/lab/demo/sources/Demo 2/waterfall.jpg +0 -0
  89. package/lab/demo/sources/Demo 2/white-domes.jpg +0 -0
  90. package/lab/demo/sources/Demo 2/whiteboard-meeting-notes.jpg +0 -0
  91. package/lab/demo/sources/Demo 2/whiteboard-messages.jpg +0 -0
  92. package/lab/demo/sources/Demo 2/wooden-house-fence.jpg +0 -0
  93. package/lab/evals-core.mjs +4526 -0
  94. package/lab/flows/wdl.mjs +373 -0
  95. package/lab/js-yaml.mjs +3851 -0
  96. package/lab/kinds/list.mjs +411 -0
  97. package/lab/metrics/builtin.mjs +353 -0
  98. package/lab/presets.json +62 -0
  99. package/lab/run-evals.js +1262 -0
  100. package/lab/server.py +5044 -0
  101. package/lab/web/dist/assets/dist-DI3ewZYj.js +1 -0
  102. package/lab/web/dist/assets/gallery-DipkRvqJ.js +3 -0
  103. package/lab/web/dist/assets/gallery-o7c4lfpn.css +1 -0
  104. package/lab/web/dist/assets/main-CpVssvrb.js +18 -0
  105. package/lab/web/dist/assets/main-DjQQums6.css +1 -0
  106. package/lab/web/dist/assets/tokens-B9intIuT.js +51 -0
  107. package/lab/web/dist/assets/tokens-s6I-RMVq.css +1 -0
  108. package/lab/web/dist/gallery.html +18 -0
  109. package/lab/web/dist/index.html +23 -0
  110. package/package.json +20 -0
@@ -0,0 +1,1839 @@
1
+ {
2
+ "format": "evals-lab/dataset",
3
+ "version": 4,
4
+ "dataset": {
5
+ "name": "Demo 1",
6
+ "body": {
7
+ "cases": [
8
+ {
9
+ "id": "basketball-hoop",
10
+ "filename": "basketball-hoop.jpg",
11
+ "todo": false,
12
+ "traits": [
13
+ "control",
14
+ "colour"
15
+ ],
16
+ "why": "A single basketball hoop on a green plywood backboard against a pale sky, with the net's shadow on the wall. One clear subject and no ball or players.",
17
+ "expect": [],
18
+ "anyOf": [
19
+ [
20
+ "hoop",
21
+ "basketball",
22
+ "basket",
23
+ "rim"
24
+ ],
25
+ [
26
+ "backboard",
27
+ "board"
28
+ ],
29
+ [
30
+ "wall",
31
+ "plywood",
32
+ "wood"
33
+ ]
34
+ ],
35
+ "forbid": [
36
+ "ball",
37
+ "person"
38
+ ],
39
+ "allow": [],
40
+ "minCount": null,
41
+ "maxCount": null,
42
+ "watch": []
43
+ },
44
+ {
45
+ "id": "blue-boardwalk",
46
+ "filename": "blue-boardwalk.jpg",
47
+ "todo": false,
48
+ "traits": [
49
+ "colour"
50
+ ],
51
+ "why": "A man holding a camera stands on a wooden footbridge in woodland, the whole image washed blue with sun rays. Tests naming the scene through a heavy colour cast.",
52
+ "expect": [],
53
+ "anyOf": [
54
+ [
55
+ "bridge",
56
+ "boardwalk",
57
+ "walkway",
58
+ "footbridge"
59
+ ],
60
+ [
61
+ "person",
62
+ "man"
63
+ ],
64
+ [
65
+ "tree",
66
+ "trees",
67
+ "forest",
68
+ "woods"
69
+ ]
70
+ ],
71
+ "forbid": [
72
+ "car",
73
+ "dog"
74
+ ],
75
+ "allow": [],
76
+ "minCount": null,
77
+ "maxCount": null,
78
+ "watch": []
79
+ },
80
+ {
81
+ "id": "busy-beach",
82
+ "filename": "busy-beach.jpg",
83
+ "todo": false,
84
+ "traits": [
85
+ "busy",
86
+ "landscape"
87
+ ],
88
+ "why": "A crowded sandy beach under a blue sky, with many people, striped windbreaks, tents and a green headland over turquoise sea. Tests covering a busy scene without inventing things.",
89
+ "expect": [
90
+ "beach"
91
+ ],
92
+ "anyOf": [
93
+ [
94
+ "people",
95
+ "person",
96
+ "crowd",
97
+ "beachgoers",
98
+ "tourists"
99
+ ],
100
+ [
101
+ "sea",
102
+ "ocean",
103
+ "water"
104
+ ],
105
+ [
106
+ "windbreak",
107
+ "windbreaks",
108
+ "tent",
109
+ "tents"
110
+ ]
111
+ ],
112
+ "forbid": [
113
+ "snow",
114
+ "palm"
115
+ ],
116
+ "allow": [],
117
+ "minCount": 3,
118
+ "maxCount": null,
119
+ "watch": []
120
+ },
121
+ {
122
+ "id": "butcher-sign",
123
+ "filename": "butcher-sign.jpg",
124
+ "todo": false,
125
+ "traits": [
126
+ "sign",
127
+ "text"
128
+ ],
129
+ "why": "A white A-frame sidewalk sign reading BUTCHER CUT FRESH MEATS beside an empty road. Tests reading the sign while not inventing meat or traffic.",
130
+ "expect": [
131
+ "sign"
132
+ ],
133
+ "anyOf": [
134
+ [
135
+ "road",
136
+ "street",
137
+ "asphalt",
138
+ "pavement",
139
+ "sidewalk",
140
+ "curb"
141
+ ]
142
+ ],
143
+ "forbid": [
144
+ "car",
145
+ "person"
146
+ ],
147
+ "allow": [],
148
+ "minCount": null,
149
+ "maxCount": null,
150
+ "watch": [
151
+ "butcher",
152
+ "cut",
153
+ "fresh",
154
+ "meats",
155
+ "fresh meats"
156
+ ]
157
+ },
158
+ {
159
+ "id": "cactus-flower",
160
+ "filename": "cactus-flower.jpg",
161
+ "todo": false,
162
+ "traits": [
163
+ "control"
164
+ ],
165
+ "why": "Prickly pear cactus pads with spines and two pink-orange flowers against a flat teal background. One clear subject.",
166
+ "expect": [
167
+ "cactus"
168
+ ],
169
+ "anyOf": [
170
+ [
171
+ "flower",
172
+ "flowers",
173
+ "blossom",
174
+ "blossoms",
175
+ "bloom",
176
+ "blooms"
177
+ ],
178
+ [
179
+ "spines",
180
+ "spikes",
181
+ "thorns",
182
+ "needles"
183
+ ]
184
+ ],
185
+ "forbid": [
186
+ "sand",
187
+ "bee"
188
+ ],
189
+ "allow": [],
190
+ "minCount": null,
191
+ "maxCount": null,
192
+ "watch": []
193
+ },
194
+ {
195
+ "id": "corner-shop",
196
+ "filename": "corner-shop.jpg",
197
+ "todo": false,
198
+ "traits": [
199
+ "sign",
200
+ "text"
201
+ ],
202
+ "why": "A corner discount store with a yellow 99 cent awning and a stocked window, a man with a large plastic bag walking past in hard light. Tests the shop, the awning text and the passer-by.",
203
+ "expect": [],
204
+ "anyOf": [
205
+ [
206
+ "shop",
207
+ "store",
208
+ "storefront",
209
+ "shopfront"
210
+ ],
211
+ [
212
+ "awning",
213
+ "sign",
214
+ "signage"
215
+ ],
216
+ [
217
+ "person",
218
+ "man",
219
+ "pedestrian"
220
+ ]
221
+ ],
222
+ "forbid": [
223
+ "car",
224
+ "dog"
225
+ ],
226
+ "allow": [],
227
+ "minCount": null,
228
+ "maxCount": null,
229
+ "watch": [
230
+ "99¢",
231
+ "& up",
232
+ "gift",
233
+ "toy",
234
+ "hardware",
235
+ "houseware",
236
+ "stationery",
237
+ "cheap & quality",
238
+ "59 4th ave",
239
+ "open"
240
+ ]
241
+ },
242
+ {
243
+ "id": "crosswalk-cyclist-panorama",
244
+ "filename": "crosswalk-cyclist-panorama.jpg",
245
+ "todo": false,
246
+ "traits": [
247
+ "wide",
248
+ "compound"
249
+ ],
250
+ "why": "A very wide strip showing a cyclist crossing a zebra crossing, cropped at the shoulders. Tests an extreme aspect ratio and the multi-word crossing.",
251
+ "expect": [],
252
+ "anyOf": [
253
+ [
254
+ "bicycle",
255
+ "bike",
256
+ "cyclist"
257
+ ],
258
+ [
259
+ "crosswalk",
260
+ "zebra crossing",
261
+ "pedestrian crossing",
262
+ "crossing",
263
+ "road",
264
+ "street",
265
+ "stripes"
266
+ ],
267
+ [
268
+ "person",
269
+ "rider",
270
+ "man"
271
+ ]
272
+ ],
273
+ "forbid": [
274
+ "car",
275
+ "dog"
276
+ ],
277
+ "allow": [],
278
+ "minCount": null,
279
+ "maxCount": null,
280
+ "watch": []
281
+ },
282
+ {
283
+ "id": "cyanotype-room",
284
+ "filename": "cyanotype-room.jpg",
285
+ "todo": false,
286
+ "traits": [
287
+ "monochrome",
288
+ "interior"
289
+ ],
290
+ "why": "An old cyanotype print of a room with glass-fronted cabinets full of scientific instruments, a table and a chair on a mosaic floor. Tests naming the contents through a blue monochrome print with no people.",
291
+ "expect": [],
292
+ "anyOf": [
293
+ [
294
+ "table",
295
+ "desk"
296
+ ],
297
+ [
298
+ "chair"
299
+ ],
300
+ [
301
+ "cabinet",
302
+ "cabinets",
303
+ "shelves",
304
+ "shelf",
305
+ "bookcase",
306
+ "display case"
307
+ ]
308
+ ],
309
+ "forbid": [
310
+ "person",
311
+ "people"
312
+ ],
313
+ "allow": [],
314
+ "minCount": null,
315
+ "maxCount": null,
316
+ "watch": [
317
+ "13403"
318
+ ]
319
+ },
320
+ {
321
+ "id": "dead-end-sign",
322
+ "filename": "dead-end-sign.jpg",
323
+ "todo": false,
324
+ "traits": [
325
+ "sign",
326
+ "text"
327
+ ],
328
+ "why": "A red sign reading STOP DEAD END NO OUTLET TURN AROUND HERE nailed to a wooden utility pole among trees. Tests reading a sign and naming its post.",
329
+ "expect": [
330
+ "sign"
331
+ ],
332
+ "anyOf": [
333
+ [
334
+ "pole",
335
+ "utility pole",
336
+ "telephone pole",
337
+ "post"
338
+ ],
339
+ [
340
+ "tree",
341
+ "trees",
342
+ "forest",
343
+ "woods"
344
+ ]
345
+ ],
346
+ "forbid": [
347
+ "car",
348
+ "person"
349
+ ],
350
+ "allow": [],
351
+ "minCount": null,
352
+ "maxCount": null,
353
+ "watch": [
354
+ "stop",
355
+ "dead end",
356
+ "no outlet",
357
+ "turn around here"
358
+ ]
359
+ },
360
+ {
361
+ "id": "dog-in-snow",
362
+ "filename": "dog-in-snow.jpg",
363
+ "todo": false,
364
+ "traits": [
365
+ "animal",
366
+ "landscape"
367
+ ],
368
+ "why": "A merle dog with a pale blue eye stands in a snowy field at dusk. One animal and an unmistakable setting.",
369
+ "expect": [
370
+ "dog",
371
+ "snow"
372
+ ],
373
+ "anyOf": [
374
+ [
375
+ "field",
376
+ "snowy field",
377
+ "grass",
378
+ "prairie",
379
+ "farmland"
380
+ ]
381
+ ],
382
+ "forbid": [
383
+ "cat",
384
+ "sand"
385
+ ],
386
+ "allow": [],
387
+ "minCount": null,
388
+ "maxCount": null,
389
+ "watch": []
390
+ },
391
+ {
392
+ "id": "empty-bedroom",
393
+ "filename": "empty-bedroom.jpg",
394
+ "todo": false,
395
+ "traits": [
396
+ "interior",
397
+ "empty"
398
+ ],
399
+ "why": "A quiet bedroom: a made bed with pillows and a blanket, a bedside lamp, a window and striped wallpaper, with nobody in it. Easy to pad with a person or a television that is not there.",
400
+ "expect": [
401
+ "bed"
402
+ ],
403
+ "anyOf": [
404
+ [
405
+ "pillow",
406
+ "pillows",
407
+ "cushion",
408
+ "cushions"
409
+ ],
410
+ [
411
+ "window"
412
+ ],
413
+ [
414
+ "lamp",
415
+ "table lamp",
416
+ "bedside lamp"
417
+ ]
418
+ ],
419
+ "forbid": [
420
+ "person",
421
+ "television",
422
+ "cat"
423
+ ],
424
+ "allow": [],
425
+ "minCount": null,
426
+ "maxCount": null,
427
+ "watch": []
428
+ },
429
+ {
430
+ "id": "farmers-market-stall",
431
+ "filename": "farmers-market-stall.jpg",
432
+ "todo": false,
433
+ "traits": [
434
+ "busy",
435
+ "food",
436
+ "sign"
437
+ ],
438
+ "why": "A market stall under white canopies with baskets of squash, zucchini, greens and blueberries, a chalkboard price list and a few people. Tests a busy food scene and a handwritten board.",
439
+ "expect": [],
440
+ "anyOf": [
441
+ [
442
+ "vegetables",
443
+ "vegetable",
444
+ "produce",
445
+ "veggies",
446
+ "squash",
447
+ "zucchini"
448
+ ],
449
+ [
450
+ "tent",
451
+ "tents",
452
+ "canopy",
453
+ "canopies"
454
+ ],
455
+ [
456
+ "chalkboard",
457
+ "blackboard",
458
+ "sign",
459
+ "menu board"
460
+ ],
461
+ [
462
+ "people",
463
+ "person",
464
+ "man",
465
+ "vendor",
466
+ "customer"
467
+ ]
468
+ ],
469
+ "forbid": [
470
+ "meat",
471
+ "fish"
472
+ ],
473
+ "allow": [],
474
+ "minCount": 3,
475
+ "maxCount": null,
476
+ "watch": [
477
+ "greenbrier farms",
478
+ "veggies",
479
+ "per bunch",
480
+ "kale",
481
+ "chard",
482
+ "carrots",
483
+ "blueberries",
484
+ "zucchini",
485
+ "squash",
486
+ "cucumbers",
487
+ "usda organic"
488
+ ]
489
+ },
490
+ {
491
+ "id": "four-jets",
492
+ "filename": "four-jets.jpg",
493
+ "todo": false,
494
+ "traits": [
495
+ "count",
496
+ "vehicle"
497
+ ],
498
+ "why": "Exactly four red and white jets climb in formation against a dark blue sky, trailing white smoke. Tests the aircraft and their trails; the count of four is the point of the image.",
499
+ "expect": [],
500
+ "anyOf": [
501
+ [
502
+ "jet",
503
+ "jets",
504
+ "plane",
505
+ "planes",
506
+ "airplane",
507
+ "airplanes",
508
+ "aircraft"
509
+ ],
510
+ [
511
+ "smoke",
512
+ "trail",
513
+ "trails",
514
+ "contrail",
515
+ "contrails",
516
+ "vapor trail"
517
+ ],
518
+ [
519
+ "sky"
520
+ ]
521
+ ],
522
+ "forbid": [
523
+ "bird",
524
+ "helicopter"
525
+ ],
526
+ "allow": [],
527
+ "minCount": null,
528
+ "maxCount": null,
529
+ "watch": []
530
+ },
531
+ {
532
+ "id": "german-shepherd",
533
+ "filename": "german-shepherd.jpg",
534
+ "todo": false,
535
+ "traits": [
536
+ "animal",
537
+ "control"
538
+ ],
539
+ "why": "A German Shepherd lying on a concrete floor looking at the camera, a blurred chair and table behind. One clear animal subject.",
540
+ "expect": [
541
+ "dog"
542
+ ],
543
+ "anyOf": [
544
+ [
545
+ "floor",
546
+ "concrete",
547
+ "ground"
548
+ ]
549
+ ],
550
+ "forbid": [
551
+ "cat",
552
+ "wolf",
553
+ "person"
554
+ ],
555
+ "allow": [],
556
+ "minCount": null,
557
+ "maxCount": null,
558
+ "watch": []
559
+ },
560
+ {
561
+ "id": "harbour-bridge-dusk",
562
+ "filename": "harbour-bridge-dusk.jpg",
563
+ "todo": false,
564
+ "traits": [
565
+ "landscape"
566
+ ],
567
+ "why": "A steel arch bridge silhouetted over a harbour at dusk, with flags on top and a city skyline and Ferris wheel beyond. Tests the landmark shape and the water.",
568
+ "expect": [
569
+ "bridge"
570
+ ],
571
+ "anyOf": [
572
+ [
573
+ "water",
574
+ "harbour",
575
+ "harbor",
576
+ "river",
577
+ "sea"
578
+ ],
579
+ [
580
+ "city",
581
+ "skyline",
582
+ "buildings",
583
+ "cityscape"
584
+ ],
585
+ [
586
+ "sky",
587
+ "dusk",
588
+ "sunset",
589
+ "evening"
590
+ ]
591
+ ],
592
+ "forbid": [
593
+ "snow",
594
+ "mountain"
595
+ ],
596
+ "allow": [],
597
+ "minCount": null,
598
+ "maxCount": null,
599
+ "watch": []
600
+ },
601
+ {
602
+ "id": "harrow-on-the-hill-sign",
603
+ "filename": "harrow-on-the-hill-sign.jpg",
604
+ "todo": false,
605
+ "traits": [
606
+ "sign",
607
+ "text"
608
+ ],
609
+ "why": "A white arrow-shaped direction sign reading Harrow on the Hill 1, with an Except for access plate above and brick buildings behind. Tests reading a road sign.",
610
+ "expect": [
611
+ "sign"
612
+ ],
613
+ "anyOf": [
614
+ [
615
+ "building",
616
+ "buildings",
617
+ "house",
618
+ "houses",
619
+ "apartment",
620
+ "apartments"
621
+ ],
622
+ [
623
+ "tree",
624
+ "trees",
625
+ "branches"
626
+ ],
627
+ [
628
+ "pole",
629
+ "post",
630
+ "lamp post"
631
+ ]
632
+ ],
633
+ "forbid": [
634
+ "car",
635
+ "person"
636
+ ],
637
+ "allow": [],
638
+ "minCount": null,
639
+ "maxCount": null,
640
+ "watch": [
641
+ "harrow",
642
+ "on the hill",
643
+ "harrow on the hill",
644
+ "except for access"
645
+ ]
646
+ },
647
+ {
648
+ "id": "hong-kong-street",
649
+ "filename": "hong-kong-street.jpg",
650
+ "todo": false,
651
+ "traits": [
652
+ "busy",
653
+ "sign",
654
+ "text"
655
+ ],
656
+ "why": "A Hong Kong street with a tiled mosaic wall reading I love Hong Kong, a Kai Chiu Road street sign, a souvenir shop and several pedestrians. Tests a busy street scene full of text.",
657
+ "expect": [],
658
+ "anyOf": [
659
+ [
660
+ "people",
661
+ "person",
662
+ "pedestrians",
663
+ "pedestrian"
664
+ ],
665
+ [
666
+ "sign",
667
+ "street sign",
668
+ "road sign"
669
+ ],
670
+ [
671
+ "mosaic",
672
+ "mural",
673
+ "tiles",
674
+ "tile",
675
+ "wall art"
676
+ ],
677
+ [
678
+ "shop",
679
+ "store",
680
+ "storefront",
681
+ "souvenir shop"
682
+ ]
683
+ ],
684
+ "forbid": [
685
+ "bicycle",
686
+ "dog"
687
+ ],
688
+ "allow": [],
689
+ "minCount": 3,
690
+ "maxCount": null,
691
+ "watch": [
692
+ "kai chiu road",
693
+ "hong kong",
694
+ "i love hong kong",
695
+ "souvenir",
696
+ "hello from hong kong",
697
+ "disneyland"
698
+ ]
699
+ },
700
+ {
701
+ "id": "house-salisbury-street",
702
+ "filename": "house-salisbury-street.jpg",
703
+ "todo": false,
704
+ "traits": [
705
+ "sign",
706
+ "text"
707
+ ],
708
+ "why": "A cream rendered house with a red front door, sash windows and a small porch, a Salisbury St sign on the wall beside it and a house name plate. Tests the house, its door and the street sign.",
709
+ "expect": [],
710
+ "anyOf": [
711
+ [
712
+ "house",
713
+ "home",
714
+ "building",
715
+ "cottage"
716
+ ],
717
+ [
718
+ "door",
719
+ "red door",
720
+ "front door"
721
+ ],
722
+ [
723
+ "window",
724
+ "windows"
725
+ ],
726
+ [
727
+ "sign",
728
+ "street sign",
729
+ "plaque"
730
+ ]
731
+ ],
732
+ "forbid": [
733
+ "car",
734
+ "person"
735
+ ],
736
+ "allow": [],
737
+ "minCount": null,
738
+ "maxCount": null,
739
+ "watch": [
740
+ "salisbury st",
741
+ "the old house at home",
742
+ "blood"
743
+ ]
744
+ },
745
+ {
746
+ "id": "infrared-orchard",
747
+ "filename": "infrared-orchard.jpg",
748
+ "todo": false,
749
+ "traits": [
750
+ "colour",
751
+ "landscape"
752
+ ],
753
+ "why": "Rows of spreading trees over dry grass, rendered magenta by infrared. The pale ground is easy to misread as snow.",
754
+ "expect": [],
755
+ "anyOf": [
756
+ [
757
+ "tree",
758
+ "trees"
759
+ ],
760
+ [
761
+ "orchard",
762
+ "forest",
763
+ "woods",
764
+ "grove",
765
+ "woodland",
766
+ "park"
767
+ ],
768
+ [
769
+ "grass",
770
+ "field",
771
+ "ground",
772
+ "meadow"
773
+ ]
774
+ ],
775
+ "forbid": [
776
+ "snow",
777
+ "person",
778
+ "building"
779
+ ],
780
+ "allow": [],
781
+ "minCount": null,
782
+ "maxCount": null,
783
+ "watch": []
784
+ },
785
+ {
786
+ "id": "keyboard-desk",
787
+ "filename": "keyboard-desk.jpg",
788
+ "todo": false,
789
+ "traits": [
790
+ "interior",
791
+ "control"
792
+ ],
793
+ "why": "A black and orange mechanical keyboard on a felt desk mat beside two potted succulents, a mouse in the foreground and a monitor stand behind. Tests the main object and the small things around it.",
794
+ "expect": [
795
+ "keyboard"
796
+ ],
797
+ "anyOf": [
798
+ [
799
+ "plant",
800
+ "plants",
801
+ "succulent",
802
+ "succulents",
803
+ "potted plant",
804
+ "cactus"
805
+ ],
806
+ [
807
+ "mouse",
808
+ "computer mouse"
809
+ ],
810
+ [
811
+ "desk",
812
+ "desk mat",
813
+ "mat",
814
+ "table"
815
+ ]
816
+ ],
817
+ "forbid": [
818
+ "laptop",
819
+ "person",
820
+ "coffee"
821
+ ],
822
+ "allow": [],
823
+ "minCount": null,
824
+ "maxCount": null,
825
+ "watch": [
826
+ "enter",
827
+ "backspace",
828
+ "shift",
829
+ "ctrl"
830
+ ]
831
+ },
832
+ {
833
+ "id": "lighthouse-dunes",
834
+ "filename": "lighthouse-dunes.jpg",
835
+ "todo": false,
836
+ "traits": [
837
+ "landscape"
838
+ ],
839
+ "why": "A single brick lighthouse behind grassy sand dunes under a pale sky. Tests naming the one landmark and the dune setting without inventing a sea that is not shown.",
840
+ "expect": [
841
+ "lighthouse"
842
+ ],
843
+ "anyOf": [
844
+ [
845
+ "dune",
846
+ "dunes",
847
+ "sand",
848
+ "sand dune",
849
+ "sand dunes"
850
+ ],
851
+ [
852
+ "grass",
853
+ "grasses",
854
+ "marram grass",
855
+ "beach grass",
856
+ "dune grass"
857
+ ],
858
+ [
859
+ "sky",
860
+ "clouds",
861
+ "cloud"
862
+ ]
863
+ ],
864
+ "forbid": [
865
+ "boat",
866
+ "person",
867
+ "snow"
868
+ ],
869
+ "allow": [],
870
+ "minCount": null,
871
+ "maxCount": null,
872
+ "watch": []
873
+ },
874
+ {
875
+ "id": "mountain-lake",
876
+ "filename": "mountain-lake.jpg",
877
+ "todo": false,
878
+ "traits": [
879
+ "landscape"
880
+ ],
881
+ "why": "A turquoise lake with a small tree-covered island, framed by rocky mountains and pine forest. Tests the core elements of a classic landscape.",
882
+ "expect": [],
883
+ "anyOf": [
884
+ [
885
+ "lake",
886
+ "water",
887
+ "river"
888
+ ],
889
+ [
890
+ "mountain",
891
+ "mountains",
892
+ "mountain range",
893
+ "peaks"
894
+ ],
895
+ [
896
+ "tree",
897
+ "trees",
898
+ "forest",
899
+ "pine",
900
+ "pines",
901
+ "evergreen",
902
+ "evergreens",
903
+ "conifer",
904
+ "conifers",
905
+ "spruce"
906
+ ],
907
+ [
908
+ "island",
909
+ "islet"
910
+ ]
911
+ ],
912
+ "forbid": [
913
+ "boat",
914
+ "person",
915
+ "building"
916
+ ],
917
+ "allow": [],
918
+ "minCount": null,
919
+ "maxCount": null,
920
+ "watch": []
921
+ },
922
+ {
923
+ "id": "museum-skeleton",
924
+ "filename": "museum-skeleton.jpg",
925
+ "todo": false,
926
+ "traits": [
927
+ "monochrome",
928
+ "interior"
929
+ ],
930
+ "why": "An old black-and-white image of a museum hall with a giant ground sloth skeleton on a tree and a glyptodont shell, charts on the walls and display cases. Tests recognising the skeleton and the museum setting in monochrome.",
931
+ "expect": [
932
+ "skeleton"
933
+ ],
934
+ "anyOf": [
935
+ [
936
+ "museum",
937
+ "exhibit",
938
+ "exhibition",
939
+ "gallery",
940
+ "display"
941
+ ],
942
+ [
943
+ "poster",
944
+ "posters",
945
+ "chart",
946
+ "charts",
947
+ "picture",
948
+ "pictures",
949
+ "painting",
950
+ "paintings",
951
+ "frame",
952
+ "frames",
953
+ "illustration",
954
+ "illustrations"
955
+ ],
956
+ [
957
+ "display case",
958
+ "display cases",
959
+ "case",
960
+ "cases",
961
+ "cabinet",
962
+ "cabinets",
963
+ "showcase",
964
+ "showcases",
965
+ "vitrine"
966
+ ]
967
+ ],
968
+ "forbid": [
969
+ "person",
970
+ "people",
971
+ "car"
972
+ ],
973
+ "allow": [],
974
+ "minCount": null,
975
+ "maxCount": null,
976
+ "watch": [
977
+ "ordovician",
978
+ "silurian"
979
+ ]
980
+ },
981
+ {
982
+ "id": "music-room",
983
+ "filename": "music-room.jpg",
984
+ "todo": false,
985
+ "traits": [
986
+ "interior",
987
+ "busy"
988
+ ],
989
+ "why": "A sunlit room with a teal electric guitar on a stand, an amplifier, bookshelves full of books, a music stand, effects pedals and a houseplant. Tests listing several distinct objects in an everyday interior.",
990
+ "expect": [
991
+ "guitar"
992
+ ],
993
+ "anyOf": [
994
+ [
995
+ "book",
996
+ "books",
997
+ "bookshelf",
998
+ "bookshelves",
999
+ "bookcase",
1000
+ "bookcases"
1001
+ ],
1002
+ [
1003
+ "amplifier",
1004
+ "amp",
1005
+ "speaker",
1006
+ "guitar amp"
1007
+ ],
1008
+ [
1009
+ "music stand",
1010
+ "stand",
1011
+ "sheet music"
1012
+ ]
1013
+ ],
1014
+ "forbid": [
1015
+ "piano",
1016
+ "drum",
1017
+ "drums"
1018
+ ],
1019
+ "allow": [],
1020
+ "minCount": 3,
1021
+ "maxCount": null,
1022
+ "watch": [
1023
+ "fender",
1024
+ "the times atlas of the world",
1025
+ "lore of running",
1026
+ "history of the world"
1027
+ ]
1028
+ },
1029
+ {
1030
+ "id": "old-red-car",
1031
+ "filename": "old-red-car.jpg",
1032
+ "todo": false,
1033
+ "traits": [
1034
+ "vehicle"
1035
+ ],
1036
+ "why": "A rusty old red-orange sedan with a flat tyre and a mismatched door, parked on a street before an iron fence, flowering trees and an apartment block. Tests naming the car and its setting.",
1037
+ "expect": [
1038
+ "car"
1039
+ ],
1040
+ "anyOf": [
1041
+ [
1042
+ "tree",
1043
+ "trees",
1044
+ "flowering tree",
1045
+ "dogwood"
1046
+ ],
1047
+ [
1048
+ "fence",
1049
+ "iron fence",
1050
+ "railing",
1051
+ "railings"
1052
+ ],
1053
+ [
1054
+ "building",
1055
+ "apartment",
1056
+ "apartments",
1057
+ "apartment building",
1058
+ "house"
1059
+ ],
1060
+ [
1061
+ "street",
1062
+ "road"
1063
+ ]
1064
+ ],
1065
+ "forbid": [
1066
+ "person",
1067
+ "truck",
1068
+ "bicycle"
1069
+ ],
1070
+ "allow": [],
1071
+ "minCount": null,
1072
+ "maxCount": null,
1073
+ "watch": []
1074
+ },
1075
+ {
1076
+ "id": "parked-car-plate",
1077
+ "filename": "parked-car-plate.jpg",
1078
+ "todo": false,
1079
+ "traits": [
1080
+ "vehicle",
1081
+ "plate"
1082
+ ],
1083
+ "why": "The rear of a grey saloon car in a parking lot, with a readable French registration plate, trees and apartment buildings behind. Tests naming the car and plate without inventing people in the foreground.",
1084
+ "expect": [
1085
+ "car"
1086
+ ],
1087
+ "anyOf": [
1088
+ [
1089
+ "license plate",
1090
+ "licence plate",
1091
+ "number plate",
1092
+ "registration plate",
1093
+ "plate"
1094
+ ],
1095
+ [
1096
+ "tree",
1097
+ "trees",
1098
+ "bush",
1099
+ "bushes",
1100
+ "shrub",
1101
+ "shrubs"
1102
+ ],
1103
+ [
1104
+ "parking lot",
1105
+ "parking",
1106
+ "car park",
1107
+ "parking space",
1108
+ "asphalt"
1109
+ ]
1110
+ ],
1111
+ "forbid": [
1112
+ "truck",
1113
+ "motorcycle",
1114
+ "bus"
1115
+ ],
1116
+ "allow": [],
1117
+ "minCount": null,
1118
+ "maxCount": null,
1119
+ "watch": [
1120
+ "gg-190-hx",
1121
+ "gg 190 hx",
1122
+ "subaru",
1123
+ "legacy"
1124
+ ]
1125
+ },
1126
+ {
1127
+ "id": "phone-and-wallet",
1128
+ "filename": "phone-and-wallet.png",
1129
+ "todo": false,
1130
+ "traits": [
1131
+ "control",
1132
+ "png"
1133
+ ],
1134
+ "why": "A smartphone seen from the back with a black leather card wallet attached, on a plain white background. Tests a simple two-object product image without padding.",
1135
+ "expect": [
1136
+ "phone"
1137
+ ],
1138
+ "anyOf": [
1139
+ [
1140
+ "wallet",
1141
+ "card holder",
1142
+ "card wallet",
1143
+ "cardholder",
1144
+ "case"
1145
+ ],
1146
+ [
1147
+ "white background",
1148
+ "background",
1149
+ "surface",
1150
+ "table"
1151
+ ]
1152
+ ],
1153
+ "forbid": [
1154
+ "keys",
1155
+ "laptop",
1156
+ "hand"
1157
+ ],
1158
+ "allow": [],
1159
+ "minCount": null,
1160
+ "maxCount": 8,
1161
+ "watch": []
1162
+ },
1163
+ {
1164
+ "id": "phone-box",
1165
+ "filename": "phone-box.jpg",
1166
+ "todo": false,
1167
+ "traits": [
1168
+ "compound",
1169
+ "sign",
1170
+ "colour"
1171
+ ],
1172
+ "why": "A red telephone box, signed 'telephone', standing on a brick waterfront promenade with a marina and palm trees behind. Tests the multi-word subject 'phone box' in its common spellings.",
1173
+ "expect": [],
1174
+ "anyOf": [
1175
+ [
1176
+ "phone box",
1177
+ "telephone box",
1178
+ "phone booth",
1179
+ "telephone booth",
1180
+ "telephone kiosk",
1181
+ "phone kiosk",
1182
+ "call box"
1183
+ ],
1184
+ [
1185
+ "water",
1186
+ "marina",
1187
+ "harbor",
1188
+ "harbour",
1189
+ "lake",
1190
+ "dock",
1191
+ "docks",
1192
+ "pier"
1193
+ ],
1194
+ [
1195
+ "pavement",
1196
+ "promenade",
1197
+ "walkway",
1198
+ "brick",
1199
+ "bricks",
1200
+ "paving",
1201
+ "boardwalk"
1202
+ ],
1203
+ [
1204
+ "sky",
1205
+ "blue sky"
1206
+ ]
1207
+ ],
1208
+ "forbid": [
1209
+ "person",
1210
+ "car"
1211
+ ],
1212
+ "allow": [],
1213
+ "minCount": null,
1214
+ "maxCount": null,
1215
+ "watch": [
1216
+ "telephone"
1217
+ ]
1218
+ },
1219
+ {
1220
+ "id": "pink-flamingo",
1221
+ "filename": "pink-flamingo.jpg",
1222
+ "todo": false,
1223
+ "traits": [
1224
+ "colour"
1225
+ ],
1226
+ "why": "A large pink concrete flamingo statue beside a marsh with tall grass, power lines and palms, in an old colour slide with a black border. Tests naming the flamingo whether or not the model sees it is a statue.",
1227
+ "expect": [
1228
+ "flamingo"
1229
+ ],
1230
+ "anyOf": [
1231
+ [
1232
+ "grass",
1233
+ "grasses",
1234
+ "reeds",
1235
+ "marsh",
1236
+ "wetland",
1237
+ "swamp",
1238
+ "vegetation"
1239
+ ],
1240
+ [
1241
+ "sky",
1242
+ "blue sky"
1243
+ ],
1244
+ [
1245
+ "statue",
1246
+ "sculpture",
1247
+ "figure",
1248
+ "lawn ornament",
1249
+ "ornament"
1250
+ ]
1251
+ ],
1252
+ "forbid": [
1253
+ "person",
1254
+ "car",
1255
+ "snow"
1256
+ ],
1257
+ "allow": [],
1258
+ "minCount": null,
1259
+ "maxCount": null,
1260
+ "watch": []
1261
+ },
1262
+ {
1263
+ "id": "postcards",
1264
+ "filename": "postcards.jpg",
1265
+ "todo": false,
1266
+ "traits": [
1267
+ "document",
1268
+ "handwriting",
1269
+ "text"
1270
+ ],
1271
+ "why": "Several antique postcards laid out overlapping: handwritten addresses, stamps, postmarks and printed coastal and bridge scenes. Tests naming the postcards and their parts, with much text a model may echo.",
1272
+ "expect": [
1273
+ "postcard"
1274
+ ],
1275
+ "anyOf": [
1276
+ [
1277
+ "stamp",
1278
+ "stamps",
1279
+ "postage stamp",
1280
+ "postmark",
1281
+ "postmarks"
1282
+ ],
1283
+ [
1284
+ "handwriting",
1285
+ "writing",
1286
+ "script",
1287
+ "address",
1288
+ "handwritten"
1289
+ ],
1290
+ [
1291
+ "bridge",
1292
+ "landscape",
1293
+ "coast",
1294
+ "water",
1295
+ "bay"
1296
+ ]
1297
+ ],
1298
+ "forbid": [
1299
+ "envelope",
1300
+ "computer"
1301
+ ],
1302
+ "allow": [],
1303
+ "minCount": null,
1304
+ "maxCount": null,
1305
+ "watch": [
1306
+ "post card",
1307
+ "address",
1308
+ "little narragansett bay",
1309
+ "watch hill",
1310
+ "brooklyn",
1311
+ "1908",
1312
+ "1906",
1313
+ "halfpenny"
1314
+ ]
1315
+ },
1316
+ {
1317
+ "id": "red-roof-church",
1318
+ "filename": "red-roof-church.jpg",
1319
+ "todo": false,
1320
+ "traits": [
1321
+ "landscape",
1322
+ "colour"
1323
+ ],
1324
+ "why": "A white church with a red roof and steeple on a grassy hill, with a brown mountain and clear blue sky behind. Tests naming the church and its setting.",
1325
+ "expect": [
1326
+ "church"
1327
+ ],
1328
+ "anyOf": [
1329
+ [
1330
+ "steeple",
1331
+ "spire",
1332
+ "tower",
1333
+ "bell tower"
1334
+ ],
1335
+ [
1336
+ "mountain",
1337
+ "mountains",
1338
+ "hill",
1339
+ "hills"
1340
+ ],
1341
+ [
1342
+ "sky",
1343
+ "blue sky"
1344
+ ],
1345
+ [
1346
+ "grass",
1347
+ "field",
1348
+ "meadow"
1349
+ ]
1350
+ ],
1351
+ "forbid": [
1352
+ "person",
1353
+ "car",
1354
+ "tree"
1355
+ ],
1356
+ "allow": [],
1357
+ "minCount": null,
1358
+ "maxCount": null,
1359
+ "watch": []
1360
+ },
1361
+ {
1362
+ "id": "roadside-mailboxes",
1363
+ "filename": "roadside-mailboxes.jpg",
1364
+ "todo": false,
1365
+ "traits": [
1366
+ "count",
1367
+ "house-number",
1368
+ "sign"
1369
+ ],
1370
+ "why": "A row of about a dozen varied mailboxes on posts along a roadside curb, including a birdhouse-shaped one, a keg and an old computer case, with pine trees and mountains behind. Tests naming the mailboxes as the subject despite their odd shapes.",
1371
+ "expect": [],
1372
+ "anyOf": [
1373
+ [
1374
+ "mailbox",
1375
+ "mailboxes",
1376
+ "letterbox",
1377
+ "letterboxes",
1378
+ "letter box",
1379
+ "letter boxes",
1380
+ "postbox",
1381
+ "postboxes",
1382
+ "mail box",
1383
+ "mail boxes"
1384
+ ],
1385
+ [
1386
+ "tree",
1387
+ "trees",
1388
+ "pine",
1389
+ "pines",
1390
+ "conifer",
1391
+ "conifers",
1392
+ "evergreen",
1393
+ "evergreens"
1394
+ ],
1395
+ [
1396
+ "road",
1397
+ "street",
1398
+ "curb",
1399
+ "kerb"
1400
+ ],
1401
+ [
1402
+ "post",
1403
+ "posts",
1404
+ "wooden post",
1405
+ "wooden posts"
1406
+ ]
1407
+ ],
1408
+ "forbid": [
1409
+ "person",
1410
+ "car",
1411
+ "dog"
1412
+ ],
1413
+ "allow": [],
1414
+ "minCount": 3,
1415
+ "maxCount": null,
1416
+ "watch": [
1417
+ "hello",
1418
+ "67b",
1419
+ "65c",
1420
+ "alley road"
1421
+ ]
1422
+ },
1423
+ {
1424
+ "id": "rodeo",
1425
+ "filename": "rodeo.jpg",
1426
+ "todo": false,
1427
+ "traits": [
1428
+ "animal",
1429
+ "busy"
1430
+ ],
1431
+ "why": "A bucking bronco kicks up dust as its rider is thrown into the dirt of a rodeo arena, with spectators at the fence and sponsor banners overhead. Tests naming the horse, rider and the rodeo event.",
1432
+ "expect": [
1433
+ "horse"
1434
+ ],
1435
+ "anyOf": [
1436
+ [
1437
+ "rodeo",
1438
+ "bronco",
1439
+ "bucking horse",
1440
+ "bucking bronco",
1441
+ "arena"
1442
+ ],
1443
+ [
1444
+ "rider",
1445
+ "cowboy",
1446
+ "person",
1447
+ "people",
1448
+ "man"
1449
+ ],
1450
+ [
1451
+ "dirt",
1452
+ "dust",
1453
+ "sand",
1454
+ "ground"
1455
+ ]
1456
+ ],
1457
+ "forbid": [
1458
+ "bull",
1459
+ "cow",
1460
+ "car"
1461
+ ],
1462
+ "allow": [
1463
+ "bull riding"
1464
+ ],
1465
+ "minCount": null,
1466
+ "maxCount": null,
1467
+ "watch": [
1468
+ "welk",
1469
+ "excavating",
1470
+ "tito's",
1471
+ "vodka",
1472
+ "jumping horse"
1473
+ ]
1474
+ },
1475
+ {
1476
+ "id": "snail-on-stem",
1477
+ "filename": "snail-on-stem.jpg",
1478
+ "todo": false,
1479
+ "traits": [
1480
+ "animal",
1481
+ "control"
1482
+ ],
1483
+ "why": "A close-up of a small white snail shell with brown spiral markings on a green plant stem, a leaf beside it and a soft blurred background. Tests a single small subject in macro.",
1484
+ "expect": [
1485
+ "snail"
1486
+ ],
1487
+ "anyOf": [
1488
+ [
1489
+ "stem",
1490
+ "plant",
1491
+ "branch",
1492
+ "plant stem"
1493
+ ],
1494
+ [
1495
+ "leaf",
1496
+ "leaves"
1497
+ ]
1498
+ ],
1499
+ "forbid": [
1500
+ "flower",
1501
+ "insect",
1502
+ "slug"
1503
+ ],
1504
+ "allow": [],
1505
+ "minCount": null,
1506
+ "maxCount": 8,
1507
+ "watch": []
1508
+ },
1509
+ {
1510
+ "id": "two-horses-field",
1511
+ "filename": "two-horses-field.jpg",
1512
+ "todo": false,
1513
+ "traits": [
1514
+ "animal",
1515
+ "count"
1516
+ ],
1517
+ "why": "Two chestnut horses with white blazes stand side by side behind a barbed-wire fence in a grassy field, with trees and hills behind. There are exactly two horses.",
1518
+ "expect": [
1519
+ "horse"
1520
+ ],
1521
+ "anyOf": [
1522
+ [
1523
+ "fence",
1524
+ "wire fence",
1525
+ "barbed wire"
1526
+ ],
1527
+ [
1528
+ "field",
1529
+ "grass",
1530
+ "pasture",
1531
+ "meadow"
1532
+ ],
1533
+ [
1534
+ "tree",
1535
+ "trees",
1536
+ "forest"
1537
+ ]
1538
+ ],
1539
+ "forbid": [
1540
+ "cow",
1541
+ "person",
1542
+ "dog"
1543
+ ],
1544
+ "allow": [],
1545
+ "minCount": null,
1546
+ "maxCount": null,
1547
+ "watch": []
1548
+ },
1549
+ {
1550
+ "id": "university-sign",
1551
+ "filename": "university-sign.jpg",
1552
+ "todo": false,
1553
+ "traits": [
1554
+ "sign",
1555
+ "text"
1556
+ ],
1557
+ "why": "A large weathered metal sign reading 'The Ohio State University, Established 1870', with a 'Research Center' plate below, on a lawn before a brick building and trees. Tests naming the sign and reading its words.",
1558
+ "expect": [
1559
+ "sign"
1560
+ ],
1561
+ "anyOf": [
1562
+ [
1563
+ "tree",
1564
+ "trees"
1565
+ ],
1566
+ [
1567
+ "grass",
1568
+ "lawn"
1569
+ ],
1570
+ [
1571
+ "building",
1572
+ "brick building",
1573
+ "campus"
1574
+ ]
1575
+ ],
1576
+ "forbid": [
1577
+ "person",
1578
+ "car",
1579
+ "snow"
1580
+ ],
1581
+ "allow": [],
1582
+ "minCount": null,
1583
+ "maxCount": null,
1584
+ "watch": [
1585
+ "ohio state university",
1586
+ "ohio state",
1587
+ "university",
1588
+ "established 1870",
1589
+ "1870",
1590
+ "research center"
1591
+ ]
1592
+ },
1593
+ {
1594
+ "id": "vegetable-crates",
1595
+ "filename": "vegetable-crates.jpg",
1596
+ "todo": false,
1597
+ "traits": [
1598
+ "food",
1599
+ "busy",
1600
+ "colour"
1601
+ ],
1602
+ "why": "Yellow plastic crates of produce at a stall: tomatoes, limes, carrots, radishes, green beans, chillies, potatoes, green peppers, coconuts, cucumbers, aubergines and cauliflower. Tests listing many different foods.",
1603
+ "expect": [],
1604
+ "anyOf": [
1605
+ [
1606
+ "tomato",
1607
+ "tomatoes"
1608
+ ],
1609
+ [
1610
+ "crate",
1611
+ "crates",
1612
+ "basket",
1613
+ "baskets",
1614
+ "box",
1615
+ "boxes"
1616
+ ],
1617
+ [
1618
+ "potato",
1619
+ "potatoes"
1620
+ ],
1621
+ [
1622
+ "pepper",
1623
+ "peppers",
1624
+ "bell pepper",
1625
+ "bell peppers",
1626
+ "capsicum",
1627
+ "green pepper",
1628
+ "green peppers"
1629
+ ],
1630
+ [
1631
+ "bean",
1632
+ "beans",
1633
+ "green beans",
1634
+ "chili",
1635
+ "chilies",
1636
+ "chillies",
1637
+ "chilli",
1638
+ "chili peppers"
1639
+ ]
1640
+ ],
1641
+ "forbid": [
1642
+ "apple",
1643
+ "apples",
1644
+ "banana"
1645
+ ],
1646
+ "allow": [],
1647
+ "minCount": 3,
1648
+ "maxCount": null,
1649
+ "watch": []
1650
+ },
1651
+ {
1652
+ "id": "watermarked-car",
1653
+ "filename": "watermarked-car.jpg",
1654
+ "todo": false,
1655
+ "traits": [
1656
+ "vehicle",
1657
+ "watermark"
1658
+ ],
1659
+ "why": "A blue 1980s Ford Falcon sedan on a red dirt track by a rocky cutting, with faint security watermark text across it. Tests naming the car without the watermark derailing the answer.",
1660
+ "expect": [
1661
+ "car"
1662
+ ],
1663
+ "anyOf": [
1664
+ [
1665
+ "dirt",
1666
+ "dirt road",
1667
+ "road",
1668
+ "gravel",
1669
+ "track"
1670
+ ],
1671
+ [
1672
+ "rock",
1673
+ "rocks",
1674
+ "hill",
1675
+ "hills",
1676
+ "cliff",
1677
+ "landscape"
1678
+ ]
1679
+ ],
1680
+ "forbid": [
1681
+ "person",
1682
+ "truck",
1683
+ "water"
1684
+ ],
1685
+ "allow": [],
1686
+ "minCount": null,
1687
+ "maxCount": null,
1688
+ "watch": [
1689
+ "falcon",
1690
+ "ford",
1691
+ "watermark",
1692
+ "does not appear on",
1693
+ "when you purchase it"
1694
+ ]
1695
+ },
1696
+ {
1697
+ "id": "watermarked-pills",
1698
+ "filename": "watermarked-pills.jpg",
1699
+ "todo": false,
1700
+ "traits": [
1701
+ "watermark",
1702
+ "control"
1703
+ ],
1704
+ "why": "Two pale round pills, one stamped 'M' and one '30', on the rim of a glass dish against a black background, with a large 'DEA' watermark. Tests naming the pills and whether the watermark text is echoed.",
1705
+ "expect": [],
1706
+ "anyOf": [
1707
+ [
1708
+ "pill",
1709
+ "pills",
1710
+ "tablet",
1711
+ "tablets",
1712
+ "medication",
1713
+ "medicine",
1714
+ "capsule",
1715
+ "capsules"
1716
+ ],
1717
+ [
1718
+ "glass",
1719
+ "dish",
1720
+ "petri dish",
1721
+ "glass dish",
1722
+ "surface"
1723
+ ],
1724
+ [
1725
+ "black background",
1726
+ "background",
1727
+ "dark background"
1728
+ ]
1729
+ ],
1730
+ "forbid": [
1731
+ "bottle",
1732
+ "hand",
1733
+ "syringe"
1734
+ ],
1735
+ "allow": [],
1736
+ "minCount": null,
1737
+ "maxCount": null,
1738
+ "watch": [
1739
+ "dea",
1740
+ "m",
1741
+ "30"
1742
+ ]
1743
+ },
1744
+ {
1745
+ "id": "whiteboard-delegate",
1746
+ "filename": "whiteboard-delegate.jpg",
1747
+ "todo": false,
1748
+ "traits": [
1749
+ "handwriting",
1750
+ "text"
1751
+ ],
1752
+ "why": "A whiteboard with four words handwritten in blue marker as a list: delegate, delay, diminish, delete, with a wavy line below. Tests naming the whiteboard and whether the model reads the words.",
1753
+ "expect": [
1754
+ "whiteboard"
1755
+ ],
1756
+ "anyOf": [
1757
+ [
1758
+ "writing",
1759
+ "handwriting",
1760
+ "text",
1761
+ "words",
1762
+ "list",
1763
+ "marker"
1764
+ ]
1765
+ ],
1766
+ "forbid": [
1767
+ "person",
1768
+ "chalkboard",
1769
+ "blackboard"
1770
+ ],
1771
+ "allow": [],
1772
+ "minCount": null,
1773
+ "maxCount": null,
1774
+ "watch": [
1775
+ "delegate",
1776
+ "delay",
1777
+ "diminish",
1778
+ "delete"
1779
+ ]
1780
+ },
1781
+ {
1782
+ "id": "whiteboard-germ-layers",
1783
+ "filename": "whiteboard-germ-layers.jpg",
1784
+ "todo": false,
1785
+ "traits": [
1786
+ "handwriting",
1787
+ "text",
1788
+ "busy"
1789
+ ],
1790
+ "why": "A whiteboard of biology notes titled 'germ layer derivation', with hand-drawn diagrams of a denticle, a scale, an egg and an embryonic cross section, all labelled. Tests naming the whiteboard and its diagrams amid dense handwriting.",
1791
+ "expect": [
1792
+ "whiteboard"
1793
+ ],
1794
+ "anyOf": [
1795
+ [
1796
+ "diagram",
1797
+ "diagrams",
1798
+ "drawing",
1799
+ "drawings",
1800
+ "sketch",
1801
+ "sketches",
1802
+ "illustration"
1803
+ ],
1804
+ [
1805
+ "writing",
1806
+ "handwriting",
1807
+ "notes",
1808
+ "text",
1809
+ "labels"
1810
+ ]
1811
+ ],
1812
+ "forbid": [
1813
+ "person",
1814
+ "chalkboard",
1815
+ "blackboard"
1816
+ ],
1817
+ "allow": [],
1818
+ "minCount": null,
1819
+ "maxCount": null,
1820
+ "watch": [
1821
+ "germ",
1822
+ "layer",
1823
+ "derivation",
1824
+ "denticle",
1825
+ "enamel",
1826
+ "dentin",
1827
+ "chorion",
1828
+ "allantois",
1829
+ "yolk sac",
1830
+ "amnion",
1831
+ "embryo",
1832
+ "endoderm",
1833
+ "lvl 100"
1834
+ ]
1835
+ }
1836
+ ]
1837
+ }
1838
+ }
1839
+ }