odinw_text_only_train.yaml 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591
  1. # @package _global_
  2. defaults:
  3. - _self_
  4. # ============================================================================
  5. # Paths Configuration (Chage this to your own paths)
  6. # ============================================================================
  7. # python sam3/train/train.py -c configs/odinw_text_only.yaml --use-cluster 1 --partition ${PARTITION} --account ${ACCOUNT} --qos ${QoS}
  8. paths:
  9. odinw_data_root: <YOUR_DATA_DIR>
  10. experiment_log_dir: <YOUR EXPERIMENET LOG_DIR>
  11. bpe_path: <BPE_PATH> # This should be under sam3/assets/bpe_simple_vocab_16e6.txt.gz
  12. odinw_train:
  13. train_file: fewshot_train_shot10_seed300
  14. num_images: null
  15. supercategory_tuple: ${all_odinw_supercategories.${string:${submitit.job_array.task_index}}}
  16. # Training transforms pipeline
  17. train_transforms:
  18. - _target_: sam3.train.transforms.basic_for_api.ComposeAPI
  19. transforms:
  20. - _target_: sam3.train.transforms.filter_query_transforms.FlexibleFilterFindGetQueries
  21. query_filter:
  22. _target_: sam3.train.transforms.filter_query_transforms.FilterCrowds
  23. - _target_: sam3.train.transforms.point_sampling.RandomizeInputBbox
  24. box_noise_std: 0.1
  25. box_noise_max: 20
  26. - _target_: sam3.train.transforms.segmentation.DecodeRle
  27. - _target_: sam3.train.transforms.basic_for_api.RandomResizeAPI
  28. sizes:
  29. _target_: sam3.train.transforms.basic.get_random_resize_scales
  30. size: ${scratch.resolution}
  31. min_size: 480
  32. rounded: false
  33. max_size:
  34. _target_: sam3.train.transforms.basic.get_random_resize_max_size
  35. size: ${scratch.resolution}
  36. square: true
  37. consistent_transform: ${scratch.consistent_transform}
  38. - _target_: sam3.train.transforms.basic_for_api.PadToSizeAPI
  39. size: ${scratch.resolution}
  40. consistent_transform: ${scratch.consistent_transform}
  41. - _target_: sam3.train.transforms.basic_for_api.ToTensorAPI
  42. - _target_: sam3.train.transforms.filter_query_transforms.FlexibleFilterFindGetQueries
  43. query_filter:
  44. _target_: sam3.train.transforms.filter_query_transforms.FilterEmptyTargets
  45. - _target_: sam3.train.transforms.basic_for_api.NormalizeAPI
  46. mean: ${scratch.train_norm_mean}
  47. std: ${scratch.train_norm_std}
  48. - _target_: sam3.train.transforms.filter_query_transforms.FlexibleFilterFindGetQueries
  49. query_filter:
  50. _target_: sam3.train.transforms.filter_query_transforms.FilterEmptyTargets
  51. - _target_: sam3.train.transforms.filter_query_transforms.FlexibleFilterFindGetQueries
  52. query_filter:
  53. _target_: sam3.train.transforms.filter_query_transforms.FilterFindQueriesWithTooManyOut
  54. max_num_objects: ${scratch.max_ann_per_img}
  55. # Validation transforms pipeline
  56. val_transforms:
  57. - _target_: sam3.train.transforms.basic_for_api.ComposeAPI
  58. transforms:
  59. - _target_: sam3.train.transforms.basic_for_api.RandomResizeAPI
  60. sizes: ${scratch.resolution}
  61. max_size:
  62. _target_: sam3.train.transforms.basic.get_random_resize_max_size
  63. size: ${scratch.resolution}
  64. square: true
  65. consistent_transform: False
  66. - _target_: sam3.train.transforms.basic_for_api.ToTensorAPI
  67. - _target_: sam3.train.transforms.basic_for_api.NormalizeAPI
  68. mean: ${scratch.val_norm_mean}
  69. std: ${scratch.val_norm_std}
  70. # loss config (no mask loss)
  71. loss:
  72. _target_: sam3.train.loss.sam3_loss.Sam3LossWrapper
  73. matcher: ${scratch.matcher}
  74. o2m_weight: 2.0
  75. o2m_matcher:
  76. _target_: sam3.train.matcher.BinaryOneToManyMatcher
  77. alpha: 0.3
  78. threshold: 0.4
  79. topk: 4
  80. use_o2m_matcher_on_o2m_aux: ${scratch.use_o2m_matcher_on_o2m_aux}
  81. loss_fns_find:
  82. - _target_: sam3.train.loss.loss_fns.Boxes
  83. weight_dict:
  84. loss_bbox: 5.0
  85. loss_giou: 2.0
  86. - _target_: sam3.train.loss.loss_fns.IABCEMdetr
  87. weak_loss: False
  88. weight_dict:
  89. loss_ce: ${scratch.loss_ce_weight} # Change
  90. presence_loss: ${scratch.presence_weight} # Change
  91. pos_weight: ${scratch.iabce_pos_weight}
  92. alpha: ${scratch.iabce_alpha}
  93. gamma: 2
  94. use_presence: True # Change
  95. pos_focal: ${scratch.iabce_pos_focal}
  96. pad_n_queries: ${scratch.num_queries}
  97. pad_scale_pos: ${scratch.instance_query_loss_pad_scale_pos}
  98. loss_fn_semantic_seg: null
  99. scale_by_find_batch_size: ${scratch.scale_by_find_batch_size}
  100. # ============================================================================
  101. # Different helper parameters and functions
  102. # ============================================================================
  103. scratch:
  104. enable_segmentation: False
  105. use_act_checkpoint_geo_encoder: True
  106. input_geometry_encoder:
  107. _target_: sam3.model.geometry_encoders.SequenceGeometryEncoder
  108. pos_enc: ${scratch.pos_embed}
  109. encode_boxes_as_points: False
  110. points_direct_project: True
  111. points_pool: True
  112. points_pos_enc: True
  113. boxes_direct_project: True
  114. boxes_pool: True
  115. boxes_pos_enc: True
  116. d_model: ${scratch.d_model}
  117. num_layers: 3
  118. use_act_ckpt: ${scratch.use_act_checkpoint_geo_encoder}
  119. layer:
  120. _target_: sam3.model.encoder.TransformerEncoderLayer
  121. activation: "relu"
  122. d_model: ${scratch.d_model}
  123. dim_feedforward: 2048
  124. dropout: ${scratch.encoder_dropout}
  125. pos_enc_at_attn: false
  126. pre_norm: True
  127. pos_enc_at_cross_attn_queries: false
  128. pos_enc_at_cross_attn_keys: true
  129. self_attention:
  130. _target_: sam3.model.attention.MultiheadAttention
  131. attn_type: Vanilla
  132. num_heads: 8
  133. dropout: ${scratch.encoder_dropout}
  134. embed_dim: ${scratch.d_model}
  135. batch_first: False
  136. cross_attention:
  137. _target_: sam3.model.attention.MultiheadAttention
  138. attn_type: Vanilla
  139. num_heads: 8
  140. dropout: ${scratch.encoder_dropout}
  141. embed_dim: ${scratch.d_model}
  142. batch_first: False
  143. add_cls: true
  144. add_post_encode_proj: True
  145. boxRPB: "log"
  146. dac: True
  147. use_early_fusion: true
  148. o2m_mask: false
  149. num_feature_levels: 1 # > 1 not implemented
  150. encoder_dropout: 0.1
  151. decoder_dropout: 0.1
  152. tokenizer_ve:
  153. _target_: sam3.model.tokenizer_ve.SimpleTokenizer
  154. bpe_path: ${paths.bpe_path}
  155. freeze_text_tower: False
  156. freeze_image_tower: NoFreeze
  157. vis_backbone_dp: 0.0
  158. # Activation checkpointing (Save memory)
  159. use_act_checkpoint_vision_backbone: True
  160. use_act_checkpoint_text_backbone: True
  161. use_act_checkpoint_encoder: True
  162. use_act_checkpoint_decoder: True
  163. loss: null
  164. # Loss parameters
  165. num_queries: 200
  166. presence_weight: 20.0
  167. loss_ce_weight: 20.0
  168. iabce_pos_weight: 5.0
  169. iabce_pos_focal: false
  170. iabce_alpha: 0.25
  171. instance_query_loss_pad_scale_pos: 1.0
  172. use_o2m_matcher_on_o2m_aux: false
  173. # Model parameters
  174. use_instance_query: true
  175. d_model: 256
  176. pos_embed:
  177. _target_: sam3.model.position_encoding.PositionEmbeddingSine
  178. num_pos_feats: ${scratch.d_model}
  179. normalize: true
  180. scale: null
  181. temperature: 10000
  182. # Box processing
  183. use_presence_eval: True
  184. original_box_postprocessor:
  185. _target_: sam3.eval.postprocessors.PostProcessImage
  186. max_dets_per_img: -1 # infinite detections
  187. use_original_ids: true
  188. use_original_sizes_box: true
  189. use_presence: ${scratch.use_presence_eval}
  190. # Matcher configuration
  191. matcher:
  192. _target_: sam3.train.matcher.BinaryHungarianMatcherV2
  193. focal: true
  194. cost_class: 2.0
  195. cost_bbox: 5.0
  196. cost_giou: 2.0
  197. alpha: 0.25
  198. gamma: 2
  199. stable: False
  200. scale_by_find_batch_size: True
  201. # Image processing parameters
  202. resolution: 1008
  203. consistent_transform: False
  204. max_ann_per_img: 200
  205. # Normalization parameters
  206. train_norm_mean: [0.5, 0.5, 0.5]
  207. train_norm_std: [0.5, 0.5, 0.5]
  208. val_norm_mean: [0.5, 0.5, 0.5]
  209. val_norm_std: [0.5, 0.5, 0.5]
  210. # Training parameters
  211. train_batch_size: 1
  212. val_batch_size: 1
  213. num_train_workers: 0
  214. num_val_workers: 0
  215. max_data_epochs: 40
  216. target_epoch_size: 1500
  217. hybrid_repeats: 1
  218. context_length: 2
  219. gather_pred_via_filesys: false
  220. # Learning rate and scheduler parameters
  221. lr_scale: 0.1
  222. lr_transformer: ${times:8e-4,${scratch.lr_scale}}
  223. lr_vision_backbone: ${times:2.5e-4,${scratch.lr_scale}}
  224. lr_language_backbone: ${times:5e-5,${scratch.lr_scale}}
  225. lrd_vision_backbone: 0.9
  226. wd: 0.1
  227. scheduler_timescale: 20
  228. scheduler_warmup: 20
  229. scheduler_cooldown: 20
  230. # ============================================================================
  231. # Trainer Configuration
  232. # ============================================================================
  233. trainer:
  234. _target_: sam3.train.trainer.Trainer
  235. skip_saving_ckpts: true
  236. # _target_: sam3.train.trainer.Trainer
  237. # skip_saving_ckpts: true
  238. empty_gpu_mem_cache_after_eval: True
  239. skip_first_val: True
  240. max_epochs: ${scratch.max_data_epochs}
  241. accelerator: cuda
  242. seed_value: 123
  243. val_epoch_freq: 10
  244. mode: train
  245. distributed:
  246. backend: nccl
  247. find_unused_parameters: True
  248. gradient_as_bucket_view: True
  249. loss:
  250. all: ${odinw_train.loss}
  251. default:
  252. _target_: sam3.train.loss.sam3_loss.DummyLoss
  253. data:
  254. train:
  255. _target_: sam3.train.data.torch_dataset.TorchDataset
  256. dataset:
  257. _target_: sam3.train.data.sam3_image_dataset.Sam3ImageDataset
  258. limit_ids: ${odinw_train.num_images}
  259. transforms: ${odinw_train.train_transforms}
  260. load_segmentation: ${scratch.enable_segmentation}
  261. max_ann_per_img: 500000
  262. multiplier: 1
  263. max_train_queries: 50000
  264. max_val_queries: 50000
  265. training: true
  266. use_caching: False
  267. img_folder: ${paths.odinw_data_root}/${odinw_train.supercategory_tuple.train.img_folder}
  268. ann_file:
  269. _target_: sam3.eval.coco_reindex.reindex_coco_to_temp
  270. input_json_path: ${paths.odinw_data_root}/${odinw_train.supercategory_tuple.train.json}
  271. coco_json_loader:
  272. _target_: sam3.train.data.coco_json_loaders.COCO_FROM_JSON
  273. prompts: ${odinw35_prompts.${odinw_train.supercategory_tuple.name}} #${odinw_train.supercategory_tuple.name)
  274. _partial_: true
  275. shuffle: True
  276. batch_size: ${scratch.train_batch_size}
  277. num_workers: ${scratch.num_train_workers}
  278. pin_memory: False
  279. drop_last: True
  280. collate_fn:
  281. _target_: sam3.train.data.collator.collate_fn_api
  282. _partial_: true
  283. repeats: ${scratch.hybrid_repeats}
  284. dict_key: all
  285. with_seg_masks: ${scratch.enable_segmentation}
  286. val:
  287. _target_: sam3.train.data.torch_dataset.TorchDataset
  288. dataset:
  289. _target_: sam3.train.data.sam3_image_dataset.Sam3ImageDataset
  290. load_segmentation: ${scratch.enable_segmentation}
  291. coco_json_loader:
  292. _target_: sam3.train.data.coco_json_loaders.COCO_FROM_JSON
  293. prompts: ${odinw35_prompts.${odinw_train.supercategory_tuple.name}}
  294. include_negatives: true
  295. category_chunk_size: 20 # Note: Since we are doing AP +ve we need to include all categories!
  296. _partial_: true
  297. img_folder: ${paths.odinw_data_root}/${odinw_train.supercategory_tuple.val.img_folder}
  298. ann_file:
  299. _target_: sam3.eval.coco_reindex.reindex_coco_to_temp
  300. input_json_path: ${paths.odinw_data_root}/${odinw_train.supercategory_tuple.val.json}
  301. transforms: ${odinw_train.val_transforms}
  302. max_ann_per_img: 100000
  303. multiplier: 1
  304. training: false
  305. shuffle: False
  306. batch_size: ${scratch.val_batch_size}
  307. num_workers: ${scratch.num_val_workers}
  308. pin_memory: False
  309. drop_last: False
  310. collate_fn:
  311. _target_: sam3.train.data.collator.collate_fn_api
  312. _partial_: true
  313. repeats: 1
  314. dict_key: odinw35
  315. with_seg_masks: ${scratch.enable_segmentation}
  316. model:
  317. _target_: sam3.model_builder.build_sam3_image_model
  318. bpe_path: ${paths.bpe_path}
  319. device: cpus
  320. eval_mode: false # Set to false if training
  321. enable_segmentation: ${scratch.enable_segmentation} # Warning: Enable this if using segmentation.
  322. meters:
  323. val:
  324. odinw35:
  325. detection:
  326. _target_: sam3.eval.coco_writer.PredictionDumper
  327. iou_type: "bbox"
  328. dump_dir: ${launcher.experiment_log_dir}/dumps/odinw/${odinw_train.supercategory_tuple.name}
  329. merge_predictions: True
  330. postprocessor: ${scratch.original_box_postprocessor}
  331. gather_pred_via_filesys: ${scratch.gather_pred_via_filesys}
  332. maxdets: 100
  333. pred_file_evaluators:
  334. - _target_: sam3.eval.coco_eval_offline.CocoEvaluatorOfflineWithPredFileEvaluators
  335. gt_path:
  336. _target_: sam3.eval.coco_reindex.reindex_coco_to_temp
  337. input_json_path: ${paths.odinw_data_root}/${odinw_train.supercategory_tuple.val.json}
  338. tide: False
  339. iou_type: "bbox"
  340. positive_split: False
  341. optim:
  342. amp:
  343. enabled: True
  344. amp_dtype: bfloat16
  345. optimizer:
  346. _target_: torch.optim.AdamW
  347. gradient_clip:
  348. _target_: sam3.train.optim.optimizer.GradientClipper
  349. max_norm: 0.1
  350. norm_type: 2
  351. param_group_modifiers:
  352. - _target_: sam3.train.optim.optimizer.layer_decay_param_modifier
  353. _partial_: True
  354. layer_decay_value: ${scratch.lrd_vision_backbone}
  355. apply_to: 'backbone.vision_backbone.trunk'
  356. overrides:
  357. - pattern: '*pos_embed*'
  358. value: 1.0
  359. options:
  360. lr:
  361. - scheduler: # transformer and class_embed
  362. _target_: sam3.train.optim.schedulers.InverseSquareRootParamScheduler
  363. base_lr: ${scratch.lr_transformer}
  364. timescale: ${scratch.scheduler_timescale}
  365. warmup_steps: ${scratch.scheduler_warmup}
  366. cooldown_steps: ${scratch.scheduler_cooldown}
  367. - scheduler:
  368. _target_: sam3.train.optim.schedulers.InverseSquareRootParamScheduler
  369. base_lr: ${scratch.lr_vision_backbone}
  370. timescale: ${scratch.scheduler_timescale}
  371. warmup_steps: ${scratch.scheduler_warmup}
  372. cooldown_steps: ${scratch.scheduler_cooldown}
  373. param_names:
  374. - 'backbone.vision_backbone.*'
  375. - scheduler:
  376. _target_: sam3.train.optim.schedulers.InverseSquareRootParamScheduler
  377. base_lr: ${scratch.lr_language_backbone}
  378. timescale: ${scratch.scheduler_timescale}
  379. warmup_steps: ${scratch.scheduler_warmup}
  380. cooldown_steps: ${scratch.scheduler_cooldown}
  381. param_names:
  382. - 'backbone.language_backbone.*'
  383. weight_decay:
  384. - scheduler:
  385. _target_: fvcore.common.param_scheduler.ConstantParamScheduler
  386. value: ${scratch.wd}
  387. - scheduler:
  388. _target_: fvcore.common.param_scheduler.ConstantParamScheduler
  389. value: 0.0
  390. param_names:
  391. - '*bias*'
  392. module_cls_names: ['torch.nn.LayerNorm']
  393. checkpoint:
  394. save_dir: ${launcher.experiment_log_dir}/checkpoints
  395. save_freq: 0 # 0 only last checkpoint is saved.
  396. logging:
  397. tensorboard_writer:
  398. _target_: sam3.train.utils.logger.make_tensorboard_logger
  399. log_dir: ${launcher.experiment_log_dir}/tensorboard
  400. flush_secs: 120
  401. should_log: True
  402. wandb_writer: null
  403. log_dir: ${launcher.experiment_log_dir}/logs/${odinw_train.supercategory_tuple.name}
  404. log_freq: 10
  405. # ============================================================================
  406. # Launcher and Submitit Configuration
  407. # ============================================================================
  408. launcher:
  409. num_nodes: 1
  410. gpus_per_node: 2
  411. experiment_log_dir: null #${paths.experiment_log_dir}
  412. multiprocessing_context: forkserver
  413. submitit:
  414. account: null
  415. partition: null
  416. qos: null
  417. timeout_hour: 72
  418. use_cluster: True
  419. cpus_per_task: 10
  420. port_range: [10000, 65000]
  421. constraint: null
  422. # task_index: 2
  423. # Uncomment for job array configuration
  424. job_array:
  425. num_tasks: 13
  426. task_index: 0
  427. # ============================================================================
  428. # ODinW13 Supercategories
  429. # ============================================================================
  430. all_odinw_supercategories:
  431. - name: AerialMaritimeDrone_large
  432. val:
  433. img_folder: AerialMaritimeDrone/large/test/
  434. json: AerialMaritimeDrone/large/test/annotations_without_background.json
  435. train:
  436. img_folder: AerialMaritimeDrone/large/train/
  437. json: AerialMaritimeDrone/large/train/${odinw_train.train_file}.json
  438. - name: Aquarium
  439. val:
  440. img_folder: Aquarium/Aquarium Combined.v2-raw-1024.coco/test/
  441. json: Aquarium/Aquarium Combined.v2-raw-1024.coco/test/annotations_without_background.json
  442. train:
  443. img_folder: Aquarium/Aquarium Combined.v2-raw-1024.coco/train/
  444. json: Aquarium/Aquarium Combined.v2-raw-1024.coco/train/${odinw_train.train_file}.json
  445. - name: CottontailRabbits
  446. val:
  447. img_folder: CottontailRabbits/test/
  448. json: CottontailRabbits/test/annotations_without_background.json
  449. train:
  450. img_folder: CottontailRabbits/train/
  451. json: CottontailRabbits/train/${odinw_train.train_file}.json
  452. - name: EgoHands_generic
  453. val:
  454. img_folder: EgoHands/generic/test/
  455. json: EgoHands/generic/test/annotations_without_background.json
  456. train:
  457. img_folder: EgoHands/generic/train/
  458. json: EgoHands/generic/train/${odinw_train.train_file}.json
  459. - name: NorthAmericaMushrooms
  460. val:
  461. img_folder: NorthAmericaMushrooms/North American Mushrooms.v1-416x416.coco/test/
  462. json: NorthAmericaMushrooms/North American Mushrooms.v1-416x416.coco/test/annotations_without_background.json
  463. train:
  464. img_folder: NorthAmericaMushrooms/North American Mushrooms.v1-416x416.coco/train/
  465. json: NorthAmericaMushrooms/North American Mushrooms.v1-416x416.coco/train/${odinw_train.train_file}.json
  466. - name: Packages
  467. val:
  468. img_folder: Packages/Raw/test/
  469. json: Packages/Raw/test/annotations_without_background.json
  470. train:
  471. img_folder: Packages/Raw/train/
  472. json: Packages/Raw/train/${odinw_train.train_file}.json
  473. - name: PascalVOC
  474. val:
  475. img_folder: PascalVOC/valid/
  476. json: PascalVOC/valid/annotations_without_background.json
  477. train:
  478. img_folder: PascalVOC/train/
  479. json: PascalVOC/train/${odinw_train.train_file}.json
  480. - name: Raccoon
  481. val:
  482. img_folder: Raccoon/Raccoon.v2-raw.coco/test/
  483. json: Raccoon/Raccoon.v2-raw.coco/test/annotations_without_background.json
  484. train:
  485. img_folder: Raccoon/Raccoon.v2-raw.coco/train/
  486. json: Raccoon/Raccoon.v2-raw.coco/train/${odinw_train.train_file}.json
  487. - name: ShellfishOpenImages
  488. val:
  489. img_folder: ShellfishOpenImages/raw/test/
  490. json: ShellfishOpenImages/raw/test/annotations_without_background.json
  491. train:
  492. img_folder: ShellfishOpenImages/raw/train/
  493. json: ShellfishOpenImages/raw/train/${odinw_train.train_file}.json
  494. - name: VehiclesOpenImages
  495. val:
  496. img_folder: VehiclesOpenImages/416x416/test/
  497. json: VehiclesOpenImages/416x416/test/annotations_without_background.json
  498. train:
  499. img_folder: VehiclesOpenImages/416x416/train/
  500. json: VehiclesOpenImages/416x416/train/${odinw_train.train_file}.json
  501. - name: pistols
  502. val:
  503. img_folder: pistols/export/
  504. json: pistols/export/test_annotations_without_background.json
  505. train:
  506. img_folder: pistols/export/
  507. json: pistols/export/${odinw_train.train_file}.json
  508. - name: pothole
  509. val:
  510. img_folder: pothole/test/
  511. json: pothole/test/annotations_without_background.json
  512. train:
  513. img_folder: pothole/train/
  514. json: pothole/train/${odinw_train.train_file}.json
  515. - name: thermalDogsAndPeople
  516. val:
  517. img_folder: thermalDogsAndPeople/test/
  518. json: thermalDogsAndPeople/test/annotations_without_background.json
  519. train:
  520. img_folder: thermalDogsAndPeople/train/
  521. json: thermalDogsAndPeople/train/${odinw_train.train_file}.json
  522. odinw35_prompts:
  523. AerialMaritimeDrone_large: '[{"id": 1, "name": "boat", "supercategory": "movable-objects"},
  524. {"id": 2, "name": "car", "supercategory": "movable-objects"}, {"id": 3, "name": "dock",
  525. "supercategory": "movable-objects"}, {"id": 4, "name": "jet ski", "supercategory": "movable-objects"},
  526. {"id": 5, "name": "boat lift", "supercategory": "movable-objects"}]'
  527. Aquarium: null
  528. CottontailRabbits: null
  529. EgoHands_generic: null
  530. NorthAmericaMushrooms: '[{''id'': 1, ''name'':
  531. ''chicken of the woods'', ''supercategory'': ''mushroom''}, {''id'': 2, ''name'': ''chanterelle'', ''supercategory'': ''mushroom''}]'
  532. Packages: null
  533. PascalVOC: null
  534. Raccoon: null
  535. ShellfishOpenImages: null
  536. VehiclesOpenImages: null
  537. pistols: null
  538. pothole: null
  539. thermalDogsAndPeople: null