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.
Files changed (327) hide show
  1. {birder-0.3.2 → birder-0.3.3}/PKG-INFO +1 -1
  2. {birder-0.3.2 → birder-0.3.3}/birder/net/hiera.py +3 -3
  3. {birder-0.3.2 → birder-0.3.3}/birder/net/hieradet.py +116 -28
  4. {birder-0.3.2 → birder-0.3.3}/birder/scripts/train.py +17 -15
  5. {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_kd.py +17 -16
  6. {birder-0.3.2 → birder-0.3.3}/birder/tools/show_iterator.py +16 -2
  7. birder-0.3.3/birder/version.py +1 -0
  8. {birder-0.3.2 → birder-0.3.3}/birder.egg-info/PKG-INFO +1 -1
  9. {birder-0.3.2 → birder-0.3.3}/tests/test_net.py +4 -0
  10. birder-0.3.2/birder/version.py +0 -1
  11. {birder-0.3.2 → birder-0.3.3}/LICENSE +0 -0
  12. {birder-0.3.2 → birder-0.3.3}/README.md +0 -0
  13. {birder-0.3.2 → birder-0.3.3}/birder/__init__.py +0 -0
  14. {birder-0.3.2 → birder-0.3.3}/birder/adversarial/__init__.py +0 -0
  15. {birder-0.3.2 → birder-0.3.3}/birder/adversarial/base.py +0 -0
  16. {birder-0.3.2 → birder-0.3.3}/birder/adversarial/deepfool.py +0 -0
  17. {birder-0.3.2 → birder-0.3.3}/birder/adversarial/fgsm.py +0 -0
  18. {birder-0.3.2 → birder-0.3.3}/birder/adversarial/pgd.py +0 -0
  19. {birder-0.3.2 → birder-0.3.3}/birder/adversarial/simba.py +0 -0
  20. {birder-0.3.2 → birder-0.3.3}/birder/common/__init__.py +0 -0
  21. {birder-0.3.2 → birder-0.3.3}/birder/common/cli.py +0 -0
  22. {birder-0.3.2 → birder-0.3.3}/birder/common/fs_ops.py +0 -0
  23. {birder-0.3.2 → birder-0.3.3}/birder/common/lib.py +0 -0
  24. {birder-0.3.2 → birder-0.3.3}/birder/common/masking.py +0 -0
  25. {birder-0.3.2 → birder-0.3.3}/birder/common/training_cli.py +0 -0
  26. {birder-0.3.2 → birder-0.3.3}/birder/common/training_utils.py +0 -0
  27. {birder-0.3.2 → birder-0.3.3}/birder/conf/__init__.py +0 -0
  28. {birder-0.3.2 → birder-0.3.3}/birder/conf/settings.py +0 -0
  29. {birder-0.3.2 → birder-0.3.3}/birder/data/__init__.py +0 -0
  30. {birder-0.3.2 → birder-0.3.3}/birder/data/collators/__init__.py +0 -0
  31. {birder-0.3.2 → birder-0.3.3}/birder/data/collators/detection.py +0 -0
  32. {birder-0.3.2 → birder-0.3.3}/birder/data/dataloader/__init__.py +0 -0
  33. {birder-0.3.2 → birder-0.3.3}/birder/data/dataloader/webdataset.py +0 -0
  34. {birder-0.3.2 → birder-0.3.3}/birder/data/datasets/__init__.py +0 -0
  35. {birder-0.3.2 → birder-0.3.3}/birder/data/datasets/coco.py +0 -0
  36. {birder-0.3.2 → birder-0.3.3}/birder/data/datasets/directory.py +0 -0
  37. {birder-0.3.2 → birder-0.3.3}/birder/data/datasets/fake.py +0 -0
  38. {birder-0.3.2 → birder-0.3.3}/birder/data/datasets/webdataset.py +0 -0
  39. {birder-0.3.2 → birder-0.3.3}/birder/data/transforms/__init__.py +0 -0
  40. {birder-0.3.2 → birder-0.3.3}/birder/data/transforms/classification.py +0 -0
  41. {birder-0.3.2 → birder-0.3.3}/birder/data/transforms/detection.py +0 -0
  42. {birder-0.3.2 → birder-0.3.3}/birder/data/transforms/mosaic.py +0 -0
  43. {birder-0.3.2 → birder-0.3.3}/birder/datahub/__init__.py +0 -0
  44. {birder-0.3.2 → birder-0.3.3}/birder/datahub/_lib.py +0 -0
  45. {birder-0.3.2 → birder-0.3.3}/birder/datahub/classification.py +0 -0
  46. {birder-0.3.2 → birder-0.3.3}/birder/inference/__init__.py +0 -0
  47. {birder-0.3.2 → birder-0.3.3}/birder/inference/classification.py +0 -0
  48. {birder-0.3.2 → birder-0.3.3}/birder/inference/data_parallel.py +0 -0
  49. {birder-0.3.2 → birder-0.3.3}/birder/inference/detection.py +0 -0
  50. {birder-0.3.2 → birder-0.3.3}/birder/inference/wbf.py +0 -0
  51. {birder-0.3.2 → birder-0.3.3}/birder/introspection/__init__.py +0 -0
  52. {birder-0.3.2 → birder-0.3.3}/birder/introspection/attention_rollout.py +0 -0
  53. {birder-0.3.2 → birder-0.3.3}/birder/introspection/base.py +0 -0
  54. {birder-0.3.2 → birder-0.3.3}/birder/introspection/feature_pca.py +0 -0
  55. {birder-0.3.2 → birder-0.3.3}/birder/introspection/gradcam.py +0 -0
  56. {birder-0.3.2 → birder-0.3.3}/birder/introspection/guided_backprop.py +0 -0
  57. {birder-0.3.2 → birder-0.3.3}/birder/introspection/transformer_attribution.py +0 -0
  58. {birder-0.3.2 → birder-0.3.3}/birder/kernels/__init__.py +0 -0
  59. {birder-0.3.2 → birder-0.3.3}/birder/kernels/deformable_detr/cpu/ms_deform_attn_cpu.cpp +0 -0
  60. {birder-0.3.2 → birder-0.3.3}/birder/kernels/deformable_detr/cpu/ms_deform_attn_cpu.h +0 -0
  61. {birder-0.3.2 → birder-0.3.3}/birder/kernels/deformable_detr/cuda/ms_deform_attn_cuda.cu +0 -0
  62. {birder-0.3.2 → birder-0.3.3}/birder/kernels/deformable_detr/cuda/ms_deform_attn_cuda.h +0 -0
  63. {birder-0.3.2 → birder-0.3.3}/birder/kernels/deformable_detr/cuda/ms_deform_im2col_cuda.cuh +0 -0
  64. {birder-0.3.2 → birder-0.3.3}/birder/kernels/deformable_detr/ms_deform_attn.h +0 -0
  65. {birder-0.3.2 → birder-0.3.3}/birder/kernels/deformable_detr/vision.cpp +0 -0
  66. {birder-0.3.2 → birder-0.3.3}/birder/kernels/load_kernel.py +0 -0
  67. {birder-0.3.2 → birder-0.3.3}/birder/kernels/soft_nms/op.cpp +0 -0
  68. {birder-0.3.2 → birder-0.3.3}/birder/kernels/soft_nms/soft_nms.cpp +0 -0
  69. {birder-0.3.2 → birder-0.3.3}/birder/kernels/soft_nms/soft_nms.h +0 -0
  70. {birder-0.3.2 → birder-0.3.3}/birder/kernels/transnext/av_bw_kernel.cu +0 -0
  71. {birder-0.3.2 → birder-0.3.3}/birder/kernels/transnext/av_fw_kernel.cu +0 -0
  72. {birder-0.3.2 → birder-0.3.3}/birder/kernels/transnext/qk_bw_kernel.cu +0 -0
  73. {birder-0.3.2 → birder-0.3.3}/birder/kernels/transnext/qk_fw_kernel.cu +0 -0
  74. {birder-0.3.2 → birder-0.3.3}/birder/kernels/transnext/qk_rpb_bw_kernel.cu +0 -0
  75. {birder-0.3.2 → birder-0.3.3}/birder/kernels/transnext/qk_rpb_fw_kernel.cu +0 -0
  76. {birder-0.3.2 → birder-0.3.3}/birder/kernels/transnext/swattention.cpp +0 -0
  77. {birder-0.3.2 → birder-0.3.3}/birder/layers/__init__.py +0 -0
  78. {birder-0.3.2 → birder-0.3.3}/birder/layers/activations.py +0 -0
  79. {birder-0.3.2 → birder-0.3.3}/birder/layers/attention_pool.py +0 -0
  80. {birder-0.3.2 → birder-0.3.3}/birder/layers/ffn.py +0 -0
  81. {birder-0.3.2 → birder-0.3.3}/birder/layers/gem.py +0 -0
  82. {birder-0.3.2 → birder-0.3.3}/birder/layers/layer_norm.py +0 -0
  83. {birder-0.3.2 → birder-0.3.3}/birder/layers/layer_scale.py +0 -0
  84. {birder-0.3.2 → birder-0.3.3}/birder/model_registry/__init__.py +0 -0
  85. {birder-0.3.2 → birder-0.3.3}/birder/model_registry/manifest.py +0 -0
  86. {birder-0.3.2 → birder-0.3.3}/birder/model_registry/model_registry.py +0 -0
  87. {birder-0.3.2 → birder-0.3.3}/birder/net/__init__.py +0 -0
  88. {birder-0.3.2 → birder-0.3.3}/birder/net/alexnet.py +0 -0
  89. {birder-0.3.2 → birder-0.3.3}/birder/net/base.py +0 -0
  90. {birder-0.3.2 → birder-0.3.3}/birder/net/biformer.py +0 -0
  91. {birder-0.3.2 → birder-0.3.3}/birder/net/cait.py +0 -0
  92. {birder-0.3.2 → birder-0.3.3}/birder/net/cas_vit.py +0 -0
  93. {birder-0.3.2 → birder-0.3.3}/birder/net/coat.py +0 -0
  94. {birder-0.3.2 → birder-0.3.3}/birder/net/conv2former.py +0 -0
  95. {birder-0.3.2 → birder-0.3.3}/birder/net/convmixer.py +0 -0
  96. {birder-0.3.2 → birder-0.3.3}/birder/net/convnext_v1.py +0 -0
  97. {birder-0.3.2 → birder-0.3.3}/birder/net/convnext_v2.py +0 -0
  98. {birder-0.3.2 → birder-0.3.3}/birder/net/crossformer.py +0 -0
  99. {birder-0.3.2 → birder-0.3.3}/birder/net/crossvit.py +0 -0
  100. {birder-0.3.2 → birder-0.3.3}/birder/net/cspnet.py +0 -0
  101. {birder-0.3.2 → birder-0.3.3}/birder/net/cswin_transformer.py +0 -0
  102. {birder-0.3.2 → birder-0.3.3}/birder/net/darknet.py +0 -0
  103. {birder-0.3.2 → birder-0.3.3}/birder/net/davit.py +0 -0
  104. {birder-0.3.2 → birder-0.3.3}/birder/net/deit.py +0 -0
  105. {birder-0.3.2 → birder-0.3.3}/birder/net/deit3.py +0 -0
  106. {birder-0.3.2 → birder-0.3.3}/birder/net/densenet.py +0 -0
  107. {birder-0.3.2 → birder-0.3.3}/birder/net/detection/__init__.py +0 -0
  108. {birder-0.3.2 → birder-0.3.3}/birder/net/detection/base.py +0 -0
  109. {birder-0.3.2 → birder-0.3.3}/birder/net/detection/deformable_detr.py +0 -0
  110. {birder-0.3.2 → birder-0.3.3}/birder/net/detection/detr.py +0 -0
  111. {birder-0.3.2 → birder-0.3.3}/birder/net/detection/efficientdet.py +0 -0
  112. {birder-0.3.2 → birder-0.3.3}/birder/net/detection/faster_rcnn.py +0 -0
  113. {birder-0.3.2 → birder-0.3.3}/birder/net/detection/fcos.py +0 -0
  114. {birder-0.3.2 → birder-0.3.3}/birder/net/detection/retinanet.py +0 -0
  115. {birder-0.3.2 → birder-0.3.3}/birder/net/detection/rt_detr_v1.py +0 -0
  116. {birder-0.3.2 → birder-0.3.3}/birder/net/detection/ssd.py +0 -0
  117. {birder-0.3.2 → birder-0.3.3}/birder/net/detection/ssdlite.py +0 -0
  118. {birder-0.3.2 → birder-0.3.3}/birder/net/detection/vitdet.py +0 -0
  119. {birder-0.3.2 → birder-0.3.3}/birder/net/detection/yolo_anchors.py +0 -0
  120. {birder-0.3.2 → birder-0.3.3}/birder/net/detection/yolo_v2.py +0 -0
  121. {birder-0.3.2 → birder-0.3.3}/birder/net/detection/yolo_v3.py +0 -0
  122. {birder-0.3.2 → birder-0.3.3}/birder/net/detection/yolo_v4.py +0 -0
  123. {birder-0.3.2 → birder-0.3.3}/birder/net/detection/yolo_v4_tiny.py +0 -0
  124. {birder-0.3.2 → birder-0.3.3}/birder/net/dpn.py +0 -0
  125. {birder-0.3.2 → birder-0.3.3}/birder/net/edgenext.py +0 -0
  126. {birder-0.3.2 → birder-0.3.3}/birder/net/edgevit.py +0 -0
  127. {birder-0.3.2 → birder-0.3.3}/birder/net/efficientformer_v1.py +0 -0
  128. {birder-0.3.2 → birder-0.3.3}/birder/net/efficientformer_v2.py +0 -0
  129. {birder-0.3.2 → birder-0.3.3}/birder/net/efficientnet_lite.py +0 -0
  130. {birder-0.3.2 → birder-0.3.3}/birder/net/efficientnet_v1.py +0 -0
  131. {birder-0.3.2 → birder-0.3.3}/birder/net/efficientnet_v2.py +0 -0
  132. {birder-0.3.2 → birder-0.3.3}/birder/net/efficientvim.py +0 -0
  133. {birder-0.3.2 → birder-0.3.3}/birder/net/efficientvit_mit.py +0 -0
  134. {birder-0.3.2 → birder-0.3.3}/birder/net/efficientvit_msft.py +0 -0
  135. {birder-0.3.2 → birder-0.3.3}/birder/net/fasternet.py +0 -0
  136. {birder-0.3.2 → birder-0.3.3}/birder/net/fastvit.py +0 -0
  137. {birder-0.3.2 → birder-0.3.3}/birder/net/flexivit.py +0 -0
  138. {birder-0.3.2 → birder-0.3.3}/birder/net/focalnet.py +0 -0
  139. {birder-0.3.2 → birder-0.3.3}/birder/net/gc_vit.py +0 -0
  140. {birder-0.3.2 → birder-0.3.3}/birder/net/ghostnet_v1.py +0 -0
  141. {birder-0.3.2 → birder-0.3.3}/birder/net/ghostnet_v2.py +0 -0
  142. {birder-0.3.2 → birder-0.3.3}/birder/net/groupmixformer.py +0 -0
  143. {birder-0.3.2 → birder-0.3.3}/birder/net/hgnet_v1.py +0 -0
  144. {birder-0.3.2 → birder-0.3.3}/birder/net/hgnet_v2.py +0 -0
  145. {birder-0.3.2 → birder-0.3.3}/birder/net/hornet.py +0 -0
  146. {birder-0.3.2 → birder-0.3.3}/birder/net/iformer.py +0 -0
  147. {birder-0.3.2 → birder-0.3.3}/birder/net/inception_next.py +0 -0
  148. {birder-0.3.2 → birder-0.3.3}/birder/net/inception_resnet_v1.py +0 -0
  149. {birder-0.3.2 → birder-0.3.3}/birder/net/inception_resnet_v2.py +0 -0
  150. {birder-0.3.2 → birder-0.3.3}/birder/net/inception_v3.py +0 -0
  151. {birder-0.3.2 → birder-0.3.3}/birder/net/inception_v4.py +0 -0
  152. {birder-0.3.2 → birder-0.3.3}/birder/net/levit.py +0 -0
  153. {birder-0.3.2 → birder-0.3.3}/birder/net/lit_v1.py +0 -0
  154. {birder-0.3.2 → birder-0.3.3}/birder/net/lit_v1_tiny.py +0 -0
  155. {birder-0.3.2 → birder-0.3.3}/birder/net/lit_v2.py +0 -0
  156. {birder-0.3.2 → birder-0.3.3}/birder/net/maxvit.py +0 -0
  157. {birder-0.3.2 → birder-0.3.3}/birder/net/metaformer.py +0 -0
  158. {birder-0.3.2 → birder-0.3.3}/birder/net/mim/__init__.py +0 -0
  159. {birder-0.3.2 → birder-0.3.3}/birder/net/mim/base.py +0 -0
  160. {birder-0.3.2 → birder-0.3.3}/birder/net/mim/crossmae.py +0 -0
  161. {birder-0.3.2 → birder-0.3.3}/birder/net/mim/fcmae.py +0 -0
  162. {birder-0.3.2 → birder-0.3.3}/birder/net/mim/mae_hiera.py +0 -0
  163. {birder-0.3.2 → birder-0.3.3}/birder/net/mim/mae_vit.py +0 -0
  164. {birder-0.3.2 → birder-0.3.3}/birder/net/mim/simmim.py +0 -0
  165. {birder-0.3.2 → birder-0.3.3}/birder/net/mnasnet.py +0 -0
  166. {birder-0.3.2 → birder-0.3.3}/birder/net/mobilenet_v1.py +0 -0
  167. {birder-0.3.2 → birder-0.3.3}/birder/net/mobilenet_v2.py +0 -0
  168. {birder-0.3.2 → birder-0.3.3}/birder/net/mobilenet_v3_large.py +0 -0
  169. {birder-0.3.2 → birder-0.3.3}/birder/net/mobilenet_v3_small.py +0 -0
  170. {birder-0.3.2 → birder-0.3.3}/birder/net/mobilenet_v4.py +0 -0
  171. {birder-0.3.2 → birder-0.3.3}/birder/net/mobilenet_v4_hybrid.py +0 -0
  172. {birder-0.3.2 → birder-0.3.3}/birder/net/mobileone.py +0 -0
  173. {birder-0.3.2 → birder-0.3.3}/birder/net/mobilevit_v1.py +0 -0
  174. {birder-0.3.2 → birder-0.3.3}/birder/net/mobilevit_v2.py +0 -0
  175. {birder-0.3.2 → birder-0.3.3}/birder/net/moganet.py +0 -0
  176. {birder-0.3.2 → birder-0.3.3}/birder/net/mvit_v2.py +0 -0
  177. {birder-0.3.2 → birder-0.3.3}/birder/net/nextvit.py +0 -0
  178. {birder-0.3.2 → birder-0.3.3}/birder/net/nfnet.py +0 -0
  179. {birder-0.3.2 → birder-0.3.3}/birder/net/pit.py +0 -0
  180. {birder-0.3.2 → birder-0.3.3}/birder/net/pvt_v1.py +0 -0
  181. {birder-0.3.2 → birder-0.3.3}/birder/net/pvt_v2.py +0 -0
  182. {birder-0.3.2 → birder-0.3.3}/birder/net/rdnet.py +0 -0
  183. {birder-0.3.2 → birder-0.3.3}/birder/net/regionvit.py +0 -0
  184. {birder-0.3.2 → birder-0.3.3}/birder/net/regnet.py +0 -0
  185. {birder-0.3.2 → birder-0.3.3}/birder/net/regnet_z.py +0 -0
  186. {birder-0.3.2 → birder-0.3.3}/birder/net/repghost.py +0 -0
  187. {birder-0.3.2 → birder-0.3.3}/birder/net/repvgg.py +0 -0
  188. {birder-0.3.2 → birder-0.3.3}/birder/net/repvit.py +0 -0
  189. {birder-0.3.2 → birder-0.3.3}/birder/net/resmlp.py +0 -0
  190. {birder-0.3.2 → birder-0.3.3}/birder/net/resnest.py +0 -0
  191. {birder-0.3.2 → birder-0.3.3}/birder/net/resnet_v1.py +0 -0
  192. {birder-0.3.2 → birder-0.3.3}/birder/net/resnet_v2.py +0 -0
  193. {birder-0.3.2 → birder-0.3.3}/birder/net/resnext.py +0 -0
  194. {birder-0.3.2 → birder-0.3.3}/birder/net/rope_deit3.py +0 -0
  195. {birder-0.3.2 → birder-0.3.3}/birder/net/rope_flexivit.py +0 -0
  196. {birder-0.3.2 → birder-0.3.3}/birder/net/rope_vit.py +0 -0
  197. {birder-0.3.2 → birder-0.3.3}/birder/net/se_resnet_v1.py +0 -0
  198. {birder-0.3.2 → birder-0.3.3}/birder/net/se_resnet_v2.py +0 -0
  199. {birder-0.3.2 → birder-0.3.3}/birder/net/se_resnext.py +0 -0
  200. {birder-0.3.2 → birder-0.3.3}/birder/net/sequencer2d.py +0 -0
  201. {birder-0.3.2 → birder-0.3.3}/birder/net/shufflenet_v1.py +0 -0
  202. {birder-0.3.2 → birder-0.3.3}/birder/net/shufflenet_v2.py +0 -0
  203. {birder-0.3.2 → birder-0.3.3}/birder/net/simple_vit.py +0 -0
  204. {birder-0.3.2 → birder-0.3.3}/birder/net/smt.py +0 -0
  205. {birder-0.3.2 → birder-0.3.3}/birder/net/squeezenet.py +0 -0
  206. {birder-0.3.2 → birder-0.3.3}/birder/net/squeezenext.py +0 -0
  207. {birder-0.3.2 → birder-0.3.3}/birder/net/ssl/__init__.py +0 -0
  208. {birder-0.3.2 → birder-0.3.3}/birder/net/ssl/barlow_twins.py +0 -0
  209. {birder-0.3.2 → birder-0.3.3}/birder/net/ssl/base.py +0 -0
  210. {birder-0.3.2 → birder-0.3.3}/birder/net/ssl/byol.py +0 -0
  211. {birder-0.3.2 → birder-0.3.3}/birder/net/ssl/capi.py +0 -0
  212. {birder-0.3.2 → birder-0.3.3}/birder/net/ssl/data2vec.py +0 -0
  213. {birder-0.3.2 → birder-0.3.3}/birder/net/ssl/data2vec2.py +0 -0
  214. {birder-0.3.2 → birder-0.3.3}/birder/net/ssl/dino_v1.py +0 -0
  215. {birder-0.3.2 → birder-0.3.3}/birder/net/ssl/dino_v2.py +0 -0
  216. {birder-0.3.2 → birder-0.3.3}/birder/net/ssl/franca.py +0 -0
  217. {birder-0.3.2 → birder-0.3.3}/birder/net/ssl/i_jepa.py +0 -0
  218. {birder-0.3.2 → birder-0.3.3}/birder/net/ssl/ibot.py +0 -0
  219. {birder-0.3.2 → birder-0.3.3}/birder/net/ssl/mmcr.py +0 -0
  220. {birder-0.3.2 → birder-0.3.3}/birder/net/ssl/simclr.py +0 -0
  221. {birder-0.3.2 → birder-0.3.3}/birder/net/ssl/sscd.py +0 -0
  222. {birder-0.3.2 → birder-0.3.3}/birder/net/ssl/vicreg.py +0 -0
  223. {birder-0.3.2 → birder-0.3.3}/birder/net/starnet.py +0 -0
  224. {birder-0.3.2 → birder-0.3.3}/birder/net/swiftformer.py +0 -0
  225. {birder-0.3.2 → birder-0.3.3}/birder/net/swin_transformer_v1.py +0 -0
  226. {birder-0.3.2 → birder-0.3.3}/birder/net/swin_transformer_v2.py +0 -0
  227. {birder-0.3.2 → birder-0.3.3}/birder/net/tiny_vit.py +0 -0
  228. {birder-0.3.2 → birder-0.3.3}/birder/net/transnext.py +0 -0
  229. {birder-0.3.2 → birder-0.3.3}/birder/net/uniformer.py +0 -0
  230. {birder-0.3.2 → birder-0.3.3}/birder/net/van.py +0 -0
  231. {birder-0.3.2 → birder-0.3.3}/birder/net/vgg.py +0 -0
  232. {birder-0.3.2 → birder-0.3.3}/birder/net/vgg_reduced.py +0 -0
  233. {birder-0.3.2 → birder-0.3.3}/birder/net/vit.py +0 -0
  234. {birder-0.3.2 → birder-0.3.3}/birder/net/vit_parallel.py +0 -0
  235. {birder-0.3.2 → birder-0.3.3}/birder/net/vit_sam.py +0 -0
  236. {birder-0.3.2 → birder-0.3.3}/birder/net/vovnet_v1.py +0 -0
  237. {birder-0.3.2 → birder-0.3.3}/birder/net/vovnet_v2.py +0 -0
  238. {birder-0.3.2 → birder-0.3.3}/birder/net/wide_resnet.py +0 -0
  239. {birder-0.3.2 → birder-0.3.3}/birder/net/xception.py +0 -0
  240. {birder-0.3.2 → birder-0.3.3}/birder/net/xcit.py +0 -0
  241. {birder-0.3.2 → birder-0.3.3}/birder/ops/__init__.py +0 -0
  242. {birder-0.3.2 → birder-0.3.3}/birder/ops/msda.py +0 -0
  243. {birder-0.3.2 → birder-0.3.3}/birder/ops/soft_nms.py +0 -0
  244. {birder-0.3.2 → birder-0.3.3}/birder/ops/swattention.py +0 -0
  245. {birder-0.3.2 → birder-0.3.3}/birder/optim/__init__.py +0 -0
  246. {birder-0.3.2 → birder-0.3.3}/birder/optim/lamb.py +0 -0
  247. {birder-0.3.2 → birder-0.3.3}/birder/optim/lars.py +0 -0
  248. {birder-0.3.2 → birder-0.3.3}/birder/py.typed +0 -0
  249. {birder-0.3.2 → birder-0.3.3}/birder/results/__init__.py +0 -0
  250. {birder-0.3.2 → birder-0.3.3}/birder/results/classification.py +0 -0
  251. {birder-0.3.2 → birder-0.3.3}/birder/results/detection.py +0 -0
  252. {birder-0.3.2 → birder-0.3.3}/birder/results/gui.py +0 -0
  253. {birder-0.3.2 → birder-0.3.3}/birder/scheduler/__init__.py +0 -0
  254. {birder-0.3.2 → birder-0.3.3}/birder/scheduler/cooldown.py +0 -0
  255. {birder-0.3.2 → birder-0.3.3}/birder/scripts/__init__.py +0 -0
  256. {birder-0.3.2 → birder-0.3.3}/birder/scripts/__main__.py +0 -0
  257. {birder-0.3.2 → birder-0.3.3}/birder/scripts/benchmark.py +0 -0
  258. {birder-0.3.2 → birder-0.3.3}/birder/scripts/evaluate.py +0 -0
  259. {birder-0.3.2 → birder-0.3.3}/birder/scripts/predict.py +0 -0
  260. {birder-0.3.2 → birder-0.3.3}/birder/scripts/predict_detection.py +0 -0
  261. {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_barlow_twins.py +0 -0
  262. {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_byol.py +0 -0
  263. {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_capi.py +0 -0
  264. {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_data2vec.py +0 -0
  265. {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_data2vec2.py +0 -0
  266. {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_detection.py +0 -0
  267. {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_dino_v1.py +0 -0
  268. {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_dino_v2.py +0 -0
  269. {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_dino_v2_dist.py +0 -0
  270. {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_franca.py +0 -0
  271. {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_i_jepa.py +0 -0
  272. {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_ibot.py +0 -0
  273. {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_mim.py +0 -0
  274. {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_mmcr.py +0 -0
  275. {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_rotnet.py +0 -0
  276. {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_simclr.py +0 -0
  277. {birder-0.3.2 → birder-0.3.3}/birder/scripts/train_vicreg.py +0 -0
  278. {birder-0.3.2 → birder-0.3.3}/birder/tools/__init__.py +0 -0
  279. {birder-0.3.2 → birder-0.3.3}/birder/tools/__main__.py +0 -0
  280. {birder-0.3.2 → birder-0.3.3}/birder/tools/adversarial.py +0 -0
  281. {birder-0.3.2 → birder-0.3.3}/birder/tools/auto_anchors.py +0 -0
  282. {birder-0.3.2 → birder-0.3.3}/birder/tools/avg_model.py +0 -0
  283. {birder-0.3.2 → birder-0.3.3}/birder/tools/convert_model.py +0 -0
  284. {birder-0.3.2 → birder-0.3.3}/birder/tools/det_results.py +0 -0
  285. {birder-0.3.2 → birder-0.3.3}/birder/tools/download_model.py +0 -0
  286. {birder-0.3.2 → birder-0.3.3}/birder/tools/ensemble_model.py +0 -0
  287. {birder-0.3.2 → birder-0.3.3}/birder/tools/introspection.py +0 -0
  288. {birder-0.3.2 → birder-0.3.3}/birder/tools/labelme_to_coco.py +0 -0
  289. {birder-0.3.2 → birder-0.3.3}/birder/tools/list_models.py +0 -0
  290. {birder-0.3.2 → birder-0.3.3}/birder/tools/model_info.py +0 -0
  291. {birder-0.3.2 → birder-0.3.3}/birder/tools/pack.py +0 -0
  292. {birder-0.3.2 → birder-0.3.3}/birder/tools/quantize_model.py +0 -0
  293. {birder-0.3.2 → birder-0.3.3}/birder/tools/results.py +0 -0
  294. {birder-0.3.2 → birder-0.3.3}/birder/tools/show_det_iterator.py +0 -0
  295. {birder-0.3.2 → birder-0.3.3}/birder/tools/similarity.py +0 -0
  296. {birder-0.3.2 → birder-0.3.3}/birder/tools/stats.py +0 -0
  297. {birder-0.3.2 → birder-0.3.3}/birder/tools/verify_coco.py +0 -0
  298. {birder-0.3.2 → birder-0.3.3}/birder/tools/verify_directory.py +0 -0
  299. {birder-0.3.2 → birder-0.3.3}/birder/tools/voc_to_coco.py +0 -0
  300. {birder-0.3.2 → birder-0.3.3}/birder.egg-info/SOURCES.txt +0 -0
  301. {birder-0.3.2 → birder-0.3.3}/birder.egg-info/dependency_links.txt +0 -0
  302. {birder-0.3.2 → birder-0.3.3}/birder.egg-info/entry_points.txt +0 -0
  303. {birder-0.3.2 → birder-0.3.3}/birder.egg-info/requires.txt +0 -0
  304. {birder-0.3.2 → birder-0.3.3}/birder.egg-info/top_level.txt +0 -0
  305. {birder-0.3.2 → birder-0.3.3}/pyproject.toml +0 -0
  306. {birder-0.3.2 → birder-0.3.3}/requirements/_requirements-dev.txt +0 -0
  307. {birder-0.3.2 → birder-0.3.3}/requirements/requirements-hf.txt +0 -0
  308. {birder-0.3.2 → birder-0.3.3}/requirements/requirements.txt +0 -0
  309. {birder-0.3.2 → birder-0.3.3}/setup.cfg +0 -0
  310. {birder-0.3.2 → birder-0.3.3}/tests/test_adversarial.py +0 -0
  311. {birder-0.3.2 → birder-0.3.3}/tests/test_collators.py +0 -0
  312. {birder-0.3.2 → birder-0.3.3}/tests/test_common.py +0 -0
  313. {birder-0.3.2 → birder-0.3.3}/tests/test_dataloaders.py +0 -0
  314. {birder-0.3.2 → birder-0.3.3}/tests/test_datasets.py +0 -0
  315. {birder-0.3.2 → birder-0.3.3}/tests/test_inference.py +0 -0
  316. {birder-0.3.2 → birder-0.3.3}/tests/test_introspection.py +0 -0
  317. {birder-0.3.2 → birder-0.3.3}/tests/test_kernels.py +0 -0
  318. {birder-0.3.2 → birder-0.3.3}/tests/test_layers.py +0 -0
  319. {birder-0.3.2 → birder-0.3.3}/tests/test_model_registry.py +0 -0
  320. {birder-0.3.2 → birder-0.3.3}/tests/test_net_detection.py +0 -0
  321. {birder-0.3.2 → birder-0.3.3}/tests/test_net_mim.py +0 -0
  322. {birder-0.3.2 → birder-0.3.3}/tests/test_net_ssl.py +0 -0
  323. {birder-0.3.2 → birder-0.3.3}/tests/test_ops.py +0 -0
  324. {birder-0.3.2 → birder-0.3.3}/tests/test_optim.py +0 -0
  325. {birder-0.3.2 → birder-0.3.3}/tests/test_results.py +0 -0
  326. {birder-0.3.2 → birder-0.3.3}/tests/test_scheduler.py +0 -0
  327. {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.2
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
- (H, W) = (shortcut.size(1), shortcut.size(2))
176
+ pad_hw = (pad_hw[0] // self.q_stride[0], pad_hw[1] // self.q_stride[1])
177
177
 
178
- pad_h = (window_size - H % window_size) % window_size
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, -16, -32],
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, -16, -32],
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, -16, -32],
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, -16, -32],
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, -16, -32],
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
- "hieradet_small_dino-v2",
541
+ "hieradet_d_small_dino-v2",
477
542
  {
478
- "url": "https://huggingface.co/birder-project/hieradet_small_dino-v2/resolve/main",
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": "hieradet_small", "tag": "dino-v2"},
555
+ "net": {"network": "hieradet_d_small", "tag": "dino-v2"},
491
556
  },
492
557
  )
493
558
  registry.register_weights(
494
- "hieradet_small_dino-v2-inat21-256px",
559
+ "hieradet_d_small_dino-v2-inat21-256px",
495
560
  {
496
- "url": "https://huggingface.co/birder-project/hieradet_small_dino-v2-inat21/resolve/main",
497
- "description": "HieraDet small model pre-trained using DINOv2, then fine-tuned on the iNaturalist 2021 dataset",
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": "hieradet_small", "tag": "dino-v2-inat21-256px"},
572
+ "net": {"network": "hieradet_d_small", "tag": "dino-v2-inat21-256px"},
506
573
  },
507
574
  )
508
575
  registry.register_weights(
509
- "hieradet_small_dino-v2-inat21",
576
+ "hieradet_d_small_dino-v2-inat21",
510
577
  {
511
- "url": "https://huggingface.co/birder-project/hieradet_small_dino-v2-inat21/resolve/main",
512
- "description": "HieraDet small model pre-trained using DINOv2, then fine-tuned on the iNaturalist 2021 dataset",
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": "hieradet_small", "tag": "dino-v2-inat21"},
589
+ "net": {"network": "hieradet_d_small", "tag": "dino-v2-inat21"},
521
590
  },
522
591
  )
523
592
  registry.register_weights(
524
- "hieradet_small_dino-v2-imagenet12k",
593
+ "hieradet_d_small_dino-v2-imagenet12k",
525
594
  {
526
- "url": "https://huggingface.co/birder-project/hieradet_small_dino-v2-imagenet12k/resolve/main",
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": "hieradet_small", "tag": "dino-v2-imagenet12k"},
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 in the default location can be as simple as:\n"
766
- "python train.py --network densenet_161 --lr-scheduler cosine --batch-size 64 --smoothing-alpha 0.1\n"
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 complicated ImageNet example on 2 GPUs, using a remote webdataset:\n"
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
- " --wd 0.02 \\\n"
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
- " --bce-loss --bce-threshold 0.2 \\\n"
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 is also available as module:\n"
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
- " --wd 0.00005 \\\n"
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
- " --amp --compile\n"
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=False)
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.softmax(teacher_outputs / args.temperature, dim=-1)
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
- " --clip-grad-norm 5 \\\n"
916
- " --amp \\\n"
916
+ " --amp --amp-dtype bfloat16 \\\n"
917
917
  " --compile \\\n"
918
918
  " --wds \\\n"
919
- " --wds-class-file data/intermediate_packed/classes.txt \\\n"
920
- " --wds-info data/intermediate_packed/_info.json\n"
919
+ " --wds-info data/intermediate_packed/_info.json \\\n"
920
+ " --wds-class-file data/intermediate_packed/classes.txt\n"
921
921
  "\n"
922
- "DeiT style distillation:\n"
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("--masking", type=str, choices=["uniform", "block"], help="enable masking")
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.2
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"),
@@ -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