mlpack 4.6.2__cp38-cp38-win_amd64.whl → 4.7.0__cp38-cp38-win_amd64.whl

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 (414) hide show
  1. mlpack/__init__.py +3 -3
  2. mlpack/adaboost_classify.cp38-win_amd64.pyd +0 -0
  3. mlpack/adaboost_probabilities.cp38-win_amd64.pyd +0 -0
  4. mlpack/adaboost_train.cp38-win_amd64.pyd +0 -0
  5. mlpack/approx_kfn.cp38-win_amd64.pyd +0 -0
  6. mlpack/arma_numpy.cp38-win_amd64.pyd +0 -0
  7. mlpack/bayesian_linear_regression.cp38-win_amd64.pyd +0 -0
  8. mlpack/cf.cp38-win_amd64.pyd +0 -0
  9. mlpack/dbscan.cp38-win_amd64.pyd +0 -0
  10. mlpack/decision_tree.cp38-win_amd64.pyd +0 -0
  11. mlpack/det.cp38-win_amd64.pyd +0 -0
  12. mlpack/emst.cp38-win_amd64.pyd +0 -0
  13. mlpack/fastmks.cp38-win_amd64.pyd +0 -0
  14. mlpack/gmm_generate.cp38-win_amd64.pyd +0 -0
  15. mlpack/gmm_probability.cp38-win_amd64.pyd +0 -0
  16. mlpack/gmm_train.cp38-win_amd64.pyd +0 -0
  17. mlpack/hmm_generate.cp38-win_amd64.pyd +0 -0
  18. mlpack/hmm_loglik.cp38-win_amd64.pyd +0 -0
  19. mlpack/hmm_train.cp38-win_amd64.pyd +0 -0
  20. mlpack/hmm_viterbi.cp38-win_amd64.pyd +0 -0
  21. mlpack/hoeffding_tree.cp38-win_amd64.pyd +0 -0
  22. mlpack/image_converter.cp38-win_amd64.pyd +0 -0
  23. mlpack/include/mlpack/base.hpp +1 -0
  24. mlpack/include/mlpack/core/arma_extend/find_nan.hpp +63 -0
  25. mlpack/include/mlpack/core/cereal/low_precision.hpp +48 -0
  26. mlpack/include/mlpack/core/cv/cv_base.hpp +11 -11
  27. mlpack/include/mlpack/core/cv/cv_base_impl.hpp +7 -7
  28. mlpack/include/mlpack/core/cv/k_fold_cv.hpp +4 -4
  29. mlpack/include/mlpack/core/cv/k_fold_cv_impl.hpp +4 -4
  30. mlpack/include/mlpack/core/cv/meta_info_extractor.hpp +10 -10
  31. mlpack/include/mlpack/core/cv/metrics/f1_impl.hpp +1 -1
  32. mlpack/include/mlpack/core/cv/metrics/facilities.hpp +2 -1
  33. mlpack/include/mlpack/core/cv/metrics/precision_impl.hpp +1 -1
  34. mlpack/include/mlpack/core/cv/metrics/r2_score_impl.hpp +1 -1
  35. mlpack/include/mlpack/core/cv/metrics/silhouette_score_impl.hpp +1 -1
  36. mlpack/include/mlpack/core/cv/simple_cv.hpp +4 -4
  37. mlpack/include/mlpack/core/cv/simple_cv_impl.hpp +2 -2
  38. mlpack/include/mlpack/core/data/binarize.hpp +0 -2
  39. mlpack/include/mlpack/core/data/check_categorical_param.hpp +0 -2
  40. mlpack/include/mlpack/core/data/combine_options.hpp +151 -0
  41. mlpack/include/mlpack/core/data/confusion_matrix.hpp +0 -2
  42. mlpack/include/mlpack/core/data/confusion_matrix_impl.hpp +0 -2
  43. mlpack/include/mlpack/core/data/data.hpp +6 -4
  44. mlpack/include/mlpack/core/data/data_options.hpp +341 -18
  45. mlpack/include/mlpack/core/data/dataset_mapper.hpp +3 -5
  46. mlpack/include/mlpack/core/data/dataset_mapper_impl.hpp +0 -2
  47. mlpack/include/mlpack/core/data/detect_file_type.hpp +34 -5
  48. mlpack/include/mlpack/core/data/detect_file_type_impl.hpp +185 -11
  49. mlpack/include/mlpack/core/data/extension.hpp +2 -4
  50. mlpack/include/mlpack/core/data/font8x8_basic.h +152 -0
  51. mlpack/include/mlpack/core/data/has_serialize.hpp +0 -2
  52. mlpack/include/mlpack/core/data/image_bounding_box.hpp +36 -0
  53. mlpack/include/mlpack/core/data/image_bounding_box_impl.hpp +155 -0
  54. mlpack/include/mlpack/core/data/image_layout.hpp +63 -0
  55. mlpack/include/mlpack/core/data/image_layout_impl.hpp +75 -0
  56. mlpack/include/mlpack/core/data/image_letterbox.hpp +116 -0
  57. mlpack/include/mlpack/core/data/image_options.hpp +257 -0
  58. mlpack/include/mlpack/core/data/image_resize_crop.hpp +113 -48
  59. mlpack/include/mlpack/core/data/imputation_methods/custom_imputation.hpp +16 -32
  60. mlpack/include/mlpack/core/data/imputation_methods/listwise_deletion.hpp +19 -29
  61. mlpack/include/mlpack/core/data/imputation_methods/mean_imputation.hpp +113 -44
  62. mlpack/include/mlpack/core/data/imputation_methods/median_imputation.hpp +44 -43
  63. mlpack/include/mlpack/core/data/imputer.hpp +41 -49
  64. mlpack/include/mlpack/core/data/is_naninf.hpp +0 -2
  65. mlpack/include/mlpack/core/data/load.hpp +49 -233
  66. mlpack/include/mlpack/core/data/load_arff.hpp +0 -2
  67. mlpack/include/mlpack/core/data/load_arff_impl.hpp +2 -4
  68. mlpack/include/mlpack/core/data/load_categorical.hpp +1 -4
  69. mlpack/include/mlpack/core/data/load_categorical_impl.hpp +10 -26
  70. mlpack/include/mlpack/core/data/load_dense.hpp +279 -0
  71. mlpack/include/mlpack/core/data/load_deprecated.hpp +466 -0
  72. mlpack/include/mlpack/core/data/load_image.hpp +71 -43
  73. mlpack/include/mlpack/core/data/load_impl.hpp +95 -274
  74. mlpack/include/mlpack/core/data/load_model.hpp +62 -0
  75. mlpack/include/mlpack/core/data/load_numeric.hpp +124 -87
  76. mlpack/include/mlpack/core/data/load_sparse.hpp +91 -0
  77. mlpack/include/mlpack/core/data/map_policies/datatype.hpp +0 -2
  78. mlpack/include/mlpack/core/data/map_policies/increment_policy.hpp +0 -2
  79. mlpack/include/mlpack/core/data/map_policies/map_policies.hpp +0 -1
  80. mlpack/include/mlpack/core/data/matrix_options.hpp +152 -20
  81. mlpack/include/mlpack/core/data/normalize_labels.hpp +0 -2
  82. mlpack/include/mlpack/core/data/normalize_labels_impl.hpp +0 -2
  83. mlpack/include/mlpack/core/data/one_hot_encoding.hpp +2 -4
  84. mlpack/include/mlpack/core/data/one_hot_encoding_impl.hpp +3 -5
  85. mlpack/include/mlpack/core/data/save.hpp +26 -120
  86. mlpack/include/mlpack/core/data/save_dense.hpp +42 -0
  87. mlpack/include/mlpack/core/data/save_deprecated.hpp +308 -0
  88. mlpack/include/mlpack/core/data/save_image.hpp +82 -42
  89. mlpack/include/mlpack/core/data/save_impl.hpp +60 -245
  90. mlpack/include/mlpack/core/data/save_matrix.hpp +45 -0
  91. mlpack/include/mlpack/core/data/save_model.hpp +61 -0
  92. mlpack/include/mlpack/core/data/save_numeric.hpp +60 -0
  93. mlpack/include/mlpack/core/data/save_sparse.hpp +44 -0
  94. mlpack/include/mlpack/core/data/scaler_methods/max_abs_scaler.hpp +0 -2
  95. mlpack/include/mlpack/core/data/scaler_methods/mean_normalization.hpp +2 -4
  96. mlpack/include/mlpack/core/data/scaler_methods/min_max_scaler.hpp +0 -2
  97. mlpack/include/mlpack/core/data/scaler_methods/pca_whitening.hpp +1 -3
  98. mlpack/include/mlpack/core/data/scaler_methods/standard_scaler.hpp +2 -4
  99. mlpack/include/mlpack/core/data/scaler_methods/zca_whitening.hpp +0 -2
  100. mlpack/include/mlpack/core/data/split_data.hpp +6 -8
  101. mlpack/include/mlpack/core/data/string_algorithms.hpp +0 -2
  102. mlpack/include/mlpack/core/data/string_encoding.hpp +0 -2
  103. mlpack/include/mlpack/core/data/string_encoding_dictionary.hpp +0 -2
  104. mlpack/include/mlpack/core/data/string_encoding_impl.hpp +0 -2
  105. mlpack/include/mlpack/core/data/string_encoding_policies/bag_of_words_encoding_policy.hpp +0 -2
  106. mlpack/include/mlpack/core/data/string_encoding_policies/dictionary_encoding_policy.hpp +0 -2
  107. mlpack/include/mlpack/core/data/string_encoding_policies/policy_traits.hpp +0 -2
  108. mlpack/include/mlpack/core/data/string_encoding_policies/tf_idf_encoding_policy.hpp +0 -2
  109. mlpack/include/mlpack/core/data/text_options.hpp +91 -53
  110. mlpack/include/mlpack/core/data/tokenizers/char_extract.hpp +0 -2
  111. mlpack/include/mlpack/core/data/tokenizers/split_by_any_of.hpp +0 -2
  112. mlpack/include/mlpack/core/distributions/gamma_distribution_impl.hpp +4 -4
  113. mlpack/include/mlpack/core/distributions/laplace_distribution.hpp +9 -9
  114. mlpack/include/mlpack/core/distributions/laplace_distribution_impl.hpp +7 -7
  115. mlpack/include/mlpack/core/hpt/cv_function.hpp +2 -2
  116. mlpack/include/mlpack/core/hpt/cv_function_impl.hpp +2 -2
  117. mlpack/include/mlpack/core/hpt/hpt.hpp +4 -4
  118. mlpack/include/mlpack/core/hpt/hpt_impl.hpp +9 -9
  119. mlpack/include/mlpack/core/math/make_alias.hpp +7 -5
  120. mlpack/include/mlpack/core/math/random.hpp +19 -5
  121. mlpack/include/mlpack/core/math/shuffle_data.hpp +79 -245
  122. mlpack/include/mlpack/core/metrics/non_maximal_suppression_impl.hpp +9 -10
  123. mlpack/include/mlpack/core/stb/bundled/stb_image_resize2.h +291 -239
  124. mlpack/include/mlpack/core/tree/binary_space_tree/rp_tree_mean_split_impl.hpp +7 -7
  125. mlpack/include/mlpack/core/tree/cellbound.hpp +2 -2
  126. mlpack/include/mlpack/core/tree/cosine_tree/cosine_tree_impl.hpp +10 -10
  127. mlpack/include/mlpack/core/tree/octree/octree.hpp +10 -0
  128. mlpack/include/mlpack/core/tree/octree/octree_impl.hpp +14 -4
  129. mlpack/include/mlpack/core/util/arma_traits.hpp +25 -38
  130. mlpack/include/mlpack/core/util/coot_traits.hpp +97 -0
  131. mlpack/include/mlpack/core/util/forward.hpp +0 -2
  132. mlpack/include/mlpack/core/util/param.hpp +4 -4
  133. mlpack/include/mlpack/core/util/params_impl.hpp +2 -2
  134. mlpack/include/mlpack/core/util/using.hpp +29 -2
  135. mlpack/include/mlpack/core/util/version.hpp +5 -3
  136. mlpack/include/mlpack/core/util/version_impl.hpp +3 -6
  137. mlpack/include/mlpack/methods/adaboost/adaboost_classify_main.cpp +1 -1
  138. mlpack/include/mlpack/methods/adaboost/adaboost_main.cpp +3 -3
  139. mlpack/include/mlpack/methods/adaboost/adaboost_train_main.cpp +2 -2
  140. mlpack/include/mlpack/methods/ann/activation_functions/activation_functions.hpp +1 -0
  141. mlpack/include/mlpack/methods/ann/activation_functions/bipolar_sigmoid_function.hpp +6 -4
  142. mlpack/include/mlpack/methods/ann/activation_functions/elish_function.hpp +17 -12
  143. mlpack/include/mlpack/methods/ann/activation_functions/elliot_function.hpp +9 -7
  144. mlpack/include/mlpack/methods/ann/activation_functions/gaussian_function.hpp +7 -6
  145. mlpack/include/mlpack/methods/ann/activation_functions/gelu_exact_function.hpp +73 -0
  146. mlpack/include/mlpack/methods/ann/activation_functions/gelu_function.hpp +27 -16
  147. mlpack/include/mlpack/methods/ann/activation_functions/hard_sigmoid_function.hpp +8 -6
  148. mlpack/include/mlpack/methods/ann/activation_functions/hard_swish_function.hpp +6 -4
  149. mlpack/include/mlpack/methods/ann/activation_functions/hyper_sinh_function.hpp +13 -8
  150. mlpack/include/mlpack/methods/ann/activation_functions/identity_function.hpp +6 -4
  151. mlpack/include/mlpack/methods/ann/activation_functions/inverse_quadratic_function.hpp +8 -6
  152. mlpack/include/mlpack/methods/ann/activation_functions/lisht_function.hpp +7 -5
  153. mlpack/include/mlpack/methods/ann/activation_functions/logistic_function.hpp +14 -12
  154. mlpack/include/mlpack/methods/ann/activation_functions/mish_function.hpp +7 -5
  155. mlpack/include/mlpack/methods/ann/activation_functions/multi_quadratic_function.hpp +6 -4
  156. mlpack/include/mlpack/methods/ann/activation_functions/poisson1_function.hpp +4 -2
  157. mlpack/include/mlpack/methods/ann/activation_functions/quadratic_function.hpp +6 -4
  158. mlpack/include/mlpack/methods/ann/activation_functions/rectifier_function.hpp +10 -10
  159. mlpack/include/mlpack/methods/ann/activation_functions/silu_function.hpp +10 -8
  160. mlpack/include/mlpack/methods/ann/activation_functions/softplus_function.hpp +12 -9
  161. mlpack/include/mlpack/methods/ann/activation_functions/softsign_function.hpp +15 -23
  162. mlpack/include/mlpack/methods/ann/activation_functions/spline_function.hpp +9 -7
  163. mlpack/include/mlpack/methods/ann/activation_functions/swish_function.hpp +11 -9
  164. mlpack/include/mlpack/methods/ann/activation_functions/tanh_exponential_function.hpp +9 -7
  165. mlpack/include/mlpack/methods/ann/activation_functions/tanh_function.hpp +10 -7
  166. mlpack/include/mlpack/methods/ann/ann.hpp +3 -0
  167. mlpack/include/mlpack/methods/ann/convolution_rules/base_convolution.hpp +197 -0
  168. mlpack/include/mlpack/methods/ann/convolution_rules/convolution_rules.hpp +1 -2
  169. mlpack/include/mlpack/methods/ann/convolution_rules/im2col_convolution.hpp +215 -0
  170. mlpack/include/mlpack/methods/ann/convolution_rules/naive_convolution.hpp +109 -154
  171. mlpack/include/mlpack/methods/ann/dag_network.hpp +728 -0
  172. mlpack/include/mlpack/methods/ann/dag_network_impl.hpp +1640 -0
  173. mlpack/include/mlpack/methods/ann/dists/bernoulli_distribution_impl.hpp +1 -1
  174. mlpack/include/mlpack/methods/ann/dists/normal_distribution_impl.hpp +7 -2
  175. mlpack/include/mlpack/methods/ann/ffn.hpp +39 -3
  176. mlpack/include/mlpack/methods/ann/ffn_impl.hpp +14 -32
  177. mlpack/include/mlpack/methods/ann/init_rules/const_init.hpp +4 -4
  178. mlpack/include/mlpack/methods/ann/init_rules/gaussian_init.hpp +6 -2
  179. mlpack/include/mlpack/methods/ann/init_rules/he_init.hpp +4 -2
  180. mlpack/include/mlpack/methods/ann/init_rules/kathirvalavakumar_subavathi_init.hpp +3 -3
  181. mlpack/include/mlpack/methods/ann/init_rules/lecun_normal_init.hpp +4 -2
  182. mlpack/include/mlpack/methods/ann/init_rules/nguyen_widrow_init.hpp +2 -2
  183. mlpack/include/mlpack/methods/ann/init_rules/oivs_init.hpp +2 -2
  184. mlpack/include/mlpack/methods/ann/init_rules/orthogonal_init.hpp +2 -2
  185. mlpack/include/mlpack/methods/ann/init_rules/random_init.hpp +8 -4
  186. mlpack/include/mlpack/methods/ann/layer/adaptive_max_pooling.hpp +21 -23
  187. mlpack/include/mlpack/methods/ann/layer/adaptive_max_pooling_impl.hpp +15 -15
  188. mlpack/include/mlpack/methods/ann/layer/adaptive_mean_pooling.hpp +21 -23
  189. mlpack/include/mlpack/methods/ann/layer/adaptive_mean_pooling_impl.hpp +16 -16
  190. mlpack/include/mlpack/methods/ann/layer/add.hpp +18 -18
  191. mlpack/include/mlpack/methods/ann/layer/add_impl.hpp +13 -13
  192. mlpack/include/mlpack/methods/ann/layer/add_merge.hpp +19 -18
  193. mlpack/include/mlpack/methods/ann/layer/add_merge_impl.hpp +13 -13
  194. mlpack/include/mlpack/methods/ann/layer/alpha_dropout.hpp +17 -16
  195. mlpack/include/mlpack/methods/ann/layer/alpha_dropout_impl.hpp +14 -13
  196. mlpack/include/mlpack/methods/ann/layer/base_layer.hpp +28 -51
  197. mlpack/include/mlpack/methods/ann/layer/batch_norm.hpp +16 -18
  198. mlpack/include/mlpack/methods/ann/layer/batch_norm_impl.hpp +55 -54
  199. mlpack/include/mlpack/methods/ann/layer/c_relu.hpp +18 -20
  200. mlpack/include/mlpack/methods/ann/layer/c_relu_impl.hpp +20 -25
  201. mlpack/include/mlpack/methods/ann/layer/celu.hpp +14 -19
  202. mlpack/include/mlpack/methods/ann/layer/celu_impl.hpp +25 -34
  203. mlpack/include/mlpack/methods/ann/layer/concat.hpp +18 -18
  204. mlpack/include/mlpack/methods/ann/layer/concat_impl.hpp +13 -13
  205. mlpack/include/mlpack/methods/ann/layer/concatenate.hpp +18 -18
  206. mlpack/include/mlpack/methods/ann/layer/concatenate_impl.hpp +14 -14
  207. mlpack/include/mlpack/methods/ann/layer/convolution.hpp +42 -47
  208. mlpack/include/mlpack/methods/ann/layer/convolution_impl.hpp +170 -159
  209. mlpack/include/mlpack/methods/ann/layer/dropconnect.hpp +18 -20
  210. mlpack/include/mlpack/methods/ann/layer/dropconnect_impl.hpp +20 -20
  211. mlpack/include/mlpack/methods/ann/layer/dropout.hpp +17 -19
  212. mlpack/include/mlpack/methods/ann/layer/dropout_impl.hpp +14 -21
  213. mlpack/include/mlpack/methods/ann/layer/elu.hpp +23 -25
  214. mlpack/include/mlpack/methods/ann/layer/elu_impl.hpp +20 -27
  215. mlpack/include/mlpack/methods/ann/layer/embedding.hpp +160 -0
  216. mlpack/include/mlpack/methods/ann/layer/embedding_impl.hpp +189 -0
  217. mlpack/include/mlpack/methods/ann/layer/flexible_relu.hpp +17 -19
  218. mlpack/include/mlpack/methods/ann/layer/flexible_relu_impl.hpp +20 -20
  219. mlpack/include/mlpack/methods/ann/layer/ftswish.hpp +17 -18
  220. mlpack/include/mlpack/methods/ann/layer/ftswish_impl.hpp +17 -35
  221. mlpack/include/mlpack/methods/ann/layer/grouped_convolution.hpp +27 -33
  222. mlpack/include/mlpack/methods/ann/layer/grouped_convolution_impl.hpp +170 -163
  223. mlpack/include/mlpack/methods/ann/layer/gru.hpp +195 -0
  224. mlpack/include/mlpack/methods/ann/layer/gru_impl.hpp +325 -0
  225. mlpack/include/mlpack/methods/ann/layer/hard_tanh.hpp +13 -15
  226. mlpack/include/mlpack/methods/ann/layer/hard_tanh_impl.hpp +12 -12
  227. mlpack/include/mlpack/methods/ann/layer/identity.hpp +19 -20
  228. mlpack/include/mlpack/methods/ann/layer/identity_impl.hpp +12 -12
  229. mlpack/include/mlpack/methods/ann/layer/layer.hpp +37 -33
  230. mlpack/include/mlpack/methods/ann/layer/layer_norm.hpp +11 -13
  231. mlpack/include/mlpack/methods/ann/layer/layer_norm_impl.hpp +16 -16
  232. mlpack/include/mlpack/methods/ann/layer/layer_types.hpp +4 -1
  233. mlpack/include/mlpack/methods/ann/layer/leaky_relu.hpp +20 -23
  234. mlpack/include/mlpack/methods/ann/layer/leaky_relu_impl.hpp +12 -13
  235. mlpack/include/mlpack/methods/ann/layer/linear.hpp +16 -18
  236. mlpack/include/mlpack/methods/ann/layer/linear3d.hpp +18 -18
  237. mlpack/include/mlpack/methods/ann/layer/linear3d_impl.hpp +18 -18
  238. mlpack/include/mlpack/methods/ann/layer/linear_impl.hpp +15 -15
  239. mlpack/include/mlpack/methods/ann/layer/linear_no_bias.hpp +15 -17
  240. mlpack/include/mlpack/methods/ann/layer/linear_no_bias_impl.hpp +20 -20
  241. mlpack/include/mlpack/methods/ann/layer/linear_recurrent.hpp +25 -14
  242. mlpack/include/mlpack/methods/ann/layer/linear_recurrent_impl.hpp +60 -31
  243. mlpack/include/mlpack/methods/ann/layer/log_softmax.hpp +17 -36
  244. mlpack/include/mlpack/methods/ann/layer/log_softmax_impl.hpp +58 -74
  245. mlpack/include/mlpack/methods/ann/layer/lstm.hpp +26 -29
  246. mlpack/include/mlpack/methods/ann/layer/lstm_impl.hpp +128 -124
  247. mlpack/include/mlpack/methods/ann/layer/max_pooling.hpp +19 -19
  248. mlpack/include/mlpack/methods/ann/layer/max_pooling_impl.hpp +14 -14
  249. mlpack/include/mlpack/methods/ann/layer/mean_pooling.hpp +24 -24
  250. mlpack/include/mlpack/methods/ann/layer/mean_pooling_impl.hpp +16 -16
  251. mlpack/include/mlpack/methods/ann/layer/multi_layer.hpp +36 -6
  252. mlpack/include/mlpack/methods/ann/layer/multi_layer_impl.hpp +6 -2
  253. mlpack/include/mlpack/methods/ann/layer/multihead_attention.hpp +26 -22
  254. mlpack/include/mlpack/methods/ann/layer/multihead_attention_impl.hpp +161 -64
  255. mlpack/include/mlpack/methods/ann/layer/nearest_interpolation.hpp +28 -25
  256. mlpack/include/mlpack/methods/ann/layer/nearest_interpolation_impl.hpp +36 -37
  257. mlpack/include/mlpack/methods/ann/layer/noisylinear.hpp +39 -42
  258. mlpack/include/mlpack/methods/ann/layer/noisylinear_impl.hpp +18 -18
  259. mlpack/include/mlpack/methods/ann/layer/padding.hpp +21 -17
  260. mlpack/include/mlpack/methods/ann/layer/padding_impl.hpp +33 -19
  261. mlpack/include/mlpack/methods/ann/layer/parametric_relu.hpp +26 -28
  262. mlpack/include/mlpack/methods/ann/layer/parametric_relu_impl.hpp +18 -18
  263. mlpack/include/mlpack/methods/ann/layer/radial_basis_function.hpp +41 -28
  264. mlpack/include/mlpack/methods/ann/layer/radial_basis_function_impl.hpp +42 -17
  265. mlpack/include/mlpack/methods/ann/layer/recurrent_layer.hpp +13 -0
  266. mlpack/include/mlpack/methods/ann/layer/relu6.hpp +19 -21
  267. mlpack/include/mlpack/methods/ann/layer/relu6_impl.hpp +14 -14
  268. mlpack/include/mlpack/methods/ann/layer/repeat.hpp +24 -25
  269. mlpack/include/mlpack/methods/ann/layer/repeat_impl.hpp +10 -10
  270. mlpack/include/mlpack/methods/ann/layer/serialization.hpp +64 -54
  271. mlpack/include/mlpack/methods/ann/layer/softmax.hpp +20 -20
  272. mlpack/include/mlpack/methods/ann/layer/softmax_impl.hpp +10 -10
  273. mlpack/include/mlpack/methods/ann/layer/softmin.hpp +20 -23
  274. mlpack/include/mlpack/methods/ann/layer/softmin_impl.hpp +10 -10
  275. mlpack/include/mlpack/methods/ann/layer/sum_reduce.hpp +103 -0
  276. mlpack/include/mlpack/methods/ann/layer/sum_reduce_impl.hpp +143 -0
  277. mlpack/include/mlpack/methods/ann/loss_functions/cosine_embedding_loss_impl.hpp +3 -3
  278. mlpack/include/mlpack/methods/ann/loss_functions/mean_bias_error_impl.hpp +1 -1
  279. mlpack/include/mlpack/methods/ann/loss_functions/multilabel_softmargin_loss_impl.hpp +1 -1
  280. mlpack/include/mlpack/methods/ann/loss_functions/negative_log_likelihood.hpp +2 -2
  281. mlpack/include/mlpack/methods/ann/loss_functions/negative_log_likelihood_impl.hpp +29 -15
  282. mlpack/include/mlpack/methods/ann/loss_functions/poisson_nll_loss_impl.hpp +1 -1
  283. mlpack/include/mlpack/methods/ann/models/models.hpp +17 -0
  284. mlpack/include/mlpack/methods/ann/models/yolov3/yolov3_layer.hpp +151 -0
  285. mlpack/include/mlpack/methods/ann/models/yolov3/yolov3_layer_impl.hpp +265 -0
  286. mlpack/include/mlpack/methods/ann/models/yolov3/yolov3_tiny.hpp +187 -0
  287. mlpack/include/mlpack/methods/ann/models/yolov3/yolov3_tiny_impl.hpp +206 -0
  288. mlpack/include/mlpack/methods/ann/regularizer/orthogonal_regularizer_impl.hpp +5 -3
  289. mlpack/include/mlpack/methods/ann/rnn.hpp +136 -42
  290. mlpack/include/mlpack/methods/ann/rnn_impl.hpp +230 -38
  291. mlpack/include/mlpack/methods/approx_kfn/drusilla_select_impl.hpp +1 -1
  292. mlpack/include/mlpack/methods/bayesian_linear_regression/bayesian_linear_regression_main.cpp +1 -1
  293. mlpack/include/mlpack/methods/bias_svd/bias_svd_function_impl.hpp +1 -1
  294. mlpack/include/mlpack/methods/cf/cf_model.hpp +1 -1
  295. mlpack/include/mlpack/methods/decision_tree/decision_tree.hpp +6 -6
  296. mlpack/include/mlpack/methods/decision_tree/decision_tree_impl.hpp +12 -12
  297. mlpack/include/mlpack/methods/decision_tree/decision_tree_main.cpp +0 -1
  298. mlpack/include/mlpack/methods/decision_tree/decision_tree_regressor.hpp +6 -6
  299. mlpack/include/mlpack/methods/decision_tree/decision_tree_regressor_impl.hpp +12 -12
  300. mlpack/include/mlpack/methods/det/det_main.cpp +1 -1
  301. mlpack/include/mlpack/methods/hmm/hmm_train_main.cpp +4 -4
  302. mlpack/include/mlpack/methods/hmm/hmm_util_impl.hpp +2 -2
  303. mlpack/include/mlpack/methods/hoeffding_trees/hoeffding_tree.hpp +6 -6
  304. mlpack/include/mlpack/methods/hoeffding_trees/hoeffding_tree_impl.hpp +31 -31
  305. mlpack/include/mlpack/methods/hoeffding_trees/hoeffding_tree_main.cpp +1 -2
  306. mlpack/include/mlpack/methods/hoeffding_trees/hoeffding_tree_model.hpp +2 -2
  307. mlpack/include/mlpack/methods/hoeffding_trees/hoeffding_tree_model_impl.hpp +1 -1
  308. mlpack/include/mlpack/methods/kde/kde_rules_impl.hpp +6 -6
  309. mlpack/include/mlpack/methods/lars/lars_impl.hpp +3 -3
  310. mlpack/include/mlpack/methods/linear_svm/linear_svm_function_impl.hpp +4 -4
  311. mlpack/include/mlpack/methods/linear_svm/linear_svm_main.cpp +3 -3
  312. mlpack/include/mlpack/methods/lmnn/lmnn_main.cpp +1 -1
  313. mlpack/include/mlpack/methods/lsh/lsh_main.cpp +1 -1
  314. mlpack/include/mlpack/methods/matrix_completion/matrix_completion_impl.hpp +1 -1
  315. mlpack/include/mlpack/methods/naive_bayes/naive_bayes_classifier_impl.hpp +1 -1
  316. mlpack/include/mlpack/methods/naive_bayes/nbc_main.cpp +3 -3
  317. mlpack/include/mlpack/methods/nca/nca_main.cpp +1 -1
  318. mlpack/include/mlpack/methods/neighbor_search/kfn_main.cpp +8 -8
  319. mlpack/include/mlpack/methods/neighbor_search/knn_main.cpp +8 -8
  320. mlpack/include/mlpack/methods/neighbor_search/neighbor_search.hpp +154 -34
  321. mlpack/include/mlpack/methods/neighbor_search/neighbor_search_impl.hpp +190 -51
  322. mlpack/include/mlpack/methods/neighbor_search/neighbor_search_stat.hpp +10 -0
  323. mlpack/include/mlpack/methods/neighbor_search/ns_model.hpp +15 -15
  324. mlpack/include/mlpack/methods/neighbor_search/ns_model_impl.hpp +55 -46
  325. mlpack/include/mlpack/methods/neighbor_search/typedef.hpp +42 -2
  326. mlpack/include/mlpack/methods/pca/pca_impl.hpp +2 -2
  327. mlpack/include/mlpack/methods/perceptron/perceptron.hpp +2 -2
  328. mlpack/include/mlpack/methods/perceptron/perceptron_impl.hpp +1 -1
  329. mlpack/include/mlpack/methods/perceptron/perceptron_main.cpp +2 -2
  330. mlpack/include/mlpack/methods/preprocess/image_converter_main.cpp +2 -3
  331. mlpack/include/mlpack/methods/preprocess/preprocess_binarize_main.cpp +2 -2
  332. mlpack/include/mlpack/methods/preprocess/preprocess_describe_main.cpp +0 -1
  333. mlpack/include/mlpack/methods/preprocess/preprocess_imputer_main.cpp +50 -129
  334. mlpack/include/mlpack/methods/preprocess/preprocess_one_hot_encoding_main.cpp +6 -6
  335. mlpack/include/mlpack/methods/preprocess/preprocess_scale_main.cpp +2 -3
  336. mlpack/include/mlpack/methods/preprocess/preprocess_split_main.cpp +3 -4
  337. mlpack/include/mlpack/methods/preprocess/scaling_model.hpp +6 -8
  338. mlpack/include/mlpack/methods/preprocess/scaling_model_impl.hpp +18 -20
  339. mlpack/include/mlpack/methods/random_forest/random_forest.hpp +5 -5
  340. mlpack/include/mlpack/methods/random_forest/random_forest_impl.hpp +9 -9
  341. mlpack/include/mlpack/methods/range_search/range_search_main.cpp +1 -1
  342. mlpack/include/mlpack/methods/rann/krann_main.cpp +1 -1
  343. mlpack/include/mlpack/methods/regularized_svd/regularized_svd_function_impl.hpp +1 -1
  344. mlpack/include/mlpack/methods/reinforcement_learning/async_learning_impl.hpp +8 -8
  345. mlpack/include/mlpack/methods/reinforcement_learning/ddpg_impl.hpp +16 -16
  346. mlpack/include/mlpack/methods/reinforcement_learning/environment/acrobot.hpp +4 -4
  347. mlpack/include/mlpack/methods/reinforcement_learning/environment/cart_pole.hpp +3 -3
  348. mlpack/include/mlpack/methods/reinforcement_learning/environment/cont_double_pole_cart.hpp +6 -5
  349. mlpack/include/mlpack/methods/reinforcement_learning/environment/pendulum.hpp +6 -5
  350. mlpack/include/mlpack/methods/reinforcement_learning/policy/aggregated_policy.hpp +2 -2
  351. mlpack/include/mlpack/methods/reinforcement_learning/q_learning_impl.hpp +10 -10
  352. mlpack/include/mlpack/methods/reinforcement_learning/q_networks/categorical_dqn.hpp +21 -17
  353. mlpack/include/mlpack/methods/reinforcement_learning/q_networks/dueling_dqn.hpp +69 -77
  354. mlpack/include/mlpack/methods/reinforcement_learning/q_networks/simple_dqn.hpp +9 -9
  355. mlpack/include/mlpack/methods/reinforcement_learning/sac_impl.hpp +14 -14
  356. mlpack/include/mlpack/methods/reinforcement_learning/td3_impl.hpp +14 -14
  357. mlpack/include/mlpack/methods/softmax_regression/softmax_regression_function_impl.hpp +1 -1
  358. mlpack/include/mlpack/methods/svdplusplus/svdplusplus_function_impl.hpp +1 -1
  359. mlpack/include/mlpack/namespace_compat.hpp +1 -0
  360. mlpack/include/mlpack/prereqs.hpp +1 -0
  361. mlpack/kde.cp38-win_amd64.pyd +0 -0
  362. mlpack/kernel_pca.cp38-win_amd64.pyd +0 -0
  363. mlpack/kfn.cp38-win_amd64.pyd +0 -0
  364. mlpack/kmeans.cp38-win_amd64.pyd +0 -0
  365. mlpack/knn.cp38-win_amd64.pyd +0 -0
  366. mlpack/krann.cp38-win_amd64.pyd +0 -0
  367. mlpack/lars.cp38-win_amd64.pyd +0 -0
  368. mlpack/linear_regression_predict.cp38-win_amd64.pyd +0 -0
  369. mlpack/linear_regression_train.cp38-win_amd64.pyd +0 -0
  370. mlpack/linear_svm.cp38-win_amd64.pyd +0 -0
  371. mlpack/lmnn.cp38-win_amd64.pyd +0 -0
  372. mlpack/local_coordinate_coding.cp38-win_amd64.pyd +0 -0
  373. mlpack/logistic_regression.cp38-win_amd64.pyd +0 -0
  374. mlpack/lsh.cp38-win_amd64.pyd +0 -0
  375. mlpack/mean_shift.cp38-win_amd64.pyd +0 -0
  376. mlpack/nbc.cp38-win_amd64.pyd +0 -0
  377. mlpack/nca.cp38-win_amd64.pyd +0 -0
  378. mlpack/nmf.cp38-win_amd64.pyd +0 -0
  379. mlpack/pca.cp38-win_amd64.pyd +0 -0
  380. mlpack/perceptron.cp38-win_amd64.pyd +0 -0
  381. mlpack/preprocess_binarize.cp38-win_amd64.pyd +0 -0
  382. mlpack/preprocess_describe.cp38-win_amd64.pyd +0 -0
  383. mlpack/preprocess_one_hot_encoding.cp38-win_amd64.pyd +0 -0
  384. mlpack/preprocess_scale.cp38-win_amd64.pyd +0 -0
  385. mlpack/preprocess_split.cp38-win_amd64.pyd +0 -0
  386. mlpack/radical.cp38-win_amd64.pyd +0 -0
  387. mlpack/random_forest.cp38-win_amd64.pyd +0 -0
  388. mlpack/softmax_regression.cp38-win_amd64.pyd +0 -0
  389. mlpack/sparse_coding.cp38-win_amd64.pyd +0 -0
  390. mlpack-4.7.0.dist-info/DELVEWHEEL +2 -0
  391. {mlpack-4.6.2.dist-info → mlpack-4.7.0.dist-info}/METADATA +5 -5
  392. {mlpack-4.6.2.dist-info → mlpack-4.7.0.dist-info}/RECORD +395 -376
  393. {mlpack-4.6.2.dist-info → mlpack-4.7.0.dist-info}/WHEEL +1 -1
  394. mlpack/include/mlpack/core/data/format.hpp +0 -31
  395. mlpack/include/mlpack/core/data/image_info.hpp +0 -102
  396. mlpack/include/mlpack/core/data/image_info_impl.hpp +0 -84
  397. mlpack/include/mlpack/core/data/load_image_impl.hpp +0 -171
  398. mlpack/include/mlpack/core/data/load_model_impl.hpp +0 -115
  399. mlpack/include/mlpack/core/data/load_vec_impl.hpp +0 -154
  400. mlpack/include/mlpack/core/data/map_policies/missing_policy.hpp +0 -148
  401. mlpack/include/mlpack/core/data/save_image_impl.hpp +0 -170
  402. mlpack/include/mlpack/core/data/types.hpp +0 -61
  403. mlpack/include/mlpack/core/data/types_impl.hpp +0 -83
  404. mlpack/include/mlpack/core/data/utilities.hpp +0 -158
  405. mlpack/include/mlpack/core/util/gitversion.hpp +0 -1
  406. mlpack/include/mlpack/methods/ann/convolution_rules/fft_convolution.hpp +0 -213
  407. mlpack/include/mlpack/methods/ann/convolution_rules/svd_convolution.hpp +0 -201
  408. mlpack/include/mlpack/methods/ann/layer/not_adapted/gru.hpp +0 -226
  409. mlpack/include/mlpack/methods/ann/layer/not_adapted/gru_impl.hpp +0 -367
  410. mlpack/include/mlpack/methods/ann/layer/not_adapted/lookup.hpp +0 -139
  411. mlpack/include/mlpack/methods/ann/layer/not_adapted/lookup_impl.hpp +0 -98
  412. mlpack-4.6.2.dist-info/DELVEWHEEL +0 -2
  413. {mlpack-4.6.2.dist-info → mlpack-4.7.0.dist-info}/top_level.txt +0 -0
  414. /mlpack.libs/{.load-order-mlpack-4.6.2 → .load-order-mlpack-4.7.0} +0 -0
