diff --git a/Manifest.toml b/Manifest.toml index b66619b95..28d1d8d8a 100644 --- a/Manifest.toml +++ b/Manifest.toml @@ -1,10 +1,10 @@ # This file is machine-generated - editing it directly is not advised [[ATK_jll]] -deps = ["Glib_jll", "Libdl", "Pkg"] -git-tree-sha1 = "4105e33871c2bc7faae456679855c2d89adfdc68" +deps = ["Artifacts", "Glib_jll", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "d2cb610e0f31d9d20f4ca37e4535ea5e6f374889" uuid = "7b86fcea-f67b-53e1-809c-8f1719c154e8" -version = "2.34.1+4" +version = "2.34.1+5" [[AbstractFFTs]] deps = ["LinearAlgebra"] @@ -34,10 +34,10 @@ version = "0.4.3" uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" [[Bzip2_jll]] -deps = ["Libdl", "Pkg"] -git-tree-sha1 = "03a44490020826950c68005cafb336e5ba08b7e8" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "c3598e525718abcc440f69cc6d5f60dda0a1b61e" uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" -version = "1.0.6+4" +version = "1.0.6+5" [[CEnum]] git-tree-sha1 = "215a9aa4a1f23fbd05b92769fdd62559488d70e9" @@ -51,10 +51,10 @@ uuid = "159f3aea-2a34-519c-b102-8c37f9878175" version = "1.0.5" [[Cairo_jll]] -deps = ["Bzip2_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "LZO_jll", "Libdl", "Pixman_jll", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] -git-tree-sha1 = "c6c9c288df5ad1e6534c9dacd9972482c1eb838c" +deps = ["Artifacts", "Bzip2_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] +git-tree-sha1 = "e2f47f6d8337369411569fd45ae5753ca10394c6" uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" -version = "1.16.0+5" +version = "1.16.0+6" [[CatIndices]] deps = ["CustomUnitRanges", "OffsetArrays"] @@ -118,10 +118,10 @@ deps = ["Printf"] uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" [[Dbus_jll]] -deps = ["Expat_jll", "Libdl", "Pkg"] -git-tree-sha1 = "533c1f040f7c111d64a8b83c1ef562376ffd889a" +deps = ["Artifacts", "Expat_jll", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "97f1325c10bd02b1cc1882e9c2bf6407ba630ace" uuid = "ee1fde0b-3d02-5ea6-8484-8dfef6360eab" -version = "1.12.16+2" +version = "1.12.16+3" [[Distances]] deps = ["LinearAlgebra", "Statistics"] @@ -139,10 +139,10 @@ uuid = "da5c29d0-fa7d-589e-88eb-ea29b0a81949" version = "0.4.0" [[Expat_jll]] -deps = ["Libdl", "Pkg"] -git-tree-sha1 = "0a4e4402a91b0761c1de961f94204da5e306a4f3" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "1402e52fcda25064f51c77a9655ce8680b76acf0" uuid = "2e619515-83b5-522b-bb60-26c02a35a201" -version = "2.2.7+5" +version = "2.2.7+6" [[FFTViews]] deps = ["CustomUnitRanges", "FFTW"] @@ -157,10 +157,10 @@ uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" version = "1.2.4" [[FFTW_jll]] -deps = ["Libdl", "Pkg"] -git-tree-sha1 = "6c975cd606128d45d1df432fb812d6eb10fee00b" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "f10c3009373a2d5c4349b8a2932d8accb892892d" uuid = "f5851436-0d7a-5f13-b9de-f02708fd171a" -version = "3.3.9+5" +version = "3.3.9+6" [[FileIO]] deps = ["Pkg"] @@ -175,40 +175,40 @@ uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" version = "0.8.4" [[Fontconfig_jll]] -deps = ["Bzip2_jll", "Expat_jll", "FreeType2_jll", "Libdl", "Libuuid_jll", "Pkg", "Zlib_jll"] -git-tree-sha1 = "d130ffccfecaa5f53c9338a76dd165b6c3a4dd5b" +deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Pkg", "Zlib_jll"] +git-tree-sha1 = "35895cf184ceaab11fd778b4590144034a167a2f" uuid = "a3f928ae-7b40-5064-980b-68af3947d34b" -version = "2.13.1+13" +version = "2.13.1+14" [[FreeType2_jll]] -deps = ["Bzip2_jll", "Libdl", "Pkg", "Zlib_jll"] -git-tree-sha1 = "720eee04e3b496c15e5e2269669c2532fb5005c0" +deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] +git-tree-sha1 = "cbd58c9deb1d304f5a245a0b7eb841a2560cfec6" uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" -version = "2.10.1+4" +version = "2.10.1+5" [[FriBidi_jll]] -deps = ["Libdl", "Pkg"] -git-tree-sha1 = "cfc3485a0a968263c789e314fca5d66daf75ed6c" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "0d20aed5b14dd4c9a2453c1b601d08e1149679cc" uuid = "559328eb-81f9-559d-9380-de523a88c83c" -version = "1.0.5+5" +version = "1.0.5+6" [[GTK3_jll]] -deps = ["ATK_jll", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "FriBidi_jll", "Glib_jll", "Graphene_jll", "HarfBuzz_jll", "Libdl", "Libepoxy_jll", "Pango_jll", "Pkg", "Wayland_jll", "Xorg_libX11_jll", "Xorg_libXcomposite_jll", "Xorg_libXcursor_jll", "Xorg_libXdamage_jll", "Xorg_libXext_jll", "Xorg_libXfixes_jll", "Xorg_libXi_jll", "Xorg_libXinerama_jll", "Xorg_libXrandr_jll", "Xorg_libXrender_jll", "adwaita_icon_theme_jll", "at_spi2_atk_jll", "gdk_pixbuf_jll", "iso_codes_jll", "xkbcommon_jll"] -git-tree-sha1 = "e44fbdf9ea5f2062b860f27a38841f24c7715aee" +deps = ["ATK_jll", "Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "FriBidi_jll", "Glib_jll", "Graphene_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Libepoxy_jll", "Pango_jll", "Pkg", "Wayland_jll", "Xorg_libX11_jll", "Xorg_libXcomposite_jll", "Xorg_libXcursor_jll", "Xorg_libXdamage_jll", "Xorg_libXext_jll", "Xorg_libXfixes_jll", "Xorg_libXi_jll", "Xorg_libXinerama_jll", "Xorg_libXrandr_jll", "Xorg_libXrender_jll", "adwaita_icon_theme_jll", "at_spi2_atk_jll", "gdk_pixbuf_jll", "iso_codes_jll", "xkbcommon_jll"] +git-tree-sha1 = "98fafcb3e4bedbc9c463708b64b4e647a846c915" uuid = "77ec8976-b24b-556a-a1bf-49a033a670a6" -version = "3.24.11+3" +version = "3.24.11+4" [[Gettext_jll]] -deps = ["Libdl", "Libiconv_jll", "Pkg", "XML2_jll"] -git-tree-sha1 = "922315c1eb4e5072b9994fc47072d0351906fe4c" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"] +git-tree-sha1 = "8c14294a079216000a0bdca5ec5a447f073ddc9d" uuid = "78b55507-aeef-58d4-861c-77aaff3498b1" -version = "0.20.1+6" +version = "0.20.1+7" [[Glib_jll]] -deps = ["Gettext_jll", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE_jll", "Pkg", "Zlib_jll"] -git-tree-sha1 = "10f579c2365338cc1773d60faeb6c9f88ea8a7b3" +deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE_jll", "Pkg", "Zlib_jll"] +git-tree-sha1 = "04690cc5008b38ecbdfede949220bc7d9ba26397" uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" -version = "2.59.0+3" +version = "2.59.0+4" [[Graphene_jll]] deps = ["Glib_jll", "Libdl", "Pkg"] @@ -223,10 +223,10 @@ uuid = "a2bd30eb-e257-5431-a919-1863eab51364" version = "1.0.2" [[Graphite2_jll]] -deps = ["Libdl", "Pkg"] -git-tree-sha1 = "7e4edd2a8848722b0588a154a08fb1990c62d751" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "42adbc6fd39ba41138f894b8ac711146a2b0d986" uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" -version = "1.3.13+3" +version = "1.3.13+4" [[Gtk]] deps = ["Cairo", "Cairo_jll", "Dates", "GTK3_jll", "Glib_jll", "Graphics", "Libdl", "Pkg", "Reexport", "Serialization", "Test", "Xorg_xkeyboard_config_jll", "adwaita_icon_theme_jll", "gdk_pixbuf_jll", "hicolor_icon_theme_jll"] @@ -241,16 +241,16 @@ uuid = "27996c0f-39cd-5cc1-a27a-05f136f946b6" version = "1.0.4" [[HarfBuzz_jll]] -deps = ["Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Gettext_jll", "Glib_jll", "Graphite2_jll", "ICU_jll", "Libdl", "Libffi_jll", "Pkg"] -git-tree-sha1 = "30237d3202f1d4ad9eda0a53b4272078effc50cd" +deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Gettext_jll", "Glib_jll", "Graphite2_jll", "ICU_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg"] +git-tree-sha1 = "90bed5fc61d12d10832ebf988988104888eebaca" uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566" -version = "2.6.1+9" +version = "2.6.1+10" [[ICU_jll]] -deps = ["Libdl", "Pkg"] -git-tree-sha1 = "b8de23644ee96884110e8071deed3ff0d2de4d9d" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "0ec2e6e6a049eb8520c19cd8976085afcf2943fb" uuid = "a51ab1cf-af8e-5615-a023-bc2c838bba6b" -version = "67.1.0+1" +version = "67.1.0+2" [[IdentityRanges]] deps = ["OffsetArrays"] @@ -392,16 +392,16 @@ uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" version = "1.1.0" [[JpegTurbo_jll]] -deps = ["Libdl", "Pkg"] -git-tree-sha1 = "76e28bf35d0c179531b11e254f66bbcc1fd268ca" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "9aff0587d9603ea0de2c6f6300d9f9492bbefbd3" uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" -version = "2.0.1+2" +version = "2.0.1+3" [[LZO_jll]] -deps = ["Libdl", "Pkg"] -git-tree-sha1 = "9d0c44be3e6d9690b19fa2cddb4c2e4b267ef425" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "f128cd6cd05ffd6d3df0523ed99b90ff6f9b349a" uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac" -version = "2.10.0+2" +version = "2.10.0+3" [[LibGit2]] deps = ["Printf"] @@ -411,58 +411,58 @@ uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" [[Libepoxy_jll]] -deps = ["Libdl", "Libglvnd_jll", "Pkg", "Xorg_libX11_jll"] -git-tree-sha1 = "2edab6849416951df6866b939c149b07bb001f37" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libglvnd_jll", "Pkg", "Xorg_libX11_jll"] +git-tree-sha1 = "aeac8ae441bc55be433ab53b729ffac274997320" uuid = "42c93a91-0102-5b3f-8f9d-e41de60ac950" -version = "1.5.4+0" +version = "1.5.4+1" [[Libffi_jll]] -deps = ["Libdl", "Pkg"] -git-tree-sha1 = "a30d50f837074b6ab43b81d9dd8be190b40cdd45" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "a2cd088a88c0d37eef7d209fd3d8712febce0d90" uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" -version = "3.2.1+3" +version = "3.2.1+4" [[Libgcrypt_jll]] -deps = ["Libdl", "Libgpg_error_jll", "Pkg"] -git-tree-sha1 = "6b68e8b88e5eee917427a09d7bf15bd838576ba3" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll", "Pkg"] +git-tree-sha1 = "b391a18ab1170a2e568f9fb8d83bc7c780cb9999" uuid = "d4300ac3-e22c-5743-9152-c294e39db1e4" -version = "1.8.5+3" +version = "1.8.5+4" [[Libglvnd_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll", "Xorg_libXext_jll"] -git-tree-sha1 = "5b1a5ff82d8a17e119369a004f60b2ac81a79b64" +git-tree-sha1 = "7739f837d6447403596a75d19ed01fd08d6f56bf" uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29" -version = "1.3.0+2" +version = "1.3.0+3" [[Libgpg_error_jll]] -deps = ["Libdl", "Pkg"] -git-tree-sha1 = "83b5c9df3a53a570c8fc2a0d7643a2e30a6a141c" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "ec7f2e8ad5c9fa99fc773376cdbc86d9a5a23cb7" uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8" -version = "1.36.0+2" +version = "1.36.0+3" [[Libiconv_jll]] -deps = ["Libdl", "Pkg"] -git-tree-sha1 = "7c36dfe7971e55da03d8f54b67d4b3fb8ee01d63" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "8e924324b2e9275a51407a4e06deb3455b1e359f" uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" -version = "1.16.0+6" +version = "1.16.0+7" [[Libmount_jll]] -deps = ["Libdl", "Pkg"] -git-tree-sha1 = "ac69889ea9ee389e8bacab1bedc605c25d1ca960" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "51ad0c01c94c1ce48d5cad629425035ad030bfd5" uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" -version = "2.34.0+2" +version = "2.34.0+3" [[Libtiff_jll]] -deps = ["JpegTurbo_jll", "Libdl", "Pkg", "Zlib_jll", "Zstd_jll"] -git-tree-sha1 = "84ad722d8b9c6d3b3ca3a067d1da12b641352584" +deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Pkg", "Zlib_jll", "Zstd_jll"] +git-tree-sha1 = "291dd857901f94d683973cdf679984cdf73b56d0" uuid = "89763e89-9b03-5906-acba-b20f662cd828" -version = "4.1.0+1" +version = "4.1.0+2" [[Libuuid_jll]] -deps = ["Libdl", "Pkg"] -git-tree-sha1 = "90bf54060f5223bf7ac450bb9c56d1334d31d04e" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "f879ae9edbaa2c74c922e8b85bb83cc84ea1450b" uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" -version = "2.34.0+6" +version = "2.34.0+7" [[LinearAlgebra]] deps = ["Libdl"] @@ -524,10 +524,10 @@ uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" version = "1.1.3" [[OpenSpecFun_jll]] -deps = ["CompilerSupportLibraries_jll", "Libdl", "Pkg"] -git-tree-sha1 = "d51c416559217d974a1113522d5919235ae67a87" +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "9db77584158d0ab52307f8c04f8e7c08ca76b5b3" uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" -version = "0.5.3+3" +version = "0.5.3+4" [[OrderedCollections]] git-tree-sha1 = "293b70ac1780f9584c89268a6e2a560d938a7065" @@ -535,10 +535,10 @@ uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" version = "1.3.0" [[PCRE_jll]] -deps = ["Libdl", "Pkg"] -git-tree-sha1 = "9f6be70c2b80ca004d18a4a38f5724264b4115c0" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "1b556ad51dceefdbf30e86ffa8f528b73c7df2bb" uuid = "2f80f16e-611a-54ab-bc61-aa92de5b98fc" -version = "8.42.0+3" +version = "8.42.0+4" [[PNGFiles]] deps = ["CEnum", "ImageCore", "IndirectArrays", "OffsetArrays", "libpng_jll"] @@ -553,10 +553,10 @@ uuid = "5432bcbf-9aad-5242-b902-cca2824c8663" version = "0.5.5" [[Pango_jll]] -deps = ["Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "FriBidi_jll", "Glib_jll", "HarfBuzz_jll", "Libdl", "Pkg"] -git-tree-sha1 = "37918672870fbd48c3da80a19b125782759bede7" +deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "FriBidi_jll", "Glib_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "9a336dee51d20d1ed890c4a8dca636e86e2b76ca" uuid = "36c8627f-9965-5494-a995-c6b170f724f3" -version = "1.42.4+9" +version = "1.42.4+10" [[Parameters]] deps = ["OrderedCollections", "UnPack"] @@ -565,10 +565,10 @@ uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a" version = "0.12.1" [[Pixman_jll]] -deps = ["Libdl", "Pkg"] -git-tree-sha1 = "f3515e3d8f4b0fd4df9465d9a79cb478dcd84242" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "392d85fe2fd2c613442f9694dd566c0d5641d58c" uuid = "30392449-352a-5448-841d-b1acce4e97dc" -version = "0.38.4+4" +version = "0.38.4+5" [[Pkg]] deps = ["Dates", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "UUIDs"] @@ -712,16 +712,16 @@ version = "1.0.2" uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" [[Wayland_jll]] -deps = ["Expat_jll", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"] -git-tree-sha1 = "29413c4301a8facf4b0f6a4552977eb71c75ccca" +deps = ["Artifacts", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"] +git-tree-sha1 = "dc643a9b774da1c2781413fd7b6dcd2c56bb8056" uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89" -version = "1.17.0+3" +version = "1.17.0+4" [[Wayland_protocols_jll]] -deps = ["Libdl", "Pkg", "Wayland_jll"] -git-tree-sha1 = "6bd1d95935f5ae53e86cb8c101f8e820492a7130" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Wayland_jll"] +git-tree-sha1 = "2839f1c1296940218e35df0bbb220f2a79686670" uuid = "2381bf8a-dfd0-557d-9999-79630e7b1b91" -version = "1.18.0+3" +version = "1.18.0+4" [[WoodburyMatrices]] deps = ["LinearAlgebra", "SparseArrays"] @@ -730,10 +730,10 @@ uuid = "efce3f68-66dc-5838-9240-27a6d6f5f9b6" version = "0.5.2" [[XML2_jll]] -deps = ["Libdl", "Libiconv_jll", "Pkg", "Zlib_jll"] -git-tree-sha1 = "ecff6bff03b35d482ad5eb51276d6fc4c823cd39" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "Zlib_jll"] +git-tree-sha1 = "be0db24f70aae7e2b89f2f3092e93b8606d659a6" uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.9.10+2" +version = "2.9.10+3" [[XSLT_jll]] deps = ["Libdl", "Libgcrypt_jll", "Pkg", "XML2_jll"] @@ -742,166 +742,166 @@ uuid = "aed1982a-8fda-507f-9586-7b0439959a61" version = "1.1.33+3" [[Xorg_libX11_jll]] -deps = ["Libdl", "Pkg", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] -git-tree-sha1 = "25ef1a3d04558407fc618797c1340d3703bacb94" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] +git-tree-sha1 = "5be649d550f3f4b95308bf0183b82e2582876527" uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" -version = "1.6.9+3" +version = "1.6.9+4" [[Xorg_libXau_jll]] -deps = ["Libdl", "Pkg"] -git-tree-sha1 = "9284aed438cb747514ee02170f25c2f9cea91c00" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "4e490d5c960c314f33885790ed410ff3a94ce67e" uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" -version = "1.0.9+3" +version = "1.0.9+4" [[Xorg_libXcomposite_jll]] -deps = ["Libdl", "Pkg", "Xorg_libXfixes_jll"] -git-tree-sha1 = "84c1610b303d155afdb3df44bf5a54c11662503d" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXfixes_jll"] +git-tree-sha1 = "7c688ca9c957837539bbe1c53629bb871025e423" uuid = "3c9796d7-64a0-5134-86ad-79f8eb684845" -version = "0.4.5+3" +version = "0.4.5+4" [[Xorg_libXcursor_jll]] -deps = ["Libdl", "Pkg", "Xorg_libXfixes_jll", "Xorg_libXrender_jll"] -git-tree-sha1 = "f9e26bb7fe6e1cd7b5fb0ffa959fa3b263723f94" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXfixes_jll", "Xorg_libXrender_jll"] +git-tree-sha1 = "12e0eb3bc634fa2080c1c37fccf56f7c22989afd" uuid = "935fb764-8cf2-53bf-bb30-45bb1f8bf724" -version = "1.2.0+3" +version = "1.2.0+4" [[Xorg_libXdamage_jll]] -deps = ["Libdl", "Pkg", "Xorg_libXfixes_jll"] -git-tree-sha1 = "724acf8dc8fd2f26a91b3e5e572a5259029b973a" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXfixes_jll"] +git-tree-sha1 = "fe4ffb2024ba3eddc862c6e1d70e2b070cd1c2bf" uuid = "0aeada51-83db-5f97-b67e-184615cfc6f6" -version = "1.1.5+3" +version = "1.1.5+4" [[Xorg_libXdmcp_jll]] -deps = ["Libdl", "Pkg"] -git-tree-sha1 = "95a233c8cf22e098be956a2fbed9db4ec02eadd0" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "4fe47bd2247248125c428978740e18a681372dd4" uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" -version = "1.1.3+3" +version = "1.1.3+4" [[Xorg_libXext_jll]] -deps = ["Libdl", "Pkg", "Xorg_libX11_jll"] -git-tree-sha1 = "d160f39dbee0faba7b65d62e8b3af4e508ec36b2" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] +git-tree-sha1 = "b7c0aa8c376b31e4852b360222848637f481f8c3" uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" -version = "1.3.4+3" +version = "1.3.4+4" [[Xorg_libXfixes_jll]] -deps = ["Libdl", "Pkg", "Xorg_libX11_jll"] -git-tree-sha1 = "c090cd1180e6b1d67541f161bf1eb7a5530d7ba0" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] +git-tree-sha1 = "0e0dc7431e7a0587559f9294aeec269471c991a4" uuid = "d091e8ba-531a-589c-9de9-94069b037ed8" -version = "5.0.3+3" +version = "5.0.3+4" [[Xorg_libXi_jll]] -deps = ["Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXfixes_jll"] -git-tree-sha1 = "33d931c90ea05cd9fdbbb40803070b404cc3d413" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXfixes_jll"] +git-tree-sha1 = "89b52bc2160aadc84d707093930ef0bffa641246" uuid = "a51aa0fd-4e3c-5386-b890-e753decda492" -version = "1.7.10+3" +version = "1.7.10+4" [[Xorg_libXinerama_jll]] -deps = ["Libdl", "Pkg", "Xorg_libXext_jll"] -git-tree-sha1 = "df96a770b7e70ff0231ae0c28ef2bbdd24b6fbf3" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll"] +git-tree-sha1 = "26be8b1c342929259317d8b9f7b53bf2bb73b123" uuid = "d1454406-59df-5ea1-beac-c340f2130bc3" -version = "1.1.4+3" +version = "1.1.4+4" [[Xorg_libXrandr_jll]] -deps = ["Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll"] -git-tree-sha1 = "efac36579bc9241e831b43040df5d7cf723c4b97" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll"] +git-tree-sha1 = "34cea83cb726fb58f325887bf0612c6b3fb17631" uuid = "ec84b674-ba8e-5d96-8ba1-2a689ba10484" -version = "1.5.2+3" +version = "1.5.2+4" [[Xorg_libXrender_jll]] -deps = ["Libdl", "Pkg", "Xorg_libX11_jll"] -git-tree-sha1 = "97a4104340d745968c78009854ab9369b59d7333" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] +git-tree-sha1 = "19560f30fd49f4d4efbe7002a1037f8c43d43b96" uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" -version = "0.9.10+3" +version = "0.9.10+4" [[Xorg_libXtst_jll]] -deps = ["Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXfixes_jll", "Xorg_libXi_jll"] -git-tree-sha1 = "fd7a0d176ec47b1468418c1a6aeb919bb1bb913e" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXfixes_jll", "Xorg_libXi_jll"] +git-tree-sha1 = "0c0a60851f44add2a64069ddf213e941c30ed93c" uuid = "b6f176f1-7aea-5357-ad67-1d3e565ea1c6" -version = "1.2.3+3" +version = "1.2.3+4" [[Xorg_libpthread_stubs_jll]] -deps = ["Libdl", "Pkg"] -git-tree-sha1 = "20e2b3ee7eacf9f4f64e5804879b8b12eee436db" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "6783737e45d3c59a4a4c4091f5f88cdcf0908cbb" uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" -version = "0.1.0+2" +version = "0.1.0+3" [[Xorg_libxcb_jll]] -deps = ["Libdl", "Pkg", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] -git-tree-sha1 = "c1efb50fb6a8c40c45451611fbf93feabe5f9611" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] +git-tree-sha1 = "daf17f441228e7a3833846cd048892861cff16d6" uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" -version = "1.13.0+2" +version = "1.13.0+3" [[Xorg_libxkbfile_jll]] -deps = ["Libdl", "Pkg", "Xorg_libX11_jll"] -git-tree-sha1 = "7e8d24718d295f5964e0e382718f668c4e74b2fd" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] +git-tree-sha1 = "926af861744212db0eb001d9e40b5d16292080b2" uuid = "cc61e674-0454-545c-8b26-ed2c68acab7a" -version = "1.1.0+3" +version = "1.1.0+4" [[Xorg_xkbcomp_jll]] -deps = ["Libdl", "Pkg", "Xorg_libxkbfile_jll"] -git-tree-sha1 = "89085968a14091835b5c7c4c939e13e61fbf164e" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxkbfile_jll"] +git-tree-sha1 = "4bcbf660f6c2e714f87e960a171b119d06ee163b" uuid = "35661453-b289-5fab-8a00-3d9160c6a3a4" -version = "1.4.2+3" +version = "1.4.2+4" [[Xorg_xkeyboard_config_jll]] -deps = ["Libdl", "Pkg", "Xorg_xkbcomp_jll"] -git-tree-sha1 = "75e6b06a2cca0cb94a6079827dbc653c28e3a301" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xkbcomp_jll"] +git-tree-sha1 = "5c8424f8a67c3f2209646d4425f3d415fee5931d" uuid = "33bec58e-1273-512f-9401-5d533626f822" -version = "2.27.0+3" +version = "2.27.0+4" [[Xorg_xtrans_jll]] -deps = ["Libdl", "Pkg"] -git-tree-sha1 = "52df68f05a75b81221a1d1420ce4a9c375b29ecc" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "79c31e7844f6ecf779705fbc12146eb190b7d845" uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" -version = "1.4.0+2" +version = "1.4.0+3" [[Zlib_jll]] -deps = ["Libdl", "Pkg"] -git-tree-sha1 = "fdd89e5ab270ea0f2a0174bd9093e557d06d4bfa" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "320228915c8debb12cb434c59057290f0834dbf6" uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.11+16" +version = "1.2.11+18" [[Zstd_jll]] -deps = ["Libdl", "Pkg"] -git-tree-sha1 = "4de91f4313d9e88162d461e282fe3066ab3a3c09" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "6f1abcb0c44f184690912aa4b0ba861dd64f11b9" uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" -version = "1.4.5+1" +version = "1.4.5+2" [[adwaita_icon_theme_jll]] -deps = ["Libdl", "Pkg", "hicolor_icon_theme_jll"] -git-tree-sha1 = "b641e8f51f6fd59f15a9b7beb9b1cf4c2c0b31ba" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "hicolor_icon_theme_jll"] +git-tree-sha1 = "37c9a36ccb876e02876c8a654f1b2e8c1b443a78" uuid = "b437f822-2cd6-5e08-a15c-8bac984d38ee" -version = "3.33.92+4" +version = "3.33.92+5" [[at_spi2_atk_jll]] -deps = ["ATK_jll", "Libdl", "Pkg", "XML2_jll", "Xorg_libX11_jll", "at_spi2_core_jll"] -git-tree-sha1 = "c6d6e687fc00134acbeae3ba51203be895196a39" +deps = ["ATK_jll", "Artifacts", "JLLWrappers", "Libdl", "Pkg", "XML2_jll", "Xorg_libX11_jll", "at_spi2_core_jll"] +git-tree-sha1 = "f16ae690aca4761f33d2cb338ee9899e541f5eae" uuid = "de012916-1e3f-58c2-8f29-df3ef51d412d" -version = "2.34.1+3" +version = "2.34.1+4" [[at_spi2_core_jll]] -deps = ["Dbus_jll", "Glib_jll", "Libdl", "Pkg", "Xorg_libXtst_jll"] -git-tree-sha1 = "2410a457fb0c800a6c9ded4ae45d4a71abba823e" +deps = ["Artifacts", "Dbus_jll", "Glib_jll", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXtst_jll"] +git-tree-sha1 = "d2d540cd145f2b2933614649c029d222fe125188" uuid = "0fc3237b-ac94-5853-b45c-d43d59a06200" -version = "2.34.0+3" +version = "2.34.0+4" [[gdk_pixbuf_jll]] -deps = ["Glib_jll", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pkg", "Xorg_libX11_jll", "libpng_jll"] -git-tree-sha1 = "43a37ec94ceb49875d23114bf79b2cffe537fea6" +deps = ["Artifacts", "Glib_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pkg", "Xorg_libX11_jll", "libpng_jll"] +git-tree-sha1 = "031f60d4362fba8f8778b31047491823f5a73000" uuid = "da03df04-f53b-5353-a52f-6a8b0620ced0" -version = "2.38.2+8" +version = "2.38.2+9" [[hicolor_icon_theme_jll]] -deps = ["Libdl", "Pkg"] -git-tree-sha1 = "f2c47ff27831f0404b621ee4bce3705d433b6f78" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "b458a6f6fc2b1a8ca74ed63852e4eaf43fb9f5ea" uuid = "059c91fe-1bad-52ad-bddd-f7b78713c282" -version = "0.17.0+2" +version = "0.17.0+3" [[iso_codes_jll]] -deps = ["Libdl", "Pkg"] -git-tree-sha1 = "94d3e2266976ed7193376a64aeea6540e9ecb7e3" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "5ee24c3ae30e006117ec2da5ea50f2ce457c019a" uuid = "bf975903-5238-5d20-8243-bc370bc1e7e5" -version = "4.3.0+3" +version = "4.3.0+4" [[libpng_jll]] deps = ["Libdl", "Pkg", "Zlib_jll"] @@ -910,7 +910,7 @@ uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" version = "1.6.37+5" [[xkbcommon_jll]] -deps = ["Libdl", "Pkg", "Wayland_jll", "Wayland_protocols_jll", "Xorg_libxcb_jll", "Xorg_xkeyboard_config_jll"] -git-tree-sha1 = "48e08959222ca822d16d9ffa6777caebce951469" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Wayland_jll", "Wayland_protocols_jll", "Xorg_libxcb_jll", "Xorg_xkeyboard_config_jll"] +git-tree-sha1 = "6318781a678a53ae948bc0be82ccabfc66616519" uuid = "d8fb68d0-12a3-5cfd-a85a-d49703b185fd" -version = "0.9.1+3" +version = "0.9.1+4" diff --git a/Project.toml b/Project.toml index dc91d3506..7e1740368 100644 --- a/Project.toml +++ b/Project.toml @@ -14,9 +14,9 @@ Images = "916415d5-f1e6-5110-898d-aaa5f9f070e0" Netpbm = "f09324ee-3d7c-5217-9330-fc30815ba969" ProgressMeter = "92933f4c-e287-5a05-a399-4b506db050ca" QuartzImageIO = "dca85d43-d64c-5e67-8c65-017450d5d020" +SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" [compat] -julia = "1" ColorTypes = "0.10.9" FileIO = "1.4.3" ImageDraw = "0.2.3" @@ -27,6 +27,7 @@ Images = "0.22.4" Netpbm = "0.4.1" ProgressMeter = "1.3.2" QuartzImageIO = "0.7.3" +julia = "1" [extras] Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/examples/basic.jl b/examples/basic.jl index ba0b82c34..2a33433d0 100755 --- a/examples/basic.jl +++ b/examples/basic.jl @@ -22,7 +22,8 @@ using Images: imresize println("...done") function main(; - smart_choose_feats::Bool=false, alt::Bool=false + smart_choose_feats::Bool=false, + alt::Bool=false ) include("constants.jl") @@ -37,7 +38,7 @@ function main(; # For performance reasons restricting feature size notify_user("Selecting best feature width and height...") - max_feature_width, max_feature_height, min_feature_height, min_feature_width, min_size_img = determine_feature_size(pos_training_path, neg_training_path) + max_feature_width, max_feature_height, min_feature_height, min_feature_width, min_size_img = determine_feature_size(pos_training_path, neg_training_path; scale_up = true) println("...done. Maximum feature width selected is $max_feature_width pixels; minimum feature width is $min_feature_width; maximum feature height is $max_feature_height pixels; minimum feature height is $min_feature_height.\n") else @@ -47,21 +48,8 @@ function main(; max_feature_width = 10 end - - FD.notify_user("Loading faces...") - - faces_training = FD.load_images(pos_training_path)[1] - faces_ii_training = map(FD.to_integral_image, faces_training) # list(map(...)) - println("...done. ", length(faces_training), " faces loaded.") - - FD.notify_user("Loading non-faces...") - - non_faces_training = FD.load_images(neg_training_path)[1] - non_faces_ii_training = map(FD.to_integral_image, non_faces_training) # list(map(...)) - println("...done. ", length(non_faces_training), " non-faces loaded.\n") - # classifiers are haar like features - classifiers = FD.learn(faces_ii_training, non_faces_ii_training, num_classifiers, min_feature_height, max_feature_height, min_feature_width, max_feature_width) + classifiers = FD.learn(pos_training_path, neg_training_path, num_classifiers, min_feature_height, max_feature_height, min_feature_width, max_feature_width; scale_up = true) FD.notify_user("Loading test faces...") diff --git a/examples/main_data.jl b/examples/main_data.jl index 9bcc6847d..6dbbedc3d 100644 --- a/examples/main_data.jl +++ b/examples/main_data.jl @@ -4,12 +4,12 @@ "${BASH_SOURCE[0]}" "$@" =# -# pos_training_path = joinpath(main_image_path, "trainset", "faces") -# neg_training_path = joinpath(main_image_path, "trainset", "non-faces") -# pos_testing_path = joinpath(main_image_path, "testset", "faces")#joinpath(homedir(), "Desktop", "faces")#"$main_image_path/testset/faces/" -# neg_testing_path = joinpath(main_image_path, "testset", "non-faces") +pos_training_path = joinpath(main_image_path, "trainset", "faces") +neg_training_path = joinpath(main_image_path, "trainset", "non-faces") +pos_testing_path = joinpath(main_image_path, "testset", "faces")#joinpath(homedir(), "Desktop", "faces")#"$main_image_path/testset/faces/" +neg_testing_path = joinpath(main_image_path, "testset", "non-faces") -pos_training_path = joinpath(data_path, "lfw-all") -neg_training_path = joinpath(data_path, "all-non-faces") -pos_testing_path = joinpath(data_path, "lizzie-testset", "faces") -neg_testing_path = joinpath(data_path, "lizzie-testset", "nonfaces") +# pos_training_path = joinpath(data_path, "lfw-all") +# neg_training_path = joinpath(data_path, "all-non-faces") +# pos_testing_path = joinpath(data_path, "lizzie-testset", "faces") +# neg_testing_path = joinpath(data_path, "lizzie-testset", "nonfaces") diff --git a/src/AdaBoost.jl b/src/AdaBoost.jl index 5eb28f123..00c1c710c 100755 --- a/src/AdaBoost.jl +++ b/src/AdaBoost.jl @@ -10,8 +10,11 @@ # include("HaarLikeFeature.jl") include("Utils.jl") +include("IntegralImage.jl") using ProgressMeter: @showprogress +using SparseArrays: spzeros + #= learn( positive_iis::AbstractArray, @@ -40,21 +43,33 @@ This function selects a set of classifiers. Iteratively takes the best classifie # Returns `classifiers::Array{HaarLikeObject, 1}`: List of selected features =# function learn( - positive_iis::AbstractArray, - negative_iis::AbstractArray, + # positive_iis::AbstractArray, + # negative_iis::AbstractArray, + positive_path::AbstractString, + negative_path::AbstractString, num_classifiers::Integer=-1, min_feature_width::Integer=1, max_feature_width::Integer=-1, min_feature_height::Integer=1, - max_feature_height::Integer=-1 -)#::Array{HaarLikeObject,1} + max_feature_height::Integer=-1; + scale_up::Bool = false +)::Array{HaarLikeObject,1} # get number of positive and negative images (and create a global variable of the total number of images——global for the @everywhere scope) - num_pos = length(positive_iis) - num_neg = length(negative_iis) + + positive_files = filter!(f -> ! occursin(r".*\.DS_Store", f), readdir(positive_path, join=true, sort=false)) + negative_files = filter!(f -> ! occursin(r".*\.DS_Store", f), readdir(negative_path, join=true, sort=false)) + + num_pos = length(positive_files) + num_neg = length(negative_files) num_imgs = num_pos + num_neg # get image height and width - img_height, img_width = size(positive_iis[1]) + temp_image = convert(Array{Float64}, Gray.(load(rand(positive_files)))) + if scale_up + temp_image = imresize(temp_image, (577, 577)) + end + img_height, img_width = size(temp_image) + temp_image = nothing # unload temporary image # Maximum feature width and height default to image width and height if isequal(max_feature_height, -1) @@ -83,37 +98,56 @@ function learn( weights = vcat(pos_weights, neg_weights) labels = vcat(ones(num_pos), ones(num_neg) * -1) - # get list of images (global because of @everywhere scope) - images = vcat(positive_iis, negative_iis) - # Create features for all sizes and locations features = _create_features(img_height, img_width, min_feature_width, max_feature_width, min_feature_height, max_feature_height) num_features = length(features) feature_indices = Array(1:num_features) used = [] - if isequal(num_classifiers, -1) num_classifiers = num_features end - notify_user("Calculating scores for images...") - # create an empty array (of zeroes) with dimensions (num_imgs, numFeautures) - votes = zeros((num_imgs, num_features)) # necessarily different from `zero.((num_imgs, num_features))`; previously zerosarray - - n = num_imgs - processes = num_imgs # i.e., hypotheses - @showprogress for t in 1:processes # bar(range(num_imgs)): - votes[t, :] = Array(map(f -> get_vote(f, images[t]), features)) - end # end show progress in for loop - + # votes = zeros((num_imgs, num_features)) # necessarily different from `zero.((num_imgs, num_features))`; previously zerosarray + votes = spzeros(num_imgs, num_features) + num_processed = 0 + + notify_user("Calculating scores for positive images (e.g., faces)...") + @showprogress for positive_image in positive_files + positive_image = convert(Array{Float64}, Gray.(load(positive_image))) + if scale_up + positive_image = imresize(positive_image, (577, 577)) + end + positive_ii = to_integral_image(positive_image) + # get list of images + # images = vcat(positive_iis, negative_iis) + + # n = num_imgs + # processes = num_imgs # i.e., hypotheses + votes[num_processed + 1, :] = Array(map(f -> get_vote(f, positive_ii), features)) + + num_processed += 1 + end # end loop through images + print("\n") # for a new line after the progress bar + notify_user("Calculating scores for negative images (e.g., non-faces)...") + @showprogress for negative_image in negative_files + negative_image = convert(Array{Float64}, Gray.(load(negative_image))) + if scale_up + negative_image = imresize(negative_image, (577, 577)) + end + negative_ii = to_integral_image(negative_image) + + # n = num_imgs + # processes = num_imgs # i.e., hypotheses + votes[num_processed + 1, :] = Array(map(f -> get_vote(f, negative_ii), features)) + + num_processed += 1 + end # end loop through images print("\n") # for a new line after the progress bar + notify_user("Selecting classifiers...") # select classifiers classifiers = [] - - notify_user("Selecting classifiers...") - n = num_classifiers @showprogress for t in 1:num_classifiers classification_errors = zeros(length(feature_indices)) # previously, zerosarray @@ -154,45 +188,6 @@ function learn( return classifiers end -#find / update threshold and coeff for each feature -# function _feature_job(feature_nr, feature) -# # if (feature_nr+1) % 1000 == 0: -# # print('[ %d of %d ]'%(feature_nr+1, n_features)) -# if feature_nr ∈ used -# return -# end -# -# # find the scores for the images -# scores = zeros(n_img) -# for i, img in enumerate(images): -# scores[i] = feature.get_score(img) -# sorted_img_args = np.argsort(scores) -# Sp = np.zeros(n_img) # sum weights for positive examples below current img -# Sn = np.zeros(n_img) # sum weights for negative examples below current img -# Tp = 0 -# Tn = 0 -# for img_arg in np.nditer(sorted_img_args): -# if labels[img_arg] == 0: -# Tn += w[img_arg] -# Sn[img_arg] = Tn -# else: -# Tp += w[img_arg] -# Sp[img_arg] = Tp -# -# # compute the formula for the threshold -# nerror = Sp + (Tn - Sn) # error of classifying everything negative below threshold -# perror = Sn + (Tp - Sp) # error of classifying everything positive below threshold -# error = np.minimum(perror, nerror) # find minimum -# best_threshold_img = np.argmin(error) # find the image with the threshold -# best_local_error = error[best_threshold_img] -# feature.threshold = scores[best_threshold_img] # use the score we estimated for the image as new threshold -# # assign new polarity, based on above calculations -# feature.polarity = 1 if nerror[best_threshold_img] < perror[best_threshold_img] else -1 -# -# # store the error to find best feature -# errors[feature_nr] = best_local_error -# end - #= _create_features( img_height::Integer, diff --git a/src/Utils.jl b/src/Utils.jl index cdd28e832..d8580843d 100755 --- a/src/Utils.jl +++ b/src/Utils.jl @@ -43,56 +43,6 @@ function notify_user(message::AbstractString) return println("\033[1;34m===>\033[0;38m\033[1;38m\t$message\033[0;38m") end -#= - load_images(image_dir::AbstractString) -> Tuple{AbstractArray, AbstractArray} - -Given a path to a directory of images, recursively loads those - -# Arguments - -- `image_dir::AbstractString`: path to a directory of images - -# Returns - -- `images::AbstractArray`: a list of images from the path provided -= `files::AbstractArray`: a list of file names of the images -=# -function load_images(image_dir::AbstractString) - files = filter!(f -> ! occursin(r".*\.DS_Store", f), readdir(image_dir, join=true, sort=false)) - images = [] - - for file in files - images = push!(images, get_image_matrix(file)) - end - - return images, files -end - -#= - get_image_matrix(image_file::AbstractString) -> AbstractArray - -Takes an image and constructs a matrix of greyscale intensity values based on it. - -# Arguments - -- `image_file::AbstractString`: the path of the file of the image to be turned into an array - -# Returns - -- `img_arr::AbstractArray`: The array of greyscale intensity values from the image -=# -function get_image_matrix(image_file::AbstractString; scale_up::Bool=true) - img = load(image_file) - - if scale_up - img = imresize(img, (577, 577)) - end - - img_arr = convert(Array{Float64}, Gray.(img)) - - return img_arr -end - #= determine_feature_size( pos_training_path::AbstractString, @@ -116,7 +66,8 @@ Takes images and finds the best feature size for the image size. =# function determine_feature_size( pos_training_path::AbstractString, - neg_training_path::AbstractString + neg_training_path::AbstractString; + scale_up::Bool=false ) min_feature_height = 0 min_feature_width = 0 @@ -128,7 +79,11 @@ function determine_feature_size( for picture_dir in [pos_training_path, neg_training_path] for picture in filter!(f -> ! occursin(r".*\.DS_Store", f), readdir(picture_dir, join=true, sort=false)) - new_size = size(load(joinpath(homedir(), "FaceDetection.jl", "data", picture_dir, picture))) + img = load(joinpath(homedir(), "FaceDetection.jl", "data", picture_dir, picture)) + if scale_up + img = imresize(img, (577, 577)) + end + new_size = size(img) sizes = push!(sizes, new_size) end end