birder 0.3.2__tar.gz → 0.3.3__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.3.2 → birder-0.3.3}/PKG-INFO +1 -1
- {birder-0.3.2 → birder-0.3.3}/birder/net/hiera.py +3 -3
- {birder-0.3.2 → birder-0.3.3}/birder/net/hieradet.py +116 -28
- {birder-0.3.2 → birder-0.3.3}/birder/scripts/train.py +17 -15
- {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_kd.py +17 -16
- {birder-0.3.2 → birder-0.3.3}/birder/tools/show_iterator.py +16 -2
- birder-0.3.3/birder/version.py +1 -0
- {birder-0.3.2 → birder-0.3.3}/birder.egg-info/PKG-INFO +1 -1
- {birder-0.3.2 → birder-0.3.3}/tests/test_net.py +4 -0
- birder-0.3.2/birder/version.py +0 -1
- {birder-0.3.2 → birder-0.3.3}/LICENSE +0 -0
- {birder-0.3.2 → birder-0.3.3}/README.md +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/__init__.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/adversarial/__init__.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/adversarial/base.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/adversarial/deepfool.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/adversarial/fgsm.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/adversarial/pgd.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/adversarial/simba.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/common/__init__.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/common/cli.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/common/fs_ops.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/common/lib.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/common/masking.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/common/training_cli.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/common/training_utils.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/conf/__init__.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/conf/settings.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/data/__init__.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/data/collators/__init__.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/data/collators/detection.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/data/dataloader/__init__.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/data/dataloader/webdataset.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/data/datasets/__init__.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/data/datasets/coco.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/data/datasets/directory.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/data/datasets/fake.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/data/datasets/webdataset.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/data/transforms/__init__.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/data/transforms/classification.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/data/transforms/detection.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/data/transforms/mosaic.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/datahub/__init__.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/datahub/_lib.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/datahub/classification.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/inference/__init__.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/inference/classification.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/inference/data_parallel.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/inference/detection.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/inference/wbf.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/introspection/__init__.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/introspection/attention_rollout.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/introspection/base.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/introspection/feature_pca.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/introspection/gradcam.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/introspection/guided_backprop.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/introspection/transformer_attribution.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/kernels/__init__.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/kernels/deformable_detr/cpu/ms_deform_attn_cpu.cpp +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/kernels/deformable_detr/cpu/ms_deform_attn_cpu.h +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/kernels/deformable_detr/cuda/ms_deform_attn_cuda.cu +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/kernels/deformable_detr/cuda/ms_deform_attn_cuda.h +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/kernels/deformable_detr/cuda/ms_deform_im2col_cuda.cuh +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/kernels/deformable_detr/ms_deform_attn.h +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/kernels/deformable_detr/vision.cpp +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/kernels/load_kernel.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/kernels/soft_nms/op.cpp +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/kernels/soft_nms/soft_nms.cpp +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/kernels/soft_nms/soft_nms.h +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/kernels/transnext/av_bw_kernel.cu +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/kernels/transnext/av_fw_kernel.cu +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/kernels/transnext/qk_bw_kernel.cu +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/kernels/transnext/qk_fw_kernel.cu +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/kernels/transnext/qk_rpb_bw_kernel.cu +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/kernels/transnext/qk_rpb_fw_kernel.cu +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/kernels/transnext/swattention.cpp +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/layers/__init__.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/layers/activations.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/layers/attention_pool.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/layers/ffn.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/layers/gem.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/layers/layer_norm.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/layers/layer_scale.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/model_registry/__init__.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/model_registry/manifest.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/model_registry/model_registry.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/__init__.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/alexnet.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/base.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/biformer.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/cait.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/cas_vit.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/coat.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/conv2former.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/convmixer.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/convnext_v1.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/convnext_v2.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/crossformer.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/crossvit.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/cspnet.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/cswin_transformer.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/darknet.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/davit.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/deit.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/deit3.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/densenet.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/detection/__init__.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/detection/base.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/detection/deformable_detr.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/detection/detr.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/detection/efficientdet.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/detection/faster_rcnn.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/detection/fcos.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/detection/retinanet.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/detection/rt_detr_v1.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/detection/ssd.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/detection/ssdlite.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/detection/vitdet.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/detection/yolo_anchors.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/detection/yolo_v2.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/detection/yolo_v3.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/detection/yolo_v4.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/detection/yolo_v4_tiny.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/dpn.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/edgenext.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/edgevit.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/efficientformer_v1.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/efficientformer_v2.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/efficientnet_lite.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/efficientnet_v1.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/efficientnet_v2.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/efficientvim.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/efficientvit_mit.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/efficientvit_msft.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/fasternet.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/fastvit.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/flexivit.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/focalnet.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/gc_vit.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/ghostnet_v1.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/ghostnet_v2.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/groupmixformer.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/hgnet_v1.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/hgnet_v2.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/hornet.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/iformer.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/inception_next.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/inception_resnet_v1.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/inception_resnet_v2.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/inception_v3.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/inception_v4.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/levit.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/lit_v1.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/lit_v1_tiny.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/lit_v2.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/maxvit.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/metaformer.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/mim/__init__.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/mim/base.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/mim/crossmae.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/mim/fcmae.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/mim/mae_hiera.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/mim/mae_vit.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/mim/simmim.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/mnasnet.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/mobilenet_v1.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/mobilenet_v2.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/mobilenet_v3_large.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/mobilenet_v3_small.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/mobilenet_v4.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/mobilenet_v4_hybrid.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/mobileone.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/mobilevit_v1.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/mobilevit_v2.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/moganet.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/mvit_v2.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/nextvit.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/nfnet.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/pit.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/pvt_v1.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/pvt_v2.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/rdnet.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/regionvit.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/regnet.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/regnet_z.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/repghost.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/repvgg.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/repvit.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/resmlp.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/resnest.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/resnet_v1.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/resnet_v2.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/resnext.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/rope_deit3.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/rope_flexivit.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/rope_vit.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/se_resnet_v1.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/se_resnet_v2.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/se_resnext.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/sequencer2d.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/shufflenet_v1.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/shufflenet_v2.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/simple_vit.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/smt.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/squeezenet.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/squeezenext.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/ssl/__init__.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/ssl/barlow_twins.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/ssl/base.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/ssl/byol.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/ssl/capi.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/ssl/data2vec.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/ssl/data2vec2.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/ssl/dino_v1.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/ssl/dino_v2.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/ssl/franca.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/ssl/i_jepa.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/ssl/ibot.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/ssl/mmcr.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/ssl/simclr.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/ssl/sscd.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/ssl/vicreg.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/starnet.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/swiftformer.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/swin_transformer_v1.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/swin_transformer_v2.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/tiny_vit.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/transnext.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/uniformer.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/van.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/vgg.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/vgg_reduced.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/vit.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/vit_parallel.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/vit_sam.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/vovnet_v1.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/vovnet_v2.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/wide_resnet.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/xception.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/net/xcit.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/ops/__init__.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/ops/msda.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/ops/soft_nms.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/ops/swattention.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/optim/__init__.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/optim/lamb.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/optim/lars.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/py.typed +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/results/__init__.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/results/classification.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/results/detection.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/results/gui.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/scheduler/__init__.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/scheduler/cooldown.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/scripts/__init__.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/scripts/__main__.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/scripts/benchmark.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/scripts/evaluate.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/scripts/predict.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/scripts/predict_detection.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_barlow_twins.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_byol.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_capi.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_data2vec.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_data2vec2.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_detection.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_dino_v1.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_dino_v2.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_dino_v2_dist.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_franca.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_i_jepa.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_ibot.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_mim.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_mmcr.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_rotnet.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_simclr.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_vicreg.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/tools/__init__.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/tools/__main__.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/tools/adversarial.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/tools/auto_anchors.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/tools/avg_model.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/tools/convert_model.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/tools/det_results.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/tools/download_model.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/tools/ensemble_model.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/tools/introspection.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/tools/labelme_to_coco.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/tools/list_models.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/tools/model_info.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/tools/pack.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/tools/quantize_model.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/tools/results.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/tools/show_det_iterator.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/tools/similarity.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/tools/stats.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/tools/verify_coco.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/tools/verify_directory.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder/tools/voc_to_coco.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder.egg-info/SOURCES.txt +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder.egg-info/dependency_links.txt +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder.egg-info/entry_points.txt +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder.egg-info/requires.txt +0 -0
- {birder-0.3.2 → birder-0.3.3}/birder.egg-info/top_level.txt +0 -0
- {birder-0.3.2 → birder-0.3.3}/pyproject.toml +0 -0
- {birder-0.3.2 → birder-0.3.3}/requirements/_requirements-dev.txt +0 -0
- {birder-0.3.2 → birder-0.3.3}/requirements/requirements-hf.txt +0 -0
- {birder-0.3.2 → birder-0.3.3}/requirements/requirements.txt +0 -0
- {birder-0.3.2 → birder-0.3.3}/setup.cfg +0 -0
- {birder-0.3.2 → birder-0.3.3}/tests/test_adversarial.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/tests/test_collators.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/tests/test_common.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/tests/test_dataloaders.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/tests/test_datasets.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/tests/test_inference.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/tests/test_introspection.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/tests/test_kernels.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/tests/test_layers.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/tests/test_model_registry.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/tests/test_net_detection.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/tests/test_net_mim.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/tests/test_net_ssl.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/tests/test_ops.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/tests/test_optim.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/tests/test_results.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/tests/test_scheduler.py +0 -0
- {birder-0.3.2 → birder-0.3.3}/tests/test_transforms.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: birder
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.3
|
|
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
|
|
@@ -301,14 +301,14 @@ class HieraBlock(nn.Module):
|
|
|
301
301
|
self.dim = dim
|
|
302
302
|
self.dim_out = dim_out
|
|
303
303
|
|
|
304
|
-
self.norm1 = nn.LayerNorm(dim)
|
|
304
|
+
self.norm1 = nn.LayerNorm(dim, eps=1e-6)
|
|
305
305
|
if dim != dim_out:
|
|
306
306
|
self.proj = nn.Linear(dim, dim_out)
|
|
307
307
|
else:
|
|
308
308
|
self.proj = None
|
|
309
309
|
|
|
310
310
|
self.attn = MaskUnitAttention(dim, dim_out, heads, q_stride, window_size, use_mask_unit_attn)
|
|
311
|
-
self.norm2 = nn.LayerNorm(dim_out)
|
|
311
|
+
self.norm2 = nn.LayerNorm(dim_out, eps=1e-6)
|
|
312
312
|
self.mlp = MLP(dim_out, [int(dim_out * mlp_ratio), dim_out], activation_layer=nn.GELU)
|
|
313
313
|
self.drop_path = StochasticDepth(drop_path, mode="row")
|
|
314
314
|
|
|
@@ -450,7 +450,7 @@ class Hiera(DetectorBackbone, PreTrainEncoder, MaskedTokenOmissionMixin):
|
|
|
450
450
|
self.body = nn.Sequential(stages)
|
|
451
451
|
self.features = nn.Sequential(
|
|
452
452
|
attn_pool if attn_pool is not None else AvgTokens(),
|
|
453
|
-
nn.LayerNorm(embed_dim),
|
|
453
|
+
nn.LayerNorm(embed_dim, eps=1e-6),
|
|
454
454
|
nn.Flatten(1),
|
|
455
455
|
)
|
|
456
456
|
self.return_channels = return_channels
|
|
@@ -125,7 +125,7 @@ class MultiScaleBlock(nn.Module):
|
|
|
125
125
|
self.dim = dim
|
|
126
126
|
self.dim_out = dim_out
|
|
127
127
|
|
|
128
|
-
self.norm1 = nn.LayerNorm(dim)
|
|
128
|
+
self.norm1 = nn.LayerNorm(dim, eps=1e-6)
|
|
129
129
|
if dim != dim_out:
|
|
130
130
|
self.proj = nn.Linear(dim, dim_out)
|
|
131
131
|
else:
|
|
@@ -144,7 +144,7 @@ class MultiScaleBlock(nn.Module):
|
|
|
144
144
|
num_heads=num_heads,
|
|
145
145
|
q_pool=copy.deepcopy(self.pool),
|
|
146
146
|
)
|
|
147
|
-
self.norm2 = nn.LayerNorm(dim_out)
|
|
147
|
+
self.norm2 = nn.LayerNorm(dim_out, eps=1e-6)
|
|
148
148
|
self.mlp = MLP(dim_out, [int(dim_out * mlp_ratio), dim_out], activation_layer=nn.GELU)
|
|
149
149
|
self.drop_path = StochasticDepth(drop_path, mode="row")
|
|
150
150
|
|
|
@@ -173,11 +173,9 @@ class MultiScaleBlock(nn.Module):
|
|
|
173
173
|
if self.q_stride is not None:
|
|
174
174
|
# Shapes have changed due to Q pooling
|
|
175
175
|
window_size = self.window_size // self.q_stride[0]
|
|
176
|
-
|
|
176
|
+
pad_hw = (pad_hw[0] // self.q_stride[0], pad_hw[1] // self.q_stride[1])
|
|
177
177
|
|
|
178
|
-
|
|
179
|
-
pad_w = (window_size - W % window_size) % window_size
|
|
180
|
-
pad_hw = (H + pad_h, W + pad_w)
|
|
178
|
+
(H, W) = (shortcut.size(1), shortcut.size(2))
|
|
181
179
|
|
|
182
180
|
# Reverse window partition
|
|
183
181
|
if self.window_size > 0:
|
|
@@ -271,7 +269,7 @@ class HieraDet(DetectorBackbone, PreTrainEncoder, MaskedTokenRetentionMixin):
|
|
|
271
269
|
|
|
272
270
|
self.body = nn.Sequential(stages)
|
|
273
271
|
self.features = nn.Sequential(
|
|
274
|
-
nn.LayerNorm(embed_dim),
|
|
272
|
+
nn.LayerNorm(embed_dim, eps=1e-6),
|
|
275
273
|
Permute([0, 3, 1, 2]), # B H W C -> B C H W
|
|
276
274
|
nn.AdaptiveAvgPool2d(output_size=(1, 1)),
|
|
277
275
|
nn.Flatten(1),
|
|
@@ -415,7 +413,7 @@ registry.register_model_config(
|
|
|
415
413
|
"num_heads": 1,
|
|
416
414
|
"global_pos_size": (7, 7),
|
|
417
415
|
"global_att_blocks": [5, 7, 9],
|
|
418
|
-
"window_spec": [8, 4,
|
|
416
|
+
"window_spec": [8, 4, 14, 7],
|
|
419
417
|
"drop_path_rate": 0.1,
|
|
420
418
|
},
|
|
421
419
|
)
|
|
@@ -428,7 +426,7 @@ registry.register_model_config(
|
|
|
428
426
|
"num_heads": 1,
|
|
429
427
|
"global_pos_size": (7, 7),
|
|
430
428
|
"global_att_blocks": [7, 10, 13],
|
|
431
|
-
"window_spec": [8, 4,
|
|
429
|
+
"window_spec": [8, 4, 14, 7],
|
|
432
430
|
"drop_path_rate": 0.1,
|
|
433
431
|
},
|
|
434
432
|
)
|
|
@@ -441,7 +439,7 @@ registry.register_model_config(
|
|
|
441
439
|
"num_heads": 1,
|
|
442
440
|
"global_pos_size": (14, 14),
|
|
443
441
|
"global_att_blocks": [12, 16, 20],
|
|
444
|
-
"window_spec": [8, 4,
|
|
442
|
+
"window_spec": [8, 4, 14, 7],
|
|
445
443
|
"drop_path_rate": 0.1,
|
|
446
444
|
},
|
|
447
445
|
)
|
|
@@ -454,7 +452,7 @@ registry.register_model_config(
|
|
|
454
452
|
"num_heads": 2,
|
|
455
453
|
"global_pos_size": (14, 14),
|
|
456
454
|
"global_att_blocks": [12, 16, 20],
|
|
457
|
-
"window_spec": [8, 4,
|
|
455
|
+
"window_spec": [8, 4, 14, 7],
|
|
458
456
|
"drop_path_rate": 0.1,
|
|
459
457
|
},
|
|
460
458
|
)
|
|
@@ -467,17 +465,84 @@ registry.register_model_config(
|
|
|
467
465
|
"num_heads": 2,
|
|
468
466
|
"global_pos_size": (7, 7),
|
|
469
467
|
"global_att_blocks": [23, 33, 43],
|
|
470
|
-
"window_spec": [8, 4,
|
|
468
|
+
"window_spec": [8, 4, 14, 7],
|
|
469
|
+
"drop_path_rate": 0.2,
|
|
470
|
+
},
|
|
471
|
+
)
|
|
472
|
+
|
|
473
|
+
# Dynamic window size
|
|
474
|
+
registry.register_model_config(
|
|
475
|
+
"hieradet_d_tiny",
|
|
476
|
+
HieraDet,
|
|
477
|
+
config={
|
|
478
|
+
"depths": [1, 2, 7, 2],
|
|
479
|
+
"embed_dim": 96,
|
|
480
|
+
"num_heads": 1,
|
|
481
|
+
"global_pos_size": (7, 7),
|
|
482
|
+
"global_att_blocks": [5, 7, 9],
|
|
483
|
+
"window_spec": [8, 4, 0, 0],
|
|
484
|
+
"drop_path_rate": 0.1,
|
|
485
|
+
},
|
|
486
|
+
)
|
|
487
|
+
registry.register_model_config(
|
|
488
|
+
"hieradet_d_small",
|
|
489
|
+
HieraDet,
|
|
490
|
+
config={
|
|
491
|
+
"depths": [1, 2, 11, 2],
|
|
492
|
+
"embed_dim": 96,
|
|
493
|
+
"num_heads": 1,
|
|
494
|
+
"global_pos_size": (7, 7),
|
|
495
|
+
"global_att_blocks": [7, 10, 13],
|
|
496
|
+
"window_spec": [8, 4, 0, 0],
|
|
497
|
+
"drop_path_rate": 0.1,
|
|
498
|
+
},
|
|
499
|
+
)
|
|
500
|
+
registry.register_model_config(
|
|
501
|
+
"hieradet_d_base",
|
|
502
|
+
HieraDet,
|
|
503
|
+
config={
|
|
504
|
+
"depths": [2, 3, 16, 3],
|
|
505
|
+
"embed_dim": 96,
|
|
506
|
+
"num_heads": 1,
|
|
507
|
+
"global_pos_size": (14, 14),
|
|
508
|
+
"global_att_blocks": [12, 16, 20],
|
|
509
|
+
"window_spec": [8, 4, 0, 0],
|
|
510
|
+
"drop_path_rate": 0.1,
|
|
511
|
+
},
|
|
512
|
+
)
|
|
513
|
+
registry.register_model_config(
|
|
514
|
+
"hieradet_d_base_plus",
|
|
515
|
+
HieraDet,
|
|
516
|
+
config={
|
|
517
|
+
"depths": [2, 3, 16, 3],
|
|
518
|
+
"embed_dim": 112,
|
|
519
|
+
"num_heads": 2,
|
|
520
|
+
"global_pos_size": (14, 14),
|
|
521
|
+
"global_att_blocks": [12, 16, 20],
|
|
522
|
+
"window_spec": [8, 4, 0, 0],
|
|
523
|
+
"drop_path_rate": 0.1,
|
|
524
|
+
},
|
|
525
|
+
)
|
|
526
|
+
registry.register_model_config(
|
|
527
|
+
"hieradet_d_large",
|
|
528
|
+
HieraDet,
|
|
529
|
+
config={
|
|
530
|
+
"depths": [2, 6, 36, 4],
|
|
531
|
+
"embed_dim": 144,
|
|
532
|
+
"num_heads": 2,
|
|
533
|
+
"global_pos_size": (7, 7),
|
|
534
|
+
"global_att_blocks": [23, 33, 43],
|
|
535
|
+
"window_spec": [8, 4, 0, 0],
|
|
471
536
|
"drop_path_rate": 0.2,
|
|
472
537
|
},
|
|
473
538
|
)
|
|
474
539
|
|
|
475
540
|
registry.register_weights(
|
|
476
|
-
"
|
|
541
|
+
"hieradet_d_small_dino-v2",
|
|
477
542
|
{
|
|
478
|
-
"url": "https://huggingface.co/birder-project/
|
|
543
|
+
"url": "https://huggingface.co/birder-project/hieradet_d_small_dino-v2/resolve/main",
|
|
479
544
|
"description": (
|
|
480
|
-
"HieraDet small image encoder pre-trained using DINOv2. "
|
|
545
|
+
"HieraDet (d) small image encoder pre-trained using DINOv2. "
|
|
481
546
|
"This model has not been fine-tuned for a specific classification task"
|
|
482
547
|
),
|
|
483
548
|
"resolution": (224, 224),
|
|
@@ -487,14 +552,16 @@ registry.register_weights(
|
|
|
487
552
|
"sha256": "eb41b8a35445e7f350797094d5e365306b29351e64edd4a316420c23d1e17073",
|
|
488
553
|
}
|
|
489
554
|
},
|
|
490
|
-
"net": {"network": "
|
|
555
|
+
"net": {"network": "hieradet_d_small", "tag": "dino-v2"},
|
|
491
556
|
},
|
|
492
557
|
)
|
|
493
558
|
registry.register_weights(
|
|
494
|
-
"
|
|
559
|
+
"hieradet_d_small_dino-v2-inat21-256px",
|
|
495
560
|
{
|
|
496
|
-
"url": "https://huggingface.co/birder-project/
|
|
497
|
-
"description":
|
|
561
|
+
"url": "https://huggingface.co/birder-project/hieradet_d_small_dino-v2-inat21/resolve/main",
|
|
562
|
+
"description": (
|
|
563
|
+
"HieraDet (d) small model pre-trained using DINOv2, then fine-tuned on the iNaturalist 2021 dataset"
|
|
564
|
+
),
|
|
498
565
|
"resolution": (256, 256),
|
|
499
566
|
"formats": {
|
|
500
567
|
"pt": {
|
|
@@ -502,14 +569,16 @@ registry.register_weights(
|
|
|
502
569
|
"sha256": "e1bdeba97eae816ec3ab9b3238d97decf2c34d29b70f9291116ce962b9a4f9df",
|
|
503
570
|
}
|
|
504
571
|
},
|
|
505
|
-
"net": {"network": "
|
|
572
|
+
"net": {"network": "hieradet_d_small", "tag": "dino-v2-inat21-256px"},
|
|
506
573
|
},
|
|
507
574
|
)
|
|
508
575
|
registry.register_weights(
|
|
509
|
-
"
|
|
576
|
+
"hieradet_d_small_dino-v2-inat21",
|
|
510
577
|
{
|
|
511
|
-
"url": "https://huggingface.co/birder-project/
|
|
512
|
-
"description":
|
|
578
|
+
"url": "https://huggingface.co/birder-project/hieradet_d_small_dino-v2-inat21/resolve/main",
|
|
579
|
+
"description": (
|
|
580
|
+
"HieraDet (d) small model pre-trained using DINOv2, then fine-tuned on the iNaturalist 2021 dataset"
|
|
581
|
+
),
|
|
513
582
|
"resolution": (384, 384),
|
|
514
583
|
"formats": {
|
|
515
584
|
"pt": {
|
|
@@ -517,14 +586,14 @@ registry.register_weights(
|
|
|
517
586
|
"sha256": "271fa9ed6a9aa1f4d1fc8bbb4c4cac9d15b264f2ac544efb5cd971412691880d",
|
|
518
587
|
}
|
|
519
588
|
},
|
|
520
|
-
"net": {"network": "
|
|
589
|
+
"net": {"network": "hieradet_d_small", "tag": "dino-v2-inat21"},
|
|
521
590
|
},
|
|
522
591
|
)
|
|
523
592
|
registry.register_weights(
|
|
524
|
-
"
|
|
593
|
+
"hieradet_d_small_dino-v2-imagenet12k",
|
|
525
594
|
{
|
|
526
|
-
"url": "https://huggingface.co/birder-project/
|
|
527
|
-
"description": "HieraDet small model pre-trained using DINOv2, then fine-tuned on the ImageNet-12K dataset",
|
|
595
|
+
"url": "https://huggingface.co/birder-project/hieradet_d_small_dino-v2-imagenet12k/resolve/main",
|
|
596
|
+
"description": "HieraDet (d) small model pre-trained using DINOv2, then fine-tuned on the ImageNet-12K dataset",
|
|
528
597
|
"resolution": (256, 256),
|
|
529
598
|
"formats": {
|
|
530
599
|
"pt": {
|
|
@@ -532,6 +601,25 @@ registry.register_weights(
|
|
|
532
601
|
"sha256": "b89dd6c13d061fe8a09d051bb3d76e632e650067ca71578e37b02033107c9963",
|
|
533
602
|
}
|
|
534
603
|
},
|
|
535
|
-
"net": {"network": "
|
|
604
|
+
"net": {"network": "hieradet_d_small", "tag": "dino-v2-imagenet12k"},
|
|
605
|
+
},
|
|
606
|
+
)
|
|
607
|
+
|
|
608
|
+
registry.register_weights( # SAM v2: https://arxiv.org/abs/2408.00714
|
|
609
|
+
"hieradet_small_sam2_1",
|
|
610
|
+
{
|
|
611
|
+
"url": "https://huggingface.co/birder-project/hieradet_small_sam2_1/resolve/main",
|
|
612
|
+
"description": (
|
|
613
|
+
"HieraDet small image encoder pre-trained by Meta AI using SAM v2. "
|
|
614
|
+
"This model has not been fine-tuned for a specific classification task"
|
|
615
|
+
),
|
|
616
|
+
"resolution": (224, 224),
|
|
617
|
+
"formats": {
|
|
618
|
+
"pt": {
|
|
619
|
+
"file_size": 129.6,
|
|
620
|
+
"sha256": "79b6ffdfd4ea9f3b1489ce5a229fe9756b215fc3b52640d01d64136560c1d341",
|
|
621
|
+
}
|
|
622
|
+
},
|
|
623
|
+
"net": {"network": "hieradet_small", "tag": "sam2_1"},
|
|
536
624
|
},
|
|
537
625
|
)
|
|
@@ -762,47 +762,49 @@ def get_args_parser() -> argparse.ArgumentParser:
|
|
|
762
762
|
epilog=(
|
|
763
763
|
"Usage examples\n"
|
|
764
764
|
"==============\n"
|
|
765
|
-
"Training on image directory
|
|
766
|
-
"python train.py --network densenet_161 --
|
|
765
|
+
"Training on an image directory using default locations:\n"
|
|
766
|
+
"python train.py --network densenet_161 --batch-size 64 --lr-scheduler cosine --smoothing-alpha 0.1\n"
|
|
767
767
|
"\n"
|
|
768
|
-
"A more
|
|
768
|
+
"A more advanced ImageNet example on 2 GPUs using a remote WebDataset:\n"
|
|
769
769
|
"torchrun --nproc_per_node=2 train.py \\\n"
|
|
770
770
|
" --network resnet_v2_50 \\\n"
|
|
771
771
|
" --tag imagenet1k \\\n"
|
|
772
|
+
" --bce-loss --bce-threshold 0.2 \\\n"
|
|
773
|
+
" --batch-size 128 \\\n"
|
|
772
774
|
" --opt lamb \\\n"
|
|
775
|
+
" --grad-accum-steps 4 \\\n"
|
|
773
776
|
" --lr 0.005 \\\n"
|
|
777
|
+
" --wd 0.02 \\\n"
|
|
774
778
|
" --lr-scheduler cosine \\\n"
|
|
775
779
|
" --lr-cosine-min 1e-7 \\\n"
|
|
776
|
-
" --warmup-epochs 5 \\\n"
|
|
777
780
|
" --epochs 300 \\\n"
|
|
778
|
-
" --
|
|
779
|
-
" --grad-accum-steps 4 \\\n"
|
|
780
|
-
" --mixup-alpha 0.1 \\\n"
|
|
781
|
-
" --cutmix \\\n"
|
|
781
|
+
" --warmup-epochs 5 \\\n"
|
|
782
782
|
" --aug-type ra \\\n"
|
|
783
783
|
" --re-prob 0.25 \\\n"
|
|
784
|
+
" --mixup-alpha 0.1 \\\n"
|
|
785
|
+
" --cutmix \\\n"
|
|
784
786
|
" --rgb-mode imagenet \\\n"
|
|
785
|
-
" --
|
|
786
|
-
" --amp \\\n"
|
|
787
|
+
" --amp --amp-dtype bfloat16 \\\n"
|
|
787
788
|
" --compile \\\n"
|
|
788
789
|
" --wds \\\n"
|
|
789
|
-
" --wds-class-file public_datasets_metadata/imagenet-1k-classes.txt \\\n"
|
|
790
790
|
" --wds-info https://huggingface.co/datasets/timm/imagenet-1k-wds/resolve/main/_info.json \\\n"
|
|
791
|
+
" --wds-class-file public_datasets_metadata/imagenet-1k-classes.txt \\\n"
|
|
791
792
|
" --wds-training-split train\n"
|
|
792
793
|
"\n"
|
|
793
|
-
"The script
|
|
794
|
+
"The script can also be invoked as a module:\n"
|
|
794
795
|
"torchrun --nproc_per_node=2 -m birder.scripts.train \\\n"
|
|
795
796
|
" --network regnet_y_8g \\\n"
|
|
797
|
+
" --batch-size 64 \\\n"
|
|
796
798
|
" --lr 0.4 \\\n"
|
|
799
|
+
" --wd 0.00005 \\\n"
|
|
797
800
|
" --lr-scheduler cosine \\\n"
|
|
798
801
|
" --warmup-epochs 5 \\\n"
|
|
799
|
-
" --
|
|
802
|
+
" --aug-level 8 \\\n"
|
|
800
803
|
" --smoothing-alpha 0.1 \\\n"
|
|
801
804
|
" --mixup-alpha 0.2 \\\n"
|
|
802
805
|
" --cutmix \\\n"
|
|
803
|
-
" --aug-level 8 \\\n"
|
|
804
806
|
" --ra-sampler --ra-reps 2 \\\n"
|
|
805
|
-
" --
|
|
807
|
+
" --compile\n"
|
|
806
808
|
),
|
|
807
809
|
formatter_class=cli.ArgumentHelpFormatter,
|
|
808
810
|
)
|
|
@@ -356,7 +356,7 @@ def train(args: argparse.Namespace) -> None:
|
|
|
356
356
|
|
|
357
357
|
# Distillation
|
|
358
358
|
if distillation_type == "soft":
|
|
359
|
-
distillation_criterion = torch.nn.KLDivLoss(reduction="batchmean", log_target=
|
|
359
|
+
distillation_criterion = torch.nn.KLDivLoss(reduction="batchmean", log_target=True)
|
|
360
360
|
elif distillation_type == "hard":
|
|
361
361
|
distillation_criterion = torch.nn.CrossEntropyLoss()
|
|
362
362
|
elif distillation_type == "deit":
|
|
@@ -625,7 +625,7 @@ def train(args: argparse.Namespace) -> None:
|
|
|
625
625
|
with torch.no_grad():
|
|
626
626
|
teacher_outputs = teacher(inputs)
|
|
627
627
|
if distillation_type == "soft":
|
|
628
|
-
teacher_targets = F.
|
|
628
|
+
teacher_targets = F.log_softmax(teacher_outputs / args.temperature, dim=-1)
|
|
629
629
|
else:
|
|
630
630
|
teacher_targets = teacher_outputs.argmax(dim=-1)
|
|
631
631
|
|
|
@@ -900,43 +900,44 @@ def get_args_parser() -> argparse.ArgumentParser:
|
|
|
900
900
|
"A typical 'soft' distillation:\n"
|
|
901
901
|
"torchrun --nproc_per_node=2 train_kd.py \\\n"
|
|
902
902
|
" --type soft \\\n"
|
|
903
|
-
" --temperature 1 \\\n"
|
|
904
903
|
" --teacher vit_l16 \\\n"
|
|
905
904
|
" --student tiny_vit_5m \\\n"
|
|
905
|
+
" --temperature 3.5 \\\n"
|
|
906
|
+
" --batch-size 32 \\\n"
|
|
906
907
|
" --opt adamw \\\n"
|
|
908
|
+
" --clip-grad-norm 5 \\\n"
|
|
907
909
|
" --lr 0.002 \\\n"
|
|
910
|
+
" --wd 0.01 \\\n"
|
|
911
|
+
" --norm-wd 0 \\\n"
|
|
908
912
|
" --lr-scheduler cosine \\\n"
|
|
909
913
|
" --lr-cosine-min 1e-7 \\\n"
|
|
910
|
-
" --batch-size 64 \\\n"
|
|
911
914
|
" --warmup-epochs 5 \\\n"
|
|
912
|
-
" --wd 0.01 \\\n"
|
|
913
|
-
" --norm-wd 0 \\\n"
|
|
914
915
|
" --smoothing-alpha 0.1 \\\n"
|
|
915
|
-
" --
|
|
916
|
-
" --amp \\\n"
|
|
916
|
+
" --amp --amp-dtype bfloat16 \\\n"
|
|
917
917
|
" --compile \\\n"
|
|
918
918
|
" --wds \\\n"
|
|
919
|
-
" --wds-
|
|
920
|
-
" --wds-
|
|
919
|
+
" --wds-info data/intermediate_packed/_info.json \\\n"
|
|
920
|
+
" --wds-class-file data/intermediate_packed/classes.txt\n"
|
|
921
921
|
"\n"
|
|
922
|
-
"DeiT
|
|
922
|
+
"DeiT-style distillation:\n"
|
|
923
923
|
"torchrun --nproc_per_node=2 train_kd.py \\\n"
|
|
924
924
|
" --type deit \\\n"
|
|
925
925
|
" --teacher regnet_y_8g \\\n"
|
|
926
926
|
" --student deit_s16 \\\n"
|
|
927
|
+
" --batch-size 64 \\\n"
|
|
927
928
|
" --opt adamw \\\n"
|
|
929
|
+
" --clip-grad-norm 1 \\\n"
|
|
928
930
|
" --lr 0.0005 \\\n"
|
|
929
|
-
" --lr-scheduler cosine \\\n"
|
|
930
|
-
" --warmup-epochs 5 \\\n"
|
|
931
|
-
" --epochs 300 \\\n"
|
|
932
931
|
" --wd 0.05 \\\n"
|
|
933
932
|
" --norm-wd 0 \\\n"
|
|
933
|
+
" --lr-scheduler cosine \\\n"
|
|
934
|
+
" --epochs 300 \\\n"
|
|
935
|
+
" --warmup-epochs 5 \\\n"
|
|
936
|
+
" --aug-level 8 \\\n"
|
|
934
937
|
" --smoothing-alpha 0.1 \\\n"
|
|
935
938
|
" --mixup-alpha 0.8 \\\n"
|
|
936
|
-
" --aug-level 8 \\\n"
|
|
937
939
|
" --model-ema \\\n"
|
|
938
940
|
" --ra-sampler --ra-reps 2 \\\n"
|
|
939
|
-
" --clip-grad-norm 1 \\\n"
|
|
940
941
|
" --amp \\\n"
|
|
941
942
|
" --compile\n"
|
|
942
943
|
),
|
|
@@ -140,10 +140,16 @@ def show_iterator(args: argparse.Namespace) -> None:
|
|
|
140
140
|
mask_size = (args.size[0] // args.patch_size, args.size[1] // args.patch_size)
|
|
141
141
|
mask_generator: Optional[masking.Masking]
|
|
142
142
|
if args.masking == "uniform":
|
|
143
|
-
mask_generator = masking.UniformMasking(mask_size, args.mask_ratio)
|
|
143
|
+
mask_generator = masking.UniformMasking(mask_size, args.mask_ratio, min_mask_size=args.min_mask_size)
|
|
144
144
|
elif args.masking == "block":
|
|
145
145
|
max_patches = int(args.mask_ratio * mask_size[0] * mask_size[1])
|
|
146
146
|
mask_generator = masking.BlockMasking(mask_size, 4, max_patches, 0.33, 3.33)
|
|
147
|
+
elif args.masking == "roll-block":
|
|
148
|
+
num_masking_patches = int(args.mask_ratio * mask_size[0] * mask_size[1])
|
|
149
|
+
mask_generator = masking.RollBlockMasking(mask_size, num_masking_patches=num_masking_patches)
|
|
150
|
+
elif args.masking == "inverse-roll":
|
|
151
|
+
num_masking_patches = int(args.mask_ratio * mask_size[0] * mask_size[1])
|
|
152
|
+
mask_generator = masking.InverseRollBlockMasking(mask_size, num_masking_patches=num_masking_patches)
|
|
147
153
|
else:
|
|
148
154
|
mask_generator = None
|
|
149
155
|
|
|
@@ -206,8 +212,16 @@ def set_parser(subparsers: Any) -> None:
|
|
|
206
212
|
)
|
|
207
213
|
subparser.add_argument("--mixup-alpha", type=float, help="mixup alpha")
|
|
208
214
|
subparser.add_argument("--cutmix", default=False, action="store_true", help="enable cutmix")
|
|
209
|
-
subparser.add_argument(
|
|
215
|
+
subparser.add_argument(
|
|
216
|
+
"--masking",
|
|
217
|
+
type=str,
|
|
218
|
+
choices=["uniform", "block", "roll-block", "inverse-roll"],
|
|
219
|
+
help="masking strategy to apply",
|
|
220
|
+
)
|
|
210
221
|
subparser.add_argument("--mask-ratio", type=float, default=0.5, help="mask ratio")
|
|
222
|
+
subparser.add_argument(
|
|
223
|
+
"--min-mask-size", type=int, default=1, help="minimum mask unit size in patches (uniform only)"
|
|
224
|
+
)
|
|
211
225
|
subparser.add_argument("--patch-size", type=int, default=16, help="mask base patch size")
|
|
212
226
|
subparser.add_argument(
|
|
213
227
|
"--data-path", type=str, default=str(settings.TRAINING_DATA_PATH), help="image directory path"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "v0.3.3"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: birder
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.3
|
|
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
|
|
@@ -71,6 +71,7 @@ NET_TEST_CASES = [
|
|
|
71
71
|
("hiera_abswin_tiny"), # No bfloat16 support
|
|
72
72
|
("hiera_abswin_base_plus_ap"), # No bfloat16 support
|
|
73
73
|
("hieradet_tiny"),
|
|
74
|
+
("hieradet_d_tiny"),
|
|
74
75
|
("hornet_tiny_7x7"),
|
|
75
76
|
("hornet_tiny_gf"), # PT2 fails, no bfloat16 support
|
|
76
77
|
("iformer_s"),
|
|
@@ -400,6 +401,7 @@ class TestNet(unittest.TestCase):
|
|
|
400
401
|
("hiera_abswin_tiny"),
|
|
401
402
|
("hiera_abswin_base_plus_ap"),
|
|
402
403
|
("hieradet_tiny"),
|
|
404
|
+
("hieradet_d_tiny"),
|
|
403
405
|
("hornet_tiny_7x7"),
|
|
404
406
|
("hornet_tiny_gf"),
|
|
405
407
|
("iformer_s"),
|
|
@@ -575,6 +577,7 @@ class TestNet(unittest.TestCase):
|
|
|
575
577
|
("focalnet_t_srf"),
|
|
576
578
|
("gc_vit_xxt"),
|
|
577
579
|
("hieradet_tiny"),
|
|
580
|
+
("hieradet_d_tiny"),
|
|
578
581
|
("iformer_s"),
|
|
579
582
|
("maxvit_t"),
|
|
580
583
|
("poolformer_v1_s12"),
|
|
@@ -793,6 +796,7 @@ class TestNonSquareNet(unittest.TestCase):
|
|
|
793
796
|
("hiera_abswin_tiny"),
|
|
794
797
|
("hiera_abswin_base_plus_ap"),
|
|
795
798
|
("hieradet_tiny"),
|
|
799
|
+
("hieradet_d_tiny"),
|
|
796
800
|
("hornet_tiny_7x7"),
|
|
797
801
|
("hornet_tiny_gf"),
|
|
798
802
|
("iformer_s"),
|
birder-0.3.2/birder/version.py
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "v0.3.2"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|