{"id":255,"date":"2021-10-11T19:36:44","date_gmt":"2021-10-11T19:36:44","guid":{"rendered":"http:\/\/liipetti.net\/retkia\/?p=255"},"modified":"2021-10-13T07:43:12","modified_gmt":"2021-10-13T07:43:12","slug":"neurokuvatreenit-kirjastoja","status":"publish","type":"post","link":"https:\/\/liipetti.net\/retkia\/neurokuvatreenit-kirjastoja\/","title":{"rendered":"Neurokuvatreenit -kirjastoja"},"content":{"rendered":"\n<p>KESKENER\u00c4INEN<\/p>\n\n\n\n<p>T\u00e4ss\u00e4 esitell\u00e4\u00e4n lyhyesti koodissa k\u00e4ytt\u00e4mi\u00e4mme kirjasto-ohjelmia. <br><br>Moni on sanonut, ettei oikein ole perehtynyt tuohon pythoniin. Itse asiassa useinkaan kyse ei ole pythonin vaikeudesta, vaan k\u00e4ytettyjen kirjasto-ohjelmien piirteist\u00e4, jotka taas juontuvat siit\u00e4 ett\u00e4 niit\u00e4 k\u00e4ytet\u00e4\u00e4n mutkikkaiden asioiden tekemiseen. <br><\/p>\n\n\n\n<p><strong>PYTORCH<\/strong><\/p>\n\n\n\n<p>Pythonissa itsess\u00e4\u00e4n ei ole tukea moniulotteisen datan k\u00e4sittelylle eik\u00e4 GPU-laskennalle. Moniulotteinen data tarkoittaa t\u00e4ss\u00e4 esimerkiksi RGB-kuvaa, johon tarvitaan 3-ulotteinen taulukko: 3 v\u00e4rikanavaa x korkeus x leveys pikselein\u00e4. <a href=\"http:\/\/pytorch.org\" data-type=\"URL\" data-id=\"http:\/\/pytorch.org\" target=\"_blank\" rel=\"noreferrer noopener\">Pytorch<\/a> k\u00e4sittelee dataa tensoreina, jotka ovat k\u00e4yt\u00e4nn\u00f6ss\u00e4 moniulotteisia taulukoiden joiden k\u00e4sittelyyn on eritt\u00e4in tehokkaat v\u00e4lineet.<br><\/p>\n\n\n\n<p>Tensorien lis\u00e4ksi pytorchista l\u00f6ytyy my\u00f6s mm. <strong><a href=\"https:\/\/pytorch.org\/docs\/stable\/nn.html\" target=\"_blank\" rel=\"noreferrer noopener\">torch.nn<\/a><\/strong>, v\u00e4lineet neuroverkkojen rakentamiseksi ja <a href=\"https:\/\/pytorch.org\/docs\/stable\/optim.html\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>torch.optim<\/strong> <\/a>koulutuksen vaatimaa optimointia tukemaan.<\/p>\n\n\n\n<p><strong><a href=\"https:\/\/pytorch.org\/vision\/stable\/\" target=\"_blank\" rel=\"noreferrer noopener\">TORCHVISION<\/a><\/strong><\/p>\n\n\n\n<p>Pytorchin laajennus kuvienk\u00e4sittely\u00e4 varten, josta l\u00f6ytyy paitsi ty\u00f6kalut kuvien lukemiseen ja esik\u00e4sittelyyn, my\u00f6s valmiita verkkoja kuvak\u00e4ytt\u00f6\u00f6n.<\/p>\n\n\n\n<p><strong><a href=\"https:\/\/numpy.org\" target=\"_blank\" rel=\"noreferrer noopener\">NUMPY<\/a><\/strong><\/p>\n\n\n\n<p>Peruspythonin laajennus moniulotteisten taulukkojen k\u00e4sittelyyn. Ei tukea GPU:lle, mutta eritt\u00e4in tehokkaita monipuolisia v\u00e4lineit\u00e4 taulukkojen k\u00e4sittelyyn k\u00e4ytett\u00e4v\u00e4ksi esim. kun joudutaan muokkaamaan kuvia pikselitasolla. Toimii saumattomasti yhteen <strong>opencv<\/strong>:n kanssa.<br><br><strong><a href=\"https:\/\/pillow.readthedocs.io\/en\/stable\/\" target=\"_blank\" rel=\"noreferrer noopener\">PIL<\/a><\/strong><\/p>\n\n\n\n<p>Pythonin laajennus kuvank\u00e4sittelyyn. Torchvision toimii hyvin yhteen PIL:n kanssa. PIL tarjoaa paljon valmiita kuvank\u00e4sittelyominaisuuksia, mutta jos haluaa k\u00e4yd\u00e4 itse k\u00e4siksi pikselidataan, opencv + numpy on k\u00e4tev\u00e4mpi. Omassa ty\u00f6skentelyss\u00e4ni joudun liikkumaan kaikkien n\u00e4iden v\u00e4lill\u00e4, jotten joutuisi keksim\u00e4\u00e4n py\u00f6r\u00e4\u00e4 uudestaan. Teen kunkin homman sill\u00e4 mill\u00e4 se onnistuu, ja niiden v\u00e4lill\u00e4 tarvittavat muutokset (mist\u00e4 my\u00f6hemmin).<br><br><strong><a href=\"https:\/\/opencv.org\" target=\"_blank\" rel=\"noreferrer noopener\">OPENCV<\/a><\/strong><\/p>\n\n\n\n<p>Pythonin laajennus kuvank\u00e4sittelyyn, k\u00e4sittelee kuvaa suoraan numpy-taulukkona jolloin pikselit ovat suoraan k\u00e4ytett\u00e4viss\u00e4. Voidaan my\u00f6s lukea webbikameraa ja n\u00e4ytt\u00e4\u00e4 kuvaa n\u00e4yt\u00f6ll\u00e4 omana ikkunanaan,<br><\/p>\n\n\n\n<p><strong>KORNIA<\/strong><\/p>\n\n\n\n<p>Toisin kuin PIL ja OpenCV, uudehko <a href=\"https:\/\/kornia.readthedocs.io\/en\/latest\/\" target=\"_blank\" rel=\"noreferrer noopener\">Kornia<\/a> pystyy k\u00e4sittelem\u00e4\u00e4n kuvia suoraan tensoreina, eli on k\u00e4tev\u00e4 silloin kun esimerkiksi kuvan kokoa pit\u00e4\u00e4 muuttaa ja kuva on jo tensorina.<\/p>\n\n\n\n<p><br><strong><a href=\"https:\/\/zulko.github.io\/moviepy\/\" target=\"_blank\" rel=\"noreferrer noopener\">MOVIEPY<\/a><\/strong><\/p>\n\n\n\n<p>Videotiedostojen k\u00e4sittelyyn (lukuun, leikkaukseen ja kirjoitukseen).<\/p>\n\n\n\n<p><br><strong>SSIM<\/strong><\/p>\n\n\n\n<p>Ensimm\u00e4isiss\u00e4 harjoituksissa vertaamme kuvaa tavoitteeseen laskemalla eroa pikseleitt\u00e4in. Kuva voi siis n\u00e4ytt\u00e4\u00e4 k\u00e4yt\u00e4nn\u00f6ss\u00e4 samalta (esim. olla muutaman pikselin verran sivussa) mutta arvion mukaan erilainen.<br><br><a rel=\"noreferrer noopener\" href=\"https:\/\/pypi.org\/project\/pyssim\/\" target=\"_blank\">PYSSIM<\/a> k\u00e4ytt\u00e4\u00e4 matemaattinen menetelm\u00e4\u00e4 (<a href=\"https:\/\/en.wikipedia.org\/wiki\/Structural_similarity\" target=\"_blank\" rel=\"noreferrer noopener\">SSIM<\/a>) arvioimaan kuvien rakenteellista samankaltaisuutta.<br><\/p>\n\n\n\n<p><strong>LPIPS<\/strong><\/p>\n\n\n\n<p>Toinen tapa arvioida kuvien samankaltaisuutta katsojan kannalta (perceptual similarity) perustuu kuvan piirteiden arviointiin kuvaa tulkitsevan neuroverkon avulla. Kokeilemme tehd\u00e4 sellaista itsekin varsinkin harjoituksessa 11,  mutta k\u00e4yt\u00e4mme my\u00f6s valmista <a href=\"https:\/\/pypi.org\/project\/lpips\/\" target=\"_blank\" rel=\"noreferrer noopener\">lpips-kirjastoa<\/a>.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>KESKENER\u00c4INEN T\u00e4ss\u00e4 esitell\u00e4\u00e4n lyhyesti koodissa k\u00e4ytt\u00e4mi\u00e4mme kirjasto-ohjelmia. Moni on sanonut, ettei oikein ole perehtynyt tuohon pythoniin. Itse asiassa useinkaan kyse ei ole pythonin vaikeudesta, vaan k\u00e4ytettyjen kirjasto-ohjelmien piirteist\u00e4, jotka taas juontuvat siit\u00e4 ett\u00e4 niit\u00e4 k\u00e4ytet\u00e4\u00e4n mutkikkaiden asioiden tekemiseen. PYTORCH Pythonissa itsess\u00e4\u00e4n ei ole tukea moniulotteisen datan k\u00e4sittelylle eik\u00e4 GPU-laskennalle. Moniulotteinen\u2026<\/p>\n<p class=\"continue-reading-button\"> <a class=\"continue-reading-link\" href=\"https:\/\/liipetti.net\/retkia\/neurokuvatreenit-kirjastoja\/\">Continue reading<i class=\"crycon-right-dir\"><\/i><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-255","post","type-post","status-publish","format-standard","hentry","category-neurokuvatreenit"],"_links":{"self":[{"href":"https:\/\/liipetti.net\/retkia\/wp-json\/wp\/v2\/posts\/255","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/liipetti.net\/retkia\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/liipetti.net\/retkia\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/liipetti.net\/retkia\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/liipetti.net\/retkia\/wp-json\/wp\/v2\/comments?post=255"}],"version-history":[{"count":7,"href":"https:\/\/liipetti.net\/retkia\/wp-json\/wp\/v2\/posts\/255\/revisions"}],"predecessor-version":[{"id":269,"href":"https:\/\/liipetti.net\/retkia\/wp-json\/wp\/v2\/posts\/255\/revisions\/269"}],"wp:attachment":[{"href":"https:\/\/liipetti.net\/retkia\/wp-json\/wp\/v2\/media?parent=255"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/liipetti.net\/retkia\/wp-json\/wp\/v2\/categories?post=255"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/liipetti.net\/retkia\/wp-json\/wp\/v2\/tags?post=255"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}