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.
- mlpack/__init__.py +3 -3
- mlpack/adaboost_classify.cp38-win_amd64.pyd +0 -0
- mlpack/adaboost_probabilities.cp38-win_amd64.pyd +0 -0
- mlpack/adaboost_train.cp38-win_amd64.pyd +0 -0
- mlpack/approx_kfn.cp38-win_amd64.pyd +0 -0
- mlpack/arma_numpy.cp38-win_amd64.pyd +0 -0
- mlpack/bayesian_linear_regression.cp38-win_amd64.pyd +0 -0
- mlpack/cf.cp38-win_amd64.pyd +0 -0
- mlpack/dbscan.cp38-win_amd64.pyd +0 -0
- mlpack/decision_tree.cp38-win_amd64.pyd +0 -0
- mlpack/det.cp38-win_amd64.pyd +0 -0
- mlpack/emst.cp38-win_amd64.pyd +0 -0
- mlpack/fastmks.cp38-win_amd64.pyd +0 -0
- mlpack/gmm_generate.cp38-win_amd64.pyd +0 -0
- mlpack/gmm_probability.cp38-win_amd64.pyd +0 -0
- mlpack/gmm_train.cp38-win_amd64.pyd +0 -0
- mlpack/hmm_generate.cp38-win_amd64.pyd +0 -0
- mlpack/hmm_loglik.cp38-win_amd64.pyd +0 -0
- mlpack/hmm_train.cp38-win_amd64.pyd +0 -0
- mlpack/hmm_viterbi.cp38-win_amd64.pyd +0 -0
- mlpack/hoeffding_tree.cp38-win_amd64.pyd +0 -0
- mlpack/image_converter.cp38-win_amd64.pyd +0 -0
- mlpack/include/mlpack/base.hpp +1 -0
- mlpack/include/mlpack/core/arma_extend/find_nan.hpp +63 -0
- mlpack/include/mlpack/core/cereal/low_precision.hpp +48 -0
- mlpack/include/mlpack/core/cv/cv_base.hpp +11 -11
- mlpack/include/mlpack/core/cv/cv_base_impl.hpp +7 -7
- mlpack/include/mlpack/core/cv/k_fold_cv.hpp +4 -4
- mlpack/include/mlpack/core/cv/k_fold_cv_impl.hpp +4 -4
- mlpack/include/mlpack/core/cv/meta_info_extractor.hpp +10 -10
- mlpack/include/mlpack/core/cv/metrics/f1_impl.hpp +1 -1
- mlpack/include/mlpack/core/cv/metrics/facilities.hpp +2 -1
- mlpack/include/mlpack/core/cv/metrics/precision_impl.hpp +1 -1
- mlpack/include/mlpack/core/cv/metrics/r2_score_impl.hpp +1 -1
- mlpack/include/mlpack/core/cv/metrics/silhouette_score_impl.hpp +1 -1
- mlpack/include/mlpack/core/cv/simple_cv.hpp +4 -4
- mlpack/include/mlpack/core/cv/simple_cv_impl.hpp +2 -2
- mlpack/include/mlpack/core/data/binarize.hpp +0 -2
- mlpack/include/mlpack/core/data/check_categorical_param.hpp +0 -2
- mlpack/include/mlpack/core/data/combine_options.hpp +151 -0
- mlpack/include/mlpack/core/data/confusion_matrix.hpp +0 -2
- mlpack/include/mlpack/core/data/confusion_matrix_impl.hpp +0 -2
- mlpack/include/mlpack/core/data/data.hpp +6 -4
- mlpack/include/mlpack/core/data/data_options.hpp +341 -18
- mlpack/include/mlpack/core/data/dataset_mapper.hpp +3 -5
- mlpack/include/mlpack/core/data/dataset_mapper_impl.hpp +0 -2
- mlpack/include/mlpack/core/data/detect_file_type.hpp +34 -5
- mlpack/include/mlpack/core/data/detect_file_type_impl.hpp +185 -11
- mlpack/include/mlpack/core/data/extension.hpp +2 -4
- mlpack/include/mlpack/core/data/font8x8_basic.h +152 -0
- mlpack/include/mlpack/core/data/has_serialize.hpp +0 -2
- mlpack/include/mlpack/core/data/image_bounding_box.hpp +36 -0
- mlpack/include/mlpack/core/data/image_bounding_box_impl.hpp +155 -0
- mlpack/include/mlpack/core/data/image_layout.hpp +63 -0
- mlpack/include/mlpack/core/data/image_layout_impl.hpp +75 -0
- mlpack/include/mlpack/core/data/image_letterbox.hpp +116 -0
- mlpack/include/mlpack/core/data/image_options.hpp +257 -0
- mlpack/include/mlpack/core/data/image_resize_crop.hpp +113 -48
- mlpack/include/mlpack/core/data/imputation_methods/custom_imputation.hpp +16 -32
- mlpack/include/mlpack/core/data/imputation_methods/listwise_deletion.hpp +19 -29
- mlpack/include/mlpack/core/data/imputation_methods/mean_imputation.hpp +113 -44
- mlpack/include/mlpack/core/data/imputation_methods/median_imputation.hpp +44 -43
- mlpack/include/mlpack/core/data/imputer.hpp +41 -49
- mlpack/include/mlpack/core/data/is_naninf.hpp +0 -2
- mlpack/include/mlpack/core/data/load.hpp +49 -233
- mlpack/include/mlpack/core/data/load_arff.hpp +0 -2
- mlpack/include/mlpack/core/data/load_arff_impl.hpp +2 -4
- mlpack/include/mlpack/core/data/load_categorical.hpp +1 -4
- mlpack/include/mlpack/core/data/load_categorical_impl.hpp +10 -26
- mlpack/include/mlpack/core/data/load_dense.hpp +279 -0
- mlpack/include/mlpack/core/data/load_deprecated.hpp +466 -0
- mlpack/include/mlpack/core/data/load_image.hpp +71 -43
- mlpack/include/mlpack/core/data/load_impl.hpp +95 -274
- mlpack/include/mlpack/core/data/load_model.hpp +62 -0
- mlpack/include/mlpack/core/data/load_numeric.hpp +124 -87
- mlpack/include/mlpack/core/data/load_sparse.hpp +91 -0
- mlpack/include/mlpack/core/data/map_policies/datatype.hpp +0 -2
- mlpack/include/mlpack/core/data/map_policies/increment_policy.hpp +0 -2
- mlpack/include/mlpack/core/data/map_policies/map_policies.hpp +0 -1
- mlpack/include/mlpack/core/data/matrix_options.hpp +152 -20
- mlpack/include/mlpack/core/data/normalize_labels.hpp +0 -2
- mlpack/include/mlpack/core/data/normalize_labels_impl.hpp +0 -2
- mlpack/include/mlpack/core/data/one_hot_encoding.hpp +2 -4
- mlpack/include/mlpack/core/data/one_hot_encoding_impl.hpp +3 -5
- mlpack/include/mlpack/core/data/save.hpp +26 -120
- mlpack/include/mlpack/core/data/save_dense.hpp +42 -0
- mlpack/include/mlpack/core/data/save_deprecated.hpp +308 -0
- mlpack/include/mlpack/core/data/save_image.hpp +82 -42
- mlpack/include/mlpack/core/data/save_impl.hpp +60 -245
- mlpack/include/mlpack/core/data/save_matrix.hpp +45 -0
- mlpack/include/mlpack/core/data/save_model.hpp +61 -0
- mlpack/include/mlpack/core/data/save_numeric.hpp +60 -0
- mlpack/include/mlpack/core/data/save_sparse.hpp +44 -0
- mlpack/include/mlpack/core/data/scaler_methods/max_abs_scaler.hpp +0 -2
- mlpack/include/mlpack/core/data/scaler_methods/mean_normalization.hpp +2 -4
- mlpack/include/mlpack/core/data/scaler_methods/min_max_scaler.hpp +0 -2
- mlpack/include/mlpack/core/data/scaler_methods/pca_whitening.hpp +1 -3
- mlpack/include/mlpack/core/data/scaler_methods/standard_scaler.hpp +2 -4
- mlpack/include/mlpack/core/data/scaler_methods/zca_whitening.hpp +0 -2
- mlpack/include/mlpack/core/data/split_data.hpp +6 -8
- mlpack/include/mlpack/core/data/string_algorithms.hpp +0 -2
- mlpack/include/mlpack/core/data/string_encoding.hpp +0 -2
- mlpack/include/mlpack/core/data/string_encoding_dictionary.hpp +0 -2
- mlpack/include/mlpack/core/data/string_encoding_impl.hpp +0 -2
- mlpack/include/mlpack/core/data/string_encoding_policies/bag_of_words_encoding_policy.hpp +0 -2
- mlpack/include/mlpack/core/data/string_encoding_policies/dictionary_encoding_policy.hpp +0 -2
- mlpack/include/mlpack/core/data/string_encoding_policies/policy_traits.hpp +0 -2
- mlpack/include/mlpack/core/data/string_encoding_policies/tf_idf_encoding_policy.hpp +0 -2
- mlpack/include/mlpack/core/data/text_options.hpp +91 -53
- mlpack/include/mlpack/core/data/tokenizers/char_extract.hpp +0 -2
- mlpack/include/mlpack/core/data/tokenizers/split_by_any_of.hpp +0 -2
- mlpack/include/mlpack/core/distributions/gamma_distribution_impl.hpp +4 -4
- mlpack/include/mlpack/core/distributions/laplace_distribution.hpp +9 -9
- mlpack/include/mlpack/core/distributions/laplace_distribution_impl.hpp +7 -7
- mlpack/include/mlpack/core/hpt/cv_function.hpp +2 -2
- mlpack/include/mlpack/core/hpt/cv_function_impl.hpp +2 -2
- mlpack/include/mlpack/core/hpt/hpt.hpp +4 -4
- mlpack/include/mlpack/core/hpt/hpt_impl.hpp +9 -9
- mlpack/include/mlpack/core/math/make_alias.hpp +7 -5
- mlpack/include/mlpack/core/math/random.hpp +19 -5
- mlpack/include/mlpack/core/math/shuffle_data.hpp +79 -245
- mlpack/include/mlpack/core/metrics/non_maximal_suppression_impl.hpp +9 -10
- mlpack/include/mlpack/core/stb/bundled/stb_image_resize2.h +291 -239
- mlpack/include/mlpack/core/tree/binary_space_tree/rp_tree_mean_split_impl.hpp +7 -7
- mlpack/include/mlpack/core/tree/cellbound.hpp +2 -2
- mlpack/include/mlpack/core/tree/cosine_tree/cosine_tree_impl.hpp +10 -10
- mlpack/include/mlpack/core/tree/octree/octree.hpp +10 -0
- mlpack/include/mlpack/core/tree/octree/octree_impl.hpp +14 -4
- mlpack/include/mlpack/core/util/arma_traits.hpp +25 -38
- mlpack/include/mlpack/core/util/coot_traits.hpp +97 -0
- mlpack/include/mlpack/core/util/forward.hpp +0 -2
- mlpack/include/mlpack/core/util/param.hpp +4 -4
- mlpack/include/mlpack/core/util/params_impl.hpp +2 -2
- mlpack/include/mlpack/core/util/using.hpp +29 -2
- mlpack/include/mlpack/core/util/version.hpp +5 -3
- mlpack/include/mlpack/core/util/version_impl.hpp +3 -6
- mlpack/include/mlpack/methods/adaboost/adaboost_classify_main.cpp +1 -1
- mlpack/include/mlpack/methods/adaboost/adaboost_main.cpp +3 -3
- mlpack/include/mlpack/methods/adaboost/adaboost_train_main.cpp +2 -2
- mlpack/include/mlpack/methods/ann/activation_functions/activation_functions.hpp +1 -0
- mlpack/include/mlpack/methods/ann/activation_functions/bipolar_sigmoid_function.hpp +6 -4
- mlpack/include/mlpack/methods/ann/activation_functions/elish_function.hpp +17 -12
- mlpack/include/mlpack/methods/ann/activation_functions/elliot_function.hpp +9 -7
- mlpack/include/mlpack/methods/ann/activation_functions/gaussian_function.hpp +7 -6
- mlpack/include/mlpack/methods/ann/activation_functions/gelu_exact_function.hpp +73 -0
- mlpack/include/mlpack/methods/ann/activation_functions/gelu_function.hpp +27 -16
- mlpack/include/mlpack/methods/ann/activation_functions/hard_sigmoid_function.hpp +8 -6
- mlpack/include/mlpack/methods/ann/activation_functions/hard_swish_function.hpp +6 -4
- mlpack/include/mlpack/methods/ann/activation_functions/hyper_sinh_function.hpp +13 -8
- mlpack/include/mlpack/methods/ann/activation_functions/identity_function.hpp +6 -4
- mlpack/include/mlpack/methods/ann/activation_functions/inverse_quadratic_function.hpp +8 -6
- mlpack/include/mlpack/methods/ann/activation_functions/lisht_function.hpp +7 -5
- mlpack/include/mlpack/methods/ann/activation_functions/logistic_function.hpp +14 -12
- mlpack/include/mlpack/methods/ann/activation_functions/mish_function.hpp +7 -5
- mlpack/include/mlpack/methods/ann/activation_functions/multi_quadratic_function.hpp +6 -4
- mlpack/include/mlpack/methods/ann/activation_functions/poisson1_function.hpp +4 -2
- mlpack/include/mlpack/methods/ann/activation_functions/quadratic_function.hpp +6 -4
- mlpack/include/mlpack/methods/ann/activation_functions/rectifier_function.hpp +10 -10
- mlpack/include/mlpack/methods/ann/activation_functions/silu_function.hpp +10 -8
- mlpack/include/mlpack/methods/ann/activation_functions/softplus_function.hpp +12 -9
- mlpack/include/mlpack/methods/ann/activation_functions/softsign_function.hpp +15 -23
- mlpack/include/mlpack/methods/ann/activation_functions/spline_function.hpp +9 -7
- mlpack/include/mlpack/methods/ann/activation_functions/swish_function.hpp +11 -9
- mlpack/include/mlpack/methods/ann/activation_functions/tanh_exponential_function.hpp +9 -7
- mlpack/include/mlpack/methods/ann/activation_functions/tanh_function.hpp +10 -7
- mlpack/include/mlpack/methods/ann/ann.hpp +3 -0
- mlpack/include/mlpack/methods/ann/convolution_rules/base_convolution.hpp +197 -0
- mlpack/include/mlpack/methods/ann/convolution_rules/convolution_rules.hpp +1 -2
- mlpack/include/mlpack/methods/ann/convolution_rules/im2col_convolution.hpp +215 -0
- mlpack/include/mlpack/methods/ann/convolution_rules/naive_convolution.hpp +109 -154
- mlpack/include/mlpack/methods/ann/dag_network.hpp +728 -0
- mlpack/include/mlpack/methods/ann/dag_network_impl.hpp +1640 -0
- mlpack/include/mlpack/methods/ann/dists/bernoulli_distribution_impl.hpp +1 -1
- mlpack/include/mlpack/methods/ann/dists/normal_distribution_impl.hpp +7 -2
- mlpack/include/mlpack/methods/ann/ffn.hpp +39 -3
- mlpack/include/mlpack/methods/ann/ffn_impl.hpp +14 -32
- mlpack/include/mlpack/methods/ann/init_rules/const_init.hpp +4 -4
- mlpack/include/mlpack/methods/ann/init_rules/gaussian_init.hpp +6 -2
- mlpack/include/mlpack/methods/ann/init_rules/he_init.hpp +4 -2
- mlpack/include/mlpack/methods/ann/init_rules/kathirvalavakumar_subavathi_init.hpp +3 -3
- mlpack/include/mlpack/methods/ann/init_rules/lecun_normal_init.hpp +4 -2
- mlpack/include/mlpack/methods/ann/init_rules/nguyen_widrow_init.hpp +2 -2
- mlpack/include/mlpack/methods/ann/init_rules/oivs_init.hpp +2 -2
- mlpack/include/mlpack/methods/ann/init_rules/orthogonal_init.hpp +2 -2
- mlpack/include/mlpack/methods/ann/init_rules/random_init.hpp +8 -4
- mlpack/include/mlpack/methods/ann/layer/adaptive_max_pooling.hpp +21 -23
- mlpack/include/mlpack/methods/ann/layer/adaptive_max_pooling_impl.hpp +15 -15
- mlpack/include/mlpack/methods/ann/layer/adaptive_mean_pooling.hpp +21 -23
- mlpack/include/mlpack/methods/ann/layer/adaptive_mean_pooling_impl.hpp +16 -16
- mlpack/include/mlpack/methods/ann/layer/add.hpp +18 -18
- mlpack/include/mlpack/methods/ann/layer/add_impl.hpp +13 -13
- mlpack/include/mlpack/methods/ann/layer/add_merge.hpp +19 -18
- mlpack/include/mlpack/methods/ann/layer/add_merge_impl.hpp +13 -13
- mlpack/include/mlpack/methods/ann/layer/alpha_dropout.hpp +17 -16
- mlpack/include/mlpack/methods/ann/layer/alpha_dropout_impl.hpp +14 -13
- mlpack/include/mlpack/methods/ann/layer/base_layer.hpp +28 -51
- mlpack/include/mlpack/methods/ann/layer/batch_norm.hpp +16 -18
- mlpack/include/mlpack/methods/ann/layer/batch_norm_impl.hpp +55 -54
- mlpack/include/mlpack/methods/ann/layer/c_relu.hpp +18 -20
- mlpack/include/mlpack/methods/ann/layer/c_relu_impl.hpp +20 -25
- mlpack/include/mlpack/methods/ann/layer/celu.hpp +14 -19
- mlpack/include/mlpack/methods/ann/layer/celu_impl.hpp +25 -34
- mlpack/include/mlpack/methods/ann/layer/concat.hpp +18 -18
- mlpack/include/mlpack/methods/ann/layer/concat_impl.hpp +13 -13
- mlpack/include/mlpack/methods/ann/layer/concatenate.hpp +18 -18
- mlpack/include/mlpack/methods/ann/layer/concatenate_impl.hpp +14 -14
- mlpack/include/mlpack/methods/ann/layer/convolution.hpp +42 -47
- mlpack/include/mlpack/methods/ann/layer/convolution_impl.hpp +170 -159
- mlpack/include/mlpack/methods/ann/layer/dropconnect.hpp +18 -20
- mlpack/include/mlpack/methods/ann/layer/dropconnect_impl.hpp +20 -20
- mlpack/include/mlpack/methods/ann/layer/dropout.hpp +17 -19
- mlpack/include/mlpack/methods/ann/layer/dropout_impl.hpp +14 -21
- mlpack/include/mlpack/methods/ann/layer/elu.hpp +23 -25
- mlpack/include/mlpack/methods/ann/layer/elu_impl.hpp +20 -27
- mlpack/include/mlpack/methods/ann/layer/embedding.hpp +160 -0
- mlpack/include/mlpack/methods/ann/layer/embedding_impl.hpp +189 -0
- mlpack/include/mlpack/methods/ann/layer/flexible_relu.hpp +17 -19
- mlpack/include/mlpack/methods/ann/layer/flexible_relu_impl.hpp +20 -20
- mlpack/include/mlpack/methods/ann/layer/ftswish.hpp +17 -18
- mlpack/include/mlpack/methods/ann/layer/ftswish_impl.hpp +17 -35
- mlpack/include/mlpack/methods/ann/layer/grouped_convolution.hpp +27 -33
- mlpack/include/mlpack/methods/ann/layer/grouped_convolution_impl.hpp +170 -163
- mlpack/include/mlpack/methods/ann/layer/gru.hpp +195 -0
- mlpack/include/mlpack/methods/ann/layer/gru_impl.hpp +325 -0
- mlpack/include/mlpack/methods/ann/layer/hard_tanh.hpp +13 -15
- mlpack/include/mlpack/methods/ann/layer/hard_tanh_impl.hpp +12 -12
- mlpack/include/mlpack/methods/ann/layer/identity.hpp +19 -20
- mlpack/include/mlpack/methods/ann/layer/identity_impl.hpp +12 -12
- mlpack/include/mlpack/methods/ann/layer/layer.hpp +37 -33
- mlpack/include/mlpack/methods/ann/layer/layer_norm.hpp +11 -13
- mlpack/include/mlpack/methods/ann/layer/layer_norm_impl.hpp +16 -16
- mlpack/include/mlpack/methods/ann/layer/layer_types.hpp +4 -1
- mlpack/include/mlpack/methods/ann/layer/leaky_relu.hpp +20 -23
- mlpack/include/mlpack/methods/ann/layer/leaky_relu_impl.hpp +12 -13
- mlpack/include/mlpack/methods/ann/layer/linear.hpp +16 -18
- mlpack/include/mlpack/methods/ann/layer/linear3d.hpp +18 -18
- mlpack/include/mlpack/methods/ann/layer/linear3d_impl.hpp +18 -18
- mlpack/include/mlpack/methods/ann/layer/linear_impl.hpp +15 -15
- mlpack/include/mlpack/methods/ann/layer/linear_no_bias.hpp +15 -17
- mlpack/include/mlpack/methods/ann/layer/linear_no_bias_impl.hpp +20 -20
- mlpack/include/mlpack/methods/ann/layer/linear_recurrent.hpp +25 -14
- mlpack/include/mlpack/methods/ann/layer/linear_recurrent_impl.hpp +60 -31
- mlpack/include/mlpack/methods/ann/layer/log_softmax.hpp +17 -36
- mlpack/include/mlpack/methods/ann/layer/log_softmax_impl.hpp +58 -74
- mlpack/include/mlpack/methods/ann/layer/lstm.hpp +26 -29
- mlpack/include/mlpack/methods/ann/layer/lstm_impl.hpp +128 -124
- mlpack/include/mlpack/methods/ann/layer/max_pooling.hpp +19 -19
- mlpack/include/mlpack/methods/ann/layer/max_pooling_impl.hpp +14 -14
- mlpack/include/mlpack/methods/ann/layer/mean_pooling.hpp +24 -24
- mlpack/include/mlpack/methods/ann/layer/mean_pooling_impl.hpp +16 -16
- mlpack/include/mlpack/methods/ann/layer/multi_layer.hpp +36 -6
- mlpack/include/mlpack/methods/ann/layer/multi_layer_impl.hpp +6 -2
- mlpack/include/mlpack/methods/ann/layer/multihead_attention.hpp +26 -22
- mlpack/include/mlpack/methods/ann/layer/multihead_attention_impl.hpp +161 -64
- mlpack/include/mlpack/methods/ann/layer/nearest_interpolation.hpp +28 -25
- mlpack/include/mlpack/methods/ann/layer/nearest_interpolation_impl.hpp +36 -37
- mlpack/include/mlpack/methods/ann/layer/noisylinear.hpp +39 -42
- mlpack/include/mlpack/methods/ann/layer/noisylinear_impl.hpp +18 -18
- mlpack/include/mlpack/methods/ann/layer/padding.hpp +21 -17
- mlpack/include/mlpack/methods/ann/layer/padding_impl.hpp +33 -19
- mlpack/include/mlpack/methods/ann/layer/parametric_relu.hpp +26 -28
- mlpack/include/mlpack/methods/ann/layer/parametric_relu_impl.hpp +18 -18
- mlpack/include/mlpack/methods/ann/layer/radial_basis_function.hpp +41 -28
- mlpack/include/mlpack/methods/ann/layer/radial_basis_function_impl.hpp +42 -17
- mlpack/include/mlpack/methods/ann/layer/recurrent_layer.hpp +13 -0
- mlpack/include/mlpack/methods/ann/layer/relu6.hpp +19 -21
- mlpack/include/mlpack/methods/ann/layer/relu6_impl.hpp +14 -14
- mlpack/include/mlpack/methods/ann/layer/repeat.hpp +24 -25
- mlpack/include/mlpack/methods/ann/layer/repeat_impl.hpp +10 -10
- mlpack/include/mlpack/methods/ann/layer/serialization.hpp +64 -54
- mlpack/include/mlpack/methods/ann/layer/softmax.hpp +20 -20
- mlpack/include/mlpack/methods/ann/layer/softmax_impl.hpp +10 -10
- mlpack/include/mlpack/methods/ann/layer/softmin.hpp +20 -23
- mlpack/include/mlpack/methods/ann/layer/softmin_impl.hpp +10 -10
- mlpack/include/mlpack/methods/ann/layer/sum_reduce.hpp +103 -0
- mlpack/include/mlpack/methods/ann/layer/sum_reduce_impl.hpp +143 -0
- mlpack/include/mlpack/methods/ann/loss_functions/cosine_embedding_loss_impl.hpp +3 -3
- mlpack/include/mlpack/methods/ann/loss_functions/mean_bias_error_impl.hpp +1 -1
- mlpack/include/mlpack/methods/ann/loss_functions/multilabel_softmargin_loss_impl.hpp +1 -1
- mlpack/include/mlpack/methods/ann/loss_functions/negative_log_likelihood.hpp +2 -2
- mlpack/include/mlpack/methods/ann/loss_functions/negative_log_likelihood_impl.hpp +29 -15
- mlpack/include/mlpack/methods/ann/loss_functions/poisson_nll_loss_impl.hpp +1 -1
- mlpack/include/mlpack/methods/ann/models/models.hpp +17 -0
- mlpack/include/mlpack/methods/ann/models/yolov3/yolov3_layer.hpp +151 -0
- mlpack/include/mlpack/methods/ann/models/yolov3/yolov3_layer_impl.hpp +265 -0
- mlpack/include/mlpack/methods/ann/models/yolov3/yolov3_tiny.hpp +187 -0
- mlpack/include/mlpack/methods/ann/models/yolov3/yolov3_tiny_impl.hpp +206 -0
- mlpack/include/mlpack/methods/ann/regularizer/orthogonal_regularizer_impl.hpp +5 -3
- mlpack/include/mlpack/methods/ann/rnn.hpp +136 -42
- mlpack/include/mlpack/methods/ann/rnn_impl.hpp +230 -38
- mlpack/include/mlpack/methods/approx_kfn/drusilla_select_impl.hpp +1 -1
- mlpack/include/mlpack/methods/bayesian_linear_regression/bayesian_linear_regression_main.cpp +1 -1
- mlpack/include/mlpack/methods/bias_svd/bias_svd_function_impl.hpp +1 -1
- mlpack/include/mlpack/methods/cf/cf_model.hpp +1 -1
- mlpack/include/mlpack/methods/decision_tree/decision_tree.hpp +6 -6
- mlpack/include/mlpack/methods/decision_tree/decision_tree_impl.hpp +12 -12
- mlpack/include/mlpack/methods/decision_tree/decision_tree_main.cpp +0 -1
- mlpack/include/mlpack/methods/decision_tree/decision_tree_regressor.hpp +6 -6
- mlpack/include/mlpack/methods/decision_tree/decision_tree_regressor_impl.hpp +12 -12
- mlpack/include/mlpack/methods/det/det_main.cpp +1 -1
- mlpack/include/mlpack/methods/hmm/hmm_train_main.cpp +4 -4
- mlpack/include/mlpack/methods/hmm/hmm_util_impl.hpp +2 -2
- mlpack/include/mlpack/methods/hoeffding_trees/hoeffding_tree.hpp +6 -6
- mlpack/include/mlpack/methods/hoeffding_trees/hoeffding_tree_impl.hpp +31 -31
- mlpack/include/mlpack/methods/hoeffding_trees/hoeffding_tree_main.cpp +1 -2
- mlpack/include/mlpack/methods/hoeffding_trees/hoeffding_tree_model.hpp +2 -2
- mlpack/include/mlpack/methods/hoeffding_trees/hoeffding_tree_model_impl.hpp +1 -1
- mlpack/include/mlpack/methods/kde/kde_rules_impl.hpp +6 -6
- mlpack/include/mlpack/methods/lars/lars_impl.hpp +3 -3
- mlpack/include/mlpack/methods/linear_svm/linear_svm_function_impl.hpp +4 -4
- mlpack/include/mlpack/methods/linear_svm/linear_svm_main.cpp +3 -3
- mlpack/include/mlpack/methods/lmnn/lmnn_main.cpp +1 -1
- mlpack/include/mlpack/methods/lsh/lsh_main.cpp +1 -1
- mlpack/include/mlpack/methods/matrix_completion/matrix_completion_impl.hpp +1 -1
- mlpack/include/mlpack/methods/naive_bayes/naive_bayes_classifier_impl.hpp +1 -1
- mlpack/include/mlpack/methods/naive_bayes/nbc_main.cpp +3 -3
- mlpack/include/mlpack/methods/nca/nca_main.cpp +1 -1
- mlpack/include/mlpack/methods/neighbor_search/kfn_main.cpp +8 -8
- mlpack/include/mlpack/methods/neighbor_search/knn_main.cpp +8 -8
- mlpack/include/mlpack/methods/neighbor_search/neighbor_search.hpp +154 -34
- mlpack/include/mlpack/methods/neighbor_search/neighbor_search_impl.hpp +190 -51
- mlpack/include/mlpack/methods/neighbor_search/neighbor_search_stat.hpp +10 -0
- mlpack/include/mlpack/methods/neighbor_search/ns_model.hpp +15 -15
- mlpack/include/mlpack/methods/neighbor_search/ns_model_impl.hpp +55 -46
- mlpack/include/mlpack/methods/neighbor_search/typedef.hpp +42 -2
- mlpack/include/mlpack/methods/pca/pca_impl.hpp +2 -2
- mlpack/include/mlpack/methods/perceptron/perceptron.hpp +2 -2
- mlpack/include/mlpack/methods/perceptron/perceptron_impl.hpp +1 -1
- mlpack/include/mlpack/methods/perceptron/perceptron_main.cpp +2 -2
- mlpack/include/mlpack/methods/preprocess/image_converter_main.cpp +2 -3
- mlpack/include/mlpack/methods/preprocess/preprocess_binarize_main.cpp +2 -2
- mlpack/include/mlpack/methods/preprocess/preprocess_describe_main.cpp +0 -1
- mlpack/include/mlpack/methods/preprocess/preprocess_imputer_main.cpp +50 -129
- mlpack/include/mlpack/methods/preprocess/preprocess_one_hot_encoding_main.cpp +6 -6
- mlpack/include/mlpack/methods/preprocess/preprocess_scale_main.cpp +2 -3
- mlpack/include/mlpack/methods/preprocess/preprocess_split_main.cpp +3 -4
- mlpack/include/mlpack/methods/preprocess/scaling_model.hpp +6 -8
- mlpack/include/mlpack/methods/preprocess/scaling_model_impl.hpp +18 -20
- mlpack/include/mlpack/methods/random_forest/random_forest.hpp +5 -5
- mlpack/include/mlpack/methods/random_forest/random_forest_impl.hpp +9 -9
- mlpack/include/mlpack/methods/range_search/range_search_main.cpp +1 -1
- mlpack/include/mlpack/methods/rann/krann_main.cpp +1 -1
- mlpack/include/mlpack/methods/regularized_svd/regularized_svd_function_impl.hpp +1 -1
- mlpack/include/mlpack/methods/reinforcement_learning/async_learning_impl.hpp +8 -8
- mlpack/include/mlpack/methods/reinforcement_learning/ddpg_impl.hpp +16 -16
- mlpack/include/mlpack/methods/reinforcement_learning/environment/acrobot.hpp +4 -4
- mlpack/include/mlpack/methods/reinforcement_learning/environment/cart_pole.hpp +3 -3
- mlpack/include/mlpack/methods/reinforcement_learning/environment/cont_double_pole_cart.hpp +6 -5
- mlpack/include/mlpack/methods/reinforcement_learning/environment/pendulum.hpp +6 -5
- mlpack/include/mlpack/methods/reinforcement_learning/policy/aggregated_policy.hpp +2 -2
- mlpack/include/mlpack/methods/reinforcement_learning/q_learning_impl.hpp +10 -10
- mlpack/include/mlpack/methods/reinforcement_learning/q_networks/categorical_dqn.hpp +21 -17
- mlpack/include/mlpack/methods/reinforcement_learning/q_networks/dueling_dqn.hpp +69 -77
- mlpack/include/mlpack/methods/reinforcement_learning/q_networks/simple_dqn.hpp +9 -9
- mlpack/include/mlpack/methods/reinforcement_learning/sac_impl.hpp +14 -14
- mlpack/include/mlpack/methods/reinforcement_learning/td3_impl.hpp +14 -14
- mlpack/include/mlpack/methods/softmax_regression/softmax_regression_function_impl.hpp +1 -1
- mlpack/include/mlpack/methods/svdplusplus/svdplusplus_function_impl.hpp +1 -1
- mlpack/include/mlpack/namespace_compat.hpp +1 -0
- mlpack/include/mlpack/prereqs.hpp +1 -0
- mlpack/kde.cp38-win_amd64.pyd +0 -0
- mlpack/kernel_pca.cp38-win_amd64.pyd +0 -0
- mlpack/kfn.cp38-win_amd64.pyd +0 -0
- mlpack/kmeans.cp38-win_amd64.pyd +0 -0
- mlpack/knn.cp38-win_amd64.pyd +0 -0
- mlpack/krann.cp38-win_amd64.pyd +0 -0
- mlpack/lars.cp38-win_amd64.pyd +0 -0
- mlpack/linear_regression_predict.cp38-win_amd64.pyd +0 -0
- mlpack/linear_regression_train.cp38-win_amd64.pyd +0 -0
- mlpack/linear_svm.cp38-win_amd64.pyd +0 -0
- mlpack/lmnn.cp38-win_amd64.pyd +0 -0
- mlpack/local_coordinate_coding.cp38-win_amd64.pyd +0 -0
- mlpack/logistic_regression.cp38-win_amd64.pyd +0 -0
- mlpack/lsh.cp38-win_amd64.pyd +0 -0
- mlpack/mean_shift.cp38-win_amd64.pyd +0 -0
- mlpack/nbc.cp38-win_amd64.pyd +0 -0
- mlpack/nca.cp38-win_amd64.pyd +0 -0
- mlpack/nmf.cp38-win_amd64.pyd +0 -0
- mlpack/pca.cp38-win_amd64.pyd +0 -0
- mlpack/perceptron.cp38-win_amd64.pyd +0 -0
- mlpack/preprocess_binarize.cp38-win_amd64.pyd +0 -0
- mlpack/preprocess_describe.cp38-win_amd64.pyd +0 -0
- mlpack/preprocess_one_hot_encoding.cp38-win_amd64.pyd +0 -0
- mlpack/preprocess_scale.cp38-win_amd64.pyd +0 -0
- mlpack/preprocess_split.cp38-win_amd64.pyd +0 -0
- mlpack/radical.cp38-win_amd64.pyd +0 -0
- mlpack/random_forest.cp38-win_amd64.pyd +0 -0
- mlpack/softmax_regression.cp38-win_amd64.pyd +0 -0
- mlpack/sparse_coding.cp38-win_amd64.pyd +0 -0
- mlpack-4.7.0.dist-info/DELVEWHEEL +2 -0
- {mlpack-4.6.2.dist-info → mlpack-4.7.0.dist-info}/METADATA +5 -5
- {mlpack-4.6.2.dist-info → mlpack-4.7.0.dist-info}/RECORD +395 -376
- {mlpack-4.6.2.dist-info → mlpack-4.7.0.dist-info}/WHEEL +1 -1
- mlpack/include/mlpack/core/data/format.hpp +0 -31
- mlpack/include/mlpack/core/data/image_info.hpp +0 -102
- mlpack/include/mlpack/core/data/image_info_impl.hpp +0 -84
- mlpack/include/mlpack/core/data/load_image_impl.hpp +0 -171
- mlpack/include/mlpack/core/data/load_model_impl.hpp +0 -115
- mlpack/include/mlpack/core/data/load_vec_impl.hpp +0 -154
- mlpack/include/mlpack/core/data/map_policies/missing_policy.hpp +0 -148
- mlpack/include/mlpack/core/data/save_image_impl.hpp +0 -170
- mlpack/include/mlpack/core/data/types.hpp +0 -61
- mlpack/include/mlpack/core/data/types_impl.hpp +0 -83
- mlpack/include/mlpack/core/data/utilities.hpp +0 -158
- mlpack/include/mlpack/core/util/gitversion.hpp +0 -1
- mlpack/include/mlpack/methods/ann/convolution_rules/fft_convolution.hpp +0 -213
- mlpack/include/mlpack/methods/ann/convolution_rules/svd_convolution.hpp +0 -201
- mlpack/include/mlpack/methods/ann/layer/not_adapted/gru.hpp +0 -226
- mlpack/include/mlpack/methods/ann/layer/not_adapted/gru_impl.hpp +0 -367
- mlpack/include/mlpack/methods/ann/layer/not_adapted/lookup.hpp +0 -139
- mlpack/include/mlpack/methods/ann/layer/not_adapted/lookup_impl.hpp +0 -98
- mlpack-4.6.2.dist-info/DELVEWHEEL +0 -2
- {mlpack-4.6.2.dist-info → mlpack-4.7.0.dist-info}/top_level.txt +0 -0
- /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
|