Copy disabled (too large)
Download .txt
Showing preview only (18,419K chars total). Download the full file to get everything.
Repository: facebookresearch/sam3
Branch: main
Commit: 86ed77094094
Files: 224
Total size: 17.5 MB
Directory structure:
gitextract_s8klkb9g/
├── .github/
│ └── workflows/
│ └── format.yml
├── .gitignore
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── MANIFEST.in
├── README.md
├── README_TRAIN.md
├── assets/
│ └── veval/
│ └── toy_gt_and_pred/
│ ├── toy_saco_veval_sav_test_eval_res.json
│ ├── toy_saco_veval_sav_test_gt.json
│ └── toy_saco_veval_sav_test_pred.json
├── examples/
│ ├── saco_gold_silver_eval_example.ipynb
│ ├── saco_gold_silver_vis_example.ipynb
│ ├── saco_veval_eval_example.ipynb
│ ├── saco_veval_vis_example.ipynb
│ ├── sam3_agent.ipynb
│ ├── sam3_for_sam1_task_example.ipynb
│ ├── sam3_for_sam2_video_task_example.ipynb
│ ├── sam3_image_batched_inference.ipynb
│ ├── sam3_image_interactive.ipynb
│ ├── sam3_image_predictor_example.ipynb
│ └── sam3_video_predictor_example.ipynb
├── pyproject.toml
├── sam3/
│ ├── __init__.py
│ ├── agent/
│ │ ├── __init__.py
│ │ ├── agent_core.py
│ │ ├── client_llm.py
│ │ ├── client_sam3.py
│ │ ├── helpers/
│ │ │ ├── __init__.py
│ │ │ ├── boxes.py
│ │ │ ├── color_map.py
│ │ │ ├── keypoints.py
│ │ │ ├── mask_overlap_removal.py
│ │ │ ├── masks.py
│ │ │ ├── memory.py
│ │ │ ├── rle.py
│ │ │ ├── roi_align.py
│ │ │ ├── rotated_boxes.py
│ │ │ ├── som_utils.py
│ │ │ ├── visualizer.py
│ │ │ └── zoom_in.py
│ │ ├── inference.py
│ │ ├── system_prompts/
│ │ │ ├── system_prompt.txt
│ │ │ └── system_prompt_iterative_checking.txt
│ │ └── viz.py
│ ├── eval/
│ │ ├── __init__.py
│ │ ├── cgf1_eval.py
│ │ ├── coco_eval.py
│ │ ├── coco_eval_offline.py
│ │ ├── coco_reindex.py
│ │ ├── coco_writer.py
│ │ ├── conversion_util.py
│ │ ├── demo_eval.py
│ │ ├── hota_eval_toolkit/
│ │ │ ├── __init__.py
│ │ │ ├── run_ytvis_eval.py
│ │ │ └── trackeval/
│ │ │ ├── __init__.py
│ │ │ ├── _timing.py
│ │ │ ├── datasets/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── _base_dataset.py
│ │ │ │ ├── tao_ow.py
│ │ │ │ └── youtube_vis.py
│ │ │ ├── eval.py
│ │ │ ├── metrics/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── _base_metric.py
│ │ │ │ ├── count.py
│ │ │ │ └── hota.py
│ │ │ └── utils.py
│ │ ├── postprocessors.py
│ │ ├── saco_veval_eval.py
│ │ ├── saco_veval_evaluators.py
│ │ ├── teta_eval_toolkit/
│ │ │ ├── __init__.py
│ │ │ ├── _timing.py
│ │ │ ├── config.py
│ │ │ ├── datasets/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── _base_dataset.py
│ │ │ │ ├── coco.py
│ │ │ │ └── tao.py
│ │ │ ├── eval.py
│ │ │ ├── metrics/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── _base_metric.py
│ │ │ │ └── teta.py
│ │ │ └── utils.py
│ │ ├── ytvis_coco_wrapper.py
│ │ └── ytvis_eval.py
│ ├── logger.py
│ ├── model/
│ │ ├── __init__.py
│ │ ├── act_ckpt_utils.py
│ │ ├── box_ops.py
│ │ ├── data_misc.py
│ │ ├── decoder.py
│ │ ├── edt.py
│ │ ├── encoder.py
│ │ ├── geometry_encoders.py
│ │ ├── io_utils.py
│ │ ├── maskformer_segmentation.py
│ │ ├── memory.py
│ │ ├── model_misc.py
│ │ ├── necks.py
│ │ ├── position_encoding.py
│ │ ├── sam1_task_predictor.py
│ │ ├── sam3_image.py
│ │ ├── sam3_image_processor.py
│ │ ├── sam3_tracker_base.py
│ │ ├── sam3_tracker_utils.py
│ │ ├── sam3_tracking_predictor.py
│ │ ├── sam3_video_base.py
│ │ ├── sam3_video_inference.py
│ │ ├── sam3_video_predictor.py
│ │ ├── text_encoder_ve.py
│ │ ├── tokenizer_ve.py
│ │ ├── utils/
│ │ │ ├── __init__.py
│ │ │ ├── misc.py
│ │ │ ├── sam1_utils.py
│ │ │ └── sam2_utils.py
│ │ ├── vitdet.py
│ │ └── vl_combiner.py
│ ├── model_builder.py
│ ├── perflib/
│ │ ├── __init__.py
│ │ ├── associate_det_trk.py
│ │ ├── compile.py
│ │ ├── connected_components.py
│ │ ├── fa3.py
│ │ ├── masks_ops.py
│ │ ├── nms.py
│ │ ├── tests/
│ │ │ ├── assets/
│ │ │ │ └── masks.tiff
│ │ │ └── tests.py
│ │ └── triton/
│ │ ├── connected_components.py
│ │ └── nms.py
│ ├── sam/
│ │ ├── __init__.py
│ │ ├── common.py
│ │ ├── mask_decoder.py
│ │ ├── prompt_encoder.py
│ │ ├── rope.py
│ │ └── transformer.py
│ ├── train/
│ │ ├── __init__.py
│ │ ├── configs/
│ │ │ ├── eval_base.yaml
│ │ │ ├── gold_image_evals/
│ │ │ │ ├── sam3_gold_image_attributes.yaml
│ │ │ │ ├── sam3_gold_image_crowded.yaml
│ │ │ │ ├── sam3_gold_image_fg_food.yaml
│ │ │ │ ├── sam3_gold_image_fg_sports.yaml
│ │ │ │ ├── sam3_gold_image_metaclip_nps.yaml
│ │ │ │ ├── sam3_gold_image_sa1b_nps.yaml
│ │ │ │ └── sam3_gold_image_wiki_common.yaml
│ │ │ ├── odinw13/
│ │ │ │ ├── odinw_text_and_visual.yaml
│ │ │ │ ├── odinw_text_only.yaml
│ │ │ │ ├── odinw_text_only_positive.yaml
│ │ │ │ ├── odinw_text_only_train.yaml
│ │ │ │ └── odinw_visual_only.yaml
│ │ │ ├── roboflow_v100/
│ │ │ │ ├── roboflow_v100_eval.yaml
│ │ │ │ └── roboflow_v100_full_ft_100_images.yaml
│ │ │ ├── saco_video_evals/
│ │ │ │ ├── saco_veval_sav_test.yaml
│ │ │ │ ├── saco_veval_sav_test_noheur.yaml
│ │ │ │ ├── saco_veval_sav_val.yaml
│ │ │ │ ├── saco_veval_sav_val_noheur.yaml
│ │ │ │ ├── saco_veval_smartglasses_test.yaml
│ │ │ │ ├── saco_veval_smartglasses_test_noheur.yaml
│ │ │ │ ├── saco_veval_smartglasses_val.yaml
│ │ │ │ ├── saco_veval_smartglasses_val_noheur.yaml
│ │ │ │ ├── saco_veval_yt1b_test.yaml
│ │ │ │ ├── saco_veval_yt1b_test_noheur.yaml
│ │ │ │ ├── saco_veval_yt1b_val.yaml
│ │ │ │ └── saco_veval_yt1b_val_noheur.yaml
│ │ │ └── silver_image_evals/
│ │ │ ├── sam3_silver_image_bdd100k.yaml
│ │ │ ├── sam3_silver_image_droid.yaml
│ │ │ ├── sam3_silver_image_ego4d.yaml
│ │ │ ├── sam3_silver_image_fathomnet.yaml
│ │ │ ├── sam3_silver_image_food_rec.yaml
│ │ │ ├── sam3_silver_image_geode.yaml
│ │ │ ├── sam3_silver_image_inaturalist.yaml
│ │ │ ├── sam3_silver_image_nga.yaml
│ │ │ ├── sam3_silver_image_sav.yaml
│ │ │ └── sam3_silver_image_yt1b.yaml
│ │ ├── data/
│ │ │ ├── __init__.py
│ │ │ ├── coco_json_loaders.py
│ │ │ ├── collator.py
│ │ │ ├── sam3_image_dataset.py
│ │ │ ├── sam3_video_dataset.py
│ │ │ └── torch_dataset.py
│ │ ├── loss/
│ │ │ ├── __init__.py
│ │ │ ├── loss_fns.py
│ │ │ ├── mask_sampling.py
│ │ │ ├── sam3_loss.py
│ │ │ └── sigmoid_focal_loss.py
│ │ ├── masks_ops.py
│ │ ├── matcher.py
│ │ ├── nms_helper.py
│ │ ├── optim/
│ │ │ ├── __init__.py
│ │ │ ├── optimizer.py
│ │ │ └── schedulers.py
│ │ ├── train.py
│ │ ├── trainer.py
│ │ ├── transforms/
│ │ │ ├── __init__.py
│ │ │ ├── basic.py
│ │ │ ├── basic_for_api.py
│ │ │ ├── filter_query_transforms.py
│ │ │ ├── point_sampling.py
│ │ │ └── segmentation.py
│ │ └── utils/
│ │ ├── __init__.py
│ │ ├── checkpoint_utils.py
│ │ ├── distributed.py
│ │ ├── logger.py
│ │ └── train_utils.py
│ └── visualization_utils.py
└── scripts/
├── eval/
│ ├── gold/
│ │ ├── README.md
│ │ └── eval_sam3.py
│ ├── silver/
│ │ ├── CONFIG_FRAMES.yaml
│ │ ├── README.md
│ │ ├── download_fathomnet.py
│ │ ├── download_inaturalist.py
│ │ ├── download_preprocess_nga.py
│ │ ├── download_videos.py
│ │ ├── extract_frames.py
│ │ ├── fathomnet_image_uuids.json
│ │ ├── inaturalist_image_subset.json
│ │ ├── preprocess_silver_geode_bdd100k_food_rec.py
│ │ └── utils.py
│ ├── standalone_cgf1.py
│ └── veval/
│ ├── README.md
│ ├── __init__.py
│ ├── saco_yt1b_annot_update.py
│ ├── saco_yt1b_downloader.py
│ └── saco_yt1b_frame_prep_util.py
├── extract_odinw_results.py
└── extract_roboflow_vl100_results.py
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/workflows/format.yml
================================================
name: SAM3/ufmt
on:
pull_request:
branches:
- main
jobs:
ufmt_check:
runs-on: ubuntu-latest
steps:
- name: Install ruff-api
run: pip install ruff-api==0.1.0
- name: Check formatting
uses: omnilib/ufmt@action-v1
with:
path: sam3 scripts
python-version: "3.12"
black-version: "24.2.0"
usort-version: "1.0.2"
================================================
FILE: .gitignore
================================================
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
.pytest_cache/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# Jupyter Notebook
.ipynb_checkpoints
*-Copy*.ipynb
# IPython
profile_default/
ipython_config.py
# pyenv
.python-version
# celery beat schedule file
celerybeat-schedule
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/
# PyCharm
.idea/
# VS Code
.vscode/
*.code-workspace
# Model weights and checkpoints
*.pth
*.pt
*.bin
*.ckpt
*.safetensors
weights/
checkpoints/
sam3_logs/
# Data files
*.h5
*.hdf5
*.pkl
*.pickle
*.npy
*.npz
# Logs
logs/
runs/
tensorboard/
# OS specific
.DS_Store
Thumbs.db
# BPE vocabulary files
*.bpe
*.vocab
================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to make participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
## Scope
This Code of Conduct applies within all project spaces, and it also applies when
an individual is representing the project or its community in public spaces.
Examples of representing a project or community include using an official
project e-mail address, posting via an official social media account, or acting
as an appointed representative at an online or offline event. Representation of
a project may be further defined and clarified by project maintainers.
This Code of Conduct also applies outside the project spaces when there is a
reasonable belief that an individual's behavior may have a negative impact on
the project or its community.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at <opensource-conduct@meta.com>. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq
================================================
FILE: CONTRIBUTING.md
================================================
# Contributing to sam3
We want to make contributing to this project as easy and transparent as
possible.
## Pull Requests
We actively welcome your pull requests.
1. Fork the repo and create your branch from `main`.
2. If you've added code that should be tested, add tests.
3. If you've changed APIs, update the documentation.
4. Make sure your code lints.
5. If you haven't already, complete the Contributor License Agreement ("CLA").
## Contributor License Agreement ("CLA")
In order to accept your pull request, we need you to submit a CLA. You only need
to do this once to work on any of Facebook's open source projects.
Complete your CLA here: <https://code.facebook.com/cla>
## Issues
We use GitHub issues to track public bugs. Please ensure your description is
clear and has sufficient instructions to be able to reproduce the issue.
Facebook has a [bounty program](https://www.facebook.com/whitehat/) for the safe
disclosure of security bugs. In those cases, please go through the process
outlined on that page and do not file a public issue.
## License
By contributing to sam3, you agree that your contributions will be licensed
under the LICENSE file in the root directory of this source tree.
================================================
FILE: LICENSE
================================================
SAM License
Last Updated: November 19, 2025
“Agreement” means the terms and conditions for use, reproduction, distribution and modification of the SAM Materials set forth herein.
“SAM Materials” means, collectively, Documentation and the models, software and algorithms, including machine-learning model code, trained model weights, inference-enabling code, training-enabling code, fine-tuning enabling code, and other elements of the foregoing distributed by Meta and made available under this Agreement.
“Documentation” means the specifications, manuals and documentation accompanying
SAM Materials distributed by Meta.
“Licensee” or “you” means you, or your employer or any other person or entity (if you are entering into this Agreement on such person or entity’s behalf), of the age required under applicable laws, rules or regulations to provide legal consent and that has legal authority to bind your employer or such other person or entity if you are entering in this Agreement on their behalf.
“Meta” or “we” means Meta Platforms Ireland Limited (if you are located in or, if you are an entity, your principal place of business is in the EEA or Switzerland) or Meta Platforms, Inc. (if you are located outside of the EEA or Switzerland).
“Sanctions” means any economic or trade sanctions or restrictions administered or enforced by the United States (including the Office of Foreign Assets Control of the U.S. Department of the Treasury (“OFAC”), the U.S. Department of State and the U.S. Department of Commerce), the United Nations, the European Union, or the United Kingdom.
“Trade Controls” means any of the following: Sanctions and applicable export and import controls.
By using or distributing any portion or element of the SAM Materials, you agree to be bound by this Agreement.
1. License Rights and Redistribution.
a. Grant of Rights. You are granted a non-exclusive, worldwide, non-transferable and royalty-free limited license under Meta’s intellectual property or other rights owned by Meta embodied in the SAM Materials to use, reproduce, distribute, copy, create derivative works of, and make modifications to the SAM Materials.
b. Redistribution and Use.
i. Distribution of SAM Materials, and any derivative works thereof, are subject to the terms of this Agreement. If you distribute or make the SAM Materials, or any derivative works thereof, available to a third party, you may only do so under the terms of this Agreement and you shall provide a copy of this Agreement with any such SAM Materials.
ii. If you submit for publication the results of research you perform on, using, or otherwise in connection with SAM Materials, you must acknowledge the use of SAM Materials in your publication.
iii. Your use of the SAM Materials must comply with applicable laws and regulations, including Trade Control Laws and applicable privacy and data protection laws.
iv. Your use of the SAM Materials will not involve or encourage others to reverse engineer, decompile or discover the underlying components of the SAM Materials.
v. You are not the target of Trade Controls and your use of SAM Materials must comply with Trade Controls. You agree not to use, or permit others to use, SAM Materials for any activities subject to the International Traffic in Arms Regulations (ITAR) or end uses prohibited by Trade Controls, including those related to military or warfare purposes, nuclear industries or applications, espionage, or the development or use of guns or illegal weapons.
2. User Support. Your use of the SAM Materials is done at your own discretion; Meta does not process any information nor provide any service in relation to such use. Meta is under no obligation to provide any support services for the SAM Materials. Any support provided is “as is”, “with all faults”, and without warranty of any kind.
3. Disclaimer of Warranty. UNLESS REQUIRED BY APPLICABLE LAW, THE SAM MATERIALS AND ANY OUTPUT AND RESULTS THEREFROM ARE PROVIDED ON AN “AS IS” BASIS, WITHOUT WARRANTIES OF ANY KIND, AND META DISCLAIMS ALL WARRANTIES OF ANY KIND, BOTH EXPRESS AND IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. YOU ARE SOLELY RESPONSIBLE FOR DETERMINING THE APPROPRIATENESS OF USING OR REDISTRIBUTING THE SAM MATERIALS AND ASSUME ANY RISKS ASSOCIATED WITH YOUR USE OF THE SAM MATERIALS AND ANY OUTPUT AND RESULTS.
4. Limitation of Liability. IN NO EVENT WILL META OR ITS AFFILIATES BE LIABLE UNDER ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, TORT, NEGLIGENCE, PRODUCTS LIABILITY, OR OTHERWISE, ARISING OUT OF THIS AGREEMENT, FOR ANY LOST PROFITS OR ANY DIRECT OR INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL, EXEMPLARY OR PUNITIVE DAMAGES, EVEN IF META OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF ANY OF THE FOREGOING.
5. Intellectual Property.
a. Subject to Meta’s ownership of SAM Materials and derivatives made by or for Meta, with respect to any derivative works and modifications of the SAM Materials that are made by you, as between you and Meta, you are and will be the owner of such derivative works and modifications.
b. If you institute litigation or other proceedings against Meta or any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the SAM Materials, outputs or results, or any portion of any of the foregoing, constitutes infringement of intellectual property or other rights owned or licensable by you, then any licenses granted to you under this Agreement shall terminate as of the date such litigation or claim is filed or instituted. You will indemnify and hold harmless Meta from and against any claim by any third party arising out of or related to your use or distribution of the SAM Materials.
6. Term and Termination. The term of this Agreement will commence upon your acceptance of this Agreement or access to the SAM Materials and will continue in full force and effect until terminated in accordance with the terms and conditions herein. Meta may terminate this Agreement if you are in breach of any term or condition of this Agreement. Upon termination of this Agreement, you shall delete and cease use of the SAM Materials. Sections 3, 4 and 7 shall survive the termination of this Agreement.
7. Governing Law and Jurisdiction. This Agreement will be governed and construed under the laws of the State of California without regard to choice of law principles, and the UN Convention on Contracts for the International Sale of Goods does not apply to this Agreement. The courts of California shall have exclusive jurisdiction of any dispute arising out of this Agreement.
8. Modifications and Amendments. Meta may modify this Agreement from time to time; provided that they are similar in spirit to the current version of the Agreement, but may differ in detail to address new problems or concerns. All such changes will be effective immediately. Your continued use of the SAM Materials after any modification to this Agreement constitutes your agreement to such modification. Except as provided in this Agreement, no modification or addition to any provision of this Agreement will be binding unless it is in writing and signed by an authorized representative of both you and Meta.
================================================
FILE: MANIFEST.in
================================================
include LICENSE
include README.md
recursive-include examples *.py
recursive-include examples *.ipynb
recursive-include examples *.md
recursive-include tests *.py
================================================
FILE: README.md
================================================
# SAM 3: Segment Anything with Concepts
Meta Superintelligence Labs
[Nicolas Carion](https://www.nicolascarion.com/)\*,
[Laura Gustafson](https://scholar.google.com/citations?user=c8IpF9gAAAAJ&hl=en)\*,
[Yuan-Ting Hu](https://scholar.google.com/citations?user=E8DVVYQAAAAJ&hl=en)\*,
[Shoubhik Debnath](https://scholar.google.com/citations?user=fb6FOfsAAAAJ&hl=en)\*,
[Ronghang Hu](https://ronghanghu.com/)\*,
[Didac Suris](https://www.didacsuris.com/)\*,
[Chaitanya Ryali](https://scholar.google.com/citations?user=4LWx24UAAAAJ&hl=en)\*,
[Kalyan Vasudev Alwala](https://scholar.google.co.in/citations?user=m34oaWEAAAAJ&hl=en)\*,
[Haitham Khedr](https://hkhedr.com/)\*, Andrew Huang,
[Jie Lei](https://jayleicn.github.io/),
[Tengyu Ma](https://scholar.google.com/citations?user=VeTSl0wAAAAJ&hl=en),
[Baishan Guo](https://scholar.google.com/citations?user=BC5wDu8AAAAJ&hl=en),
Arpit Kalla, [Markus Marks](https://damaggu.github.io/),
[Joseph Greer](https://scholar.google.com/citations?user=guL96CkAAAAJ&hl=en),
Meng Wang, [Peize Sun](https://peizesun.github.io/),
[Roman Rädle](https://scholar.google.com/citations?user=Tpt57v0AAAAJ&hl=en),
[Triantafyllos Afouras](https://www.robots.ox.ac.uk/~afourast/),
[Effrosyni Mavroudi](https://scholar.google.com/citations?user=vYRzGGEAAAAJ&hl=en),
[Katherine Xu](https://k8xu.github.io/)°,
[Tsung-Han Wu](https://patrickthwu.com/)°,
[Yu Zhou](https://yu-bryan-zhou.github.io/)°,
[Liliane Momeni](https://scholar.google.com/citations?user=Lb-KgVYAAAAJ&hl=en)°,
[Rishi Hazra](https://rishihazra.github.io/)°,
[Shuangrui Ding](https://mark12ding.github.io/)°,
[Sagar Vaze](https://sgvaze.github.io/)°,
[Francois Porcher](https://scholar.google.com/citations?user=LgHZ8hUAAAAJ&hl=en)°,
[Feng Li](https://fengli-ust.github.io/)°,
[Siyuan Li](https://siyuanliii.github.io/)°,
[Aishwarya Kamath](https://ashkamath.github.io/)°,
[Ho Kei Cheng](https://hkchengrex.com/)°,
[Piotr Dollar](https://pdollar.github.io/)†,
[Nikhila Ravi](https://nikhilaravi.com/)†,
[Kate Saenko](https://ai.bu.edu/ksaenko.html)†,
[Pengchuan Zhang](https://pzzhang.github.io/pzzhang/)†,
[Christoph Feichtenhofer](https://feichtenhofer.github.io/)†
\* core contributor, ° intern, † project lead, order is random within groups
[[`Paper`](https://ai.meta.com/research/publications/sam-3-segment-anything-with-concepts/)]
[[`Project`](https://ai.meta.com/sam3)]
[[`Demo`](https://segment-anything.com/)]
[[`Blog`](https://ai.meta.com/blog/segment-anything-model-3/)]
[[`BibTeX`](#citing-sam-3)]
 SAM 3 is a unified foundation model for promptable segmentation in images and videos. It can detect, segment, and track objects using text or visual prompts such as points, boxes, and masks. Compared to its predecessor [SAM 2](https://github.com/facebookresearch/sam2), SAM 3 introduces the ability to exhaustively segment all instances of an open-vocabulary concept specified by a short text phrase or exemplars. Unlike prior work, SAM 3 can handle a vastly larger set of open-vocabulary prompts. It achieves 75-80% of human performance on our new [SA-CO benchmark](https://github.com/facebookresearch/sam3?tab=readme-ov-file#sa-co-dataset) which contains 270K unique concepts, over 50 times more than existing benchmarks.
This breakthrough is driven by an innovative data engine that has automatically annotated over 4 million unique concepts, creating the largest high-quality open-vocabulary segmentation dataset to date. In addition, SAM 3 introduces a new model architecture featuring a presence token that improves discrimination between closely related text prompts (e.g., “a player in white” vs. “a player in red”), as well as a decoupled detector–tracker design that minimizes task interference and scales efficiently with data.
<p align="center">
<img src="assets/dog.gif" width=380 />
<img src="assets/player.gif" width=380 />
</p>
## Installation
### Prerequisites
- Python 3.12 or higher
- PyTorch 2.7 or higher
- CUDA-compatible GPU with CUDA 12.6 or higher
1. **Create a new Conda environment:**
```bash
conda create -n sam3 python=3.12
conda deactivate
conda activate sam3
```
2. **Install PyTorch with CUDA support:**
```bash
pip install torch==2.7.0 torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126
```
3. **Clone the repository and install the package:**
```bash
git clone https://github.com/facebookresearch/sam3.git
cd sam3
pip install -e .
```
4. **Install additional dependencies for example notebooks or development:**
```bash
# For running example notebooks
pip install -e ".[notebooks]"
# For development
pip install -e ".[train,dev]"
```
## Getting Started
⚠️ Before using SAM 3, please request access to the checkpoints on the SAM 3
Hugging Face [repo](https://huggingface.co/facebook/sam3). Once accepted, you
need to be authenticated to download the checkpoints. You can do this by running
the following [steps](https://huggingface.co/docs/huggingface_hub/en/quick-start#authentication)
(e.g. `hf auth login` after generating an access token.)
### Basic Usage
```python
import torch
#################################### For Image ####################################
from PIL import Image
from sam3.model_builder import build_sam3_image_model
from sam3.model.sam3_image_processor import Sam3Processor
# Load the model
model = build_sam3_image_model()
processor = Sam3Processor(model)
# Load an image
image = Image.open("<YOUR_IMAGE_PATH.jpg>")
inference_state = processor.set_image(image)
# Prompt the model with text
output = processor.set_text_prompt(state=inference_state, prompt="<YOUR_TEXT_PROMPT>")
# Get the masks, bounding boxes, and scores
masks, boxes, scores = output["masks"], output["boxes"], output["scores"]
#################################### For Video ####################################
from sam3.model_builder import build_sam3_video_predictor
video_predictor = build_sam3_video_predictor()
video_path = "<YOUR_VIDEO_PATH>" # a JPEG folder or an MP4 video file
# Start a session
response = video_predictor.handle_request(
request=dict(
type="start_session",
resource_path=video_path,
)
)
response = video_predictor.handle_request(
request=dict(
type="add_prompt",
session_id=response["session_id"],
frame_index=0, # Arbitrary frame index
text="<YOUR_TEXT_PROMPT>",
)
)
output = response["outputs"]
```
## Examples
The `examples` directory contains notebooks demonstrating how to use SAM3 with
various types of prompts:
- [`sam3_image_predictor_example.ipynb`](examples/sam3_image_predictor_example.ipynb)
: Demonstrates how to prompt SAM 3 with text and visual box prompts on images.
- [`sam3_video_predictor_example.ipynb`](examples/sam3_video_predictor_example.ipynb)
: Demonstrates how to prompt SAM 3 with text prompts on videos, and doing
further interactive refinements with points.
- [`sam3_image_batched_inference.ipynb`](examples/sam3_image_batched_inference.ipynb)
: Demonstrates how to run batched inference with SAM 3 on images.
- [`sam3_agent.ipynb`](examples/sam3_agent.ipynb): Demonsterates the use of SAM
3 Agent to segment complex text prompt on images.
- [`saco_gold_silver_vis_example.ipynb`](examples/saco_gold_silver_vis_example.ipynb)
: Shows a few examples from SA-Co image evaluation set.
- [`saco_veval_vis_example.ipynb`](examples/saco_veval_vis_example.ipynb) :
Shows a few examples from SA-Co video evaluation set.
There are additional notebooks in the examples directory that demonstrate how to
use SAM 3 for interactive instance segmentation in images and videos (SAM 1/2
tasks), or as a tool for an MLLM, and how to run evaluations on the SA-Co
dataset.
To run the Jupyter notebook examples:
```bash
# Make sure you have the notebooks dependencies installed
pip install -e ".[notebooks]"
# Start Jupyter notebook
jupyter notebook examples/sam3_image_predictor_example.ipynb
```
## Model
SAM 3 consists of a detector and a tracker that share a vision encoder. It has 848M parameters. The
detector is a DETR-based model conditioned on text, geometry, and image
exemplars. The tracker inherits the SAM 2 transformer encoder-decoder
architecture, supporting video segmentation and interactive refinement.
## Image Results
<div align="center">
<table style="min-width: 80%; border: 2px solid #ddd; border-collapse: collapse">
<thead>
<tr>
<th rowspan="3" style="border-right: 2px solid #ddd; padding: 12px 20px">Model</th>
<th colspan="3" style="text-align: center; border-right: 2px solid #ddd; padding: 12px 20px">Instance Segmentation</th>
<th colspan="5" style="text-align: center; padding: 12px 20px">Box Detection</th>
</tr>
<tr>
<th colspan="2" style="text-align: center; border-right: 1px solid #eee; padding: 12px 20px">LVIS</th>
<th style="text-align: center; border-right: 2px solid #ddd; padding: 12px 20px">SA-Co/Gold</th>
<th colspan="2" style="text-align: center; border-right: 1px solid #eee; padding: 12px 20px">LVIS</th>
<th colspan="2" style="text-align: center; border-right: 1px solid #eee; padding: 12px 20px">COCO</th>
<th style="text-align: center; padding: 12px 20px">SA-Co/Gold</th>
</tr>
<tr>
<th style="text-align: center; padding: 12px 20px">cgF1</th>
<th style="text-align: center; border-right: 1px solid #eee; padding: 12px 20px">AP</th>
<th style="text-align: center; border-right: 2px solid #ddd; padding: 12px 20px">cgF1</th>
<th style="text-align: center; padding: 12px 20px">cgF1</th>
<th style="text-align: center; border-right: 1px solid #eee; padding: 12px 20px">AP</th>
<th style="text-align: center; padding: 12px 20px">AP</th>
<th style="text-align: center; border-right: 1px solid #eee; padding: 12px 20px">AP<sub>o</sub>
</th>
<th style="text-align: center; padding: 12px 20px">cgF1</th>
</tr>
</thead>
<tbody>
<tr>
<td style="border-right: 2px solid #ddd; padding: 10px 20px">Human</td>
<td style="text-align: center; padding: 10px 20px">-</td>
<td style="text-align: center; border-right: 1px solid #eee; padding: 10px 20px">-</td>
<td style="text-align: center; border-right: 2px solid #ddd; padding: 10px 20px">72.8</td>
<td style="text-align: center; padding: 10px 20px">-</td>
<td style="text-align: center; border-right: 1px solid #eee; padding: 10px 20px">-</td>
<td style="text-align: center; padding: 10px 20px">-</td>
<td style="text-align: center; border-right: 1px solid #eee; padding: 10px 20px">-</td>
<td style="text-align: center; padding: 10px 20px">74.0</td>
</tr>
<tr>
<td style="border-right: 2px solid #ddd; padding: 10px 20px">OWLv2*</td>
<td style="text-align: center; padding: 10px 20px; color: #999">29.3</td>
<td style="text-align: center; border-right: 1px solid #eee; padding: 10px 20px; color: #999">43.4</td>
<td style="text-align: center; border-right: 2px solid #ddd; padding: 10px 20px">24.6</td>
<td style="text-align: center; padding: 10px 20px; color: #999">30.2</td>
<td style="text-align: center; border-right: 1px solid #eee; padding: 10px 20px; color: #999">45.5</td>
<td style="text-align: center; padding: 10px 20px">46.1</td>
<td style="text-align: center; border-right: 1px solid #eee; padding: 10px 20px">23.9</td>
<td style="text-align: center; padding: 10px 20px">24.5</td>
</tr>
<tr>
<td style="border-right: 2px solid #ddd; padding: 10px 20px">DINO-X</td>
<td style="text-align: center; padding: 10px 20px">-</td>
<td style="text-align: center; border-right: 1px solid #eee; padding: 10px 20px">38.5</td>
<td style="text-align: center; border-right: 2px solid #ddd; padding: 10px 20px">21.3</td>
<td style="text-align: center; padding: 10px 20px">-</td>
<td style="text-align: center; border-right: 1px solid #eee; padding: 10px 20px">52.4</td>
<td style="text-align: center; padding: 10px 20px">56.0</td>
<td style="text-align: center; border-right: 1px solid #eee; padding: 10px 20px">-</td>
<td style="text-align: center; padding: 10px 20px">22.5</td>
</tr>
<tr>
<td style="border-right: 2px solid #ddd; padding: 10px 20px">Gemini 2.5</td>
<td style="text-align: center; padding: 10px 20px">13.4</td>
<td style="text-align: center; border-right: 1px solid #eee; padding: 10px 20px">-</td>
<td style="text-align: center; border-right: 2px solid #ddd; padding: 10px 20px">13.0</td>
<td style="text-align: center; padding: 10px 20px">16.1</td>
<td style="text-align: center; border-right: 1px solid #eee; padding: 10px 20px">-</td>
<td style="text-align: center; padding: 10px 20px">-</td>
<td style="text-align: center; border-right: 1px solid #eee; padding: 10px 20px">-</td>
<td style="text-align: center; padding: 10px 20px">14.4</td>
</tr>
<tr style="border-top: 2px solid #b19c9cff">
<td style="border-right: 2px solid #ddd; padding: 10px 20px">SAM 3</td>
<td style="text-align: center; padding: 10px 20px">37.2</td>
<td style="text-align: center; border-right: 1px solid #eee; padding: 10px 20px">48.5</td>
<td style="text-align: center; border-right: 2px solid #ddd; padding: 10px 20px">54.1</td>
<td style="text-align: center; padding: 10px 20px">40.6</td>
<td style="text-align: center; border-right: 1px solid #eee; padding: 10px 20px">53.6</td>
<td style="text-align: center; padding: 10px 20px">56.4</td>
<td style="text-align: center; border-right: 1px solid #eee; padding: 10px 20px">55.7</td>
<td style="text-align: center; padding: 10px 20px">55.7</td>
</tr>
</tbody>
</table>
<p style="text-align: center; margin-top: 10px; font-size: 0.9em; color: #ddd;">* Partially trained on LVIS, AP<sub>o</sub> refers to COCO-O accuracy</p>
</div>
## Video Results
<div align="center">
<table style="min-width: 80%; border: 2px solid #ddd; border-collapse: collapse">
<thead>
<tr>
<th rowspan="2" style="border-right: 2px solid #ddd; padding: 12px 20px">Model</th>
<th colspan="2" style="text-align: center; border-right: 1px solid #eee; padding: 12px 20px">SA-V test</th>
<th colspan="2" style="text-align: center; border-right: 1px solid #eee; padding: 12px 20px">YT-Temporal-1B test</th>
<th colspan="2" style="text-align: center; border-right: 1px solid #eee; padding: 12px 20px">SmartGlasses test</th>
<th style="text-align: center; border-right: 1px solid #eee; padding: 12px 20px">LVVIS test</th>
<th style="text-align: center; padding: 12px 20px">BURST test</th>
</tr>
<tr>
<th style="text-align: center; padding: 12px 20px">cgF1</th>
<th style="text-align: center; border-right: 1px solid #eee; padding: 12px 20px">pHOTA</th>
<th style="text-align: center; padding: 12px 20px">cgF1</th>
<th style="text-align: center; border-right: 1px solid #eee; padding: 12px 20px">pHOTA</th>
<th style="text-align: center; padding: 12px 20px">cgF1</th>
<th style="text-align: center; border-right: 1px solid #eee; padding: 12px 20px">pHOTA</th>
<th style="text-align: center; border-right: 1px solid #eee; padding: 12px 20px">mAP</th>
<th style="text-align: center; padding: 12px 20px">HOTA</th>
</tr>
</thead>
<tbody>
<tr>
<td style="border-right: 2px solid #ddd; padding: 10px 20px">Human</td>
<td style="text-align: center; padding: 10px 20px">53.1</td>
<td style="text-align: center; border-right: 1px solid #eee; padding: 10px 20px">70.5</td>
<td style="text-align: center; padding: 10px 20px">71.2</td>
<td style="text-align: center; border-right: 1px solid #eee; padding: 10px 20px">78.4</td>
<td style="text-align: center; padding: 10px 20px">58.5</td>
<td style="text-align: center; border-right: 1px solid #eee; padding: 10px 20px">72.3</td>
<td style="text-align: center; border-right: 1px solid #eee; padding: 10px 20px">-</td>
<td style="text-align: center; padding: 10px 20px">-</td>
</tr>
<tr style="border-top: 2px solid #b19c9cff">
<td style="border-right: 2px solid #ddd; padding: 10px 20px">SAM 3</td>
<td style="text-align: center; padding: 10px 20px">30.3</td>
<td style="text-align: center; border-right: 1px solid #eee; padding: 10px 20px">58.0</td>
<td style="text-align: center; padding: 10px 20px">50.8</td>
<td style="text-align: center; border-right: 1px solid #eee; padding: 10px 20px">69.9</td>
<td style="text-align: center; padding: 10px 20px">36.4</td>
<td style="text-align: center; border-right: 1px solid #eee; padding: 10px 20px">63.6</td>
<td style="text-align: center; border-right: 1px solid #eee; padding: 10px 20px">36.3</td>
<td style="text-align: center; padding: 10px 20px">44.5</td>
</tr>
</tbody>
</table>
</div>
## SA-Co Dataset
We release 2 image benchmarks, [SA-Co/Gold](scripts/eval/gold/README.md) and
[SA-Co/Silver](scripts/eval/silver/README.md), and a video benchmark
[SA-Co/VEval](scripts/eval/veval/README.md). The datasets contain images (or videos) with annotated noun phrases. Each image/video and noun phrase pair is annotated with instance masks and unique IDs of each object matching the phrase. Phrases that have no matching objects (negative prompts) have no masks, shown in red font in the figure. See the linked READMEs for more details on how to download and run evaluations on the datasets.
* HuggingFace host: [SA-Co/Gold](https://huggingface.co/datasets/facebook/SACo-Gold), [SA-Co/Silver](https://huggingface.co/datasets/facebook/SACo-Silver) and [SA-Co/VEval](https://huggingface.co/datasets/facebook/SACo-VEval)
* Roboflow host: [SA-Co/Gold](https://universe.roboflow.com/sa-co-gold), [SA-Co/Silver](https://universe.roboflow.com/sa-co-silver) and [SA-Co/VEval](https://universe.roboflow.com/sa-co-veval)

## Development
To set up the development environment:
```bash
pip install -e ".[dev,train]"
```
To format the code:
```bash
ufmt format .
```
## Contributing
See [contributing](CONTRIBUTING.md) and the
[code of conduct](CODE_OF_CONDUCT.md).
## License
This project is licensed under the SAM License - see the [LICENSE](LICENSE) file
for details.
## Acknowledgements
We would like to thank the following people for their contributions to the SAM 3 project: Alex He, Alexander Kirillov,
Alyssa Newcomb, Ana Paula Kirschner Mofarrej, Andrea Madotto, Andrew Westbury, Ashley Gabriel, Azita Shokpour,
Ben Samples, Bernie Huang, Carleigh Wood, Ching-Feng Yeh, Christian Puhrsch, Claudette Ward, Daniel Bolya,
Daniel Li, Facundo Figueroa, Fazila Vhora, George Orlin, Hanzi Mao, Helen Klein, Hu Xu, Ida Cheng, Jake Kinney,
Jiale Zhi, Jo Sampaio, Joel Schlosser, Justin Johnson, Kai Brown, Karen Bergan, Karla Martucci, Kenny Lehmann,
Maddie Mintz, Mallika Malhotra, Matt Ward, Michelle Chan, Michelle Restrepo, Miranda Hartley, Muhammad Maaz,
Nisha Deo, Peter Park, Phillip Thomas, Raghu Nayani, Rene Martinez Doehner, Robbie Adkins, Ross Girshik, Sasha
Mitts, Shashank Jain, Spencer Whitehead, Ty Toledano, Valentin Gabeur, Vincent Cho, Vivian Lee, William Ngan,
Xuehai He, Yael Yungster, Ziqi Pang, Ziyi Dou, Zoe Quake.
## Citing SAM 3
If you use SAM 3 or the SA-Co dataset in your research, please use the following BibTeX entry.
```bibtex
@misc{carion2025sam3segmentconcepts,
title={SAM 3: Segment Anything with Concepts},
author={Nicolas Carion and Laura Gustafson and Yuan-Ting Hu and Shoubhik Debnath and Ronghang Hu and Didac Suris and Chaitanya Ryali and Kalyan Vasudev Alwala and Haitham Khedr and Andrew Huang and Jie Lei and Tengyu Ma and Baishan Guo and Arpit Kalla and Markus Marks and Joseph Greer and Meng Wang and Peize Sun and Roman Rädle and Triantafyllos Afouras and Effrosyni Mavroudi and Katherine Xu and Tsung-Han Wu and Yu Zhou and Liliane Momeni and Rishi Hazra and Shuangrui Ding and Sagar Vaze and Francois Porcher and Feng Li and Siyuan Li and Aishwarya Kamath and Ho Kei Cheng and Piotr Dollár and Nikhila Ravi and Kate Saenko and Pengchuan Zhang and Christoph Feichtenhofer},
year={2025},
eprint={2511.16719},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2511.16719},
}
```
================================================
FILE: README_TRAIN.md
================================================
# Training
This repository supports finetuning SAM3 models on custom datasets in multi-node setup or local execution. The training script is located at `sam3/train.py` and uses Hydra configuration management to handle complex training setups.
## Installation
```bash
cd sam3
pip install -e ".[train]"
```
### Training Script Usage
The main training script is located at `sam3/train.py`. It uses Hydra configuration management to handle complex training setups.
#### Basic Usage
```bash
# Example: Train on Roboflow dataset
python sam3/train/train.py -c configs/roboflow_v100/roboflow_v100_full_ft_100_images.yaml
# Example: Train on ODinW13 dataset
python sam3/train/train.py -c configs/odinw13/odinw_text_only_train.yaml
```
Follow [`Roboflow 100-VL`](https://github.com/roboflow/rf100-vl/) to download the roboflow 100-vl datasets. Follow [`GLIP`](https://github.com/microsoft/GLIP) to download the ODinW datasets. The data folder should be organized as follows, and put your roboflow_vl_100_root and odinw_data_root in the job configs.
```
roboflow_vl_100_root:
13-lkc01
train
valid
test
2024-frc
actions
...
odinw_data_root:
AerialMaritimeDrone
large
train
valid
test
Aquarium
...
```
#### Command Line Arguments
The training script supports several command line arguments:
```bash
python sam3/train/train.py \
-c CONFIG_NAME \
[--use-cluster 0|1] \
[--partition PARTITION_NAME] \
[--account ACCOUNT_NAME] \
[--qos QOS_NAME] \
[--num-gpus NUM_GPUS] \
[--num-nodes NUM_NODES]
```
**Arguments:**
- `-c, --config`: **Required.** Path to the configuration file (e.g., `sam3/train/configs/roboflow_v100_full_ft_100_images.yaml`)
- `--use-cluster`: Whether to launch on a cluster (0: local, 1: cluster). Default: uses config setting
- `--partition`: SLURM partition name for cluster execution
- `--account`: SLURM account name for cluster execution
- `--qos`: SLURM QOS (Quality of Service) setting
- `--num-gpus`: Number of GPUs per node. Default: uses config setting
- `--num-nodes`: Number of nodes for distributed training. Default: uses config setting
#### Local Training Examples
```bash
# Single GPU training
python sam3/train/train.py -c configs/roboflow_v100/roboflow_v100_full_ft_100_images.yaml --use-cluster 0 --num-gpus 1
# Multi-GPU training on a single node
python sam3/train/train.py -c configs/roboflow_v100/roboflow_v100_full_ft_100_images.yaml --use-cluster 0 --num-gpus 4
# Force local execution even if config specifies GPUs
python sam3/train/train.py -c configs/roboflow_v100/roboflow_v100_full_ft_100_images.yaml --use-cluster 0
```
#### Cluster Training Examples
```bash
# Basic cluster training with default settings from config
python sam3/train/train.py -c configs/roboflow_v100/roboflow_v100_full_ft_100_images.yaml --use-cluster 1
# Cluster training with specific SLURM settings
python sam3/train/train.py -c configs/roboflow_v100/roboflow_v100_full_ft_100_images.yaml \
--use-cluster 1 \
--partition gpu_partition \
--account my_account \
--qos high_priority \
--num-gpus 8 \
--num-nodes 2
```
### Configuration Files
Training configurations are stored in `sam3/train/configs/`. The configuration files use Hydra's YAML format and support:
- **Dataset Configuration**: Data paths, transforms, and loading parameters
- **Model Configuration**: Architecture settings, checkpoint paths, and model parameters
- **Training Configuration**: Batch sizes, learning rates, optimization settings
- **Launcher Configuration**: Distributed training and cluster settings
- **Logging Configuration**: TensorBoard, experiment tracking, and output directories
#### Key Configuration Sections
```yaml
# Paths to datasets and checkpoints
paths:
bpe_path: /path/to/bpe/file
dataset_root: /path/to/dataset
experiment_log_dir: /path/to/logs
# Launcher settings for local/cluster execution
launcher:
num_nodes: 1
gpus_per_node: 2
experiment_log_dir: ${paths.experiment_log_dir}
# Cluster execution settings
submitit:
use_cluster: True
timeout_hour: 72
cpus_per_task: 10
partition: null
account: null
```
### Monitoring Training
The training script automatically sets up logging and saves outputs to the experiment directory:
```bash
# Logs are saved to the experiment_log_dir specified in config
experiment_log_dir/
├── config.yaml # Original configuration
├── config_resolved.yaml # Resolved configuration with all variables expanded
├── checkpoints/ # Model checkpoints (if skip_checkpointing=False)
├── tensorboard/ # TensorBoard logs
├── logs/ # Text logs
└── submitit_logs/ # Cluster job logs (if using cluster)
```
You can monitor training progress using TensorBoard:
```bash
tensorboard --logdir /path/to/experiment_log_dir/tensorboard
```
### Job Arrays for Dataset Sweeps
The Roboflow and ODinW configuration supports job arrays for training multiple models on different datasets:
This feature is specifically enabled via,
```yaml
submitit:
job_array:
num_tasks: 100
task_index: 0
```
The configuration includes a complete list of 100 Roboflow supercategories, and the `submitit.job_array.task_index` automatically selects which dataset to use based on the array job index.
```bash
# Submit job array to train on different Roboflow datasets
# The job array index selects which dataset from all_roboflow_supercategories
python sam3/train/train.py -c configs/roboflow_v100/roboflow_v100_full_ft_100_images.yaml \
--use-cluster 1
```
### Reproduce ODinW13 10-shot results
Running the following job will give the results on the ODinW13 seed 300, see `odinw_train.train_file: fewshot_train_shot10_seed300` in the config file.
```bash
# Example: Train on ODinW13 dataset
python sam3/train/train.py -c configs/odinw13/odinw_text_only_train.yaml
```
Change `odinw_train.train_file` to `fewshot_train_shot10_seed30` and `fewshot_train_shot10_seed3` to get the results for the other two seeds. Final results are aggregated from the three seeds. Notice that a small number of jobs may diverge during training, in which case we just use the last checkpoint's result before it diverges.
### Eval Script Usage
With a similar setup as the training config, the training script `sam3/train.py` can also be used for evaluation, too, when setting `trainer.mode = val` in the job config. Run the following job will give the results on the zero-shot results on RF100-VL and ODinW13 datasets.
```bash
# Example: Evaluate on Roboflow dataset
python sam3/train/train.py -c configs/roboflow_v100/roboflow_v100_eval.yaml
# Example: Evaluate on ODinW13 dataset
python sam3/train/train.py -c configs/odinw13/odinw_text_only.yaml
```
================================================
FILE: assets/veval/toy_gt_and_pred/toy_saco_veval_sav_test_eval_res.json
================================================
{"dataset_results": {"video_bbox_mAP_50_95": 0.25926449787835926, "video_mask_mAP_50_95": 0.34191419141914187, "video_bbox_phrase_ap_50_95": 0.1371423984673839, "video_bbox_phrase_ap_50": 0.3000915217572178, "video_bbox_phrase_ap_75": 0.08651579443658651, "video_mask_phrase_ap_50_95": 0.1935287184180603, "video_mask_phrase_ap_50": 0.3513242920930748, "video_mask_phrase_ap_75": 0.18776520509193778, "video_mask_teta": 50.647, "video_mask_loc_a": 50.969, "video_mask_assoc_a": 49.191, "video_mask_cls_a": 51.781, "video_mask_loc_re": 53.646, "video_mask_loc_pr": 59.689, "video_mask_assoc_re": 53.932, "video_mask_assoc_pr": 55.295, "video_mask_cls_re": 69.966, "video_mask_cls_pr": 51.792, "video_bbox_all_phrase_HOTA": 0.45019177261810006, "video_bbox_all_phrase_DetA": 0.3065446597162029, "video_bbox_all_phrase_AssA": 0.6620514646913795, "video_bbox_all_phrase_DetRe": 0.34337909467405614, "video_bbox_all_phrase_DetPr": 0.672412162481676, "video_bbox_all_phrase_AssRe": 0.7418235522588219, "video_bbox_all_phrase_AssPr": 0.7588797497822176, "video_bbox_all_phrase_LocA": 0.8264969431924951, "video_bbox_all_phrase_OWTA": 0.4767458776352726, "video_mask_all_phrase_HOTA": 0.4656079602771566, "video_mask_all_phrase_DetA": 0.31732796518831874, "video_mask_all_phrase_AssA": 0.6843555199075559, "video_mask_all_phrase_DetRe": 0.35291773825479045, "video_mask_all_phrase_DetPr": 0.6910909348843808, "video_mask_all_phrase_AssRe": 0.7573349011890161, "video_mask_all_phrase_AssPr": 0.7716315286320553, "video_mask_all_phrase_LocA": 0.8328852506118952, "video_mask_all_phrase_OWTA": 0.4913272309590218, "video_bbox_demo_precision_50_95": 0.3349983250083749, "video_bbox_demo_recall_50_95": 0.20302968778882485, "video_bbox_demo_f1_50_95": 0.2527916520815702, "video_bbox_demo_precision_50": 0.6499967500162499, "video_bbox_demo_recall_50": 0.3939382001872721, "video_bbox_demo_f1_50": 0.49051719921648634, "video_bbox_demo_precision_75": 0.29999850000749995, "video_bbox_demo_recall_75": 0.18181763085566405, "video_bbox_demo_f1_75": 0.2263672578625684, "video_bbox_demo_pmf1_50_95": 0.34412433298399697, "video_bbox_demo_ilmcc_50_95": 0.6546535992794136, "video_bbox_demo_cgf1_50_95": 0.22528223318760104, "video_bbox_demo_pmf1_w0dt_50_95": 0.29496371398628307, "video_bbox_demo_cgf1_w0dt_50_95": 0.19309905701794375, "video_bbox_demo_positive_micro_f1_50_95": 0.2527916520815702, "video_bbox_demo_cgf1_micro_50_95": 0.1654909649029892, "video_bbox_demo_pmf1_50": 0.6499302549834214, "video_bbox_demo_ilmcc_50": 0.6546535992794136, "video_bbox_demo_cgf1_50": 0.42547918070548385, "video_bbox_demo_positive_micro_f1_50": 0.49051719921648634, "video_bbox_demo_cgf1_micro_50": 0.3211188499755299, "video_bbox_demo_pmf1_75": 0.3666121729955099, "video_bbox_demo_ilmcc_75": 0.6546535992794136, "video_bbox_demo_cgf1_75": 0.2400039785911576, "video_bbox_demo_positive_micro_f1_75": 0.2263672578625684, "video_bbox_demo_cgf1_micro_75": 0.14819214011874154, "video_mask_demo_precision_50_95": 0.4049979750101249, "video_mask_demo_recall_50_95": 0.24545380165514646, "video_mask_demo_f1_50_95": 0.30562163642146994, "video_mask_demo_precision_50": 0.6999965000174999, "video_mask_demo_recall_50": 0.4242411386632161, "video_mask_demo_f1_50": 0.5282529055527269, "video_mask_demo_precision_75": 0.39999800000999997, "video_mask_demo_recall_75": 0.24242350780755206, "video_mask_demo_f1_75": 0.3018386687406093, "video_mask_demo_pmf1_50_95": 0.42578319170459134, "video_mask_demo_ilmcc_50_95": 0.6546535992794136, "video_mask_demo_cgf1_50_95": 0.2787404989620873, "video_mask_demo_pmf1_w0dt_50_95": 0.3649570214610783, "video_mask_demo_cgf1_w0dt_50_95": 0.23892042768178906, "video_mask_demo_positive_micro_f1_50_95": 0.30562163642146994, "video_mask_demo_cgf1_micro_50_95": 0.2000763043009796, "video_mask_demo_pmf1_50": 0.691595879731724, "video_mask_demo_ilmcc_50": 0.6546535992794136, "video_mask_demo_cgf1_50": 0.4527557319131855, "video_mask_demo_positive_micro_f1_50": 0.5282529055527269, "video_mask_demo_cgf1_micro_50": 0.34582266594990074, "video_mask_demo_pmf1_75": 0.44161046360299766, "video_mask_demo_ilmcc_75": 0.6546535992794136, "video_mask_demo_cgf1_75": 0.2891018794771529, "video_mask_demo_positive_micro_f1_75": 0.3018386687406093, "video_mask_demo_cgf1_micro_75": 0.19759977089274647}, "video_np_results": [{"video_id": 0, "category_id": 847, "bbox_HOTA": 0.5142922923345529, "bbox_DetA": 0.4728133947307452, "bbox_AssA": 0.5594614107579609, "bbox_DetRe": 0.5232999318999904, "bbox_DetPr": 0.6740601503759398, "bbox_AssRe": 0.6250872094372617, "bbox_AssPr": 0.6825128274969564, "bbox_LocA": 0.7656278351108177, "bbox_OWTA": 0.5404796613713161, "mask_HOTA": 0.5531074184495137, "mask_DetA": 0.5015830888530848, "mask_AssA": 0.6104397175171865, "mask_DetRe": 0.5479132211304601, "mask_DetPr": 0.7057644110275689, "mask_AssRe": 0.6703397116425474, "mask_AssPr": 0.7231025840584305, "mask_LocA": 0.7775805526027232, "mask_OWTA": 0.5779237956098605, "bbox_TP_50_95": 0.8, "bbox_FP_50_95": 3.2, "bbox_FN_50_95": 3.2, "bbox_F1_50_95": 0.2, "bbox_TP_50": 2.0, "bbox_FP_50": 2.0, "bbox_FN_50": 2.0, "bbox_F1_50": 0.5, "bbox_TP_75": 0.0, "bbox_FP_75": 4.0, "bbox_FN_75": 4.0, "bbox_F1_75": 0.0, "mask_TP_50_95": 1.4, "mask_FP_50_95": 2.6, "mask_FN_50_95": 2.6, "mask_F1_50_95": 0.35, "mask_TP_50": 3.0, "mask_FP_50": 1.0, "mask_FN_50": 1.0, "mask_F1_50": 0.75, "mask_TP_75": 0.0, "mask_FP_75": 4.0, "mask_FN_75": 4.0, "mask_F1_75": 0.0}, {"video_id": 0, "category_id": 1390, "bbox_HOTA": 0.7406733177321637, "bbox_DetA": 0.7406733177321637, "bbox_AssA": 0.7406733177321637, "bbox_DetRe": 0.8079854809437387, "bbox_DetPr": 0.8428625520636122, "bbox_AssRe": 0.8079854809437387, "bbox_AssPr": 0.8428625520636122, "bbox_LocA": 0.8823614751992302, "bbox_OWTA": 0.7727325543244231, "mask_HOTA": 0.8154208948182305, "mask_DetA": 0.8154208948182305, "mask_AssA": 0.8154208948182304, "mask_DetRe": 0.8508166969147005, "mask_DetPr": 0.8875425975009466, "mask_AssRe": 0.8508166969147005, "mask_AssPr": 0.8875425975009466, "mask_LocA": 0.8885850303003239, "mask_OWTA": 0.8323023646534773, "bbox_TP_50_95": 0.6, "bbox_FP_50_95": 0.4, "bbox_FN_50_95": 0.4, "bbox_F1_50_95": 0.6, "bbox_TP_50": 1.0, "bbox_FP_50": 0.0, "bbox_FN_50": 0.0, "bbox_F1_50": 1.0, "bbox_TP_75": 1.0, "bbox_FP_75": 0.0, "bbox_FN_75": 0.0, "bbox_F1_75": 1.0, "mask_TP_50_95": 0.8, "mask_FP_50_95": 0.2, "mask_FN_50_95": 0.2, "mask_F1_50_95": 0.8, "mask_TP_50": 1.0, "mask_FP_50": 0.0, "mask_FN_50": 0.0, "mask_F1_50": 1.0, "mask_TP_75": 1.0, "mask_FP_75": 0.0, "mask_FN_75": 0.0, "mask_F1_75": 1.0}, {"video_id": 0, "category_id": 1985, "bbox_HOTA": 0.6033247555682881, "bbox_DetA": 0.582364339356503, "bbox_AssA": 0.6261229142494006, "bbox_DetRe": 0.731940716536352, "bbox_DetPr": 0.6764452113891285, "bbox_AssRe": 0.7595503987929015, "bbox_AssPr": 0.7140399793949845, "bbox_LocA": 0.8359470620317413, "bbox_OWTA": 0.6767785755234768, "mask_HOTA": 0.6327138779062043, "mask_DetA": 0.607379512629533, "mask_AssA": 0.661378852549867, "mask_DetRe": 0.7515462714435757, "mask_DetPr": 0.6945642795513374, "mask_AssRe": 0.7849752407175019, "mask_AssPr": 0.7406062552585059, "mask_LocA": 0.8390964342806022, "mask_OWTA": 0.70480310037791, "bbox_TP_50_95": 1.5, "bbox_FP_50_95": 2.5, "bbox_FN_50_95": 2.5, "bbox_F1_50_95": 0.375, "bbox_TP_50": 4.0, "bbox_FP_50": 0.0, "bbox_FN_50": 0.0, "bbox_F1_50": 1.0, "bbox_TP_75": 1.0, "bbox_FP_75": 3.0, "bbox_FN_75": 3.0, "bbox_F1_75": 0.25, "mask_TP_50_95": 1.7, "mask_FP_50_95": 2.3, "mask_FN_50_95": 2.3, "mask_F1_50_95": 0.425, "mask_TP_50": 4.0, "mask_FP_50": 0.0, "mask_FN_50": 0.0, "mask_F1_50": 1.0, "mask_TP_75": 1.0, "mask_FP_75": 3.0, "mask_FN_75": 3.0, "mask_F1_75": 0.25}, {"video_id": 0, "category_id": 3802, "bbox_HOTA": 0.47649622572399936, "bbox_DetA": 0.433826727090632, "bbox_AssA": 0.5248504404498464, "bbox_DetRe": 0.6931060044477392, "bbox_DetPr": 0.49540798304486033, "bbox_AssRe": 0.5970635788657445, "bbox_AssPr": 0.6521277350832161, "bbox_LocA": 0.8179341001135264, "bbox_OWTA": 0.6029168695170898, "mask_HOTA": 0.48643902599730804, "mask_DetA": 0.45408850965718345, "mask_AssA": 0.5231400608341074, "mask_DetRe": 0.7197924388435877, "mask_DetPr": 0.5144825150123632, "mask_AssRe": 0.5970712271676157, "mask_AssPr": 0.6408536817832409, "mask_LocA": 0.8335384601792232, "mask_OWTA": 0.613243699873648, "bbox_TP_50_95": 1.2, "bbox_FP_50_95": 4.8, "bbox_FN_50_95": 2.8, "bbox_F1_50_95": 0.24000000000000005, "bbox_TP_50": 2.0, "bbox_FP_50": 4.0, "bbox_FN_50": 2.0, "bbox_F1_50": 0.4, "bbox_TP_75": 1.0, "bbox_FP_75": 5.0, "bbox_FN_75": 3.0, "bbox_F1_75": 0.2, "mask_TP_50_95": 1.4, "mask_FP_50_95": 4.6, "mask_FN_50_95": 2.6, "mask_F1_50_95": 0.28, "mask_TP_50": 2.0, "mask_FP_50": 4.0, "mask_FN_50": 2.0, "mask_F1_50": 0.4, "mask_TP_75": 2.0, "mask_FP_75": 4.0, "mask_FN_75": 2.0, "mask_F1_75": 0.4}, {"video_id": 0, "category_id": 3827, "bbox_HOTA": 0.7782356487108129, "bbox_DetA": 0.7707506578022777, "bbox_AssA": 0.7864050337062197, "bbox_DetRe": 0.8251451746704767, "bbox_DetPr": 0.8309663046505151, "bbox_AssRe": 0.8370220441715713, "bbox_AssPr": 0.8427028310094968, "bbox_LocA": 0.8515357797457908, "bbox_OWTA": 0.8052026625060156, "mask_HOTA": 0.7841937402779418, "mask_DetA": 0.7773711399985175, "mask_AssA": 0.7919510612320402, "mask_DetRe": 0.8283712784588442, "mask_DetPr": 0.8342151675485008, "mask_AssRe": 0.8407743682610512, "mask_AssPr": 0.845985151807301, "mask_LocA": 0.851867149412845, "mask_OWTA": 0.8096925025911031, "bbox_TP_50_95": 2.6, "bbox_FP_50_95": 1.4, "bbox_FN_50_95": 1.4, "bbox_F1_50_95": 0.65, "bbox_TP_50": 4.0, "bbox_FP_50": 0.0, "bbox_FN_50": 0.0, "bbox_F1_50": 1.0, "bbox_TP_75": 3.0, "bbox_FP_75": 1.0, "bbox_FN_75": 1.0, "bbox_F1_75": 0.75, "mask_TP_50_95": 2.8, "mask_FP_50_95": 1.2, "mask_FN_50_95": 1.2, "mask_F1_50_95": 0.7, "mask_TP_50": 4.0, "mask_FP_50": 0.0, "mask_FN_50": 0.0, "mask_F1_50": 1.0, "mask_TP_75": 4.0, "mask_FP_75": 0.0, "mask_FN_75": 0.0, "mask_F1_75": 1.0}, {"video_id": 0, "category_id": 49272, "bbox_HOTA": 0.0, "bbox_DetA": 0.0, "bbox_AssA": 0.0, "bbox_DetRe": 0.0, "bbox_DetPr": 0.0, "bbox_AssRe": 0.0, "bbox_AssPr": 0.0, "bbox_LocA": 1.0, "bbox_OWTA": 0.0, "mask_HOTA": 0.0, "mask_DetA": 0.0, "mask_AssA": 0.0, "mask_DetRe": 0.0, "mask_DetPr": 0.0, "mask_AssRe": 0.0, "mask_AssPr": 0.0, "mask_LocA": 1.0, "mask_OWTA": 0.0, "bbox_TP_50_95": 0.0, "bbox_FP_50_95": 0.0, "bbox_FN_50_95": 12.0, "bbox_F1_50_95": 0.0, "bbox_TP_50": 0.0, "bbox_FP_50": 0.0, "bbox_FN_50": 12.0, "bbox_F1_50": 0.0, "bbox_TP_75": 0.0, "bbox_FP_75": 0.0, "bbox_FN_75": 12.0, "bbox_F1_75": 0.0, "mask_TP_50_95": 0.0, "mask_FP_50_95": 0.0, "mask_FN_50_95": 12.0, "mask_F1_50_95": 0.0, "mask_TP_50": 0.0, "mask_FP_50": 0.0, "mask_FN_50": 12.0, "mask_F1_50": 0.0, "mask_TP_75": 0.0, "mask_FP_75": 0.0, "mask_FN_75": 12.0, "mask_F1_75": 0.0}, {"video_id": 0, "category_id": 49504, "bbox_HOTA": 0.0, "bbox_DetA": 0.0, "bbox_AssA": 0.0, "bbox_DetRe": 0.0, "bbox_DetPr": 0.0, "bbox_AssRe": 0.0, "bbox_AssPr": 0.0, "bbox_LocA": 1.0, "bbox_OWTA": 0.0, "mask_HOTA": 0.0, "mask_DetA": 0.0, "mask_AssA": 0.0, "mask_DetRe": 0.0, "mask_DetPr": 0.0, "mask_AssRe": 0.0, "mask_AssPr": 0.0, "mask_LocA": 1.0, "mask_OWTA": 0.0, "bbox_TP_50_95": 0.0, "bbox_FP_50_95": 1.0, "bbox_FN_50_95": 4.0, "bbox_F1_50_95": 0.0, "bbox_TP_50": 0.0, "bbox_FP_50": 1.0, "bbox_FN_50": 4.0, "bbox_F1_50": 0.0, "bbox_TP_75": 0.0, "bbox_FP_75": 1.0, "bbox_FN_75": 4.0, "bbox_F1_75": 0.0, "mask_TP_50_95": 0.0, "mask_FP_50_95": 1.0, "mask_FN_50_95": 4.0, "mask_F1_50_95": 0.0, "mask_TP_50": 0.0, "mask_FP_50": 1.0, "mask_FN_50": 4.0, "mask_F1_50": 0.0, "mask_TP_75": 0.0, "mask_FP_75": 1.0, "mask_FN_75": 4.0, "mask_F1_75": 0.0}, {"video_id": 0, "category_id": 50554, "bbox_TP_50_95": 0.0, "bbox_FP_50_95": 0.0, "bbox_FN_50_95": 0.0, "bbox_F1_50_95": 1.0, "bbox_TP_50": 0.0, "bbox_FP_50": 0.0, "bbox_FN_50": 0.0, "bbox_F1_50": 1.0, "bbox_TP_75": 0.0, "bbox_FP_75": 0.0, "bbox_FN_75": 0.0, "bbox_F1_75": 1.0, "mask_TP_50_95": 0.0, "mask_FP_50_95": 0.0, "mask_FN_50_95": 0.0, "mask_F1_50_95": 1.0, "mask_TP_50": 0.0, "mask_FP_50": 0.0, "mask_FN_50": 0.0, "mask_F1_50": 1.0, "mask_TP_75": 0.0, "mask_FP_75": 0.0, "mask_FN_75": 0.0, "mask_F1_75": 1.0}]}
================================================
FILE: assets/veval/toy_gt_and_pred/toy_saco_veval_sav_test_gt.json
================================================
{"info": {"version": "v1", "date": "2025-09-24", "description": "SA-Co/VEval SA-V Test"}, "videos": [{"id": 0, "video_name": "sav_000208", "file_names": ["sav_000208/00000.jpg", "sav_000208/00004.jpg", "sav_000208/00008.jpg", "sav_000208/00012.jpg", "sav_000208/00016.jpg", "sav_000208/00020.jpg", "sav_000208/00024.jpg", "sav_000208/00028.jpg", "sav_000208/00032.jpg", "sav_000208/00036.jpg", "sav_000208/00040.jpg", "sav_000208/00044.jpg", "sav_000208/00048.jpg", "sav_000208/00052.jpg", "sav_000208/00056.jpg", "sav_000208/00060.jpg", "sav_000208/00064.jpg", "sav_000208/00068.jpg", "sav_000208/00072.jpg", "sav_000208/00076.jpg", "sav_000208/00080.jpg", "sav_000208/00084.jpg", "sav_000208/00088.jpg", "sav_000208/00092.jpg", "sav_000208/00096.jpg", "sav_000208/00100.jpg", "sav_000208/00104.jpg", "sav_000208/00108.jpg", "sav_000208/00112.jpg", "sav_000208/00116.jpg", "sav_000208/00120.jpg", "sav_000208/00124.jpg", "sav_000208/00128.jpg", "sav_000208/00132.jpg", "sav_000208/00136.jpg", "sav_000208/00140.jpg", "sav_000208/00144.jpg", "sav_000208/00148.jpg", "sav_000208/00152.jpg", "sav_000208/00156.jpg", "sav_000208/00160.jpg", "sav_000208/00164.jpg", "sav_000208/00168.jpg", "sav_000208/00172.jpg", "sav_000208/00176.jpg", "sav_000208/00180.jpg", "sav_000208/00184.jpg", "sav_000208/00188.jpg", "sav_000208/00192.jpg", "sav_000208/00196.jpg", "sav_000208/00200.jpg", "sav_000208/00204.jpg", "sav_000208/00208.jpg", "sav_000208/00212.jpg", "sav_000208/00216.jpg", "sav_000208/00220.jpg", "sav_000208/00224.jpg", "sav_000208/00228.jpg", "sav_000208/00232.jpg", "sav_000208/00236.jpg", "sav_000208/00240.jpg", "sav_000208/00244.jpg", "sav_000208/00248.jpg", "sav_000208/00252.jpg", "sav_000208/00256.jpg", "sav_000208/00260.jpg", "sav_000208/00264.jpg", "sav_000208/00268.jpg", "sav_000208/00272.jpg", "sav_000208/00276.jpg", "sav_000208/00280.jpg", "sav_000208/00284.jpg", "sav_000208/00288.jpg", "sav_000208/00292.jpg", "sav_000208/00296.jpg", "sav_000208/00300.jpg", "sav_000208/00304.jpg", "sav_000208/00308.jpg", "sav_000208/00312.jpg", "sav_000208/00316.jpg", "sav_000208/00320.jpg", "sav_000208/00324.jpg", "sav_000208/00328.jpg", "sav_000208/00332.jpg", "sav_000208/00336.jpg", "sav_000208/00340.jpg", "sav_000208/00344.jpg", "sav_000208/00348.jpg", "sav_000208/00352.jpg", "sav_000208/00356.jpg", "sav_000208/00360.jpg", "sav_000208/00364.jpg", "sav_000208/00368.jpg", "sav_000208/00372.jpg", "sav_000208/00376.jpg", "sav_000208/00380.jpg", "sav_000208/00384.jpg", "sav_000208/00388.jpg", "sav_000208/00392.jpg", "sav_000208/00396.jpg", "sav_000208/00400.jpg", "sav_000208/00404.jpg", "sav_000208/00408.jpg", "sav_000208/00412.jpg", "sav_000208/00416.jpg", "sav_000208/00420.jpg", "sav_000208/00424.jpg", "sav_000208/00428.jpg", "sav_000208/00432.jpg", "sav_000208/00436.jpg", "sav_000208/00440.jpg", "sav_000208/00444.jpg", "sav_000208/00448.jpg", "sav_000208/00452.jpg", "sav_000208/00456.jpg", "sav_000208/00460.jpg", "sav_000208/00464.jpg", "sav_000208/00468.jpg", "sav_000208/00472.jpg", "sav_000208/00476.jpg", "sav_000208/00480.jpg", "sav_000208/00484.jpg", "sav_000208/00488.jpg", "sav_000208/00492.jpg", "sav_000208/00496.jpg", "sav_000208/00500.jpg", "sav_000208/00504.jpg", "sav_000208/00508.jpg", "sav_000208/00512.jpg", "sav_000208/00516.jpg", "sav_000208/00520.jpg", "sav_000208/00524.jpg", "sav_000208/00528.jpg", "sav_000208/00532.jpg", "sav_000208/00536.jpg", "sav_000208/00540.jpg", "sav_000208/00544.jpg", "sav_000208/00548.jpg", "sav_000208/00552.jpg", "sav_000208/00556.jpg", "sav_000208/00560.jpg", "sav_000208/00564.jpg", "sav_000208/00568.jpg", "sav_000208/00572.jpg", "sav_000208/00576.jpg", "sav_000208/00580.jpg"], "height": 1280, "width": 720, "length": 146}], "annotations": [{"id": 167, "segmentations": [{"counts": "dPV;1iW1=F5K3M2O2NO1K6M201N2O10001O000O2O010O10O010O100000O1000O100000000O1000001O0000001O00001O1O1O1O100O110O011N1N4M2O1N2N3Mk0UO01N101M3N3H:\\Og0]OegW>", "size": [1280, 720]}, {"counts": "VPl:;aW19H5L3L6LO0M3L4N3M3O1O1N3N1O011O001N110O10O0100O0100O1000000000001O0000O100O11O00001O00001O01000O101N1O10000O101N2O2N1N3N7I4eiNlNaU1W1SjNTOlU1_12L4L4^Oc0D;C\\``>", "size": [1280, 720]}, {"counts": "]Y^:1jW16N1N001iNNajN3YU18`jNJ^U1;^jNEaU1?\\jN@dU1e0WjN[OjU1i0RjNWOmU1l0RjNQOoU1U1liNkNSV1S1TjNgNmU1T1a0J6I8L4O1O1O101N101O001O001O1O001000O01000000O01000000000001O00000000001O00001O00010O1O100O10000O100O2O0O3N1O1N2O4L2O4liNPOmT1T2NN3M3M3I7B>F;D`0\\OdP^>", "size": [1280, 720]}, {"counts": "hoa:8X1JPU1c0fjNAWU1d0djN^OYU1h0cjNYOZU1l0bjNUO]U1o0`jNQO_U1S1]jNnNbU1U1[jNmNdU1T1\\jNkNcU1W1\\jNjNcU1=YkN]OjT1?]kN[OeT1c0]1O2N100O1000001O010O010O010O10O100000000O010000000000001O000O10000000001O01O01O1O0010000O100O100O2O0O102M2O1O1O2O2M1O1O3N3iiNjN[U1T2KO001N1O3L4M4K7J4M5J7kNZiNc0XW1HTWU>", "size": [1280, 720]}, {"counts": "b__:?[W19H8J5L3N3L3N_OjiNXOVV1c0f0N101N2000O0ajNB_S1>elN_OZS1b0hlN\\OWS1e0R2O010O10O10O010000O100000000O1000000O01001O0O100000001O001O001O001O10O01O010O1O010O010O10000O10000O10001O00100O001O1O0000001diNUOaU1k0[jN]OaU1b0\\jNCcU1]1001O2N3L2N4L6J4L2M5L>A5L5J4L4Loni=", "size": [1280, 720]}, {"counts": "UoW:`0\\W17H6K6L2M3OO1B=N3N20O10001O001O1N110O0010O01O10000O01000O10000O10000000000O1000000O2O001O001O001O001O00001O00010O1O010O001O100O100O10O0100O10O10O1001O00000O10000010O10O01fiNhNiU1Y1SjNSOdU1n0XjNXOfU1c1O0O11N1N3N3L3M3M5K4M1N3L<E5K3L4M2N3L4L4MVgc=", "size": [1280, 720]}, {"counts": "UoW:?\\W18H7J6K4M2N3N_O`0L5N110O010001O001O00010O1O010O100O1O01000O1000000O10O1000O10000O101O0O101O0O101O001O001O0010O01O00001O0010O01O010O1O100O010O10000O10O010000000O0100001N10000010O1O1O010fiNkNfU1V1VjNROeU1i1M1O0O1000O1O3M3L3N3L4L2N2N4L<D4L3M3L3N2N3L4L3N3LT_X=", "size": [1280, 720]}, {"counts": "[o\\:?[W1:E:K3L5L3MN2B?N1N2O2O001O11O001O001O0010O0100O010O0010000O010000000O10000O10000O10000O100000000000001O001O001O001O00001O00100O001O10O00010O0100O100O100O0100000O10O10000001O01O0000000001O2O1N1niNnNTU1R1fjNXOUU1i0gjN]OWU1d0cjNA]U1b10O100O2M3M3M6K4K2N2N2Nb0]O5L3M3L6I8HP_S=", "size": [1280, 720]}, {"counts": "Vo\\:>]W1:G9F6K6K6K4L3M3M2O3L2NoNQ1M4O001O1O2OO02O01O01O010O010O01O10O10O1000O0100000000O1000000O10O10O10000O01000O1000001O0000001O00010O001O001O00100O00010O010O10O0100O010O0100000O10001O00000000001O000000010O002N2O1O0niNTOnT1m0ljN[OQU1e0kjNBRU1`0hjNDXU1c10O2N2M3N2M6J3L4M1O4Kc0^O4K4M3L4M3M5J=BdgQ1Of_c:", "size": [1280, 720]}, {"counts": "Qi[:7eW15J5M4VNLdkN5YT13bkNM[T1;^kNG`T1?\\kN@cT1f0XkNYOhT1m0SkNSOlT1S1ojNlNQU1[1ijNfNTU1S201N102N3N2M4M3LYNlkNFST16ZlNCdS19llN^OQS1`0]mNUObR1j0Z2O1O1O1O101O001O001O10O010O010000O01000000000O01000O1000O100O10000O10000O10000000O10000000000001O01O01O00000010O01O010O010O010O010O10O10O100000000O01000000001O0000001O00100O1000O12N1^jNTOkS1m0gkNCWT1?akNG`T19ZkNLfT16TkNLPU1`12N3M3L7J4L3L3N3Lj0WO6J4K4M4Jag`<", "size": [1280, 720]}, {"counts": "mX^::aW16L2M3N2O0001N110O001O001O0O2OTONliN2RV17fiNKWV1o0O3M2O1N2M4M2N4L6J8H<F6H5M6I6KN2K5^NWlNmNiS1Q1klN_NTS1]1i1N2O1N2O2N1O1O2O0O101O001O0010O000100O010O10O1000O10000000000O1000000000O10000O10000O10001O000O1000O101O000000001O0001O01O01O01O01O10O10O10O0100O10O1000O1001O000O02O0001O0001O1O100O2O2M4M1gjNjNdS1W1VlNmNlS1S1lkNROVT1Q1^kNVOdT1Q23N2N4L5K6I?^O>fNbQS<", "size": [1280, 720]}, {"counts": "fXW;9cW15L4K5M3NO11O0OO1MViN[OaV1c0?N2OmNN[jN0eU15WjNKhU1;SjNFkU1X1M4M2M4L2O3L4N2M7J9G<D4M:E:G4L2NfMhlNNWS1MZmNEgR19amNSOhN_OnS1Z1kmNgN`R1X1T2O2M2O10001N101O000010O0001O01000O01000O1000O1000O100000000000O100O010O10001N1000000000O100000001O000000001O0001O0010O0001O010O0010O01000O0100000O1000000O0100000010O001O1N110O1O1O100O3O1njN_N_S1c1VlNiNgS1X1PlNnNQT1T1^kN[OcT1P22M3N3M1O3M3L<WN_jN<RV1jNejN=a^\\;", "size": [1280, 720]}, {"counts": "Xal;1dW1<I6L4O0O001N1O11O00eN_OZkN`0cT1JWkN5hT11SkNMnT19njNFQU1`0jjN@TU1g0hjNWOXU1o0bjNRO]U1h1O2N002N8ILjjNjMlT1X2TkNUN]T1m1ckNYNUT1i1lkNXNPT1e0]lNPOD=kS1<nlNQOG7WS1f0\\nNXOaQ1g0l2O1O1O101O0O101O01O01O0100O00100O10O0100O10000O011O000000O1000O10000O10000O100O10O1000O2O0001O000001O000010O01O000010O01O00100O001O0010O10O010O0100O010000000O100000000000001OO1000010O0001OijNoN^S1T1[lNQOeS1P1TlNUOmS1l0jkN[OWT1f0ckN]O_T1c0]kN_OfT1c0SkN_OPU1g13M4L4L:F6J2N1O3Lc0^O8G5L:Eh_c:", "size": [1280, 720]}, {"counts": "Xif<6WU18llNKmR1>mlNElR1d0olN_OmR1g0^lNL^S1:[lNJdS19YlNIfS19WlNHhS1:XlNEgS13mlN^OVS17_2N1O20O00100O1O101O001O00100O1O100O100O100O100O10000O101N1O10000O1000O01000001O0O10001O001O1O001N10001N101O1O001O001O0010O01O010O1O010O010O100O00100O100O100O10O0100O0100000O1000O10001N10SkNRNgS1o1QlNaNgS1`1TlNgNhS1Z1RlNlNnS1S1nkNQOST1o0ikNTOWT1l0gkNUOZT1Y21N001O1N2O4K5L4L5K2N3M4L`0@3^NPjNn0UV1fNWjNU1^V1L3M6K4K5I8I5JToV:", "size": [1280, 720]}, {"counts": "gV_<a0[W15J7J5M1N01K6M2M31000000O101N101O001O1O1O100O1O1O100O1O100O1000O0100O100O10000O2O000O2O00001O001O001O0O2O00001O1O0O2O1O001O001O100O001O010O1O10O01O100O100O010O10O0100O10O11N10O10O01000000000ejN_NVT1a1fkNfNXT1X1gkNmNVT1T1hkNoNWT1Q1ekNRO\\T1m0akNVO_T1k0^kNWOcT1R22O1N2O1N2N3M4K5L3M2N2N3M2N4L6J3M2N4M6]NhiNP1hV1L3N2L6K3M4K3N4HRWb:", "size": [1280, 720]}, {"counts": "Voi;9cW15L4K3M2001N10100001O1O001N2O001O1O1N200O1O1O100O100O10000O10000O101N101O0O2O001N101O001N101O010O1O001O1O001N2O001O1O1O00100O1O1O010O1O100O100O100O010O1O10000O01O100O0100cjN[N^T1e1akN_N\\T1a1bkNcN\\T1]1bkNeN^T1Z1akNhN_T1W1`kNjNaT1W1[kNlNfT1V21O2N2N2N2M3N3M1O2M3N1O4L4M4K5L1N?B2M2O2N5J5K4L5K6J4K4Jfnc;", "size": [1280, 720]}, {"counts": "ZoZ;4hW16L3N2M2N3N1N2O001O1O1O2O0O1O1O2N1O1O1O2N1O1O2O0O10000O2O1O0O101O1N101O1N2O001N2O001O1N101O1O1O1O1O001O1O010O1O1O00100O001O01O01O010O010O010O011N101N01000O8I4L2N2N1O1O0001O001N1O2N1O2N2N2N2N3M3M3M2O1N3N4K:G6cNeiNg0mV1M3M3N2M2N2N2N1O1O1O3M2NYfV<", "size": [1280, 720]}, {"counts": "V_];6gW14N1O1O1O2N1O1O2O1N1O2M201N1O2O0O2N1O2O1N2O0O1O101N2O1O0O2O1O1O1N2O1O1O001N2O001N2O1O1O1O1O001O001O00001O001O011N101N10O01O2O0O2O3L2O0O3N1N2O0O101O00001O00O2O000O1N3N2N1O2N2N2N2N3N1N7I2N2M3M4M5J6J3M3M4Kb0_OPge<", "size": [1280, 720]}, {"counts": "eWf;6hW13M3N1O2M3N1O2N2N1O2N2O1N101N2N1O1O101N2O001N2N2O0O2O1N2O1O1O001N101O1O1O1O0O101O001O0O2O1O1O1O1O1O00100O1O101N100O1O10000O10000O100O2O1O00000O1000000000O2N1O2N2N2N3N2M4M2N1N3M2M3N1N3M3M2N3M3L4M3M3M4I9FSW^<", "size": [1280, 720]}, {"counts": "eon;7gW13N1O1O2N2N1O2N2N2O0O2N1O2O0O2O1N101N2O1N2O1O0O2O1N101O1N2O1O001O001N10001O001O1O1O1O1O2N1O1O002N2O1N1O101N2O0O101N10000O1000001O000O2O00000001N101N1O3N1N3N2N2M3N2M2O0O2N2O1O1N2O0O2O001N1O2N2N2M4L?A5J5L2JYVT<", "size": [1280, 720]}, {"counts": "`Wf;5iW13M2O2N1O1O2N101N1O2N2O0O2N2O1N1O101O0O2O1O0O2O0O2O001N2O1O001O1O0O2O001O00001O001O002N1O2N1O101N2N101N100O2O1N1O101O0O2O00010O001O000001O001N101N2N2N3N3L2O1N2O1N2N2O2M2N101N10001N2O0O2O1N4L4M2M3N1N2O1N101N2N100O100O2O00O11O1O0010O1O1N4ON010G^hN2gW11101N2LWU`;", "size": [1280, 720]}, {"counts": "fg^;6hW12O1O1O2O0O1O2O0O2N1O2N2O0O2O0O2O001N2O001N101O1N101O1O1O1O001O1O1O001O1O1O00010O001O101N1O101N2N2O4K2O2M102N00001O1O00000001O0O2O1N2O0O2N3N2M2O1N2N3N2M3M3N1N101O2M2O2M2O2M3M100O1O101N2O1N2O0O1O2O0O1O100O100O100Nl]_<", "size": [1280, 720]}, {"counts": "ooU;2iW16N1N1000001O001O1O010O1O100O1O10000O10001O0O101O001N2O001N101O1O1O001O1O1O100O2N1O10O0100O100O101N2O001N5L3M4L2N4L2N1O01N101N3M3M2O1N3M3M3N3M1N4M3L4L2O1N3N1M4L4Kc^g=", "size": [1280, 720]}, {"counts": "mgT;8eW16I5K5M10OOM5N2N2O010O2O00001O01O100O01000O100000000O100000O0101O0O101O000010O01O1O100O010O01O001O1N2H:EQQm>", "size": [1280, 720]}, {"counts": "RPV;9bW1:H5K7Ic0^O6J4L3M3N2N1OPObjN@]U1<jjNBUU17UkNGjT18XkNGiT16]kNFcT19bkNB_T1>b1N101O00100O10000O100O10000000O1000000000000001O0001O01O010O0100O101N2O1O2N001O101O3L4WiNSOWV1a1J20O1N2M5K3N2M9G5K2O1N3M2N101N2N2O1N2N3Le^g=", "size": [1280, 720]}, {"counts": "WPV;5fW1<D`0A9G:H5J4M2O2N2N1O1O1O1OXO\\jNUOdU1f0cjNYO]U1?ljN@SU1=RkNAoT1;VkNDiT1:[kNDfT1:^kNCcT1;ckN@]T1`0b1O1O1O100O1O10000O0100000000000O1010O000001O0010O0010O0100000000000102M0001N2O2M2N2N5IR`[>", "size": [1280, 720]}, {"counts": "Sio:1SW1m0K5K6J6K4L5L5K3N1O1O1O1O001OZOXjNUOiU1g0^jNVOaU1h0cjNVO]U1e0ijN[OWU1a0ojN\\OQU1a0UkN[OmT1b0[kNWOgT1f0[1O0O2O1O1O1O100O10000O010O10000000001O001O1M5Kgig00YVXO4N2N0002N001O2JQgW>", "size": [1280, 720]}, {"counts": "Rij:9YW1k0YOa0D6M3M20O1O100O2N101M201N2N2O1N4iNiiN>oV1M4L3N4K5L4KYfV11fYiN2N202N1O2ON3N2N1LPiN0nV18H8NN2N1O4K5Jjn]>", "size": [1280, 720]}, {"counts": "Pio::PW1h0K6I7I?B4M3M2N2O1O1O0000O1O2gNfjN@eU12RkNBRU1:\\1M3M4L4MlaZ15o]eN5fNMYjN<cU1R1N21O2M2O2M3M5L3L5K3N6I=BnVZ>", "size": [1280, 720]}, {"counts": "RQ[;3RW1>RiNJiV1j0J8J7H9G6K3M2O1O0000oN^jNEbU19djNC\\U1;hjNDWU17PkNGPU15VkNIkT14YkNJgT14^kNIcT16`kNH`T17dkNE]T1:e1O0O2O0O2O10000O1000O1000O100001O0001O0001O01O0010O1O10000000001N101O1O3N1^iNA^U1a0ZjNEgU1Z11N1N4M3M4L5K9G5J9H3M3Mjnn=", "size": [1280, 720]}, {"counts": "Uhh;;bW1:chNDeV1P1Ia0A5J4M2N2O0O2OlNajNH_U17djNH[U14jjNKWU13mjNJSU14QkNJoT13WkNJiT15[kNIeT15_kNHaT17dkNE]T19e101O100O1O1O1O010O10000O1000000000001N1O1O3Lihf>", "size": [1280, 720]}, {"counts": "U`Q<=_W1;bhNAjV1R1H`0_O5L3M1O1O2OkN`jNK`U14djNI\\U16gjNIWU16mjNHSU15RkNJnT13VkNKjT12\\kNLcT13bkNI_T15ekNG\\T19e1O2O1O1O010O1O100O10000O10000000O101O000001O00001O01O010O010O10001O1N3O0O3N2M3N3Me0\\ON1O2M4L4Ma0^O6J5K3KlV\\=", "size": [1280, 720]}, {"counts": "SQo;4kW14K3M4L5[OIYiN>]V1i0I8I3M2M3N1O1OmNZjNOfU1NbjNL^U15ejNH[U18gjNGXU18kjNFUU18PkNF\\2]O_o0l0XnNDnT19XkNBiT1<_kNZOeT1e0\\1N1O2O001O1O10O0100O10000O100000000O1001O00000001O010O01O010O10001N10O11O1O1O3N2M5L;RiNjNZV1_11N2N2M5Li0UO5LjnZ=", "size": [1280, 720]}, {"counts": "XQo;2jW17K3N2N3L5K8VOl0E3N2N2N010O1NnNVjN3iU1L`jNN_U10fjNMd2[O^o0g0QnNLVU14njNJQU14UkNHkT17ZkNDgT1;`kN\\OdT1b0]1O2O001O010N110O1O1O100000O10O101O00000001O00001O001O0010O01O10O010001O0O101O2N1O5Lj0VOO1O1N3M2N3M=mNViN6bW1FhfY=", "size": [1280, 720]}, {"counts": "XiR<6iW11M4M3N2hhNIdV1j0N2]Oc0L3N2O1O100O2NkN\\jN1dU1M`jN2^U1NfjNOZU1OljNLTU14RkNGnT17ZkNAhT1?\\1O2O001O001O001O00100O100O1O01000O1000001O0001O001O001O1O0010O0100O00101N101O1O3biN\\OYU1g0_jNA^U1b100OO2N2N3M2N3M:QO]iNMfW1D_VW=", "size": [1280, 720]}, {"counts": "]YP<1lW14M2O2M2N3N1ihNHeV1:WiNIhV1h0N1O1A?M4M2O2N1000SOniNNPV1LYjN2gU1M]jN0bU10djNJ]U15PkN\\OSU1c0U1O101N1O10001N10001O010O1O10O010000O1000000000001O000001O10O01O1O0001O01O100O1niNBaT1>XkNKfT17TkNMkT15PkNNQU13ejN6[U14VjN0kU1R12N1N3N2K6_Oa0G;@QPV=", "size": [1280, 720]}, {"counts": "\\Qo;3kW13N1N2O1N2O2N1jhNBiV1?UiNCkV1<ViNEiV1;ViNFgV1j001N2I7I6M4N2N1O2O0O10VOmiNGTV15m0O1O1O2N100O1N3N1O3M4Hnak0MY^TO6K1O2N1O1O1O1O1O100O1O100O1O10O1E=KmnU=", "size": [1280, 720]}, {"counts": "fQo;4iW13O2M3N2L4J6K4O001O0O2O0L4G:M3N1O2OTOmiNMRV12YjNDfU1<_jN\\OeU1c0l00O1000O100O110O000000100O1O101O0O2O1O1O1N101O1O01O01O01O001O001O1O001O1O1O1O1O2N2N2N1O2N<nhNSOYV1Z100002M2N2N3L4K5L8^OmgT=", "size": [1280, 720]}, {"counts": "]ag;2mW13L3M6J9H1N100O3N2N1O1N2L4K5M20001N101O0O\\OkiNASV1?TjN[OlU1d0g010O100O2O000000010O10O01O010O10O10000O10O02O00000000010O00001O010O001O010O010O10000O101O1O2M4N1N10M3N2N3L3M6DegY=", "size": [1280, 720]}, {"counts": "[al;5hW14M3L3O104K1O2N2N2N1O1MLQiN]OnV1l0M3N1N2O0O2NC`iN]O_V1a0giN\\OXV1d0a01O2O1O0010O0000010O00001O010O01O10O100000O100000O20O000000001O000010O010O0100O01000O100O100O110O10O1N2O0O3L4L6CaoU=", "size": [1280, 720]}, {"counts": "Ria<9bW18H6K5M6K6I3L3M3N2N1OAliNVOSV1i0QjNTOoU1k0TjNTOkU1l0d0O1O2O001O0O10010O000010O010O01000001O000000000000O101O01O0010O01O00010O01O100O2O0000010O012N1N3NO1N4L3G9_OkhNOc^n<", "size": [1280, 720]}, {"counts": "ng_=5jW14L3M3M2O2M3L4N1N101O00000000O100001O000000001O00000001O010O00010O01O01000O110O2N1O102M3N2M10O3K4L3L5WOlhN:iW1CQoa<", "size": [1280, 720]}, {"counts": "]Yd<8eW16K2O2N1O2M2O1N2N2L4N2N1N3N2L4M4N1N2OF:M3N20000O1O101N10000000010O010O1O1O100000000O1000O2O0000000010O001O001O01O00010O100000001O00011N2N3N0O2ON5K2M3L`0ZOV__<", "size": [1280, 720]}, {"counts": "RYS=4iW14J6G9K5M3L4K7K5K3M3N1O1N10@`0O100M3N3N1O10001O00000010000O100O1000000000O10000001O000010O0001O01O000010O10O10001O01O01O101O2M3N11OON2M<E3ChhNKa^Z<", "size": [1280, 720]}, {"counts": "nP\\=1lW17I5L1D<M4N4L3L5K6J6L2M2O1OZORjN[OnU1d0XjNXOgU1g0^jNTOcU1k0i0O2M200O101O0000010O1O001O10001O000000O1000000O0110O00001O0001O01O01O01O11O000000001O1O102N3L=DM4M3M3L;E5IbWo;", "size": [1280, 720]}, {"counts": "dhZ=1mW16I4M3M3K7J6J6K3M3M2M3N2N1O2O^OliNYOTV1f0PjNWOoU1i0UjNSOmU1l0c00000O101N1000001O01O0001O1O10O0101O0000000000000000O20O000010O01O00010O01O001000000010O01O1O6K2N1OO3I6J6JSXo;", "size": [1280, 720]}, {"counts": "iXn<1oW14K2M2M4M2N200O1M3O1N101N2N2M3M3M3N3N1N2M3M3N101N@jiNYOVV1f0b000O100O1O2O000O101O01O00000100O10O0101O0000000000000000000001O0001O10O01O01O0010000O10010O1O1O2O002N1OO3H8Jc0]OiWo;", "size": [1280, 720]}, {"counts": "\\WQ>:dW19G6K2N1O1O1O00000000000010O00001O01O01O100O100O100010O0O10O11O00000001O010O010O001O01O010O01001O01O01O2N101O00N4K5L>@Phg;", "size": [1280, 720]}, {"counts": "hhU=2iW15O1M3M2O001O0010O0010O0O3N3M?B2M2M3N2M2O10EdiNQO]V1m0<00000000O2O0001O01O0O100010O01O01000O10000O10001O0001N1000000001O0010O01O00010O010O0101O01O0001O101O1OO1M5K5J\\`k;", "size": [1280, 720]}, {"counts": "ZhZ=2lW14J5J5L5M4M8G5I5L3N2N100OF;N2O1N2O1O1O101O0O101O0010O010O0100O10000000000000000000000001O01O00010O00001000O100O1010O0001O2O1O6J3M00N6@\\iNYOgV1`0cPS<", "size": [1280, 720]}, {"counts": "i`o<2kW14M3N1N2O0000OO2N2H9L3O1O6I9G4N2N1O10O1O1^Oa0N3M2N3N2M2O2N1O20O01O00010O0010O1000O01O1O1N2N3N100000001O0000001O01O01O0100000000001O1O0010O11Nc0^O01M3M3M8YOTiNGUW10ZXT<", "size": [1280, 720]}, {"counts": "i`o<7hW12N1N2O0O010N3G8L3O3N4J;F5L3M3N1N2O00]OTjNSOlU1k0ZjNnNiU1P1e0M2O10001N1N20001O1O001O101N101O00001O00000000000001O0O1000000000001O010O1000001O010O1O100O3Nd0\\ON2N3M3M8XOQiNG`W1LogV<", "size": [1280, 720]}, {"counts": "mPh<7gW13M2O1O1N1O1O0K7M2N3N4L9F4M3M3O00O1]OhiN^OXV1`0miN\\OTV1c0oiNZOQV1f0e0M3N2N2N2N101O1O1O1O1O2O1O1N2O4K2O00[Qn02\\nQO8H7M4N100001N100O1000O1002L=DW`2Mm_M0Q`<OcfX;", "size": [1280, 720]}, {"counts": "ePm<7gW12L3J7N3N104M9G1N00000001N2^OXiNJhV13[iNMeV11]iNOcV1O`iNOaV1Km0N3OY`<1g_C0O000\\Wk=", "size": [1280, 720]}, {"counts": "Rae<8fW11O1O2N001O1L4J5O2O3M3M>B3L3O100O10O0[OliN@TV1?niN@RV1?QjN]OQV1a0h0M4K4N3M4L4LSXZ>", "size": [1280, 720]}, {"counts": "\\gS>1nW13N3L2O1O1O1O1O2N1O00001O1O1O10O01O10O100000RjN]O]T1d0`100O11eiNARU1?jjNDWU1<gjNFYU1:niN@1e0RV1P1102M2N2N2M3M4L<POU`_<", "size": [1280, 720]}, {"counts": "Wa`<2kW14N1O1O2N1N1O2O0O01O100O1O200016J4L1OO1O2N2M3N2N001O2O1N4L2NoU15kiN2O001O1N2O1O1O1O001O1O1O1N2O1O0000000000000001O01O01O00010O011O000000O200O2N4\\iN\\OcU1a11N2N2N3L2N5J;TOV`_<", "size": [1280, 720]}, {"counts": "QQh<4iW14N1O1M20O0100O1H8K5M2O2N4K:H7J2M3M2O1O\\OSjNVOmU1j0VjNTOiU1k0ZjNUOdU1i0_jNWOaU1g0cjNWO\\U1g0mjNSORU1k0R1N3N2O001O1O0O2O1O100O1000000O0100000000000000001O01O01O00010O01000O0101O001O1O102M6WiN\\OjU1\\12N3L3N2N4J=ROQiN4eV^<", "size": [1280, 720]}, {"counts": "ohk<5jW12M2M2O010N1DGRiN;jV1?N1O2M6K6K8I4K3N00\\OPjNZOoU1c0XjNZOgU1e0]jNYOaU1g0bjNXO]U1g0fjNWO[U1e0mjNUOTU1i0S1N1O101O1N101O1O00100O100O1000000000000O11O000000001O01O0010O01000O010O10001O2N1O3N3]iNZOdU1a10O3M2N3L3N7H9SOSiN6fW1Eo^Z<", "size": [1280, 720]}, {"counts": "hhf<3kW13M3N0O1O100O1J6N2N3N3L5J9G9J2M3N00AhiNXOVV1e0SjNVOmU1j0VjNTOiU1l0YjNSOfU1m0\\jNQOdU1n0h0M2O1O1O101O0O2O00100O1N200O1000000O100000000000000000000010O01O001O10O010000000O2O2N2O1aiNZO`U1g0ZjN\\OhU1k0kiNZOVV1W13M2M4M8WOZiNGdf`<", "size": [1280, 720]}, {"counts": "c``<7gW12O1N2O1O1N200ON2N02N3M4M3L5K6J6I6K3O2M2O1N2O1O00@niNUOPV1h0YjNSOfU1m0_jNoN`U1P1fjNkN[U1S1i0N2O1O2O0O2N2O1N10100O1O1O100O10000000000000001O0000001O001O001O101O2M:E_Y6O^fI8F6L5002M5L1O1N2L5LZo\\<", "size": [1280, 720]}, {"counts": "h`[<2jW1401N1O1O1N2O1O1O0O2OO2L30O1O1O0O3N2M4M5khNZOgV1R1K6K3M3O2M2O001O1N^ORjNWOlU1i0YjNSOfU1l0h0N1O1O1O101N101N2O001N2O1O1O100O010O100000000O101O000001O00010O01O00100O001O010O1O1O101M4GfiN2UV1:F92N2M5L1O1O1N2N2N]_Z<", "size": [1280, 720]}, {"counts": "iXZ<1jW1500O1O2L3O1O1O0O2OL400O11N001O2M3N2N5J<C6K4L3O1N2N101O1O^OkiN[OTV1d0TjNVOkU1j0ajNmN\\U1S1fjNlNYU1S1j0O1O1O2O0O2O1N101O1O001O1O1O100O10000O1000000000001O00001O010O01O01O10O010O100000001O2O2OO00Oh0ZOUOfiNIZW1O9EZg`<", "size": [1280, 720]}, {"counts": "iXU<1lW13M4M2N2O1O00O001O011OO01O10N2O1O3L4L5ihNAgV1o0K3M4L3N1O2O1N2O1O2NYOXjNYOfU1g0^jNVOaU1i0ijNoNVU1Q1ljNnNTU1P1ojNoNPU1P1Q1N10000O2O1O1N2O010O1O100O1O1O100000000O11O01O0000010O001O001O010O1O010001N1liN]OkT1b0RkNBmT1?ojNDQU1<kjNGWU19djNJ^U16^jNLdU14XjNMkU16miNMWV14biNMmV1_O\\iN>XW1K9FU_d<", "size": [1280, 720]}, {"counts": "hXU<3hW16M3M10O1O010O0100O00002M2N3N2M3Mb0]O6K3N2N1O2O1O1O1O2M\\OVjNVOiU1h0]jNUOcU1i0ijNmNVU1R1mjNmNRU1R1n0O2O001N101N2N101O1O1O1O100O100O10000O10000000000010O0001O010O1O001O010O10O1001O0010fiN@RU1`0gjNE[U1;`jNHbU17[jNKgU15TjNNQV15diNNUW11O2O13Leof<", "size": [1280, 720]}, {"counts": "iPT<2kW17I3N3M01O1O1N11O010O001N2O2M3M5J7I?B3N3N1N2O001O2M@QjNROoU1k0ZjNPOeU1P1cjNiN\\U1V1h0N1O1O10001N2O0O2O1O1O1O1O100O1O01000O10001N100000010O00001O00010O1O1O00100000O1000O2O1O100O11PiNKQV13liN0PW12K5001N101Ofof<", "size": [1280, 720]}, {"counts": "d`l;6hW13L300O001N10O0O20000000O1O101M3N3M4K8G8J4K4M3M2O1O001N^OQjNWOnU1h0VjNVOiU1j0[jNSOdU1l0gjNmNVU1R1ljNnNSU1Q1n001N10001N2O001N2O100O1O1O10000O100000000000000000001O010O0010O01O100O1O01000000010O100000TiNFQV1?aiNHfV1e0;E5K2N5J8H[ok<", "size": [1280, 720]}, {"counts": "f`l;6fW15N1N2O1O00O00000010O001N2M4N2M5J8I8H6K3M2N2O1N2OXOUjN]OjU1c0ZjNZOeU1f0^jNXOaU1h0ajNXO]U1g0ijNUOWU1h0SkNQOlT1n0T1O0O1O2O001O1N10100O1O100O100O100000000000000000000010O0001O1O010O1O0100O01001O01O10O01000YiNFfU19SjNNRV1LhiN:eV1:4K5K3N>AZ_n<", "size": [1280, 720]}, {"counts": "fXk;6fW16M2M100000N20O001O010N101M4N5K6I<D4L4M2M3O1N1O2OZOPjN^OoU1`0XjN\\OgU1d0]jNZOaU1e0cjNYO\\U1g0hjNVOXU1h0mjNUORU1k0RkNPOoT1o0R1O000O2O1N101O1O100O00100O1O100000000000001O01O000001O0010O01O01000000O1000010O1eiN\\OWU1f0_jNBbU1`0SjNHnU1U11N3N1N5K7I4L4K6J7I9D\\Wm<", "size": [1280, 720]}, {"counts": "`Po;8gW13M1O1N2N00O2O1000O1O1M4L3N5L4L7I7H4L4L3O1N2O0OZORjN^OmU1b0WjN[OhU1e0ZjNZOeU1e0_jNYOaU1e0djNWO\\U1h0o0M200O1O101N2O00100O1O1O1O100O2N4M9FmPY>", "size": [1280, 720]}, {"counts": "hXZ<2hW17L101N20N1010O1J6K5M3N204J7I:F5L3M2O1N2O001OYOSjN\\OmU1c0YjNYOfU1f0^jNXOaU1f0djNXO[U1e0ljNXOSU1f0U1N1O2N1O3M2N2O3M6J6GRQY>", "size": [1280, 720]}, {"counts": "cX_<7eW15M3M1O1OO2N1000I9L4M4M5K7I5J4L3M3O0O1O1010YOTjNYOlU1f0XjNXOgU1g0]jNVOcU1g0djNUO\\U1j0n0N1N4M2N3N4L4L4L5IlhW>", "size": [1280, 720]}, {"counts": "c``<3iW16M1N2N1O10N2OO3B=M4N3M3L5K6K6J30O003M4K3XO`iNKdV1OciNLaV1MdiN1XW1N2Lbob>", "size": [1280, 720]}, {"counts": "hPc<2iW16L4M1000OUOOiiN2TV19biNH^V1m0N4M2M4L5M3L2O1O1NSO`jN]O`U1`0gjN[OZU1`0PkN[OPU1c0X1N1N3N10001O001O1O101O1N3N5IYYU>", "size": [1280, 720]}, {"counts": "dha<6gW13N2N2POLSjN4kU16miNJPV1S103L4M3M2O2M2N00oNejN@[U19ojNDQU18ZkNAfT1>_1N10001O001O1O010O010000000000000O100000O2O000000O10001O3L`ag=", "size": [1280, 720]}, {"counts": "bX_<9dW13ROMniN5nU15iiNMTV1:eiNIYV1o0N4M4K4M2N101O0OmNhjNAXU1;ojNBQU1:\\1O1O2O00001O1O10O01000000O10O10000000000000000O11O00001MXba0CV^^O20N2OWWW=", "size": [1280, 720]}, {"counts": "b_[<9eW18ihN@_V1g0[iN_O^V1V1K7H6K2N2N2N2O00nNdjNB[U1:PkN_OPU1?YkNYOhT1e0Z101O001N100010O010000O1000O1001O00O100000000001O1O100O2N10O1O1O00100N2O100O1O3N2N1O3^iN\\OaU1g0WjN_OhU1c0QjNBoU1W1101N2N2N4L4M2M9G4M6I4L4L5J5L4KSQT1MQljN0S\\f;", "size": [1280, 720]}, {"counts": "dPo;6iW11O2L3O1O2WO4ZiNObV1m0J6J2N3M1O2NSO]jN@cU1=fjN]OZU1a0ljNZOTU1e0QkNWOPU1h0T1N2O1O101N101O001O010O100O10O1000000000000000010O0O10000010O0001O00100O100O101N3N1hiNAkT1a0ojNDQU1`0gjNCZU1a0]jNCdU1\\1101N101N2N2N2N3L4M7I:E8I4KboU=", "size": [1280, 720]}, {"counts": "Xal;2mW14L1M201O1WOOaiN4ZV1m0L8G5MXORjN@lU1`0YjN\\OgU1b0]jN]OaU1a0hjNYOXU1f0ljNVOUU1g0R101N2O100O101N10001O0O20O0100O10O100000000000001O00010O001O001O01O01O00100SjN]O[T1d0bkN_O]T1c0^kNAbT1?ZkNDgT1=UkNEkT1<RkNFoT1<ljNGTU1b0\\jNDeU1[11O1O1O2N2M2O3L3N2M4`NiiNQ1kV1H3L3L8ImfY=", "size": [1280, 720]}, {"counts": "SYf;<cW11O1N2O2L3K5_Oa0M3M201O_OliNWOSV1g0d0M2N3N2O0100O02O000O10001O00001O1O01000O10O0100000000001O00010O0000100O001O01O01O1O010O102giN]OPU1g0gjN^OXU1i0ZjN_OfU1]10O2O1O2M3N2M2O2M4M2M6PObiN3bW1Ci^b=", "size": [1280, 720]}, {"counts": "Xi^;3kW14L3N1OO1O1O20N1001N2L03@e0Hb0@3M1O2N101NWO^jNVOcU1h0j0O2O10O10O1O2N1O10001O001O1O010O100O10O10000000010O00001O0010O01O00001O010O00100O100liN]OiT1g0njN_ORU1c0ijN_OXU1e0_jN_OaU1`12N1O2M2O2M3N2M3N2L9Higc=", "size": [1280, 720]}, {"counts": "WYk;5iW14L2O2N100O100N2N3N2O01O002M5K4L4LYn\\1OhQcN7I8hiN^OdT1e0YkN[OgT1f0SkN_OnT1b0njNAQU1b0jjN@WU1h0]jN\\OcU1`1010O2N1O2M2N3N2M4M2Ng0XO=AonZ=", "size": [1280, 720]}, {"counts": "XiR<7fW15L3N1O1O1O010O100O11O1O001N1O11O0100O1O2O2LU^U1HP\\iN7PT1KnkN6QT1LmkN5ST1LlkN4TT1MkkN3UT1NjkN2VT1OikN1WT10hkN0YT1OgkN1ZT1OekNO^T11akNMbT12_kNMbT12^kN0`T10`kN0aT1NakN1`T1Mia7OQ`H2N100N11M3O1Oe`i<", "size": [1280, 720]}, {"counts": "bia<1gV1b0iiNESV1b0eiNDVV1V1L4L3M2N2OPO^jND`U16ljNETU18RkNEnT19VkNEjT1:\\kN@dT1`0^1O100N3O00001O10000O010O1000000000O11O000001O001O0000001O00010O1O100O2niNC^T1>^kNFaT1:]kNHbT1:YkNJgT19SkNIoT19kjNIUU1<cjNH^U1\\11O1O2N1O2N2N3M4L6J9G2N2N103K4L4B?Jgnf<", "size": [1280, 720]}, {"counts": "k_`<=_W1<F?A=C3M2N2N2OmNdjNC\\U19kjNDTU1:QkNDoT1:WkNBjT1<]1O100O100O2O1O010O10O1000000O11O0000O10000000000000001O1O010O1O2O0O100O10001iiN@kT1a0QkNBoT1`0kjNDUU1>fjND[U1>`jND`U1g0PjN_OQV1W12N1O2N1O2N2O4K8H9G:F4K5KVWm<", "size": [1280, 720]}, {"counts": "X`[<a0VW1<I6L9F4M2O2N1O2N1O3M2N10[OXjNSOfU1g0cjNWO]U1>PkN@oT1>UkN@lT1>XkN@hT1?ZkN^OgT1a0]1N2O001O100O10O010000O10O10001O0001O0000000010O010O10O10O100000001O1O011O00O10[iNG`U1<YjNHiU1<liNHWV1o03M2N8H8H4K4M3K5KonP=", "size": [1280, 720]}, {"counts": "lgW<:cW16L4L4L4K7K6I4K4N0O10N2L3N3M3G8K6M3N1O2N2O001O1O1O010O1000000O10000000001O00001O010O1O010O10O101O00O1000100O1O11ON5JSa21`^M>5J2N001N5LiVW=", "size": [1280, 720]}, {"counts": "nP^<7dW16M2M4N2N0O05@ghNMQW6O>6PPK4O1000100000000O1010O00000000100O1O1000O1000O02O0001O001O100O010100OO3?B10J5J3N4K3N1LkfY=", "size": [1280, 720]}, {"counts": "Z`Q<6hW17H5M4K4L4M4L4K5L3M2O0O1O01N2N1N2O2M3M3L3O2N2M3M2N3L4N3K5HaPm>", "size": [1280, 720]}, {"counts": "bhR<=_W17K5J4L4M3N2N2M2N2OO1L4N3N1J7J5N3N1O2O1N101N2O1O01000O1O01000O1000O10000001O0000010O00001O001000O11MV`Q>", "size": [1280, 720]}, {"counts": "\\aQ<5fW1b0]O7M3M2M4M2N2N2ON1E<M3L4K5N2O1N2O2O00001O001000O0100O1000O100000O1000000000001N2O1M4Lh_[>", "size": [1280, 720]}, {"counts": "XPo;;bW17I6K4L4M2M6I5MJ6I7K5L4N2O100O2O0O2O001O1O010O1O010000000000000000000000000001O0100O3LhQ?Hkm@5TiN0iV15nhN0SW1>001N2O0O3N2M8I4HQo_=", "size": [1280, 720]}, {"counts": "^PY<8fW15K6I4M6I4MO2O0N3J6L4N2O1O10001O00100O010O0010O01000000000O100000001O000000010O001O10O010001O0O2O00001O0O5ciNXOYU1k0bjNVO`U1m0RjNROI5UV1`11O2N2M3N2N5J6K4K5K9G6J8HdfT=", "size": [1280, 720]}, {"counts": "_X_<1hW1=G6K6J3M5K00O1M4J6L4O1O1O101O0O101O00100O010O100O1000O1000001O0000001O00001O00100O1O010O100O100O101O1O1O1O3M2N104K8IN1N3M4L6J6I7J6H[oP=", "size": [1280, 720]}, {"counts": "^Ph<=`W17I5K5L4L3M3M10J6H8M3O1O1O101O1O001O1O010O100O10O1000000000001N1000000000000010O0010O10000O10001O0O2O1O1O1O2N100O2O7IM4M4J5L7I4K7GW_i<", "size": [1280, 720]}, {"counts": "\\hf<9dW18G7K5K5J5L2N2O1OD<K4M5M2N2O101O001O100O010O100O01000000000O02O00000000000010O01O00100O010O100O10001O001O1O2N3M1O2N101WiNPO^V1Q1:O0O5J3M5H7I\\_i<", "size": [1280, 720]}, {"counts": "igP=4iW15L3N2N1O10000O101O0O1000000O1000000000000000000000000000001O010O100O100O100O20O01O2N1O1O2N2N4L3NM5L2L9G8I7F]_n<", "size": [1280, 720]}, {"counts": "UPh<5iW17I8H6J:F4L3M3M2O2O01BciNWO^V1:l0LdiN@`U1=S1M3N5K2NV`2Ofgl02ShPO2M3N2N2N2O2M3M3N4L4L4ViNQO]V1X11O1O2N3M3K7J6I4Lcof<", "size": [1280, 720]}, {"counts": "WXn<=`W16K5K6K3M1OO100K6H7K6M2O1O2O0010OO10010O00010O0100O100O100O100O2O0O100000001O001O1O1O0100O0100O100O101O2N1O1O2N2N3N2UiNPO_V1X11O3M4K4M6H6J7J]oa<", "size": [1280, 720]}, {"counts": "]Qm<1nW13M2O1O001O00001O001O1O1O1OI`hNN^W12801NYoW12fPhN2O1N2O2N3M4L3RiNZO[V1k0]iNYOcV1R100OO106J6J8G8GRWc<", "size": [1280, 720]}, {"counts": "Wik<4jW16L0O2N2O0O10001O0O2O1N1010OM^OUiN6\\W1N1O1OPh[1MSXdN1OO_nP=", "size": [1280, 720]}, {"counts": "_Pm<8dW19I5I6M4K4L3M00M4M3K5M3M3N2O2N1000100O010O10O01000O10000000000000001O000000001O00010O010O100O100O100000001OO1O1O2L3JVXm<", "size": [1280, 720]}, {"counts": "^Pm<8cW19I5L4L5J5K5L3N1OG9H8N2L4N2O2O00001O1O10O0100O1O10000O10O100000001N100000010O0010O01O01O01O10O10O101O00002N1O1O1O101N3N108FO8E8I5Gb_d<", "size": [1280, 720]}, {"counts": "n_o<>_W15K6I7J8I4M2M2O2NDoiNmNnU1m0ZjNROeU1g0djNXO[U1d0jjN\\OVU1b0T10001O0010O01O1O10O0100O1000000O11N1000000000000010O00010O010O010O010000O100000O100O2O001N2O1N6GXPg<", "size": [1280, 720]}, {"counts": "agV?6W1LYU18_jN0]U15ZjN0fU12WjNOiU11VjN1iU10VjN0kU1OTjN2mU1MSjN3oU1LPjN4RV1JmiN7VV1EliN:nV100N2O002N2M2O1O1O001N2N1O2NSom;", "size": [1280, 720]}, {"counts": "n`c=1oW11YhNO]W1:010O1O1O10O010O1O001000N3N1O0000004L1OmV`00Si_O0O2N1O100N2O1N3M3N2O0O2N5K3M200O1001O0O2N3N4K3L6K5JZoR<", "size": [1280, 720]}, {"counts": "iPa=1nW13M4L3N3M2N3M3M2N1O10O2O005J2O4J5JWh[12hWdN3M2O2M2N1O2O0O2O1O2N0100O3M3M4L8GSVj;", "size": [1280, 720]}, {"counts": "Shd=:eW15K4M3M1O3M;E1O0001[O\\iNMdV1JeiN6\\V1DiiN;nV101M6IZXY1NhgfN7K2O100O2O000O1001O000O10000O10O01O1O1O3L[^f;", "size": [1280, 720]}, {"counts": "_`c=;`W19J3M4ZiNYOmU1m0liNVORV1o0eiNXOXV1Y1N2N2O\\OXjNSOfU1h0`jNXO_U1d0fjN\\OYU1a0kjN_OTU1=QkNCnT1:WkNDiT1:[kNDeT1;^kNCcT1;`kNBaT1>`101N2O001O1O00100O100O1000O10O100000000001O0001O01O00100O10000O10000kiNGbT19ZkNMdT14WkN1hT10SkN4mT1NojN5PU1MmjN4SU1OhjN3YU16YjNMjU1T11O1N2O2N2M=D6I9H5J2O3L3M4L4LPfb;", "size": [1280, 720]}, {"counts": "ga^=7hW11M2fN;XjNHfU1;WjNGgU1<UjNGiU1=RjNGkU1X1N3MQOUjNMjU11]jNJcU14ajNK^U12gjNMXU11ljNMSU10SkNOlT1OZkNMfT11^kNMbT12bkNK^T15ekNH\\T16hkNGXT19h1O1N1010O01N2O1O010O10000000000000000001O000000001O00010O10O10O10O10iiNHeT17XkN1eT1NXkN6hT1HWkN;iT1BWkN`0iT1_OVkNc0SV11O010O01O1O100O1O2N2O1N4L2NYnh;", "size": [1280, 720]}, {"counts": "XaY=1^W16hhNNTW1a0]O[OhiNi0SV1d0O1000O10000cNgiN0Lm0nV1N101N3M3N5J4L4L3JW^U12jajN3M3diN1bT11[kN2cT11YkN2fT1OXkN3gT10TkN2mT1OojN3RU16ajNM`U1Y12M3N2N2N2N3L4M=C4L7H=D:FR_P<", "size": [1280, 720]}, {"counts": "dPm<3lW11O1M3O1\\Oc0L300010O1N1O20O1000O1O2M2M3O1O2O001N110O001O001N2O10O01000000000000000000001O000010O01O010O00100O100O0niNDaT1=ZkNGfT1:VkNIjT19QkNIPU1:ijNIXU1_11O2N2N3M3M3L6B_iNQOhna<", "size": [1280, 720]}, {"counts": "aYd<:eW18I2K;E5NO1UO^iN5[2DdQ15TlN3m1:jQ1CVlN3P2>jQ12UnN0jQ1OVnN4hQ1LXnN5gQ1JYnN9eQ1G[nN:dQ1E]nN9eQ1F]nN7eQ1I[nN6gQ1H[nN9cQ1G]nN3cM_OPT1<^nN=aQ1C`nN=_Q1BcnN?\\Q1_OenNb0[Q1]OdnNg0ZQ1VOhnNm0VQ1QOknNP1YQ1iNinNX1PT104G^cQ1VO`]nN0O2N2N4M3N6I3N3M0002L3N3M6Ibof<", "size": [1280, 720]}, {"counts": "nTh<;_V1FSjN3Be0bV1c0M3M4M4hMZNmmNk1nQ1VNRnNn1aQ1[N_nNh1]Q1YNbnNk1ZQ1VNfnNl1mo0hM\\oN;h0n1ho0jM`oN8h0o1fo0jMboN6i0P2fo0iMaoN7i0o1ho0iM_oN7k0o1ho0hM]oN8m0o1QQ1QNPoNn1PQ1QNSoNm1nP1RNToNk1mP1SNWoNi1lP1TNXoNh1jP1WNXoNb1fS1M5K7G6I:^OnhNHZT60c[L0igN3O0M4O3NL5M101OoW11ngN3O1N101N20M2O3N001N1000002MUVR=", "size": [1280, 720]}, {"counts": "Te`<2iW1:J2G9N4MJ6N1O4@dhN8iW1I2NWS1:\\lN5VmNO^m05kQOd0Pn0_OVQO]1en0eNZQO]1cn0eN^QOZ1`n0hNaQOW1]n0kNeQOS1Yn0oNiQOn0Wn0SOjQOl0Un0UOlQOi0Tn0XOmQOe0Tn0[OnQOc0Rn0ZOTROc0mm0XO[ROd0em0ZOaROb0`m0[OeROb0]m0[OfROa0]m0]OkRO:Ym0DSSOKTm03PSOHSm06^5M2N4M2MiYj04PfUO5L3O1O001[OBeiNa0[V1_OaiNd0`V1]O\\iNd0fV1^OTiNe0mV1700001N101O1N2N3L4L4L4M3M2O00h^Z<", "size": [1280, 720]}, {"counts": "jYi<3iW15M2M30OO000UOOjiN1TV16fiNJYV1n0O01O13M<D6K1N2OUO]jN[ObU1a0fjN[O[U1`0kjN^OTU1`0PkN@oT1>UkN@kT1`0[1N1O2O001O1O001O100O100000000000000000O1000001O000001O0010O010O10000000001N101giNAnT1b0ijNEWU1=bjNF_U1^10O2M4M3M4L4L3M8F;BQW^<", "size": [1280, 720]}, {"counts": "QhP=:cW16TiNEjU1b0niNDmU1b0miNBPV1b0liN@RV1d0jiN]OTV1Y1O0OZO`jNoN`U1l0l0M3M3O2M2O1000001O10O01O100000O10O100000000001O00000000001O001O0010O0100O1O10000O1001OO104L2O1`iNXOcU1c1000O2N3M3M4L4L6J4K4M5K3M4L3L5KonW<", "size": [1280, 720]}, {"counts": "m_j<5gW18I5WiNEgU1>UjNGfU1>UjNFgU1`0RjNDlU1?niNBTV1;miNDVV1>liNXO[V1h0>O1M3M3N2O2O001O000010O10O01000O100000000000000000O101O0001O0001O1O001O100O100O1000001N11O01O1O3M3YiNTOTV1]1O01O2L3N3L4M3M7I2N1O4L4K5L1O2M3N3M5KRoW<", "size": [1280, 720]}, {"counts": "kog<9dW16I6K6XiN_OhU1g0PjN_OlU1h0oiNXOQV1Y11G:O1D<N2L3O3N1O101O001O010O10O10O10000000000O02O00000000000000001O010O001O001O10O10O100000001O0010O01O2O2TiNRO0NWV1c10N2N2M6K2N4K6K2N1O5K3M2N2N2M4L3LZg[<", "size": [1280, 720]}, {"counts": "PPc<1kW1:G6WiNAhU1e0RjNBeU1e0VjN^OhU1g0SjN[OjU1j0TjNUOlU1Q1niNmNSV1^12K5O1I7A?M3O2O001O001O0010O10O1000000O10O1000000O2O000000000000010O001O10O010000O10000000001O1O002N1O2ViN^ORV1X11N1O3M4L3M5K4K3N2N3M4L3M2N2N2N2M5IV__<", "size": [1280, 720]}, {"counts": "nWd<6fW18I5J6J7[iNWOkU1n0QjNSOmU1Q1SjNmNkU1Z1:001O1O^OfiNSOfV1i0:O1O2O001O0000100O10O10O100000O10000000000000000000001O001O0010O0100O10O1000O1000001O001O100O2_iNQOlU1d1OO1N3M4L3L5L4L2N1O4L4L3M3M2N3M4JV__<", "size": [1280, 720]}, {"counts": "oog<3hW1:H4J8J6J4aiNQOiU1T1QjNPOlU1b10GQjN`NQV1`1700B>K5N2O2N101O00001O10O010000O100000O10000O1000000000000001O01O1O010O1O00100000000O10001O01O01O011N3N>B1OO2M4L3M4L2N2N2N5K2N2M3N3M1O3MY_Z<", "size": [1280, 720]}, {"counts": "TXn<5gW18H7SiNDlU1b0PjN@lU1g0niN\\OoU1j0liNXOSV1[1N10JoiN_NPV1^1:N2F:J6M3O2N101O001O0010O01000000O10O100O011O000000000000000010O0001O10O10O10000O10O100001O1O011N2N3M`0B00M2N3M5K5K2N3M3M3M2N1O3M2N2N2LU_U<", "size": [1280, 720]}, {"counts": "SXS=5gW18ohNJmU1;PjNFnU1?liNERV1?jiNAVV1c0fiN\\O\\V1f0`iNYOcV1n04L40OH9J6J6L4N2N2NQX;KVhD0ko42SPK3L100O1O1O2N1O1O2N101N1O2O1O1N2O100O100000001O1O100O4TiN[OUV1[1OM2N3M3L7J4L2N1O4L6J3N1N2N2N3KRgQ<", "size": [1280, 720]}, {"counts": "WiZ=3jV11QjN5jU12PjN0nU16kiNMUV16giNJZV19aiNI^V1l01O1H8N24L6J0010lNmiN9TV1DPjN:lV1N3N2Lcfg0JeYXO1N2N3L3N101N2N2N1O2O1O2N1O0010001O001O3N2Me0\\O1OO3L3M3M5K2M6K3M2N3M3M2N2N2M3N3LQgg;", "size": [1280, 720]}, {"counts": "Ra^=7iV11niN0nU17liNLPV1<iiNGTV1>iiN\\OZV1Q142N3M3M8I5K2NVO]jNYObU1b0gjN[OYU1c0jjN\\OUU1b0QkN[OnT1d0VkNVOnT1h0U1O101O1O1O010O100O1000O10O10O1000000000000000010O0000100O010O10O100000000001O00100O2O1RiNBVV1W1OO1M2N5K5K5J5L3M4L3M4L3M2N2Nm^f;", "size": [1280, 720]}, {"counts": "iPW=2mW13L1N3^OMUiN4gV1d0N2N3L4N5K9G3N2N00]OSjNUOkU1i0]jNQOeU1l0h0N2O1O100O2N10001O00100O100000000O10O1000000000000001O000001O001000O01000000000O100001O1O3N3ZiN\\OhU1^11N3M3M3M9G6J<D2N2M:CR_P<", "size": [1280, 720]}, {"counts": "\\hk<6gW14N0N10010M2N3O0O3N3L`0_O5M2O1O0001J6K5M4L3O1O1O1O1N2O1O1O1O100O010000000000000000O1O010O1O2N1O1O100O2N1O100O2O1O1O10O010000001O10O4YiNmNXV1`1OO2N2M3M<D3M5K7I5K_WY<", "size": [1280, 720]}, {"counts": "TP^<3lW12N0O2O0OO1101O000O3M3M4fhNEiV1j0N3M2M3N1O1ON3M4M201N200O2OO01O100O1O1O100O10O10000000000O10000O100O10000O2O0O1O1O101O00010O1O0010O1000O02O10O>CO0O2N3M4L3SOUiN?YW1M<D3M5K]Wc<", "size": [1280, 720]}, {"counts": "Zhm;6eW15O1O1ON2O1000000O1001O1N2N2ihNBkV1o0I2N2N0O10L4001O100000010O0010O00000010O00010O10O100000000000000000000001O0001O01O01O001O0100O00100000O100002O=B2O0OO2M3M6J8SO\\iNMnnU=", "size": [1280, 720]}, {"counts": "YXf;2jW14O1O001N101O00O10O1M3L6RiN^OZV1d0_iND^V1?ZiNIcV1j0O2M2O2N00CjiNROWV1k0?O3O00001O000O110O00001O01O010O0100O10000000000000000000000000010O001O0010O010O100000001O1O2O1N7Ib0_ON3N2M5K3dNfiNk0\\W1YOa_]=", "size": [1280, 720]}, {"counts": "_Xa;4kW13NO01O1O00O102K`X63TgI>OO010O3M3N2M5JXn>MlQA6J3M3N4L2N1N2O001O00000000010O0001O001O01O010O10O10000001O010O2N2^iN\\OcU1j0jiNCWV1S11N4M4K7I6Ja0_O5J7HYo_=", "size": [1280, 720]}, {"counts": "i`S;2nW12UhN1aW17O100N1000M3O010O1O1000O001E;M3O1O4Ke0[O3N001O@iiNZOWV1a0TjNZOkU1e0ZjNWOfU1h0ajNSO^U1l0k0O1O1O2O0O101O001O1O1O010O2O00000O2O00001O00001O1O1O001O010O001O0010O10O10O1O2O0O2N2O1O1aiN@[U1`0XjNLiU15miN4SV1l03N2M5K8H8H:F4K;Do^g=", "size": [1280, 720]}, {"counts": "iP[;3lW12N001N1O1O0E=L2O2O3L5XiNSOUV1b1J2N2O0O10YOTjNZOmU1e0WjNXOiU1g0[jNWOdU1h0`jNSObU1m0`jNPObU1n0h0O1N2O2N10001O1O1O10000O100000O100000000000000000010O0000010O01000O1001O0001O00010giN[OTU1f0bjND^U1<\\jNIeU1X12N3M3M;F3L=B8H9FlVk=", "size": [1280, 720]}, {"counts": "Sa];7fW13N2N1O00O2M111OCKPiN7kV1`0O2M3M4N4L>C5J2O1O1OVOYjN\\OgU1b0_jNZOaU1e0cjNXO]U1e0hjNYOXU1f0kjNXOVU1f0R1O101N101N200O00100000000O10000000000O100001O0001O000010O01O100O1001N101O010O1O100O1]iN\\OiU1i0eiNC\\V1P14K5L2nNViNh0TW1M1N5L3M3M3M4KQ_b=", "size": [1280, 720]}, {"counts": "XYa;3kW14mkNJUP18i30000O00011MB0nhN2mV1c0N1M4N4M4L<E6I3N2N1OVOYjN\\OgU1c0^jNYObU1e0bjNXO_U1g0djNWO\\U1g0hjNWOXU1h0mjNUORU1k0R1N1O2N101O1O1O100O10000000O0100000000000001O0000010O00100O1O100O10O101O1O1O010000003UiN]OQV1e0ciNE_V1m04K4M4K5K5K5K3L4M2M3Mj^]=", "size": [1280, 720]}, {"counts": "]Qe;2mW13L2N101OO0010O1A>N3O1K5M4N4L`0A2M2N3NWOWjN[OjU1c0\\jNYOdU1f0`jNXO`U1f0djNWO\\U1g0hjNXOXU1f0kjNWOUU1i0Q1O2O1O0O2O100O100O1000O10O1000000O10000001O000001O000010O01O100O1000000001O002O0O010]iN@eU1`0PjNIQV1R14L5K4M5J7I5K4K5Ke^]=", "size": [1280, 720]}, {"counts": "]aQ<1nW13L4M1N1O1_OOTiNNlV1b001N4L4M3O2M7\\iNfNWV1e1K3N2NXOXjNYOhU1e0_jNUObU1j0bjNSO^U1j0hjNSOXU1k0ljNSOUU1k0njNTORU1i0S101N2O1O0010000O10000O0100O1000000000000001O00010O0010O0100O10O1000001O1O011N01001UiNBPV1W14K6J3N3L3M3M1O0YOmhNa0]W1K8Gc^S=", "size": [1280, 720]}, {"counts": "cXd<:bW18I<A6M3O1N3N2M:G5K3MUO]jNZOdU1a0djN\\O[U1b0ijN\\OWU1b0njN[ORU1e0ojNYORU1f0QkNWOQU1h0S1O200O10O0100O1000O01000O10000000000001O00000000100O0100O010000O11O001O010O100O2O3WiNUOVV1\\10N4L3L3M2N5K5L2L3N3M3Mbnf<", "size": [1280, 720]}, {"counts": "bQm<7lV13giNLVV1;fiNCZV1d0aiN\\O\\V1j099H2N3M2O3MMciNjNWV1k0UjNXOgU1d0`jNZO_U1c0fjN]OYU1`0jjN@UU1?njN^OSU1a0W1N11O001000O10000O10O10O1000O10000010O0000000000010O0100000O01000001O00000001O03M3Od0[O00O1N4L5L5J4L4L3M2N5K5K3MYn\\<", "size": [1280, 720]}, {"counts": "g`T=6fW19G7J6J6K:F2O1N2O_OliNWOTV1f0d0N2O2MliN\\OQU1c0QkN\\OoT1d0V101O001000000O010O10O10000000000000000000010O001O0010O0100O100000000010O01O00100O1XiNVOYV1_1J1ON4L3M4M3L7I4L3M3M2N5K3M3KV^U<", "size": [1280, 720]}, {"counts": "m`T=>c0HRV1`0hiNBTV1d0jiN\\OSV1h0kiNXOTV1X111O2O2N3MVOWjN@gU1=djN\\O[U1b0kjN_OQU1?QkNAnT1>TkNBkT1>WkNAiT1>\\10100O0100000O010O10000000000001O00000000001O010O010O010O101O00001O001O002O0O10f0ZO00N2N3M3M2N3M7I4L3M1O6J1O2N4LQfV<", "size": [1280, 720]}, {"counts": "bPk=6gW15N1N1O2N100O1O1O10001N101O001O10O010000O10000O011O00001O002Nd0]O1OO1O1O1O1N2N2N3M4L3M1O1O2N2N4L4L4LP^Z<", "size": [1280, 720]}, {"counts": "RbU?6iW13N1O1O1O0O01000O100O1O1001O012L8IhmW<", "size": [1280, 720]}, null, {"counts": "ihQ?2lW1:H4M2M3N2N8H6K1O01O1O2M0O1O3N8F8I3L5JmUY<", "size": [1280, 720]}], "bboxes": [[286.0, 497.0, 69.0, 77.0], [278.0, 487.0, 70.0, 75.0], [267.0, 471.0, 83.0, 88.0], [270.0, 465.0, 87.0, 94.0], [268.0, 458.0, 98.0, 101.0], [262.0, 443.0, 109.0, 106.0], [262.0, 438.0, 118.0, 114.0], [266.0, 442.0, 118.0, 122.0], [266.0, 430.0, 155.0, 130.0], [265.0, 415.0, 134.0, 139.0], [267.0, 410.0, 143.0, 142.0], [287.0, 405.0, 142.0, 156.0], [304.0, 403.0, 144.0, 157.0], [325.0, 407.0, 133.0, 152.0], [319.0, 419.0, 130.0, 136.0], [302.0, 441.0, 120.0, 122.0], [290.0, 454.0, 117.0, 114.0], [292.0, 459.0, 103.0, 103.0], [299.0, 474.0, 102.0, 99.0], [306.0, 480.0, 103.0, 104.0], [299.0, 475.0, 126.0, 129.0], [293.0, 486.0, 107.0, 100.0], [286.0, 488.0, 82.0, 85.0], [285.0, 477.0, 53.0, 45.0], [286.0, 481.0, 82.0, 80.0], [286.0, 482.0, 66.0, 77.0], [281.0, 485.0, 74.0, 76.0], [277.0, 504.0, 73.0, 73.0], [281.0, 495.0, 72.0, 80.0], [290.0, 488.0, 72.0, 84.0], [301.0, 486.0, 42.0, 83.0], [308.0, 485.0, 69.0, 85.0], [306.0, 489.0, 72.0, 179.0], [306.0, 491.0, 73.0, 185.0], [309.0, 493.0, 72.0, 86.0], [307.0, 495.0, 75.0, 83.0], [306.0, 503.0, 76.0, 71.0], [306.0, 503.0, 77.0, 72.0], [300.0, 502.0, 79.0, 71.0], [304.0, 506.0, 78.0, 65.0], [321.0, 502.0, 68.0, 68.0], [345.0, 502.0, 53.0, 60.0], [323.0, 504.0, 77.0, 66.0], [335.0, 495.0, 70.0, 69.0], [342.0, 487.0, 71.0, 72.0], [341.0, 483.0, 72.0, 68.0], [331.0, 476.0, 82.0, 68.0], [359.0, 473.0, 60.0, 49.0], [337.0, 474.0, 79.0, 65.0], [341.0, 476.0, 69.0, 65.0], [332.0, 477.0, 77.0, 68.0], [332.0, 482.0, 75.0, 69.0], [326.0, 503.0, 95.0, 57.0], [330.0, 517.0, 35.0, 39.0], [324.0, 505.0, 29.0, 54.0], [361.0, 490.0, 39.0, 73.0], [320.0, 489.0, 80.0, 71.0], [326.0, 484.0, 76.0, 70.0], [329.0, 482.0, 75.0, 71.0], [325.0, 481.0, 75.0, 69.0], [320.0, 476.0, 82.0, 70.0], [316.0, 474.0, 88.0, 70.0], [315.0, 474.0, 84.0, 69.0], [311.0, 473.0, 85.0, 73.0], [311.0, 473.0, 83.0, 70.0], [310.0, 474.0, 84.0, 70.0], [304.0, 474.0, 86.0, 69.0], [304.0, 472.0, 84.0, 71.0], [303.0, 473.0, 86.0, 74.0], [306.0, 471.0, 48.0, 71.0], [315.0, 469.0, 39.0, 72.0], [319.0, 472.0, 36.0, 69.0], [320.0, 483.0, 26.0, 57.0], [322.0, 464.0, 35.0, 76.0], [321.0, 461.0, 47.0, 77.0], [319.0, 464.0, 62.0, 79.0], [316.0, 317.0, 105.0, 228.0], [306.0, 473.0, 76.0, 78.0], [304.0, 491.0, 75.0, 76.0], [299.0, 489.0, 73.0, 71.0], [293.0, 490.0, 78.0, 72.0], [303.0, 494.0, 75.0, 67.0], [309.0, 490.0, 83.0, 72.0], [321.0, 495.0, 73.0, 80.0], [320.0, 478.0, 69.0, 75.0], [316.0, 487.0, 70.0, 72.0], [313.0, 491.0, 68.0, 63.0], [318.0, 496.0, 61.0, 64.0], [308.0, 500.0, 30.0, 54.0], [309.0, 500.0, 51.0, 54.0], [308.0, 517.0, 44.0, 60.0], [306.0, 492.0, 68.0, 64.0], [314.0, 497.0, 69.0, 68.0], [319.0, 494.0, 67.0, 57.0], [326.0, 498.0, 66.0, 56.0], [325.0, 494.0, 67.0, 59.0], [333.0, 494.0, 55.0, 55.0], [326.0, 500.0, 68.0, 53.0], [331.0, 492.0, 67.0, 57.0], [330.0, 522.0, 67.0, 46.0], [329.0, 542.0, 57.0, 24.0], [330.0, 497.0, 59.0, 54.0], [330.0, 494.0, 66.0, 59.0], [332.0, 481.0, 62.0, 62.0], [389.0, 495.0, 25.0, 54.0], [348.0, 507.0, 62.0, 52.0], [346.0, 534.0, 71.0, 45.0], [349.0, 513.0, 71.0, 58.0], [348.0, 495.0, 75.0, 86.0], [344.0, 494.0, 74.0, 81.0], [340.0, 477.0, 72.0, 77.0], [330.0, 479.0, 69.0, 72.0], [323.0, 509.0, 71.0, 189.0], [326.0, 513.0, 59.0, 200.0], [320.0, 500.0, 84.0, 211.0], [327.0, 498.0, 74.0, 76.0], [333.0, 484.0, 73.0, 73.0], [328.0, 476.0, 78.0, 77.0], [326.0, 476.0, 77.0, 75.0], [322.0, 477.0, 78.0, 76.0], [323.0, 477.0, 77.0, 71.0], [326.0, 475.0, 78.0, 72.0], [331.0, 481.0, 77.0, 73.0], [335.0, 486.0, 76.0, 68.0], [341.0, 488.0, 78.0, 68.0], [344.0, 480.0, 76.0, 74.0], [338.0, 478.0, 74.0, 76.0], [329.0, 476.0, 76.0, 62.0], [318.0, 473.0, 79.0, 60.0], [305.0, 473.0, 78.0, 67.0], [299.0, 467.0, 77.0, 73.0], [295.0, 468.0, 79.0, 73.0], [284.0, 478.0, 84.0, 73.0], [290.0, 481.0, 75.0, 76.0], [292.0, 481.0, 80.0, 73.0], [295.0, 486.0, 81.0, 192.0], [298.0, 495.0, 78.0, 72.0], [308.0, 497.0, 76.0, 72.0], [323.0, 498.0, 71.0, 72.0], [330.0, 501.0, 72.0, 72.0], [336.0, 504.0, 72.0, 71.0], [336.0, 514.0, 71.0, 69.0], [354.0, 520.0, 50.0, 68.0], [388.0, 573.0, 18.0, 16.0], null, [385.0, 535.0, 20.0, 52.0]], "areas": [1425.0, 1422.0, 1884.0, 2542.0, 3172.0, 3996.0, 4502.0, 4593.0, 5025.0, 6046.0, 6772.0, 7205.0, 7398.0, 7512.0, 6844.0, 6084.0, 6129.0, 5580.0, 5379.0, 5095.0, 4735.0, 3783.0, 2547.0, 978.0, 2177.0, 1775.0, 1588.0, 1208.0, 1604.0, 2126.0, 1318.0, 1866.0, 2015.0, 2133.0, 2110.0, 1984.0, 1201.0, 1807.0, 2297.0, 2358.0, 2186.0, 1486.0, 2409.0, 2184.0, 2142.0, 2121.0, 2311.0, 1644.0, 2207.0, 2041.0, 1846.0, 2055.0, 1167.0, 485.0, 802.0, 966.0, 1498.0, 2043.0, 1989.0, 2000.0, 1875.0, 2058.0, 2077.0, 2175.0, 2124.0, 2171.0, 2151.0, 2092.0, 2462.0, 1372.0, 1206.0, 1124.0, 755.0, 1025.0, 1116.0, 1242.0, 2298.0, 2292.0, 2078.0, 2032.0, 1991.0, 1117.0, 624.0, 2162.0, 1885.0, 1704.0, 1144.0, 711.0, 928.0, 932.0, 787.0, 1046.0, 1459.0, 1344.0, 1476.0, 1435.0, 1182.0, 994.0, 1279.0, 516.0, 253.0, 1207.0, 1363.0, 1221.0, 470.0, 588.0, 600.0, 594.0, 1794.0, 1485.0, 1340.0, 1529.0, 1479.0, 1852.0, 2161.0, 2075.0, 2076.0, 2187.0, 2158.0, 2235.0, 2188.0, 2148.0, 2253.0, 1458.0, 1461.0, 2151.0, 2188.0, 1986.0, 2266.0, 2446.0, 2193.0, 1236.0, 1866.0, 2040.0, 2052.0, 2075.0, 2004.0, 2004.0, 1955.0, 1938.0, 1809.0, 1977.0, 1320.0, 210.0, null, 475.0], "iscrowd": 0, "video_id": 0, "height": 1280, "width": 720, "category_id": 1390, "noun_phrase": "a braid"}, {"id": 864, "segmentations": [{"counts": "]df71nW11N3N1J7N1O2M3O007H7J4Kc0^O3M1N2N3N1O0O2O2N001O001O0010O000000000O101O000O10000O2O000O101N2O1N101N1O2O0O2N1O101N2N101N1O2N1O2N1O2N1N3N1O2N1N2O1N3M2O2M2N2N2O2M3M3LcSXa0", "size": [1280, 720]}, {"counts": "]\\l61dW15]hNO_W1<N2M4M>B7JG]iNZO^V1X1L8H2M2O00001O1N2O0010O01O000000001O001O00010OO1000001O1N101O001N10001N101N100O2O1N101N100O2N101O0O2O0O2N2N1O2N1O1N2O2N1O2N1N3N1O1N3N1O1N2O2M2O1N3N1M3N3Nb[ma0", "size": [1280, 720]}, {"counts": "gS^53jW14L4M3O001bhNCVW1j0I5K2N2O1N2O6J2N4L3M1N3N2N6J3M2N00001O001O01O0001O01O01O01O01O01O000O101O00001O001O00001O01O001OO2N1O1O1O2N1O1O2N1N2O1O1N3N1O1N2O1O101N1M4M2O1N2N3M2N2O1N2O2N0M4M3M4L5LW\\Uc0", "size": [1280, 720]}, {"counts": "kjj31jW1;G7I8H5M4M2M4M5K1N2O001N1O010O2O0O2O002N1O2N3M2M5L2N2N2N002N1O1O1O3M1O5K2M2O1O1O00000000000O100000000000O100O1000O10000000O100000001O000000000O2O0O1O1O2N1M3N3M101O1N2M4M2N2M3N3M2L4L4J6Gb0XOo]bd0", "size": [1280, 720]}, {"counts": "cjQ37YW1c0J6J4M3M4M2L4M3N2N2L4K5M6J3M4M4M1N2N2O1N2N01M2N32N2M3NO100O11O1O1N2O1O001O001O1O1O001O2N1O1O1O1O1O10O0001O00100O2N0010O0000010O001N101O001N2O1N2N2N2L4K6J6J5J7J6K6J7I6I:G7I9@nUde0", "size": [1280, 720]}, {"counts": "UZT3;[W1c0@;I7H5K6K5L4L4M2M4L5L2N4M2M2O2M2O1N2N2O1N2N2O1O3M001N3N001ON2L5M20O1000001O01O000O11N10000001O01O1O0001N11O000100O0101N10O001N2O1M3M3O2N1O2O1N1O1O3L2M4K4L5E;J7I6J6K6I9I5I8Gleae0", "size": [1280, 720]}, {"counts": "Zb_35_W1b0]O`0I6J6J6K5L3M4L3I7N2N2N2N3M2O3L2O2N1N2O000O100000000O2O2N00001O000O101O00001O00000001O01O00001O0001O00001O01O000010O001O001O001N2N2O01O13L3M2N2M3N2M3K5J6K5K6J5L5J6H9I7H7JQfWe0", "size": [1280, 720]}, {"counts": "ci`3k0oV19J6J6J5L4L4K4M4H8L3N1N3N3N2M2N2N1O101O0O101O000O2O1O2N0000001O0O101O00001O001O1O000000100O0000001O01O000010O00001O010O01O0O1O2O1O001O001O100O2M4L3M3K5L5J5K7J5K4J6J7I9G<D8FT^Ve0", "size": [1280, 720]}, {"counts": "VbP3b0ZW16I7K4M3N2N3L3N2N3M4L3M3L4L5L4L4L4L2N2M3N1N2O1O2N2N101N101O1N101O1O0O10001O001O001N20O01N101N2O0001O00000001O00001O0001O010O0O2O0000001O00010O001O0N3N1N3L4L4L4L3L6K4K6L5H7J6I8FS1kNjmbe0", "size": [1280, 720]}, {"counts": "WbW27eW1:H6I6J5L4L3N3L4M3L4L4M3N3M3L3M4M2M2N2N2O0O101N10000O2O1O0O10O03M3N0O2O1N100O2O0O101N1O2O1O0O1000002N0000001N2O1O1O001O00000001O0001O00000000000001O000O1O101N1O2M2N2O2M2N3M3L3N3N3K6I6K5J7H9H:Ec0WOTnQf0", "size": [1280, 720]}, {"counts": "hid17dW18CDmhNe0lV1;K4L3N2N2N101N2N2O1N1O2O1N3N2M2O3L3M2O2M3M2N01O0103L2O000O100O101N101N2O0O101N2O0O101N101N2O1N101O001O001O00001O1N3N002OO01O0000000010O01O00O2O0O101N101N1O1O2N2N2N3M2N3M3L3M4L5K5K6J7I4J8I9Ec0[OS^cf0", "size": [1280, 720]}, {"counts": "ja^15fW1>D9H4M3J5L4N1O1O2O1N3N2M3N2M2O1N3M100O101N4M2M10000O101O001N2O0O2O1N101N2O0O2O0O2O1N2O0O100O3N1O1N101N2O1N2O1O001O000000010O1O3L4M00O2O0O1O1O1O1O10010O000O2N1O2O1N1O2O1N2N2N2N2M4L4M4K6J5J6K5J6I9F?AT^hf0", "size": [1280, 720]}, {"counts": "_Ra19aW1;H5K4L5K5M3M7I3M3N3L4M2M3M2O1N2O1O2N1N2O2N1N101O1O0O2O1O1O00001O1O00000O2O1O1O001O001N10001O000O102M3N2N1O0O2O00000000O11O001OO101N100O1O100O1O101O0O1O1O1O1O2O0O1O1O1O1N2N3M2N3M2N2N3L3N3L5J;F8Gc0ROnUgf0", "size": [1280, 720]}, {"counts": "Xb^1;aW16K:D6N3M2M4M101N2N2N4M2M3N2M3N2M2O1N2O1N104K2O00O10O2O0O2O1N2O1N101N101O1N100O2O1N2O0O2O0O2O1N101N10001O1O1O1O1O0O101O00000000001O01O0000O1001N10000001O01N100O100O2N1O1O2M3M4M3L4K4M4L5K6H8G;G:E<B=Ab]hf0", "size": [1280, 720]}, {"counts": "WRW19[W1`0J4L4L4M2M4M3N2M3N1N3N2L4N2M3N2M3N2M3M3N1O1N2O00000O2O0O101O0O100O101O0O2O1O001N1O2O0O2N2O0O2O001N101O001O1O00001O1N2O2N00000000O10001O0000O11O00000O1O100O2N100O011N1O2N1N3N1N4L4L4L5J6I6J8G=B=Cj0UObUQg0", "size": [1280, 720]}, {"counts": "ejZ18dW1:I5J5L3M2O2M2N2N2N2N2O2M2O2M3N1O001N2O00002N1O1N2O2N001O001O001O1N1000O1002N1N101O001N101O0O2O000O100O101O000000001O0000000000001N10001O00001O00000000001O001O0000O1O1O1O1O100O1O100O1M3M4L4L5K5F?YOm0XOeUlf0", "size": [1280, 720]}, {"counts": "abh1<bW18I5J5L3M2N3M2N2N3N1N101N3N2N2M101O1O001O0O2O1O1N2O1O1O1O0O2O0O2O1O1O0O10O03N1O0O2O001N101O0O101O00000O1000001O00001O0000001O000000000000000000001O00000000001O00O100O100O2O0O1O1O1M2O4I7I7I7F<\\Oj0\\Okm`f0", "size": [1280, 720]}, {"counts": "RRf17bW1<F9J5K4M3L3N3L3M4M3M2N3M2N3M4L4L4L3M3M3M1N3N3M1N102N2N2O00O10O2O00000O10001O0000001O00000O101O001O00001O00010O000O100001O01O00010O0001O0000001O001N2N101M3M2O2M4L3L5K5L5I:G7I;Ca0@>BgUlf0", "size": [1280, 720]}, {"counts": "QZg1g0PW1<J5K5L4K4M4K4M4L3M3N3M2M3O2M3N2M3N1N2O0O3N1NO110002N000O100000000O2O001O001O0000000001OO2O000001O010O01O0001O0000010O001O00001O001O001O1O1N2N2O2M2N3M3M3M4I6J6J6K5K6J8H6J7J8Ejenf0", "size": [1280, 720]}, {"counts": "cZg1k0PW18J7J3M4K4M4J6L3M3M3N3N1N3M2O2M3N1N3M2O001N100O10001O00000O101O0000001O001O001O001O0001O00O10O20O002N10O00001O00000N21O010O01N101O1O0O2M3N2N2O1N3N2M4L3M3L4K4K6I8J5L5K5J<E:Dmlof0", "size": [1280, 720]}, {"counts": "UZb1c0UW1<H6L5K4L3L5L4J6K5L4M3M3M3M2N2N2N102M2N2O000O101O000O2O00001N10001O1O0000001O0O10100O1O000001O000000000010O001O0001O00001N100O2O001O001O1O1N2N2N2M4M2O3L4L3M3M3I7K5L4J9G8J6H<DeeSg0", "size": [1280, 720]}, {"counts": "TZg15WW1j0H6J5J5L3L5L4L4L4L4L3L4M4N2M3N3L3N2M3N1O2M3NO100001N2O0000O11N2O000000001O001O000000000000010O0000000010O0O10000000001O00001O010N101O00002N2M3N1O2N2M3M3M3L4J5K6J6J7K5G<F8G;AVfnf0", "size": [1280, 720]}, {"counts": "aRZ2c0[W18G6K5K4L3M5J4M4L3O3L3N1N2O2N2M3N2M3N1O1O1O0O2O1O00001O000O100000001O00001O0000000000000001OO2O1O010O0000O101O01O1O010O01O001O1N1N3O2N1O2O0O1O2N1N3N1N2N2N2O1N2N2M4E;F:H;F<AUU]f0", "size": [1280, 720]}, {"counts": "aZo29fW17I7I6J3M4M2M3N2M2O2N1N2O1O1O1O1O001O1N3N1O1O001O1O001O001O1O00001O000000001O002N00N20001O01N101O00001O01O0O10000001O01O0010O01O0O101O001O00000O2O000O2O0O1O1O1O1L3L7J6I6K6J7I?@Q]ee0", "size": [1280, 720]}, {"counts": "Uje3a0]W17K4K4L4M2M3N1O3M1N101O001O001N102N1O1O00001O1O001O1O001OO101O01O1O0000000000000000O11O001O000000000000O100001O00000001O0O101O001O01O01O0O2O0O100O1O001O0O2J6K6L5L4J7J8BjmSe0", "size": [1280, 720]}, {"counts": "iZm33fW1?E8I5J5M3M3L4M3M3M3M2N2N2N2O001O1N2O1N101O1O2O1N1O00001N2O00001O001O00001O1O000000O2O01O0001O0000010O000O10001O0001O01O000000001O00001N101O1O1O1N3M2N2M3N2K5J5M4M4J6I7K<@XUkd0", "size": [1280, 720]}, {"counts": "_bZ3>UW1b0G7K5J5L4L4L3N3L4M3M2M3N2M4N0000001N101O0000001O0O10001O000000001O1O1O00000000001O1O10O00000010N100001O0001O010O01O001O000O2O2N001O1O1O1N3M2N3K5M2M4M3M3L3K5L4M2N3M3M3M5K:C;E]][e0", "size": [1280, 720]}, {"counts": "jak2k0nV1>E6H8M3L4L3M4M3M3M2N3N2M3N1O1N3M2N2N2O2N001O1N10000O100O02O01O000O2O01O000001N110OO1010O1O1O01N10000O2O001O001O001O001O1N2O1O2N1N2O2N1O2N2N3L2O2N1N3M3M2L5J5L5J5L5K5J6J6K9Djeke0", "size": [1280, 720]}, {"counts": "Wjl2e0oV1a0H7J5J5K5J6K5M3M2N3N2M2N3M2O0O01001N2O001O0O100000000O2O0000002N1O1O000000O100010O1O1O001O0001O0O101O001O01O01N10001N2O00002N0O2O6J1O1O2M3N1N3M2N3N2M3N2M3M2M4I7J5I9J;D:C]eke0", "size": [1280, 720]}, {"counts": "ScZ3b0PW1c0E9I6L4L4L4L3N2N2M4L4N2M2N2O1O1O1N3N1O2N0O2O001O001O000000001O001O001O00000O100010O01O000001O000001O001O01O001O0O2O1N2O2M2O1N3N1N3N1O2M3N2M2O1M4M4J5K5L3L5I7L4K6K5K6Gj\\`e0", "size": [1280, 720]}, {"counts": "hY^3=WW1c0E:G8I5K5L4L3M3M4L2N3M2N3L4N2N2M3N1N3N1O1O1N1000O02O001O0000000000000000000010O0000001O0O100001O01O001O00001N10000O103M1O1O2N1O1O2M2O2N2N4L4I6I6J6H9I7G8K5F:JQfae0", "size": [1280, 720]}, {"counts": "ga_3R1eV1<G8J6L4M3M3M3L4M2N3M3L4M3M3N2M4L100O101O0O10O0011O001O000O01000000001O00010O000000O2O000000010O00001O001N101O1N20001N1O2N1O2M2M4N2N1O2O0O5K3J5K5H9H7L6J5H7J6J6JlU_e0", "size": [1280, 720]}, {"counts": "bRX3b0SW1`0E9I6J6K4L6K5K5K3N2N3M2M5M2M3N1N3M3N0O2O1O1N10O0101O00000O101O000000000000O1001O01O0001O000001N10001O0100O01O00001O0O2N101O2O02OL4L3O2L4M3M3M3L3M4L4K6K5M4K4L4L4M3K5M3I:\\O\\]`e0", "size": [1280, 720]}, {"counts": "TZT3m0lV1=F6L5J5L5J5M2M4K5L4L3N2N2N2O0O101N00101O1N2O001O2M2O00001O0O10000O2O000000000001O0000000010O000010O0000001O001O001O0O2O001N2N1O3O01O01M3L4M3L5L3M3M4L3K5L4L3M5L5J5J8G7L8EZUde0", "size": [1280, 720]}, {"counts": "UjV3d0XW19F8K4L5K5J5M3L4J7J5L4L5L3M2N2N100O100O1000000O2O1O2N002M10O010002N1O00001O000000001N11O00000000001O0001O010O01O00001O00001O0010O10N2O0O3N1O1M5J7K3L4K5M5J4L5G9J6F:J7E<AehNLnTde0", "size": [1280, 720]}, {"counts": "Vke3b0YW18H8K4M3M3M2M4L4M2N3L4M2N2N2N2N1O2N4M1N4M1O1O1N2O1O001O1N10001O1O1O00001O00000000001O000000001O01N10000000001O0000010O0O101O0O101O001O1O1O1O1N2O1O1N4L3M2L5J6L3I8L4M3G?_OnlSe0", "size": [1280, 720]}, {"counts": "QSj4;_W1>G9G5K5K3N3L3N2M3M2O2M4M2M3N1O2M2O1O1O1O1N2O00001O001O0000001O00001O00000000001O1OO100O11O1O0000001O001O01O000O00101O1O1O1O010O1O1O1N1O2O001O1O1O1O001N1O2M2N2L6H8I8I6G9I9CkTmc0", "size": [1280, 720]}, {"counts": "oQ^56gW1;G4L3M4M4K3N3L3N3M3L3N2N2N2N3L2O2N2M3N2N2N1N100000000000001O00000000001O001O001O001O001O1O1O001O000000O101O01O01O01O10O001O001O0O2O000010O1O01N100O2O0O10001O0O100O1O1O1O1N2O1N3M2I8J6I7J7K5K6J<_Og]kb0", "size": [1280, 720]}, {"counts": "jQR69eW18H8I8I3M3L4M2N2M4M1O1N2O001N101O2N2N1O2M101O1O1O00001N102N1O001O000000000O101O1O0000000000001O001O0000001O0000000001O000001O01O01O0001O0O0010001O0001O0000O10000O01000O101N101N2K5H8H8I7H8I8L4M4J6HSVVb0", "size": [1280, 720]}, {"counts": "oZV7f0VW1;F8E9J6J5L4M3L4M2N2O1N3M3N1N2N2O0O101N2O001N2O1N3N001N2O001O1O001O001O1O00O1002M2O1O010O1O1O0000001O000O11O000001O000001O01O1O1O02N1O1O2N1O1N2N2M3N2L4M3M3M3M3K5L4K5L5K4M3N2M4J6K:F9H4L8H:F[lVa0", "size": [1280, 720]}, {"counts": "jZl67\\W1i0A6L3K5J7J4K6K4N2M3M3N1O2N1O2M3N2N2N2N2O1O1N2O1O0O101O0O102N1O001O000O10001O0O101O00001O000000011N1O00001O001O01O000001O001O01O00001O001O0011O1OO1N2M4L3N3L4L4L3N3L4K5I7K6K6I7I:F7F<B\\eda0", "size": [1280, 720]}, {"counts": "YRm5g0PW1=H7K3L5K4M4K4L5K5K5L3N2N2N2N2N2M2O2N2N2N101N101N1O1O102N1O1O1O2N0O2O1O1OO100001O00000000001O0000001O001O00001O01N1000001OO100001O1O001O001N101O1O1O1N2N2N2N3L3M3M4K5L3N3K5J6K6J5K7J7I6J8Ei0XOYU`b0", "size": [1280, 720]}, {"counts": "T[P57cW1=D8H8A?G7N3L4L4K5L5K5L2N2M3N2N2N2N4L3M1O2N2N101O0O101O001O1O1O0O101O1O001O000O2O001O2N1O1O00N21O00000000O20O1O000010O0O100O1O1N3O010O0O2N101N101N10002M2N1O3L3M3N3L4L4M2N2M3N8F5K5L3M4L3L5K5M6Gd0[OPUYc0", "size": [1280, 720]}, {"counts": "eZY3;]W1?C9I6L4M3M3L5L3M4L3N1N2O1O1N2O1O2M2O2N1O1O001N2O1O001O1O1O001O001O0000000000001O1O000010O01O000001O0O100001O1O000010O000O1O1O2O0000010O01OO100O1M3O2N101O0O2N2N2N101O2M2N2M4L3L4L4M2N4M2M4K5L5K4K8GYmnd0", "size": [1280, 720]}, {"counts": "_Yl1=]W1=H4L4M2M3M4L3M3M5K3M3N2M3N2M3N2N1O1O1O2N1O1O2N1O1O1O1O1O1O001O1O1O2N0000O100001O000000100O00000000O2O000O100001O01O000O10000O1O1O101L3OfjNbMTU1_2ljN`MTU1b2401O000O10010N101N1O2M3N2N2N2N2L3O2N2M201M2L4L4L6K4L4M5J<CVfZf0", "size": [1280, 720]}, {"counts": "baY18aW1h0\\O7K3L6J4L5L3M3M3M3M3L4M3N3M2N2N2M4M1O2N2N2M2O1O1O1O2N1O1O1O2N1O000O101O1O1O001O00010O1OO1001O10O00000O1010O0000O1O20O1O00O1O2O00000O1O2O0O1O2N101O0O2N101N2O1N3N1N3M2N2O2N2L3K5N2L4N2K6K5J6J6J6K4L7I5L8Bomjf0", "size": [1280, 720]}, {"counts": "`Qf1g0QW1<H9I6I8I6K4L3L4L5K5M2M2O2N2M3N1O2M2O1O2N2N1N3N1O1O2M3N2N2N1N2O1O2N001O001O001O0000000000001O001O01O01O001O0001O0O001000001O001O001O0O2N1O1O2O3M3M1N3M2O1N3N1O1N3L3N3M3M3N1N2N2O1N2O1K4M5L6I5@`0J7J5K5L4K6Ik]^f0", "size": [1280, 720]}, {"counts": "\\Xe2T1gV1<D:E:J5K5K4M2N2N3M3M3M3M2N2O1N2O1O2M3N2N00O1O05L2N000O2O001O1OO10O0100001O00001O000001O000002N001OO101O000000O01010O1O0000O2O001O0O1O101O1O2N2M2O1O2M2O2M2N3K4N3N1O2M4L2O1N3M2N1M4K8@`0F9G9I9BZgfe0", "size": [1280, 720]}, {"counts": "Tio3c0mV1BUiNo0_V1?I6K5K4M3M2M4M2N3M3M3N2M2O2M2O2N1N10002M2O002N1O000O100000001O1O1O001O00001O000000001O001O001O00000000000000O110O00010O001O001N1O2N102N1O2N1O2N1O2M2O1N3L3N3N1N3N1N2N3M2M4J5J8H:H6I6J6J8@k^]d0", "size": [1280, 720]}, {"counts": "fjf5f0XW19G5K5K4M3M4L3M2N3N2M4L3N2N2M2O1O2N2M2O1O001O1N3N1O00001O1O1O1O2N001O001O1O0O2O1O010O001O1N110O1O1O001O1O001O00001O0000O101O000O2O0O101O1N2O1O1N1N3N2N3L3N1M4M4L3N2N1N3M3L4K5H8I8H:I;E:@jlhb0", "size": [1280, 720]}, {"counts": "XTS81j_22ShN5J2N101O1O0O1YMCjmN>VR1BimN?lT11O000nMBalN?]S1DalN=^S1DblN<\\S1HblN9[S1MojNCZ1a0dS1<UlNEjS1=TlNDlS1=TkNmN22<e0]T1n0akNSO^T1P1_kNQO`T1X2O010O100O1O010O00101N10O10ObNZkNjNN6iT1d0\\lNXOdS1;llNCSS1:PmNCTS1;nlNCTS1<llNDTS1<llNCUS1<llNAWS1?jlN_OWS1a0ilN^OXS1b0glN^OZS1a0glN]OZS1d0m131O2O100O1N101O003M2K6Hdn`a0", "size": [1280, 720]}, {"counts": "n[h81oW11O00001O1N101N101O0001N1O11O1O1O0O2O0O100O1L5J7K3L30002N2dNSOljNM3T1PU1BijNb0XU1@ajNd0`U1m01M4M2O1000000O1000001N1O1O2O0O100O100O10O01O1O1O1O3N1N2N1O1N2O7J4K4J7Ah]e`0", "size": [1280, 720]}, {"counts": "jbd83dW1e0C6J4M3L4L3M3M2N4L3M2N1O2N1O1O1O4L3N1O1N3N2N0O2O0O101O00000O101O1OO1000O2O2N001O1O1O000000001N10O10PkNVMjT1m2300001O2N10N100001N11O0O1N21O1O00O1O1000000O1N3N1N2O2N1O2N1O100O2N1O2M5K7H6H7G9H;H7H:CXeh?", "size": [1280, 720]}, {"counts": "Zke83^W1g0C;I5J6J5K5K4M3M4K4M2M3M2N3K4O2N2N3N1O1N2OO0101O3M1N2O1O1O0O2O1O0000001N3N1O1O1O1OO0101O0001O000001O1O001O01O000O2N1O1O1000001O001N100O2N1O1O1O2M3M2O2O1N2N2N3M1O2M3N2M4K8H9F8F<Ea0Bi\\l?", "size": [1280, 720]}, {"counts": "_Zj7a0WW1b0B8I7J4L4J6M3L4M3L3M4L3M2N3N3M3N2M2O1N2O1O1N10000O2O001O0O101O000O101O1O1O1O1O1O0O100000010OO2O0001O1O00100O00O100O2M20000100O0001O0O2O0N3N1N4N1N2O1O2M2O1N2N3M2O3K4I8J6I9G<D9Fa0ZO[Ui`0", "size": [1280, 720]}, {"counts": "dbh6;`W1<YOe0G6L4L4K4L5K4L5K4N3M2O2M2N2N2O2M3N1O2M2O001N2O1N10001O0O2O001O1O00000000000O2O00001O00001O10O0O100001O0001O0001O01O00000N3O1N101O001O010O1N2N2N2O2M3N1M4M3M3M3K5J6J6K5K5G8I9F?Bjmja0", "size": [1280, 720]}, {"counts": "[kR5j0QW1:H7J6J5K5K5L2N3M2N3M3N1N2N101O1N3N1O2N1N2O1N2O001O002N2N1O1N101O001OO100001O1O000000002N001O00001O1O1O1O0001O01O00O101N1O1N3O1000OO2O1N2O1N1O2N2N3M3N1O1N3N1O2N2M2O0N3M3J9F;H8I5G9EY\\_c0", "size": [1280, 720]}, {"counts": "ZcU33jW17C:G8M4L3N3M2O2M4M4L100O2O0O1O2O000O101O1O0O1000002N0`jNSNmT1m1b0014]jNRNlT1X2fjNSNSU1`2M1O2N001O2N2N00O0201N1O001O1O1O00000000001O1O1OO2N100001O0000O2O010O001N10001O00001O0O3N2M2N110cNWkN^NMm0mT1b0^kN]OdT1b0]kN\\OeT1c0[kN]OfT1`0]kN^OdT1a0]kN_OdT1`0\\kN_OfT1?\\kN^OgT1a0YkN[OlT1c0VkNnN^O0bU1o0W1L4I7M3N2N3M2O3M3N3MgTPe0", "size": [1280, 720]}, {"counts": "ibW2>ZW1;H7G<F8H7K7K2M2N3O0O2N2N102N4K101O1N101OO1N2O05L2N0000001O1N1000O100001O001O001O1O0000O100010O1O00001O01O000O1001O0001O0000001O000O100O20O01O001N2N101O2M2O1N2N2N2N2O100O1M3N1O2L4L3O2O0O2M3K6L6J=DZePf0", "size": [1280, 720]}, {"counts": "^Z[2>ZW1=F:E8K5L5K5K3M4L5L3M3M2M3N3N1O1O2N1N2O1O2N2N2N001O1O1N1000O1O12N001O000000000000O1000010O000000001O000O1001O01O0000001O000O2O0N2O2O001N1010OO2O1O1O1O101M2O2M2N3M3M2N3M3L3M3N2M4M2N2M4J7H7L5K5J7J6JTmle0", "size": [1280, 720]}, {"counts": "jaf2=^W19I6J4L4K5N2M4M2N3M4L3M3M4L3N2M3M2O1N2M3M6K3M3N1N2N3M2N1O2O1N1O100O2O0O2O000O2O0000O100001O0000001O000000O100O100001O00000001O0O1O100O2O01O01N1O2O0O2O0O100O2N1O2N2M2O2O0O2O1M3M3N3L4L4K4K6J6G9C>CRobe0", "size": [1280, 720]}, {"counts": "QiV3?^W16J5J6L3M3M3M4L3L4O1N2N3N2M4L3N4K4M2M3N2N002N2M2O1N2O1O0O101O2M10O01O102M2N2O0O2O0O011N2O1N1000O10O2O0000O1001O001OO100000000O100O11O01I_kNnL`T1X31O100O100O2O0000001N1O2O0O1N3N1O2N1O2N1O2N1N3M3N1N3L5K4H:Ia0ZNbiNh0Q^Qe0", "size": [1280, 720]}, {"counts": "YYW4282XW1c0F4M4L4L4L4M3M3M3M2L5N1N3N2N3M2N3L3M3N2N2M2O1O0O100000O11O0O2O00000O10000O2N100O2O000O101OO1000O101N2O1N2O1O0O2O000000N10100001O1O0000001O00O1O1O1010O00000001O000000001N1O1O2N1O2N2N4L5K5J5K6I:E;E=C`foc0", "size": [1280, 720]}, {"counts": "maQ5g0WW15K7I4M3M2M3M3O1N2N2N2O0O2O1N2N3N1N3N1N2O1N2O1O1N2O2N1N2O001N2O1N101N2OO0100O100O1O10001N3N1N2O001N1O00011O1O1N100000000O1OO101010O2N001O000000O1O1O10001O010O1N2O1O1O2N3L3N3L4M1M3N3L:G7F8F:E<I=D]mWc0", "size": [1280, 720]}, {"counts": "[Xn53mW13L1O2O1N2N2niNORT13ikN5ST1KlkN9PT1IokN:nS1FQlN>lS1BSlNa0kS1@SlNb0kS1_ORlNf0lS1ZOQlNj0nS1WOnkNm0QT1SOmkNo0RT1SOjkNP1VT1UO_kNR1`T1W1000001N10000000001O01O0000001O010N101O1O1O2N1N4M2N3L2O2M3N1N4M3M3K5H9I6E?@f^nc0", "size": [1280, 720]}, {"counts": "XY^3b0\\W15I5M3M4M3L3N2O2M2N2M4N1N3N2N2M2O1N3N2N2M3N1N3N1O1N1000000O2O0O100O100O100O100O1000O0100O1O100O1000O010O1O100O1O010001O00O1O1000000O1O001N101O2N1O1000001M2O1O1J6I8F:I8_Oa0EoWZe0", "size": [1280, 720]}, {"counts": "UjQ35cW1>H6I6K4L3N3M2N2N3M2M3N3M3N1N3M2O1N4M1N2O1N10001O1N2O0O3N1N2O0O101O3L2O1N1O10000O010O1O101O1N1000O010O100O10O011O0O2OO10000O10000O1000001O000O1O2O0O100O100O2L3O2N3L4M3M3M4L3M5K4L3M2L8G8I8I4K5M3M2N3L4JhmSe0", "size": [1280, 720]}, {"counts": "kiS24gW18I:E8I6M2M3N2O1N2N3M2N2O2M4M2M3M3N2M3N2M2O1O1N0010000O2O001O0O1O1O100O2N100O100O01O01O010O100O10O010000000O10O100000000000O1000000O2O0O1000000O1O2O000O100O1O1L4M4M5M3L3N2M3N2N2M4M2M3M3M3M3M2N3L3N3L4L4L4L7GWVne0", "size": [1280, 720]}, {"counts": "oj[37gW12O1L6K4K5M2N2N2O1N3M2O1O2O001O0O2N2N1O2M2N200O1O11O00O1N2O2N1O1O1O1O0102L4M2N01O2N1000000O010N1N30O1O1O1O1O1O2L7^Od0^Oc^^f0", "size": [1280, 720]}, {"counts": "lQ_22fW1:CFmhN?oV1a0H5K3M2M3O2M2N2N2N100O103L3M2O2M3M2O1N2M3N3N001O001N1O2N100O2N001O100O100O1O100O101N10O10O101O0O1000001O1O001O000OO20O11N1001O1O1O0000001N2O00100O01O1O101N2N1O3N2N1M2N2O1M4M4L4L4L4K6J5L6H=^O[^je0", "size": [1280, 720]}, {"counts": "lQX33jW15\\hNNTW1f0H4M2N3M2M4M2N3M2N2M4M2O2M2N2O1N101N2N1O1O3M3N1N1O2O2M5J5L2O1N100O2N1O1O1O1000000O100O2O0O2O00O0101O0O2O0000001O1O000000000000001O0010O0000000O1O100O20O02N1O1O1N101N200O3L4L3M6J5K3M4K7H9E9E<I6HlUPe0", "size": [1280, 720]}, {"counts": "Yig23fW1<G7H9G7L4M3N1O10000O2N10000O2O0O010000O01O001O00N3N1O1O1O9D?RORgg0McYXO2O001O3M0O2O1O00001O0O10000O2O001O1O1mjN@dR1`0\\mNBbR1?\\mNDbR1=]mNCcR1>[mNCfR1a0blN^OlN3bT1n0_kNkN2l0^T1W2OO000O2O000O100O2N2O2N4L2M3L5K4L5K6E:D;K7I;DoV_e0", "size": [1280, 720]}, {"counts": "cY[27bW1;G7L3L6K5K3M3M3N2O1O2M2N100O2N1000N2O010O100O001O100O001N2N2N20O0100O001O0N3M3O0O2K400100O010000O1N2G9FXkNG]R18\\mN3aR1J^mN;aR1B`mN`0_R1@`mNc0_R1]O`mNd0`R1[O`mNf0`R1ZO_mNg0bR1WO^mNj0bR1UO_mNk0jT12O000O101N100M3O1N2N2N1L5O00010O10000O010O100NON3N300001O0N2M3L5K5M3F:^OTWne0", "size": [1280, 720]}, {"counts": "eaR2:ZW1?K5K4L3N3M2N3M1O2N2O1N2O0O1O101N6K2M3M2O1N1O101O001O0O01O1O0010OO2O0O1N3O10ON2O1O2O0O2N1O2H7O2N1O2M3O1N1O200O1N2N2N2O1N1N3N2N2N2O100O100O2N10RkNCYR1<hmNEWR1:jmNGUR17mmNJSR12PnNMQR11QnNMRU10flof0", "size": [1280, 720]}, {"counts": "Vii16cW1?E5K6L2L4N1O2N1O00O1O1O2O001N110O0N3L4N2M3L3K60O1000O0010O02Nj_2CY30[]M5J4L2O1N1E<I6N3N103L1K5O0L5N3L3003M2NM4M200O100O1O100O1K6I6M3O1O10000O2O000O010O0O2O1N1O20O00001O0000N1O07J5J9I5J6K9]Oj0YOff_f0", "size": [1280, 720]}, {"counts": "WiX24fW19I>D6H6L4M2N2N3M2O2M2N2N2O3L2N2N2O2M2O2M2O1O0O2O1N2O1N2O2M2N3M2O1N1O2N3M010O2N2N1O10O0011N2O1O0O01000O2OO100O1001O00000O02O01O0O1000000000000001O000O100O102N1O1N3M3N2M5L3M2M3N2N3L5K3M2M4L5L6J5J7F8ZOUWne0", "size": [1280, 720]}, {"counts": "gQi29dW1:F:G5G:K3M2N3N1N3M3N1N2N2O1N2N2O1N1O2O0O2N2O0O2O000O1N2O2O1O2M2O1N2N2O1N2O0O1O101N2O0OO1011N2O1N100O101O1O1O1NKakNlL^T1[30O100O10000000O2O010O0000O1001O001N1000000001O1O1O1O1N2O2M3N2N2M3M3N3L4L3M4K4L6J4K6K8H7I7DVVZe0", "size": [1280, 720]}, {"counts": "biV33532K20YV18`iN92B3OUV1P1eiNUO2MXV1a1N3N5J2N5L2M2O1O2M101N2M2O101N00100O1O1O100O2N100O1O1O1O2O0O100O101N100O2O0O100O2O001O1O001O1O00001O1O000000001O100O00001O2M20O1O1O2N2N1O2M3L4N101N1N2N2M3M3M5K5K4L5K5L3N4J8F8I9E7H7L8EP^Ve0", "size": [1280, 720]}, {"counts": "maR21hW1:J9@_ORiNf0iV1=K4M2M4M3M2N3M3M3M3M2N2O000O2O0O1O10O01OO2N2N2N12O0O10O10O100O10O0001O00100O100O11O000O3N2G8L4L5M3M2O0O2O1O002M7I5K100DlhNKXW1=2HfhNFZW18lhNDXW189KfV[g0", "size": [1280, 720]}, {"counts": "_bm1d0XW18J5K3N3L4M3M2N3N2M3N2M3M3M2O0O100O10O0100O100O010O100O01000O10000O10O010000O010O1O100O01O010O1O1N1O2O01000N2O001O1O1O010000O010000O1O10000000000O1000000O2M200010OL4N3N2G:Kdfif0", "size": [1280, 720]}, {"counts": "`ZQ2b0ZW18I5K5L4L5L3M4M2M3M3M2N1O1O100O1O100O100O100O0010O1O010O10O0100O10O010O0100O0010O10O1O10O010O0100000O010O01O01000O100O1O1O1O1O0O200O2O0N2O1O1N2O1O1O1O1O10000O1N2O2K4L5J6L4M5Hefdf0", "size": [1280, 720]}, {"counts": "YaP31ZRd05\\U]O4N3M3M200O100O2O1N1O1N2N2N3L3N2N3M2G:I6J7O001O1O001N10001O00001O0000001N10001O0O00O2N12N1N2N2O2O0O001O000O020O1000O00101N2N4L9F6]On0\\Ofeke0", "size": [1280, 720]}, {"counts": "aZY31kW18VhNM\\W1`0J6L3L4K5M3M3L4M3M3N2M3M3M3N1O1N2N2O1N2N3N0O4M2M2O001N2O000O2O000O101N101N101O001N101O000O1O100O100000000O10001O00O01001O000000O10001O0000O1000000000000000000O100O100O2N101N3N1N3M3M4K5L5I7I6J8I=]Ogemd0", "size": [1280, 720]}, {"counts": "`jo34gW1<E:G5M3L4L3M3N3M3M3M4L3M3M3M3M2N2O1N1O2O1O2M4M1N2O0O2O0O2O0O101O1N100O1O2O0O10001N1O101O0O2O0O2OO10O1000000001O0001N100000000000000000001O00000O0100000001O00000O10001N2N2N2N3M4L2M3L6I8I<C5I8Fg0]OdeYd0", "size": [1280, 720]}, {"counts": "Xai32jW16D=J<E5L4L3N3L8I8H1O1N2O0O2O1N3N1N3M2O1N2O1N101N102N1N2O1N2O0O1O100O1O100O2O000O2O00001O0000000000000000001O000000000000000001O0010O00O2O0O02O0001N101N3M3N4K4K5K5J5K4L8F;E<Al^ld0", "size": [1280, 720]}, {"counts": "eib2<`W19F8J5M3L3M4N1N3M3M3M3M3M4L5L3L3N1N2O1N100O2O0O10000O2O0O100O100O100000O10O1O10O10O0010O0100O0010O010000O0100O10O010O01O1O011N100O2N2N2N4L5K3M3M3M2M4M4K6J6K6J7J<D1M4K4LQnVf0", "size": [1280, 720]}, {"counts": "VR_2;[W1>H6L4M3L5L2N3M2N3M2O3L2O1N3M3N3L3N1N3N2M2O1N100O10O001O0001O01O0000001O0010O1O01O00100O001O1O1N101N101N2O1N2O1O1O1N2N2O1N2O1N2O1O1O2M2N2O1N2O1O1O2N1O1O2O0O2N101M4M2M4J5M5JmVXf0", "size": [1280, 720]}, {"counts": "YY^31oi86i]H2N2O2M3E<F9M3M2N2O0N2N3N1N2N2M4J5O1O2O0O2O1M2N2O1N3M2N2M3M301O001O0O2O000O2O0O2N2O0N2N2O1O1O1O1O1N2M3N3OO01000O10000O100O2M3L:F9H8G?^Oa0YOf0POW^ee0", "size": [1280, 720]}, {"counts": "mYT3l0oV19I6K3M4K4L5K4M3M3M3N3L3N2M3N2M3M2O1O1O0100O0100O10O010O10O0100O10O10O10000000000000000O100000000000000000010O01OO101O0001O01O0010O2O00O02O00O1O100O1O110O2O0M3J6L4I8J6K7I9E9I7H:_OnU_e0", "size": [1280, 720]}, {"counts": "`SS36\\W1i0^O:J5L5J4L5L4L3M4L3M4L4M2N3L4M2M4M2O0O2N10O10O101N3NO0100O10001O1O1O001O0O10000000O2O000001O000000000000O2O00010O00001O001O001O0O2O001O1N101O2N1O2N1N3L3N3M3L4J7I:H4L4M4L3K6K7I9Ee\\`e0", "size": [1280, 720]}, {"counts": "nke3d0TW1<D<I5L4K5L5K7I3M3N3L3N2N2N2N101N1O2N100O101N10001N101O0000001O00001O000000000000O100001O01O0000000001O01O0010O0001O0O2O001O001O001O1O1O1N2O2N1N3N1N2M4M5K4L3L4L5J5L3L5L4L4L4L=@kknd0", "size": [1280, 720]}, {"counts": "Zko34iW17@<N3M2N2O0O3M2O1O1O1O01O1O0010O010O100O5L4L1O0O1000000000O10O101O0000000000001O0001O0O100010O001O1O0010O0O1N3M201O000100O1000O1O000N3O101O2N2N0O2N2N2O1M3N2N2M2O1O:E6KWlid0", "size": [1280, 720]}, {"counts": "_m^42^W1b0C?D:D>I6J5J5M4L3M3M3N2N2N2N2N2O1N1O101N2O0O10001O0O2O000O101OO2OO2O001O00O1001O00000000010O1OO101O0001O00O2N1O20O10O0O2O001O010M3N2N2N2O2M201N1O2M4L2N4L3L3O2N2N2N2M3M5L2M7I8E:Cd0_OaZSd0", "size": [1280, 720]}, {"counts": "PmR53TW15ZiN0aV14XiN8aV1KZiN;cV1d0M3M3N0O1O3N4K3N2M3N0003M1OO1O1O1O1O10O01O0001O000001O1O01O0000001O002N1N200O100O002N2N1N2O2N1N2O10UN_NUmNa1fT1N2O1OXNcNnlN\\1RS1jNilNU1XS1mNflNQ1\\S1oNelNn0]S1QOelNl0\\S1TOflNi0[S1XOelNg0\\S1XOflNf0ZS1ZOglNe0ZS1ZOglNd0[S1ZOflNf0[S1YOflNf0[S1YOelNf0]S1YOdlNe0^S1ZOblNe0]U1O2O0O2O0O101O000O1K[Zic0", "size": [1280, 720]}, {"counts": "TSo4a0YW1;H5L3N1N2O1O2N1N3O0O1O100O100O2O0O10000jjN`NlS1`1SlNbNkS1_1VlNbNhS1^1XlNcNgS1]1XlNdNgS1]1YlNdNfS1\\1ZlNdNfS1\\1ZlNdNeS1]1[lNcNeS1]1[lNdNdS1\\1\\lNfNbS1Y1_lNhN`S1X1`lNiN_S1W1alNiN_S1W1alNjN^S1V1blNiN_S1W1alNiN_S1V1blNjN^S1V1blNjN^S1V1blNiN_S1W1alNiN`S1V1`lNkN_S1T1clNkN^S1T1blNlN^S1T1blNmN]S1S1clNnN\\S1R1elNmN[S1R1flNnNZS1R1flNmN[S1S1elNmN[S1S1elNmN\\S1R1dlNnN\\S1R1dlNnN\\S1R1elNlN]S1S1clNmN^S1Q1clNPO\\S1P1elNPO[S1o0elNQO[S1o0elNRO[S1m0elNSO[S1m0elNRO]S1m0clNSO^S1k0clNUO`S1h0blNTObS1j0l1M2O2N1O2M3N1O1O2M3N1N3M3N1N2MdlPd0", "size": [1280, 720]}, {"counts": "^SY585NSW1k0D4L5L3N1O2N1O2N1O101N2O0O101N100O100O2O0O101O000O101O0000001O0000O1001O00001O0000000001O0000010O000010O0010O001O1O100O1O1O1O101N1O2M3N3M2N1O2N2N2N2N1O2N002N2M4L:VOihN8P[dc0", "size": [1280, 720]}, {"counts": "mc[5`0\\W1g0[O7H6J7J5J5L4M3M2N3M3M1O2O1N10001N101O001O1N2O1N101O1O0O101O01O0001O001O00001O0O20O001O01O001O01O00001O000000001O010N101N2O1N2N3M3N1M4J5N3H9M2M1N3VNcjNm0\\V1I?A8GPkfc0", "size": [1280, 720]}, {"counts": "ojR5>QW1m0_O9H6J7I8J5K2O2N2N1O2O0O2N2N1O1O101N2O1N1000000O10001O1N1000O1001O1ON200000O3N0001O0000001O000O2O10O0001N1010O01O0O2O1O1N2O1O1O1O1O2N1O4K4M2N2M4L3M3L4J7K4K5L3L5K4M4L<Bllfc0", "size": [1280, 720]}, {"counts": "obQ5f0nV1f0A9H7J6K3L5M3M2N2N2N2N2O2M1O3M2O0O2O1O0O2O001N2O000O1000000000O11O1O00000000O1O2O0O100001O0001O000O2O1N2O001O00010O1O0O3N1N3M2O2N2N2N1O2N2N2N1N4L4K4M2N3M3M4K4L3K6J8H;CeThc0", "size": [1280, 720]}, {"counts": "\\ST58dW1h0YO<D8H7J5L3M3M3N1N3M3N1N3N2M3N2M3N2M2O0O100O2O0O11O01O001O0O1000000000000000000001O00000000001O0O101O010O1N101O1O1O1O1N2O2N1O1O1O2M2O1N3N2M3N2N1N3K4M3M4K4M3M3M4L5J5I9FTdec0", "size": [1280, 720]}, {"counts": "jjm4`0]W1d0\\O8H8I5L4L3M3M2O2M3N1N3N1O2M3N1O1O1N2O1O0O2O1O1O00000000000000001O0O11O000000000000001O000000000000010O001N101O010O001O1O1O2N0O3N2M3N1O2N1O1N2O2M2N2N2N2M3L4K5K6K4M5J5K6K6Ce\\ic0", "size": [1280, 720]}, {"counts": "_b]4m0oV19H6K4M3L4M3M3M2N3N2M4M2N2M3N1O1O0O101O00000O10001O000000000000000000000000000000000000000000001O01O00000O1000001O000000001O001O1N2O1O1O1O1O2N1O1O1N2O2M1O2N2M3K5L4L5J5L6J6J6K4GWUWd0", "size": [1280, 720]}, {"counts": "USQ4284PW1k0C7I7J5L5K3M4M3L3N2M4N1N3M2O1O2M3N1O1N3N1O1O2M3N1O1O1O000O2OO10O11O0001O0000000000000000010O1O00000001O00O0100O20O001O0001O001O0N3N1O2O2N1O1O1O2N1N3M2N2N5J3O2L3M3L4K6K4L6K4K8F9Gh\\bd0", "size": [1280, 720]}, {"counts": "njT4<[W1a0A;E:H8I6J7I6K7J4M4K4N1N3M2O0O2N2N2N2N101N2O000O101O000O100000001O0000000O11O00000001O00010O000000O101N1000001O00001O1O001N2N2N2O100O1O1N2O1O2N2M3M3M2M7J5L3K4L5I7J6J4L4L4Ka0_OQUad0", "size": [1280, 720]}, {"counts": "Xio3g0QW1:J9B=H8H6K5L4L4L4L5L5K3M001O2O1N1O10O011N100O10O10001O000O10O100O100000000001O00000001000OO2O0000010O000O101O1O1O0O2N20O010O02N2N2N110N2K5M3M3L4L9G5K5L5K3M4L5J4L4L4L4M[nid0", "size": [1280, 720]}, {"counts": "WYh3o0gV1?E9I7I7J5L4M3M4L4L3M3N2M2O1N100O00101N1000000O1000000000000O1001O0000000000000O10010O00000O2O00001O001O001O0O2O1N2O1O0O2O1O1O3M101N2N1N4M4J5L4M4L2K7H6J6L4L5L4L4K4M5JRfRe0", "size": [1280, 720]}, {"counts": "oie36^W1m0[O>D7J8I3L3L4L5L2N3M3N1N2O1N2O0O2O1O1O1N2O2N1O1N2O00000O01N2O11O00001O1O000000O1O1000001O0001O00O2O002M2N101O010O001O1O1N101N104L3L2O2N1O2N2N2M2O1N3M3M3M3L3N3K5L3L5K5K5L4L6K4LXmnd0", "size": [1280, 720]}, {"counts": "SZh3:aW1`0C8I7H9G7J4L3M3N2M3M2O2N1N2O2M2O2M3N2N1O1N2O1O1N2O1O1O1N2O001O001O0000001OO1O10000001O010O000000O101N101O00010O001O001N2N3N1O1N2O2N1O1O1O1N3N1O1N3N1O1O2N1N2N2N2L5I5L6J6J6J6K5M3K4M5LSehd0", "size": [1280, 720]}, {"counts": "`Rl3=aW19H9G6I6K5K3N2M2N3N2N1N3N2M3N2M2O2N1N101O001O001N101O1O001O1O001O0O2ON2O100001O000000000000O1O1O10001N11O10O00001O0O2O1O1O1N200O1O1O1O001O1O1N2O001O1O1O0O101N1O1O2L5I6L5H8J6M3L4M4L6Gjldd0", "size": [1280, 720]}, {"counts": "jRQ4a0YW1c0@7K5K6J4L4L4L3M4L3M3M3N2M3N2M2O2N2N1N3N2N2N1N2O1O1O1O0000000O2O00000000001O01N100000001O000O11O01O00000000001N101N2O1O100N2O1N2N2M3N2O3N2L2O2N1O2N1N2M4L3N2N3M2H9J6I7I7L4L5K7IZdcd0", "size": [1280, 720]}, {"counts": "fZm3k0oV1<@b0C8K4K5M3M3M3M2M4M2N2O2M2O2M2O1O1N10000O10000O101O000O2O00000000O100O1000010O000000001N1O2O00001O001O01OO2O0O2N2O1N20O01O1O1O1O2N2M3N2M3M3N2M3N2N2M5K5K2N3L5J5L4L5J5L5K5K7Gbdhd0", "size": [1280, 720]}, {"counts": "oQX3d0PW1a0G9D;H6J6K5K5L3M4L5K4M3M4L3M2N3NO1M3O1O01O012N001O0O100000O10000001O000000000001O000001O000001O00000O2O1O001N1000001O0O2O1N2N2O2M2O1O2N002N1N3N1O3L3M4K6K4K4M4L3M4K4K6K3N3M2N7I=A_][e0", "size": [1280, 720]}, {"counts": "oYo2m0jV1>D:G:I7I4M5L3L5L3L4M2N2N1O2N100O2O0O100O10000O10O0100O100010O0000O100001O0O11O00000000000001O0000001O00001O000O2O002M2O2N1O1O001O2N1O1O2M2O1O2N2N2N3K7I5L4J6K4L6H7J6L5K5J6J5K[efe0", "size": [1280, 720]}, {"counts": "ajl2U1fV1>B7K5K5K6K4M4K5K4M2O1N3L3N2OO1O0101N2O0O2O0O10000000O01000001O00000O100001N1O1001O0000001O01N101N101N11O01O0010O00O101N101N200O1O00100O1O1O2M3M3M4M4K3M3M5L4K6I5L4K5J7I5L4M5JdTie0", "size": [1280, 720]}, {"counts": "Rba287NPW1k0YOd0F9H7I6L4L4K6L3M3M3M2N2N1O2N2N1O2O001N100O10O2N1000O10001O00000000O10000000000000000000001O000000001O001O000O2O000O2O00100O1O1N101O1O2N2M3N2N2N1N4M2M6I4L5J5L4M3M4K5K5J5L4M7H9H]mQf0", "size": [1280, 720]}, {"counts": "]YV2l0oV1d0^O7I6K4L4L4L5L3L3M4N2N3M2M3N3L2O1O1O1N1000001O000O101O001O00001OO1O1O10000001O00000000O100O100000001O000000001O00001O001O0O102N1O1O1N3N2M3O0O1O2M3M2N3M4M2M3M2M4K5L3L5L4L3M4L4K6K4K5KmeZf0", "size": [1280, 720]}, {"counts": "Wj_1g0TW1=F9F6J6J6K4M4K4M3M2O2M2O1N2O2M3N1N3N2N1O1O0O2O00000O1000001O00001N10001O0000O1000000001O0001O0000000O10001O0O100001O01O00000O101O00001O001O1O001N2O2N1N3N1O100O1O2M3N1O1N2O1N2N2L4L4L4L5K6J6K4K5K5K7HZUgf0", "size": [1280, 720]}, {"counts": "^YS1;`W1b0_O:F>B:G9I7I5L3L4L4L3N3L101N101O002NN10100O1O001N2O1L3L5M3O1000O0100000000O1N2N2O1O100O100O2O0O100001O1O1O0001N100000010I6M4K40001O00001N2O1O1O2O1N1O1O1N200O1O1O1O1O2O000O1O10O01O1O1O1O3M3L4M3L4L3N2L7GmUQg0", "size": [1280, 720]}, {"counts": "mPc0?VW1e0C8G8J6I5K6K6K4M4K4L4M2M4M3L2O2M3N001O0O2O001N1000000O1000001O0O1000001O0000O1001O000000O11O1O000000O101O0O10001O0001OO101N1O2N2O0O100O2N1O2O0O2N1M4M3M3N3N2M3M2N3M2N3M3M3K5K5L4M3N1L5M2N2M3M4M4J7IjVeg0", "size": [1280, 720]}, {"counts": "j`;2dW1c0ehN\\ObV1[1C=G5K3M6J3M4L20M2O10000001O00001OO0L5L3F:AoiNoNTV10]jNNTV12oiNFVV1<f000001O00K60O10OQdP10i[oN701N2O00000O1O1_OEWiNb0gV1<O10000O1_OmNTjNT1lU1mNSjNS1mU1`0O1O1O1O100IUNYjNk1eU18J70000O01O1H7H9O001O1J6L3N3M3L6^OXiN@YW14Zggg0", "size": [1280, 720]}, {"counts": "f8]1bV12L4L4M3L5L3L4L5M3M2N3N3L3N2M4L5L2N1N3N1O1O1O3M1O1O0O101O000O101OO100000O100000O100O1O1N2O1O1O1N2O1O1N3N1N2N2O2M2N2O1O2N1O1O1O1N2N3L3N2N3M2N2N2N2O2M2N2M3M3L3N3N2M3N2M4L3N4L6J7Ii_dh0", "size": [1280, 720]}, {"counts": "\\8_2aU10M8J3L4N2M2M3O0O101N3N3M1O001N3N00001O001O1O1O1O00001O000O100000000000000000000000O10001O0O1000001O000O100O1N2M3N201N10001O000O101N100O2N1O2N1O2N1O2O1N2N1N3M4M3M3M2N3M2N5K3L4N2M3M4K4M3M3M4L4K4M4L5L4IV^Uh0", "size": [1280, 720]}, {"counts": "_8V2jU10O010O1O100O1O0O2O0N0002001N101O0010O010O0N201I700O0010O01O001O1@WjNgNjU1U1\\jNhNfU1U1_jNgNbU1Z1b0N1010O01O010OO02H7L41000O00100O00010O0N201000O10N2O10O01O1N2IikNOoLJdS15^oN>`P1B`oN?_P1AaoN`0^P1_OcoNa0]P1_OcoN`0^P1_OcoN`0^P1_OcoN?^P1BboN>^P1AboN?_P1AaoN=aP1D^oN?_P1B`oN?_P1AaoN?_P1AaoN?_P1AaoN;cP1E]oN;cP1C_oN<bP1AaoN?_P1@aoN`0_P1AaoN>`P1AaoN>QT101M2O1L4N2O3I_e[h0", "size": [1280, 720]}, {"counts": "dha03jW16Je0\\O;F5K4K6K5F8L6K4K5L3L4M3L5L3M4L5J4M3N0O2N100O101O0O10000000000O1000000000000O10000000000O10000000O10000O1]N[lNkNeS1R1alNnME?jS1^1ilNoM_Ob0hS1]1WmNaNlR1\\1WmNaNkR1]1XmN`NjR1_1XmN\\NlR1b1j1O1O2L3N2O1O2N100O1O1O2M2M2N3K6O001O0O1O2O1N2O0000010O1O1O1O1O1N102N1N2O102L3MPhbg0", "size": [1280, 720]}, {"counts": "cXX16eW18J4L3N2M3L4M3M2O2N2O1N011O1O100O1O100O100O100O10000O1O1000000O101O1O00000O101O00001N2O001OO01000001O1O001O001O100O2O0O1O00001O0010O00000010O00000010O00010O001O001O1O001O1O00100O10002N1O0O2N2O100N2O01OO010O102M2N4L4K8G5K:^OTg_f0", "size": [1280, 720]}, {"counts": "PiS2;bW14F<I9I4M5L1N2M4M30N2O00101N01O000O2M3N2O10OO2O0O2N101gMRN\\nN2mMh1dS1XNenNi1YQ1XNgnNi1VQ1[NjnNd1UQ1[NmnNd1RQ1\\NQoNb1nP1^NToNa1kP1`NSoNb1mP1]NQoNf1nP1[NonNh1PQ1XNRoNf1nP1[NRoNe1mP1[NToNd1mP1[NSoNd1nP1]NRoNb1nP1^NToN_1mP1aNUoN\\1lP1cNZoNOYMP1]S1VOUoNJ^MP1]S1BfnNk0ZQ1VO`nNo0_Q1QOhnNh0XQ1XOjnNf0VQ1ZOjnNYOlMV1ZS1AQoN?oP1BPoN?PQ1@PoN`0PQ1@PoN?QQ1APoN>PQ1BPoN>PQ1FmnN9TQ10bnN0^Q13_nNMaQ13_nNMaQ13`nNL`Q14`nNL`Q14`nNLaQ14^nNLbQ14^nNLbQ14^nNKcQ15^nNJbQ16^nNIcQ18inN[OXQ1e0knNWOUQ1i0lnNUOUQ1l0jnNTOWQ1k0inNUOWQ1k0inNTOYQ1l0fnNTO[Q1k0enNTO]Q1l0bnNTO^Q1m0bnNQO`Q1k0dnNlNfQ1Q1g2N2N1O1O2O1N1O2N2N10011N1O11N2ON2N2M2O102K3L3Nmole0", "size": [1280, 720]}, {"counts": "_PZ26gW15K5K4J8K4I7]NZOWkNGDW1QU1`1K4N1O2N2M3N2M4M2N2M3N2M2O2M3M2O3M2N3L2O1O1N2O1N101O2N1O001N2O0000O1O1O1010O00000000001O000001O00000000001O000O2O0O10010O000O1O2O00001O0O1010O100OM4O1N3N1O2M2NUOQLimNm3WR1SLjmNk3XR1TLjmNi3YS1N1O20OO2L5L2O2L3M4NSOmLolNP3RS1PMPmNn2RT1M4M2N2J7D<G8L4K6I9G:H8I5JooXe0", "size": [1280, 720]}, {"counts": "PVT37hW11O2O001O0O2O1N2N01O01ZkNAkQ1`0TnN@kQ1a0j21N101N101N2fkNYOYQ1g0enN\\OYQ1e0VnNNhQ12WnN1gQ1OYnN2eQ1O[nN2dQ10ZnN1eQ10ZnN2dQ1O[nN1eQ10ZnN1dQ11[nN0dQ10\\nN1cQ1O]nN2bQ1M_nN4_Q1LanN6^Q1JanN8^Q1IanN8^Q1IanN8^Q1HbnN9]Q1HbnN9]Q1GcnN:\\Q1GcnN9]Q1HbnN8^Q1HbnN5SNiNXS1S1dnN8^Q1HbnN8^Q1IanN7_Q1IanN8^Q1IanN8^Q1HanN:^Q1GanN9_Q1GanN9`Q1F`nN:`Q1FanN8`Q1I_nN7aQ1I^nN7cQ1IYnN;gQ1EVnN=kQ1CUnN>kQ1BTnN?kQ1BUnN>jQ1BVnN>jQ1BWnN=iQ1CWnN<jQ1EVnN:kQ1EWnN9iQ1HXnN4jQ1LWnN2jQ1NWnN0kQ1OUnN1kQ10TnN0lQ10TnN0lQ11TnNNmQ11SnN0lQ11SnNOnQ11RnNMoQ13QnNMPR12PnNMRR11omNOQR1OQnN0QR1OomN1SR1MnmN2SR1NlmN2UR1MkmN3WR1LimN3XR1MgmN4ZR1JfmN4]R1LcmN2`R1LamN2aR1O^mNMgR12ZmNKiR15WmNHlR16UmNUO[N>bT1<YmNAjR1?UmNAmR1=SmNDnR1;QmNEQS19olNGRS18olNCWS1;jlNBYS1=glNB[S1=elNB^S1<blNCaS1;`lNDaS1;_lNDcS1;R2O[jNFeS19[lNGhS16XlNJlS12R2O1Odhb00[W^c0", "size": [1280, 720]}, {"counts": "m^d3b0]W1:F;F8H4L3M3L3N1O2N1O2N2N2N2M201N1O1O2N2N1O002N1O2N2N1O2N1O2N1O2N1O1O1O2N1O0000001N1O2O01O00O1O2O01O00001O00001O0000O100001O00O001001O1O0000O12N1O1N101N2O1O2M2O001O2M2N3N0O2N1O2O2M2N101N2O1N1N3O3L4K3N2N2N2M4K4A`0Ia0Cd_Xd0", "size": [1280, 720]}, {"counts": "^im41oW15J3N3L2O000O1O3L3L4O0O100O100O101N2O0001OO2N1O100O100O1O1000O1O1000O10O10J51000O11NmLjN^oNV1aP1kN_oNU1aP1kN_oN3nLl0cS1QO^oN4oLj0dS1RO]oNT1eP1kNZoNV1hS1O1O1O1SOUiNe0kV172N2M11000O0O2O1O1N2O1O3F<F]_bd0", "size": [1280, 720]}, {"counts": "^QT53lW15K4L7G3N4N1O0O2O1N2O1O1O2NO10O011O001N01O10O100010O1O0001O1OO10O01001O000O01000O2O00O2N0100O2OO2O0000O1000O10000O001000O1000N110000000O100O100O0100000O1O002M2L4O3H:I6IPgec0", "size": [1280, 720]}, {"counts": "SgY4511aW1:L2O1O1M3N2N1O2ojNZOfR1h0YmN_O_R1b0`mNC\\R1>dmNFVR1;jmNIQR18PnNLjQ15WnN1bQ1N`nN4^Q1KbnN6]Q1JdnN6\\Q1HfnN9XQ1GinN9WQ1FjnN;TQ1EmnN;SQ1DnnN;SQ1CnnN>RQ1@PoNa0nP1_OSoNb0lP1]OUoNd0jP1\\OVoNd0jP1[OWoNe0iP1[OWoNe0iP1[OWoNf0hP1ZOWoNg0iP1XOXoNh0hP1XOXoNh0gP1XOZoNh0gP1WOYoNi0gP1VO[oNi0eP1WO[oNi0eP1VO\\oNk0cP1UO]oNk0cP1TO^oNl0bP1TO^oNl0bP1SO_oNm0aP1RO`oNn0`P1RO_oNo0aP1QO_oNP1`P1nNboNR1^P1kNeoNU1\\P1hNfoNX1ZP1fNhoNZ1XP1fNhoNZ1XP1fNhoNZ1XP1fNhoNZ1XP1eNioN[1VP1fNjoNZ1VP1eNkoNZ1VP1fNjoNZ1VP1eNjoN\\1WP1bNkoN]1UP1bNloN]1\\S1000000000O10O100O100000O10O10O100O010mLcNboN]1aS1O0010N1000O1O2OEfNQjNX1PV1kNniNS1QV1QOniNm0RV1XOkiNf0RV1e0O2N000102M2O1O1O1001M1O2O0:E:G;@QPbc0", "size": [1280, 720]}, {"counts": "nVo2k0TW17K5J9G5J3M2O1N3M2O2M6K3L4M2N1N2O1N2O3L4M2M3N4K4M2M3M2O3L4L2O2M2OO0100O4L2O1N2O1OO10O01001O0O2O1O001N10000000O10000001O1O000000000000O10000001O000000000000O10000000001O00001O00000O10001O000000001N100O101O0O1O1O2L3L5K4N3N1N2O2L3J7K5J6J6K5L5H8M3M4JUiYd0", "size": [1280, 720]}, {"counts": "RbU31oW17I3M0000000O202M2N1O0000001O000000000000000000001O001O00O1001O1O001O000000000O100000000000000^LZOjoNf0VP1\\OhoNd0XP1_OeoNa0[P1BaoN?_P1B`oN>`P1C^oN>dP1@[oNa0fP1@UoNc0kP1^ORoNd0nP1]OnnNf0RQ1\\OknNf0TQ1B`nNb0`Q1CSnNe0nQ1ZOfmNR1ZR1oNbmNS1_R1mN`mNT1`R1lN_mNT1cR1lN\\mNT1dR1_OhlNa0YS1_OglNa0ZS1_OdlNa0]S1_OclNa0^S1_O`lNb0aS1]O\\lNg0dS1XO[lNi0eS1XORlNo0PT1_11O101O1N101N1O1O2N1O1N3N1O1N2N3N1M3O2O0O1O1O2N1L4N3M2CfjNPN_U1b1g0L6K5M3F;C?\\OgXfd0", "size": [1280, 720]}, {"counts": "bWg13lW1;E3L3N2N100O101N100000O1000bjN[O`S1f0_lNISS17llNOoR11QmN0nR10QmN3mR1LTmN5jR1LUmN6jR1JVmN7iR1IWmN8hR1FZmN;eR1D]mN<bR1D^mN<bR1C_mN>`R1B`mN>_R1CamN=_R1BbmN>^R1AcmN?\\R1BdmN>\\R1AemN?ZR1BgmN=YR1BimN>UR1ClmN=SR1BnmN>QR1BQnN=oQ1BRnN?mQ1ASnN?mQ1@TnN`0kQ1AUnN?kQ1@VnN`0jQ1_OXnN`0hQ1@XnN?hQ1AYnN`0fQ1_O\\nNa0cQ1_O]nNb0bQ1]O_nNc0aQ1]O`nNb0`Q1]OanNc0_Q1]OanNc0_Q1]OanNc0_Q1\\ObnNd0^Q1\\OcnNc0]Q1]OcnNb0^Q1]OcnNd0\\Q1\\OenNd0ZQ1\\OfnNd0ZQ1[OgnNe0YQ1[OgnNe0YQ1ZOhnNf0XQ1ZOhnNf0XQ1YOinNg0WQ1YOjnNf0VQ1YOknNf0VQ1YOlnNf0UQ1XOlnNh0UQ1TOnnNm0ST1O01O0001N100000001N2O1O2N000O101O000O2O0O10000O101N2O0O100O101N4J`U]f0", "size": [1280, 720]}, {"counts": "RRk1;eW11N2O000O101N2O1aNKPkN6VS1MglNh0E[ObS14nkNX1<gNdS1Y2PlNoMnS1R310O000O100O2O0O2N100O101O000O1000O11N1000000O2O00000000O11N10000000001O0O1000O10000000000000000000O10O1001N01000000000O10O100O10O020O0000O001O2O00O10O1001O0000O1N201M3L5M3K5M4J5K5L6G8H8K7G9I8Ca0ZOf0_OUPme0", "size": [1280, 720]}, {"counts": "S7\\2dU1001N2O001O000O2O000O2N1O2O2N1O2M2O1N5L4K3N2N1N3M5K4L2O2M2N2O0O2N2O0O2N102M10O0100O2N2O0O1O011N2O000O10000O100O2O1N010O10001O0O10O1001N2O0000O0101O0000O0101O000O10O10O2O00O100O02O1O1OO10000001O00O1001O001O00O100O10000N2O2N2N3J5M3O2N1O1O1N2N2O2M2N3L5K5L4K5K5I6J8H9H8I5J>^O>EP`hf0", "size": [1280, 720]}, {"counts": "d6\\3dT10O2O1N2O2N2N2N2M4M2M3N1O1N2O1O2N2M2O2N1O1O1N2O000000001N100000001N2O1O1N100000O100000O2O0O101O001OO1O1O11O001N10001O00000000O10000000O101O000000O1O110O00O100000010O00O2N1O2O10OO2O1O1O101N2L5L3N3L4M2M3N2M7I7I3N2L7J6I8H7H6E=]Oi0[O_Weg0", "size": [1280, 720]}, {"counts": "X92;S1SV1mNmiNS1SV1mNmiNT1SV1kNmiNV1RV1jNniNV1_V1O1UOViN>kV1AUiN?jV1<0O10O1N21O010O1O3M1TOTiNb0VW1O1O00OO102N2O1_OYnQk0", "size": [1280, 720]}, {"counts": "k5^3bT1001O1O001O1O1O001O1O2M2O1O1O1O1O1O1O1O1O1O1O1O0O2O1O1O010N3N2N1O1O1O001O2N1O1O2OO01O1OO10000O10000001O00O100001O01O00000O10001O000O100O2N1O101O0000001O0O1O2N1O2O0O1O1O2M2O10000O100O101N100000000O1O1N2L4L400O1O1O1O1O1O2N1O1N2N2N2O2N1O2O1O1N2O0N3K5L4L3N3N1O2O0O2M2M4M210O004J6J6H8H7K5FPQaf0", "size": [1280, 720]}, {"counts": "`6k1UV1002N2N1O6J001O1hjNiMeT1W2YkNkMfT1W2VkNlMjT1U2TkNlMlT1X2njNjMQU1d2O001O00000000000O2O0000001O0000000000001O2M200O1O1O001O002N2N001O00001O1O1O1O000000002N1O1O010OO1O100001O2N8H10O01O1O1O1O01O00001O0001O01O000010O000001O01O00001O01O00001O00010O000001O01O0O2N1001OO1N2O1O100O1O1O2O0O1O10O10O001O1O1O1N2O2N1O1J6O1N2O2N1N2O2M2N2N3N1O2M2O2I6N2O102M2O1N2N2N2N2O1N3M3M2O3L3L6K5J8H>_Ojgae0", "size": [1280, 720]}, {"counts": "]73mW11Ne0[O7I:F3N2niNbN^U1_1^jNdNbU1m100000L4O1000O2O1O2N1O000O10O0010O2O1O001O1O00000O010000001O001O00001O0O10O1001O00000000001O1O00O100000000001O1O001OO1N2O10000000001O0000000O100O101O00010O0000000O101O000000010O0000001N1O1N2O101O01O2N010O00O1O10000001O001O001O001O2M3M3O0O4L0000O11N3N001O0O2O00001O1O1O01O001O01O1O0001O0O101O0O2O0001O10O1N2N1O2O01OO2N1N2M3J8K8I4L7H6K5K`0]Oa_Ve0", "size": [1280, 720]}, {"counts": "m^R2a0ZW18K4L6K5K5K5L2N2M5L3M4K7J4L4K5L6J3M3M4L3M3L3N2N2N2N1O1O1O2M2O2N2N1O1O2N1O1O1O001O1O1O2N1O1O1O1O1O1O1O1O1O1O1O2N1O001O000000010O000000000000001O1OO100001O1O00O1O11O1O1O01N1O12N1O00O1O1001O01O0000010O00001O00100O000100O00O2N10010O0N3N101N1O1010O0000N3N10O1000O2O0O1N2N2J6N2L4L4N2N3N1O1O1N3M2N2O2M2N3M2O2M4K6J5I8A>J5N3M3M2N1O2N3L4L6G;G8FP`_c0", "size": [1280, 720]}, {"counts": "og^4b0WW1<H6K4J6L3M3N2M3N2N2M4M4K4M4L5K6I6K:F7I6K3L5L4K6K4K2O1O1N2O0O2O2M3N0O10O02O000O10O01O3N1N101O000O2O0000001O00O1001O1O01O000000000010O000001O00001O0000000O2M21O1O01O000O1001OO2O0O1000010O0O10001O000N3N10000O2O01O01N1O2N11O1O1O01O1O01O01N101N1M4L3O2O000O1O2N1N2N3N1O1N3N1N3M2O2N1M4M2N3L4M3L4M3L4N1O2M4L3M4K4L5K3L5Ia0QOdh_a0", "size": [1280, 720]}, {"counts": "iWP5c0XW18J4L5K5K4N2N2N2M2O2N2N1O2N2N2N3L3N4L8H8I<Cb0^O>C9F5L2M2O2M3N1O2M3N1O0000001O1O1O0000001O002N4L000000000000O10O1000001O00O100001N2O000000000000O10000O1O100000001O01OO10000O2O0O10001O0000001O001N100N3O00001N1O1O2N100O2M2N3N101O000O2O0O1O1O2N100O2O000O2N100O101M3M2O2N1O2N1O2M3M2O2M2O2N2N2M2N2M4M2L5L3M4M2M4L3L5L4L4L4L3N3L3L5L3M4L4L4M3M3L5K4L5KWP^`0", "size": [1280, 720]}, {"counts": "ZSb88hW11N2O1N100N2G9M3N2O00001N2O010M3M3K401O1O100O0KgNeiNY1[V16O001N2L4O1O100O000001O1N2N4M6D;Ji0VO7I]mja0", "size": [1280, 720]}], "bboxes": [[197.0, 378.0, 81.0, 73.0], [176.0, 375.0, 85.0, 74.0], [139.0, 361.0, 90.0, 78.0], [98.0, 322.0, 95.0, 99.0], [78.0, 284.0, 88.0, 116.0], [80.0, 276.0, 88.0, 116.0], [89.0, 268.0, 87.0, 113.0], [90.0, 264.0, 87.0, 115.0], [77.0, 280.0, 90.0, 118.0], [57.0, 283.0, 98.0, 117.0], [42.0, 265.0, 99.0, 116.0], [37.0, 272.0, 100.0, 117.0], [39.0, 301.0, 99.0, 110.0], [37.0, 289.0, 100.0, 111.0], [31.0, 284.0, 99.0, 114.0], [34.0, 316.0, 100.0, 90.0], [45.0, 313.0, 98.0, 91.0], [43.0, 274.0, 91.0, 113.0], [44.0, 278.0, 88.0, 107.0], [44.0, 303.0, 87.0, 105.0], [40.0, 280.0, 88.0, 110.0], [44.0, 271.0, 88.0, 112.0], [59.0, 311.0, 87.0, 97.0], [76.0, 328.0, 89.0, 72.0], [94.0, 318.0, 85.0, 62.0], [100.0, 317.0, 86.0, 83.0], [85.0, 295.0, 88.0, 96.0], [73.0, 278.0, 87.0, 108.0], [74.0, 287.0, 86.0, 102.0], [85.0, 312.0, 84.0, 106.0], [88.0, 275.0, 80.0, 106.0], [89.0, 272.0, 81.0, 108.0], [83.0, 289.0, 86.0, 114.0], [80.0, 283.0, 86.0, 110.0], [82.0, 283.0, 85.0, 112.0], [94.0, 325.0, 85.0, 98.0], [123.0, 336.0, 87.0, 90.0], [139.0, 307.0, 98.0, 86.0], [155.0, 302.0, 99.0, 83.0], [184.0, 315.0, 95.0, 119.0], [176.0, 292.0, 92.0, 120.0], [151.0, 276.0, 95.0, 121.0], [128.0, 294.0, 98.0, 128.0], [84.0, 310.0, 99.0, 97.0], [48.0, 286.0, 100.0, 94.0], [33.0, 278.0, 102.0, 120.0], [43.0, 271.0, 102.0, 134.0], [68.0, 233.0, 96.0, 126.0], [102.0, 252.0, 95.0, 115.0], [146.0, 323.0, 93.0, 111.0], [207.0, 292.0, 64.0, 109.0], [224.0, 316.0, 69.0, 78.0], [221.0, 315.0, 95.0, 99.0], [222.0, 309.0, 91.0, 122.0], [200.0, 289.0, 90.0, 122.0], [173.0, 285.0, 90.0, 119.0], [130.0, 336.0, 91.0, 114.0], [81.0, 320.0, 101.0, 113.0], [57.0, 300.0, 99.0, 100.0], [60.0, 294.0, 99.0, 105.0], [69.0, 267.0, 98.0, 115.0], [82.0, 247.0, 100.0, 113.0], [108.0, 261.0, 100.0, 107.0], [129.0, 278.0, 98.0, 112.0], [152.0, 258.0, 57.0, 105.0], [88.0, 258.0, 86.0, 96.0], [78.0, 280.0, 101.0, 103.0], [54.0, 268.0, 104.0, 96.0], [86.0, 302.0, 59.0, 67.0], [63.0, 261.0, 98.0, 111.0], [83.0, 272.0, 99.0, 115.0], [70.0, 248.0, 100.0, 103.0], [60.0, 266.0, 98.0, 105.0], [53.0, 263.0, 78.0, 104.0], [46.0, 257.0, 98.0, 104.0], [58.0, 246.0, 100.0, 114.0], [71.0, 265.0, 103.0, 115.0], [82.0, 260.0, 95.0, 118.0], [53.0, 266.0, 69.0, 85.0], [49.0, 297.0, 87.0, 86.0], [52.0, 296.0, 88.0, 83.0], [77.0, 297.0, 83.0, 96.0], [84.0, 295.0, 100.0, 107.0], [102.0, 290.0, 98.0, 110.0], [97.0, 258.0, 88.0, 106.0], [66.0, 264.0, 85.0, 100.0], [63.0, 280.0, 87.0, 98.0], [88.0, 281.0, 77.0, 115.0], [80.0, 271.0, 90.0, 105.0], [79.0, 309.0, 90.0, 112.0], [94.0, 337.0, 89.0, 104.0], [102.0, 326.0, 85.0, 55.0], [114.0, 357.0, 91.0, 113.0], [130.0, 362.0, 83.0, 109.0], [127.0, 329.0, 80.0, 110.0], [135.0, 340.0, 83.0, 73.0], [137.0, 351.0, 78.0, 109.0], [130.0, 299.0, 85.0, 105.0], [129.0, 309.0, 85.0, 105.0], [131.0, 337.0, 85.0, 104.0], [126.0, 325.0, 87.0, 97.0], [113.0, 315.0, 89.0, 86.0], [103.0, 319.0, 90.0, 108.0], [106.0, 291.0, 88.0, 121.0], [102.0, 247.0, 85.0, 107.0], [96.0, 254.0, 84.0, 106.0], [94.0, 286.0, 89.0, 107.0], [96.0, 300.0, 92.0, 106.0], [99.0, 320.0, 92.0, 88.0], [103.0, 322.0, 89.0, 112.0], [100.0, 302.0, 88.0, 109.0], [83.0, 266.0, 90.0, 113.0], [76.0, 272.0, 88.0, 109.0], [74.0, 300.0, 88.0, 109.0], [65.0, 271.0, 90.0, 113.0], [56.0, 273.0, 92.0, 112.0], [38.0, 297.0, 100.0, 107.0], [28.0, 271.0, 102.0, 111.0], [15.0, 247.0, 99.0, 117.0], [9.0, 221.0, 103.0, 140.0], [0.0, 248.0, 89.0, 119.0], [0.0, 255.0, 101.0, 121.0], [0.0, 226.0, 96.0, 143.0], [14.0, 233.0, 102.0, 127.0], [32.0, 228.0, 112.0, 87.0], [54.0, 209.0, 105.0, 152.0], [59.0, 176.0, 116.0, 165.0], [80.0, 178.0, 127.0, 151.0], [93.0, 215.0, 108.0, 110.0], [126.0, 176.0, 67.0, 145.0], [131.0, 282.0, 85.0, 47.0], [110.0, 195.0, 109.0, 153.0], [76.0, 199.0, 124.0, 143.0], [81.0, 207.0, 109.0, 139.0], [44.0, 225.0, 102.0, 131.0], [47.0, 197.0, 112.0, 148.0], [0.0, 190.0, 137.0, 165.0], [0.0, 198.0, 114.0, 162.0], [0.0, 296.0, 27.0, 52.0], [0.0, 185.0, 143.0, 153.0], [0.0, 204.0, 168.0, 140.0], [0.0, 227.0, 177.0, 95.0], [53.0, 204.0, 168.0, 164.0], [114.0, 204.0, 158.0, 166.0], [128.0, 207.0, 171.0, 177.0], [219.0, 304.0, 44.0, 69.0]], "areas": [3812.0, 4185.0, 4663.0, 7116.0, 7491.0, 8004.0, 7843.0, 7915.0, 8171.0, 8763.0, 8282.0, 8346.0, 8325.0, 8333.0, 8573.0, 6950.0, 7021.0, 8059.0, 7522.0, 7292.0, 7655.0, 7967.0, 6709.0, 5118.0, 4434.0, 5707.0, 6599.0, 7352.0, 6978.0, 6982.0, 6894.0, 7103.0, 7630.0, 7568.0, 7438.0, 6738.0, 6385.0, 6453.0, 6589.0, 8507.0, 8394.0, 9137.0, 9715.0, 7551.0, 7347.0, 9335.0, 10420.0, 9922.0, 8782.0, 7759.0, 2847.0, 2588.0, 7254.0, 8669.0, 8701.0, 8609.0, 8163.0, 7526.0, 8142.0, 8232.0, 8912.0, 8935.0, 8565.0, 8323.0, 4201.0, 6272.0, 7485.0, 7127.0, 2742.0, 8093.0, 8643.0, 3600.0, 4074.0, 3560.0, 4508.0, 8740.0, 9117.0, 8341.0, 3729.0, 5417.0, 4988.0, 3834.0, 8633.0, 8578.0, 7524.0, 5974.0, 5262.0, 5361.0, 7259.0, 8177.0, 7527.0, 3324.0, 8208.0, 4163.0, 3937.0, 4702.0, 6801.0, 7223.0, 7164.0, 7114.0, 6782.0, 6437.0, 7817.0, 8589.0, 7340.0, 7205.0, 7387.0, 7478.0, 6226.0, 7742.0, 7563.0, 7930.0, 7826.0, 7929.0, 8302.0, 8293.0, 8802.0, 7099.0, 9110.0, 3692.0, 7606.0, 9674.0, 4347.0, 7466.0, 5948.0, 5641.0, 13821.0, 6431.0, 9218.0, 1969.0, 2850.0, 5701.0, 14595.0, 6037.0, 3790.0, 13592.0, 18383.0, 16235.0, 855.0, 17054.0, 17082.0, 12418.0, 20669.0, 20512.0, 21938.0, 1662.0], "iscrowd": 0, "video_id": 0, "height": 1280, "width": 720, "category_id": 3827, "noun_phrase": "the face"}, {"id": 865, "segmentations": [{"counts": "nX\\;1kW1<@=G:H5J6K4L3N2N1O1O1O2N2O1N2O1O1O0O101O00000000000000000000000000O2O000O2O001N2O1N2O1N101O1O2N3L4M2I9F9K;DSob>", "size": [1280, 720]}, {"counts": "iXR;3gW1;G8H6G:K3M3M3N3M5J7J2N2O1N1O101N10000O2N2O0000000000000000000O1001N101O000O2O0O2N2N2N1N4N1N1O2O1O1O2L4N2L3N2M8G:EaWi>", "size": [1280, 720]}, {"counts": "\\ho:c0RW1>G8I8J4M3M3M3N1O2N3M2N2N1O2N10000O10000O100O2O000000000001O00000O1O2O00001O00001N10001O1O1N2O1O002N2M2N2O4K3M4L2J9F:WORiN3P_j>", "size": [1280, 720]}, {"counts": "UXm:1gW1;chNFfV1T1E9J3M4M4L2N3M3M1O2N3N1N2O1N101N1000000O1000001O1O0000000001O000000O10O2O00001O001O1O0O2O1O1N2O1O1O1O2M2O1O3L3N2N2M3M5K3M5G9D>EfWd>", "size": [1280, 720]}, {"counts": "nWh:<[W1?D8L4M4K5L4L4L3N2M2O1O2M2O1N102N1O1O1O1N1000000000001O0000000000000001O00001O001O001O1O1O001O0O2O001O0O2O1O1O1O1N2O1O2N1N2O1N3N2N1O2M3N1O2M2N:nN[``>", "size": [1280, 720]}, {"counts": "a__:1iW19]hNGSW1l0G6L3M2O2M3N3L6J3N4K2O1O0O1000001O1N200O1O4K4M1O1N101O001O000001O000O101O001O0010O01O000O2O00001O1N2N2N101O10OO2N2N2O1N101L4M4N1N1O2O00100O0O2N2O2M3N2N1N2^OTiNMPW1Ne0LPP^>", "size": [1280, 720]}, {"counts": "[g`:9bW1`0A9I6K4L4L3M3M3N1O3L3N1N2O1O2N3L2O1O1O1O2N001N101O1O2N00O100001O0000O101O001O001N101O0010O01O001O001O001N101O001N2O1O001O1N2O001O1N2N2O0O2O1O1N2O001N2O1N2N3L4L5K:H9FfWZ>", "size": [1280, 720]}, {"counts": "age:19<mV1a0H7J6K4L4L5M2M5K4M2M2N3N1O1N2O001O1N2O1O1O1N101O001O000000O10000001O00001O00O100000010O001O001O00001N101O0O2O001O1O001O001O1N101O1O1O1O1O1N101O1O1N2O001O1O2N1N2N2N2N2N3M4K5D\\iNTOhV1e0>AYhm=", "size": [1280, 720]}, {"counts": "\\ok:P1iV1:I9G9J5K4K3N3M2N3M2O1N2N2O2M3N0O2O1O001O00000O10000000001N100000000000000O100000000001O0000001O00001O001O001O001O1N101O001O001O001O1N101O1O0O2O1O1O2N1N2O1O1O1O1N3M2O2N1N2O1N2O2M7G7POP1CYhc=", "size": [1280, 720]}, {"counts": "WgT;;^W1:H`0A<F4L8H4L5K7J2N2N2N3M2N3N1O1N2N2N4M1OO010000000000O011N10000000001O0000000000000000000000000000000001O0000001O00001N101O001O001O001O001O001N2O1O002N1O1O1N2O1O1N2O2N1O1N2O1N2O3L4L3M3L5H8@?G:I<C\\`S=", "size": [1280, 720]}, {"counts": "`oi;3iW1e0UO>I7I8I6J6J5J5M2N3M4K01001O3M3M101N2O1N10000O2O1N100000000000000O2O000O2O00000000000001O0001O00000000000000001OO1000000000001N101O001O001O1N101N2O1O1N102M101O1O1N2O1O1O1N2O2M2O1O1N2L8H7J6I6I9G8G:C]P]<", "size": [1280, 720]}, {"counts": "V_`<?YW1c0A8I7K2M5J8I4L4M4L3M2N2N2O1N1O3M3M2O1N101O0O101O00001N101O00001O00000O10001O00000001O00O2O00000000001N100001O00O1001O10O01N101O0O101O1O001O1N101O0O2O1O1O1N2O001N2O1N2O1O2M3N1O1O2M3M2N4K5K5K6G9F9H9@hg`3FbQ^L0ggU8", "size": [1280, 720]}, {"counts": "]Vm<1W10oU2d0PPO8K4L?A6I8I9H5K4L3M2O2M2O1O0O2N2O1N100O1000000000000O101O00001O000000001O0000000O101O00000000001O01O00001O00001O001O001O000O101O10O01N101O001N2O0O2O1O1O1N101O1N2O1O1O0O2N2O1O002M2O1N2N2N2M3F;G:H9E:Fk`W;", "size": [1280, 720]}, {"counts": "eWm<1^o5`0eWKf0A`0B<E8I2N3M3N2L3O001O0O3N001O00001O00000000000O1000010O0000001O0000000O11O01O00001O01O1O001O1O1O01O01O1O001O001O000O2O001O1O001O0O2O1O001N2O001O1O1O1N101N2O1N2N2N2N2O1O0O2N2O1M3N2N2M4^Ob0K5H9J5L\\XV;", "size": [1280, 720]}, {"counts": "Z_e<3aW1c0F;E`0B7I5K5J4N6I2N2O1N3N001O1O1O0000001O0000000000001O0O11O0001O00000001O01O01O00001O0010O01O00001O001O1O1O001O001N1O2O001O1O1N101O1O2M101N2O1O1N101O1O0O2O1O1N2M2N3N2O0O2O0O2N3\\Od0K5N1N3N1OUhg;", "size": [1280, 720]}, {"counts": "a_l;`0^W1V1iN6K3N2N2M2O100O103L3N1O0O101O01O00000001O0O101O0000000001O0001O10O010O001O001O00010O0O2O001O1O001O1O001N2O000O2O1O1O1O1O2M2O1O1O0O2O1O1O1N2O1O0O2O1O1N2O000O2O001N2]Od0L3N2N2N3M3Jeof<", "size": [1280, 720]}, {"counts": "ioZ;h0UW1d0]O6J6K4M1O1N2O001O0000010O1O0001O010O001O001O01O1O1O01O010O001O1O001O00100O1O001O1O001O1O1O1O1O002N1N101O0O2O1N2N2N1O2O001N2O0O100O2O1N2O001O4K7I3M2N3LPgh=", "size": [1280, 720]}, {"counts": "Z`X;4=3\\V1T1F9I5M4M3M2O1O1O1O1O101O0O1O01O010O001O1O001O1O1O0O1N3N101O1O1O001O1O1O1O1O001O1O0O2O1O1O1O1N2O1O1N1N3N1O1O2O0O2O1N1N3I8K5L3O1N3M3M2NX_V>", "size": [1280, 720]}, {"counts": "e`];`0UW1b0E9H6J4M3N1O3OO01O101N1O2O000O10O1O1O001O1O0O101O010O1O1O001O1O1O1O001O100O1N101O1O1N2O0O2O0O2O0O2O00001O2M3M2I6M5L3N2M3KQoX>", "size": [1280, 720]}, {"counts": "cXf;i0nV1;K5J5L4M2N3O2N1O2N2O0O3N3M0OO2O001O0010O010O0100O1O001O1O100O1N2O001O1O1O001O1O001O001O001O001N3K4J6I8L4L3N3M3N8G4LdnS>", "size": [1280, 720]}, {"counts": "oWa;m0nV1c0@5K3N2O1O001O2N1000O01000O010O10O01O0O2O001O10OO2O001O1O0O2O001O1O1O1N101N2O0O1000001O0O3L3N2N2N3N1N3L4L4M2LZg\\>", "size": [1280, 720]}, {"counts": "Z`X;g0RW1<G8J4M5K4M2N2N2N101N2N01O001000O010O01O001O0010O01O00100O1O0O2O1O1O1O1O001O1O1N2N2M2O1O2L3M5J5M4N1N7I6GQWi>", "size": [1280, 720]}, {"counts": "WhT;c0ZW18I7J5J8I3M2O1N2O2N1O3M1O2M20O000001O1O010O000010O0010O01O10O0100O001O1N102N1O1O1N2O1O1N2N2N2N2N2N2N3M2O2N8G4K7Hkng>", "size": [1280, 720]}, {"counts": "XXW;8eW1=B7K2O2M3M2N2O1N2O1N2O10000O10O1O010O100000000O1N20000O100O101N10000O2N1O100O2O2M2N2N1O2N1N4J[hP?", "size": [1280, 720]}, {"counts": "a`b;9bW17B>L3L5L5L3L8I3M1O1O2O0O10001N10001O001O0000000000000000000O20O0O101N100O2O1O1O1O2N2N2M3N2M3L4M3L9^O>Jd_`>", "size": [1280, 720]}, {"counts": "cXf;8bW17F:L3M4L4M4M3M5K3L3N2O1N3M2OO1M3M2D=N2N2O1N2O1N2O1O1O1O100O100O10001N100O3N1O2N1O1O2M3N2N2N2M3Nl_`>", "size": [1280, 720]}, {"counts": "fXa;7fW15K4J6G8M5L5K6K3M2N2N1N200O1O2O000O100O1000001N10O100000001O3L4M:F4L2N2M3N2N2M3M3N2O000O1N3M2M4E[_e>", "size": [1280, 720]}, {"counts": "Sh^;4kW1<XhNJPW1f0M3L3M5L2N2N2N1N2O1O00001O0000001O00000000001O001OO010000O10000O00100O1O010O11N101N3M3N2M4M2M3M4L6H:[OkhN0`Vd>", "size": [1280, 720]}, {"counts": "\\ik<2ZW12lhN:oV1>K6H7L4M3K40O100O00102M2B>Ie0_O^ob>", "size": [1280, 720]}, {"counts": "ihh;1lW15J6H8H8K4L5M3M3L5L3N1N1N3N2N3M10001N100000000000O011O0001O01N100000001N101O1O1O2M2O2N1N3N2M4L3G9K8Ge_[>", "size": [1280, 720]}, {"counts": "cPT<7fW14L4L4L4J7K5M3L5L6J4L3M1O2N1N2O2N10000O10001O00000001O1O00001O2N=C5K4K4M4L5K4L3M2M3N3L4L4Le^V>", "size": [1280, 720]}, {"counts": "b`[<8eW15L3L4I8K4M4L5K6J6K3M2N2N2N2N100O2N10000O10O1000000000000000000O1000001O1N101O000O2O2M3N1O2M4M2N2M4K9H7\\OlWf=", "size": [1280, 720]}, {"counts": "dX_<7hW13M3L3M4K4L5K6K6I8J2N2N1O1O2N100O1O100O10000O1000000O100001N10001O00001O001N101O010O2N1N2O1N3N2M6J6J5Ic0YOU_b=", "size": [1280, 720]}, {"counts": "h``<4hW18I5L4L4L5I8J9H2M3N3M1O101N1O2N1O2O0O1000000O2O1OO100O1O2N1O2O01O01N101O001O001N101N2O1N3N1N4L4M3K5L9]Ob_b=", "size": [1280, 720]}, {"counts": "hPc<3jW16K4L5J8G9I8H4L4M1O2N1O2N100O1O100O2O0O10001N1000O10O0101O00001O001O001O0O2N2N101O002M2O1O2M5J4K6F;AhWa=", "size": [1280, 720]}, {"counts": "g`e<6gW15L5J`0B8G4L3M2N2N3N1O1O100O2N1O100O101N100O1000O01000000000000001O001O1O1O1N1O1O2M2O2N2M3M3M4L4I9E=Ecg^=", "size": [1280, 720]}, {"counts": "h`j<Q1mV14M2K5N2M2O2M2M3O1O2O03M8H4L6J4K2O2N1O1O1O1N2O1N100000001N2N2M2O2M2N2M3O1O2N1000cVf=", "size": [1280, 720]}, {"counts": "oXd<6gW17I9H7J6J3L3N2N2N1N3N1O100N3N1O1O2O000O1000000O11O0O100000000O10000O101N3M3L201N2O1N2N2O1N3M3M2N2M4LYo_=", "size": [1280, 720]}, {"counts": "Sia<<bW14L9G5J5M2N2N1O2N1O2N100O2O0O2O1O0O2O00000O1000000001O0O101O00000O101N101N1O2N2O0O2N2O1N1O2N5J5L3L5K4JmVa=", "size": [1280, 720]}, {"counts": "XQc<7gW14M2N7I4M2M2O2M2O0O2O0O2N2N3M2N2N2O0O10001O0O100000000000000001N100O100O2O001N2O0O2O1N2N2N1O2N2N1O2N3L4L4M3J6HZ^d10[jP:", "size": [1280, 720]}, {"counts": "Vao<9eW14L3N5K4K4L4M1O2N2N1O2O1N2N2N101N2O1O1O001O000000000000000000O2O00000O2N100O100O2O2N1N2N2N2N3M3L3M3L7Go^S=", "size": [1280, 720]}, {"counts": "c`m=2mW13]iN0QU12kiNJj07ZU17djNJ\\U17`jNL`U15VjN4jU1ORjN2nU13kiNOUV1n0000000001O000O10000O2O0O100O101N2O1N2N2N2N3M3L4M4L4K5J8FhVh<", "size": [1280, 720]}, {"counts": "\\Q\\=?^W15L3M2O1O2M2O2M2O2N2N2N1O2N2O0O2O1N101O0000000000000000000010N1000000O101N1O10001O1N2N2N3M2N2N3M3M4J5L6Bmfe<", "size": [1280, 720]}, {"counts": "Wa^=4iW16L3M2M2M5L3M3M2N3M2O2N1O2N2N2N2O1N2O1O0O2O001O00001O001O00001OO100O1000000O2O000O101N2O0O3M2N2N2M4M2N3M3L7J3M4K6Jjn\\<", "size": [1280, 720]}, {"counts": "hXl=4iW15L6K4K7H6K3M3N1O2N1O2N1O2N101N10001O0O2O001O01O01O0000000000000000O2O000O100O101N2O1N2N3M2N3N1N3M4L4K6J8GUWT<", "size": [1280, 720]}, {"counts": "cXl=8fW14L4M4L4K5K3M3N2N1O2N2N2N1O2O1N1O2O1N101O0O2O000000001O0001O0O1000001N100O2N1O101N1O2O1M3N2N2N2N3L3N4L3K9I]WT<", "size": [1280, 720]}, {"counts": "^`m=5iW19G4K4M4L4L3N2N2N2N1O2N2O1N2O0O2N101N2O00001O001O000000000001O000O10001N1O101N1O1O2N2O1N2N3M2O2L4M4L5J6IcWT<", "size": [1280, 720]}, {"counts": "UPU>?_W17I4N1N3M2N2N1O2N2N2N2O0O2N2N101N101N2O1O0O2O00000001O000000000O101N100O101N1O101N101N2O1N2N2N3M3L4L4L4K7Gk_k;", "size": [1280, 720]}, {"counts": "^PP>2iW1?D3N2M3N3M2N2N2N2O1N2M3N2N2N101N2O001N2O001N100000001O0000O2O00000O100O1O2O0O1O100O2O0O2N2N2N2N2N3L4K4M4L4KlWo;", "size": [1280, 720]}, {"counts": "]hi=>`W14I6M3N1N3M3N3M2M3N2O1N2N2O0O2O1N2N101O1O001O0000000001O00000000001N1O1O100O2O0O101N2N2N2N3N1N3M2N3M3L4M3MggV<", "size": [1280, 720]}, {"counts": "_Xg=7eW1;C8L3M3M3M3M2O3L3N2N1O2N2O001N101O0O2O001O001O0000000000000001N100O101N100O2O1N2N2O1N2O1N2N3M2O2M3L4L7H7JdWY<", "size": [1280, 720]}, {"counts": "chd=7fW15K6K8D7N3M1N3N2M2O2N2N1O2N2O0O101O000O2O001O001O000000O101O000000000O101N100O2O1N2O1N2O2M2O2M2N2M6J6D<J:GXg[<", "size": [1280, 720]}, {"counts": "iP\\=1mW18H5L7H4L3M3M3L3N3M3N2N2O1N101O1N1O2M30O01O01O1O1O1O011M2O1O001O001N3M2O1N2O1N3N2M2O1O1N1O2O0O2N1N3G<FYof<", "size": [1280, 720]}, {"counts": "hXX=3iW16K4M7K6I2N2O1N2N2N1N3O1O001000O010O101N1O1O1O1O1O1O2N1O1O1O1O1O1O1O1O1O1O1O1O1N3N2N1N3M2N2O1Ndfo<", "size": [1280, 720]}, {"counts": "ghZ=6gW17L4K6H7J2N3K4L5N2N2O1O01O010O101N010O01O01O002O0O1O1O1O2N1O1O2M2O1O1N101N2O1O1N101O0O1O2N2O1N2M3N6Gm^i<", "size": [1280, 720]}, {"counts": "bYQ>1oW11N10001N1000001OO01WNKgkN5YT1NekN1ZT11ekNO\\T11bkN0^T11`kN0aT10]kN1cT11ZkN1eT10ZkN0fT11XkN0iT10UkN1lT1ORkN1QU1OljN2WU1LfjN6\\U1IajN8`U1IYjN=hU1CQjNb0QV1e02N2N3N0O100O4L4I9Fd_d<", "size": [1280, 720]}, {"counts": "nP\\=1nW13M3N2N3M2O0001ON2N2O100O1O1N1O2N100O100O1000001TOXO^jNh0aU1[O]jNe0cU1]OZjNd0eU1l000000000000O101O000O101N2O0O2O1N2N3N1N3L5J8G9H^of<", "size": [1280, 720]}, {"counts": "iX]=1jW17L3M3N3L4K5I8K4L2N3N2N2N2M201N1O1O100O2N1000000000000O1000000001O0000001O000O101O1N2N101O1O2M3N2M3M3L8G7GfWc<", "size": [1280, 720]}, {"counts": "ah_=9dW15M1N4I8J6K4L4L3N2M2O2N1O2N1O1O1O2O0O1000000000001O0O100001O0O101O00000O100O2O1N2N2O1O1N2O1N3M4L4J6J<DdWc<", "size": [1280, 720]}, {"counts": "bP\\=8eW15M3M1O2M5H7L4M2M3N2N1O2M2O2N101N1O1O2N101N100000001O000O101OO10001O001N10O11O0O1O2O1N2N101N2O2M4L3L4L8G9G;E\\Wc<", "size": [1280, 720]}, {"counts": "]`^=8eW16J6K4L5K3M3M3M3N2M2O2M2O2N1O1O2O0O2O000O101O0000000000000000000000O10000O2O0O3N0O1O3M4M2L6J5J7J7Flof<", "size": [1280, 720]}, {"counts": "^h_=3fW1>G6K2M4M2L4N2M2O2M2O2N1N3N1N200O2O0O101O0O2O000000001OO100O11O00O101N100000000O2N101N1O2N1N7J6I6I7ES`d<", "size": [1280, 720]}, {"counts": "U`^=>bW18G3M3L2N3M3N2M2O2M2O2N1O2N1N200O2N101O0O2O1O0000O10O2O000000O10000O2N10000O101O0O2O1N3N1N3N2M3M3M4K5H9EQXc<", "size": [1280, 720]}, {"counts": "YPW=6hW14L4M9G4K3M3N1N3N2M2N3N2N1N2O2N1O101N1O2O000O100O101O001O00O1O2O0000000O10000O2O0O101N2O1N2N2M3M3M4M3L3L5J6GYXh<", "size": [1280, 720]}, {"counts": "X`T=9dW15N4J8H4L2N3N2M3N1N3N1N3N1O1O2N1O100O101N101N10000000000000000000O101O0000000O2O0O1O2N2O0O2M3N3L3M4K4M4K5J:CUhj<", "size": [1280, 720]}, {"counts": "\\XS=7fW19H7I4M2M2N3N2M2O2N1O1N3N1O1O2N1O1O2O0O100O1000001O0O10O10010O0O10000O100O2O00001N2N2O0O2O2M1O2N2N3J5I8K6ISXm<", "size": [1280, 720]}, {"counts": "ihT;1\\gj1;W`VN5J6K3L4L3M3N2N2M2O2N1O1O2N1O1O2N100O101O0000000000000O1000O1000001N10001O0000001O1N2O1N2O2M2N2N2M2M5H8J>AmoP=", "size": [1280, 720]}, {"counts": "U`j<6iW14K5K5K6J5K4M2M3M3M3N1O2N1O1O100O101N1O1000O11O0O1000O1001O000001O0O100000001N10001O0O2O1O1N2O1N3M2N3M2N3M2J9HU`S=", "size": [1280, 720]}, {"counts": "UXi<7hW14L4L4K5K5K3N2M2O2N3L3N2N1O2N1O1O101O0O10000O10001O000001O00000O100O1001O01N1000001N2O0O3N1O2M2O2M3H9F:H9ERXW=", "size": [1280, 720]}, {"counts": "TPm<4kW13L4L4K4M4M2M4L5J4N2N2O0O2N100O1O2N100O10001O0101O1N2N2N4M3L5K6K2M3M3L6K4I[_g=", "size": [1280, 720]}, {"counts": "U`T=1mW13M3L6J5K5J8I6K4M2M3N2N1O1O1O1O1010O002N3N3L2N200N3M3M3M3M3M2N1O2N2N3M3M4LZo_=", "size": [1280, 720]}, {"counts": "R`Y=6gW16K4K5L8H4K5L3N2N2N2N2N2N100010O1O2N1O2N2N2N2N3N2M3M2N3L3N1O2N2N4L4L2N4KVW\\=", "size": [1280, 720]}, {"counts": "S`Y=5hW16J5K5L5N2M3M2000O1N2O1O1O0O1O1O1O1O5K3N1N3M2N3M1NToi=", "size": [1280, 720]}, {"counts": "noV=9bW17H9I8I7J5K4L4M2N2N2M201N10001O001O0001O1O3M3M3M3M2N1O2N2M2O3M1O1O005K3M2N2N1N2O2M3M3M6I^gT=", "size": [1280, 720]}, {"counts": "koQ=4aW1d0A8J8J6K4K3N2N2N3M2N101O1O000O2O1O00000000000000000000000000000002N4L4L6J6I9H7I5TOnhN`0`W1G8HYoZ=", "size": [1280, 720]}, {"counts": "mWn<;YW1`0I5L4L5L4L4K3N3N1N2O1N101O000O1000O10000001O0000000O1001O013L6J4L6I5L2N4L2M5L2N2N3L5J:FY_]=", "size": [1280, 720]}, {"counts": "nog<;_W1<E:H7K4K3N3M2N1O2N1O2O000O2O0000000000000000O1000001O000000000O200O1O001O001O1N3N1N2O2M3M5J5C>E<Go_]=", "size": [1280, 720]}, {"counts": "SX_<c0YW19I4K5L4L4K4M4L3N1O1O2N100O2O0O1000000O010000000010N100O101O0O1000001O0O101O1O0O2O002M2L5K7J4J8H9ETXf=", "size": [1280, 720]}, {"counts": "jXZ<=`W17I6J5K4L4L3N2O1O1N2O3M2N2N1O2N1O100O2O00O1O1000000001O0001O001O001O1O0O1O2O0O2N2O1N2M3M3M2N5K4J:EeWk=", "size": [1280, 720]}, {"counts": "mPT<;_W19H7K5L2N2N2O2N1N3M2O2N1O1O1O1O1O100O100O2O00000000000000000001O001O0O2O0O2O000O2O1N101N2O1M4K7G9F=F_WP>", "size": [1280, 720]}, {"counts": "fhW<;`W1>D6L2M3M3N2L3N3M2O1O1O2N1O100O1O10001O000O1001O0000001O001O000O2O000O2O001N2O0O2N2N2O2L4K6K6I8Ddon=", "size": [1280, 720]}, {"counts": "mX_<3lW14L5L3M2N2M2N1N3N101O0O1O2N10000O1000000O1N201N101N10O01N2O1O1N2N2N2N1O2O0M3M38H4L4K5K5J7I9E<E[gh=", "size": [1280, 720]}, {"counts": "RQm<3mW14L3M2M101O0010O01OO01010O01O0O1001O00000O100000001O00001O00001N1O2O1N2Klfh=", "size": [1280, 720]}, {"counts": "ghk<e0VW17K4L4M3M2N3M4L3N2N1O2N101N1O101O0O10001O00001O000001O001N100O2O001O001O1O1N2M3L4M3N3L4L6J6J9FZW\\=", "size": [1280, 720]}, {"counts": "S`j<d0WW18J5L3L5L4K4N3M2N1O002O0O2O0000000O10010O1O001O00000000000001N1O2N2O001O1N3N1O1N2M3L5K5L6K3L9G:CfW\\=", "size": [1280, 720]}, {"counts": "ehk<8XW1c0K4K4M4L3M4M2N3M2M3O1N2O0O10001O0O2OO101O01O000000O1001O01O1O1N2O001O1O002N1N3N2M3N2N2M2M4L3J7I:GcgY=", "size": [1280, 720]}, {"counts": "gXi<:]W1:F:L5M1N2N3N1O1O2O2M2N2O0O3NO10000001O0000001O001OO100O2O00010O1O2N001O1O1O1O1N3N1O2M3M3M5J9Cag^=", "size": [1280, 720]}, {"counts": "_Ph<a0^W18G2N3M2N3N2L3M3O1N21O01O003M00000000000010N1000010O001O0O2O10O01O1O1O1O001O2N2N1O2N2M4L7F[_b=", "size": [1280, 720]}, {"counts": "ahf<9`W18M2OO1O1O1O1O101L3NR`o>", "size": [1280, 720]}, {"counts": "Qia<8aW18I7J7M2M2M3O2M2O2N1O00100O2O0O1O2N1000001O001OO10000010O00O101O01O01O1O2N1N6K4K5L2N5K5J6Jnfh=", "size": [1280, 720]}, {"counts": "]Y_<`0YW18J7K4M3M4L2N2N111N100O101O0O100O101N2O0000001O1O001O0O100O01eNniNh0VW1^O;F:ElmX>", "size": [1280, 720]}, {"counts": "gPY<`0XW1:J6J5L3O2M2N3N101N2N1O2N1O2O1N10001N11O0000000000000000000000001N1000003M1N3N2N2M3N2M2N2O1N3M3M3K7E<E]oi=", "size": [1280, 720]}, {"counts": "SY_<6fW16H8I6K6K4L5K3N3M3N2N2O1N101N2O0O2O0O2O000000001O0000O10000O2O000O101O001O1N2O001O1O1N2O2L5L3L3N5K5K4K6GX_b=", "size": [1280, 720]}, {"counts": "khf<6cW1>D8I5L5K4M2O2N2M3N2O1N1O2O0O1O2O000O1000000000O2O0000001O0000000O2O1O1N101O1N2N2O1N2N102M2O2M3M5J6K4L7GWoZ=", "size": [1280, 720]}, {"counts": "XiP=1^W13khN2PW15ihN2QW1b0L4L4L3N1O2N2N1O2N2O1N1000001N101O00100O00O100000000O1000001O0O2N101N2O1N4M1N2O1N3M3M3M4L2N3M4L5I8IlnP=", "size": [1280, 720]}, {"counts": "dPR=98LmV1h0K5J4M3O2N3M1O2N2N2O0O101N1000001O0O101O00000010N100O10001O001O001N2O1O0O2N2O1N2N3N3L3N2M3M4L3L6K5IUWR=", "size": [1280, 720]}, {"counts": "ShU=:eW19H4K4M9QiNPO\\V1S1_iNPO`V1Z1N1O00000000000000O11O1O000000001O000000O2O1O001N2N3M1O2O2M3N1N3M3M3M4K5K5K4MSoU=", "size": [1280, 720]}, {"counts": "h`T=8[W1b0E8L4L3M3N2O1O10O01O0010O00010O01O001O00000001O00O10000O1000O100O0010O02O1N2O1N3M2N3N1N2N3M4K4M5J6I9IS_n<", "size": [1280, 720]}, {"counts": "mhU=3gW1<C:G7K5L4M3N2N101M3N1O1O2O0O2O001N101O001O01N1001O000000000001O001O1N101N1O2N2N102M2O1N2O1N3M4L4L3M4L5J5K6JU_i<", "size": [1280, 720]}, {"counts": "\\aY=4kW14L2N2N2N2O1N2N2O0O2N2N2O2M2N101N2N1O2N1O100N3N100O001O1O100O010O0001O1O010O1O1O2N2N2M4M3L5M2M5L4K4K8He^i<", "size": [1280, 720]}, null, {"counts": "SiU=3fW1<G5I7K6K3M4N2M3N2O1N1O2O1O0O2O1O0000001O001O001O000000000001O00000O101O0O2O1N2N2N2O1N2N3L4M2N001O4M5I<EQok<", "size": [1280, 720]}, {"counts": "kPW=:`W1:F7L4H8N2N2N2O0O2N2N102M101N2O1N101O1N2O01O01O00001O0001O001N100O2N101O001O1N1O2O1N2N2N3M2N4L3M2N4L4L4K6K5HTWh<", "size": [1280, 720]}, {"counts": "c`Y=8aW1:C;K5L3N3N2N1N3N2O1N2N2N2O1N101O0O1000001O0000000001O00000000001O001O001O1O0O2O2N1N101O1M2O101N1O2N2M4K9ROcPg<", "size": [1280, 720]}, {"counts": "XPa=3iW15O1O2N2N1O3M1O1O2N2M5L100O00010O2N1O1O1O0O2OROUiNh0jV1WO\\iNd0cV1\\OaiNb0^V1^OdiN`0\\V1_OeiNa0YV1AgiN?XV1BhiN>XV1CgiN=XV1DgiN=YV1CgiN=XV1DhiN<WV1DjiN;WV1EiiN;VV1FjiN:UV1FliN9TV1HliN7UV1HliN8SV1HmiN8SV1ImiN7SV1ImiN7SV1HniN7UV1GkiN8XV1FiiN3_V1KciN0`V1Oi001N2O00PPb<", "size": [1280, 720]}, {"counts": "SQk=1nW13M3N1O0100O01O1O1000O1O1O010O1O2N1O1Nnf30RYL2O0O3N2M1O1O2N1O3N1N2O0O2N2O1O000100O2O2M8Gb__<", "size": [1280, 720]}, null, {"counts": "_XQ>;aW15K6M2O4L7I2N1O010O5K100O00001O01O1O1O0010OO2O1N101O2N1O2N1O1N2O1N5K5K2N2N101Omf`<", "size": [1280, 720]}, {"counts": "hPP>6gW1:D7H8K4M4L4L3N3M2N1O1O2M3N1O2O0O10000O10000O10001O0001O0001O01O0O101O2M2N200O1O1N2M3M3M3M3N3M5J4L`0]O[WT<", "size": [1280, 720]}, {"counts": "n`h=1nW15I5J5K5L5J5K6K4M4L3N2N3M2N2M2O1O001O1O100O2O0000000000000000O2O0010O000001O001O0O2O001N2N2M2N3L4L5M2M6KlWY<", "size": [1280, 720]}, {"counts": "jWg=?`W14L3M3N4L2M4M2L3L3O101O0O10001O0O100O1O1O2N1O100O100O10000O10O0100O100O1O1O11O0O1N4K6J5L4L4M4J8G_`_<", "size": [1280, 720]}, {"counts": "[`Y=8fW16K3L8H3M2M4L5L3L3N3N1N3N2N2N2N101N1O2N1O10001O0O100000000000O101O0O2O00001O001O0O1O1O2N2N2M4M2M4M4K5J;Ed0]O^of<", "size": [1280, 720]}, {"counts": "ZPU>7hW13M3N0O2O0O2N2O000O1O2N2N101N2O0O2O0010O2O1N3M5K4L4L\\Wm<", "size": [1280, 720]}, null, {"counts": "c`^=7eW15M2M3M4M2O1O1O1O1O1O1000000001O0O110O001O1O00100O01001000O2N9H0O1N11N1N2N1N3N1O3L3M3M3K4Faok<", "size": [1280, 720]}, {"counts": "Pa^=>[W18K5L4L4M4L4L4M3M2M4N1N1O2O1O00O1001N2O10O0O1001O00O1O002O01O2NN2O2O001O1O1O100N3M2N2K6J6K8I6I;EQWh<", "size": [1280, 720]}, {"counts": "d`Y=1jW1<E8F9K5J5L3M4M2N2N101N2N2O0O2O1O0O20N100O100000001O000000000O2O00001O001N2O1O1O1O001O1O1N2O2L7H6G9G:I`_i<", "size": [1280, 720]}, {"counts": "[hU=8`W1=H6J6K5K4M4L3L2O1O2O001N101O1N2O1O001O001O000001O0000000000001O0O2O1N3N001O1O1N2N2O1O1N2O2M2M5I:H6_OjhNOfW1LTWm<", "size": [1280, 720]}, {"counts": "]XS=8]W1>I7J5M3M3M4L2M3N2O0O101O1O0O2O1O1O001O001O1O0000000000010OO101O001O002M101O1O1O1N2N2N2O1N3M2O1N2L7I9[OnhNMgnP=", "size": [1280, 720]}, {"counts": "``o<6^W10chN:SW1`0I7K3L3N2N2N1O2N101O1N2O1O1O0O101O001O01O01O00001OO100000001O1O1N2O1O001O1N102M2O1O2L3N3M2N3L3M3E=Gk_S=", "size": [1280, 720]}, {"counts": "chP=2]W16dhN6TW1`0K5L3L5L101N1O2N101O1N2O1O001O1N101O01O000001O0000000001O001O1O0O2O001O1N101O2M2O1O1N3N1N3M2M4L6^OR`S=", "size": [1280, 720]}, {"counts": "QhU=g0UW16L5K5L3M2N2N1O2N100O2O001O1O1N2O001O001O000000001O001OO101O1O001O001O2N1O001N2N2O1O1N2O1N3N1N3L6K5Jb0]OWWm<", "size": [1280, 720]}, {"counts": "d`Y=3hW1;C;H7K5K3M3N2N1O1O2O0O101O1O0O2O1O001O0000001O0000001O00000001O001O001N2O1O001O1N2O0O2O2N1O1N3N3L3L5K5JaWh<", "size": [1280, 720]}, {"counts": "^h_=?[W19I7J5K5L4M1N2O100O2O0O2O1O001O1N101N100000001O0001O1O1O0000001O001O001O1O1O1O1O2M2O1O1O1N3M2N2N4K5]OR`d<", "size": [1280, 720]}, {"counts": "VPk=d0WW17M2N2N4L5K3M2O001N101O1N1O2O1N1O2O0O101N100O101O0O1001O1O1N3OO01N101O1O1O1O1O1O1O2M2O1N3L6J6J9WOng[<", "size": [1280, 720]}, {"counts": "aXl=6eW19E9L3M4L5K5L2N2M201N101N2O0O2N101O1O001O00001O0000000000000001O1O001O001O1O0O2O2N1O1O1N3N1N3M3M3M4[OVPX<", "size": [1280, 720]}, {"counts": "\\`h=a0[W17J5L2N3M2O1N4M2N3M2N2N101O1O1O1N2O000O101O0000001O000001O00001O00001O1O0O2O1O001N2O1N3N1M4M3L6B?Gfo\\<", "size": [1280, 720]}, {"counts": "YXb=:bW17K3M3N3M2N3M3M2N1O2N2O1O0O2O001O001O00001O000000001O00000001O0O10001O0O2O1O1O0O2O1N1O3L3M3M3L8Co_d<", "size": [1280, 720]}, {"counts": "YhU=9cW18K2N2M3O1N2O1N1O2N3M1O2O1N101O1O00001O00001O00000000000000O2O000000001O0O2O0O2O0O2N101N1N3M3N2Ld0]O^go<", "size": [1280, 720]}, {"counts": "YPh<=aW15L2N2N2N2O1N2O1N2N1O2N1O2O1N101N1000001O0000001O0000000001O000O1O2M2O1000001O001O1N2O001N2N2N2N;Cd_]=", "size": [1280, 720]}, {"counts": "UP^<2kW16XhNK\\W1e0F4N2N2N2N2M3N2N2N2N1O2N1O101O0O1000001O00000000000000000000O1000001O000O101O0O2N2O1N3M2O2M3N2M4M5YOmhN2TWf=", "size": [1280, 720]}, {"counts": "Z`[<1kW18J7I8H3N2N2O1M3O1N101K4O2M2O2N1H8O2N1001O001O0000000000001O00000O101O0O2O1N2O0O2N2N2N3M3M3M4G:CZXk=", "size": [1280, 720]}, {"counts": "_`Q<2hW1<F8J6J3N3L2N3M3N2N2N2N2N2N1O2O0O2O0O2O001O00000000001O00O011O0010OO10000O2O0O2O1O1N3M2M3N3L4J6K5K5HRhR>", "size": [1280, 720]}, {"counts": "_Po;8fW15L3J6K7K2M2O2L4N2M3N2N2O1N2N2O1O0O2O0O2O001O00000000010O000001O0000000O2O001N2O1O1O1N3N2L3M3M3F:M5KjWU>", "size": [1280, 720]}, {"counts": "aXU<5gW18I5I6L4M7I3N1O2M3N2N2O1N2N1O2O001N2O1O000000001O0000000000000001O00001N2O001O1O2M2N3M2N3M3M2N3L5Ea0Bcon=", "size": [1280, 720]}, {"counts": "hhW<2jW16L4L4K5L5I6L4M1O2M2O2M3N2O0O2O1N2O1O001O001O0O101O00000001O00000000001O0O2O001O1O1N2O2M2O1N3N2M3L4L5D=G9I[gh=", "size": [1280, 720]}, {"counts": "kh\\<:cW16K5K4K5L3N1N2O2M3M3N2N2O2N0O2O1O001O001N2O000000001O000001OO100001O001O001O001N2O1N3N1N3M3L4M2M4L4L4ZOmhN0e^g=", "size": [1280, 720]}, {"counts": "Qae<6eW1<E5M4K4M2O2M3M3N1O2M3N2O0O2O1O001O1N2O0000001O0000000000010O000000O2O001O1O2M101O2N1O1M4M3M3L4K4M7@]g^=", "size": [1280, 720]}, {"counts": "TiP=8\\W1?K3L4M3M5L2N1O2N2N2O0O2O0O2O1N101O001O001O000000001O0O11O00001O001O1N2O001O0O2O2N1O1N3N2N1N3L4L7FVgT=", "size": [1280, 720]}, {"counts": "SaY=<\\W1:K4L3N2N4L4M3M101N2O1O1N101O001N2O001N1000100O0000000001O00001O001O1O001N2O1O1O1O1O1O1N2N2N3M7H9@Rok<", "size": [1280, 720]}, {"counts": "Va^=5eW1:F8L3L5L4M2N3M2N2N2O001N2O001N101O001N20O000001O00000001O00001O001O001O1O1O1O1N2O1O1O1O1N3M5K3M2CQiNASVh<", "size": [1280, 720]}, {"counts": "[Y]=4gW18J6K7H7J5K4M2N2N1O101O001O001N101O001O001O00001O00000000O20O0001O0O2O1O001O1O1N4M1O1O1N3N2M4L3L4BoVh<", "size": [1280, 720]}, {"counts": "PRU>4jV1NoiN`0iU1DPjNa0oU1CdiNf0\\V1>1000001N2N2N101O001O10O01N2O1O2M2O2M4JenP=", "size": [1280, 720]}, null, null, null], "bboxes": [[291.0, 509.0, 55.0, 70.0], [283.0, 498.0, 58.0, 76.0], [281.0, 482.0, 60.0, 80.0], [279.0, 481.0, 66.0, 82.0], [275.0, 483.0, 73.0, 78.0], [268.0, 473.0, 82.0, 83.0], [269.0, 471.0, 84.0, 86.0], [273.0, 474.0, 90.0, 89.0], [278.0, 462.0, 93.0, 100.0], [285.0, 449.0, 99.0, 105.0], [302.0, 451.0, 100.0, 107.0], [320.0, 447.0, 191.0, 311.0], [330.0, 449.0, 102.0, 309.0], [330.0, 455.0, 103.0, 303.0], [324.0, 463.0, 95.0, 93.0], [304.0, 482.0, 90.0, 86.0], [290.0, 496.0, 77.0, 73.0], [288.0, 493.0, 68.0, 76.0], [292.0, 508.0, 62.0, 71.0], [299.0, 508.0, 59.0, 74.0], [295.0, 501.0, 56.0, 68.0], [288.0, 507.0, 53.0, 72.0], [285.0, 507.0, 57.0, 73.0], [287.0, 495.0, 48.0, 48.0], [296.0, 495.0, 52.0, 68.0], [299.0, 496.0, 49.0, 63.0], [295.0, 497.0, 49.0, 63.0], [293.0, 504.0, 53.0, 64.0], [329.0, 513.0, 17.0, 53.0], [301.0, 499.0, 51.0, 65.0], [310.0, 497.0, 46.0, 67.0], [316.0, 496.0, 53.0, 69.0], [319.0, 501.0, 53.0, 63.0], [320.0, 505.0, 52.0, 68.0], [322.0, 505.0, 51.0, 66.0], [324.0, 506.0, 51.0, 66.0], [328.0, 518.0, 41.0, 58.0], [323.0, 517.0, 51.0, 60.0], [321.0, 527.0, 52.0, 54.0], [322.0, 497.0, 99.0, 89.0], [332.0, 531.0, 52.0, 53.0], [356.0, 529.0, 37.0, 54.0], [342.0, 534.0, 53.0, 51.0], [344.0, 523.0, 58.0, 56.0], [355.0, 512.0, 54.0, 55.0], [355.0, 508.0, 54.0, 57.0], [356.0, 503.0, 53.0, 55.0], [362.0, 499.0, 54.0, 56.0], [358.0, 502.0, 55.0, 56.0], [353.0, 501.0, 54.0, 58.0], [351.0, 498.0, 54.0, 60.0], [349.0, 503.0, 54.0, 59.0], [342.0, 510.0, 52.0, 59.0], [339.0, 520.0, 48.0, 44.0], [341.0, 514.0, 51.0, 54.0], [359.0, 501.0, 37.0, 65.0], [342.0, 509.0, 52.0, 56.0], [343.0, 500.0, 54.0, 59.0], [345.0, 497.0, 52.0, 61.0], [342.0, 499.0, 55.0, 61.0], [344.0, 495.0, 50.0, 59.0], [345.0, 494.0, 51.0, 59.0], [344.0, 493.0, 53.0, 60.0], [338.0, 492.0, 55.0, 61.0], [336.0, 492.0, 55.0, 59.0], [335.0, 495.0, 54.0, 57.0], [285.0, 494.0, 101.0, 56.0], [328.0, 490.0, 56.0, 57.0], [327.0, 493.0, 54.0, 56.0], [330.0, 490.0, 38.0, 55.0], [336.0, 486.0, 38.0, 57.0], [340.0, 491.0, 37.0, 54.0], [340.0, 504.0, 26.0, 41.0], [338.0, 480.0, 45.0, 65.0], [334.0, 475.0, 44.0, 68.0], [331.0, 481.0, 45.0, 64.0], [326.0, 486.0, 50.0, 60.0], [319.0, 488.0, 50.0, 65.0], [315.0, 506.0, 50.0, 62.0], [310.0, 506.0, 51.0, 57.0], [313.0, 505.0, 49.0, 59.0], [319.0, 501.0, 48.0, 63.0], [330.0, 545.0, 37.0, 17.0], [329.0, 507.0, 48.0, 64.0], [328.0, 490.0, 49.0, 63.0], [329.0, 498.0, 50.0, 63.0], [327.0, 503.0, 48.0, 56.0], [326.0, 508.0, 46.0, 51.0], [325.0, 513.0, 11.0, 26.0], [321.0, 510.0, 46.0, 53.0], [319.0, 525.0, 35.0, 61.0], [314.0, 503.0, 52.0, 61.0], [319.0, 509.0, 53.0, 64.0], [325.0, 505.0, 53.0, 61.0], [333.0, 514.0, 53.0, 59.0], [334.0, 508.0, 51.0, 60.0], [337.0, 513.0, 45.0, 52.0], [336.0, 510.0, 52.0, 53.0], [337.0, 504.0, 55.0, 61.0], [340.0, 528.0, 52.0, 52.0], null, [337.0, 513.0, 53.0, 58.0], [338.0, 507.0, 55.0, 64.0], [340.0, 495.0, 54.0, 60.0], [346.0, 504.0, 52.0, 50.0], [354.0, 512.0, 46.0, 47.0], null, [359.0, 518.0, 40.0, 48.0], [358.0, 501.0, 51.0, 66.0], [352.0, 500.0, 53.0, 65.0], [351.0, 481.0, 49.0, 62.0], [340.0, 489.0, 54.0, 67.0], [362.0, 511.0, 27.0, 32.0], null, [344.0, 511.0, 46.0, 54.0], [344.0, 514.0, 49.0, 64.0], [340.0, 501.0, 52.0, 62.0], [337.0, 497.0, 52.0, 63.0], [335.0, 498.0, 52.0, 62.0], [332.0, 498.0, 52.0, 64.0], [333.0, 499.0, 51.0, 59.0], [337.0, 497.0, 52.0, 61.0], [340.0, 504.0, 53.0, 58.0], [345.0, 500.0, 51.0, 60.0], [354.0, 498.0, 49.0, 62.0], [355.0, 501.0, 51.0, 59.0], [352.0, 501.0, 50.0, 60.0], [347.0, 504.0, 49.0, 48.0], [337.0, 506.0, 50.0, 43.0], [326.0, 507.0, 50.0, 44.0], [318.0, 494.0, 52.0, 53.0], [316.0, 488.0, 49.0, 60.0], [308.0, 496.0, 51.0, 62.0], [306.0, 501.0, 51.0, 60.0], [311.0, 500.0, 51.0, 59.0], [313.0, 506.0, 54.0, 58.0], [317.0, 515.0, 52.0, 58.0], [324.0, 517.0, 51.0, 58.0], [333.0, 518.0, 50.0, 58.0], [340.0, 521.0, 50.0, 57.0], [344.0, 523.0, 50.0, 56.0], [343.0, 533.0, 50.0, 55.0], [362.0, 541.0, 24.0, 47.0], null, null, null], "areas": [3145.0, 3450.0, 3996.0, 4392.0, 4608.0, 4970.0, 5615.0, 6459.0, 7786.0, 8653.0, 8773.0, 8950.0, 8613.0, 7827.0, 6749.0, 5817.0, 3963.0, 3426.0, 3007.0, 2996.0, 2749.0, 2768.0, 3086.0, 1759.0, 2846.0, 1565.0, 2083.0, 2650.0, 635.0, 2566.0, 2053.0, 2897.0, 2587.0, 2682.0, 2593.0, 2662.0, 1179.0, 2374.0, 2181.0, 2045.0, 2145.0, 1433.0, 2090.0, 2330.0, 2281.0, 2304.0, 2235.0, 2322.0, 2315.0, 2443.0, 2528.0, 2448.0, 2012.0, 1253.0, 1711.0, 745.0, 1671.0, 2483.0, 2489.0, 2501.0, 2360.0, 2378.0, 2497.0, 2522.0, 2534.0, 2388.0, 2402.0, 2557.0, 2344.0, 1312.0, 1284.0, 1247.0, 541.0, 1953.0, 2408.0, 2129.0, 2487.0, 2665.0, 2465.0, 2355.0, 2328.0, 1568.0, 486.0, 2455.0, 2439.0, 2501.0, 2176.0, 1888.0, 157.0, 1929.0, 1623.0, 2516.0, 2630.0, 2529.0, 2315.0, 2386.0, 1824.0, 2171.0, 2554.0, 1657.0, null, 2423.0, 2605.0, 2641.0, 1224.0, 483.0, null, 1304.0, 2603.0, 2724.0, 2263.0, 2767.0, 566.0, null, 1166.0, 2490.0, 2489.0, 2576.0, 2556.0, 2615.0, 2413.0, 2544.0, 2498.0, 2492.0, 2353.0, 2447.0, 2434.0, 1887.0, 1715.0, 1743.0, 2260.0, 2182.0, 2457.0, 2381.0, 2374.0, 2357.0, 2387.0, 2326.0, 2331.0, 2278.0, 2230.0, 2211.0, 851.0, null, null, null], "iscrowd": 0, "video_id": 0, "height": 1280, "width": 720, "category_id": 3827, "noun_phrase": "the face"}, {"id": 866, "segmentations": [{"counts": "^UTf03eW1?D8I7J4L4L4L5M2N2N2M201N2N2O000O13M100O0000001O01OO2O0O100N2N200O1bNeiNW1\\V151N7J3M2NIlNdiNS1]V1mNdiNS1[V1nNeiNR1ZV1mNgiNR1ZV1nNfiNQ1[V1oNeiNP1gV1N3N1N2O2N1IihNCVW1d0O2ONlhN^OPW17b0G9MmZg3", "size": [1280, 720]}, {"counts": "]m\\f0<\\W1<F8J5J7L3M3N3M1N3N2O1O1O0O10001O01O001O01O01N10000O101N101N1O100O2N2M201N2O1N1O1O2N2O1O001O2N1O1O2N1O101M2N2M3N2M4IkZ]3", "size": [1280, 720]}, {"counts": "Z]df09bW1;D8J6J6K5K4N3M2M3N2N1O2N2N1O1002N1O0010O000001O000O1O2N1O1O2O1O001N100O2O0O2N101N2N4M0O2O1N3N1N2O1O01O10N3N1O0O1O3M3M1O4L:E`jP3", "size": [1280, 720]}, {"counts": "_]if01eW1>F;F7K5K5K4M3M4M2N2M201N101N2N101O0010O00001O1N1O2N100O2O0O101N2O0O1O2N101O0O2O1N3M102M3M0100O13M1O1O101N1O3L2N1O2N1N3N2NlRm2", "size": [1280, 720]}, {"counts": "TUmf0=_W17H7K6J4L5L5K3L4N2O1N2N1O2N2O001O1O000001O1O0O1000001O0O100O1N3N2O0O2O010N2N2O1N2N2O0O2N101O2N1O00002N3M2N1N2O1N1O2N1O2N2N2O4Hkjf2", "size": [1280, 720]}, {"counts": "PURg0>^W1<E5J7I6L3L5L3N2N1O2N2O0O2N101O01O10O00010O000000O100O2M3N1O2O1O001O0O2O2N1N1O100O2N2O1N2O001N2O2N00100O1N3N2M2O1M2O2O1N2N2L;Gdja2", "size": [1280, 720]}, {"counts": "g\\lg0^1\\V1:I4L4N1O10000000O10001N10000O2O0O2O1O001O000O2O1N2N1O4M1O2M2N2O1O1O1O1O1N3M3M2M2O1O1O2N1O2N2N2M5K7JbjW2", "size": [1280, 720]}, {"counts": "^mbh02YW1T1^O6J7J3M3kiNZNoU1h130000O1O1O001O10001N101O0O200O1O1M3N3M3N1O1N2N2O1M5K3N2N1O3L3N3L6J4Mbjm1", "size": [1280, 720]}, {"counts": "Tmlh0k0gV1e0E6L4N000000N201O010O0O2O0O201O2M1L4N2O1N101N3M2N1N2O1O3M2M4N0N3N2N3L5Kejh1", "size": [1280, 720]}, {"counts": "^Unh0f0gV1f0F8L3O1000O101O00001O0O1O2N2N3M3N1O1O2N1O1N3M3M1N1O3N2N3M2N3L3N2M5LdRj1", "size": [1280, 720]}, {"counts": "UePi0o0`V1b0K40000001O0O2N1010OO2O1N4M2M2O1N2O1N3L4M2N2M2O2N2N2M3N2M6Kdbl1", "size": [1280, 720]}, {"counts": "flQi03:k0WV1c0N1O1O01O0O2O0010O01N4K5L101O1N3M1O4K3N2N1N3N1O2N2M3M3Ngjm1", "size": [1280, 720]}, {"counts": "`\\Yi0d043ZV1o0M0O01N3L4M2O1N2O1N4L4L2N3M4L2N3M1O2M3M3M3Lijm1", "size": [1280, 720]}, {"counts": "b\\^i0X1iV11N3NO1N3N2M5K2N2N4M1N3L3N2N1N3M3N2Kjjm1", "size": [1280, 720]}, {"counts": "_]^i06QW1MSiNk0dV1=M01N3N1N8H2YOmhN>[W100O1O1N3N2M3M3IlZP2", "size": [1280, 720]}, {"counts": "hUbi03dW1:C<0N3M4M1O1O0O6IjZU2", "size": [1280, 720]}, null, null, {"counts": "cUnh07aW1=E6L4N20N3N2O0N3N1O2N2N1N4M2M4Mhb`2", "size": [1280, 720]}, {"counts": "\\Uih0>YW18M3O2O2I65K2O01NN3O0O3M2N2N1O2M2O2N3L4Lib`2", "size": [1280, 720]}, {"counts": "Q]Vh0916hV1l0G5K5M300O2O01N101O2N1O00001N2O1O1O1O2M3M2M5L4L4M2M2O1N2O0N3M2O2N4Jlja2", "size": [1280, 720]}, {"counts": "jlUg061O`W1j0\\O8H5L6K3N2N3M1O2N2N2O0010O1O010O01O001O0000O1O2N1O2N10001O000O2N1O2O0O1O101O1N1O2O001N2O4K3M3N3M1O2N1O1N1O1O2N1O2N1N2O2N3KmZ_2", "size": [1280, 720]}, {"counts": "RUWg0<[W1=H7J6K4K4M4M2M3M3N2N2O1O01O01O001O001O00000001N101O00000O2M2O100O2O0O2O000O2O000O2O0O2O1N2O0O2O1O6J2N1N3N1N2O1N2N2N1O2N1N3N2M5Kkb[2", "size": [1280, 720]}, {"counts": "QmZg0=ZW1<I7J5L4K4M4L3M4M2O0O1O2O00001O1O000010O001O00001O000N2O100O1O2O00001O0O101O000O2O0O2O0O1O2O1O1J`iNkN_V1Z12O1O1N5L3L4L3M2N2N1O1O2N103J6KljW2", "size": [1280, 720]}, {"counts": "nl_g0;_W1;F8J6J5L4L4L4L3N2N2N2O0O2O00000010O1O0010OO100O101N1O1O101O0O10001O0O10001O0O2O0O2O001O0N2O2N2O1O1O010O1N7I3M3N1O001M3N1O2M3M5IQkR2", "size": [1280, 720]}, {"counts": "Secg05dW1>C:I6J5K5L3M4L3N2N1O2O0O20O1O0001O1O000000001O01N1O10000O101N100O100O2O0O2O00001N100O2N101O1N1O2N10100O2N4K3N4K2N2O1M2O2N1O3L4LnRo1", "size": [1280, 720]}, {"counts": "WUag04bW1=G:I6J5L4K5L3N2M3N2N1O2O001O1O01O10O1O0000000000000000N3O000O10001N100O2O0O101N100O2O0O2N101N2N2O00001O2N7H3N1N2O1N2N1O2N1N3M4KPcQ2", "size": [1280, 720]}, {"counts": "mTag0`0ZW1:H7J5L4K5L3M3N3M2N101O0O2O0010O001O0001O00000001N100O100O2O00000O2O000O2N100O2O000O2O000O2N2O1N2O001N2O6I3N2M2O1O0N3N1O2M2N3M7FPcQ2", "size": [1280, 720]}, {"counts": "o\\bg0=[W1<H7K4K6J5L3M3N3M2N1O2N101O01O1O000010O0O100001O0000000O2O00000O2O0O1O1O2O001O0O2O001N100O2O2M100O1O2O1N2mNXiNl0oV1N3N2N0O2N1O2M2O2M3M6IoZP2", "size": [1280, 720]}, {"counts": "U]gg02_W1h0D6J6I6L4L2N4M2N2N2O01O0001O1O000O2O01O01O000001O01OO1N2O101N1O1010O00O2O0O2O0O101O1N101N1O2O100O001N2O6I3M3M2M3O1N1N3N2N1N4M4HP[k1", "size": [1280, 720]}, {"counts": "kdmg0=]W1<G7J4K5K5M3L3N2N3M2O001N101O001OO2O000001O1OO101O0O100O2O0000001N10001O0O2N101N1O101O1N101M2O3N1O1N2O6K1M3M1O2O0O101M2O2N2M2N6GQSe1", "size": [1280, 720]}, {"counts": "kTPh0=^W1:H6J7I5K6L3L3N3M2O1N2O0O3N10O1N1001O010O0O20O00000O100O101O000N3O0O101N101O0O101O0O2N1O2M4N1N2O0O8I3M1N2O0O2O000O1N3N1O2N1M5L5HPcb1", "size": [1280, 720]}, {"counts": "k\\Qh0d0XW17J6K5K5J7K2M4N1N2N2N2O0O20O100O01O000010O0001O0000O10001N1O101N101N100O101N1O110O0O2N2N103L4M1N3J6M4N0O1O1O0O1O2N1O2M2O1N3M7Gjbb1", "size": [1280, 720]}, {"counts": "n\\Qh0d0WW19I6K7I5L3L3N3M2O2M2O0O2N11O1O000100O0010O000001OO10000000001N1O101N10000O2N1O3M5L0O2O1O1N2O0O3M2N2N3M2O2M101N1O2M2O1N3N3L5Jgjc1", "size": [1280, 720]}, {"counts": "PUPh0c0XW19I7J7I5K4M3M2N2N2O1O1N2O1O0001O1O000001O00010O000000000000O101O0O2O001N2O0O102N1N2LhiNaNVV1^170000N102M2O2M2M3N2N3M1N2O2M3M2O2M5K4KeRe1", "size": [1280, 720]}, {"counts": "Uemg0<]W1<G9I6J5K4M3M2M4N1N2O1O1N2O001O10N100O20O001O00001O000000O2O00000O100O2O001N101N2N2O2M2M201O2OOO102M3M3N1N2M4M1N3N1O1N3M3N3L9G`Zf1", "size": [1280, 720]}, {"counts": "odmg0e0WW19H8I5K4L4M3M3M2O1N2O1O1O001O1O0001N100001O000010O0000000000000O2O000O10000O2O0O2O00100O001M2O2O2N1O2L5M1M4M2N2M3M2N3M2N3M4L7IdZf1", "size": [1280, 720]}, {"counts": "Sehg0?[W1:I8H7J4M3M3M2N3M2O1N2O1O1N2O010O00001O01O0O100001O00000001O00000O100O10001N2N101O3L101N1N4L3O1N101O1N3N2M3M2O0O2O0M3N3M3N2M3MhZk1", "size": [1280, 720]}, {"counts": "V]bg06`W1a0F8H7K5J5M2M2N3N1O1N2O1N2O1O0000001O001O0001O01O0000O100000001O000O100O2O0N3O1N4L2M20100N1O2O1N2M2O2N3N2N100O001N1N3L4M4L5J6HfbQ2", "size": [1280, 720]}, {"counts": "P]gg0b0WW1=G7K4K4N2M3M3M2N2N2O1O1O1O1O001O01O01O001OO100O10010O000000001O0O1O002O000O101N2O1N4L2N2N2N2N2O001O2N003L2N2N2N1O2L4L4M4M4K4Ifbl1", "size": [1280, 720]}, {"counts": "PeRh0b0WW1=G7J6J4M3M2N3M2N3M101N200O01O010O01O01O01O001O000O10000001O00000O101OO01O1010O01O0O2N2O102M0N3N2O2M3L3O2O0O1O1M2O2K5J5M5L4L5JgZa1", "size": [1280, 720]}, {"counts": "od\\h0c0WW1;H5K9H4M3N1N2M3N3M2O1O001N2O01O10O001O010O00010O000000O1000000O100O2N10000O1O1O2M200O2O1N4M3L2O001M3N2N3N1N2O2OO10N1L5N2L6K9CgZW1", "size": [1280, 720]}, {"counts": "bTnh0n0lV1f0^O6K4L3M101N1010O01O0010O100O0001O00000000000000O1O1O110O000N201O0O2N1N2L4N201N101O100N2O5J4L3K6K3N2O0O2N1O2O1L6KkZm0", "size": [1280, 720]}, {"counts": "j\\jh0e0TW1=F6K5L4M2M4M3M2O1N3N000O2O0010O000010O001O001O0000000001O0O10000O2O000O1O1O1O2M2O2O0O2O0O2O1N2O1O1M2M3O2N8I2M200O1O0N3N2M3M5G9JnZh0", "size": [1280, 720]}, {"counts": "kTih01iW1j0VO;F7K5M3M2N2O1N2O2M2O1O1O00001O0001N11O001O1O001OO101O0O100O2O00000O1O2O000O1O2N101N2O0O2O0O2O2N1O0O2M2M4M7J4M1N101N1O2M3M4K5JTci0", "size": [1280, 720]}, {"counts": "edfh0V1]V1`0J5K4O2M2O1N20O01O100O1O001O000001O0O100O2O0O1000010O0000001M2M4N101O1O0O2O1O1N3N0L4N3N2N3M6I3M3N2N2N2O0O2N=AjZW1", "size": [1280, 720]}, {"counts": "h[[h0l0TW1g0XO5K3N1O11O01O1M2O2N1O001O0O0100000000000000O2O000O1000001O0000001N1N3O0O2O1O1M4L3N2O1O1O1O1O1O1N3N2I7J7K3N2N1O2N\\S`1", "size": [1280, 720]}, {"counts": "VkSh0d0WW1;H<F6I5L4K4M3M2M2O001O1O001O00O100000O10000001O01O00000000O1000000001O01O000O2O0000001N101O2N1N2O1O1M2O2N2N1O2N3L3H8M2N3M4L6H7H^l^1", "size": [1280, 720]}, {"counts": "WRPh0>aW15K7H:H5K4K4M3L4M4L3M2M3N1O2N0O1000001N11O01O00000O010O011O00000001O01O00O1O100O10010N100O2O1O000O2O1O1N101N1O2N1O2M4D;M4K7J7H5L4J[]a1", "size": [1280, 720]}, {"counts": "Tjng08UW1e0M4L4L3N1M4M4L3M4L3N2N2N3M1N2O1O001O000O10000000O10O10001O000000000000O100000001O001O00000O2O001O1N2O1N101N4L3M1O2K5K5K5L4M4L5L4K6HQ^a1", "size": [1280, 720]}, {"counts": "iYQh06YW1f0F8J5L3N2N3N1O1O2N1N3N1O1O2M5K3N1O1O2N1O1N2O001O1O00000O010001O00000001O00000000O2O000O101O0O2N1O2O0O2O000O2N1N3M3N2M4L9G4K5J4M3L5M3M5Ee^\\1", "size": [1280, 720]}, {"counts": "SaWh0>3MnV1h0J4M3M2N2O1N2O1O1N3M3N2M2O2N1O2N1O002M2O1N3N00001O0000000O0100O1000001O01O001OO2O0O1O1O101O00001N101N101O1N2O1O1N1N3M2O2M3L4K6K8H6K4Ke^W1", "size": [1280, 720]}, {"counts": "ZQZh04dW1d0@;H4L3M3N1N2O0O2O1N2N2O2N2N2N1O2M3M2N2O001O0000000O1000001O0000001O000O11O00000O101O000O2O000O2O1O001N2O1O1N101O00001N101N2M4L3J;E9G7J7Jb^R1", "size": [1280, 720]}, {"counts": "WY`h08cW1:I;E6K3M4M2M3N1O1O1O1N3M3L3N2N3N2M3O0O1O1O0O2O001N101O001O0000000000000010O0000001O0O101O0O1O2N1O2O001O0O2O0O2O0O2O1O1N2N2N1N4L3L6A?I9H5K5Genj0", "size": [1280, 720]}, {"counts": "VYeh0:dW16I5K6M3L5L2M4M3L3M3L4N1N3N2N1O2N1N2O1O000O2O000O100000000000O11O00000000000001O00001O00001O00001N101O001O1N2O00001N1000001N1O2M3FgiNiN]V1R1<J8I8G7Jcne0", "size": [1280, 720]}, {"counts": "Wakh0<aW15L5J7K3M3M4M3L3N3L3N2M4L2O2N1N1O2O001N1001O0000O10000O100000001OO2O00000001N100001O00001O001O0O2O001O001O1O1O1N101O001N1O2M2O2M3H9H8K6J7I8Edf?", "size": [1280, 720]}, {"counts": "VQSi05hW1<D8I6K3M3M5L3L3M4L2N4M1N3N1O0O2O001O001O0O101O001O0O0100000000000000001O0000O2O000000000000001O00001N101O001O1N2O1O001N1O2N1O2M3K4J7L4M5K4L5K7H7Gc^4", "size": [1280, 720]}, {"counts": "WaZi03hW1b0A7I7J8H4L4M2M4M1N2O1N101N100O101O0O100000000000000O100000000001O0000000000O1001O001O000O2O00001O1N101O001O1N1O2M3N1L4L4N2N3M3N2N1O2M6K6G6F8Ne^O", "size": [1280, 720]}, {"counts": "Si[i0:dW1=D7H;F4L4M3L4M1N3M2O0O101N1O10000O2O00O2OO1000000O1000001O0001O000000000O100000001O001O00000O2O0O2O001O1O1N1O2M3N2J5M6K5K3M5L100N104K5Ifn1", "size": [1280, 720]}, {"counts": "XaZi01kW1a0A9H:E8H4M4L4L3N1N2O1N100O2O0000000O100001O00000O11N101O000000O101O00000O10000O10001O0O101O000O2O1O1M3N1O2O000O3M2J6M3N5J6J3M4L2N1N108GbV3", "size": [1280, 720]}, {"counts": "Xi[i0;bW1<E6K6J6J5K4L4M1N2N2O1O1N10001N100O1000000O0100000O2O0000000000000001OO1000000000O2O0000000O2O001O1N101O1O001N2O1O0O2M4L5G7N3L2N1O2O5K4G9E8O_^O", "size": [1280, 720]}, {"counts": "bY^i06eW1=C;H6J8I6J3M3M3N0O2O10O010O01O1N10O10000001N10O1001O001OO01000000000O1O100000000000000O2N001O2O0O101O000O2O001O1N2O1N101O1O1N2L5H7M5K20a^O", "size": [1280, 720]}, {"counts": "aYci0f0VW1`0B6J6J4L3N3M110O1O1O1O1N101O00000O20O00000000O10000000000O10O100O1O100001O00000000N2N2O11O00000010N101N2L3N3N10001N101O0O3N1N10f^O", "size": [1280, 720]}, {"counts": "bi[i09cW1g0YO9I6J6J3N3M2N2N2O0O2O001OO2N2N11O1N2O001O00O1000O01O11O001N1000000000O0O2O101O01O0O0101O000N2N2O1O2O1O000O101O1O1O1N3N1O0O2O2N1kN\\iNk0fV1RO_iNj0cV1SOfiN;X]4", "size": [1280, 720]}, {"counts": "XbZi0;_W19D:H9M2N1N3G8H8N200O2O00000O100O1000000000000O010000001OO1000000000000O101O0O10006J000O101O001N2O1O1N2O1O1O1M3mN\\iNg0gV1UOfiN?]V1]OjiN;RW1FQ^>", "size": [1280, 720]}, {"counts": "dilh0d0RW1=E:L5K5L3M2N2O1N101O2N00000O1O10000O100000000000000O1000000000O10000000000O10O10000000O2O000000001N1001O01N2N100WNoiNc1QV1[NRjNd1UV1O2M5L2N2I7VOViN:nV1BWiN:mV1A\\iN7ZW1LPVb0", "size": [1280, 720]}, {"counts": "gYjh0;^W1>[Oa0I6M4K3N2M3N2N2N2O0O2O001O000000O1001O01O0000000000O1O1000000000000000O10O10O1001O000000O2O001O00O01O20O00JTjNYNlU1h1501O1O1N2N7E7K6L2YOZiN1iV1L^iNLgV10h0Ld^c0", "size": [1280, 720]}, {"counts": "hafh0;]W1=^O`0H7L3N3M2N2L3N3N2O1N2O00001N100000000000000O10000000000O2OO100001O000000O1000O1000O1001O01O000O2O001O0O1N3GSjN[NoU1e17O1N101O1O1N2dNbiNR1aV1iNeiNS1hV1YOXiNMPW1K[gi0", "size": [1280, 720]}, {"counts": "fYeh0<^W1:A>F:K3M3N2M3L3O2O1N1O2O0O2O00001N10001N01001O0000000O10001O0000O100001O00O10000000000N1O3N1N20WjNPNbU1Q262OO001N1N2K5N3O0O1O2O1O1O2M2M4M:D:XOYgi0", "size": [1280, 720]}, {"counts": "lQih01eW1>I6E;D=J4M2M3K6M1O2N1O2O0O1O101O00001O001O000000000O10001O0000000000000000000000O100001O00O1O1O20O1OO1N3N1IVjNWNlU1h1601O00001O2L3L4N5K5ZOWiNLlV11aiNBbV1;e0L5Kg^c0", "size": [1280, 720]}, {"counts": "caUi0c0XW19D:H8K5L3N1O2M3L301N101N1000001O0O1000001O000000000O10001OO0100000001OO100O100000000N200KYjNSNeU1m1[jNTNdU1l1]jNRNeU1o151OO1O1010OJTjNXNlU1g1VjNXNkU1g17O2O001O1N3L3M3iN\\iNP1mV1[OXiNKmV1O[iNJgV14d0O4Ken6", "size": [1280, 720]}, {"counts": "lY^i0;]W1;D=F9I5L4N2M3N2M3N1O2N1O1O101N1000001N100O11O00001O0001O0000O0100000000000O1000000O100000000000001O00000O101O000O101N1O2N1N3N1N3L4M3K40W_O", "size": [1280, 720]}, {"counts": "kQbi0>\\W1:H8I5H7K6K4L4M3N1O2N1O2O0O100O1000000O10001O0000000000O101N0101N1000O10001O000O100000O100001O000O1000001OO10000001O001N1O2N1O2N1OX_O", "size": [1280, 720]}, {"counts": "lQbi0`0ZW1:F9J5H7L4L4M2N3N1O100O2N1000O0100000000O100000000000000000O10O2O00000000O1000001O0O01000000001O000O101O00001O0O101O2L3N102M2I7M20o^O", "size": [1280, 720]}, {"counts": "\\bdi0:]W1:mNS1K5N1O2N100O100O10000O1000O1000O10001OO10000000000O2OO1000000000000000O2O00000000000000001N1000001O002N4L2M2L3N3L4I8L3N3\\OmhN4VW1LjhN3ne0", "size": [1280, 720]}, {"counts": "Tb_i09cW18I5K5K4N2N2N1O2L3O2M2N3N1N2N2N2O1O1N2O0O2M3N3N1O010O11O00001N100000O11O00000O1000001O0O01000000001O0O10001O000O3M6J3M2N2M4L3L5J5[OmhN9VW1EmhN7UW1HlhN8ie0", "size": [1280, 720]}, {"counts": "bYYi0g0UW18E:I6I6M3M4M2N2M3N1O2N2O000O1000001O000001O00000O1000O0101O00000O1000000000000000001O000O1000001O00000O1000001N1N201N1O1N2M4M3N3L4M1N2nNYiNi0PW1N4L7\\O?0e^O", "size": [1280, 720]}, {"counts": "QRSi01cW1f0@:E:J4L4L4N2M3N1O2N1O1O100O1000000O1000000000000000000001O000000O11O0000000O101O0000O010000000001O0O10001O000O1O2N100N200O1N3M3N4K5UO[iN3iV1I\\iN2iV1KZiNOkV1OWiNKQW10To6", "size": [1280, 720]}, {"counts": "PZoh0a0WW1<E;H7K3L4L5L3N3M2M3N2O0O2O1O0O101O0O2O000O10000001O0001O00O100O11O00O2O0O2O010OO01O1000001N1M3K6O00001N100O1O2N1O10001N101O1N1O2N2N4L3L?@9G;Dne:", "size": [1280, 720]}, {"counts": "WRih0`0[W18D<H8J4M4M3K4L5M2M3N2N100O101N101O000000001O00O0100000000001N11O0000O10001O00000O2O00010O0O1O2N1001OO1M4N1K501O0O1O101N2O0O2N2N3M3M5L1M6J4M3\\OhhN:bW1JPf?", "size": [1280, 720]}, {"counts": "WZjh0d0VW1:E9I7K6K3N3K4M3N2N2N2N101N1O1000000000000000O1000O1000000001O0O10001O00000O101O00001O000O2O001O000O1O1N3N1N2O1O2N1O101N101M4N2M3M4K6K9E5M4Kkm`0", "size": [1280, 720]}, {"counts": "[jQi0d0UW1:H7H8J5L4M4L3N1N3M3N2N1O2O0O10O010000O100000000O01000000000000000001O00000O2O000O10001O001N1010O00O2N1O1O2N1O2L3N3N1O2O1N3M2N3K9I7I5J6FPn;", "size": [1280, 720]}, {"counts": "\\b_i0b0WW1;H7H7I7K4M3M2N3M3M2N3N1O2N010O100O100O10O1001O0000O100000000O1000001O000000001N1O10O20O1N1O2O1N101M2O101M3N2N2M3M5K4N2I8K7I:DP^4", "size": [1280, 720]}, {"counts": "Zjei0b0XW1:F:E8K6L5K3M3L4N1N3N1O10O01O1000000O1000000000000O10O101O000000000O100O1000000O2O0O20O10M2O2O0O2O1N1N2N3M3N2M3M3N1N3M4L5K20]^O", "size": [1280, 720]}, {"counts": "[bii0b0UW1>F9H7J6J5L2N3N1O1N2O10O01O1O100O100000000O1000O10000000000000001OO010001O000000001O000O101O0O101M2O1O2N2N1O2N2M2O2N1Oc^O", "size": [1280, 720]}, {"counts": "Vjji0i0TW18H7J5K4K4L4M2N2O1O001O1O1O2O0O10O0101O0000000O10000000O100001O01N100000O10O10001O0000001N10001N100O2O1O1N2N1O2N2M20^^O", "size": [1280, 720]}, {"counts": "_Rgi0=]W1;G7J6K5K3M4L3M2N2O1O1O001O10001N101N0100000O1000000O10010OO100000000O1000000O101O0000001N1000001O1O1O0O2O0O1O2N1O2M2M3L40Z^O", "size": [1280, 720]}, {"counts": "jbdi01dW1?H:G7J4K4M3N2N2M3N0O2N201O0O1N2O100O2N101O002NO01000001ON2O00101O000O100000000O101N101O000000001O001N10001N2N2N2M3M3L4K6I6L30Q^O", "size": [1280, 720]}, {"counts": "_Zhi0`0\\W1:H6I6K4L4L4L2N3N2N0O101O1O101O001O0O2O000O1000000O01N102O0001OO100000000O1N3O000O101O00001O00001O001O1N1O2N2N2N1M5H7J5OS^O", "size": [1280, 720]}, {"counts": "ejji03cW1?I5K7I5J6K4L3M2N2N2N2O011O1O1N2O000O2O000O1000O000010001OO1000O1000000000001O000O1000001O1O001O1O00001N101N2O0O2O00W^O", "size": [1280, 720]}, {"counts": "[jji06dW1:J6J7J5J5J6J5M3L3M3M2O1O2N2N2OO0100O100000O1O02O1O0000O1O100001OO100000O100001N100000001O000O1O1O2O000O2N2N2O1N2N10_^O", "size": [1280, 720]}, {"counts": "Ubni0<`W16L4L8H5J5L5K4L4L5L2N2N2N1O1O1O1000000O100O10000000000O0100000000000000000000O1O1001O01N1O101N101N1O1O2O0N3N10e^O", "size": [1280, 720]}, {"counts": "VRVj01kW19E8K5M4K6J5K4K5L3N1O1N2O2N1O1O3N2M10O01VjNQNcU1o171N2O00O001O1M3001O1O0000O11O0000M3O2N100O1000000O2O0000m^O", "size": [1280, 720]}, {"counts": "mabj08bW1:J3M5L6I4L5J6J4N1N2O1O001O1O1O1O1O2O1O0000000O1000O100O01000000000000001N1000T_O", "size": [1280, 720]}, {"counts": "ialj0?\\W17L7I5K4K5K4M3M2O2N2M3N010O1O100O100O100O101OO1000O10000000000W_O", "size": [1280, 720]}, {"counts": "iimj08aW1=H5K5K4L4K5L4L3M3M3N2N1O1O010O1O100O2O0O1000000000000000000Y_O", "size": [1280, 720]}, {"counts": "bQoj0c0[W17H6J7H4M5K4M4K4N1O2M200O010O10000O101N1000000000000000000]_O", "size": [1280, 720]}, {"counts": "faQk0>]W19I5H9J5L4I6L5L3M3N2O0N20001N1O100O10001OO100000000000__O", "size": [1280, 720]}, {"counts": "oYkj0b0WW1:G8K5K4M3M2M3N2O1N2O1O1O1O10000O1000O0101O1O1O00O100O1000000000V_O", "size": [1280, 720]}, {"counts": "aZaj0<^W19F:G8J5K5M4M2L4M3N2N2N1O1O10000O101N10000000000000O10001O01O00O100O100000000000h^O", "size": [1280, 720]}, {"counts": "hR[j09aW1:G8A>K5K5L4M2N3M2O1O1O001O00000010O00000000000000O1000000000000O1O1N2O1001O00O1001O0O2O00]^O", "size": [1280, 720]}, {"counts": "jbXj01iW1=E7E;C<L4L3N30O100O1O1OO000000001O000O100O1O10001O0O100000O101OO10000O0O10011M2001N1O1000M[NniNc1QV1]NoiNc1Zd0", "size": [1280, 720]}, {"counts": "jjTj06bW1;G8F9F;J5M4L2M4N2N2N2N101N10000O10000O100000000000O100001O00O100O11O00O100O110O01OO10000O101O000000e^O", "size": [1280, 720]}, {"counts": "TZWj0`0TW1b0@=I6K5L3N2O0O200O1O000O20O010O0001O0000000O2O000O10O1001O0O1000O11O001OO101O0001OO2O1N10O2N100m^O", "size": [1280, 720]}, {"counts": "oQVj0c0TW1:E<J6K4M2N3N2N1O2N010O100000001O1O00O1O10O1000000000001O000000O100O101O0O101O00001O000000001N1000Q_O", "size": [1280, 720]}, {"counts": "jaSj0>YW1<G9E:J6L4M2M3M3O1N1O2O001N2O0000000O2O00O10001O000O100000O2O0000O1000000O100000O100000000000O2O000000\\_O", "size": [1280, 720]}, {"counts": "_YRj0a0SW1a0G7J5L4M3L3N3M2N2N2O2M101O0O101O001O01O00000000000000O1000000000000000O1000O100000O1001O0001N1O10O2O000`_O", "size": [1280, 720]}, {"counts": "aiTj0<UW1d0F:I4L5L2M4L3N2O1N3N0O2O1O1N1010O000001O00000000000O1001OO10000000O1000O100000O100001O00O2N0101O000a_O", "size": [1280, 720]}, {"counts": "mPVj0Q1kV18I5L4L4M4L2N2N2N2O2M2O001N110O1O010O1O00000O110O000O100001O0000O100000000000000000000000O10000001c_O", "size": [1280, 720]}, {"counts": "f`Xj0n0nV19I4L4L4M2N3M3M2O2N000O12cNRkN@iT[1", "size": [1280, 720]}, {"counts": "_aXj05VW1l0C8K5L4L3N3L3N2N2O000O2O00O10000000O0100000000000O2O0000O10000000000000001O00O1001N2O001O1N10g_O", "size": [1280, 720]}, {"counts": "kiTj02dW1a0_O=D;K5L4K5L3N2N2N2N2O1N2N2O0010O1O0001O00010O0O100O11N1000000000000O10O100001O01O000000O2OO1000000`_O", "size": [1280, 720]}, {"counts": "mQQj0?TW1`0I7H7K5L3N3L4N0O2N1O100O1000000000O11O1O10O0001OO100O1000000000001O00000O100O2O0O10001O001O0O101N10000000o^O", "size": [1280, 720]}, {"counts": "`Zhi01bW1`0\\Od0I7K5J6K3N2M3N2O1N1O2N10001N2O0O2O001O0000000001O1O1O0000000O00101N10000O0O2O1O1O101O0O100O2O0N3N2N100O2O0O2O0O101N10i^O", "size": [1280, 720]}, {"counts": "Wj`i0`0UW1?B<K6K3L4M3N2M3N2N2O1N2O1N101N100O101O00000010O0001O0O10000001O00O11O0O1000O100001O000O01001O000O01OO300O1O0O2N2N1O1O1O2O1N1N2N1O20l^O", "size": [1280, 720]}, {"counts": "[j[i07^W1`0B=C:K6L3M4L3N2M3N2O0O2N101O1O001O001N10000010OO10000010O00O100000000000O011O01O00O10O020O0000O010O200I]jNoMbU1U23O10001N1N200N2O3M2L3N4M3L3N4K4I50e^O", "size": [1280, 720]}, {"counts": "VjVi01eW1d0^O;D;I6L5M2N2M3N2N2N3N000O101O000001O01O0000000O01000000O100O1001OO1O1O1O10000O1O1O1000000O1000001N10O10O10001IliNaNSV1_1liNbNTV1d1100O2N2N1N3L5M3M4QO[iN=kV1[OYiN103dW1Kle5", "size": [1280, 720]}, {"counts": "kYTi0?VW1`0B=I4L5K4N2O2M2N2N2N101N2O00001O000000001N10000000O1O1000000O1O100000000O100O1O2N01000O100000001O0O1000000O1O10010O0O1N3O1N3L5I6L6K6J2VORiN5ZW1IRW8", "size": [1280, 720]}, {"counts": "hiQi0d0oV1`0I7I6L4L3M3N2N2O1N2N2O1N101O1O0000O1001O000O01001O000000O1O100O1O1000000O100O10001N100O10O011O01O0O101O0O10000O1O10001N2N3M3M4J7I7J4M5L5^OghNOhm;", "size": [1280, 720]}, {"counts": "TRnh03VW1j0D<H8J5M2M3N3M1O2N2O1N101O0O2O000000000000O1000O1000O10000000000O100000O100001O00000O10000O100N2O1N2N2OSjNVNfU1j18101NJ6O1001O2ON2M3M3GfiNiN]V1S1`0]ORiNAWW1:=I6Kd^>", "size": [1280, 720]}, {"counts": "ciQi0a0PW1d0D9J6L3N2M4L3O0N3O1N2O1O1N101O001N2O0000O100O100000000O10000000000O100001O00O1O1O10000M3N2L5N10000O1O2N1O100O11O2ON2N2L4N2O2H8nNXiNf0UW1H9Hm^>", "size": [1280, 720]}, {"counts": "_YYi0d0PW1a0E7J6K6L2N3N2N2O2M2N2N101N101O000O2O00000000O11O0000O2N1O11O2N0ON3O10001N1N2N2M30001N1O100O101N10O101OO2O0O2O00100M3N4L4K7I6C=H7KlV8", "size": [1280, 720]}, {"counts": "\\i`i0e0TW19H8J7J5K5L3M2N3N3M3M2N2O1N2O0O100O10001OO100O11O001OO1O1O1001ON3N1M3O2O000O10001N100N2N2N201N1000001N101O000O101N2N2N3M2N2N3J6POViN?\\W1L10l^O", "size": [1280, 720]}, {"counts": "gYhi07bW1<C<F8I6K6J5M3M3N3L3N2N2N2N2O00000O2O000O10O10000000000N21O10I_jNmMaU1Y20M211N100O2L3L5N10001N1O10001N101O0100ON3N101N2O0O2O1N10\\_O", "size": [1280, 720]}, {"counts": "dQQj0a0YW1:F9J6I6K4N2M2N3M4L3N2O1N1O1O100O100O101O1O0O0100O2O000O0100001O0000001O001N100000001N101O01O00O2O0O110O00[_O", "size": [1280, 720]}, {"counts": "kani0?\\W19H7J4L5J5L4L4N2M2N2O1N2O2N10001N101O000O100O2O00O010O1O2O000O2OO101O0000O2O00000O101O000O2N11O0001O000O100O10W_O", "size": [1280, 720]}, {"counts": "giei0`0[W1:I4K4J7J5M2L5L4M3N1O2N1O1O2N101N101N100O1000001OO010000100O0000O11O00000O100000001O0000000O2OO100001O000O10010N100O101O0000[_O", "size": [1280, 720]}, {"counts": "fQXi09bW1:G7H6K6K4K6J5L4M3M3N2M201N1O10001N101O001N10O00100O10000O100O2O0O01000O1O100N2N2O2N10000O100O101O0O10O11O00000O10001O0O101N1N3M3N3C<[OPiN8RW1EPiN9TW1BQiN;dW1CfV3", "size": [1280, 720]}, {"counts": "aYjh0=_W18G7H7K6J5K5L4M3M3M3N1O2N10000O2O1O1O00000O100000O1O100000001O0O100O011N1O100N101O101N100O100O1000000O10001O1O0000001N101M2O2M3L5I7K7J;F4BchN2[^c0", "size": [1280, 720]}, {"counts": "Xi]h0?^W16K6I6F9J6J6L3N4K3N2N1O1000001N101O0000000O2OO10000O2O0O100000000O0O3O0O1O1O100O10000O100O101N100O010N31NJkiNaNUV1^1miNbNRV1_1liNaNUV1e10N3N101M2N2N4L3M4L6J6JZWQ1", "size": [1280, 720]}, {"counts": "iX[h02iW18K5K5L2N2N2N3M4M2M3N1O1N3N2N2N4L3M2N2N1O1O2N000000O100001O1O0000O1O100O1000000O100O2O00000O10000O1O1O2N2N2L3N3O2L5L4J9GW_\\1", "size": [1280, 720]}, {"counts": "_`Pi0a0]W1:G4L2O2N1O1O001O1O1O1O1O1O1O2N2N2N2N1O1O101M2O2N1O00100OO100O2N1N3M2N3M3M4L6J=Ba0@5L_f]1", "size": [1280, 720]}, {"counts": "aaZi03fW1<F9H6K6J8I3K5N3M2O00000001O0N101O2N2N2N2M3M7I7I5I>Cdfg1", "size": [1280, 720]}, {"counts": "jQ]i0<aW18I1O1O2M4L4K4L4I7M200010O1O1N2N3L4L6L4H>@o^k1", "size": [1280, 720]}, {"counts": "kYci0>SW1d0H5L3K5I5M3O20O001N3N1N3N2M3M7H8I9F9Gbfg1", "size": [1280, 720]}, {"counts": "YZhi08`W17K5K6L6J5H7L3M2012N1O1N3M3N7H8H6K;B[nc1", "size": [1280, 720]}, null, {"counts": "dbni08aW18M101M2F;I7J6M2ON8K<D:EPVe1", "size": [1280, 720]}, {"counts": "`bii0181SW1d0J6N1M3L40O5K1NO11O2N3N3L5M3M2LnUe1", "size": [1280, 720]}, {"counts": "Zjoi07gW14H<H8I4L4NO1N102M3L:F8I8GYeb1", "size": [1280, 720]}, {"counts": "nZmi07eW19G5I5O20O2N2N6J3L3L4K[eg1", "size": [1280, 720]}, {"counts": "Xkei0360PW1h0EWOZiNm0dV141100:G6I5IZmR2", "size": [1280, 720]}, null, null, null, null], "bboxes": [[566.0, 649.0, 58.0, 66.0], [573.0, 652.0, 59.0, 64.0], [579.0, 647.0, 63.0, 67.0], [583.0, 646.0, 62.0, 68.0], [586.0, 646.0, 64.0, 66.0], [590.0, 644.0, 64.0, 68.0], [611.0, 649.0, 51.0, 66.0], [629.0, 655.0, 41.0, 63.0], [637.0, 656.0, 37.0, 58.0], [638.0, 656.0, 35.0, 56.0], [640.0, 656.0, 31.0, 53.0], [641.0, 658.0, 29.0, 51.0], [647.0, 653.0, 23.0, 55.0], [651.0, 658.0, 19.0, 45.0], [651.0, 659.0, 17.0, 43.0], [654.0, 675.0, 10.0, 25.0], null, null, [638.0, 671.0, 17.0, 32.0], [634.0, 662.0, 21.0, 38.0], [619.0, 645.0, 35.0, 58.0], [593.0, 644.0, 63.0, 69.0], [594.0, 644.0, 65.0, 66.0], [597.0, 643.0, 65.0, 64.0], [601.0, 641.0, 65.0, 66.0], [604.0, 643.0, 65.0, 65.0], [602.0, 644.0, 65.0, 64.0], [602.0, 643.0, 65.0, 64.0], [603.0, 642.0, 65.0, 64.0], [607.0, 643.0, 65.0, 65.0], [612.0, 643.0, 65.0, 64.0], [614.0, 643.0, 65.0, 67.0], [615.0, 646.0, 64.0, 69.0], [615.0, 650.0, 63.0, 69.0], [614.0, 653.0, 63.0, 67.0], [612.0, 654.0, 64.0, 67.0], [612.0, 654.0, 64.0, 67.0], [608.0, 654.0, 64.0, 66.0], [603.0, 655.0, 64.0, 66.0], [607.0, 654.0, 64.0, 67.0], [616.0, 651.0, 64.0, 70.0], [624.0, 650.0, 64.0, 70.0], [638.0, 646.0, 58.0, 73.0], [635.0, 643.0, 65.0, 70.0], [634.0, 642.0, 65.0, 70.0], [632.0, 640.0, 56.0, 75.0], [623.0, 630.0, 58.0, 71.0], [617.0, 603.0, 65.0, 73.0], [614.0, 573.0, 66.0, 76.0], [613.0, 549.0, 67.0, 73.0], [615.0, 535.0, 69.0, 80.0], [620.0, 532.0, 68.0, 77.0], [622.0, 530.0, 70.0, 76.0], [627.0, 531.0, 71.0, 79.0], [631.0, 532.0, 71.0, 70.0], [636.0, 532.0, 71.0, 69.0], [642.0, 531.0, 74.0, 71.0], [648.0, 532.0, 72.0, 68.0], [649.0, 532.0, 69.0, 69.0], [648.0, 534.0, 69.0, 69.0], [649.0, 535.0, 71.0, 67.0], [651.0, 542.0, 69.0, 67.0], [655.0, 545.0, 65.0, 70.0], [649.0, 541.0, 68.0, 71.0], [648.0, 536.0, 60.0, 68.0], [637.0, 533.0, 68.0, 70.0], [635.0, 530.0, 69.0, 71.0], [632.0, 526.0, 67.0, 74.0], [631.0, 524.0, 68.0, 75.0], [634.0, 526.0, 70.0, 73.0], [644.0, 527.0, 70.0, 73.0], [651.0, 528.0, 69.0, 75.0], [654.0, 532.0, 66.0, 72.0], [654.0, 534.0, 66.0, 68.0], [656.0, 534.0, 64.0, 68.0], [652.0, 533.0, 68.0, 70.0], [647.0, 530.0, 73.0, 74.0], [642.0, 533.0, 72.0, 68.0], [639.0, 538.0, 72.0, 81.0], [634.0, 544.0, 73.0, 78.0], [635.0, 547.0, 71.0, 76.0], [641.0, 546.0, 69.0, 77.0], [652.0, 546.0, 64.0, 77.0], [657.0, 545.0, 63.0, 77.0], [660.0, 549.0, 60.0, 74.0], [661.0, 553.0, 59.0, 70.0], [658.0, 557.0, 62.0, 66.0], [656.0, 560.0, 64.0, 68.0], [659.0, 561.0, 61.0, 68.0], [661.0, 560.0, 59.0, 66.0], [661.0, 553.0, 59.0, 72.0], [664.0, 550.0, 56.0, 71.0], [670.0, 545.0, 50.0, 73.0], [680.0, 539.0, 40.0, 65.0], [688.0, 537.0, 32.0, 66.0], [689.0, 535.0, 31.0, 66.0], [690.0, 531.0, 30.0, 69.0], [692.0, 529.0, 28.0, 72.0], [687.0, 538.0, 33.0, 66.0], [679.0, 551.0, 41.0, 72.0], [674.0, 561.0, 46.0, 71.0], [672.0, 567.0, 48.0, 64.0], [669.0, 553.0, 51.0, 71.0], [671.0, 546.0, 49.0, 73.0], [670.0, 539.0, 50.0, 65.0], [668.0, 531.0, 52.0, 73.0], [667.0, 528.0, 53.0, 73.0], [669.0, 527.0, 51.0, 74.0], [670.0, 523.0, 50.0, 77.0], [672.0, 519.0, 14.0, 64.0], [672.0, 517.0, 48.0, 67.0], [669.0, 526.0, 51.0, 76.0], [666.0, 539.0, 54.0, 68.0], [659.0, 542.0, 61.0, 76.0], [653.0, 542.0, 67.0, 80.0], [649.0, 540.0, 71.0, 80.0], [645.0, 539.0, 70.0, 71.0], [643.0, 535.0, 70.0, 74.0], [641.0, 535.0, 70.0, 73.0], [638.0, 529.0, 70.0, 74.0], [641.0, 525.0, 67.0, 77.0], [647.0, 521.0, 66.0, 77.0], [653.0, 520.0, 67.0, 79.0], [659.0, 520.0, 61.0, 79.0], [666.0, 526.0, 54.0, 77.0], [664.0, 532.0, 56.0, 72.0], [657.0, 527.0, 63.0, 75.0], [646.0, 522.0, 71.0, 76.0], [635.0, 520.0, 70.0, 73.0], [625.0, 519.0, 68.0, 73.0], [623.0, 521.0, 61.0, 63.0], [640.0, 523.0, 43.0, 63.0], [648.0, 531.0, 27.0, 57.0], [650.0, 535.0, 22.0, 52.0], [655.0, 534.0, 20.0, 60.0], [659.0, 540.0, 19.0, 54.0], null, [664.0, 554.0, 13.0, 51.0], [660.0, 569.0, 17.0, 36.0], [665.0, 574.0, 14.0, 39.0], [663.0, 590.0, 12.0, 29.0], [657.0, 586.0, 9.0, 44.0], null, null, null, null], "areas": [2511.0, 2691.0, 2842.0, 2896.0, 2934.0, 2972.0, 2321.0, 1652.0, 1474.0, 1318.0, 1094.0, 977.0, 745.0, 495.0, 404.0, 153.0, null, null, 354.0, 456.0, 1364.0, 2939.0, 3004.0, 3001.0, 3002.0, 3012.0, 3000.0, 3003.0, 3025.0, 3017.0, 2957.0, 3001.0, 3031.0, 3050.0, 3095.0, 3141.0, 3350.0, 3146.0, 3107.0, 3160.0, 3411.0, 3263.0, 3141.0, 3355.0, 3364.0, 3142.0, 3126.0, 3927.0, 4015.0, 3934.0, 4261.0, 4185.0, 4217.0, 4290.0, 4026.0, 3932.0, 4189.0, 3927.0, 3844.0, 3735.0, 3832.0, 3834.0, 3985.0, 4016.0, 3343.0, 4044.0, 4142.0, 4189.0, 4221.0, 4165.0, 4134.0, 4479.0, 4226.0, 3946.0, 3771.0, 3610.0, 4486.0, 4156.0, 4587.0, 4525.0, 4355.0, 4293.0, 4006.0, 3981.0, 3863.0, 3686.0, 3471.0, 3389.0, 3351.0, 3243.0, 3549.0, 3425.0, 2713.0, 2166.0, 1760.0, 1694.0, 1782.0, 1674.0, 1880.0, 2590.0, 2830.0, 2430.0, 3232.0, 3242.0, 2922.0, 3390.0, 3526.0, 3413.0, 3513.0, 714.0, 2898.0, 3407.0, 3220.0, 3826.0, 4690.0, 4854.0, 4092.0, 4283.0, 4260.0, 4218.0, 4195.0, 4092.0, 4066.0, 3843.0, 3578.0, 3409.0, 4124.0, 4079.0, 4025.0, 3950.0, 2938.0, 1914.0, 1128.0, 757.0, 829.0, 630.0, null, 364.0, 411.0, 352.0, 216.0, 233.0, null, null, null, null], "iscrowd": 0, "video_id": 0, "height": 1280, "width": 720, "category_id": 3827, "noun_phrase": "the face"}, {"id": 867, "segmentations": [{"counts": "QcZ=;5ISW1j0F7I7I4M2N20N2K5N6E<]OP^Z>", "size": [1280, 720]}, {"counts": "WcP=?YW1=E8J6K5J5L10N1O4K7G:D?]OlUc>", "size": [1280, 720]}, {"counts": "_bP=i0mV1`0E;F;G6K4M2O0000N2M2N9C8H8@b0WOY^_>", "size": [1280, 720]}, {"counts": "RbP=3eW1e0\\Oa0B9I8G7K3N2N2N2N2N1O2N1O2N1O2N1O001N10000000O1O2L4L5J8F;^Od0\\Oa^k=", "size": [1280, 720]}, {"counts": "ZQ]=d0TW1?G9G7I7K5J5L4L3M2M3M3M4L2N3M3N1O001O000O1000000O10O1000000O01000O10O10O100O010O1N1O2N2K6M2N2K6I7L6H8F;H<SOa_c<", "size": [1280, 720]}, {"counts": "oXR><ZW1>H:H7I6J4L3M4M5J4M3L4N1N2N2N2O1O1O1O1N2O1O000O2O1O1N2O1O1O001O001O1O1O00010N10001O001OO1O10000O1000O1001O0O10O01O1O1O1N2N101N2N101N2M2M4M3N2K6K4L5J6H8F:F<J9AThm:", "size": [1280, 720]}, {"counts": "nob??[W1<G9G6J5M4L5K3M3M3M3M3N1N3N1N3M2N3M3M3N1O2N1O2N1N2O1O1N101O1O1O1O0O2O0010O01O00000000001O00001O01O000000001O00000O101O000O100O1O2O0O2N1O1O2N101N1O1O1O1O2M2O1O1O1N2O1N2N1O2N2O1M3M2N3O1M4K4J7M2J6L5K6L4K7F7EhX`8", "size": [1280, 720]}, {"counts": "U_\\a0c0YW1<E:F7K5K4L4L5J5L3N2M3M3M2N3M2N3M3N1N3N1N2O1N101O1O1O001O1O00001O0O11O0001O1N2O001O00001O0010O1O01N1000010O000001O001O001N10001O001N2O0O2O001N2O0O2O001N2O1O1N2O1O1N2M2O2M3M2M4M2M3N2N2M4M2M4M2M4E;I8G8L4J8I6Gj`e6", "size": [1280, 720]}, {"counts": "ifeb02jW1c0^O:F8J5K5I8J4L4L5K4L3M3M3N3L3M3N1N3M2O2N1N2O1O1N2O1O2M2O1O1N2O01O01O001O1O001O1O100O000000000001O001O00001O00001O001N2O0O100O2O1O1O2N1O1N2O1O1O1N2O1O1O1N110O1O1O2M1N3L4M3M3M3L4M2M4M4G8H8^Ob0I9J5Kkhc5", "size": [1280, 720]}, {"counts": "eVac0=^W1d0_O9F9G7K5K5K5K4L4K4N1N2O2M2N2N3N1N2O2M2O2N0O2O1O1O1O1N2O2N1O1O1O001O001O1O1O1O010O000001O0000001O0O2O1O1O001O1O0O2O001N2O00001O2N2N1O1O1N3N1O1O2M2O2M2N2N3M2M4L4L3M4K4K5L4L5@?D=J8GhPQ5", "size": [1280, 720]}, {"counts": "^fmc0R1fV1b0A;H5K5K4M4L3M3L3N2N2N3N7H2N2O0O3N1O1N2O1O1N2O001O001O1O002M2O001O010O0000000000000000O101O001O000O20O000100N2O1O1N2O2N1N2O1O2N1O2N1N2O1O2N1O2N2M3M2O2M3L4K5L4L4K5H8G9I6H7K6L5L5Kkhe4", "size": [1280, 720]}, {"counts": "_^Qd0P1gV1`0C<F7J6J6K4M2M4M3M2N3M2N2N2O2N1N3M2N3N1N2O1O1N2O1N2O2M3N001O1O0O1000001O00000001O00000O10001O001O1O001N101O001O001N2O0O2O1O1N101O1O1N2O2N2N1O2N2N2L3N2N4K3N3L5K4L4J6K6J4J6H8K5H8L3N4L2^OjhN7``_4", "size": [1280, 720]}, {"counts": "eVkc07`W1`1eN?B6K4L4L8H3N2N2N2N3M2N2N2N2N2N1O2N2O1O1O3L2N2O1O1O1N2O2N1N101O000O101O001O00O100001O0000O10000000000O2O00000O2O001O001O000O2O002M2N200O1O1O1N2O1O1O3L2M4M2N2N2N2N2M3M3M4L3M4K5L4H7K4M4L4H8H8I7K5L6L3L8GoXY4", "size": [1280, 720]}, {"counts": "egTc0?RW1Q1QOa0H;E6K4M3M3M4L3N2N3M2M3M3N2N2N2N2N2N2O1N101N2O0O2N101N2O001N101O0O101O0000001O00001O01O01O0000O2O0000001O1O001O1O001O0O2O001O001O1N2O1O1O1O2N1O1O1O010N100O2O010O1O0O2O1O0O2N2N2N2M3M3M3I8J6J5J6kN]jNFhU17\\jNBlU19ZjNYORV11biN2ONVW1MohN2]ho4", "size": [1280, 720]}, {"counts": "Z`_b06bW1P1kN?E:B?K4L5I6L4M3M3M4M2N1M4
gitextract_s8klkb9g/
├── .github/
│ └── workflows/
│ └── format.yml
├── .gitignore
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── MANIFEST.in
├── README.md
├── README_TRAIN.md
├── assets/
│ └── veval/
│ └── toy_gt_and_pred/
│ ├── toy_saco_veval_sav_test_eval_res.json
│ ├── toy_saco_veval_sav_test_gt.json
│ └── toy_saco_veval_sav_test_pred.json
├── examples/
│ ├── saco_gold_silver_eval_example.ipynb
│ ├── saco_gold_silver_vis_example.ipynb
│ ├── saco_veval_eval_example.ipynb
│ ├── saco_veval_vis_example.ipynb
│ ├── sam3_agent.ipynb
│ ├── sam3_for_sam1_task_example.ipynb
│ ├── sam3_for_sam2_video_task_example.ipynb
│ ├── sam3_image_batched_inference.ipynb
│ ├── sam3_image_interactive.ipynb
│ ├── sam3_image_predictor_example.ipynb
│ └── sam3_video_predictor_example.ipynb
├── pyproject.toml
├── sam3/
│ ├── __init__.py
│ ├── agent/
│ │ ├── __init__.py
│ │ ├── agent_core.py
│ │ ├── client_llm.py
│ │ ├── client_sam3.py
│ │ ├── helpers/
│ │ │ ├── __init__.py
│ │ │ ├── boxes.py
│ │ │ ├── color_map.py
│ │ │ ├── keypoints.py
│ │ │ ├── mask_overlap_removal.py
│ │ │ ├── masks.py
│ │ │ ├── memory.py
│ │ │ ├── rle.py
│ │ │ ├── roi_align.py
│ │ │ ├── rotated_boxes.py
│ │ │ ├── som_utils.py
│ │ │ ├── visualizer.py
│ │ │ └── zoom_in.py
│ │ ├── inference.py
│ │ ├── system_prompts/
│ │ │ ├── system_prompt.txt
│ │ │ └── system_prompt_iterative_checking.txt
│ │ └── viz.py
│ ├── eval/
│ │ ├── __init__.py
│ │ ├── cgf1_eval.py
│ │ ├── coco_eval.py
│ │ ├── coco_eval_offline.py
│ │ ├── coco_reindex.py
│ │ ├── coco_writer.py
│ │ ├── conversion_util.py
│ │ ├── demo_eval.py
│ │ ├── hota_eval_toolkit/
│ │ │ ├── __init__.py
│ │ │ ├── run_ytvis_eval.py
│ │ │ └── trackeval/
│ │ │ ├── __init__.py
│ │ │ ├── _timing.py
│ │ │ ├── datasets/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── _base_dataset.py
│ │ │ │ ├── tao_ow.py
│ │ │ │ └── youtube_vis.py
│ │ │ ├── eval.py
│ │ │ ├── metrics/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── _base_metric.py
│ │ │ │ ├── count.py
│ │ │ │ └── hota.py
│ │ │ └── utils.py
│ │ ├── postprocessors.py
│ │ ├── saco_veval_eval.py
│ │ ├── saco_veval_evaluators.py
│ │ ├── teta_eval_toolkit/
│ │ │ ├── __init__.py
│ │ │ ├── _timing.py
│ │ │ ├── config.py
│ │ │ ├── datasets/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── _base_dataset.py
│ │ │ │ ├── coco.py
│ │ │ │ └── tao.py
│ │ │ ├── eval.py
│ │ │ ├── metrics/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── _base_metric.py
│ │ │ │ └── teta.py
│ │ │ └── utils.py
│ │ ├── ytvis_coco_wrapper.py
│ │ └── ytvis_eval.py
│ ├── logger.py
│ ├── model/
│ │ ├── __init__.py
│ │ ├── act_ckpt_utils.py
│ │ ├── box_ops.py
│ │ ├── data_misc.py
│ │ ├── decoder.py
│ │ ├── edt.py
│ │ ├── encoder.py
│ │ ├── geometry_encoders.py
│ │ ├── io_utils.py
│ │ ├── maskformer_segmentation.py
│ │ ├── memory.py
│ │ ├── model_misc.py
│ │ ├── necks.py
│ │ ├── position_encoding.py
│ │ ├── sam1_task_predictor.py
│ │ ├── sam3_image.py
│ │ ├── sam3_image_processor.py
│ │ ├── sam3_tracker_base.py
│ │ ├── sam3_tracker_utils.py
│ │ ├── sam3_tracking_predictor.py
│ │ ├── sam3_video_base.py
│ │ ├── sam3_video_inference.py
│ │ ├── sam3_video_predictor.py
│ │ ├── text_encoder_ve.py
│ │ ├── tokenizer_ve.py
│ │ ├── utils/
│ │ │ ├── __init__.py
│ │ │ ├── misc.py
│ │ │ ├── sam1_utils.py
│ │ │ └── sam2_utils.py
│ │ ├── vitdet.py
│ │ └── vl_combiner.py
│ ├── model_builder.py
│ ├── perflib/
│ │ ├── __init__.py
│ │ ├── associate_det_trk.py
│ │ ├── compile.py
│ │ ├── connected_components.py
│ │ ├── fa3.py
│ │ ├── masks_ops.py
│ │ ├── nms.py
│ │ ├── tests/
│ │ │ ├── assets/
│ │ │ │ └── masks.tiff
│ │ │ └── tests.py
│ │ └── triton/
│ │ ├── connected_components.py
│ │ └── nms.py
│ ├── sam/
│ │ ├── __init__.py
│ │ ├── common.py
│ │ ├── mask_decoder.py
│ │ ├── prompt_encoder.py
│ │ ├── rope.py
│ │ └── transformer.py
│ ├── train/
│ │ ├── __init__.py
│ │ ├── configs/
│ │ │ ├── eval_base.yaml
│ │ │ ├── gold_image_evals/
│ │ │ │ ├── sam3_gold_image_attributes.yaml
│ │ │ │ ├── sam3_gold_image_crowded.yaml
│ │ │ │ ├── sam3_gold_image_fg_food.yaml
│ │ │ │ ├── sam3_gold_image_fg_sports.yaml
│ │ │ │ ├── sam3_gold_image_metaclip_nps.yaml
│ │ │ │ ├── sam3_gold_image_sa1b_nps.yaml
│ │ │ │ └── sam3_gold_image_wiki_common.yaml
│ │ │ ├── odinw13/
│ │ │ │ ├── odinw_text_and_visual.yaml
│ │ │ │ ├── odinw_text_only.yaml
│ │ │ │ ├── odinw_text_only_positive.yaml
│ │ │ │ ├── odinw_text_only_train.yaml
│ │ │ │ └── odinw_visual_only.yaml
│ │ │ ├── roboflow_v100/
│ │ │ │ ├── roboflow_v100_eval.yaml
│ │ │ │ └── roboflow_v100_full_ft_100_images.yaml
│ │ │ ├── saco_video_evals/
│ │ │ │ ├── saco_veval_sav_test.yaml
│ │ │ │ ├── saco_veval_sav_test_noheur.yaml
│ │ │ │ ├── saco_veval_sav_val.yaml
│ │ │ │ ├── saco_veval_sav_val_noheur.yaml
│ │ │ │ ├── saco_veval_smartglasses_test.yaml
│ │ │ │ ├── saco_veval_smartglasses_test_noheur.yaml
│ │ │ │ ├── saco_veval_smartglasses_val.yaml
│ │ │ │ ├── saco_veval_smartglasses_val_noheur.yaml
│ │ │ │ ├── saco_veval_yt1b_test.yaml
│ │ │ │ ├── saco_veval_yt1b_test_noheur.yaml
│ │ │ │ ├── saco_veval_yt1b_val.yaml
│ │ │ │ └── saco_veval_yt1b_val_noheur.yaml
│ │ │ └── silver_image_evals/
│ │ │ ├── sam3_silver_image_bdd100k.yaml
│ │ │ ├── sam3_silver_image_droid.yaml
│ │ │ ├── sam3_silver_image_ego4d.yaml
│ │ │ ├── sam3_silver_image_fathomnet.yaml
│ │ │ ├── sam3_silver_image_food_rec.yaml
│ │ │ ├── sam3_silver_image_geode.yaml
│ │ │ ├── sam3_silver_image_inaturalist.yaml
│ │ │ ├── sam3_silver_image_nga.yaml
│ │ │ ├── sam3_silver_image_sav.yaml
│ │ │ └── sam3_silver_image_yt1b.yaml
│ │ ├── data/
│ │ │ ├── __init__.py
│ │ │ ├── coco_json_loaders.py
│ │ │ ├── collator.py
│ │ │ ├── sam3_image_dataset.py
│ │ │ ├── sam3_video_dataset.py
│ │ │ └── torch_dataset.py
│ │ ├── loss/
│ │ │ ├── __init__.py
│ │ │ ├── loss_fns.py
│ │ │ ├── mask_sampling.py
│ │ │ ├── sam3_loss.py
│ │ │ └── sigmoid_focal_loss.py
│ │ ├── masks_ops.py
│ │ ├── matcher.py
│ │ ├── nms_helper.py
│ │ ├── optim/
│ │ │ ├── __init__.py
│ │ │ ├── optimizer.py
│ │ │ └── schedulers.py
│ │ ├── train.py
│ │ ├── trainer.py
│ │ ├── transforms/
│ │ │ ├── __init__.py
│ │ │ ├── basic.py
│ │ │ ├── basic_for_api.py
│ │ │ ├── filter_query_transforms.py
│ │ │ ├── point_sampling.py
│ │ │ └── segmentation.py
│ │ └── utils/
│ │ ├── __init__.py
│ │ ├── checkpoint_utils.py
│ │ ├── distributed.py
│ │ ├── logger.py
│ │ └── train_utils.py
│ └── visualization_utils.py
└── scripts/
├── eval/
│ ├── gold/
│ │ ├── README.md
│ │ └── eval_sam3.py
│ ├── silver/
│ │ ├── CONFIG_FRAMES.yaml
│ │ ├── README.md
│ │ ├── download_fathomnet.py
│ │ ├── download_inaturalist.py
│ │ ├── download_preprocess_nga.py
│ │ ├── download_videos.py
│ │ ├── extract_frames.py
│ │ ├── fathomnet_image_uuids.json
│ │ ├── inaturalist_image_subset.json
│ │ ├── preprocess_silver_geode_bdd100k_food_rec.py
│ │ └── utils.py
│ ├── standalone_cgf1.py
│ └── veval/
│ ├── README.md
│ ├── __init__.py
│ ├── saco_yt1b_annot_update.py
│ ├── saco_yt1b_downloader.py
│ └── saco_yt1b_frame_prep_util.py
├── extract_odinw_results.py
└── extract_roboflow_vl100_results.py
SYMBOL INDEX (1745 symbols across 133 files)
FILE: sam3/agent/agent_core.py
function save_debug_messages (line 17) | def save_debug_messages(messages_list, debug, debug_folder_path, debug_j...
function cleanup_debug_files (line 27) | def cleanup_debug_files(debug, debug_folder_path, debug_jsonl_path):
function count_images (line 39) | def count_images(messages):
function _prune_messages_for_next_round (line 56) | def _prune_messages_for_next_round(
function agent_inference (line 124) | def agent_inference(
FILE: sam3/agent/client_llm.py
function get_image_base64_and_mime (line 12) | def get_image_base64_and_mime(image_path):
function send_generate_request (line 36) | def send_generate_request(
function send_direct_request (line 130) | def send_direct_request(
FILE: sam3/agent/client_sam3.py
function sam3_inference (line 17) | def sam3_inference(processor, image_path, text_prompt):
function call_sam_service (line 51) | def call_sam_service(
FILE: sam3/agent/helpers/boxes.py
class BoxMode (line 17) | class BoxMode(IntEnum):
method convert (line 48) | def convert(
class Boxes (line 139) | class Boxes:
method __init__ (line 151) | def __init__(self, tensor: torch.Tensor):
method clone (line 170) | def clone(self) -> "Boxes":
method to (line 179) | def to(self, device: torch.device):
method area (line 183) | def area(self) -> torch.Tensor:
method clip (line 194) | def clip(self, box_size: Tuple[int, int]) -> None:
method nonempty (line 210) | def nonempty(self, threshold: float = 0.0) -> torch.Tensor:
method __getitem__ (line 226) | def __getitem__(self, item) -> "Boxes":
method __len__ (line 252) | def __len__(self) -> int:
method __repr__ (line 255) | def __repr__(self) -> str:
method inside_box (line 258) | def inside_box(
method get_centers (line 279) | def get_centers(self) -> torch.Tensor:
method scale (line 286) | def scale(self, scale_x: float, scale_y: float) -> None:
method cat (line 294) | def cat(cls, boxes_list: List["Boxes"]) -> "Boxes":
method device (line 314) | def device(self) -> device:
method __iter__ (line 320) | def __iter__(self):
function pairwise_intersection (line 327) | def pairwise_intersection(boxes1: Boxes, boxes2: Boxes) -> torch.Tensor:
function pairwise_iou (line 351) | def pairwise_iou(boxes1: Boxes, boxes2: Boxes) -> torch.Tensor:
function pairwise_ioa (line 376) | def pairwise_ioa(boxes1: Boxes, boxes2: Boxes) -> torch.Tensor:
function pairwise_point_box_distance (line 396) | def pairwise_point_box_distance(points: torch.Tensor, boxes: Boxes):
function matched_pairwise_iou (line 415) | def matched_pairwise_iou(boxes1: Boxes, boxes2: Boxes) -> torch.Tensor:
FILE: sam3/agent/helpers/color_map.py
function colormap (line 90) | def colormap(rgb=False, maximum=255):
function random_color (line 106) | def random_color(rgb=False, maximum=255):
function random_colors (line 122) | def random_colors(N, rgb=False, maximum=255):
FILE: sam3/agent/helpers/keypoints.py
class Keypoints (line 12) | class Keypoints:
method __init__ (line 25) | def __init__(self, keypoints: Union[torch.Tensor, np.ndarray, List[Lis...
method __len__ (line 41) | def __len__(self) -> int:
method to (line 44) | def to(self, *args: Any, **kwargs: Any) -> "Keypoints":
method device (line 48) | def device(self) -> torch.device:
method to_heatmap (line 51) | def to_heatmap(self, boxes: torch.Tensor, heatmap_size: int) -> torch....
method __getitem__ (line 68) | def __getitem__(self, item: Union[int, slice, torch.BoolTensor]) -> "K...
method __repr__ (line 86) | def __repr__(self) -> str:
method cat (line 92) | def cat(keypoints_list: List["Keypoints"]) -> "Keypoints":
function _keypoints_to_heatmap (line 112) | def _keypoints_to_heatmap(
function heatmaps_to_keypoints (line 172) | def heatmaps_to_keypoints(maps: torch.Tensor, rois: torch.Tensor) -> tor...
FILE: sam3/agent/helpers/mask_overlap_removal.py
function mask_intersection (line 16) | def mask_intersection(
function mask_iom (line 32) | def mask_iom(masks1: torch.Tensor, masks2: torch.Tensor) -> torch.Tensor:
function _decode_single_mask (line 42) | def _decode_single_mask(mask_repr, h: int, w: int) -> np.ndarray:
function _decode_masks_to_torch_bool (line 67) | def _decode_masks_to_torch_bool(pred_masks: List, h: int, w: int) -> tor...
function remove_overlapping_masks (line 73) | def remove_overlapping_masks(sample: Dict, iom_thresh: float = 0.3) -> D...
FILE: sam3/agent/helpers/masks.py
function polygon_area (line 19) | def polygon_area(x, y):
function polygons_to_bitmask (line 25) | def polygons_to_bitmask(
function rasterize_polygons_within_box (line 44) | def rasterize_polygons_within_box(
class BitMasks (line 93) | class BitMasks:
method __init__ (line 102) | def __init__(self, tensor: Union[torch.Tensor, np.ndarray]):
method to (line 118) | def to(self, *args: Any, **kwargs: Any) -> "BitMasks":
method device (line 122) | def device(self) -> torch.device:
method __getitem__ (line 126) | def __getitem__(self, item: Union[int, slice, torch.BoolTensor]) -> "B...
method __iter__ (line 152) | def __iter__(self) -> torch.Tensor:
method __repr__ (line 156) | def __repr__(self) -> str:
method __len__ (line 161) | def __len__(self) -> int:
method nonempty (line 164) | def nonempty(self) -> torch.Tensor:
method from_polygon_masks (line 175) | def from_polygon_masks(
method from_roi_masks (line 194) | def from_roi_masks(roi_masks: "ROIMasks", height: int, width: int) -> ...
method crop_and_resize (line 202) | def crop_and_resize(self, boxes: torch.Tensor, mask_size: int) -> torc...
method get_bounding_boxes (line 237) | def get_bounding_boxes(self) -> Boxes:
method cat (line 256) | def cat(bitmasks_list: List["BitMasks"]) -> "BitMasks":
class PolygonMasks (line 276) | class PolygonMasks:
method __init__ (line 284) | def __init__(self, polygons: List[List[Union[torch.Tensor, np.ndarray]...
method to (line 331) | def to(self, *args: Any, **kwargs: Any) -> "PolygonMasks":
method device (line 335) | def device(self) -> torch.device:
method get_bounding_boxes (line 338) | def get_bounding_boxes(self) -> Boxes:
method nonempty (line 355) | def nonempty(self) -> torch.Tensor:
method __getitem__ (line 366) | def __getitem__(
method __iter__ (line 400) | def __iter__(self) -> Iterator[List[np.ndarray]]:
method __repr__ (line 408) | def __repr__(self) -> str:
method __len__ (line 413) | def __len__(self) -> int:
method crop_and_resize (line 416) | def crop_and_resize(self, boxes: torch.Tensor, mask_size: int) -> torc...
method area (line 448) | def area(self):
method cat (line 468) | def cat(polymasks_list: List["PolygonMasks"]) -> "PolygonMasks":
class ROIMasks (line 488) | class ROIMasks:
method __init__ (line 495) | def __init__(self, tensor: torch.Tensor):
method to (line 504) | def to(self, device: torch.device) -> "ROIMasks":
method device (line 508) | def device(self) -> device:
method __len__ (line 511) | def __len__(self):
method __getitem__ (line 514) | def __getitem__(self, item) -> "ROIMasks":
method __repr__ (line 536) | def __repr__(self) -> str:
method to_bitmasks (line 542) | def to_bitmasks(self, boxes: torch.Tensor, height, width, threshold=0.5):
FILE: sam3/agent/helpers/memory.py
function _ignore_torch_cuda_oom (line 15) | def _ignore_torch_cuda_oom():
function retry_if_cuda_oom (line 29) | def retry_if_cuda_oom(func):
FILE: sam3/agent/helpers/rle.py
function rle_encode (line 13) | def rle_encode(orig_mask, return_areas=False):
function robust_rle_encode (line 84) | def robust_rle_encode(masks):
function ann_to_rle (line 105) | def ann_to_rle(segm, im_info):
FILE: sam3/agent/helpers/roi_align.py
class ROIAlign (line 10) | class ROIAlign(nn.Module):
method __init__ (line 11) | def __init__(self, output_size, spatial_scale, sampling_ratio, aligned...
method forward (line 52) | def forward(self, input, rois):
method __repr__ (line 70) | def __repr__(self):
FILE: sam3/agent/helpers/rotated_boxes.py
function pairwise_iou_rotated (line 17) | def pairwise_iou_rotated(boxes1, boxes2):
class RotatedBoxes (line 35) | class RotatedBoxes(Boxes):
method __init__ (line 44) | def __init__(self, tensor: torch.Tensor):
method clone (line 249) | def clone(self) -> "RotatedBoxes":
method to (line 258) | def to(self, device: torch.device, non_blocking: bool = False):
method area (line 262) | def area(self) -> torch.Tensor:
method normalize_angles (line 274) | def normalize_angles(self) -> None:
method clip (line 281) | def clip(
method nonempty (line 333) | def nonempty(self, threshold: float = 0.0) -> torch.Tensor:
method __getitem__ (line 348) | def __getitem__(self, item) -> "RotatedBoxes":
method __len__ (line 371) | def __len__(self) -> int:
method __repr__ (line 374) | def __repr__(self) -> str:
method inside_box (line 377) | def inside_box(
method get_centers (line 416) | def get_centers(self) -> torch.Tensor:
method scale (line 423) | def scale(self, scale_x: float, scale_y: float) -> None:
method cat (line 489) | def cat(cls, boxes_list: List["RotatedBoxes"]) -> "RotatedBoxes":
method device (line 509) | def device(self) -> torch.device:
method __iter__ (line 513) | def __iter__(self):
function pairwise_iou (line 520) | def pairwise_iou(boxes1: RotatedBoxes, boxes2: RotatedBoxes) -> None:
FILE: sam3/agent/helpers/som_utils.py
function rgb_to_hex (line 16) | def rgb_to_hex(rgb_color):
function _validate_color_hex (line 78) | def _validate_color_hex(color_hex: str):
class Color (line 88) | class Color:
method from_hex (line 103) | def from_hex(cls, color_hex: str):
method to_hex (line 127) | def to_hex(cls, color):
method as_rgb (line 139) | def as_rgb(self) -> Tuple[int, int, int]:
method as_bgr (line 154) | def as_bgr(self) -> Tuple[int, int, int]:
method white (line 170) | def white(cls):
method black (line 174) | def black(cls):
method red (line 178) | def red(cls):
method green (line 182) | def green(cls):
method blue (line 186) | def blue(cls):
class ColorPalette (line 191) | class ColorPalette:
method default (line 195) | def default(cls):
method from_hex (line 211) | def from_hex(cls, color_hex_list: List[str]):
method by_idx (line 230) | def by_idx(self, idx: int) -> Color:
method find_farthest_color (line 251) | def find_farthest_color(self, img_array):
function draw_box (line 289) | def draw_box(ax, box_coord, alpha=0.8, edge_color="g", line_style="-", l...
function draw_text (line 305) | def draw_text(
function draw_mask (line 335) | def draw_mask(
function _change_color_brightness (line 383) | def _change_color_brightness(color, brightness_factor):
FILE: sam3/agent/helpers/visualizer.py
class ColorMode (line 44) | class ColorMode(Enum):
class GenericMask (line 66) | class GenericMask:
method __init__ (line 74) | def __init__(self, mask_or_polygons, height, width):
method mask (line 108) | def mask(self):
method polygons (line 114) | def polygons(self):
method has_holes (line 120) | def has_holes(self):
method mask_to_polygons (line 130) | def mask_to_polygons(self, mask):
method polygons_to_mask (line 153) | def polygons_to_mask(self, polygons):
method area (line 158) | def area(self):
method bbox (line 161) | def bbox(self):
class _PanopticPrediction (line 170) | class _PanopticPrediction:
method __init__ (line 175) | def __init__(self, panoptic_seg, segments_info, metadata=None):
method non_empty_mask (line 213) | def non_empty_mask(self):
method semantic_masks (line 229) | def semantic_masks(self):
method instance_masks (line 237) | def instance_masks(self):
function _create_text_labels (line 247) | def _create_text_labels(classes, scores, class_names, is_crowd=None):
class VisImage (line 274) | class VisImage:
method __init__ (line 275) | def __init__(self, img, scale=1.0):
method _setup_figure (line 286) | def _setup_figure(self, img):
method reset_image (line 311) | def reset_image(self, img):
method save (line 321) | def save(self, filepath):
method get_image (line 329) | def get_image(self):
class Visualizer (line 350) | class Visualizer:
method __init__ (line 374) | def __init__(
method draw_instance_predictions (line 418) | def draw_instance_predictions(self, predictions):
method draw_sem_seg (line 494) | def draw_sem_seg(self, sem_seg, area_threshold=None, alpha=0.7):
method draw_panoptic_seg (line 530) | def draw_panoptic_seg(
method draw_dataset_dict (line 609) | def draw_dataset_dict(self, dic):
method overlay_instances (line 686) | def overlay_instances(
method overlay_rotated_instances (line 823) | def overlay_rotated_instances(self, boxes=None, labels=None, assigned_...
method draw_and_connect_keypoints (line 865) | def draw_and_connect_keypoints(self, keypoints):
method mask_dims_from_binary (line 927) | def mask_dims_from_binary(self, binary_mask):
method reposition_label (line 935) | def reposition_label(self, position, cur, binary_mask, move_count):
method locate_label_position (line 987) | def locate_label_position(self, original_position, added_positions, bi...
method draw_text (line 1011) | def draw_text(
method draw_box (line 1084) | def draw_box(self, box_coord, alpha=0.5, edge_color="g", line_style="-"):
method draw_rotated_box_with_label (line 1118) | def draw_rotated_box_with_label(
method draw_circle (line 1181) | def draw_circle(self, circle_coord, color, radius=3):
method draw_line (line 1199) | def draw_line(self, x_data, y_data, color, linestyle="-", linewidth=No...
method draw_binary_mask (line 1230) | def draw_binary_mask(
method draw_binary_mask_with_number (line 1293) | def draw_binary_mask_with_number(
method draw_soft_mask (line 1379) | def draw_soft_mask(self, soft_mask, color=None, *, text=None, alpha=0.5):
method draw_polygon (line 1409) | def draw_polygon(self, segment, color, edge_color=None, alpha=0.5):
method _jitter (line 1447) | def _jitter(self, color):
method _create_grayscale_image (line 1467) | def _create_grayscale_image(self, mask=None):
method _change_color_brightness (line 1478) | def _change_color_brightness(self, color, brightness_factor):
method _convert_boxes (line 1505) | def _convert_boxes(self, boxes):
method _convert_masks (line 1514) | def _convert_masks(self, masks_or_polygons):
method _draw_number_in_box (line 1537) | def _draw_number_in_box(self, box, text, color, label_mode="1"):
method number_to_string (line 1577) | def number_to_string(n):
method _draw_number_in_mask (line 1584) | def _draw_number_in_mask(
method _draw_text_in_mask (line 1630) | def _draw_text_in_mask(self, binary_mask, text, color):
method _convert_keypoints (line 1651) | def _convert_keypoints(self, keypoints):
method get_output (line 1657) | def get_output(self):
FILE: sam3/agent/helpers/zoom_in.py
function render_zoom_in (line 16) | def render_zoom_in(
FILE: sam3/agent/inference.py
function run_single_image_inference (line 11) | def run_single_image_inference(
FILE: sam3/agent/viz.py
function visualize (line 14) | def visualize(
FILE: sam3/eval/cgf1_eval.py
class Metric (line 23) | class Metric:
class COCOCustom (line 63) | class COCOCustom(COCO):
method createIndex (line 66) | def createIndex(self):
method loadRes (line 102) | def loadRes(self, resFile):
class CGF1Eval (line 181) | class CGF1Eval(COCOeval):
method __init__ (line 194) | def __init__(
method computeIoU (line 216) | def computeIoU(self, imgId, catId):
method evaluateImg (line 242) | def evaluateImg(self, imgId, catId, aRng, maxDet):
method accumulate (line 344) | def accumulate(self, p=None):
method summarize (line 451) | def summarize(self):
function _evaluate (line 504) | def _evaluate(self):
class CGF1Evaluator (line 541) | class CGF1Evaluator:
method __init__ (line 547) | def __init__(
method evaluate (line 593) | def evaluate(self, pred_file: str):
method _select_best_scoring (line 665) | def _select_best_scoring(scorings):
FILE: sam3/eval/coco_eval.py
class CocoEvaluator (line 40) | class CocoEvaluator:
method __init__ (line 41) | def __init__(
method _lazy_init (line 109) | def _lazy_init(self, coco_cls=COCO):
method set_sync_device (line 157) | def set_sync_device(self, device: torch.device) -> Any:
method _evaluate (line 160) | def _evaluate(self, *args, **kwargs):
method _loadRes (line 163) | def _loadRes(self, *args, **kwargs):
method update (line 166) | def update(self, *args, **kwargs):
method select_best_scoring (line 199) | def select_best_scoring(self, scorings):
method _dump (line 209) | def _dump(self, results):
method synchronize_between_processes (line 220) | def synchronize_between_processes(self):
method accumulate (line 251) | def accumulate(self, imgIds=None):
method summarize (line 283) | def summarize(self):
method compute_synced (line 347) | def compute_synced(self):
method compute (line 352) | def compute(self):
method reset (line 356) | def reset(self, cocoeval_cls=COCOeval):
method write (line 388) | def write(self, stats):
method prepare (line 397) | def prepare(self, predictions, iou_type):
method prepare_for_coco_detection (line 408) | def prepare_for_coco_detection(self, predictions):
method prepare_for_coco_segmentation (line 434) | def prepare_for_coco_segmentation(self, predictions):
method prepare_for_coco_keypoint (line 489) | def prepare_for_coco_keypoint(self, predictions):
function convert_to_xywh (line 517) | def convert_to_xywh(boxes):
function merge (line 522) | def merge(img_ids, eval_imgs, gather_pred_via_filesys=False):
function create_common_coco_eval (line 553) | def create_common_coco_eval(
function segmentation_prepare (line 598) | def segmentation_prepare(self):
function evaluate (line 630) | def evaluate(self, use_self_evaluate):
function loadRes (line 737) | def loadRes(self, resFile):
function summarize (line 810) | def summarize(self):
function accumulate (line 893) | def accumulate(self, use_self_eval=False):
FILE: sam3/eval/coco_eval_offline.py
function convert_to_xywh (line 47) | def convert_to_xywh(boxes):
class HeapElement (line 53) | class HeapElement:
method __init__ (line 56) | def __init__(self, val):
method __lt__ (line 59) | def __lt__(self, other):
class COCOevalCustom (line 63) | class COCOevalCustom(COCOeval):
method __init__ (line 68) | def __init__(
method _prepare (line 74) | def _prepare(self):
class CocoEvaluatorOfflineWithPredFileEvaluators (line 129) | class CocoEvaluatorOfflineWithPredFileEvaluators:
method __init__ (line 130) | def __init__(
method evaluate (line 142) | def evaluate(self, dumped_file):
FILE: sam3/eval/coco_reindex.py
function reindex_coco_to_temp (line 16) | def reindex_coco_to_temp(input_json_path: str) -> Optional[str]:
function test_reindex_function (line 164) | def test_reindex_function():
FILE: sam3/eval/coco_writer.py
class HeapElement (line 38) | class HeapElement:
method __init__ (line 41) | def __init__(self, val):
method __lt__ (line 44) | def __lt__(self, other):
class PredictionDumper (line 48) | class PredictionDumper:
method __init__ (line 56) | def __init__(
method update (line 98) | def update(self, *args, **kwargs):
method _dump (line 109) | def _dump(self, results):
method synchronize_between_processes (line 123) | def synchronize_between_processes(self):
method gather_and_merge_predictions (line 156) | def gather_and_merge_predictions(self):
method compute_synced (line 205) | def compute_synced(self):
method compute (line 226) | def compute(self):
method reset (line 235) | def reset(self):
method prepare (line 239) | def prepare(self, predictions, iou_type):
method prepare_for_coco_detection (line 257) | def prepare_for_coco_detection(self, predictions):
method prepare_for_coco_segmentation (line 292) | def prepare_for_coco_segmentation(self, predictions):
FILE: sam3/eval/conversion_util.py
function convert_ytbvis_to_cocovid_gt (line 11) | def convert_ytbvis_to_cocovid_gt(ann_json, save_path=None):
function convert_ytbvis_to_cocovid_pred (line 121) | def convert_ytbvis_to_cocovid_pred(
FILE: sam3/eval/demo_eval.py
class DemoEval (line 22) | class DemoEval(COCOeval):
method __init__ (line 28) | def __init__(
method computeIoU (line 52) | def computeIoU(self, imgId, catId):
method evaluateImg (line 78) | def evaluateImg(self, imgId, catId, aRng, maxDet):
method accumulate (line 201) | def accumulate(self, p=None):
method summarize (line 342) | def summarize(self):
class DemoEvaluator (line 483) | class DemoEvaluator(CocoEvaluator):
method __init__ (line 484) | def __init__(
method _lazy_init (line 516) | def _lazy_init(self):
method select_best_scoring (line 523) | def select_best_scoring(self, scorings):
method summarize (line 565) | def summarize(self):
method accumulate (line 629) | def accumulate(self, imgIds=None):
method reset (line 644) | def reset(self):
FILE: sam3/eval/hota_eval_toolkit/run_ytvis_eval.py
function run_ytvis_eval (line 48) | def run_ytvis_eval(args=None, gt_json=None, dt_json=None):
FILE: sam3/eval/hota_eval_toolkit/trackeval/_timing.py
function time (line 15) | def time(f):
FILE: sam3/eval/hota_eval_toolkit/trackeval/datasets/_base_dataset.py
class _BaseDataset (line 19) | class _BaseDataset(ABC):
method __init__ (line 21) | def __init__(self):
method get_default_dataset_config (line 34) | def get_default_dataset_config(): ...
method _load_raw_file (line 37) | def _load_raw_file(self, tracker, seq, is_gt): ...
method get_preprocessed_seq_data (line 41) | def get_preprocessed_seq_data(self, raw_data, cls): ...
method _calculate_similarities (line 44) | def _calculate_similarities(self, gt_dets_t, tracker_dets_t): ...
method get_class_name (line 49) | def get_class_name(cls):
method get_name (line 52) | def get_name(self):
method get_output_fol (line 55) | def get_output_fol(self, tracker):
method get_display_name (line 58) | def get_display_name(self, tracker):
method get_eval_info (line 64) | def get_eval_info(self):
method get_raw_seq_data (line 69) | def get_raw_seq_data(self, tracker, seq):
method _load_simple_text_file (line 109) | def _load_simple_text_file(
method _calculate_mask_ious (line 246) | def _calculate_mask_ious(masks1, masks2, is_encoded=False, do_ioa=False):
method _calculate_box_ious (line 283) | def _calculate_box_ious(bboxes1, bboxes2, box_format="xywh", do_ioa=Fa...
method _calculate_euclidean_similarity (line 332) | def _calculate_euclidean_similarity(dets1, dets2, zero_distance=2.0):
method _check_unique_ids (line 343) | def _check_unique_ids(data, after_preproc=False):
FILE: sam3/eval/hota_eval_toolkit/trackeval/datasets/tao_ow.py
class TAO_OW (line 18) | class TAO_OW(_BaseDataset):
method get_default_dataset_config (line 22) | def get_default_dataset_config():
method __init__ (line 45) | def __init__(self, config=None):
method get_display_name (line 205) | def get_display_name(self, tracker):
method _load_raw_file (line 208) | def _load_raw_file(self, tracker, seq, is_gt):
method get_preprocessed_seq_data (line 362) | def get_preprocessed_seq_data(self, raw_data, cls):
method _calculate_similarities (line 519) | def _calculate_similarities(self, gt_dets_t, tracker_dets_t):
method _merge_categories (line 523) | def _merge_categories(self, annotations):
method _compute_vid_mappings (line 538) | def _compute_vid_mappings(self, annotations):
method _compute_image_to_timestep_mappings (line 614) | def _compute_image_to_timestep_mappings(self):
method _limit_dets_per_image (line 633) | def _limit_dets_per_image(self, annotations):
method _fill_video_ids_inplace (line 653) | def _fill_video_ids_inplace(self, annotations):
method _make_track_ids_unique (line 668) | def _make_track_ids_unique(annotations):
method _split_known_unknown_distractor (line 698) | def _split_known_unknown_distractor(self):
method _filter_gt_data (line 834) | def _filter_gt_data(self, raw_gt_data):
FILE: sam3/eval/hota_eval_toolkit/trackeval/datasets/youtube_vis.py
class YouTubeVIS (line 22) | class YouTubeVIS(_BaseDataset):
method get_default_dataset_config (line 26) | def get_default_dataset_config():
method __init__ (line 52) | def __init__(self, config=None):
method get_display_name (line 194) | def get_display_name(self, tracker):
method _load_raw_file (line 197) | def _load_raw_file(self, tracker, seq, is_gt):
method get_preprocessed_seq_data (line 311) | def get_preprocessed_seq_data(self, raw_data, cls):
method _calculate_similarities (line 444) | def _calculate_similarities(self, gt_dets_t, tracker_dets_t):
method _prepare_gt_annotations (line 457) | def _prepare_gt_annotations(self):
method _get_tracker_seq_tracks (line 488) | def _get_tracker_seq_tracks(self, tracker, seq_id):
method get_name (line 525) | def get_name(self):
FILE: sam3/eval/hota_eval_toolkit/trackeval/eval.py
class Evaluator (line 25) | class Evaluator:
method get_default_eval_config (line 29) | def get_default_eval_config():
method __init__ (line 52) | def __init__(self, config=None):
method _combine_results (line 61) | def _combine_results(
method _summarize_results (line 155) | def _summarize_results(
method evaluate (line 219) | def evaluate(self, dataset_list, metrics_list, show_progressbar=False):
function eval_sequence (line 388) | def eval_sequence(seq, dataset, tracker, class_list, metrics_list, metri...
FILE: sam3/eval/hota_eval_toolkit/trackeval/metrics/_base_metric.py
class _BaseMetric (line 13) | class _BaseMetric(ABC):
method __init__ (line 15) | def __init__(self):
method eval_sequence (line 31) | def eval_sequence(self, data): ...
method combine_sequences (line 34) | def combine_sequences(self, all_res): ...
method combine_classes_class_averaged (line 37) | def combine_classes_class_averaged(self, all_res, ignore_empty_classes...
method combine_classes_det_averaged (line 40) | def combine_classes_det_averaged(self, all_res): ...
method plot_single_tracker_results (line 42) | def plot_single_tracker_results(self, all_res, tracker, output_folder,...
method get_name (line 55) | def get_name(cls):
method _combine_sum (line 59) | def _combine_sum(all_res, field):
method _combine_weighted_av (line 64) | def _combine_weighted_av(all_res, field, comb_res, weight_field):
method print_table (line 70) | def print_table(
method _summary_row (line 87) | def _summary_row(self, results_):
method _row_print (line 103) | def _row_print(*argv):
method summary_results (line 112) | def summary_results(self, table_res):
method detailed_results (line 118) | def detailed_results(self, table_res):
method _detailed_row (line 139) | def _detailed_row(self, res):
FILE: sam3/eval/hota_eval_toolkit/trackeval/metrics/count.py
class Count (line 9) | class Count(_BaseMetric):
method __init__ (line 12) | def __init__(self, config=None):
method eval_sequence (line 19) | def eval_sequence(self, data):
method combine_sequences (line 31) | def combine_sequences(self, all_res):
method combine_classes_class_averaged (line 38) | def combine_classes_class_averaged(self, all_res, ignore_empty_classes...
method combine_classes_det_averaged (line 45) | def combine_classes_det_averaged(self, all_res):
FILE: sam3/eval/hota_eval_toolkit/trackeval/metrics/hota.py
class HOTA (line 14) | class HOTA(_BaseMetric):
method __init__ (line 19) | def __init__(self, config=None):
method eval_sequence (line 42) | def eval_sequence(self, data):
method combine_sequences (line 177) | def combine_sequences(self, all_res):
method combine_classes_class_averaged (line 195) | def combine_classes_class_averaged(self, all_res, ignore_empty_classes...
method combine_classes_det_averaged (line 235) | def combine_classes_det_averaged(self, all_res):
method _compute_final_fields (line 254) | def _compute_final_fields(res):
method plot_single_tracker_results (line 271) | def plot_single_tracker_results(self, table_res, tracker, cls, output_...
FILE: sam3/eval/hota_eval_toolkit/trackeval/utils.py
function init_config (line 11) | def init_config(config, default_config, name=None):
function update_config (line 26) | def update_config(config):
function get_code_path (line 60) | def get_code_path():
function validate_metrics_list (line 65) | def validate_metrics_list(metrics_list):
function write_summary_results (line 86) | def write_summary_results(summaries, cls, output_folder):
function write_detailed_results (line 156) | def write_detailed_results(details, cls, output_folder):
function load_detail (line 174) | def load_detail(file):
class TrackEvalException (line 194) | class TrackEvalException(Exception):
FILE: sam3/eval/postprocessors.py
class PostProcessNullOp (line 20) | class PostProcessNullOp(nn.Module):
method __init__ (line 21) | def __init__(self, **kwargs):
method forward (line 25) | def forward(self, input):
method process_results (line 28) | def process_results(self, **kwargs):
class PostProcessImage (line 32) | class PostProcessImage(nn.Module):
method __init__ (line 35) | def __init__(
method forward (line 62) | def forward(
method _process_masks (line 153) | def _process_masks(self, target_sizes, pred_masks, consistent=True, ke...
method _process_boxes_and_labels (line 221) | def _process_boxes_and_labels(
method process_results (line 257) | def process_results(
class PostProcessAPIVideo (line 327) | class PostProcessAPIVideo(PostProcessImage):
method __init__ (line 330) | def __init__(
method process_results (line 364) | def process_results(
class PostProcessTracking (line 549) | class PostProcessTracking(PostProcessImage):
method __init__ (line 552) | def __init__(
method process_results (line 562) | def process_results(
class PostProcessCounting (line 591) | class PostProcessCounting(nn.Module):
method __init__ (line 594) | def __init__(
method forward (line 610) | def forward(self, outputs, target_sizes):
method process_results (line 635) | def process_results(
FILE: sam3/eval/saco_veval_eval.py
class VEvalEvaluator (line 19) | class VEvalEvaluator:
method __init__ (line 20) | def __init__(self, gt_annot_file: str, eval_res_file: str):
method run_eval (line 36) | def run_eval(self, pred_file: str):
function run_main_all (line 63) | def run_main_all(dataset_name, args):
function main_all (line 76) | def main_all(args):
function main_one (line 93) | def main_one(args):
function main (line 107) | def main():
FILE: sam3/eval/saco_veval_evaluators.py
function _get_metric_index (line 25) | def _get_metric_index(metric_name: str, iou_threshold: Optional[float] =...
class BasePredFileEvaluator (line 47) | class BasePredFileEvaluator:
class YTVISPredFileEvaluator (line 53) | class YTVISPredFileEvaluator(BasePredFileEvaluator):
method __init__ (line 56) | def __init__(
method evaluate (line 67) | def evaluate(self, pred_file: str) -> Dict[str, float]:
class VideoPhraseApEvaluator (line 118) | class VideoPhraseApEvaluator(BasePredFileEvaluator):
method __init__ (line 121) | def __init__(
method evaluate (line 132) | def evaluate(self, pred_file: str) -> Dict[str, float]:
class VideoCGF1Evaluator (line 186) | class VideoCGF1Evaluator(BasePredFileEvaluator):
method __init__ (line 189) | def __init__(
method evaluate (line 202) | def evaluate(self, pred_file: str) -> Dict[str, float]:
method extract_video_np_level_results (line 289) | def extract_video_np_level_results(self, demoF1Eval, video_np_level_re...
class VideoTetaEvaluator (line 330) | class VideoTetaEvaluator(BasePredFileEvaluator):
method __init__ (line 333) | def __init__(
method process_predictions (line 371) | def process_predictions(self, pred_file: str, tmp_dir: str) -> str:
method evaluate (line 406) | def evaluate(self, pred_file: str) -> Tuple[Dict[str, float], Dict]:
class VideoPhraseHotaEvaluator (line 495) | class VideoPhraseHotaEvaluator(BasePredFileEvaluator):
method __init__ (line 498) | def __init__(
method evaluate (line 528) | def evaluate(self, pred_file: str) -> Dict[str, float]:
method _remap_gt_dt (line 633) | def _remap_gt_dt(self, gt, dt):
method extract_video_np_level_results (line 661) | def extract_video_np_level_results(
class VideoClassBasedHotaEvaluator (line 682) | class VideoClassBasedHotaEvaluator(VideoPhraseHotaEvaluator):
method __init__ (line 683) | def __init__(
method _remap_gt_dt (line 692) | def _remap_gt_dt(self, gt, dt):
method extract_video_np_level_results (line 695) | def extract_video_np_level_results(self, *args, **kwargs):
function _compress_rle (line 699) | def _compress_rle(rle):
function remap_video_category_pairs_to_unique_video_ids (line 709) | def remap_video_category_pairs_to_unique_video_ids(
function remap_gt_dt_class_agnostic (line 772) | def remap_gt_dt_class_agnostic(gt, dt):
function _fill_in_ann_height_width (line 829) | def _fill_in_ann_height_width(gt_json):
FILE: sam3/eval/teta_eval_toolkit/_timing.py
function time (line 16) | def time(f):
FILE: sam3/eval/teta_eval_toolkit/config.py
function parse_configs (line 11) | def parse_configs():
function get_default_eval_config (line 58) | def get_default_eval_config():
function get_default_dataset_config (line 80) | def get_default_dataset_config():
function init_config (line 104) | def init_config(config, default_config, name=None):
function update_config (line 119) | def update_config(config):
function get_code_path (line 153) | def get_code_path():
FILE: sam3/eval/teta_eval_toolkit/datasets/_base_dataset.py
class _BaseDataset (line 20) | class _BaseDataset(ABC):
method __init__ (line 22) | def __init__(self):
method _load_raw_file (line 34) | def _load_raw_file(self, tracker, seq, is_gt):
method get_preprocessed_seq_data (line 39) | def get_preprocessed_seq_data(self, raw_data, cls):
method _calculate_similarities (line 43) | def _calculate_similarities(self, gt_dets_t, tracker_dets_t):
method get_class_name (line 49) | def get_class_name(cls):
method get_name (line 52) | def get_name(self):
method get_output_fol (line 55) | def get_output_fol(self, tracker):
method get_display_name (line 58) | def get_display_name(self, tracker):
method get_eval_info (line 64) | def get_eval_info(self):
method get_raw_seq_data (line 69) | def get_raw_seq_data(self, tracker, seq):
method _load_simple_text_file (line 109) | def _load_simple_text_file(
method _calculate_mask_ious (line 246) | def _calculate_mask_ious(masks1, masks2, is_encoded=False, do_ioa=False):
method _calculate_box_ious (line 283) | def _calculate_box_ious(bboxes1, bboxes2, box_format="xywh", do_ioa=Fa...
method _calculate_euclidean_similarity (line 332) | def _calculate_euclidean_similarity(dets1, dets2, zero_distance=2.0):
method _check_unique_ids (line 343) | def _check_unique_ids(data, after_preproc=False):
FILE: sam3/eval/teta_eval_toolkit/datasets/coco.py
class COCO (line 22) | class COCO(_BaseDataset):
method __init__ (line 25) | def __init__(self, config=None):
method get_display_name (line 173) | def get_display_name(self, tracker):
method _load_raw_file (line 176) | def _load_raw_file(self, tracker, seq, is_gt):
method get_preprocessed_seq_data_thr (line 250) | def get_preprocessed_seq_data_thr(self, raw_data, cls, assignment=None):
method get_preprocessed_seq_data (line 461) | def get_preprocessed_seq_data(
method _calculate_similarities (line 481) | def _calculate_similarities(self, gt_dets_t, tk_dets_t):
method _compute_vid_mappings (line 489) | def _compute_vid_mappings(self, annotations):
method _compute_image_to_timestep_mappings (line 562) | def _compute_image_to_timestep_mappings(self):
method _limit_dets_per_image (line 578) | def _limit_dets_per_image(self, annotations):
method _fill_video_ids_inplace (line 596) | def _fill_video_ids_inplace(self, annotations):
method _make_tk_ids_unique (line 610) | def _make_tk_ids_unique(annotations):
FILE: sam3/eval/teta_eval_toolkit/datasets/tao.py
class TAO (line 21) | class TAO(_BaseDataset):
method __init__ (line 24) | def __init__(self, config=None):
method get_display_name (line 179) | def get_display_name(self, tracker):
method _load_raw_file (line 182) | def _load_raw_file(self, tracker, seq, is_gt):
method get_preprocessed_seq_data_thr (line 258) | def get_preprocessed_seq_data_thr(self, raw_data, cls, assignment=None):
method get_preprocessed_seq_data (line 472) | def get_preprocessed_seq_data(
method _calculate_similarities (line 492) | def _calculate_similarities(self, gt_dets_t, tk_dets_t):
method _merge_categories (line 500) | def _merge_categories(self, annotations):
method _compute_vid_mappings (line 514) | def _compute_vid_mappings(self, annotations):
method _compute_image_to_timestep_mappings (line 586) | def _compute_image_to_timestep_mappings(self):
method _limit_dets_per_image (line 602) | def _limit_dets_per_image(self, annotations):
method _fill_video_ids_inplace (line 620) | def _fill_video_ids_inplace(self, annotations):
method _make_tk_ids_unique (line 634) | def _make_tk_ids_unique(annotations):
FILE: sam3/eval/teta_eval_toolkit/eval.py
class Evaluator (line 21) | class Evaluator:
method __init__ (line 24) | def __init__(self, config=None):
method evaluate (line 34) | def evaluate(self, dataset_list, metrics_list):
method evaluate_tracker (line 91) | def evaluate_tracker(
function eval_sequence (line 239) | def eval_sequence(seq, dataset, tracker, class_list, metrics_list, metri...
FILE: sam3/eval/teta_eval_toolkit/metrics/_base_metric.py
class _BaseMetric (line 14) | class _BaseMetric(ABC):
method __init__ (line 16) | def __init__(self):
method eval_sequence (line 32) | def eval_sequence(self, data):
method combine_sequences (line 36) | def combine_sequences(self, all_res):
method combine_classes_class_averaged (line 40) | def combine_classes_class_averaged(self, all_res, ignore_empty=False):
method combine_classes_det_averaged (line 44) | def combine_classes_det_averaged(self, all_res):
method plot_single_tracker_results (line 47) | def plot_single_tracker_results(self, all_res, tracker, output_folder,...
method get_name (line 60) | def get_name(cls):
method _combine_sum (line 64) | def _combine_sum(all_res, field):
method _combine_weighted_av (line 69) | def _combine_weighted_av(all_res, field, comb_res, weight_field):
method print_table (line 75) | def print_table(self, table_res, tracker, cls):
method _summary_row (line 90) | def _summary_row(self, results_):
method _row_print (line 106) | def _row_print(*argv):
method summary_results (line 115) | def summary_results(self, table_res):
method detailed_results (line 121) | def detailed_results(self, table_res):
method _detailed_row (line 142) | def _detailed_row(self, res):
FILE: sam3/eval/teta_eval_toolkit/metrics/teta.py
class TETA (line 17) | class TETA(_BaseMetric):
method __init__ (line 20) | def __init__(self, exhaustive=False, config=None):
method compute_global_assignment (line 45) | def compute_global_assignment(self, data_thr, alpha=0.5):
method eval_sequence_single_thr (line 77) | def eval_sequence_single_thr(self, data, cls, cid2clsname, cls_fp_thr,...
method compute_global_alignment_score (line 184) | def compute_global_alignment_score(self, data):
method compute_matches (line 209) | def compute_matches(self, data, t, ga_score, gt_ids, tk_ids, alpha):
method compute_association_scores (line 225) | def compute_association_scores(self, res, matches_counts, gt_id_count,...
method eval_sequence (line 249) | def eval_sequence(self, data, cls, cls_id_name_mapping, cls_fp):
method combine_sequences (line 262) | def combine_sequences(self, all_res):
method _combine_sequences_thr (line 280) | def _combine_sequences_thr(self, all_res):
method combine_classes_class_averaged (line 292) | def combine_classes_class_averaged(self, all_res, ignore_empty=False):
method _combine_classes_class_averaged_thr (line 314) | def _combine_classes_class_averaged_thr(self, all_res, ignore_empty=Fa...
method combine_classes_det_averaged (line 337) | def combine_classes_det_averaged(self, all_res):
method _combine_classes_det_averaged_thr (line 353) | def _combine_classes_det_averaged_thr(self, all_res):
method _compute_final_fields (line 366) | def _compute_final_fields(res):
method print_summary_table (line 394) | def print_summary_table(self, thr_res, thr, tracker, cls):
FILE: sam3/eval/teta_eval_toolkit/utils.py
function validate_metrics_list (line 11) | def validate_metrics_list(metrics_list):
function get_track_id_str (line 32) | def get_track_id_str(ann):
class TrackEvalException (line 45) | class TrackEvalException(Exception):
FILE: sam3/eval/ytvis_coco_wrapper.py
class YTVIS (line 16) | class YTVIS(COCO):
method __init__ (line 22) | def __init__(self, annotation_file: str = None, ignore_gt_cats: bool =...
method createIndex (line 32) | def createIndex(self):
method getAnnIds (line 71) | def getAnnIds(self, imgIds=[], catIds=[], areaRng=[], iscrowd=None):
method showAnns (line 80) | def showAnns(self, anns, draw_bbox=False):
method loadRes (line 84) | def loadRes(self, resFile):
method download (line 135) | def download(self, tarDir=None, imgIds=[]):
method loadNumpyAnnotations (line 139) | def loadNumpyAnnotations(self, data):
method annToRLE (line 143) | def annToRLE(self, ann):
method annToMask (line 147) | def annToMask(self, ann):
FILE: sam3/eval/ytvis_eval.py
class YTVISevalMixin (line 32) | class YTVISevalMixin:
method _prepare (line 38) | def _prepare(self):
method computeIoU (line 69) | def computeIoU(self, imgId, catId):
class YTVISeval (line 150) | class YTVISeval(YTVISevalMixin, COCOeval):
class VideoDemoF1Eval (line 155) | class VideoDemoF1Eval(YTVISevalMixin, CGF1Eval):
class YTVISResultsWriter (line 160) | class YTVISResultsWriter:
method __init__ (line 166) | def __init__(
method _dump_vid_preds (line 197) | def _dump_vid_preds(self, results):
method prepare (line 201) | def prepare(self, predictions):
method set_sync_device (line 272) | def set_sync_device(self, device: torch.device):
method update (line 275) | def update(self, *args, **kwargs):
method _dump_preds (line 280) | def _dump_preds(self):
method synchronize_between_processes (line 293) | def synchronize_between_processes(self):
method _dedup_pre_gather (line 303) | def _dedup_pre_gather(self, predictions):
method _dedup_post_gather (line 346) | def _dedup_post_gather(self, list_of_prediction_dict):
method compute_synced (line 366) | def compute_synced(
method compute (line 407) | def compute(self):
method reset (line 410) | def reset(self, *args, **kwargs):
FILE: sam3/logger.py
class ColoredFormatter (line 16) | class ColoredFormatter(logging.Formatter):
method __init__ (line 19) | def __init__(self):
method format (line 36) | def format(self, record):
function get_logger (line 41) | def get_logger(name, level=logging.INFO):
FILE: sam3/model/act_ckpt_utils.py
function activation_ckpt_wrapper (line 19) | def activation_ckpt_wrapper(module: Union[nn.Module, Callable]) -> Calla...
function clone_output_wrapper (line 95) | def clone_output_wrapper(f: Callable[..., T]) -> Callable[..., T]:
FILE: sam3/model/box_ops.py
function box_cxcywh_to_xyxy (line 13) | def box_cxcywh_to_xyxy(x):
function box_cxcywh_to_xywh (line 19) | def box_cxcywh_to_xywh(x):
function box_xywh_to_xyxy (line 25) | def box_xywh_to_xyxy(x):
function box_xywh_to_cxcywh (line 31) | def box_xywh_to_cxcywh(x):
function box_xyxy_to_xywh (line 37) | def box_xyxy_to_xywh(x):
function box_xyxy_to_cxcywh (line 43) | def box_xyxy_to_cxcywh(x):
function box_area (line 49) | def box_area(boxes):
function masks_to_boxes (line 63) | def masks_to_boxes(masks):
function box_iou (line 93) | def box_iou(boxes1, boxes2):
function generalized_box_iou (line 121) | def generalized_box_iou(boxes1, boxes2):
function fast_diag_generalized_box_iou (line 148) | def fast_diag_generalized_box_iou(boxes1, boxes2):
function fast_diag_box_iou (line 175) | def fast_diag_box_iou(boxes1, boxes2):
function box_xywh_inter_union (line 198) | def box_xywh_inter_union(
FILE: sam3/model/data_misc.py
function interpolate (line 19) | def interpolate(
class BatchedPointer (line 48) | class BatchedPointer:
class FindStage (line 62) | class FindStage:
class BatchedFindTarget (line 86) | class BatchedFindTarget:
class BatchedInferenceMetadata (line 126) | class BatchedInferenceMetadata:
class BatchedDatapoint (line 161) | class BatchedDatapoint:
function convert_my_tensors (line 170) | def convert_my_tensors(obj):
FILE: sam3/model/decoder.py
class TransformerDecoderLayer (line 28) | class TransformerDecoderLayer(nn.Module):
method __init__ (line 29) | def __init__(
method with_pos_embed (line 67) | def with_pos_embed(tensor, pos):
method forward_ffn (line 70) | def forward_ffn(self, tgt):
method forward (line 77) | def forward(
class TransformerDecoder (line 187) | class TransformerDecoder(nn.Module):
method __init__ (line 188) | def __init__(
method _get_coords (line 323) | def _get_coords(H, W, device):
method _get_rpb_matrix (line 328) | def _get_rpb_matrix(self, reference_boxes, feat_size):
method forward (line 407) | def forward(
class TransformerEncoderCrossAttention (line 611) | class TransformerEncoderCrossAttention(nn.Module):
method __init__ (line 612) | def __init__(
method forward (line 652) | def forward(
class TransformerDecoderLayerv1 (line 723) | class TransformerDecoderLayerv1(nn.Module):
method __init__ (line 724) | def __init__(
method forward_post (line 764) | def forward_post(
method forward_pre (line 806) | def forward_pre(
method forward (line 853) | def forward(
class TransformerDecoderLayerv2 (line 883) | class TransformerDecoderLayerv2(TransformerDecoderLayerv1):
method __init__ (line 884) | def __init__(self, cross_attention_first=False, *args: Any, **kwds: Any):
method _forward_sa (line 888) | def _forward_sa(self, tgt, query_pos):
method _forward_ca (line 896) | def _forward_ca(self, tgt, memory, query_pos, pos, num_k_exclude_rope=0):
method forward_pre (line 916) | def forward_pre(
method forward (line 950) | def forward(self, *args: Any, **kwds: Any) -> torch.Tensor:
FILE: sam3/model/edt.py
function edt_kernel (line 56) | def edt_kernel(inputs_ptr, outputs_ptr, v, z, height, width, horizontal:...
function edt_triton (line 119) | def edt_triton(data: torch.Tensor):
FILE: sam3/model/encoder.py
class TransformerEncoderLayer (line 15) | class TransformerEncoderLayer(nn.Module):
method __init__ (line 27) | def __init__(
method forward_post (line 84) | def forward_post(
method forward_pre (line 141) | def forward_pre(
method forward (line 205) | def forward(
class TransformerEncoder (line 254) | class TransformerEncoder(nn.Module):
method __init__ (line 272) | def __init__(
method get_reference_points (line 303) | def get_reference_points(spatial_shapes, valid_ratios, device):
method _prepare_multilevel_features (line 324) | def _prepare_multilevel_features(self, srcs, masks, pos_embeds):
method forward (line 380) | def forward(
class TransformerEncoderFusion (line 464) | class TransformerEncoderFusion(TransformerEncoder):
method __init__ (line 483) | def __init__(
method get_reference_points (line 511) | def get_reference_points(spatial_shapes, valid_ratios, device):
method forward (line 515) | def forward(
function pool_text_feat (line 582) | def pool_text_feat(prompt, prompt_mask, pool_with_mask):
FILE: sam3/model/geometry_encoders.py
function is_right_padded (line 17) | def is_right_padded(mask):
function concat_padded_sequences (line 23) | def concat_padded_sequences(seq1, mask1, seq2, mask2, return_index: bool...
class Prompt (line 83) | class Prompt:
method __init__ (line 102) | def __init__(
method _init_seq_len_and_device (line 240) | def _init_seq_len_and_device(
method _init_box (line 283) | def _init_box(self, box_embeddings, box_labels, box_mask, box_seq_len,...
method _init_point (line 292) | def _init_point(
method _init_mask (line 308) | def _init_mask(
method append_boxes (line 320) | def append_boxes(self, boxes, labels, mask=None):
method append_points (line 343) | def append_points(self, points, labels, mask=None):
method append_masks (line 366) | def append_masks(self, masks, labels=None, attn_mask=None):
method clone (line 387) | def clone(self):
class MaskEncoder (line 404) | class MaskEncoder(nn.Module):
method __init__ (line 409) | def __init__(
method forward (line 418) | def forward(self, masks, *args, **kwargs) -> Tuple[torch.Tensor, torch...
class FusedMaskEncoder (line 425) | class FusedMaskEncoder(MaskEncoder):
method __init__ (line 432) | def __init__(
method forward (line 448) | def forward(
class SequenceGeometryEncoder (line 470) | class SequenceGeometryEncoder(nn.Module):
method __init__ (line 491) | def __init__(
method _encode_points (line 589) | def _encode_points(self, points, points_mask, points_labels, img_feats):
method _encode_boxes (line 632) | def _encode_boxes(self, boxes, boxes_mask, boxes_labels, img_feats):
method _encode_masks (line 683) | def _encode_masks(
method forward (line 717) | def forward(self, geo_prompt: Prompt, img_feats, img_sizes, img_pos_em...
FILE: sam3/model/io_utils.py
function load_resource_as_video_frames (line 29) | def load_resource_as_video_frames(
function load_image_as_single_frame_video (line 93) | def load_image_as_single_frame_video(
function load_video_frames (line 116) | def load_video_frames(
function load_video_frames_from_image_folder (line 158) | def load_video_frames_from_image_folder(
function load_video_frames_from_video_file (line 213) | def load_video_frames_from_video_file(
function load_video_frames_from_video_file_using_cv2 (line 255) | def load_video_frames_from_video_file_using_cv2(
function load_dummy_video (line 325) | def load_dummy_video(image_size, offload_video_to_cpu, num_frames=60):
function _load_img_as_tensor (line 336) | def _load_img_as_tensor(img_path, image_size):
class AsyncImageFrameLoader (line 345) | class AsyncImageFrameLoader:
method __init__ (line 350) | def __init__(self, img_paths, image_size, offload_video_to_cpu, img_me...
method __getitem__ (line 382) | def __getitem__(self, index):
method __len__ (line 405) | def __len__(self):
class TorchCodecDecoder (line 409) | class TorchCodecDecoder:
method __init__ (line 415) | def __init__(self, source, dimension_order="NCHW", device="cpu", num_t...
method __len__ (line 442) | def __len__(self) -> int:
method __getitem__ (line 445) | def __getitem__(self, key: int):
class FIFOLock (line 461) | class FIFOLock:
method __init__ (line 464) | def __init__(self):
method acquire (line 469) | def acquire(self):
method release (line 479) | def release(self):
method __enter__ (line 485) | def __enter__(self):
method __exit__ (line 488) | def __exit__(self, t, v, tb):
class AsyncVideoFileLoaderWithTorchCodec (line 492) | class AsyncVideoFileLoaderWithTorchCodec:
method __init__ (line 500) | def __init__(
method _load_one_frame (line 573) | def _load_one_frame(self, idx):
method _start_video_loading (line 578) | def _start_video_loading(self):
method _transform_frame (line 652) | def _transform_frame(self, frame):
method __getitem__ (line 672) | def __getitem__(self, index):
method __len__ (line 694) | def __len__(self):
method __getstate__ (line 697) | def __getstate__(self):
FILE: sam3/model/maskformer_segmentation.py
class LinearPresenceHead (line 16) | class LinearPresenceHead(nn.Sequential):
method __init__ (line 17) | def __init__(self, d_model):
method forward (line 21) | def forward(self, hs, prompt, prompt_mask):
class MaskPredictor (line 25) | class MaskPredictor(nn.Module):
method __init__ (line 26) | def __init__(self, hidden_dim, mask_dim):
method forward (line 30) | def forward(self, obj_queries, pixel_embed):
class SegmentationHead (line 56) | class SegmentationHead(nn.Module):
method __init__ (line 57) | def __init__(
method device (line 95) | def device(self):
method to (line 99) | def to(self, *args, **kwargs):
method _embed_pixels (line 104) | def _embed_pixels(
method forward (line 147) | def forward(
class PixelDecoder (line 174) | class PixelDecoder(nn.Module):
method __init__ (line 175) | def __init__(
method forward (line 205) | def forward(self, backbone_feats: List[torch.Tensor]):
class UniversalSegmentationHead (line 224) | class UniversalSegmentationHead(SegmentationHead):
method __init__ (line 227) | def __init__(
method forward (line 272) | def forward(
FILE: sam3/model/memory.py
class SimpleMaskDownSampler (line 21) | class SimpleMaskDownSampler(nn.Module):
method __init__ (line 30) | def __init__(
method forward (line 71) | def forward(self, x: torch.Tensor):
class CXBlock (line 84) | class CXBlock(nn.Module):
method __init__ (line 96) | def __init__(
method forward (line 126) | def forward(self, x):
class SimpleFuser (line 142) | class SimpleFuser(nn.Module):
method __init__ (line 143) | def __init__(self, layer, num_layers, dim=None, input_projection=False):
method forward (line 152) | def forward(self, x):
class SimpleMaskEncoder (line 160) | class SimpleMaskEncoder(nn.Module):
method __init__ (line 161) | def __init__(
method forward (line 180) | def forward(
FILE: sam3/model/model_misc.py
function inverse_sigmoid (line 22) | def inverse_sigmoid(x, eps=1e-3):
class MultiheadAttentionWrapper (line 33) | class MultiheadAttentionWrapper(nn.MultiheadAttention):
method forward (line 34) | def forward(self, *args, **kwargs):
class DotProductScoring (line 39) | class DotProductScoring(torch.nn.Module):
method __init__ (line 40) | def __init__(
method mean_pool_text (line 59) | def mean_pool_text(self, prompt, prompt_mask):
method forward (line 68) | def forward(self, hs, prompt, prompt_mask):
class LayerScale (line 96) | class LayerScale(nn.Module):
method __init__ (line 97) | def __init__(
method forward (line 107) | def forward(self, x: Tensor) -> Tensor:
class LayerNorm2d (line 111) | class LayerNorm2d(nn.Module):
method __init__ (line 112) | def __init__(self, num_channels: int, eps: float = 1e-6) -> None:
method forward (line 118) | def forward(self, x: torch.Tensor) -> torch.Tensor:
class TransformerWrapper (line 126) | class TransformerWrapper(nn.Module):
method __init__ (line 127) | def __init__(
method _reset_parameters (line 151) | def _reset_parameters(self):
class MLP (line 162) | class MLP(nn.Module):
method __init__ (line 165) | def __init__(
method forward (line 190) | def forward(self, x):
function get_clones (line 200) | def get_clones(module, N):
function get_clones_seq (line 204) | def get_clones_seq(module, N):
function get_activation_fn (line 208) | def get_activation_fn(activation):
function get_activation_module (line 219) | def get_activation_module(activation):
function get_valid_ratio (line 230) | def get_valid_ratio(mask):
function gen_sineembed_for_position (line 240) | def gen_sineembed_for_position(pos_tensor, num_feats=256):
class SAM3Output (line 279) | class SAM3Output(list):
class IterMode (line 312) | class IterMode(Enum):
method __init__ (line 318) | def __init__(
method __iter__ (line 353) | def __iter__(self) -> Iterator:
method __getitem__ (line 356) | def __getitem__(self, index):
class _IterationMode (line 376) | class _IterationMode(AbstractContextManager):
method __init__ (line 382) | def __init__(
method __enter__ (line 390) | def __enter__(self) -> "SAM3Output":
method __exit__ (line 395) | def __exit__(self, exc_type, exc_value, traceback):
method iteration_mode (line 400) | def iteration_mode(
method append (line 413) | def append(self, item: list):
method __repr__ (line 419) | def __repr__(self):
method __len__ (line 422) | def __len__(self):
FILE: sam3/model/necks.py
class Sam3DualViTDetNeck (line 14) | class Sam3DualViTDetNeck(nn.Module):
method __init__ (line 15) | def __init__(
method forward (line 101) | def forward(
FILE: sam3/model/position_encoding.py
class PositionEmbeddingSine (line 12) | class PositionEmbeddingSine(nn.Module):
method __init__ (line 18) | def __init__(
method _encode_xy (line 54) | def _encode_xy(self, x, y):
method encode_boxes (line 74) | def encode_boxes(self, x, y, w, h):
method encode_points (line 82) | def encode_points(self, x, y, labels):
method forward (line 91) | def forward(self, x):
FILE: sam3/model/sam1_task_predictor.py
class SAM3InteractiveImagePredictor (line 21) | class SAM3InteractiveImagePredictor(nn.Module):
method __init__ (line 22) | def __init__(
method set_image (line 70) | def set_image(
method set_image_batch (line 120) | def set_image_batch(
method predict_batch (line 167) | def predict_batch(
method predict (line 229) | def predict(
method _prep_prompts (line 297) | def _prep_prompts(
method _predict (line 328) | def _predict(
method get_image_embedding (line 431) | def get_image_embedding(self) -> torch.Tensor:
method device (line 447) | def device(self) -> torch.device:
method reset_predictor (line 450) | def reset_predictor(self) -> None:
FILE: sam3/model/sam3_image.py
function _update_out (line 23) | def _update_out(out, out_name, out_value, auxiliary=True, update_aux=True):
class Sam3Image (line 33) | class Sam3Image(torch.nn.Module):
method __init__ (line 38) | def __init__(
method device (line 105) | def device(self):
method to (line 109) | def to(self, *args, **kwargs):
method _get_img_feats (line 114) | def _get_img_feats(self, backbone_out, img_ids):
method _encode_prompt (line 166) | def _encode_prompt(
method _run_encoder (line 211) | def _run_encoder(
method _run_decoder (line 251) | def _run_decoder(
method _update_scores_and_boxes (line 299) | def _update_scores_and_boxes(
method _run_segmentation_heads (line 385) | def _run_segmentation_heads(
method _get_best_mask (line 425) | def _get_best_mask(self, out):
method forward_grounding (line 439) | def forward_grounding(
method _postprocess_out (line 492) | def _postprocess_out(self, out: Dict, multimask_output: bool = False):
method _get_dummy_prompt (line 519) | def _get_dummy_prompt(self, num_prompts=1):
method forward (line 527) | def forward(self, input: BatchedDatapoint):
method _compute_matching (line 575) | def _compute_matching(self, out, targets):
method back_convert (line 580) | def back_convert(self, targets):
method predict_inst (line 596) | def predict_inst(
method predict_inst_batch (line 635) | def predict_inst_batch(
class Sam3ImageOnVideoMultiGPU (line 684) | class Sam3ImageOnVideoMultiGPU(Sam3Image):
method __init__ (line 685) | def __init__(
method forward_video_grounding_multigpu (line 698) | def forward_video_grounding_multigpu(
method _build_multigpu_buffer_next_chunk (line 789) | def _build_multigpu_buffer_next_chunk(
method _gather_tensor (line 870) | def _gather_tensor(self, x):
FILE: sam3/model/sam3_image_processor.py
class Sam3Processor (line 14) | class Sam3Processor:
method __init__ (line 17) | def __init__(self, model, resolution=1008, device="cuda", confidence_t...
method set_image (line 42) | def set_image(self, image, state=None):
method set_image_batch (line 76) | def set_image_batch(self, images: List[np.ndarray], state=None):
method set_text_prompt (line 113) | def set_text_prompt(self, prompt: str, state: Dict):
method add_geometric_prompt (line 128) | def add_geometric_prompt(self, box: List, label: bool, state: Dict):
method reset_all_prompts (line 154) | def reset_all_prompts(self, state: Dict):
method set_confidence_threshold (line 172) | def set_confidence_threshold(self, threshold: float, state=None):
method _forward_grounding (line 183) | def _forward_grounding(self, state: Dict):
FILE: sam3/model/sam3_tracker_base.py
class Sam3TrackerBase (line 26) | class Sam3TrackerBase(torch.nn.Module):
method __init__ (line 27) | def __init__(
method device (line 158) | def device(self):
method _get_tpos_enc (line 161) | def _get_tpos_enc(self, rel_pos_list, device, max_abs_pos=None, dummy=...
method _build_sam_heads (line 176) | def _build_sam_heads(self):
method _forward_sam_heads (line 217) | def _forward_sam_heads(
method _use_mask_as_output (line 388) | def _use_mask_as_output(self, backbone_features, high_res_features, ma...
method forward (line 436) | def forward(self, input: BatchedDatapoint, is_inference=False):
method forward_image (line 442) | def forward_image(self, img_batch):
method _prepare_backbone_features (line 465) | def _prepare_backbone_features(self, backbone_out):
method _prepare_backbone_features_per_frame (line 481) | def _prepare_backbone_features_per_frame(self, img_batch, img_ids):
method cal_mem_score (line 508) | def cal_mem_score(self, object_score_logits, iou_score):
method frame_filter (line 517) | def frame_filter(self, output_dict, track_in_reverse, frame_idx, num_f...
method _prepare_memory_conditioned_features (line 559) | def _prepare_memory_conditioned_features(
method _encode_new_memory (line 796) | def _encode_new_memory(
method forward_tracking (line 851) | def forward_tracking(self, backbone_out, input, return_dict=False):
method track_step (line 929) | def track_step(
method _use_multimask (line 1105) | def _use_multimask(self, is_init_cond_frame, point_inputs):
method _apply_non_overlapping_constraints (line 1115) | def _apply_non_overlapping_constraints(self, pred_masks):
method _compile_all_components (line 1135) | def _compile_all_components(self):
method _maybe_clone (line 1172) | def _maybe_clone(self, x):
function concat_points (line 1177) | def concat_points(old_point_inputs, new_points, new_labels):
FILE: sam3/model/sam3_tracker_utils.py
function sample_box_points (line 12) | def sample_box_points(
function mask_to_box (line 58) | def mask_to_box(masks: torch.Tensor):
function sample_random_points_from_errors (line 87) | def sample_random_points_from_errors(gt_masks, pred_masks, num_pt=1):
function sample_one_point_from_error_center (line 137) | def sample_one_point_from_error_center(gt_masks, pred_masks, padding=True):
function sample_one_point_from_error_center_slow (line 197) | def sample_one_point_from_error_center_slow(gt_masks, pred_masks, paddin...
function get_next_point (line 262) | def get_next_point(gt_masks, pred_masks, method):
function select_closest_cond_frames (line 271) | def select_closest_cond_frames(
function get_1d_sine_pe (line 328) | def get_1d_sine_pe(pos_inds, dim, temperature=10000):
function get_best_gt_match_from_multimasks (line 341) | def get_best_gt_match_from_multimasks(pred_multimasks, gt_masks, pred_sc...
function fill_holes_in_mask_scores (line 370) | def fill_holes_in_mask_scores(mask, max_area, fill_holes=True, remove_sp...
function _get_connected_components_with_padding (line 409) | def _get_connected_components_with_padding(mask):
FILE: sam3/model/sam3_tracking_predictor.py
class Sam3TrackerPredictor (line 15) | class Sam3TrackerPredictor(Sam3TrackerBase):
method __init__ (line 21) | def __init__(
method init_state (line 57) | def init_state(
method _obj_id_to_idx (line 138) | def _obj_id_to_idx(self, inference_state, obj_id):
method _obj_idx_to_id (line 171) | def _obj_idx_to_id(self, inference_state, obj_idx):
method _get_obj_num (line 175) | def _get_obj_num(self, inference_state):
method add_new_points_or_box (line 180) | def add_new_points_or_box(
method add_new_mask (line 343) | def add_new_mask(
method add_new_points (line 461) | def add_new_points(self, *args, **kwargs):
method _get_orig_video_res_output (line 465) | def _get_orig_video_res_output(self, inference_state, any_res_masks):
method _consolidate_temp_output_across_obj (line 492) | def _consolidate_temp_output_across_obj(
method _get_empty_mask_ptr (line 632) | def _get_empty_mask_ptr(self, inference_state, frame_idx):
method propagate_in_video_preflight (line 673) | def propagate_in_video_preflight(self, inference_state, run_mem_encode...
method _get_processing_order (line 759) | def _get_processing_order(
method propagate_in_video (line 790) | def propagate_in_video(
method _add_output_per_object (line 875) | def _add_output_per_object(
method clear_all_points_in_frame (line 907) | def clear_all_points_in_frame(
method clear_all_points_in_video (line 979) | def clear_all_points_in_video(self, inference_state):
method _reset_tracking_results (line 991) | def _reset_tracking_results(self, inference_state):
method _get_image_feature (line 1011) | def _get_image_feature(self, inference_state, frame_idx, batch_size):
method _run_single_frame_inference (line 1050) | def _run_single_frame_inference(
method _run_memory_encoder (line 1119) | def _run_memory_encoder(
method _get_maskmem_pos_enc (line 1156) | def _get_maskmem_pos_enc(self, inference_state, current_out):
method remove_object (line 1182) | def remove_object(self, inference_state, obj_id, strict=False, need_ou...
method _clear_non_cond_mem_around_input (line 1300) | def _clear_non_cond_mem_around_input(self, inference_state, frame_idx):
method _suppress_shrinked_masks (line 1319) | def _suppress_shrinked_masks(
method _suppress_object_pw_area_shrinkage (line 1333) | def _suppress_object_pw_area_shrinkage(self, pred_masks):
method _apply_object_wise_non_overlapping_constraints (line 1349) | def _apply_object_wise_non_overlapping_constraints(
FILE: sam3/model/sam3_video_base.py
class MaskletConfirmationStatus (line 31) | class MaskletConfirmationStatus(Enum):
class Sam3VideoBase (line 36) | class Sam3VideoBase(nn.Module):
method __init__ (line 37) | def __init__(
method device (line 137) | def device(self):
method _init_dist_pg_cpu (line 141) | def _init_dist_pg_cpu(self):
method broadcast_python_obj_cpu (line 147) | def broadcast_python_obj_cpu(self, python_obj_list, src):
method _det_track_one_frame (line 152) | def _det_track_one_frame(
method _suppress_detections_close_to_boundary (line 294) | def _suppress_detections_close_to_boundary(self, boxes, margin=0.025):
method run_backbone_and_detection (line 313) | def run_backbone_and_detection(
method run_tracker_propagation (line 402) | def run_tracker_propagation(
method _recondition_masklets (line 454) | def _recondition_masklets(
method run_tracker_update_planning_phase (line 506) | def run_tracker_update_planning_phase(
method _suppress_overlapping_based_on_recent_occlusion (line 820) | def _suppress_overlapping_based_on_recent_occlusion(
method run_tracker_update_execution_phase (line 893) | def run_tracker_update_execution_phase(
method build_outputs (line 936) | def build_outputs(
method _get_objects_to_suppress_based_on_most_recently_occluded (line 1016) | def _get_objects_to_suppress_based_on_most_recently_occluded(
method _propogate_tracker_one_frame_local_gpu (line 1098) | def _propogate_tracker_one_frame_local_gpu(
method _associate_det_trk (line 1161) | def _associate_det_trk(
method _assign_new_det_to_gpus (line 1299) | def _assign_new_det_to_gpus(self, new_det_num, prev_workload_per_gpu):
method _process_hotstart (line 1312) | def _process_hotstart(
method _tracker_update_memories (line 1438) | def _tracker_update_memories(
method _tracker_add_new_objects (line 1517) | def _tracker_add_new_objects(
method _tracker_remove_object (line 1575) | def _tracker_remove_object(self, tracker_states_local: List[Any], obj_...
method _tracker_remove_objects (line 1592) | def _tracker_remove_objects(
method _initialize_metadata (line 1602) | def _initialize_metadata(self):
method update_masklet_confirmation_status (line 1644) | def update_masklet_confirmation_status(
method forward (line 1697) | def forward(self, input: BatchedDatapoint, is_inference: bool = False):
method _load_checkpoint (line 1700) | def _load_checkpoint(self, ckpt_path: str, strict: bool = True):
method prep_for_evaluator (line 1708) | def prep_for_evaluator(self, video_frames, tracking_res, scores_labels):
method _encode_prompt (line 1751) | def _encode_prompt(self, **kwargs):
method _drop_new_det_with_obj_limit (line 1754) | def _drop_new_det_with_obj_limit(self, new_det_fa_inds, det_scores_np,...
FILE: sam3/model/sam3_video_inference.py
class Sam3VideoInference (line 30) | class Sam3VideoInference(Sam3VideoBase):
method __init__ (line 34) | def __init__(
method init_state (line 55) | def init_state(
method reset_state (line 92) | def reset_state(self, inference_state):
method _construct_initial_input_batch (line 114) | def _construct_initial_input_batch(self, inference_state, images):
method _get_visual_prompt (line 179) | def _get_visual_prompt(self, inference_state, frame_idx, boxes_cxcywh,...
method _get_processing_order (line 222) | def _get_processing_order(
method propagate_in_video (line 251) | def propagate_in_video(
method _run_single_frame_inference (line 358) | def _run_single_frame_inference(self, inference_state, frame_idx, reve...
method _postprocess_output (line 430) | def _postprocess_output(
method _cache_frame_outputs (line 524) | def _cache_frame_outputs(
method _build_tracker_output (line 551) | def _build_tracker_output(
method _compile_model (line 574) | def _compile_model(self):
method _warm_up_vg_propagation (line 654) | def _warm_up_vg_propagation(self, inference_state, start_frame_idx=0):
method add_fake_objects_to_inference_state (line 741) | def add_fake_objects_to_inference_state(
method warm_up_compilation (line 802) | def warm_up_compilation(self):
method add_prompt (line 840) | def add_prompt(
method forward (line 910) | def forward(self, input: BatchedDatapoint, is_inference: bool = False):
method back_convert (line 960) | def back_convert(self, targets):
class Sam3VideoInferenceWithInstanceInteractivity (line 965) | class Sam3VideoInferenceWithInstanceInteractivity(Sam3VideoInference):
method __init__ (line 966) | def __init__(
method _init_new_tracker_state (line 987) | def _init_new_tracker_state(self, inference_state):
method propagate_in_video (line 996) | def propagate_in_video(
method add_action_history (line 1191) | def add_action_history(
method _has_object_been_refined (line 1214) | def _has_object_been_refined(self, inference_state, obj_id):
method parse_action_history_for_propagation (line 1222) | def parse_action_history_for_propagation(self, inference_state):
method remove_object (line 1280) | def remove_object(self, inference_state, obj_id, is_user_action=False):
method _get_gpu_id_by_obj_id (line 1317) | def _get_gpu_id_by_obj_id(self, inference_state, obj_id):
method _get_tracker_inference_states_by_obj_ids (line 1327) | def _get_tracker_inference_states_by_obj_ids(self, inference_state, ob...
method _prepare_backbone_feats (line 1340) | def _prepare_backbone_feats(self, inference_state, frame_idx, reverse):
method add_prompt (line 1360) | def add_prompt(
method add_tracker_new_points (line 1400) | def add_tracker_new_points(
method _gather_obj_id_to_mask_across_gpus (line 1612) | def _gather_obj_id_to_mask_across_gpus(self, inference_state, obj_id_t...
method _convert_low_res_mask_to_video_res (line 1647) | def _convert_low_res_mask_to_video_res(self, low_res_mask, inference_s...
method clear_detector_added_cond_frame_in_tracker (line 1678) | def clear_detector_added_cond_frame_in_tracker(
function is_image_type (line 1709) | def is_image_type(resource_path: str) -> bool:
FILE: sam3/model/sam3_video_predictor.py
class Sam3VideoPredictor (line 24) | class Sam3VideoPredictor:
method __init__ (line 28) | def __init__(
method handle_request (line 59) | def handle_request(self, request):
method handle_stream_request (line 92) | def handle_stream_request(self, request):
method start_session (line 105) | def start_session(self, resource_path, session_id=None):
method add_prompt (line 134) | def add_prompt(
method remove_object (line 166) | def remove_object(
method propagate_in_video (line 186) | def propagate_in_video(
method reset_session (line 231) | def reset_session(self, session_id):
method close_session (line 239) | def close_session(self, session_id):
method _get_session (line 256) | def _get_session(self, session_id):
method _get_session_stats (line 264) | def _get_session_stats(self):
method _get_torch_and_gpu_properties (line 280) | def _get_torch_and_gpu_properties(self):
method shutdown (line 288) | def shutdown(self):
class Sam3VideoPredictorMultiGPU (line 293) | class Sam3VideoPredictorMultiGPU(Sam3VideoPredictor):
method __init__ (line 294) | def __init__(self, *model_args, gpus_to_use=None, **model_kwargs):
method handle_request (line 336) | def handle_request(self, request):
method handle_stream_request (line 359) | def handle_stream_request(self, request):
method _start_worker_processes (line 376) | def _start_worker_processes(self, *model_args, **model_kwargs):
method _start_nccl_process_group (line 415) | def _start_nccl_process_group(self):
method _find_free_port (line 438) | def _find_free_port(self) -> int:
method _worker_process_command_loop (line 449) | def _worker_process_command_loop(
method shutdown (line 512) | def shutdown(self):
FILE: sam3/model/text_encoder_ve.py
class ResidualAttentionBlock (line 15) | class ResidualAttentionBlock(nn.Module):
method __init__ (line 16) | def __init__(
method attention (line 56) | def attention(
method forward (line 72) | def forward(
class Transformer (line 92) | class Transformer(nn.Module):
method __init__ (line 93) | def __init__(
method forward (line 130) | def forward(
function text_global_pool (line 150) | def text_global_pool(
class TextTransformer (line 166) | class TextTransformer(nn.Module):
method __init__ (line 167) | def __init__(
method build_causal_mask (line 222) | def build_causal_mask(self) -> torch.Tensor:
method forward (line 230) | def forward(
class VETextEncoder (line 255) | class VETextEncoder(nn.Module):
method __init__ (line 256) | def __init__(
method forward (line 288) | def forward(
FILE: sam3/model/tokenizer_ve.py
function bytes_to_unicode (line 32) | def bytes_to_unicode():
function get_pairs (line 58) | def get_pairs(word):
function basic_clean (line 70) | def basic_clean(text):
function whitespace_clean (line 76) | def whitespace_clean(text):
function _clean_canonicalize (line 82) | def _clean_canonicalize(x):
function _clean_lower (line 87) | def _clean_lower(x):
function _clean_whitespace (line 92) | def _clean_whitespace(x):
function get_clean_fn (line 97) | def get_clean_fn(type: str):
function canonicalize_text (line 108) | def canonicalize_text(text, *, keep_punctuation_exact_string=None):
class SimpleTokenizer (line 130) | class SimpleTokenizer(object):
method __init__ (line 131) | def __init__(
method bpe (line 170) | def bpe(self, token):
method encode (line 208) | def encode(self, text):
method decode (line 218) | def decode(self, tokens):
method __call__ (line 227) | def __call__(
FILE: sam3/model/utils/misc.py
function _is_named_tuple (line 12) | def _is_named_tuple(x) -> bool:
class _CopyableData (line 17) | class _CopyableData(Protocol):
method to (line 18) | def to(self, device: torch.device, *args: Any, **kwargs: Any):
function copy_data_to_device (line 23) | def copy_data_to_device(data, device: torch.device, *args: Any, **kwargs...
FILE: sam3/model/utils/sam1_utils.py
class SAM2Transforms (line 18) | class SAM2Transforms(nn.Module):
method __init__ (line 19) | def __init__(
method __call__ (line 40) | def __call__(self, x):
method forward_batch (line 44) | def forward_batch(self, img_list):
method transform_coords (line 49) | def transform_coords(
method transform_boxes (line 69) | def transform_boxes(
method postprocess_masks (line 79) | def postprocess_masks(self, masks: torch.Tensor, orig_hw) -> torch.Ten...
FILE: sam3/model/utils/sam2_utils.py
function _load_img_as_tensor (line 18) | def _load_img_as_tensor(img_path, image_size):
class AsyncVideoFrameLoader (line 30) | class AsyncVideoFrameLoader:
method __init__ (line 35) | def __init__(
method __getitem__ (line 73) | def __getitem__(self, index):
method __len__ (line 94) | def __len__(self):
function load_video_frames (line 98) | def load_video_frames(
function load_video_frames_from_jpg_images (line 139) | def load_video_frames_from_jpg_images(
function load_video_frames_from_video_file (line 206) | def load_video_frames_from_video_file(
FILE: sam3/model/vitdet.py
function init_t_xy (line 34) | def init_t_xy(
function compute_axial_cis (line 43) | def compute_axial_cis(
function reshape_for_broadcast (line 62) | def reshape_for_broadcast(freqs_cis: torch.Tensor, x: torch.Tensor) -> t...
function apply_rotary_enc (line 70) | def apply_rotary_enc(
function window_partition (line 95) | def window_partition(x: Tensor, window_size: int) -> Tuple[Tensor, Tuple...
function window_unpartition (line 118) | def window_unpartition(
function get_rel_pos (line 144) | def get_rel_pos(q_size: int, k_size: int, rel_pos: Tensor) -> Tensor:
function get_abs_pos (line 177) | def get_abs_pos(
function concat_rel_pos (line 241) | def concat_rel_pos(
class PatchEmbed (line 301) | class PatchEmbed(nn.Module):
method __init__ (line 306) | def __init__(
method forward (line 334) | def forward(self, x: Tensor) -> Tensor:
class Attention (line 341) | class Attention(nn.Module):
method __init__ (line 344) | def __init__(
method _setup_rel_pos (line 396) | def _setup_rel_pos(self, rel_pos_zero_init: bool = True) -> None:
method _setup_rope_freqs (line 423) | def _setup_rope_freqs(self) -> None:
method _apply_rope (line 461) | def _apply_rope(self, q, k) -> Tuple[Tensor, Tensor]:
method forward (line 468) | def forward(self, x: Tensor) -> Tensor:
class Block (line 520) | class Block(nn.Module):
method __init__ (line 523) | def __init__(
method forward (line 599) | def forward(self, x: Tensor) -> Tensor:
class ViT (line 618) | class ViT(nn.Module):
method __init__ (line 625) | def __init__(
method _init_weights (line 806) | def _init_weights(self, m: nn.Module) -> None:
method forward (line 815) | def forward(self, x: torch.Tensor) -> List[torch.Tensor]:
method get_layer_id (line 863) | def get_layer_id(self, layer_name: str) -> int:
method get_num_layers (line 880) | def get_num_layers(self) -> int:
FILE: sam3/model/vl_combiner.py
class SAM3VLBackbone (line 18) | class SAM3VLBackbone(nn.Module):
method __init__ (line 25) | def __init__(
method forward (line 49) | def forward(
method forward_image (line 79) | def forward_image(self, samples: torch.Tensor):
method _forward_image_no_act_ckpt (line 85) | def _forward_image_no_act_ckpt(self, samples):
method forward_text (line 122) | def forward_text(
method _forward_text_no_ack_ckpt (line 133) | def _forward_text_no_ack_ckpt(
FILE: sam3/model_builder.py
function _setup_tf32 (line 49) | def _setup_tf32() -> None:
function _create_position_encoding (line 61) | def _create_position_encoding(precompute_resolution=None):
function _create_vit_backbone (line 72) | def _create_vit_backbone(compile_mode=None):
function _create_vit_neck (line 102) | def _create_vit_neck(position_encoding, vit_backbone, enable_inst_intera...
function _create_vl_backbone (line 113) | def _create_vl_backbone(vit_neck, text_encoder):
function _create_transformer_encoder (line 118) | def _create_transformer_encoder() -> TransformerEncoderFusion:
function _create_transformer_decoder (line 156) | def _create_transformer_decoder() -> TransformerDecoder:
function _create_dot_product_scoring (line 193) | def _create_dot_product_scoring():
function _create_segmentation_head (line 207) | def _create_segmentation_head(compile_mode=None):
function _create_geometry_encoder (line 235) | def _create_geometry_encoder():
function _create_sam3_model (line 291) | def _create_sam3_model(
function _create_tracker_maskmem_backbone (line 333) | def _create_tracker_maskmem_backbone():
function _create_tracker_transformer (line 369) | def _create_tracker_transformer():
function build_tracker (line 434) | def build_tracker(
function _create_text_encoder (line 489) | def _create_text_encoder(bpe_path: str) -> VETextEncoder:
function _create_vision_backbone (line 501) | def _create_vision_backbone(
function _create_sam3_transformer (line 518) | def _create_sam3_transformer(has_presence_token: bool = True) -> Transfo...
function _load_checkpoint (line 526) | def _load_checkpoint(model, checkpoint_path):
function _setup_device_and_mode (line 551) | def _setup_device_and_mode(model, device, eval_mode):
function build_sam3_image_model (line 560) | def build_sam3_image_model(
function download_ckpt_from_hf (line 644) | def download_ckpt_from_hf():
function build_sam3_video_model (line 653) | def build_sam3_video_model(
function build_sam3_video_predictor (line 794) | def build_sam3_video_predictor(*model_args, gpus_to_use=None, **model_kw...
FILE: sam3/perflib/associate_det_trk.py
function associate_det_trk (line 13) | def associate_det_trk(
FILE: sam3/perflib/compile.py
function recursive_fn_factory (line 8) | def recursive_fn_factory(fn):
function compile_wrapper (line 37) | def compile_wrapper(
function shape_logging_wrapper (line 55) | def shape_logging_wrapper(fn, keep_kwargs, enable_logging=False):
FILE: sam3/perflib/connected_components.py
function connected_components_cpu_single (line 20) | def connected_components_cpu_single(values: torch.Tensor):
function connected_components_cpu (line 34) | def connected_components_cpu(input_tensor: torch.Tensor):
function connected_components (line 55) | def connected_components(input_tensor: torch.Tensor):
FILE: sam3/perflib/fa3.py
function flash_attn_func_op (line 9) | def flash_attn_func_op(
function flash_attn_func (line 17) | def flash_attn_func(q, k, v):
function _ (line 23) | def _(q, k, v, **kwargs):
FILE: sam3/perflib/masks_ops.py
function masks_to_boxes (line 8) | def masks_to_boxes(masks: torch.Tensor, obj_ids: list[int]):
function mask_iou (line 50) | def mask_iou(pred_masks: torch.Tensor, gt_masks: torch.Tensor) -> torch....
FILE: sam3/perflib/nms.py
function nms_masks (line 24) | def nms_masks(
function generic_nms (line 56) | def generic_nms(
function generic_nms_cpu (line 75) | def generic_nms_cpu(
FILE: sam3/perflib/tests/tests.py
class TestMasksToBoxes (line 14) | class TestMasksToBoxes:
method test_masks_box (line 15) | def test_masks_box(self):
FILE: sam3/perflib/triton/connected_components.py
function _any_combine (line 12) | def _any_combine(a, b):
function tl_any (line 17) | def tl_any(a, dim=0):
function _init_labels_kernel (line 31) | def _init_labels_kernel(
function find (line 51) | def find(labels_ptr, indices, mask):
function union (line 77) | def union(labels_ptr, a, b, process_mask):
function _merge_helper (line 142) | def _merge_helper(
function _local_prop_kernel (line 206) | def _local_prop_kernel(
function _pointer_jump_kernel (line 321) | def _pointer_jump_kernel(
function _count_labels_kernel (line 365) | def _count_labels_kernel(labels_ptr, sizes_ptr, numel, BLOCK_SIZE: tl.co...
function _broadcast_sizes_kernel (line 380) | def _broadcast_sizes_kernel(
function connected_components_triton (line 398) | def connected_components_triton(input_tensor: torch.Tensor):
FILE: sam3/perflib/triton/nms.py
function _nms_suppression_kernel (line 25) | def _nms_suppression_kernel(
function nms_triton (line 84) | def nms_triton(
FILE: sam3/sam/common.py
class MLPBlock (line 11) | class MLPBlock(nn.Module):
method __init__ (line 12) | def __init__(
method forward (line 23) | def forward(self, x: torch.Tensor) -> torch.Tensor:
class LayerNorm2d (line 29) | class LayerNorm2d(nn.Module):
method __init__ (line 30) | def __init__(self, num_channels: int, eps: float = 1e-6) -> None:
method forward (line 36) | def forward(self, x: torch.Tensor) -> torch.Tensor:
FILE: sam3/sam/mask_decoder.py
class MaskDecoder (line 14) | class MaskDecoder(nn.Module):
method __init__ (line 15) | def __init__(
method forward (line 109) | def forward(
method predict_masks (line 167) | def predict_masks(
method _get_stability_scores (line 246) | def _get_stability_scores(self, mask_logits):
method _dynamic_multimask_via_stability (line 258) | def _dynamic_multimask_via_stability(self, all_mask_logits, all_iou_sc...
class MLP (line 299) | class MLP(nn.Module):
method __init__ (line 300) | def __init__(
method forward (line 316) | def forward(self, x):
FILE: sam3/sam/prompt_encoder.py
class PromptEncoder (line 14) | class PromptEncoder(nn.Module):
method __init__ (line 15) | def __init__(
method get_dense_pe (line 65) | def get_dense_pe(self) -> torch.Tensor:
method _embed_points (line 76) | def _embed_points(
method _embed_boxes (line 120) | def _embed_boxes(self, boxes: torch.Tensor) -> torch.Tensor:
method _embed_masks (line 131) | def _embed_masks(self, masks: torch.Tensor) -> torch.Tensor:
method _get_batch_size (line 136) | def _get_batch_size(
method _get_device (line 154) | def _get_device(self) -> torch.device:
method forward (line 157) | def forward(
class PositionEmbeddingRandom (line 202) | class PositionEmbeddingRandom(nn.Module):
method __init__ (line 207) | def __init__(self, num_pos_feats: int = 64, scale: Optional[float] = N...
method _pe_encoding (line 216) | def _pe_encoding(self, coords: torch.Tensor) -> torch.Tensor:
method forward (line 225) | def forward(self, size: Tuple[int, int]) -> torch.Tensor:
method forward_with_coords (line 238) | def forward_with_coords(
FILE: sam3/sam/rope.py
function init_t_xy (line 19) | def init_t_xy(end_x: int, end_y: int, scale: float = 1.0, offset: int = ...
function compute_axial_cis (line 26) | def compute_axial_cis(
function reshape_for_broadcast (line 50) | def reshape_for_broadcast(freqs_cis: torch.Tensor, x: torch.Tensor):
function apply_rotary_enc (line 58) | def apply_rotary_enc(
function complex_mult (line 83) | def complex_mult(xq_real, xq_imag, freqs_cis_real, freqs_cis_imag):
function apply_rotary_enc_real (line 92) | def apply_rotary_enc_real(
function broadcat (line 120) | def broadcat(tensors, dim=-1):
function rotate_half (line 125) | def rotate_half(x: torch.Tensor):
class VisionRotaryEmbeddingVE (line 132) | class VisionRotaryEmbeddingVE(nn.Module):
method __init__ (line 133) | def __init__(
method forward (line 162) | def forward(self, t: torch.Tensor):
FILE: sam3/sam/transformer.py
class TwoWayTransformer (line 17) | class TwoWayTransformer(nn.Module):
method __init__ (line 18) | def __init__(
method forward (line 63) | def forward(
class TwoWayAttentionBlock (line 110) | class TwoWayAttentionBlock(nn.Module):
method __init__ (line 111) | def __init__(
method forward (line 152) | def forward(
class Attention (line 186) | class Attention(nn.Module):
method __init__ (line 192) | def __init__(
method _separate_heads (line 218) | def _separate_heads(self, x: Tensor, num_heads: int) -> Tensor:
method _recombine_heads (line 223) | def _recombine_heads(self, x: Tensor) -> Tensor:
method forward (line 228) | def forward(self, q: Tensor, k: Tensor, v: Tensor) -> Tensor:
class RoPEAttention (line 267) | class RoPEAttention(Attention):
method __init__ (line 270) | def __init__(
method forward (line 295) | def forward(
FILE: sam3/train/data/coco_json_loaders.py
function convert_boxlist_to_normalized_tensor (line 18) | def convert_boxlist_to_normalized_tensor(box_list, image_width, image_he...
function load_coco_and_group_by_image (line 37) | def load_coco_and_group_by_image(json_path: str) -> Tuple[List[Dict], Di...
function ann_to_rle (line 72) | def ann_to_rle(segm, im_info: Dict) -> Dict:
class COCO_FROM_JSON (line 104) | class COCO_FROM_JSON:
method __init__ (line 110) | def __init__(
method getDatapointIds (line 149) | def getDatapointIds(self):
method loadQueriesAndAnnotationsFromDatapoint (line 153) | def loadQueriesAndAnnotationsFromDatapoint(self, idx):
method loadImagesFromDatapoint (line 255) | def loadImagesFromDatapoint(self, idx):
class SAM3_EVAL_API_FROM_JSON_NP (line 283) | class SAM3_EVAL_API_FROM_JSON_NP:
method __init__ (line 288) | def __init__(self, annotation_file):
method getDatapointIds (line 299) | def getDatapointIds(self):
method loadQueriesAndAnnotationsFromDatapoint (line 303) | def loadQueriesAndAnnotationsFromDatapoint(self, idx):
method loadImagesFromDatapoint (line 342) | def loadImagesFromDatapoint(self, idx):
class SAM3_VEVAL_API_FROM_JSON_NP (line 364) | class SAM3_VEVAL_API_FROM_JSON_NP:
method __init__ (line 369) | def __init__(self, annotation_file):
method getDatapointIds (line 397) | def getDatapointIds(self):
method loadQueriesAndAnnotationsFromDatapoint (line 401) | def loadQueriesAndAnnotationsFromDatapoint(self, idx):
method loadImagesFromDatapoint (line 447) | def loadImagesFromDatapoint(self, idx):
FILE: sam3/train/data/collator.py
function convert_my_tensors (line 22) | def convert_my_tensors(obj):
function packed_to_padded_naive (line 65) | def packed_to_padded_naive(boxes_packed, num_boxes, fill_value=0):
function pad_tensor_list_to_longest (line 91) | def pad_tensor_list_to_longest(
function collate_fn_api_with_chunking (line 107) | def collate_fn_api_with_chunking(
function collate_fn_api (line 137) | def collate_fn_api(
FILE: sam3/train/data/sam3_image_dataset.py
class InferenceMetadata (line 30) | class InferenceMetadata:
class FindQuery (line 58) | class FindQuery:
class FindQueryLoaded (line 91) | class FindQueryLoaded(FindQuery):
class Object (line 97) | class Object:
class Image (line 116) | class Image:
class Datapoint (line 126) | class Datapoint:
class CustomCocoDetectionAPI (line 134) | class CustomCocoDetectionAPI(VisionDataset):
method __init__ (line 148) | def __init__(
method _load_images (line 180) | def _load_images(
method set_curr_epoch (line 226) | def set_curr_epoch(self, epoch: int):
method set_epoch (line 229) | def set_epoch(self, epoch: int):
method set_sharded_annotation_file (line 232) | def set_sharded_annotation_file(self, data_epoch: int):
method __getitem__ (line 253) | def __getitem__(self, index: int) -> Datapoint:
method _load_datapoint (line 256) | def _load_datapoint(self, index: int) -> Datapoint:
method load_queries (line 263) | def load_queries(self, pil_images, annotations, queries, img_metadata):
method __len__ (line 434) | def __len__(self) -> int:
class Sam3ImageDataset (line 438) | class Sam3ImageDataset(CustomCocoDetectionAPI):
method __init__ (line 439) | def __init__(
method __getitem__ (line 486) | def __getitem__(self, idx):
method __orig_getitem__ (line 489) | def __orig_getitem__(self, idx):
FILE: sam3/train/data/sam3_video_dataset.py
class VideoGroundingDataset (line 29) | class VideoGroundingDataset(Sam3ImageDataset):
method __init__ (line 30) | def __init__(
method set_curr_epoch (line 89) | def set_curr_epoch(self, epoch: int):
method _load_datapoint (line 93) | def _load_datapoint(self, index: int) -> Datapoint:
method _sample_stage_ids (line 162) | def _sample_stage_ids(self, queries, num_stages_sample, stage_stride):
method _filter_query_and_anns (line 190) | def _filter_query_and_anns(
method _tile_single_image_data (line 235) | def _tile_single_image_data(self, datapoint: Datapoint, num_stages_sam...
method _subsample_queries (line 301) | def _subsample_queries(self, datapoint: Datapoint, max_query_num: int):
FILE: sam3/train/data/torch_dataset.py
class TorchDataset (line 10) | class TorchDataset:
method __init__ (line 11) | def __init__(
method get_loader (line 37) | def get_loader(self, epoch) -> Iterable:
FILE: sam3/train/loss/loss_fns.py
function instance_masks_to_semantic_masks (line 30) | def instance_masks_to_semantic_masks(
function accuracy (line 60) | def accuracy(output, target, topk=(1,)):
function dice_loss (line 78) | def dice_loss(inputs, targets, num_boxes, loss_on_multimask=False, reduc...
function _dice_loss (line 104) | def _dice_loss(inputs, targets, num_boxes, loss_on_multimask=False, redu...
function sigmoid_focal_loss (line 125) | def sigmoid_focal_loss(
function iou_loss (line 178) | def iou_loss(
function _contrastive_align (line 199) | def _contrastive_align(logits, positive_map):
function _get_src_permutation_idx (line 225) | def _get_src_permutation_idx(indices):
class LossWithWeights (line 234) | class LossWithWeights(nn.Module):
method __init__ (line 235) | def __init__(self, weight_dict, compute_aux, supports_o2m_loss=True):
method forward (line 245) | def forward(self, *args, is_aux=False, **kwargs):
method get_loss (line 252) | def get_loss(self, **kwargs):
method reduce_loss (line 255) | def reduce_loss(self, losses):
class IABCEMdetr (line 266) | class IABCEMdetr(LossWithWeights):
method __init__ (line 267) | def __init__(
method get_loss (line 348) | def get_loss(self, outputs, targets, indices, num_boxes):
class Boxes (line 523) | class Boxes(LossWithWeights):
method __init__ (line 524) | def __init__(
method get_loss (line 536) | def get_loss(self, outputs, targets, indices, num_boxes):
class Masks (line 573) | class Masks(LossWithWeights):
method __init__ (line 574) | def __init__(
method _sampled_loss (line 598) | def _sampled_loss(self, src_masks, target_masks, num_boxes):
method get_loss (line 641) | def get_loss(self, outputs, targets, indices, num_boxes):
function segment_miou (line 991) | def segment_miou(source, target):
class SemanticSegCriterion (line 1005) | class SemanticSegCriterion(LossWithWeights):
method __init__ (line 1006) | def __init__(
method get_loss (line 1028) | def get_loss(self, out_dict, targets):
class Det2TrkAssoc (line 1158) | class Det2TrkAssoc(LossWithWeights):
method __init__ (line 1159) | def __init__(
method get_loss (line 1173) | def get_loss(self, outputs, targets, indices, num_boxes):
class TrackingByDetectionAssoc (line 1234) | class TrackingByDetectionAssoc(LossWithWeights):
method __init__ (line 1235) | def __init__(self, weight_dict):
method get_loss (line 1240) | def get_loss(self, outputs, targets, indices, num_boxes):
function _keep_only_trk_queries_in_match_inds (line 1313) | def _keep_only_trk_queries_in_match_inds(inds, Q_det):
FILE: sam3/train/loss/mask_sampling.py
function point_sample (line 12) | def point_sample(input, point_coords, **kwargs):
function get_uncertain_point_coords_with_randomness (line 40) | def get_uncertain_point_coords_with_randomness(
function calculate_uncertainty (line 104) | def calculate_uncertainty(logits: torch.Tensor) -> torch.Tensor:
FILE: sam3/train/loss/sam3_loss.py
class DummyLoss (line 12) | class DummyLoss(torch.nn.Module):
method __init__ (line 15) | def __init__(
method forward (line 25) | def forward(self, *args, **kwargs):
method accumulate (line 28) | def accumulate(self, out_dict):
class Sam3LossWrapper (line 37) | class Sam3LossWrapper(torch.nn.Module):
method __init__ (line 38) | def __init__(
method _get_num_boxes (line 65) | def _get_num_boxes(self, targets):
method compute_loss (line 83) | def compute_loss(self, nested_out, targets):
method forward (line 161) | def forward(self, find_stages: SAM3Output, find_targets):
FILE: sam3/train/loss/sigmoid_focal_loss.py
function _inner_focal_loss_fwd (line 38) | def _inner_focal_loss_fwd(inputs, targets, alpha, gamma):
function sigmoid_focal_loss_fwd_kernel (line 77) | def sigmoid_focal_loss_fwd_kernel(
function sigmoid_focal_loss_fwd_kernel_reduce (line 103) | def sigmoid_focal_loss_fwd_kernel_reduce(
function _inner_focal_loss_bwd (line 131) | def _inner_focal_loss_bwd(inputs, targets, alpha, gamma):
function sigmoid_focal_loss_bwd_kernel (line 160) | def sigmoid_focal_loss_bwd_kernel(
function sigmoid_focal_loss_bwd_kernel_reduce (line 187) | def sigmoid_focal_loss_bwd_kernel_reduce(
class SigmoidFocalLoss (line 213) | class SigmoidFocalLoss(torch.autograd.Function):
method forward (line 217) | def forward(ctx, inputs, targets, alpha=0.25, gamma=2):
method backward (line 234) | def backward(ctx, grad_output):
class SigmoidFocalLossReduced (line 265) | class SigmoidFocalLossReduced(torch.autograd.Function):
method forward (line 270) | def forward(ctx, inputs, targets, alpha=0.25, gamma=2):
method backward (line 297) | def backward(ctx, grad_output):
FILE: sam3/train/masks_ops.py
function instance_masks_to_semantic_masks (line 13) | def instance_masks_to_semantic_masks(
function mask_intersection (line 39) | def mask_intersection(masks1, masks2, block_size=16):
function mask_iom (line 59) | def mask_iom(masks1, masks2):
function compute_boundary (line 74) | def compute_boundary(seg):
function dilation (line 95) | def dilation(mask, kernel_size):
function compute_F_measure (line 127) | def compute_F_measure(
function rle_encode (line 163) | def rle_encode(orig_mask, return_areas=False):
function robust_rle_encode (line 234) | def robust_rle_encode(masks):
function ann_to_rle (line 255) | def ann_to_rle(segm, im_info):
FILE: sam3/train/matcher.py
function _do_matching (line 16) | def _do_matching(cost, repeats=1, return_tgt_indices=False, do_filtering...
class HungarianMatcher (line 33) | class HungarianMatcher(nn.Module):
method __init__ (line 41) | def __init__(
method forward (line 70) | def forward(self, outputs, batched_targets):
class BinaryHungarianMatcher (line 173) | class BinaryHungarianMatcher(nn.Module):
method __init__ (line 181) | def __init__(
method forward (line 204) | def forward(self, outputs, batched_targets, repeats=0, repeat_batch=1):
class BinaryFocalHungarianMatcher (line 292) | class BinaryFocalHungarianMatcher(nn.Module):
method __init__ (line 300) | def __init__(
method forward (line 329) | def forward(self, outputs, batched_targets, repeats=1, repeat_batch=1):
class BinaryHungarianMatcherV2 (line 432) | class BinaryHungarianMatcherV2(nn.Module):
method __init__ (line 445) | def __init__(
method forward (line 483) | def forward(
class BinaryOneToManyMatcher (line 672) | class BinaryOneToManyMatcher(nn.Module):
method __init__ (line 681) | def __init__(
method forward (line 702) | def forward(
FILE: sam3/train/nms_helper.py
function is_zero_box (line 22) | def is_zero_box(bbox: list) -> bool:
function convert_bbox_format (line 29) | def convert_bbox_format(bbox: list) -> List[float]:
function process_track_level_nms (line 36) | def process_track_level_nms(video_groups: Dict, nms_threshold: float) ->...
function process_frame_level_nms (line 79) | def process_frame_level_nms(video_groups: Dict, nms_threshold: float) ->...
function compute_track_iou_matrix (line 121) | def compute_track_iou_matrix(
function _compute_track_iou_matrix_numba (line 160) | def _compute_track_iou_matrix_numba(bboxes_stacked, valid_masks, areas):
function apply_track_nms (line 190) | def apply_track_nms(
function compute_frame_ious (line 216) | def compute_frame_ious(bbox: np.ndarray, bboxes: np.ndarray) -> np.ndarray:
function _compute_frame_ious_numba (line 241) | def _compute_frame_ious_numba(bbox, bboxes):
function apply_frame_nms (line 259) | def apply_frame_nms(
function _apply_frame_nms_numba (line 289) | def _apply_frame_nms_numba(bboxes, scores, nms_threshold):
FILE: sam3/train/optim/optimizer.py
class Optimizer (line 31) | class Optimizer:
method __init__ (line 32) | def __init__(self, optimizer, schedulers=None) -> None:
method _validate_optimizer_schedulers (line 38) | def _validate_optimizer_schedulers(self):
method step_schedulers (line 49) | def step_schedulers(self, where: float, step: int) -> None:
method step (line 67) | def step(self, where, step, closure=None):
method zero_grad (line 71) | def zero_grad(self, *args, **kwargs):
function set_default_parameters (line 75) | def set_default_parameters(
function name_constraints_to_parameters (line 109) | def name_constraints_to_parameters(
function map_scheduler_cfgs_to_param_groups (line 128) | def map_scheduler_cfgs_to_param_groups(
function validate_param_group_params (line 169) | def validate_param_group_params(param_groups: List[Dict], model: nn.Modu...
function unix_module_cls_pattern_to_parameter_names (line 191) | def unix_module_cls_pattern_to_parameter_names(
function unix_param_pattern_to_parameter_names (line 224) | def unix_param_pattern_to_parameter_names(
function _unix_pattern_to_parameter_names (line 250) | def _unix_pattern_to_parameter_names(
function get_module_cls_to_param_names (line 272) | def get_module_cls_to_param_names(
function construct_optimizer (line 296) | def construct_optimizer(
function get_full_parameter_name (line 371) | def get_full_parameter_name(module_name, param_name):
class GradientClipper (line 377) | class GradientClipper:
method __init__ (line 382) | def __init__(self, max_norm: float = 1.0, norm_type: int = 2):
method __call__ (line 387) | def __call__(self, model: nn.Module):
class ValueScaler (line 396) | class ValueScaler:
method __init__ (line 397) | def __init__(self, scheduler, mult_val: float):
method __call__ (line 401) | def __call__(self, *args, **kwargs):
function rgetattr (line 406) | def rgetattr(obj, rattrs: str = None):
function layer_decay_param_modifier (line 419) | def layer_decay_param_modifier(
FILE: sam3/train/optim/schedulers.py
class InverseSquareRootParamScheduler (line 8) | class InverseSquareRootParamScheduler:
method __init__ (line 9) | def __init__(
method __call__ (line 21) | def __call__(self, step: int, where: float):
FILE: sam3/train/train.py
class SlurmEvent (line 26) | class SlurmEvent:
function handle_custom_resolving (line 34) | def handle_custom_resolving(cfg):
function single_proc_run (line 44) | def single_proc_run(local_rank, main_port, cfg, world_size):
function single_node_runner (line 60) | def single_node_runner(cfg, main_port: int):
function format_exception (line 80) | def format_exception(e: Exception, limit=20):
class SubmititRunner (line 85) | class SubmititRunner(submitit.helpers.Checkpointable):
method __init__ (line 88) | def __init__(self, port, cfg):
method run_trainer (line 93) | def run_trainer(self):
method __call__ (line 111) | def __call__(self):
method setup_job_info (line 122) | def setup_job_info(self, job_id, rank):
function add_pythonpath_to_sys_path (line 134) | def add_pythonpath_to_sys_path():
function main (line 140) | def main(args) -> None:
FILE: sam3/train/trainer.py
function unwrap_ddp_if_wrapped (line 57) | def unwrap_ddp_if_wrapped(model):
class OptimAMPConf (line 64) | class OptimAMPConf:
class OptimConf (line 70) | class OptimConf:
method __post_init__ (line 78) | def __post_init__(self):
class DistributedConf (line 88) | class DistributedConf:
class CudaConf (line 98) | class CudaConf:
class CheckpointConf (line 109) | class CheckpointConf:
method infer_missing (line 120) | def infer_missing(self):
class LoggingConf (line 128) | class LoggingConf:
class Trainer (line 141) | class Trainer:
method __init__ (line 148) | def __init__(
method _setup_timers (line 239) | def _setup_timers(self):
method _get_meters (line 247) | def _get_meters(self, phase_filters=None):
method _infer_distributed_backend_if_none (line 261) | def _infer_distributed_backend_if_none(self, distributed_conf, acceler...
method _setup_env_variables (line 265) | def _setup_env_variables(self, env_variables_conf) -> None:
method _setup_torch_dist_and_backend (line 270) | def _setup_torch_dist_and_backend(self, cuda_conf, distributed_conf) -...
method _setup_device (line 289) | def _setup_device(self, accelerator):
method _setup_ddp_distributed_training (line 299) | def _setup_ddp_distributed_training(self, distributed_conf, accelerator):
method _move_to_device (line 322) | def _move_to_device(self):
method save_checkpoint (line 333) | def save_checkpoint(self, epoch, checkpoint_names=None):
method _save_checkpoint (line 377) | def _save_checkpoint(self, checkpoint, checkpoint_path):
method load_checkpoint (line 396) | def load_checkpoint(self):
method _init_model_state (line 405) | def _init_model_state(self):
method _call_model_initializer (line 426) | def _call_model_initializer(self):
method _load_resuming_checkpoint (line 436) | def _load_resuming_checkpoint(self, ckpt_path: str):
method is_intermediate_val_epoch (line 461) | def is_intermediate_val_epoch(self, epoch):
method _find_loss (line 469) | def _find_loss(self, key: str):
method _find_meter (line 479) | def _find_meter(self, phase: str, key: str):
method _step (line 488) | def _step(
method run (line 552) | def run(self):
method _setup_dataloaders (line 570) | def _setup_dataloaders(self):
method run_train (line 580) | def run_train(self):
method run_val (line 622) | def run_val(self):
method val_epoch (line 639) | def val_epoch(self, val_loader, phase):
method _get_trainer_state (line 753) | def _get_trainer_state(self, phase):
method train_epoch (line 760) | def train_epoch(self, train_loader):
method _log_sync_data_times (line 890) | def _log_sync_data_times(self, phase, data_times):
method _run_step (line 901) | def _run_step(
method _log_meters_and_save_best_ckpts (line 968) | def _log_meters_and_save_best_ckpts(self, phases: List[str]):
method _log_timers (line 1000) | def _log_timers(self, phase):
method _reset_meters (line 1029) | def _reset_meters(self, phases: str) -> None:
method _check_val_key_match (line 1033) | def _check_val_key_match(self, val_keys, phase):
method _setup_components (line 1056) | def _setup_components(self):
method _construct_optimizers (line 1101) | def _construct_optimizers(self):
method _log_loss_detailed_and_return_core_loss (line 1109) | def _log_loss_detailed_and_return_core_loss(self, loss, loss_str, step):
function print_model_summary (line 1118) | def print_model_summary(model: torch.nn.Module, log_dir: str = ""):
function get_human_readable_count (line 1156) | def get_human_readable_count(number: int) -> str:
FILE: sam3/train/transforms/basic.py
function crop (line 21) | def crop(image, target, region):
function hflip (line 73) | def hflip(image, target):
function resize (line 108) | def resize(image, target, size, max_size=None, square=False):
function pad (line 182) | def pad(image, target, padding):
class RandomCrop (line 223) | class RandomCrop:
method __init__ (line 224) | def __init__(self, size):
method __call__ (line 227) | def __call__(self, img, target):
class RandomSizeCrop (line 232) | class RandomSizeCrop:
method __init__ (line 233) | def __init__(self, min_size: int, max_size: int, respect_boxes: bool =...
method __call__ (line 238) | def __call__(self, img: PIL.Image.Image, target: dict):
class CenterCrop (line 292) | class CenterCrop:
method __init__ (line 293) | def __init__(self, size):
method __call__ (line 296) | def __call__(self, img, target):
class RandomHorizontalFlip (line 304) | class RandomHorizontalFlip:
method __init__ (line 305) | def __init__(self, p=0.5):
method __call__ (line 308) | def __call__(self, img, target):
class RandomResize (line 314) | class RandomResize:
method __init__ (line 315) | def __init__(self, sizes, max_size=None, square=False):
method __call__ (line 323) | def __call__(self, img, target=None):
class RandomPad (line 328) | class RandomPad:
method __init__ (line 329) | def __init__(self, max_pad):
method __call__ (line 332) | def __call__(self, img, target):
class PadToSize (line 338) | class PadToSize:
method __init__ (line 339) | def __init__(self, size):
method __call__ (line 342) | def __call__(self, img, target):
class Identity (line 354) | class Identity:
method __call__ (line 355) | def __call__(self, img, target):
class RandomSelect (line 359) | class RandomSelect:
method __init__ (line 365) | def __init__(self, transforms1=None, transforms2=None, p=0.5):
method __call__ (line 370) | def __call__(self, img, target):
class ToTensor (line 376) | class ToTensor:
method __call__ (line 377) | def __call__(self, img, target):
class RandomErasing (line 381) | class RandomErasing:
method __init__ (line 382) | def __init__(self, *args, **kwargs):
method __call__ (line 385) | def __call__(self, img, target):
class Normalize (line 389) | class Normalize:
method __init__ (line 390) | def __init__(self, mean, std):
method __call__ (line 394) | def __call__(self, image, target=None):
class RemoveDifficult (line 413) | class RemoveDifficult:
method __init__ (line 414) | def __init__(self, enabled=False):
method __call__ (line 417) | def __call__(self, image, target=None):
class Compose (line 429) | class Compose:
method __init__ (line 430) | def __init__(self, transforms):
method __call__ (line 433) | def __call__(self, image, target):
method __repr__ (line 438) | def __repr__(self):
function get_random_resize_scales (line 447) | def get_random_resize_scales(size, min_size, rounded):
function get_random_resize_max_size (line 454) | def get_random_resize_max_size(size, ratio=5 / 3):
FILE: sam3/train/transforms/basic_for_api.py
function crop (line 25) | def crop(
function hflip (line 115) | def hflip(datapoint, index):
function get_size_with_aspect_ratio (line 144) | def get_size_with_aspect_ratio(image_size, size, max_size=None):
function resize (line 165) | def resize(datapoint, index, size, max_size=None, square=False, v2=False):
function pad (line 239) | def pad(datapoint, index, padding, v2=False):
class RandomSizeCropAPI (line 328) | class RandomSizeCropAPI:
method __init__ (line 329) | def __init__(
method _sample_no_respect_boxes (line 347) | def _sample_no_respect_boxes(self, img):
method _sample_respect_boxes (line 352) | def _sample_respect_boxes(self, img, boxes, points, min_box_size=10.0):
method __call__ (line 411) | def __call__(self, datapoint, **kwargs):
class CenterCropAPI (line 540) | class CenterCropAPI:
method __init__ (line 541) | def __init__(self, size, consistent_transform, recompute_box_from_mask...
method _sample_crop (line 546) | def _sample_crop(self, image_width, image_height):
method __call__ (line 552) | def __call__(self, datapoint, **kwargs):
class RandomHorizontalFlip (line 582) | class RandomHorizontalFlip:
method __init__ (line 583) | def __init__(self, consistent_transform, p=0.5):
method __call__ (line 587) | def __call__(self, datapoint, **kwargs):
class RandomResizeAPI (line 599) | class RandomResizeAPI:
method __init__ (line 600) | def __init__(
method __call__ (line 612) | def __call__(self, datapoint, **kwargs):
class ScheduledRandomResizeAPI (line 628) | class ScheduledRandomResizeAPI(RandomResizeAPI):
method __init__ (line 629) | def __init__(self, size_scheduler, consistent_transform, square=False):
method __call__ (line 636) | def __call__(self, datapoint, **kwargs):
class RandomPadAPI (line 646) | class RandomPadAPI:
method __init__ (line 647) | def __init__(self, max_pad, consistent_transform):
method _sample_pad (line 651) | def _sample_pad(self):
method __call__ (line 656) | def __call__(self, datapoint, **kwargs):
class PadToSizeAPI (line 669) | class PadToSizeAPI:
method __init__ (line 670) | def __init__(self, size, consistent_transform, bottom_right=False, v2=...
method _sample_pad (line 676) | def _sample_pad(self, w, h):
method __call__ (line 686) | def __call__(self, datapoint, **kwargs):
class RandomMosaicVideoAPI (line 714) | class RandomMosaicVideoAPI:
method __init__ (line 715) | def __init__(self, prob=0.15, grid_h=2, grid_w=2, use_random_hflip=Fal...
method __call__ (line 721) | def __call__(self, datapoint, **kwargs):
function random_mosaic_frame (line 747) | def random_mosaic_frame(
class ScheduledPadToSizeAPI (line 832) | class ScheduledPadToSizeAPI(PadToSizeAPI):
method __init__ (line 833) | def __init__(self, size_scheduler, consistent_transform):
method __call__ (line 838) | def __call__(self, datapoint, **kwargs):
class IdentityAPI (line 845) | class IdentityAPI:
method __call__ (line 846) | def __call__(self, datapoint, **kwargs):
class RandomSelectAPI (line 850) | class RandomSelectAPI:
method __init__ (line 856) | def __init__(self, transforms1=None, transforms2=None, p=0.5):
method __call__ (line 861) | def __call__(self, datapoint, **kwargs):
class ToTensorAPI (line 867) | class ToTensorAPI:
method __init__ (line 868) | def __init__(self, v2=False):
method __call__ (line 871) | def __call__(self, datapoint: Datapoint, **kwargs):
class NormalizeAPI (line 882) | class NormalizeAPI:
method __init__ (line 883) | def __init__(self, mean, std, v2=False):
method __call__ (line 888) | def __call__(self, datapoint: Datapoint, **kwargs):
class ComposeAPI (line 922) | class ComposeAPI:
method __init__ (line 923) | def __init__(self, transforms):
method __call__ (line 926) | def __call__(self, datapoint, **kwargs):
method __repr__ (line 931) | def __repr__(self):
class RandomGrayscale (line 940) | class RandomGrayscale:
method __init__ (line 941) | def __init__(self, consistent_transform, p=0.5):
method __call__ (line 946) | def __call__(self, datapoint: Datapoint, **kwargs):
class ColorJitter (line 958) | class ColorJitter:
method __init__ (line 959) | def __init__(self, consistent_transform, brightness, contrast, saturat...
method __call__ (line 978) | def __call__(self, datapoint: Datapoint, **kwargs):
class RandomAffine (line 1013) | class RandomAffine:
method __init__ (line 1014) | def __init__(
method __call__ (line 1048) | def __call__(self, datapoint: Datapoint, **kwargs):
method transform_datapoint (line 1060) | def transform_datapoint(self, datapoint: Datapoint):
class RandomResizedCrop (line 1123) | class RandomResizedCrop:
method __init__ (line 1124) | def __init__(
method __call__ (line 1154) | def __call__(self, datapoint: Datapoint, **kwargs):
method transform_datapoint (line 1166) | def transform_datapoint(self, datapoint: Datapoint):
class ResizeToMaxIfAbove (line 1231) | class ResizeToMaxIfAbove:
method __init__ (line 1233) | def __init__(
method __call__ (line 1239) | def __call__(self, datapoint: Datapoint, **kwargs):
function get_bbox_xyxy_abs_coords_from_mask (line 1269) | def get_bbox_xyxy_abs_coords_from_mask(mask):
class MotionBlur (line 1288) | class MotionBlur:
method __init__ (line 1289) | def __init__(self, kernel_size=5, consistent_transform=True, p=0.5):
method __call__ (line 1295) | def __call__(self, datapoint: Datapoint, **kwargs):
method _generate_motion_blur_kernel (line 1309) | def _generate_motion_blur_kernel(self):
method _apply_motion_blur (line 1322) | def _apply_motion_blur(self, image, kernel):
class LargeScaleJitter (line 1336) | class LargeScaleJitter:
method __init__ (line 1337) | def __init__(
method __call__ (line 1359) | def __call__(self, datapoint: Datapoint, **kwargs):
FILE: sam3/train/transforms/filter_query_transforms.py
class FilterDataPointQueries (line 14) | class FilterDataPointQueries:
method identify_queries_to_filter (line 19) | def identify_queries_to_filter(self, datapoint: Datapoint) -> None:
method _do_filter_query (line 25) | def _do_filter_query(self, query: Union[FindQuery], query_id: int):
class FilterQueryWithText (line 31) | class FilterQueryWithText(FilterDataPointQueries):
method __init__ (line 36) | def __init__(
method identify_queries_to_filter (line 42) | def identify_queries_to_filter(self, datapoint):
class KeepMaxNumFindQueries (line 53) | class KeepMaxNumFindQueries(FilterDataPointQueries):
method __init__ (line 54) | def __init__(
method identify_queries_to_filter (line 60) | def identify_queries_to_filter(self, datapoint: Datapoint) -> None:
class KeepMaxNumFindQueriesVideo (line 104) | class KeepMaxNumFindQueriesVideo(FilterDataPointQueries):
method __init__ (line 105) | def __init__(
method identify_queries_to_filter (line 115) | def identify_queries_to_filter(self, datapoint: Datapoint) -> None:
class KeepSemanticFindQueriesOnly (line 195) | class KeepSemanticFindQueriesOnly(FilterDataPointQueries):
method identify_queries_to_filter (line 196) | def identify_queries_to_filter(self, datapoint: Datapoint) -> None:
class KeepUnaryFindQueriesOnly (line 205) | class KeepUnaryFindQueriesOnly(FilterDataPointQueries):
method identify_queries_to_filter (line 206) | def identify_queries_to_filter(self, datapoint: Datapoint) -> None:
class FilterZeroBoxQueries (line 213) | class FilterZeroBoxQueries(FilterDataPointQueries):
method _is_zero_area_object (line 219) | def _is_zero_area_object(obj: Object):
method identify_queries_to_filter (line 227) | def identify_queries_to_filter(self, datapoint):
class FilterFindQueriesWithTooManyOut (line 249) | class FilterFindQueriesWithTooManyOut(FilterDataPointQueries):
method __init__ (line 254) | def __init__(self, max_num_objects: int):
method identify_queries_to_filter (line 257) | def identify_queries_to_filter(self, datapoint):
class FilterEmptyTargets (line 269) | class FilterEmptyTargets(FilterDataPointQueries):
method identify_queries_to_filter (line 274) | def identify_queries_to_filter(self, datapoint):
class FilterNonExhaustiveFindQueries (line 284) | class FilterNonExhaustiveFindQueries(FilterDataPointQueries):
method __init__ (line 289) | def __init__(self, exhaustivity_type: str):
method identify_queries_to_filter (line 300) | def identify_queries_to_filter(self, datapoint):
class FilterInvalidGeometricQueries (line 320) | class FilterInvalidGeometricQueries(FilterDataPointQueries):
method identify_queries_to_filter (line 325) | def identify_queries_to_filter(self, datapoint):
class FlexibleFilterFindGetQueries (line 337) | class FlexibleFilterFindGetQueries:
method __init__ (line 338) | def __init__(
method __call__ (line 344) | def __call__(self, datapoint, **kwargs):
class AddPrefixSuffixToFindText (line 465) | class AddPrefixSuffixToFindText:
method __init__ (line 473) | def __init__(
method __call__ (line 494) | def __call__(self, datapoint, **kwargs):
class FilterCrowds (line 518) | class FilterCrowds(FilterDataPointQueries):
method identify_queries_to_filter (line 519) | def identify_queries_to_filter(self, datapoint: Datapoint) -> None:
class TextQueryToVisual (line 532) | class TextQueryToVisual:
method __init__ (line 537) | def __init__(self, probability, keep_text_queries=False) -> None:
method __call__ (line 542) | def __call__(self, datapoint: Datapoint, **kwargs):
class RemoveInputBoxes (line 570) | class RemoveInputBoxes:
method __init__ (line 575) | def __init__(self) -> None:
method __call__ (line 578) | def __call__(self, datapoint: Datapoint, **kwargs):
class OverwriteTextQuery (line 590) | class OverwriteTextQuery:
method __init__ (line 595) | def __init__(self, target_text, probability=1.0) -> None:
method __call__ (line 600) | def __call__(self, datapoint: Datapoint, **kwargs):
FILE: sam3/train/transforms/point_sampling.py
function sample_points_from_rle (line 14) | def sample_points_from_rle(rle, n_points, mode, box=None, normalize=True):
function sample_points_from_mask (line 35) | def sample_points_from_mask(mask, n_points, mode, box=None):
function uniform_positive_sample (line 48) | def uniform_positive_sample(mask, n_points):
function center_positive_sample (line 67) | def center_positive_sample(mask, n_points):
function uniform_sample_from_box (line 96) | def uniform_sample_from_box(mask, box, n_points):
function rescale_box_xyxy (line 115) | def rescale_box_xyxy(box, factor, imsize=None):
function noise_box (line 137) | def noise_box(box, im_size, box_noise_std, box_noise_max, min_box_area):
class RandomGeometricInputsAPI (line 157) | class RandomGeometricInputsAPI:
method __init__ (line 196) | def __init__(
method _sample_num_points_and_if_box (line 229) | def _sample_num_points_and_if_box(self):
method _get_original_box (line 243) | def _get_original_box(self, target_object):
method _get_target_object (line 249) | def _get_target_object(self, datapoint, query):
method __call__ (line 258) | def __call__(self, datapoint, **kwargs):
class RandomizeInputBbox (line 310) | class RandomizeInputBbox:
method __init__ (line 315) | def __init__(
method __call__ (line 325) | def __call__(self, datapoint: Datapoint, **kwargs):
FILE: sam3/train/transforms/segmentation.py
class InstanceToSemantic (line 14) | class InstanceToSemantic(object):
method __init__ (line 17) | def __init__(self, delete_instance=True, use_rle=False):
method __call__ (line 21) | def __call__(self, datapoint: Datapoint, **kwargs):
class RecomputeBoxesFromMasks (line 68) | class RecomputeBoxesFromMasks:
method __call__ (line 71) | def __call__(self, datapoint: Datapoint, **kwargs):
class DecodeRle (line 82) | class DecodeRle:
method __call__ (line 90) | def __call__(self, datapoint: Datapoint, **kwargs):
FILE: sam3/train/utils/checkpoint_utils.py
function unix_pattern_to_parameter_names (line 29) | def unix_pattern_to_parameter_names(
function filter_params_matching_unix_pattern (line 46) | def filter_params_matching_unix_pattern(
function exclude_params_matching_unix_pattern (line 67) | def exclude_params_matching_unix_pattern(
function _get_state_dict_summary (line 88) | def _get_state_dict_summary(state_dict: Dict[str, torch.Tensor]):
function assert_skipped_parameters_are_frozen (line 98) | def assert_skipped_parameters_are_frozen(model: nn.Module, patterns: Lis...
function with_check_parameter_frozen (line 122) | def with_check_parameter_frozen(
class CkptExcludeKernel (line 163) | class CkptExcludeKernel:
method __init__ (line 172) | def __init__(self, key_pattern: List[str]):
method __call__ (line 175) | def __call__(self, state_dict: Dict):
function load_checkpoint (line 188) | def load_checkpoint(
function get_state_dict (line 226) | def get_state_dict(checkpoint, ckpt_state_dict_keys):
function load_checkpoint_and_apply_kernels (line 246) | def load_checkpoint_and_apply_kernels(
function check_load_state_dict_errors (line 296) | def check_load_state_dict_errors(
function load_state_dict_into_model (line 329) | def load_state_dict_into_model(
FILE: sam3/train/utils/distributed.py
function _get_global_gloo_group (line 35) | def _get_global_gloo_group():
function is_main_process (line 54) | def is_main_process():
function all_gather_via_filesys (line 59) | def all_gather_via_filesys(data, filesys_save_dir=None, gather_to_rank_0...
function all_gather (line 118) | def all_gather(data, force_cpu=False, force_filesys=False, filesys_save_...
function convert_to_distributed_tensor (line 190) | def convert_to_distributed_tensor(tensor: torch.Tensor) -> Tuple[torch.T...
function convert_to_normal_tensor (line 206) | def convert_to_normal_tensor(tensor: torch.Tensor, orig_device: str) -> ...
function is_distributed_training_run (line 216) | def is_distributed_training_run() -> bool:
function is_primary (line 224) | def is_primary() -> bool:
function all_reduce_mean (line 232) | def all_reduce_mean(tensor: torch.Tensor) -> torch.Tensor:
function all_reduce_sum (line 244) | def all_reduce_sum(tensor: torch.Tensor) -> torch.Tensor:
function all_reduce_min (line 253) | def all_reduce_min(tensor: torch.Tensor) -> torch.Tensor:
function all_reduce_max (line 262) | def all_reduce_max(tensor: torch.Tensor) -> torch.Tensor:
function all_reduce_op (line 271) | def all_reduce_op(
function gather_tensors_from_all (line 290) | def gather_tensors_from_all(tensor: torch.Tensor) -> List[torch.Tensor]:
function gather_from_all (line 316) | def gather_from_all(tensor: torch.Tensor) -> torch.Tensor:
function broadcast (line 322) | def broadcast(tensor: torch.Tensor, src: int = 0) -> torch.Tensor:
function barrier (line 334) | def barrier() -> None:
function get_world_size (line 344) | def get_world_size() -> int:
function get_rank (line 356) | def get_rank() -> int:
function get_primary_rank (line 368) | def get_primary_rank() -> int:
function set_cuda_device_index (line 372) | def set_cuda_device_index(idx: int) -> None:
function set_cpu_device (line 378) | def set_cpu_device() -> None:
function get_cuda_device_index (line 383) | def get_cuda_device_index() -> int:
function init_distributed_data_parallel_model (line 387) | def init_distributed_data_parallel_model(
function broadcast_object (line 415) | def broadcast_object(obj: Any, src: int = _PRIMARY_RANK, use_disk: bool ...
function all_gather_tensor (line 455) | def all_gather_tensor(tensor: torch.Tensor, world_size=None):
function all_gather_batch (line 469) | def all_gather_batch(tensors: List[torch.Tensor]):
class GatherLayer (line 489) | class GatherLayer(autograd.Function):
method forward (line 496) | def forward(ctx, x):
method backward (line 502) | def backward(ctx, *grads):
function all_gather_batch_with_grad (line 508) | def all_gather_batch_with_grad(tensors):
function unwrap_ddp_if_wrapped (line 530) | def unwrap_ddp_if_wrapped(model):
function create_new_process_group (line 536) | def create_new_process_group(group_size):
function is_dist_avail_and_initialized (line 575) | def is_dist_avail_and_initialized():
function gather_to_rank_0_via_filesys (line 583) | def gather_to_rank_0_via_filesys(data, filesys_save_dir=None):
FILE: sam3/train/utils/logger.py
function make_tensorboard_logger (line 22) | def make_tensorboard_logger(log_dir: str, **writer_kwargs: Any):
class TensorBoardWriterWrapper (line 30) | class TensorBoardWriterWrapper:
method __init__ (line 35) | def __init__(
method writer (line 77) | def writer(self) -> Optional[SummaryWriter]:
method path (line 81) | def path(self) -> str:
method flush (line 84) | def flush(self) -> None:
method close (line 92) | def close(self) -> None:
class TensorBoardLogger (line 104) | class TensorBoardLogger(TensorBoardWriterWrapper):
method log_dict (line 109) | def log_dict(self, payload: Dict[str, Scalar], step: int) -> None:
method log (line 121) | def log(self, name: str, data: Scalar, step: int) -> None:
method log_hparams (line 133) | def log_hparams(
class Logger (line 147) | class Logger:
method __init__ (line 152) | def __init__(self, logging_conf):
method log_dict (line 158) | def log_dict(self, payload: Dict[str, Scalar], step: int) -> None:
method log (line 162) | def log(self, name: str, data: Scalar, step: int) -> None:
method log_hparams (line 166) | def log_hparams(
function _cached_log_stream (line 176) | def _cached_log_stream(filename):
function setup_logging (line 185) | def setup_logging(
function shutdown_logging (line 234) | def shutdown_logging():
FILE: sam3/train/utils/train_utils.py
function multiply_all (line 22) | def multiply_all(*args):
function collect_dict_keys (line 26) | def collect_dict_keys(config):
class Phase (line 44) | class Phase:
function register_omegaconf_resolvers (line 49) | def register_omegaconf_resolvers():
function setup_distributed_backend (line 64) | def setup_distributed_backend(backend, timeout_mins):
function get_machine_local_and_dist_rank (line 79) | def get_machine_local_and_dist_rank():
function print_cfg (line 91) | def print_cfg(cfg):
function set_seeds (line 99) | def set_seeds(seed_value, max_epochs, dist_rank):
function makedir (line 114) | def makedir(dir_path):
function is_dist_avail_and_initialized (line 128) | def is_dist_avail_and_initialized():
function get_amp_type (line 136) | def get_amp_type(amp_type: Optional[str] = None):
function log_env_variables (line 146) | def log_env_variables():
class AverageMeter (line 156) | class AverageMeter:
method __init__ (line 159) | def __init__(self, name, device, fmt=":f"):
method reset (line 165) | def reset(self):
method update (line 172) | def update(self, val, n=1):
method __str__ (line 178) | def __str__(self):
class MemMeter (line 183) | class MemMeter:
method __init__ (line 186) | def __init__(self, name, device, fmt=":f"):
method reset (line 192) | def reset(self):
method update (line 200) | def update(self, n=1, reset_peak_usage=True):
method __str__ (line 209) | def __str__(self):
function human_readable_time (line 222) | def human_readable_time(time_seconds):
class DurationMeter (line 230) | class DurationMeter:
method __init__ (line 231) | def __init__(self, name, device, fmt=":f"):
method reset (line 237) | def reset(self):
method update (line 240) | def update(self, val):
method add (line 243) | def add(self, val):
method __str__ (line 246) | def __str__(self):
class ProgressMeter (line 250) | class ProgressMeter:
method __init__ (line 251) | def __init__(self, num_batches, meters, real_meters, prefix=""):
method display (line 257) | def display(self, batch, enable_print=False):
method _get_batch_fmtstr (line 273) | def _get_batch_fmtstr(self, num_batches):
function get_resume_checkpoint (line 279) | def get_resume_checkpoint(checkpoint_save_dir):
FILE: sam3/visualization_utils.py
function generate_colors (line 24) | def generate_colors(n_colors=256, n_samples=5000):
function show_img_tensor (line 47) | def show_img_tensor(img_batch, vis_img_idx=0):
function draw_box_on_image (line 58) | def draw_box_on_image(image, box, color=(0, 255, 0)):
function plot_bbox (line 92) | def plot_bbox(
function plot_mask (line 147) | def plot_mask(mask, color="r", ax=None):
function normalize_bbox (line 158) | def normalize_bbox(bbox_xywh, img_w, img_h):
function visualize_frame_output (line 184) | def visualize_frame_output(frame_idx, video_frames, outputs, figsize=(12...
function visualize_formatted_frame_output (line 207) | def visualize_formatted_frame_output(
function render_masklet_frame (line 390) | def render_masklet_frame(img, outputs, frame_idx=None, alpha=0.5):
function save_masklet_video (line 468) | def save_masklet_video(video_frames, outputs, out_path, alpha=0.5, fps=10):
function save_masklet_image (line 502) | def save_masklet_image(frame, outputs, out_path, alpha=0.5, frame_idx=No...
function prepare_masks_for_visualization (line 512) | def prepare_masks_for_visualization(frame_to_output):
function convert_coco_to_masklet_format (line 523) | def convert_coco_to_masklet_format(
function save_side_by_side_visualization (line 584) | def save_side_by_side_visualization(img, gt_anns, pred_anns, noun_phrase):
function bitget (line 609) | def bitget(val, idx):
function pascal_color_map (line 613) | def pascal_color_map():
function draw_masks_to_frame (line 624) | def draw_masks_to_frame(
function get_annot_df (line 657) | def get_annot_df(file_path: str):
function get_annot_dfs (line 673) | def get_annot_dfs(file_list: list[str]):
function get_media_dir (line 682) | def get_media_dir(media_dir: str, dataset: str):
function get_all_annotations_for_frame (line 695) | def get_all_annotations_for_frame(
function visualize_prompt_overlay (line 742) | def visualize_prompt_overlay(
function plot_results (line 858) | def plot_results(img, results):
function single_visualization (line 879) | def single_visualization(img, anns, title):
function show_mask (line 891) | def show_mask(mask, ax, obj_id=None, random_color=False):
function show_box (line 903) | def show_box(box, ax):
function show_points (line 911) | def show_points(coords, labels, ax, marker_size=375):
function load_frame (line 934) | def load_frame(frame):
FILE: scripts/eval/gold/eval_sam3.py
function main (line 64) | def main():
FILE: scripts/eval/silver/download_fathomnet.py
function download_imgs (line 15) | def download_imgs(args, image_uuids):
function main (line 36) | def main():
FILE: scripts/eval/silver/download_inaturalist.py
function download_archive (line 15) | def download_archive(url, dest_dir):
function extract_archive (line 30) | def extract_archive(archive_path, dest_dir):
function copy_images (line 37) | def copy_images(subset_json, untar_dir, output_dir):
function main (line 52) | def main():
FILE: scripts/eval/silver/download_preprocess_nga.py
function download_metadata (line 24) | def download_metadata(annotation_folder):
function download_url (line 35) | def download_url(row):
function download_item (line 45) | def download_item(item, output_folder):
function remove_non_compliant_image (line 60) | def remove_non_compliant_image(item, output_folder):
function reshape_image (line 72) | def reshape_image(rel_path, filename_size_map, output_folder):
function main (line 82) | def main(args, workers=20):
FILE: scripts/eval/silver/download_videos.py
function construct_gcs_path (line 24) | def construct_gcs_path(original_video):
function download_video (line 47) | def download_video(args):
function download_youtube_video (line 64) | def download_youtube_video(youtube_id, output_path=None):
function download_youtube (line 89) | def download_youtube():
function download_droid (line 134) | def download_droid():
function download_ego4d (line 164) | def download_ego4d():
function download_sav (line 232) | def download_sav():
function main (line 243) | def main():
FILE: scripts/eval/silver/extract_frames.py
function extract_frame (line 28) | def extract_frame(path_video, global_frame_idx, path_frame, image_size, ...
function process_image (line 39) | def process_image(args):
function main (line 68) | def main():
FILE: scripts/eval/silver/preprocess_silver_geode_bdd100k_food_rec.py
function main (line 13) | def main(args, n_workers=20):
FILE: scripts/eval/silver/utils.py
function load_yaml (line 36) | def load_yaml(filename):
function load_json (line 41) | def load_json(filename):
function save_json (line 46) | def save_json(content, filename):
function run_command (line 51) | def run_command(cmd):
function is_valid_image (line 61) | def is_valid_image(img_path):
function get_frame_from_video (line 69) | def get_frame_from_video(video_path, frame_id):
function update_annotations (line 95) | def update_annotations(dataset_name, file_names_keep, key="original_vide...
function get_filename_size_map (line 119) | def get_filename_size_map(annotation_path):
function get_filenames (line 128) | def get_filenames(annotation_path):
function get_image_ids (line 135) | def get_image_ids(annotation_path):
function setup (line 141) | def setup(folder):
function copy_file (line 146) | def copy_file(paths):
FILE: scripts/eval/standalone_cgf1.py
function main (line 15) | def main():
FILE: scripts/eval/veval/saco_yt1b_annot_update.py
function get_available_saco_yt1b_ids (line 15) | def get_available_saco_yt1b_ids(yt1b_meida_dir, data):
function update_yt1b_annot_per_field (line 40) | def update_yt1b_annot_per_field(data, field, id_col, available_ids):
function update_yt1b_annot (line 58) | def update_yt1b_annot(yt1b_input_annot_path, yt1b_media_dir, yt1b_output...
function main (line 93) | def main():
FILE: scripts/eval/veval/saco_yt1b_downloader.py
function download_and_extract_frames (line 17) | def download_and_extract_frames(saco_yt1b_id, args):
function main (line 42) | def main():
FILE: scripts/eval/veval/saco_yt1b_frame_prep_util.py
class YtVideoPrep (line 15) | class YtVideoPrep:
method __init__ (line 16) | def __init__(
method _get_yt_video_id_map_info (line 57) | def _get_yt_video_id_map_info(self):
method download_youtube_video (line 82) | def download_youtube_video(self):
method extract_frames_in_6fps_and_width_1080 (line 123) | def extract_frames_in_6fps_and_width_1080(self):
function main (line 200) | def main():
FILE: scripts/extract_odinw_results.py
function parse_args (line 39) | def parse_args():
function main (line 52) | def main(args):
FILE: scripts/extract_roboflow_vl100_results.py
function load_jsonl_last_row (line 145) | def load_jsonl_last_row(file_path: str, keys: List[str]) -> Optional[Dic...
function find_config_files (line 180) | def find_config_files(directory: str, filename: str = CONFIG_FILENAME) -...
function extract_config_parameters (line 201) | def extract_config_parameters(config_path: str, keys: List[str]) -> Dict...
function calculate_average (line 236) | def calculate_average(values_dict: Dict[str, float]) -> float:
function extract_category_results (line 251) | def extract_category_results(log_dir: str, categories: List[str]) -> Dic...
function analyze_experiment_results (line 275) | def analyze_experiment_results(config_path: str) -> None:
function print_results_table (line 330) | def print_results_table(results_data: List[Dict[str, Any]]) -> None:
function main (line 347) | def main() -> None:
Copy disabled (too large)
Download .json
Condensed preview — 224 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (19,128K chars).
[
{
"path": ".github/workflows/format.yml",
"chars": 402,
"preview": "name: SAM3/ufmt\non:\n pull_request:\n branches:\n - main\njobs:\n ufmt_check:\n runs-on: ubuntu-latest\n steps:\n "
},
{
"path": ".gitignore",
"chars": 1638,
"preview": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Distribution / packagi"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 3537,
"preview": "# Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and"
},
{
"path": "CONTRIBUTING.md",
"chars": 1210,
"preview": "# Contributing to sam3\nWe want to make contributing to this project as easy and transparent as\npossible.\n\n## Pull Reques"
},
{
"path": "LICENSE",
"chars": 7295,
"preview": "SAM License\nLast Updated: November 19, 2025\n\n“Agreement” means the terms and conditions for use, reproduction, distribut"
},
{
"path": "MANIFEST.in",
"chars": 162,
"preview": "include LICENSE\ninclude README.md\nrecursive-include examples *.py\nrecursive-include examples *.ipynb\nrecursive-include e"
},
{
"path": "README.md",
"chars": 20466,
"preview": "# SAM 3: Segment Anything with Concepts\n\nMeta Superintelligence Labs\n\n[Nicolas Carion](https://www.nicolascarion.com/)\\*"
},
{
"path": "README_TRAIN.md",
"chars": 6765,
"preview": "# Training\n\nThis repository supports finetuning SAM3 models on custom datasets in multi-node setup or local execution. T"
},
{
"path": "assets/veval/toy_gt_and_pred/toy_saco_veval_sav_test_eval_res.json",
"chars": 12166,
"preview": "{\"dataset_results\": {\"video_bbox_mAP_50_95\": 0.25926449787835926, \"video_mask_mAP_50_95\": 0.34191419141914187, \"video_bb"
},
{
"path": "assets/veval/toy_gt_and_pred/toy_saco_veval_sav_test_gt.json",
"chars": 3398949,
"preview": "{\"info\": {\"version\": \"v1\", \"date\": \"2025-09-24\", \"description\": \"SA-Co/VEval SA-V Test\"}, \"videos\": [{\"id\": 0, \"video_na"
},
{
"path": "assets/veval/toy_gt_and_pred/toy_saco_veval_sav_test_pred.json",
"chars": 542939,
"preview": "[{\"video_id\": 0, \"category_id\": 847, \"bboxes\": [[592, 702, 34, 23], [597, 703, 35, 23], [602, 701, 35, 24], [605, 701, 3"
},
{
"path": "examples/saco_gold_silver_eval_example.ipynb",
"chars": 157193,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"id\": \"417b89e9\",\n \"metadata\": {},\n \"outputs\":"
},
{
"path": "examples/saco_gold_silver_vis_example.ipynb",
"chars": 7986,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": null,\n \"id\": \"37048f21\",\n \"metadata\":"
},
{
"path": "examples/saco_veval_eval_example.ipynb",
"chars": 4423,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": null,\n \"id\": \"0e0d2e74\",\n \"metadata\":"
},
{
"path": "examples/saco_veval_vis_example.ipynb",
"chars": 7404,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": null,\n \"id\": \"37048f21\",\n \"metadata\": {},\n \"output"
},
{
"path": "examples/sam3_agent.ipynb",
"chars": 7738,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {},\n \"outputs\": [],\n "
},
{
"path": "examples/sam3_for_sam1_task_example.ipynb",
"chars": 23705,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": null,\n \"id\": \"f400486b\",\n \"metadata\": {},\n \"output"
},
{
"path": "examples/sam3_for_sam2_video_task_example.ipynb",
"chars": 36827,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": null,\n \"id\": \"3c3b1c46-9f5c-41c1-9101-85db8709ec0d\",\n "
},
{
"path": "examples/sam3_image_batched_inference.ipynb",
"chars": 4631582,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {},\n \"outputs\": [],\n \"source\": [\n "
},
{
"path": "examples/sam3_image_interactive.ipynb",
"chars": 45421,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"id\": \"5d0e0b69\",\n \"metadata\": {},\n \"outputs\":"
},
{
"path": "examples/sam3_image_predictor_example.ipynb",
"chars": 2890250,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {},\n \"outputs\": [],\n \"source\": [\n "
},
{
"path": "examples/sam3_video_predictor_example.ipynb",
"chars": 55470,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": null,\n \"metadata\": {\n \"bentoAICellS"
},
{
"path": "pyproject.toml",
"chars": 2770,
"preview": "[build-system]\nrequires = [\"setuptools>=61\", \"wheel\"]\nbuild-backend = \"setuptools.build_meta\"\n\n[project]\nname = \"sam3\"\nd"
},
{
"path": "sam3/__init__.py",
"chars": 200,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nfrom .model_builder import buil"
},
{
"path": "sam3/agent/__init__.py",
"chars": 88,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n"
},
{
"path": "sam3/agent/agent_core.py",
"chars": 26074,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport copy\nimport json\nimport "
},
{
"path": "sam3/agent/client_llm.py",
"chars": 7694,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport base64\nimport os\nfrom ty"
},
{
"path": "sam3/agent/client_sam3.py",
"chars": 5099,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport json\nimport os\n\nimport t"
},
{
"path": "sam3/agent/helpers/__init__.py",
"chars": 88,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n"
},
{
"path": "sam3/agent/helpers/boxes.py",
"chars": 14592,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport math\nfrom enum import In"
},
{
"path": "sam3/agent/helpers/color_map.py",
"chars": 3645,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\n\"\"\"\nAn awesome colormap for rea"
},
{
"path": "sam3/agent/helpers/keypoints.py",
"chars": 9048,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nfrom typing import Any, List, T"
},
{
"path": "sam3/agent/helpers/mask_overlap_removal.py",
"chars": 4821,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nfrom typing import Dict, List\n\n"
},
{
"path": "sam3/agent/helpers/masks.py",
"chars": 20097,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport copy\nimport itertools\nfr"
},
{
"path": "sam3/agent/helpers/memory.py",
"chars": 2643,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport logging\nfrom contextlib "
},
{
"path": "sam3/agent/helpers/rle.py",
"chars": 4244,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\n\"\"\"Some utilities for RLE encod"
},
{
"path": "sam3/agent/helpers/roi_align.py",
"chars": 3136,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nfrom torch import nn\nfrom torch"
},
{
"path": "sam3/agent/helpers/rotated_boxes.py",
"chars": 19763,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nfrom __future__ import absolute"
},
{
"path": "sam3/agent/helpers/som_utils.py",
"chars": 12021,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport colorsys\nfrom dataclasse"
},
{
"path": "sam3/agent/helpers/visualizer.py",
"chars": 63258,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport colorsys\nimport logging\n"
},
{
"path": "sam3/agent/helpers/zoom_in.py",
"chars": 6497,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport io\nimport math\n\nimport m"
},
{
"path": "sam3/agent/inference.py",
"chars": 2257,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport json\nimport os\n\nfrom sam"
},
{
"path": "sam3/agent/system_prompts/system_prompt.txt",
"chars": 66046,
"preview": "You are a helpful visual-concept grounding assistant capable of leveraging tool calls to ground concepts the user refers"
},
{
"path": "sam3/agent/system_prompts/system_prompt_iterative_checking.txt",
"chars": 5851,
"preview": "You are a helpful assistant specializing in detail-oriented visual understanding, reasoning, and classification, capable"
},
{
"path": "sam3/agent/viz.py",
"chars": 3989,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport cv2\nimport numpy as np\ni"
},
{
"path": "sam3/eval/__init__.py",
"chars": 88,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n"
},
{
"path": "sam3/eval/cgf1_eval.py",
"chars": 26264,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport contextlib\nimport copy\ni"
},
{
"path": "sam3/eval/coco_eval.py",
"chars": 36256,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\n\"\"\"\nCOCO evaluator that works i"
},
{
"path": "sam3/eval/coco_eval_offline.py",
"chars": 6098,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\n\"\"\"\nThis evaluator is meant for"
},
{
"path": "sam3/eval/coco_reindex.py",
"chars": 8126,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\n\"\"\"\nSelf-contained COCO JSON re"
},
{
"path": "sam3/eval/coco_writer.py",
"chars": 11860,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\n\"\"\"\nCOCO prediction dumper for "
},
{
"path": "sam3/eval/conversion_util.py",
"chars": 7169,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\nimport json\nimport os\nfrom colle"
},
{
"path": "sam3/eval/demo_eval.py",
"chars": 25103,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\n\"\"\"\nThis evaluator is based upo"
},
{
"path": "sam3/eval/hota_eval_toolkit/__init__.py",
"chars": 30,
"preview": "# flake8: noqa\n\n# pyre-unsafe\n"
},
{
"path": "sam3/eval/hota_eval_toolkit/run_ytvis_eval.py",
"chars": 5032,
"preview": "# flake8: noqa\n\n# pyre-unsafe\n\n\"\"\"run_youtube_vis.py\nRun example:\nrun_youtube_vis.py --USE_PARALLEL False --METRICS HOTA"
},
{
"path": "sam3/eval/hota_eval_toolkit/trackeval/__init__.py",
"chars": 98,
"preview": "# flake8: noqa\n\n# pyre-unsafe\n\nfrom . import datasets, metrics, utils\nfrom .eval import Evaluator\n"
},
{
"path": "sam3/eval/hota_eval_toolkit/trackeval/_timing.py",
"chars": 2359,
"preview": "# flake8: noqa\n\n# pyre-unsafe\n\nimport inspect\nfrom functools import wraps\nfrom time import perf_counter\n\nDO_TIMING = Fal"
},
{
"path": "sam3/eval/hota_eval_toolkit/trackeval/datasets/__init__.py",
"chars": 94,
"preview": "# flake8: noqa\n\n# pyre-unsafe\n\nfrom .tao_ow import TAO_OW\nfrom .youtube_vis import YouTubeVIS\n"
},
{
"path": "sam3/eval/hota_eval_toolkit/trackeval/datasets/_base_dataset.py",
"chars": 17938,
"preview": "# flake8: noqa\n\n# pyre-unsafe\n\nimport csv\nimport io\nimport os\nimport traceback\nimport zipfile\nfrom abc import ABC, abstr"
},
{
"path": "sam3/eval/hota_eval_toolkit/trackeval/datasets/tao_ow.py",
"chars": 36490,
"preview": "# flake8: noqa\n\n# pyre-unsafe\n\nimport itertools\nimport json\nimport os\nfrom collections import defaultdict\n\nimport numpy "
},
{
"path": "sam3/eval/hota_eval_toolkit/trackeval/datasets/youtube_vis.py",
"chars": 24012,
"preview": "# flake8: noqa\n\n# pyre-unsafe\n\n# note: this file has been modified from its original version in TrackEval in\n# https://g"
},
{
"path": "sam3/eval/hota_eval_toolkit/trackeval/eval.py",
"chars": 17059,
"preview": "# flake8: noqa\n\n# pyre-unsafe\n\nimport os\nimport time\nimport traceback\nfrom functools import partial\nfrom multiprocessing"
},
{
"path": "sam3/eval/hota_eval_toolkit/trackeval/metrics/__init__.py",
"chars": 79,
"preview": "# flake8: noqa\n\n# pyre-unsafe\n\nfrom .count import Count\nfrom .hota import HOTA\n"
},
{
"path": "sam3/eval/hota_eval_toolkit/trackeval/metrics/_base_metric.py",
"chars": 5255,
"preview": "# flake8: noqa\n\n# pyre-unsafe\n\nfrom abc import ABC, abstractmethod\n\nimport numpy as np\n\nfrom .. import _timing\nfrom ..ut"
},
{
"path": "sam3/eval/hota_eval_toolkit/trackeval/metrics/count.py",
"chars": 1626,
"preview": "# flake8: noqa\n\n# pyre-unsafe\n\nfrom .. import _timing\nfrom ._base_metric import _BaseMetric\n\n\nclass Count(_BaseMetric):\n"
},
{
"path": "sam3/eval/hota_eval_toolkit/trackeval/metrics/hota.py",
"chars": 11861,
"preview": "# flake8: noqa\n\n# pyre-unsafe\n\nimport os\n\nimport numpy as np\nfrom scipy.optimize import linear_sum_assignment\n\nfrom .. i"
},
{
"path": "sam3/eval/hota_eval_toolkit/trackeval/utils.py",
"chars": 6219,
"preview": "# flake8: noqa\n\n# pyre-unsafe\n\nimport argparse\nimport csv\nimport os\nfrom collections import OrderedDict\n\n\ndef init_confi"
},
{
"path": "sam3/eval/postprocessors.py",
"chars": 28816,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\n\"\"\"Postprocessors class to tran"
},
{
"path": "sam3/eval/saco_veval_eval.py",
"chars": 4975,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\nimport argparse\nimport json\nimpo"
},
{
"path": "sam3/eval/saco_veval_evaluators.py",
"chars": 37152,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\nimport json\nimport os\nimport tem"
},
{
"path": "sam3/eval/teta_eval_toolkit/__init__.py",
"chars": 117,
"preview": "# fmt: off\n# flake8: noqa\n\n# pyre-unsafe\n\nfrom . import config, datasets, metrics, utils\nfrom .eval import Evaluator\n"
},
{
"path": "sam3/eval/teta_eval_toolkit/_timing.py",
"chars": 2370,
"preview": "# fmt: off\n# flake8: noqa\n\n# pyre-unsafe\n\nimport inspect\nfrom functools import wraps\nfrom time import perf_counter\n\nDO_T"
},
{
"path": "sam3/eval/teta_eval_toolkit/config.py",
"chars": 5674,
"preview": "# fmt: off\n# flake8: noqa\n\n# pyre-unsafe\n\n\"\"\"Config.\"\"\"\nimport argparse\nimport os\n\n\ndef parse_configs():\n \"\"\"Parse co"
},
{
"path": "sam3/eval/teta_eval_toolkit/datasets/__init__.py",
"chars": 101,
"preview": "# fmt: off\n# flake8: noqa\n\n# pyre-unsafe\n\"\"\"Datasets.\"\"\"\nfrom .coco import COCO\nfrom .tao import TAO\n"
},
{
"path": "sam3/eval/teta_eval_toolkit/datasets/_base_dataset.py",
"chars": 17882,
"preview": "# fmt: off\n# flake8: noqa\n\n# pyre-unsafe\n\nimport csv\nimport io\nimport os\nimport traceback\nimport zipfile\nfrom abc import"
},
{
"path": "sam3/eval/teta_eval_toolkit/datasets/coco.py",
"chars": 25382,
"preview": "# fmt: off\n# flake8: noqa\n\n# pyre-unsafe\n\n\"\"\"COCO Dataset.\"\"\"\nimport copy\nimport itertools\nimport json\nimport os\nfrom co"
},
{
"path": "sam3/eval/teta_eval_toolkit/datasets/tao.py",
"chars": 26345,
"preview": "# fmt: off\n# flake8: noqa\n\n# pyre-unsafe\n\n\"\"\"TAO Dataset.\"\"\"\nimport copy\nimport itertools\nimport json\nimport os\nfrom col"
},
{
"path": "sam3/eval/teta_eval_toolkit/eval.py",
"chars": 10647,
"preview": "# fmt: off\n# flake8: noqa\n\n# pyre-unsafe\n\nimport copy\nimport os\nimport pickle\nimport time\nimport traceback\nfrom functool"
},
{
"path": "sam3/eval/teta_eval_toolkit/metrics/__init__.py",
"chars": 65,
"preview": "# fmt: off\n# flake8: noqa\n\n# pyre-unsafe\n\nfrom .teta import TETA\n"
},
{
"path": "sam3/eval/teta_eval_toolkit/metrics/_base_metric.py",
"chars": 5200,
"preview": "# fmt: off\n# flake8: noqa\n\n# pyre-unsafe\n\nfrom abc import ABC, abstractmethod\n\nimport numpy as np\n\nfrom .. import _timin"
},
{
"path": "sam3/eval/teta_eval_toolkit/metrics/teta.py",
"chars": 15609,
"preview": "# fmt: off\n# flake8: noqa\n\n# pyre-unsafe\n\n\"\"\"Track Every Thing Accuracy metric.\"\"\"\n\nimport numpy as np\nfrom scipy.optimi"
},
{
"path": "sam3/eval/teta_eval_toolkit/utils.py",
"chars": 1296,
"preview": "# fmt: off\n# flake8: noqa\n\n# pyre-unsafe\n\nimport csv\nimport os\nfrom collections import OrderedDict\n\n\ndef validate_metric"
},
{
"path": "sam3/eval/ytvis_coco_wrapper.py",
"chars": 6076,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n# (c) Meta Platforms, Inc. and affiliates. Conf"
},
{
"path": "sam3/eval/ytvis_eval.py",
"chars": 17016,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\nimport copy\nimport gc\nimport log"
},
{
"path": "sam3/logger.py",
"chars": 1835,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\nimport logging\nimport os\n\nLOG_LE"
},
{
"path": "sam3/model/__init__.py",
"chars": 88,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n"
},
{
"path": "sam3/model/act_ckpt_utils.py",
"chars": 4346,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport inspect\nfrom functools i"
},
{
"path": "sam3/model/box_ops.py",
"chars": 6004,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\"\"\"\nUtilities for bounding box m"
},
{
"path": "sam3/model/data_misc.py",
"chars": 6364,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\"\"\"\nMisc functions, including di"
},
{
"path": "sam3/model/decoder.py",
"chars": 36684,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\"\"\"\nTransformer decoder.\nInspire"
},
{
"path": "sam3/model/edt.py",
"chars": 8389,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\n\"\"\"Triton kernel for euclidean "
},
{
"path": "sam3/model/encoder.py",
"chars": 23203,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n# Based on https://github.com/IDEA-Research/Gro"
},
{
"path": "sam3/model/geometry_encoders.py",
"chars": 33349,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nfrom typing import Tuple\n\nimpor"
},
{
"path": "sam3/model/io_utils.py",
"chars": 27147,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport contextlib\nimport os\nimp"
},
{
"path": "sam3/model/maskformer_segmentation.py",
"chars": 11465,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport math\nfrom typing import "
},
{
"path": "sam3/model/memory.py",
"chars": 6703,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport math\nfrom typing import "
},
{
"path": "sam3/model/model_misc.py",
"chars": 15028,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\n\"\"\"Various utility models\"\"\"\n\ni"
},
{
"path": "sam3/model/necks.py",
"chars": 4201,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\n\"\"\"Necks are the interface betw"
},
{
"path": "sam3/model/position_encoding.py",
"chars": 4887,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport math\nfrom typing import "
},
{
"path": "sam3/model/sam1_task_predictor.py",
"chars": 19600,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n# All rights reserved.\n\n# pyre-unsafe\n\n# This s"
},
{
"path": "sam3/model/sam3_image.py",
"chars": 37542,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport os\nfrom copy import deep"
},
{
"path": "sam3/model/sam3_image_processor.py",
"chars": 8932,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\nfrom typing import Dict, List\n\ni"
},
{
"path": "sam3/model/sam3_tracker_base.py",
"chars": 59289,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport logging\n\nimport torch\nim"
},
{
"path": "sam3/model/sam3_tracker_utils.py",
"chars": 18608,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport numpy as np\nimport torch"
},
{
"path": "sam3/model/sam3_tracking_predictor.py",
"chars": 68831,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport logging\nfrom collections"
},
{
"path": "sam3/model/sam3_video_base.py",
"chars": 84105,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport datetime\nimport logging\n"
},
{
"path": "sam3/model/sam3_video_inference.py",
"chars": 77153,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport logging\nfrom collections"
},
{
"path": "sam3/model/sam3_video_predictor.py",
"chars": 22292,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport datetime\nimport gc\nimpor"
},
{
"path": "sam3/model/text_encoder_ve.py",
"chars": 11274,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nfrom collections import Ordered"
},
{
"path": "sam3/model/tokenizer_ve.py",
"chars": 8842,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\n\"\"\"\nText Tokenizer.\n\nCopied and"
},
{
"path": "sam3/model/utils/__init__.py",
"chars": 232,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n# All rights reserved.\n\n# pyre-unsafe\n\n# This s"
},
{
"path": "sam3/model/utils/misc.py",
"chars": 2536,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nfrom collections import default"
},
{
"path": "sam3/model/utils/sam1_utils.py",
"chars": 5045,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n# All rights reserved.\n\n# pyre-unsafe\n\n# This s"
},
{
"path": "sam3/model/utils/sam2_utils.py",
"chars": 8295,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n# All rights reserved.\n\n# pyre-unsafe\n\n# This s"
},
{
"path": "sam3/model/vitdet.py",
"chars": 32459,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\n\"\"\"\nViTDet backbone adapted fro"
},
{
"path": "sam3/model/vl_combiner.py",
"chars": 6464,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\n\"\"\"Provides utility to combine "
},
{
"path": "sam3/model_builder.py",
"chars": 24231,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport os\nfrom typing import Op"
},
{
"path": "sam3/perflib/__init__.py",
"chars": 235,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport os\n\nis_enabled = False\ni"
},
{
"path": "sam3/perflib/associate_det_trk.py",
"chars": 5443,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nfrom collections import default"
},
{
"path": "sam3/perflib/compile.py",
"chars": 3263,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport torch\n\n\ndef recursive_fn"
},
{
"path": "sam3/perflib/connected_components.py",
"chars": 2885,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\nimport logging\n\nimport torch\n\ntr"
},
{
"path": "sam3/perflib/fa3.py",
"chars": 843,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport torch\n\n\n@torch.library.c"
},
{
"path": "sam3/perflib/masks_ops.py",
"chars": 2767,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport torch\n\n\ndef masks_to_box"
},
{
"path": "sam3/perflib/nms.py",
"chars": 3453,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport logging\n\nimport numpy as"
},
{
"path": "sam3/perflib/tests/tests.py",
"chars": 1883,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport os\n\nimport numpy as np\ni"
},
{
"path": "sam3/perflib/triton/connected_components.py",
"chars": 15938,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\nimport math\n\nimport torch\nimport"
},
{
"path": "sam3/perflib/triton/nms.py",
"chars": 4732,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\n# Adapted from https://github.c"
},
{
"path": "sam3/sam/__init__.py",
"chars": 211,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\nfrom .mask_decoder import MaskDe"
},
{
"path": "sam3/sam/common.py",
"chars": 1370,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nfrom typing import Type\n\nimport"
},
{
"path": "sam3/sam/mask_decoder.py",
"chars": 13424,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nfrom typing import List, Option"
},
{
"path": "sam3/sam/prompt_encoder.py",
"chars": 9277,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nfrom typing import Any, Optiona"
},
{
"path": "sam3/sam/rope.py",
"chars": 5934,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\n\"\"\"\nAdapted from:\n1. https://gi"
},
{
"path": "sam3/sam/transformer.py",
"chars": 12862,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport math\nfrom functools impo"
},
{
"path": "sam3/train/__init__.py",
"chars": 88,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n"
},
{
"path": "sam3/train/configs/eval_base.yaml",
"chars": 9441,
"preview": "# @package _global_\ndefaults:\n - _self_\n\n# This config is the base configuration for all evaluations. Amongst other thi"
},
{
"path": "sam3/train/configs/gold_image_evals/sam3_gold_image_attributes.yaml",
"chars": 2578,
"preview": "# @package _global_\ndefaults:\n - /configs/eval_base.yaml\n - _self_\n\n# ================================================"
},
{
"path": "sam3/train/configs/gold_image_evals/sam3_gold_image_crowded.yaml",
"chars": 2554,
"preview": "# @package _global_\ndefaults:\n - /configs/eval_base.yaml\n - _self_\n\n# ================================================"
},
{
"path": "sam3/train/configs/gold_image_evals/sam3_gold_image_fg_food.yaml",
"chars": 2554,
"preview": "# @package _global_\ndefaults:\n - /configs/eval_base.yaml\n - _self_\n\n# ================================================"
},
{
"path": "sam3/train/configs/gold_image_evals/sam3_gold_image_fg_sports.yaml",
"chars": 2650,
"preview": "# @package _global_\ndefaults:\n - /configs/eval_base.yaml\n - _self_\n\n# ================================================"
},
{
"path": "sam3/train/configs/gold_image_evals/sam3_gold_image_metaclip_nps.yaml",
"chars": 2578,
"preview": "# @package _global_\ndefaults:\n - /configs/eval_base.yaml\n - _self_\n\n# ================================================"
},
{
"path": "sam3/train/configs/gold_image_evals/sam3_gold_image_sa1b_nps.yaml",
"chars": 2542,
"preview": "# @package _global_\ndefaults:\n - /configs/eval_base.yaml\n - _self_\n\n# ================================================"
},
{
"path": "sam3/train/configs/gold_image_evals/sam3_gold_image_wiki_common.yaml",
"chars": 2586,
"preview": "# @package _global_\ndefaults:\n - /configs/eval_base.yaml\n - _self_\n\n# ================================================"
},
{
"path": "sam3/train/configs/odinw13/odinw_text_and_visual.yaml",
"chars": 9123,
"preview": "# @package _global_\ndefaults:\n - _self_\n\n# ============================================================================"
},
{
"path": "sam3/train/configs/odinw13/odinw_text_only.yaml",
"chars": 8924,
"preview": "# @package _global_\ndefaults:\n - _self_\n\n# ============================================================================"
},
{
"path": "sam3/train/configs/odinw13/odinw_text_only_positive.yaml",
"chars": 8926,
"preview": "# @package _global_\ndefaults:\n - _self_\n\n# ============================================================================"
},
{
"path": "sam3/train/configs/odinw13/odinw_text_only_train.yaml",
"chars": 21001,
"preview": "# @package _global_\ndefaults:\n - _self_\n\n# ============================================================================"
},
{
"path": "sam3/train/configs/odinw13/odinw_visual_only.yaml",
"chars": 9125,
"preview": "# @package _global_\ndefaults:\n - _self_\n\n# ============================================================================"
},
{
"path": "sam3/train/configs/roboflow_v100/roboflow_v100_eval.yaml",
"chars": 17374,
"preview": "# @package _global_\ndefaults:\n - _self_\n\n# ============================================================================"
},
{
"path": "sam3/train/configs/roboflow_v100/roboflow_v100_full_ft_100_images.yaml",
"chars": 17377,
"preview": "# @package _global_\ndefaults:\n - _self_\n\n# ============================================================================"
},
{
"path": "sam3/train/configs/saco_video_evals/saco_veval_sav_test.yaml",
"chars": 5086,
"preview": "# @package _global_\ndefaults:\n - _self_\n\n# ============================================================================"
},
{
"path": "sam3/train/configs/saco_video_evals/saco_veval_sav_test_noheur.yaml",
"chars": 5087,
"preview": "# @package _global_\ndefaults:\n - _self_\n\n# ============================================================================"
},
{
"path": "sam3/train/configs/saco_video_evals/saco_veval_sav_val.yaml",
"chars": 5084,
"preview": "# @package _global_\ndefaults:\n - _self_\n\n# ============================================================================"
},
{
"path": "sam3/train/configs/saco_video_evals/saco_veval_sav_val_noheur.yaml",
"chars": 5085,
"preview": "# @package _global_\ndefaults:\n - _self_\n\n# ============================================================================"
},
{
"path": "sam3/train/configs/saco_video_evals/saco_veval_smartglasses_test.yaml",
"chars": 5104,
"preview": "# @package _global_\ndefaults:\n - _self_\n\n# ============================================================================"
},
{
"path": "sam3/train/configs/saco_video_evals/saco_veval_smartglasses_test_noheur.yaml",
"chars": 5105,
"preview": "# @package _global_\ndefaults:\n - _self_\n\n# ============================================================================"
},
{
"path": "sam3/train/configs/saco_video_evals/saco_veval_smartglasses_val.yaml",
"chars": 5102,
"preview": "# @package _global_\ndefaults:\n - _self_\n\n# ============================================================================"
},
{
"path": "sam3/train/configs/saco_video_evals/saco_veval_smartglasses_val_noheur.yaml",
"chars": 5103,
"preview": "# @package _global_\ndefaults:\n - _self_\n\n# ============================================================================"
},
{
"path": "sam3/train/configs/saco_video_evals/saco_veval_yt1b_test.yaml",
"chars": 5088,
"preview": "# @package _global_\ndefaults:\n - _self_\n\n# ============================================================================"
},
{
"path": "sam3/train/configs/saco_video_evals/saco_veval_yt1b_test_noheur.yaml",
"chars": 5089,
"preview": "# @package _global_\ndefaults:\n - _self_\n\n# ============================================================================"
},
{
"path": "sam3/train/configs/saco_video_evals/saco_veval_yt1b_val.yaml",
"chars": 5086,
"preview": "# @package _global_\ndefaults:\n - _self_\n\n# ============================================================================"
},
{
"path": "sam3/train/configs/saco_video_evals/saco_veval_yt1b_val_noheur.yaml",
"chars": 5087,
"preview": "# @package _global_\ndefaults:\n - _self_\n\n# ============================================================================"
},
{
"path": "sam3/train/configs/silver_image_evals/sam3_silver_image_bdd100k.yaml",
"chars": 2357,
"preview": "# @package _global_\ndefaults:\n - /configs/eval_base.yaml\n - _self_\n\n# ================================================"
},
{
"path": "sam3/train/configs/silver_image_evals/sam3_silver_image_droid.yaml",
"chars": 2345,
"preview": "# @package _global_\ndefaults:\n - /configs/eval_base.yaml\n - _self_\n\n# ================================================"
},
{
"path": "sam3/train/configs/silver_image_evals/sam3_silver_image_ego4d.yaml",
"chars": 2345,
"preview": "# @package _global_\ndefaults:\n - /configs/eval_base.yaml\n - _self_\n\n# ================================================"
},
{
"path": "sam3/train/configs/silver_image_evals/sam3_silver_image_fathomnet.yaml",
"chars": 2362,
"preview": "# @package _global_\ndefaults:\n - /configs/eval_base.yaml\n - _self_\n\n# ================================================"
},
{
"path": "sam3/train/configs/silver_image_evals/sam3_silver_image_food_rec.yaml",
"chars": 2363,
"preview": "# @package _global_\ndefaults:\n - /configs/eval_base.yaml\n - _self_\n\n# ================================================"
},
{
"path": "sam3/train/configs/silver_image_evals/sam3_silver_image_geode.yaml",
"chars": 2345,
"preview": "# @package _global_\ndefaults:\n - /configs/eval_base.yaml\n - _self_\n\n# ================================================"
},
{
"path": "sam3/train/configs/silver_image_evals/sam3_silver_image_inaturalist.yaml",
"chars": 2381,
"preview": "# @package _global_\ndefaults:\n - /configs/eval_base.yaml\n - _self_\n\n# ================================================"
},
{
"path": "sam3/train/configs/silver_image_evals/sam3_silver_image_nga.yaml",
"chars": 2353,
"preview": "# @package _global_\ndefaults:\n - /configs/eval_base.yaml\n - _self_\n\n# ================================================"
},
{
"path": "sam3/train/configs/silver_image_evals/sam3_silver_image_sav.yaml",
"chars": 2333,
"preview": "# @package _global_\ndefaults:\n - /configs/eval_base.yaml\n - _self_\n\n# ================================================"
},
{
"path": "sam3/train/configs/silver_image_evals/sam3_silver_image_yt1b.yaml",
"chars": 2339,
"preview": "# @package _global_\ndefaults:\n - /configs/eval_base.yaml\n - _self_\n\n# ================================================"
},
{
"path": "sam3/train/data/__init__.py",
"chars": 88,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n"
},
{
"path": "sam3/train/data/coco_json_loaders.py",
"chars": 14488,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport json\nfrom collections im"
},
{
"path": "sam3/train/data/collator.py",
"chars": 12770,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nfrom dataclasses import datacla"
},
{
"path": "sam3/train/data/sam3_image_dataset.py",
"chars": 19881,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\n\"\"\"Dataset class for modulated "
},
{
"path": "sam3/train/data/sam3_video_dataset.py",
"chars": 15846,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport copy\nimport io\nimport js"
},
{
"path": "sam3/train/data/torch_dataset.py",
"chars": 1754,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nfrom typing import Callable, It"
},
{
"path": "sam3/train/loss/__init__.py",
"chars": 88,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n"
},
{
"path": "sam3/train/loss/loss_fns.py",
"chars": 54586,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport logging\nimport warnings\n"
},
{
"path": "sam3/train/loss/mask_sampling.py",
"chars": 5150,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nfrom typing import Callable\n\nim"
},
{
"path": "sam3/train/loss/sam3_loss.py",
"chars": 8863,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport torch\nfrom sam3.model.mo"
},
{
"path": "sam3/train/loss/sigmoid_focal_loss.py",
"chars": 11405,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\n\"\"\"Triton kernel for faster and"
},
{
"path": "sam3/train/masks_ops.py",
"chars": 9646,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\n\"\"\"Utilities for masks manipula"
},
{
"path": "sam3/train/matcher.py",
"chars": 34384,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\n\"\"\"\nModules to compute the matc"
},
{
"path": "sam3/train/nms_helper.py",
"chars": 11486,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\nimport warnings\nfrom typing impo"
},
{
"path": "sam3/train/optim/__init__.py",
"chars": 88,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n"
},
{
"path": "sam3/train/optim/optimizer.py",
"chars": 19751,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport fnmatch\nimport inspect\ni"
},
{
"path": "sam3/train/optim/schedulers.py",
"chars": 1179,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport math\n\n\nclass InverseSqua"
},
{
"path": "sam3/train/train.py",
"chars": 12997,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport logging\nimport os\nimport"
},
{
"path": "sam3/train/trainer.py",
"chars": 44870,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport contextlib\nimport fnmatc"
},
{
"path": "sam3/train/transforms/__init__.py",
"chars": 88,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n"
},
{
"path": "sam3/train/transforms/basic.py",
"chars": 15061,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\n\"\"\"\nTransforms and data augment"
},
{
"path": "sam3/train/transforms/basic_for_api.py",
"chars": 53808,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\n\"\"\"\nTransforms and data augment"
},
{
"path": "sam3/train/transforms/filter_query_transforms.py",
"chars": 22901,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport logging\nimport random\nfr"
},
{
"path": "sam3/train/transforms/point_sampling.py",
"chars": 13417,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport cv2\nimport numpy as np\ni"
},
{
"path": "sam3/train/transforms/segmentation.py",
"chars": 6907,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport numpy as np\nimport pycoc"
},
{
"path": "sam3/train/utils/__init__.py",
"chars": 88,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n"
},
{
"path": "sam3/train/utils/checkpoint_utils.py",
"chars": 11619,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\n\nimport contextlib\nimport fnmat"
},
{
"path": "sam3/train/utils/distributed.py",
"chars": 19408,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\n# Copyright (c) Meta Platforms,"
},
{
"path": "sam3/train/utils/logger.py",
"chars": 7448,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved\n\n# pyre-unsafe\n\nimport atexit\nimport functools\n"
}
]
// ... and 24 more files (download for full content)
About this extraction
This page contains the full source code of the facebookresearch/sam3 GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 224 files (17.5 MB), approximately 4.6M tokens, and a symbol index with 1745 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.