birder 0.4.2__tar.gz → 0.4.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {birder-0.4.2 → birder-0.4.4}/PKG-INFO +16 -9
- {birder-0.4.2 → birder-0.4.4}/README.md +12 -5
- {birder-0.4.2 → birder-0.4.4}/birder/__init__.py +2 -0
- {birder-0.4.2 → birder-0.4.4}/birder/common/fs_ops.py +81 -1
- {birder-0.4.2 → birder-0.4.4}/birder/common/training_cli.py +6 -1
- {birder-0.4.2 → birder-0.4.4}/birder/common/training_utils.py +4 -0
- {birder-0.4.2 → birder-0.4.4}/birder/data/collators/detection.py +3 -1
- {birder-0.4.2 → birder-0.4.4}/birder/datahub/_lib.py +15 -6
- birder-0.4.4/birder/datahub/evaluation.py +591 -0
- birder-0.4.4/birder/eval/__main__.py +74 -0
- birder-0.4.4/birder/eval/_embeddings.py +50 -0
- birder-0.4.4/birder/eval/adversarial.py +315 -0
- birder-0.4.4/birder/eval/benchmarks/awa2.py +357 -0
- birder-0.4.4/birder/eval/benchmarks/bioscan5m.py +198 -0
- birder-0.4.4/birder/eval/benchmarks/fishnet.py +318 -0
- birder-0.4.4/birder/eval/benchmarks/flowers102.py +210 -0
- birder-0.4.4/birder/eval/benchmarks/fungiclef.py +261 -0
- birder-0.4.4/birder/eval/benchmarks/nabirds.py +202 -0
- birder-0.4.4/birder/eval/benchmarks/newt.py +262 -0
- birder-0.4.4/birder/eval/benchmarks/plankton.py +255 -0
- birder-0.4.4/birder/eval/benchmarks/plantdoc.py +259 -0
- birder-0.4.4/birder/eval/benchmarks/plantnet.py +252 -0
- birder-0.4.4/birder/eval/classification.py +235 -0
- birder-0.4.4/birder/eval/methods/ami.py +78 -0
- birder-0.4.4/birder/eval/methods/knn.py +71 -0
- birder-0.4.4/birder/eval/methods/linear.py +152 -0
- birder-0.4.4/birder/eval/methods/mlp.py +178 -0
- birder-0.4.4/birder/eval/methods/simpleshot.py +100 -0
- birder-0.4.4/birder/eval/methods/svm.py +92 -0
- {birder-0.4.2 → birder-0.4.4}/birder/inference/classification.py +23 -2
- {birder-0.4.2 → birder-0.4.4}/birder/inference/detection.py +35 -15
- {birder-0.4.2 → birder-0.4.4}/birder/net/cswin_transformer.py +2 -1
- {birder-0.4.2 → birder-0.4.4}/birder/net/detection/base.py +41 -18
- {birder-0.4.2 → birder-0.4.4}/birder/net/detection/deformable_detr.py +63 -39
- {birder-0.4.2 → birder-0.4.4}/birder/net/detection/detr.py +23 -20
- {birder-0.4.2 → birder-0.4.4}/birder/net/detection/efficientdet.py +42 -25
- {birder-0.4.2 → birder-0.4.4}/birder/net/detection/faster_rcnn.py +53 -21
- {birder-0.4.2 → birder-0.4.4}/birder/net/detection/fcos.py +42 -23
- {birder-0.4.2 → birder-0.4.4}/birder/net/detection/lw_detr.py +58 -35
- {birder-0.4.2 → birder-0.4.4}/birder/net/detection/plain_detr.py +54 -43
- {birder-0.4.2 → birder-0.4.4}/birder/net/detection/retinanet.py +46 -34
- {birder-0.4.2 → birder-0.4.4}/birder/net/detection/rt_detr_v1.py +41 -38
- {birder-0.4.2 → birder-0.4.4}/birder/net/detection/rt_detr_v2.py +50 -40
- {birder-0.4.2 → birder-0.4.4}/birder/net/detection/ssd.py +47 -31
- {birder-0.4.2 → birder-0.4.4}/birder/net/detection/yolo_v2.py +33 -18
- {birder-0.4.2 → birder-0.4.4}/birder/net/detection/yolo_v3.py +35 -33
- {birder-0.4.2 → birder-0.4.4}/birder/net/detection/yolo_v4.py +35 -20
- {birder-0.4.2 → birder-0.4.4}/birder/net/detection/yolo_v4_tiny.py +1 -2
- {birder-0.4.2 → birder-0.4.4}/birder/net/hiera.py +44 -67
- {birder-0.4.2 → birder-0.4.4}/birder/net/maxvit.py +2 -2
- {birder-0.4.2 → birder-0.4.4}/birder/net/mim/fcmae.py +2 -2
- {birder-0.4.2 → birder-0.4.4}/birder/net/mim/mae_hiera.py +9 -16
- {birder-0.4.2 → birder-0.4.4}/birder/net/nextvit.py +4 -4
- {birder-0.4.2 → birder-0.4.4}/birder/net/rope_deit3.py +1 -1
- {birder-0.4.2 → birder-0.4.4}/birder/net/rope_flexivit.py +1 -1
- {birder-0.4.2 → birder-0.4.4}/birder/net/rope_vit.py +1 -1
- {birder-0.4.2 → birder-0.4.4}/birder/net/squeezenet.py +1 -1
- {birder-0.4.2 → birder-0.4.4}/birder/net/ssl/capi.py +32 -25
- {birder-0.4.2 → birder-0.4.4}/birder/net/ssl/dino_v2.py +12 -15
- {birder-0.4.2 → birder-0.4.4}/birder/net/ssl/franca.py +26 -19
- {birder-0.4.2 → birder-0.4.4}/birder/net/van.py +2 -2
- {birder-0.4.2 → birder-0.4.4}/birder/net/xcit.py +1 -1
- {birder-0.4.2 → birder-0.4.4}/birder/ops/msda.py +46 -16
- birder-0.4.4/birder/results/__init__.py +0 -0
- birder-0.4.4/birder/scripts/__init__.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/scripts/benchmark.py +35 -8
- {birder-0.4.2 → birder-0.4.4}/birder/scripts/predict.py +14 -1
- {birder-0.4.2 → birder-0.4.4}/birder/scripts/predict_detection.py +7 -1
- {birder-0.4.2 → birder-0.4.4}/birder/scripts/train.py +15 -3
- {birder-0.4.2 → birder-0.4.4}/birder/scripts/train_detection.py +16 -6
- {birder-0.4.2 → birder-0.4.4}/birder/scripts/train_franca.py +10 -2
- {birder-0.4.2 → birder-0.4.4}/birder/scripts/train_kd.py +16 -3
- birder-0.4.4/birder/tools/__init__.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/tools/adversarial.py +5 -0
- {birder-0.4.2 → birder-0.4.4}/birder/tools/convert_model.py +101 -43
- {birder-0.4.2 → birder-0.4.4}/birder/tools/quantize_model.py +33 -16
- birder-0.4.4/birder/version.py +1 -0
- {birder-0.4.2 → birder-0.4.4}/birder.egg-info/PKG-INFO +16 -9
- {birder-0.4.2 → birder-0.4.4}/birder.egg-info/SOURCES.txt +25 -1
- {birder-0.4.2 → birder-0.4.4}/birder.egg-info/requires.txt +1 -1
- {birder-0.4.2 → birder-0.4.4}/pyproject.toml +4 -1
- {birder-0.4.2 → birder-0.4.4}/requirements/_requirements-dev.txt +1 -1
- birder-0.4.4/tests/test_eval.py +111 -0
- {birder-0.4.2 → birder-0.4.4}/tests/test_net.py +40 -11
- {birder-0.4.2 → birder-0.4.4}/tests/test_net_detection.py +42 -25
- {birder-0.4.2 → birder-0.4.4}/tests/test_net_ssl.py +72 -14
- birder-0.4.2/birder/scripts/evaluate.py +0 -176
- birder-0.4.2/birder/version.py +0 -1
- {birder-0.4.2 → birder-0.4.4}/LICENSE +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/adversarial/__init__.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/adversarial/base.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/adversarial/deepfool.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/adversarial/fgsm.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/adversarial/pgd.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/adversarial/simba.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/common/__init__.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/common/cli.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/common/lib.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/common/masking.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/conf/__init__.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/conf/settings.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/data/__init__.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/data/collators/__init__.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/data/dataloader/__init__.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/data/dataloader/webdataset.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/data/datasets/__init__.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/data/datasets/coco.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/data/datasets/directory.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/data/datasets/fake.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/data/datasets/webdataset.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/data/transforms/__init__.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/data/transforms/classification.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/data/transforms/detection.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/data/transforms/mosaic.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/datahub/__init__.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/datahub/classification.py +0 -0
- {birder-0.4.2/birder/inference → birder-0.4.4/birder/eval}/__init__.py +0 -0
- {birder-0.4.2/birder/kernels → birder-0.4.4/birder/eval/benchmarks}/__init__.py +0 -0
- {birder-0.4.2/birder/ops → birder-0.4.4/birder/eval/methods}/__init__.py +0 -0
- {birder-0.4.2/birder/results → birder-0.4.4/birder/inference}/__init__.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/inference/data_parallel.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/inference/wbf.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/introspection/__init__.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/introspection/attention_rollout.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/introspection/base.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/introspection/feature_pca.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/introspection/gradcam.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/introspection/guided_backprop.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/introspection/transformer_attribution.py +0 -0
- {birder-0.4.2/birder/scripts → birder-0.4.4/birder/kernels}/__init__.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/kernels/deformable_detr/cpu/ms_deform_attn_cpu.cpp +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/kernels/deformable_detr/cpu/ms_deform_attn_cpu.h +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/kernels/deformable_detr/cuda/ms_deform_attn_cuda.cu +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/kernels/deformable_detr/cuda/ms_deform_attn_cuda.h +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/kernels/deformable_detr/cuda/ms_deform_im2col_cuda.cuh +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/kernels/deformable_detr/ms_deform_attn.h +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/kernels/deformable_detr/vision.cpp +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/kernels/load_kernel.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/kernels/soft_nms/op.cpp +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/kernels/soft_nms/soft_nms.cpp +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/kernels/soft_nms/soft_nms.h +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/kernels/transnext/av_bw_kernel.cu +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/kernels/transnext/av_fw_kernel.cu +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/kernels/transnext/qk_bw_kernel.cu +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/kernels/transnext/qk_fw_kernel.cu +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/kernels/transnext/qk_rpb_bw_kernel.cu +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/kernels/transnext/qk_rpb_fw_kernel.cu +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/kernels/transnext/swattention.cpp +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/layers/__init__.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/layers/activations.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/layers/attention_pool.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/layers/ffn.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/layers/gem.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/layers/layer_norm.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/layers/layer_scale.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/model_registry/__init__.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/model_registry/manifest.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/model_registry/model_registry.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/__init__.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/_rope_vit_configs.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/_vit_configs.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/alexnet.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/base.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/biformer.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/cait.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/cas_vit.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/coat.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/conv2former.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/convmixer.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/convnext_v1.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/convnext_v1_iso.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/convnext_v2.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/crossformer.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/crossvit.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/cspnet.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/darknet.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/davit.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/deit.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/deit3.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/densenet.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/detection/__init__.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/detection/_yolo_anchors.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/detection/ssdlite.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/detection/vitdet.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/dpn.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/edgenext.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/edgevit.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/efficientformer_v1.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/efficientformer_v2.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/efficientnet_lite.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/efficientnet_v1.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/efficientnet_v2.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/efficientvim.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/efficientvit_mit.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/efficientvit_msft.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/fasternet.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/fastvit.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/flexivit.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/focalnet.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/gc_vit.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/ghostnet_v1.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/ghostnet_v2.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/groupmixformer.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/hgnet_v1.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/hgnet_v2.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/hieradet.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/hornet.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/iformer.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/inception_next.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/inception_resnet_v1.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/inception_resnet_v2.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/inception_v3.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/inception_v4.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/levit.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/lit_v1.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/lit_v1_tiny.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/lit_v2.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/metaformer.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/mim/__init__.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/mim/base.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/mim/crossmae.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/mim/mae_vit.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/mim/simmim.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/mnasnet.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/mobilenet_v1.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/mobilenet_v2.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/mobilenet_v3.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/mobilenet_v4.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/mobilenet_v4_hybrid.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/mobileone.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/mobilevit_v1.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/mobilevit_v2.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/moganet.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/mvit_v2.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/nfnet.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/pit.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/pvt_v1.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/pvt_v2.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/rdnet.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/regionvit.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/regnet.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/regnet_z.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/repghost.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/repvgg.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/repvit.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/resmlp.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/resnest.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/resnet_v1.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/resnet_v2.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/resnext.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/sequencer2d.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/shufflenet_v1.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/shufflenet_v2.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/simple_vit.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/smt.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/squeezenext.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/ssl/__init__.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/ssl/barlow_twins.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/ssl/base.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/ssl/byol.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/ssl/data2vec.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/ssl/data2vec2.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/ssl/dino_v1.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/ssl/i_jepa.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/ssl/ibot.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/ssl/mmcr.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/ssl/simclr.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/ssl/sscd.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/ssl/vicreg.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/starnet.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/swiftformer.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/swin_transformer_v1.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/swin_transformer_v2.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/tiny_vit.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/transnext.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/uniformer.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/vgg.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/vgg_reduced.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/vit.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/vit_parallel.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/vit_sam.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/vovnet_v1.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/vovnet_v2.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/wide_resnet.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/net/xception.py +0 -0
- {birder-0.4.2/birder/tools → birder-0.4.4/birder/ops}/__init__.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/ops/soft_nms.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/ops/swattention.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/optim/__init__.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/optim/lamb.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/optim/lars.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/py.typed +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/results/classification.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/results/detection.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/results/gui.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/scheduler/__init__.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/scheduler/cooldown.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/scripts/__main__.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/scripts/train_barlow_twins.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/scripts/train_byol.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/scripts/train_capi.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/scripts/train_data2vec.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/scripts/train_data2vec2.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/scripts/train_dino_v1.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/scripts/train_dino_v2.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/scripts/train_dino_v2_dist.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/scripts/train_i_jepa.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/scripts/train_ibot.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/scripts/train_mim.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/scripts/train_mmcr.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/scripts/train_rotnet.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/scripts/train_simclr.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/scripts/train_vicreg.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/tools/__main__.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/tools/auto_anchors.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/tools/avg_model.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/tools/det_results.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/tools/download_model.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/tools/ensemble_model.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/tools/introspection.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/tools/labelme_to_coco.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/tools/list_models.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/tools/model_info.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/tools/pack.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/tools/results.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/tools/show_det_iterator.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/tools/show_iterator.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/tools/similarity.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/tools/stats.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/tools/verify_coco.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/tools/verify_directory.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder/tools/voc_to_coco.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder.egg-info/dependency_links.txt +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder.egg-info/entry_points.txt +0 -0
- {birder-0.4.2 → birder-0.4.4}/birder.egg-info/top_level.txt +0 -0
- {birder-0.4.2 → birder-0.4.4}/requirements/requirements-hf.txt +0 -0
- {birder-0.4.2 → birder-0.4.4}/requirements/requirements.txt +0 -0
- {birder-0.4.2 → birder-0.4.4}/setup.cfg +0 -0
- {birder-0.4.2 → birder-0.4.4}/tests/test_adversarial.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/tests/test_collators.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/tests/test_common.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/tests/test_dataloaders.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/tests/test_datasets.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/tests/test_inference.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/tests/test_introspection.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/tests/test_kernels.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/tests/test_layers.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/tests/test_model_registry.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/tests/test_net_mim.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/tests/test_ops.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/tests/test_optim.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/tests/test_results.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/tests/test_scheduler.py +0 -0
- {birder-0.4.2 → birder-0.4.4}/tests/test_transforms.py +0 -0
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: birder
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.4
|
|
4
4
|
Summary: An open-source computer vision framework for wildlife image analysis, featuring state-of-the-art models for species classification and detection.
|
|
5
5
|
Author: Ofer Hasson
|
|
6
6
|
License-Expression: Apache-2.0
|
|
7
7
|
Project-URL: Homepage, https://gitlab.com/birder/birder
|
|
8
8
|
Project-URL: Documentation, https://birder.gitlab.io/birder/
|
|
9
9
|
Project-URL: Issues, https://gitlab.com/birder/birder/-/issues
|
|
10
|
-
Keywords: computer-vision,image-classification,object-detection,pytorch,deep-learning
|
|
11
|
-
Classifier: Development Status ::
|
|
10
|
+
Keywords: computer-vision,image-classification,object-detection,self-supervised learning,masked image modeling,pytorch,deep-learning,artificial intelligence
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
12
|
Classifier: Intended Audience :: Science/Research
|
|
13
13
|
Classifier: Intended Audience :: Developers
|
|
14
14
|
Classifier: Intended Audience :: Education
|
|
@@ -48,7 +48,7 @@ Requires-Dist: black~=26.1.0; extra == "dev"
|
|
|
48
48
|
Requires-Dist: build~=1.4.0; extra == "dev"
|
|
49
49
|
Requires-Dist: bumpver~=2025.1131; extra == "dev"
|
|
50
50
|
Requires-Dist: captum~=0.7.0; extra == "dev"
|
|
51
|
-
Requires-Dist: coverage~=7.13.
|
|
51
|
+
Requires-Dist: coverage~=7.13.3; extra == "dev"
|
|
52
52
|
Requires-Dist: debugpy; extra == "dev"
|
|
53
53
|
Requires-Dist: flake8-pep585~=0.1.7; extra == "dev"
|
|
54
54
|
Requires-Dist: flake8~=7.3.0; extra == "dev"
|
|
@@ -87,6 +87,7 @@ An open-source computer vision framework for wildlife image analysis, featuring
|
|
|
87
87
|
- [Getting Started](#getting-started)
|
|
88
88
|
- [Pre-trained Models](#pre-trained-models)
|
|
89
89
|
- [Detection](#detection)
|
|
90
|
+
- [Evaluation](#evaluation)
|
|
90
91
|
- [Project Status and Contributions](#project-status-and-contributions)
|
|
91
92
|
- [Licenses](#licenses)
|
|
92
93
|
- [Acknowledgments](#acknowledgments)
|
|
@@ -117,7 +118,9 @@ The same principle applies to Birder. We stand on the shoulders of giants in the
|
|
|
117
118
|
|
|
118
119
|
## Setup
|
|
119
120
|
|
|
120
|
-
1. Ensure
|
|
121
|
+
1. Ensure your environment meets the minimum requirements:
|
|
122
|
+
- Python 3.11 or newer
|
|
123
|
+
- PyTorch 2.7 or newer (installed for your hardware/driver stack)
|
|
121
124
|
|
|
122
125
|
1. Install the latest Birder version:
|
|
123
126
|
|
|
@@ -212,6 +215,10 @@ For detailed information about these datasets, including descriptions, citations
|
|
|
212
215
|
Detection training and inference are available, see [docs/training_scripts.md](docs/training_scripts.md) and
|
|
213
216
|
[docs/inference.md](docs/inference.md). APIs and model coverage may evolve as detection support matures.
|
|
214
217
|
|
|
218
|
+
## Evaluation
|
|
219
|
+
|
|
220
|
+
Evaluation workflows are documented in [docs/evaluation.md](docs/evaluation.md).
|
|
221
|
+
|
|
215
222
|
## Project Status and Contributions
|
|
216
223
|
|
|
217
224
|
Birder is currently a personal project in active development. As the sole developer, I am focused on building and refining the core functionalities of the framework. At this time, I am not actively seeking external contributors.
|
|
@@ -240,15 +247,15 @@ Files subject to additional license restrictions are marked in their headers. So
|
|
|
240
247
|
|
|
241
248
|
If you think we've missed a reference or a license, please create an issue.
|
|
242
249
|
|
|
243
|
-
###
|
|
250
|
+
### Pre-trained Weights
|
|
244
251
|
|
|
245
|
-
Some of the
|
|
252
|
+
Some of the pre-trained weights available here are pre-trained on ImageNet. ImageNet was released for non-commercial research purposes only (<https://image-net.org/download>). It's not clear what the implications are for the use of pre-trained weights from that dataset. It's best to seek legal advice if you intend to use the pre-trained weights in a commercial product.
|
|
246
253
|
|
|
247
254
|
### Disclaimer
|
|
248
255
|
|
|
249
|
-
If you intend to use Birder, its
|
|
256
|
+
If you intend to use Birder, its pre-trained weights, or any associated datasets in a commercial product, we strongly recommend seeking legal advice to ensure compliance with all relevant licenses and terms of use.
|
|
250
257
|
|
|
251
|
-
It's the user's responsibility to ensure that their use of this project, including any
|
|
258
|
+
It's the user's responsibility to ensure that their use of this project, including any pre-trained weights or datasets, complies with all applicable licenses and legal requirements.
|
|
252
259
|
|
|
253
260
|
## Acknowledgments
|
|
254
261
|
|
|
@@ -7,6 +7,7 @@ An open-source computer vision framework for wildlife image analysis, featuring
|
|
|
7
7
|
- [Getting Started](#getting-started)
|
|
8
8
|
- [Pre-trained Models](#pre-trained-models)
|
|
9
9
|
- [Detection](#detection)
|
|
10
|
+
- [Evaluation](#evaluation)
|
|
10
11
|
- [Project Status and Contributions](#project-status-and-contributions)
|
|
11
12
|
- [Licenses](#licenses)
|
|
12
13
|
- [Acknowledgments](#acknowledgments)
|
|
@@ -37,7 +38,9 @@ The same principle applies to Birder. We stand on the shoulders of giants in the
|
|
|
37
38
|
|
|
38
39
|
## Setup
|
|
39
40
|
|
|
40
|
-
1. Ensure
|
|
41
|
+
1. Ensure your environment meets the minimum requirements:
|
|
42
|
+
- Python 3.11 or newer
|
|
43
|
+
- PyTorch 2.7 or newer (installed for your hardware/driver stack)
|
|
41
44
|
|
|
42
45
|
1. Install the latest Birder version:
|
|
43
46
|
|
|
@@ -132,6 +135,10 @@ For detailed information about these datasets, including descriptions, citations
|
|
|
132
135
|
Detection training and inference are available, see [docs/training_scripts.md](docs/training_scripts.md) and
|
|
133
136
|
[docs/inference.md](docs/inference.md). APIs and model coverage may evolve as detection support matures.
|
|
134
137
|
|
|
138
|
+
## Evaluation
|
|
139
|
+
|
|
140
|
+
Evaluation workflows are documented in [docs/evaluation.md](docs/evaluation.md).
|
|
141
|
+
|
|
135
142
|
## Project Status and Contributions
|
|
136
143
|
|
|
137
144
|
Birder is currently a personal project in active development. As the sole developer, I am focused on building and refining the core functionalities of the framework. At this time, I am not actively seeking external contributors.
|
|
@@ -160,15 +167,15 @@ Files subject to additional license restrictions are marked in their headers. So
|
|
|
160
167
|
|
|
161
168
|
If you think we've missed a reference or a license, please create an issue.
|
|
162
169
|
|
|
163
|
-
###
|
|
170
|
+
### Pre-trained Weights
|
|
164
171
|
|
|
165
|
-
Some of the
|
|
172
|
+
Some of the pre-trained weights available here are pre-trained on ImageNet. ImageNet was released for non-commercial research purposes only (<https://image-net.org/download>). It's not clear what the implications are for the use of pre-trained weights from that dataset. It's best to seek legal advice if you intend to use the pre-trained weights in a commercial product.
|
|
166
173
|
|
|
167
174
|
### Disclaimer
|
|
168
175
|
|
|
169
|
-
If you intend to use Birder, its
|
|
176
|
+
If you intend to use Birder, its pre-trained weights, or any associated datasets in a commercial product, we strongly recommend seeking legal advice to ensure compliance with all relevant licenses and terms of use.
|
|
170
177
|
|
|
171
|
-
It's the user's responsibility to ensure that their use of this project, including any
|
|
178
|
+
It's the user's responsibility to ensure that their use of this project, including any pre-trained weights or datasets, complies with all applicable licenses and legal requirements.
|
|
172
179
|
|
|
173
180
|
## Acknowledgments
|
|
174
181
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from birder.common.fs_ops import load_model_with_cfg
|
|
2
2
|
from birder.common.fs_ops import load_pretrained_model
|
|
3
|
+
from birder.common.fs_ops import load_pretrained_model_and_transform
|
|
3
4
|
from birder.common.lib import get_channels_from_signature
|
|
4
5
|
from birder.common.lib import get_size_from_signature
|
|
5
6
|
from birder.data.transforms.classification import inference_preset as classification_transform
|
|
@@ -17,5 +18,6 @@ __all__ = [
|
|
|
17
18
|
"list_pretrained_models",
|
|
18
19
|
"load_model_with_cfg",
|
|
19
20
|
"load_pretrained_model",
|
|
21
|
+
"load_pretrained_model_and_transform",
|
|
20
22
|
"__version__",
|
|
21
23
|
]
|
|
@@ -2,6 +2,7 @@ import json
|
|
|
2
2
|
import logging
|
|
3
3
|
import os
|
|
4
4
|
import re
|
|
5
|
+
from collections.abc import Callable
|
|
5
6
|
from collections.abc import Iterator
|
|
6
7
|
from pathlib import Path
|
|
7
8
|
from typing import Any
|
|
@@ -24,6 +25,8 @@ from birder.common.lib import get_network_name
|
|
|
24
25
|
from birder.common.lib import get_pretrained_model_url
|
|
25
26
|
from birder.conf import settings
|
|
26
27
|
from birder.data.transforms.classification import RGBType
|
|
28
|
+
from birder.data.transforms.classification import inference_preset
|
|
29
|
+
from birder.data.transforms.detection import InferenceTransform
|
|
27
30
|
from birder.model_registry import Task
|
|
28
31
|
from birder.model_registry import registry
|
|
29
32
|
from birder.model_registry.manifest import FileFormatType
|
|
@@ -801,7 +804,8 @@ def load_detection_model(
|
|
|
801
804
|
for param in net.parameters():
|
|
802
805
|
param.requires_grad_(False)
|
|
803
806
|
|
|
804
|
-
|
|
807
|
+
if pt2 is False: # NOTE: Remove when GraphModule add support for 'eval'
|
|
808
|
+
net.eval()
|
|
805
809
|
|
|
806
810
|
if len(backbone_loaded_config) == 0:
|
|
807
811
|
backbone_custom_config = None
|
|
@@ -918,6 +922,82 @@ def load_pretrained_model(
|
|
|
918
922
|
raise ValueError(f"Unknown model type: {model_metadata['task']}")
|
|
919
923
|
|
|
920
924
|
|
|
925
|
+
def load_pretrained_model_and_transform(
|
|
926
|
+
weights: str,
|
|
927
|
+
*,
|
|
928
|
+
dst: Optional[str | Path] = None,
|
|
929
|
+
file_format: FileFormatType = "pt",
|
|
930
|
+
inference: bool = True,
|
|
931
|
+
device: Optional[torch.device] = None,
|
|
932
|
+
dtype: Optional[torch.dtype] = None,
|
|
933
|
+
custom_config: Optional[dict[str, Any]] = None,
|
|
934
|
+
progress_bar: bool = True,
|
|
935
|
+
classification_kwargs: Optional[dict[str, Any]] = None,
|
|
936
|
+
detection_kwargs: Optional[dict[str, Any]] = None,
|
|
937
|
+
) -> tuple[BaseNet | DetectionBaseNet, ModelInfo | DetectionModelInfo, Callable[..., torch.Tensor]]:
|
|
938
|
+
"""
|
|
939
|
+
Loads a pre-trained model and builds the matching inference transform
|
|
940
|
+
|
|
941
|
+
This is a convenience helper for the common inference path where the model and
|
|
942
|
+
its default preprocessing are needed together. Classification models use
|
|
943
|
+
inference_preset, detection models use InferenceTransform.
|
|
944
|
+
|
|
945
|
+
Parameters
|
|
946
|
+
----------
|
|
947
|
+
weights
|
|
948
|
+
Name of the pre-trained weights to load from the model registry.
|
|
949
|
+
dst
|
|
950
|
+
Destination path where the model weights will be downloaded or loaded from.
|
|
951
|
+
file_format
|
|
952
|
+
Model format (e.g. pt, pt2, safetensors, etc.)
|
|
953
|
+
inference
|
|
954
|
+
Flag to prepare the model for inference mode.
|
|
955
|
+
device
|
|
956
|
+
The device to load the model on (cpu/cuda).
|
|
957
|
+
dtype
|
|
958
|
+
Data type for model parameters and computations (e.g., torch.float32, torch.float16).
|
|
959
|
+
custom_config
|
|
960
|
+
Additional model configuration that overrides or extends the predefined configuration.
|
|
961
|
+
progress_bar
|
|
962
|
+
Whether to display a progress bar during file download.
|
|
963
|
+
classification_kwargs
|
|
964
|
+
Optional keyword arguments forwarded to inference_preset.
|
|
965
|
+
detection_kwargs
|
|
966
|
+
Optional keyword arguments forwarded to InferenceTransform. If dynamic_size is
|
|
967
|
+
not provided it defaults to the model signature value.
|
|
968
|
+
|
|
969
|
+
Returns
|
|
970
|
+
-------
|
|
971
|
+
A tuple containing three elements:
|
|
972
|
+
- A PyTorch module (neural network model) loaded with pre-trained weights.
|
|
973
|
+
- Model info containing class mappings, signature, and RGB stats.
|
|
974
|
+
- An inference transform matching the model task.
|
|
975
|
+
"""
|
|
976
|
+
|
|
977
|
+
net, model_info = load_pretrained_model(
|
|
978
|
+
weights,
|
|
979
|
+
dst=dst,
|
|
980
|
+
file_format=file_format,
|
|
981
|
+
inference=inference,
|
|
982
|
+
device=device,
|
|
983
|
+
dtype=dtype,
|
|
984
|
+
custom_config=custom_config,
|
|
985
|
+
progress_bar=progress_bar,
|
|
986
|
+
)
|
|
987
|
+
|
|
988
|
+
size = lib.get_size_from_signature(model_info.signature)
|
|
989
|
+
transform: Callable[..., torch.Tensor]
|
|
990
|
+
if isinstance(model_info, DetectionModelInfo):
|
|
991
|
+
detection_args = {} if detection_kwargs is None else dict(detection_kwargs)
|
|
992
|
+
detection_args.setdefault("dynamic_size", model_info.signature["dynamic"])
|
|
993
|
+
transform = InferenceTransform(size, model_info.rgb_stats, **detection_args)
|
|
994
|
+
else:
|
|
995
|
+
classification_args = {} if classification_kwargs is None else dict(classification_kwargs)
|
|
996
|
+
transform = inference_preset(size, model_info.rgb_stats, **classification_args)
|
|
997
|
+
|
|
998
|
+
return (net, model_info, transform)
|
|
999
|
+
|
|
1000
|
+
|
|
921
1001
|
def load_model_with_cfg(
|
|
922
1002
|
cfg: dict[str, Any] | str | Path, weights_path: Optional[str | Path]
|
|
923
1003
|
) -> tuple[torch.nn.Module, dict[str, Any]]:
|
|
@@ -485,8 +485,13 @@ def add_dataloader_args(
|
|
|
485
485
|
)
|
|
486
486
|
|
|
487
487
|
|
|
488
|
-
def add_precision_args(parser: argparse.ArgumentParser) -> None:
|
|
488
|
+
def add_precision_args(parser: argparse.ArgumentParser, channels_last: bool = False) -> None:
|
|
489
489
|
group = parser.add_argument_group("Precision parameters")
|
|
490
|
+
if channels_last is True:
|
|
491
|
+
group.add_argument(
|
|
492
|
+
"--channels-last", default=False, action="store_true", help="use channels-last memory format"
|
|
493
|
+
)
|
|
494
|
+
|
|
490
495
|
group.add_argument(
|
|
491
496
|
"--model-dtype",
|
|
492
497
|
type=str,
|
|
@@ -1165,12 +1165,16 @@ def init_training(
|
|
|
1165
1165
|
device_id = torch.cuda.current_device()
|
|
1166
1166
|
|
|
1167
1167
|
if args.use_deterministic_algorithms is True:
|
|
1168
|
+
log.debug("Turning on deterministic algorithms")
|
|
1168
1169
|
torch.backends.cudnn.benchmark = False
|
|
1169
1170
|
torch.use_deterministic_algorithms(True)
|
|
1170
1171
|
elif cudnn_dynamic_size is True:
|
|
1171
1172
|
# Dynamic sizes: avoid per-size algorithm selection overhead.
|
|
1173
|
+
log.debug("Turning off cudnn")
|
|
1172
1174
|
torch.backends.cudnn.enabled = False
|
|
1175
|
+
torch.backends.cudnn.benchmark = False
|
|
1173
1176
|
else:
|
|
1177
|
+
log.debug("Turning on cudnn")
|
|
1174
1178
|
torch.backends.cudnn.enabled = True
|
|
1175
1179
|
torch.backends.cudnn.benchmark = True
|
|
1176
1180
|
|
|
@@ -15,7 +15,9 @@ def collate_fn(batch: list[tuple[Any, ...]]) -> tuple[Any, ...]:
|
|
|
15
15
|
return tuple(zip(*batch))
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
def batch_images(
|
|
18
|
+
def batch_images(
|
|
19
|
+
images: list[torch.Tensor], size_divisible: int
|
|
20
|
+
) -> tuple[torch.Tensor, torch.Tensor, list[tuple[int, int]]]:
|
|
19
21
|
"""
|
|
20
22
|
Batch list of image tensors of different sizes into a single batch.
|
|
21
23
|
Pad with zeros all images to the shape of the largest image in the list.
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
import tarfile
|
|
3
|
+
import zipfile
|
|
3
4
|
from pathlib import Path
|
|
4
5
|
|
|
5
6
|
from birder.common import cli
|
|
@@ -26,9 +27,17 @@ def download_url(url: str, target: str | Path, sha256: str, progress_bar: bool =
|
|
|
26
27
|
|
|
27
28
|
def extract_archive(from_path: str | Path, to_path: str | Path) -> None:
|
|
28
29
|
logger.info(f"Extracting {from_path} to {to_path}")
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
if isinstance(from_path, str):
|
|
31
|
+
from_path = Path(from_path)
|
|
32
|
+
|
|
33
|
+
if from_path.suffix == ".zip":
|
|
34
|
+
with zipfile.ZipFile(from_path, "r") as zf:
|
|
35
|
+
zf.extractall(to_path) # nosec # tarfile_unsafe_members
|
|
36
|
+
|
|
37
|
+
else:
|
|
38
|
+
with tarfile.open(from_path, "r") as tar:
|
|
39
|
+
if hasattr(tarfile, "data_filter") is True:
|
|
40
|
+
tar.extractall(to_path, filter="data")
|
|
41
|
+
else:
|
|
42
|
+
# NOTE: Remove once minimum Python version is 3.12 or above
|
|
43
|
+
tar.extractall(to_path) # nosec # tarfile_unsafe_members
|