@@ -0,0 +1,155 @@
1
+ /**
2
+ * @file core/data/image_bounding_box_impl.hpp
3
+ * @author Andrew Furey
4
+ *
5
+ * Draw bounding boxes and labels onto images.
6
+ *
7
+ * mlpack is free software; you may redistribute it and/or modify it under the
8
+ * terms of the 3-clause BSD license. You should have received a copy of the
9
+ * 3-clause BSD license along with mlpack. If not, see
10
+ * http://www.opensource.org/licenses/BSD-3-Clause for more information.
11
+ */
12
+
13
+ #ifndef MLPACK_CORE_DATA_IMAGE_BOUNDING_BOX_IMPL_HPP
14
+ #define MLPACK_CORE_DATA_IMAGE_BOUNDING_BOX_IMPL_HPP
15
+
16
+ #include "image_bounding_box.hpp"
17
+ #include "image_options.hpp"
18
+
19
+ namespace mlpack {
20
+
21
+ template <typename ImageType, typename ColorType>
22
+ inline void UpdatePixel(ImageType& src,
23
+ const ImageInfo& opts,
24
+ const size_t x,
25
+ const size_t y,
26
+ const ColorType& color)
27
+ {
28
+ const size_t redChannel =
29
+ x * opts.Channels() + y * opts.Channels() * opts.Width();
30
+ src.rows(redChannel, redChannel + color.n_rows - 1) = color;
31
+ }
32
+
33
+ template <typename MatType>
34
+ inline void DrawLetter(MatType& src,
35
+ const ImageInfo& opts,
36
+ const char letter,
37
+ const typename MatType::elem_type x,
38
+ const typename MatType::elem_type y,
39
+ const size_t size)
40
+ {
41
+ const size_t fontWidth = 8;
42
+ for (size_t i = 0; i < fontWidth; i++)
43
+ {
44
+ for (size_t j = 0; j < fontWidth; j++)
45
+ {
46
+ const double on =
47
+ !(font8x8Basic[(size_t)letter][i] & (unsigned char)(1 << j));
48
+ const MatType set =
49
+ arma::repmat(MatType({ on * 255.0 }), opts.Channels(), 1);
50
+ for (size_t k = 0; k < size * size; k++)
51
+ {
52
+ const size_t px = x + (j * size) + (k % size);
53
+ const size_t py = y + (i * size) + (k / size);
54
+ UpdatePixel(src, opts, px, py, set);
55
+ }
56
+ }
57
+ }
58
+ }
59
+
60
+ template <typename ImageType,
61
+ typename BoundingBoxesType,
62
+ typename ColorType>
63
+ inline void BoundingBoxImage(ImageType& src,
64
+ const ImageInfo& opts,
65
+ const BoundingBoxesType& bbox,
66
+ const ColorType& color,
67
+ const size_t borderSize,
68
+ const std::string& className,
69
+ const size_t letterSize)
70
+ {
71
+ using ElemType = typename BoundingBoxesType::elem_type;
72
+
73
+ const size_t imageSize = opts.Width() * opts.Height() * opts.Channels();
74
+ if (src.n_elem != imageSize) {
75
+ std::ostringstream errMessage;
76
+ errMessage << "BoundingBoxImage(): The size of the image (" << src.n_elem
77
+ << ") does not match the given dimensions ("
78
+ << opts.Width() << ", " << opts.Height() << ", "
79
+ << opts.Channels() << ").";
80
+ throw std::logic_error(errMessage.str());
81
+ }
82
+
83
+ if (color.n_rows != opts.Channels() || color.n_cols != 1) {
84
+ std::ostringstream errMessage;
85
+ errMessage << "BoundingBoxImage(): The color vector of shape ("
86
+ << color.n_rows << ", " << color.n_cols << ") does not match "
87
+ << "expected shape (" << opts.Channels() << ", 1)";
88
+ throw std::logic_error(errMessage.str());
89
+ }
90
+
91
+ if (bbox.n_rows < 4) {
92
+ std::ostringstream errMessage;
93
+ errMessage << "BoundingBoxImage(): A bounding box is made up of 4 points "
94
+ "but was given " << color.n_rows;
95
+ throw std::logic_error(errMessage.str());
96
+ }
97
+
98
+ const ElemType maxWidth = opts.Width() - 1;
99
+ const ElemType maxHeight = opts.Height() - 1;
100
+ const ElemType x1 = std::clamp<ElemType>(bbox(0), 0, maxWidth);
101
+ const ElemType y1 = std::clamp<ElemType>(bbox(1), 0, maxHeight);
102
+ const ElemType x2 = std::clamp<ElemType>(bbox(2), 0, maxWidth);
103
+ const ElemType y2 = std::clamp<ElemType>(bbox(3), 0, maxHeight);
104
+
105
+ if (x1 >= x2)
106
+ {
107
+ std::ostringstream errMessage;
108
+ errMessage << "BoundingBoxImage(): x1 should be < x2, but "
109
+ << x1 << " >= " << x2;
110
+ throw std::logic_error(errMessage.str());
111
+ }
112
+
113
+ if (y1 >= y2)
114
+ {
115
+ std::ostringstream errMessage;
116
+ errMessage << "BoundingBoxImage(): y1 should be < y2, but "
117
+ << y1 << " >= " << y2;
118
+ throw std::logic_error(errMessage.str());
119
+ }
120
+
121
+ for (size_t b = 0; b < borderSize; b++)
122
+ {
123
+ for (size_t x = x1; x <= x2; x++)
124
+ {
125
+ const size_t yTop = y1 + b;
126
+ const size_t yBottom = y2 - b;
127
+ UpdatePixel(src, opts, x, yTop, color);
128
+ UpdatePixel(src, opts, x, yBottom, color);
129
+ }
130
+ for (int y = y1; y <= y2; y++)
131
+ {
132
+ const size_t xLeft = x1 + b;
133
+ const size_t xRight = x2 - b;
134
+ UpdatePixel(src, opts, xLeft, y, color);
135
+ UpdatePixel(src, opts, xRight, y, color);
136
+ }
137
+ }
138
+
139
+ // Draw class name
140
+ if (letterSize == 0)
141
+ return;
142
+ size_t dx = x1;
143
+ const ElemType update = letterSize * 8;
144
+ for (size_t i = 0; i < className.size(); i++)
145
+ {
146
+ if (dx + update > opts.Width())
147
+ break;
148
+ DrawLetter(src, opts, className[i], dx, y1, letterSize);
149
+ dx += update;
150
+ }
151
+ }
152
+
153
+ } // namespace mlpack
154
+
155
+ #endif
@@ -0,0 +1,63 @@
1
+ /**
2
+ * @file core/data/image_layout.hpp
3
+ * @author Andrew Furey
4
+ *
5
+ * Image layout conversion utility functions.
6
+ *
7
+ * mlpack is free software; you may redistribute it and/or modify it under the
8
+ * terms of the 3-clause BSD license. You should have received a copy of the
9
+ * 3-clause BSD license along with mlpack. If not, see
10
+ * http://www.opensource.org/licenses/BSD-3-Clause for more information.
11
+ */
12
+
13
+ #ifndef MLPACK_CORE_DATA_IMAGE_LAYOUT_HPP
14
+ #define MLPACK_CORE_DATA_IMAGE_LAYOUT_HPP
15
+
16
+ #include "image_options.hpp"
17
+
18
+ namespace mlpack {
19
+
20
+ /**
21
+ * `Load()` returns a matrix where each column represents an image.
22
+ * The rows of each image represent pixel values whose channels are
23
+ * interleaved, i.e. [r, g, b, r, g, b, ... ]. Some mlpack functionality
24
+ * such as convolutions require that each channel of the image be grouped
25
+ * together instead, i.e. [r, r, ... , g, g, ... , b, b].
26
+ *
27
+ * 'GroupChannels()` makes a copy of the image and returns the same image
28
+ * except the channels are grouped together instead of interleaved.
29
+ *
30
+ * `GroupChannels()` expects that your input image is stored such that channels
31
+ * are interleaved, i.e. [r, g, b, r, g, b ... ], and will not work as
32
+ * intended otherwise.
33
+ *
34
+ * @param image Image matrix whose channels are interleaved.
35
+ * @param info ImageInfo describing shape of image.
36
+ * @return Mat Copy of image whose channels are grouped together.
37
+ */
38
+ template <typename eT>
39
+ inline arma::Mat<eT> GroupChannels(const arma::Mat<eT>& image,
40
+ const ImageInfo& info);
41
+
42
+ /**
43
+ * The inverse of `GroupChannels()`. Given an image where each channel is
44
+ * grouped together, make a copy and interleave the channels,
45
+ * i.e. [r, g, b, r, g, b, ... ].
46
+ *
47
+ * `InterleaveChannels()` expects that your input image is stored such that
48
+ * the channels are grouped, i.e. [r, r, ..., g, g, ..., b, b], and will not
49
+ * work as intended otherwise.
50
+ *
51
+ * @param image Image matrix in mlpack layout.
52
+ * @param info ImageInfo describing shape of image.
53
+ * @return Mat Copy of image whose channels are interleaved.
54
+ */
55
+ template <typename eT>
56
+ inline arma::Mat<eT> InterleaveChannels(const arma::Mat<eT>& image,
57
+ const ImageInfo& info);
58
+
59
+ } // namespace mlpack
60
+
61
+ #include "image_layout_impl.hpp"
62
+
63
+ #endif
@@ -0,0 +1,75 @@
1
+ /**
2
+ * @file core/data/image_layout_impl.hpp
3
+ * @author Andrew Furey
4
+ *
5
+ * Convert image layouts between mlpack and stb.
6
+ *
7
+ * mlpack is free software; you may redistribute it and/or modify it under the
8
+ * terms of the 3-clause BSD license. You should have received a copy of the
9
+ * 3-clause BSD license along with mlpack. If not, see
10
+ * http://www.opensource.org/licenses/BSD-3-Clause for more information.
11
+ */
12
+
13
+ #ifndef MLPACK_CORE_DATA_IMAGE_LAYOUT_IMPL_HPP
14
+ #define MLPACK_CORE_DATA_IMAGE_LAYOUT_IMPL_HPP
15
+
16
+ #include "image_layout.hpp"
17
+ #include "image_options.hpp"
18
+
19
+ namespace mlpack {
20
+
21
+ template <typename eT>
22
+ arma::Mat<eT> GroupChannels(const arma::Mat<eT>& image,
23
+ const ImageInfo& info)
24
+ {
25
+ size_t expectedRows = info.Width() * info.Height() * info.Channels();
26
+ if (expectedRows != image.n_rows)
27
+ {
28
+ std::ostringstream errMessage;
29
+ errMessage << "GroupChannels(): Expected " << expectedRows
30
+ << " rows but got image with " << image.n_rows << " rows.";
31
+ throw std::logic_error(errMessage.str());
32
+ }
33
+
34
+ if (info.Channels() == 1)
35
+ return image;
36
+
37
+ arma::Mat<eT> output(image.n_rows, image.n_cols, arma::fill::none);
38
+ for (size_t i = 0; i < image.n_cols; i++)
39
+ {
40
+ output.col(i) = arma::vectorise(
41
+ arma::reshape(image.col(i), info.Channels(), info.Height() * info.Width())
42
+ .t());
43
+ }
44
+ return output;
45
+ }
46
+
47
+ template <typename eT>
48
+ arma::Mat<eT> InterleaveChannels(const arma::Mat<eT>& image,
49
+ const ImageInfo& info)
50
+ {
51
+ size_t expectedRows = info.Width() * info.Height() * info.Channels();
52
+ if (expectedRows != image.n_rows)
53
+ {
54
+ std::ostringstream errMessage;
55
+ errMessage << "InterleaveChannels(): Expected " << expectedRows
56
+ << " rows but got image with " << image.n_rows << " rows.";
57
+ throw std::logic_error(errMessage.str());
58
+ }
59
+
60
+ if (info.Channels() == 1)
61
+ return image;
62
+
63
+ arma::Mat<eT> output(image.n_rows, image.n_cols);
64
+ for (size_t i = 0; i < image.n_cols; i++)
65
+ {
66
+ output.col(i) = arma::vectorise(
67
+ arma::reshape(image.col(i), info.Height() * info.Width(), info.Channels())
68
+ .t());
69
+ }
70
+ return output;
71
+ }
72
+
73
+ } // namespace mlpack
74
+
75
+ #endif
@@ -0,0 +1,116 @@
1
+ /**
2
+ * @file core/data/image_letterbox.hpp
3
+ * @author Andrew Furey
4
+ *
5
+ * Apply letterbox transform to an image.
6
+ *
7
+ * mlpack is free software; you may redistribute it and/or modify it under the
8
+ * terms of the 3-clause BSD license. You should have received a copy of the
9
+ * 3-clause BSD license along with mlpack. If not, see
10
+ * http://www.opensource.org/licenses/BSD-3-Clause for more information.
11
+ */
12
+
13
+ #ifndef MLPACK_CORE_DATA_IMAGE_LETTERBOX_HPP
14
+ #define MLPACK_CORE_DATA_IMAGE_LETTERBOX_HPP
15
+
16
+ #include <mlpack/prereqs.hpp>
17
+
18
+ #include "image_options.hpp"
19
+ #include "image_resize_crop.hpp"
20
+
21
+ namespace mlpack {
22
+
23
+ /**
24
+ * Resize an image to `imgSize` x `imgSize` while keeping the original
25
+ * image's aspect ratio. Fill in white space with `fillValue`.
26
+ *
27
+ * @param src The source matrix that contains the images.
28
+ * @param srcOpt Contains relevant information on each source image.
29
+ * @param dest The destination matrix that will have the source image
30
+ embedded onto it
31
+ * @param imgSize The width and height of each output image.
32
+ * @param fillValue The whitespace value.
33
+ */
34
+ template<typename eT>
35
+ void LetterboxImages(arma::Mat<eT>& src,
36
+ ImageOptions& srcOpt,
37
+ const size_t width,
38
+ const size_t height,
39
+ const eT fillValue)
40
+ {
41
+ const size_t expectedRows =
42
+ srcOpt.Width() * srcOpt.Height() * srcOpt.Channels();
43
+
44
+ if (expectedRows == 0)
45
+ {
46
+ std::ostringstream errMessage;
47
+ errMessage << "LetterboxImages(): Dimensions cannot contain a zero."
48
+ " Received: " << srcOpt.Width() << " x " << srcOpt.Height()
49
+ << " x " << srcOpt.Channels() << ".";
50
+ throw std::logic_error(errMessage.str());
51
+ }
52
+
53
+ if (src.n_rows == 0)
54
+ throw std::logic_error("LetterboxImages(): Matrix rows cannot be zero.");
55
+
56
+ if (src.n_rows != expectedRows)
57
+ {
58
+ std::ostringstream errMessage;
59
+ errMessage << "LetterboxImages(): Expected size of image was "
60
+ << expectedRows << " but received " << src.n_rows;
61
+ throw std::logic_error(errMessage.str());
62
+ }
63
+
64
+ if (srcOpt.Channels() != 1 && srcOpt.Channels() != 3)
65
+ {
66
+ std::ostringstream errMessage;
67
+ errMessage << "LetterboxImages(): Must have only 1 or 3 channels, but "
68
+ "received " << srcOpt.Channels();
69
+ throw std::logic_error(errMessage.str());
70
+ }
71
+
72
+ size_t newWidth, newHeight;
73
+ if (width * 1. / srcOpt.Width() > height * 1. / srcOpt.Height())
74
+ {
75
+ newHeight = height;
76
+ newWidth = srcOpt.Width() * height / srcOpt.Height();
77
+ }
78
+ else
79
+ {
80
+ newWidth = width;
81
+ newHeight = srcOpt.Height() * width / srcOpt.Width();
82
+ }
83
+
84
+ const size_t numImages = src.n_cols;
85
+ arma::Mat<eT> dest(width * height * srcOpt.Channels(), numImages,
86
+ arma::fill::none);
87
+
88
+ // Resize, then embed src within dest.
89
+ ResizeImages(src, srcOpt, newWidth, newHeight);
90
+ arma::Cube<eT> cubeSrc, cubeDest;
91
+
92
+ // Channels as rows, because assumption is that channels are
93
+ // interleaved (see image_layout.hpp for more info).
94
+ MakeAlias(cubeSrc, src, srcOpt.Channels() * srcOpt.Width(), srcOpt.Height(),
95
+ numImages);
96
+ MakeAlias(cubeDest, dest, srcOpt.Channels() * width, height, numImages);
97
+
98
+ const size_t dx = (width - newWidth) / 2;
99
+ const size_t dy = (height - newHeight) / 2;
100
+
101
+ cubeDest.fill(fillValue);
102
+ // Fill RGB
103
+ cubeDest.subcube(dx * srcOpt.Channels(),
104
+ dy,
105
+ 0,
106
+ ((srcOpt.Width() + dx) * srcOpt.Channels()) - 1,
107
+ srcOpt.Height() + dy - 1,
108
+ numImages - 1) = cubeSrc;
109
+
110
+ src = std::move(dest);
111
+ srcOpt = ImageOptions(width, height, srcOpt.Channels());
112
+ }
113
+
114
+ } // namespace mlpack
115
+
116
+ #endif
@@ -0,0 +1,257 @@
1
+ /**
2
+ * @file core/data/image_options.hpp
3
+ * @author Mehul Kumar Nirala
4
+ * @author Ryan Curtin
5
+ * @author Omar Shrit
6
+ *
7
+ * Image options, all possible options to load different image formats
8
+ * with specific settings into mlpack.
9
+ *
10
+ * mlpack is free software; you may redistribute it and/or modify it under the
11
+ * terms of the 3-clause BSD license. You should have received a copy of the
12
+ * 3-clause BSD license along with mlpack. If not, see
13
+ * http://www.opensource.org/licenses/BSD-3-Clause for more information.
14
+ */
15
+
16
+ #ifndef MLPACK_CORE_DATA_IMAGE_INFO_HPP
17
+ #define MLPACK_CORE_DATA_IMAGE_INFO_HPP
18
+
19
+ #include <mlpack/prereqs.hpp>
20
+ #include "extension.hpp"
21
+ #include "data_options.hpp"
22
+
23
+ namespace mlpack {
24
+
25
+ /**
26
+ * Implements meta-data of images required by Load and
27
+ * Save for loading and saving images into arma::Mat.
28
+ */
29
+ class ImageOptions : public DataOptionsBase<ImageOptions>
30
+ {
31
+ public:
32
+ /**
33
+ * Instantiate the ImageOptions object with the given image width, height,
34
+ * number of channels and quality parameter.
35
+ *
36
+ * @param width Image width.
37
+ * @param height Image height.
38
+ * @param channels Number of channels in the image.
39
+ * @param quality Compression of the image if saved as jpg (0 - 100).
40
+ * #param image Indicate if we are loading / saving an image.
41
+ */
42
+ ImageOptions(std::optional<size_t> width = std::nullopt,
43
+ std::optional<size_t> height = std::nullopt,
44
+ std::optional<size_t> channels = std::nullopt,
45
+ std::optional<size_t> quality = std::nullopt) :
46
+ DataOptionsBase<ImageOptions>(),
47
+ width(width),
48
+ height(height),
49
+ channels(channels),
50
+ quality(quality)
51
+ {
52
+ // Do nothing.
53
+ }
54
+
55
+ ImageOptions(const DataOptionsBase<ImageOptions>& opts) :
56
+ DataOptionsBase<ImageOptions>()
57
+ {
58
+ // Delegate to copy operator.
59
+ *this = opts;
60
+ }
61
+
62
+ ImageOptions(DataOptionsBase<ImageOptions>&& opts) :
63
+ DataOptionsBase<ImageOptions>()
64
+ {
65
+ // Delegate to move operator.
66
+ *this = std::move(opts);
67
+ }
68
+
69
+ ImageOptions& operator=(const DataOptionsBase<ImageOptions>& otherIn)
70
+ {
71
+ const ImageOptions& other = static_cast<const ImageOptions&>(otherIn);
72
+
73
+ if (&other == this)
74
+ return *this;
75
+
76
+ width = other.width;
77
+ height = other.height;
78
+ channels = other.channels;
79
+ quality = other.quality;
80
+
81
+ // Copy base members.
82
+ DataOptionsBase<ImageOptions>::operator=(other);
83
+
84
+ return *this;
85
+ }
86
+
87
+ ImageOptions& operator=(DataOptionsBase<ImageOptions>&& otherIn)
88
+ {
89
+ ImageOptions&& other = static_cast<ImageOptions&&>(otherIn);
90
+
91
+ if (&other == this)
92
+ return *this;
93
+
94
+ width = std::move(other.width);
95
+ height = std::move(other.height);
96
+ channels = std::move(other.channels);
97
+ quality = std::move(other.quality);
98
+
99
+ // Move base members.
100
+ DataOptionsBase<ImageOptions>::operator=(std::move(other));
101
+
102
+ return *this;
103
+ }
104
+
105
+ //
106
+ // Handling for copy and move operations on other DataOptionsBase types.
107
+ //
108
+
109
+ // Conversions must be explicit.
110
+ template<typename Derived2>
111
+ explicit ImageOptions(const DataOptionsBase<Derived2>& other) :
112
+ DataOptionsBase<ImageOptions>(other) { }
113
+
114
+ template<typename Derived2>
115
+ explicit ImageOptions(DataOptionsBase<Derived2>&& other) :
116
+ DataOptionsBase<ImageOptions>(std::move(other)) { }
117
+
118
+ template<typename Derived2>
119
+ ImageOptions& operator=(const DataOptionsBase<Derived2>& other)
120
+ {
121
+ return static_cast<ImageOptions&>(
122
+ DataOptionsBase<ImageOptions>::operator=(other));
123
+ }
124
+
125
+ template<typename Derived2>
126
+ ImageOptions& operator=(DataOptionsBase<Derived2>&& other)
127
+ {
128
+ return static_cast<ImageOptions&>(
129
+ DataOptionsBase<ImageOptions>::operator=(std::move(other)));
130
+ }
131
+
132
+ void Combine(const ImageOptions& other)
133
+ {
134
+ if (!width.has_value() && other.width.has_value())
135
+ {
136
+ width = other.width;
137
+ }
138
+ else if (width.has_value() && other.width.has_value())
139
+ {
140
+ if (width.has_value() != other.width.has_value())
141
+ {
142
+ throw std::invalid_argument("ImageOptions: operator+(): cannot combine"
143
+ "width with different values!");
144
+ }
145
+ }
146
+
147
+ if (!height.has_value() && other.height.has_value())
148
+ {
149
+ height = other.height;
150
+ }
151
+ else if (height.has_value() && other.height.has_value())
152
+ {
153
+ if (height.has_value() != other.height.has_value())
154
+ {
155
+ throw std::invalid_argument("ImageOptions: operator+(): cannot combine"
156
+ "height with different values!");
157
+ }
158
+ }
159
+
160
+ if (!channels.has_value() && other.channels.has_value())
161
+ {
162
+ channels = other.channels;
163
+ }
164
+ else if (channels.has_value() && other.channels.has_value())
165
+ {
166
+ if (channels.has_value() != other.channels.has_value())
167
+ {
168
+ throw std::invalid_argument("ImageOptions: operator+(): cannot combine"
169
+ "channels with different values!");
170
+ }
171
+ }
172
+
173
+ if (!quality.has_value() && other.quality.has_value())
174
+ {
175
+ quality = other.quality;
176
+ }
177
+ else if (quality.has_value() && other.quality.has_value())
178
+ {
179
+ if (quality.has_value() != other.quality.has_value())
180
+ {
181
+ throw std::invalid_argument("ImageOptions: operator+(): cannot combine"
182
+ "quality with different values!");
183
+ }
184
+ }
185
+ }
186
+
187
+ // Print warnings for any members that cannot be represented by a
188
+ // DataOptionsBase<void>.
189
+ void WarnBaseConversion(const char* dataDescription) const
190
+ {
191
+ if (width.has_value() && width != defaultWidth)
192
+ this->WarnOptionConversion("width", dataDescription);
193
+ if (height.has_value() && height != defaultHeight)
194
+ this->WarnOptionConversion("height", dataDescription);
195
+ if (channels.has_value() && channels != defaultChannels)
196
+ this->WarnOptionConversion("channels", dataDescription);
197
+ if (quality.has_value() && quality != defaultQuality)
198
+ this->WarnOptionConversion("quality", dataDescription);
199
+ }
200
+
201
+ static const char* DataDescription() { return "image data"; }
202
+
203
+ void Reset()
204
+ {
205
+ width.reset();
206
+ height.reset();
207
+ channels.reset();
208
+ quality.reset();
209
+ }
210
+
211
+ size_t Width() const { return this->AccessMember(width, defaultWidth); }
212
+ size_t& Width() { return this->ModifyMember(width, defaultWidth); }
213
+
214
+ size_t Height() const { return this->AccessMember(height, defaultHeight); }
215
+ size_t& Height() { return this->ModifyMember(height, defaultHeight); }
216
+
217
+ size_t Channels() const
218
+ {
219
+ return this->AccessMember(channels, defaultChannels);
220
+ }
221
+
222
+ size_t& Channels() { return this->ModifyMember(channels, defaultChannels); }
223
+
224
+ size_t Quality() const { return this->AccessMember(quality, defaultQuality); }
225
+ size_t& Quality() { return this->ModifyMember(quality, defaultQuality); }
226
+
227
+ inline static const std::unordered_set<std::string> saveType
228
+ = {"jpg", "png", "tga", "bmp"};
229
+
230
+ inline static const std::unordered_set<std::string> loadType
231
+ = {"jpg", "png", "tga", "bmp", "psd", "gif", "pic", "pnm", "jpeg"};
232
+
233
+ private:
234
+ std::optional<size_t> width;
235
+ std::optional<size_t> height;
236
+ std::optional<size_t> channels;
237
+ std::optional<size_t> quality;
238
+
239
+ constexpr static const size_t defaultWidth = 0;
240
+ constexpr static const size_t defaultHeight = 0;
241
+ constexpr static const size_t defaultChannels = 3;
242
+ constexpr static const size_t defaultQuality = 90;
243
+ };
244
+
245
+ template<>
246
+ struct IsDataOptions<ImageOptions>
247
+ {
248
+ constexpr static bool value = true;
249
+ };
250
+
251
+ // Provide backward compatibility with the previous API
252
+ // This should be removed with mlpack 5.0.0
253
+ using ImageInfo = ImageOptions;
254
+
255
+ } // namespace mlpack
256
+
257
+ #endif