{"id":348961,"date":"2023-06-18T15:00:38","date_gmt":"2023-06-18T15:00:38","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=348961"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=348961","title":{"rendered":"<span>\u0417\u0430\u043c\u0435\u0442\u043a\u0438 \u043f\u0440\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u043c\u0438 \u0441\u0435\u0442\u044f\u043c\u0438<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/cl\/xx\/q8\/clxxq89cekkyblw1u9gxgqhrgie.png\" data-src=\"https:\/\/habrastorage.org\/webt\/cl\/xx\/q8\/clxxq89cekkyblw1u9gxgqhrgie.png\"\/><\/p>\n<p>  <\/p>\n<p><strong>TLDR<\/strong> \u2014 \u044d\u0442\u043e \u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u044d\u0442\u043e \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u0438 \u043e\u0431\u0443\u0447\u0438\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e-\u0441\u043e\u0441\u0442\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c (GAN) \u0434\u043b\u044f \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0432 2 \u0438\u043b\u0438 4 \u0440\u0430\u0437\u0430. \u042f \u043d\u0435 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u0443\u044e \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043c\u043e\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0438\u043b\u0438 \u043f\u0443\u0442\u044c \u0440\u0430\u0441\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0439 \u043b\u0443\u0447\u0448\u0435 \u043a\u0430\u043a\u0438\u0445-\u0442\u043e \u0434\u0440\u0443\u0433\u0438\u0445. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u0441\u0442\u0430\u043b\u0438 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440\u044b \u0438 diffusion \u043c\u043e\u0434\u0435\u043b\u0438 \u2014 \u0437\u0430\u043c\u0435\u0442\u043a\u0438 \u043d\u0435 \u043f\u0440\u043e \u043d\u0438\u0445.<\/p>\n<p>  <\/p>\n<p>\u0421 \u0437\u0430\u043c\u0435\u0442\u043a\u0430\u043c\u0438 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043f\u043e\u0432\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f \u2014 \u0435\u0441\u0442\u044c \u043e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f &#171;\u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443&#187; \u0438 \u0443\u0442\u043e\u0447\u043d\u0435\u043d\u0438\u044f. \u041c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043d\u0435\u0440\u0435\u043b\u0435\u0432\u0430\u043d\u0442\u043d\u044b\u0435 \u0437\u0430\u043c\u0435\u0442\u043a\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0443\u0436\u043d\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u2014 \u0430 \u0432 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c. \u042f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043a\u0430\u0436\u0434\u0443\u044e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0437\u0430\u043c\u0435\u0442\u043a\u0443 \u043f\u043e-\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0446\u0435\u043b\u044c\u043d\u043e\u0439 \u0438 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0439 \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445.<\/p>\n<p>  <\/p>\n<p>\u042f \u0443\u0436\u0435 \u0431\u044b\u043b \u0437\u043d\u0430\u043a\u043e\u043c \u0441\u043e \u0441\u0432\u0451\u0440\u0442\u043e\u0447\u043d\u044b\u043c\u0438 \u0441\u0435\u0442\u043a\u0430\u043c\u0438, \u043d\u043e \u043c\u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e-\u0441\u043e\u0441\u0442\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0435\u0442\u0438. \u041f\u043e\u043d\u044f\u0442\u044c, \u043f\u043e\u0447\u0435\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0442\u0435 \u0438\u043b\u0438 \u0438\u043d\u044b\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b. \u041f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0438\u0434\u0435\u0438. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0443\u0447\u0438\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u0438 \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043c\u043e\u0435\u0433\u043e \u041f\u041a. \u041a\u0430\u043a\u0438\u0435-\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0438 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u043c\u0438\u043d\u0443\u0442 \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u043e\u0432, \u0441\u0430\u043c\u044b\u0439 \u0434\u043b\u0438\u043d\u043d\u044b\u0439 \u0441 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u2014 \u0442\u0440\u043e\u0435 \u0441\u0443\u0442\u043e\u043a.<\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<h2 id=\"ssylki\">\u0421\u0441\u044b\u043b\u043a\u0438<\/h2>\n<p>  <\/p>\n<p>\u0421\u0442\u0430\u0442\u044c\u0438 \u043d\u0430 \u0430\u0440\u0445\u0438\u0432\u0435 \u0438\u043b\u0438 \u043a\u043e\u0434 \u043d\u0430 \u0433\u0438\u0442\u0445\u0430\u0431\u0435 \u2014 \u043d\u0438 \u0440\u0430\u0437\u0443 \u043d\u0435 \u0438\u0441\u0442\u0438\u043d\u0430 \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0438\u043d\u0441\u0442\u0430\u043d\u0446\u0438\u0438, \u0432 \u043d\u0438\u0445 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0445 \u0438 \u043d\u0435\u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439. \u042f \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u0431\u0440\u0430\u0442\u044c \u0438 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043a\u0430\u0436\u0434\u043e\u0435 \u0438\u0437 \u043d\u0438\u0445. \u0418 \u043d\u0435 \u0431\u043e\u044f\u0442\u0441\u044c\u044f \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0441\u0432\u043e\u0451.<\/p>\n<p>  <\/p>\n<h3 id=\"real-time-single-image-and-video-super-resolution-using-an-efficient-sub-pixel-convolutional-neural-network\">Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network<\/h3>\n<p>  <\/p>\n<p>2016 \u0433\u043e\u0434: <a href=\"https:\/\/arxiv.org\/abs\/1609.05158\" rel=\"nofollow noopener noreferrer\">arxiv<\/a><\/p>\n<p>  <\/p>\n<p>\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0438 \u0431\u044b\u0441\u0442\u0440\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u2014 \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u0442\u0440\u0438 \u0441\u0432\u0451\u0440\u0442\u043e\u0447\u043d\u044b\u0445 \u0441\u043b\u043e\u044f. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432 pytorch \u0435\u0441\u0442\u044c \u0441\u043b\u043e\u0439 <a href=\"https:\/\/pytorch.org\/docs\/stable\/generated\/torch.nn.PixelShuffle.html\" rel=\"nofollow noopener noreferrer\">PixelShuffle<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e. <\/p>\n<p>  <\/p>\n<p>\u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u044d\u0442\u0443 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u043a\u0430\u043a \u043e\u0442\u043f\u0440\u0430\u0432\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443, \u043d\u043e \u0432 \u043d\u0435\u0439 \u0435\u0441\u0442\u044c \u0441\u043f\u043e\u0440\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b.<\/p>\n<p>  <\/p>\n<h3 id=\"sr-gan-esr-gan-real-esr-gan\">SR-GAN, ESR-GAN, Real-ESR-GAN<\/h3>\n<p>  <\/p>\n<p>\u0421\u0435\u0440\u0438\u044f \u0441\u0442\u0430\u0442\u0435\u0439 \u043e\u0434\u043d\u0438\u0445 \u0438 \u0442\u0435\u0445 \u0436\u0435 \u0430\u0432\u0442\u043e\u0440\u043e\u0432. \u0412 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0437\u0430\u043c\u0435\u0442\u043e\u043a \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u043d\u0438\u043c.<br \/>  \u042f \u043c\u043d\u043e\u0433\u043e \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043b \u043f\u0435\u0440\u0432\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e, \u0445\u043e\u0442\u0435\u043b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u043d\u043e \u0440\u0443\u043a\u0438 \u0434\u043e\u0448\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u0439\u0447\u0430\u0441. \u0410\u0432\u0442\u043e\u0440\u044b \u0431\u0435\u0437 \u0434\u0435\u043b\u0430 \u043d\u0435 \u0441\u0438\u0434\u0435\u043b\u0438 \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0435\u0449\u0451 \u0434\u0432\u0435.<br \/>  \u0414\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u043b\u0443\u0447\u0448\u0435 \u0447\u0438\u0442\u0430\u0442\u044c \u0432\u0441\u0435 \u0442\u0440\u0438 \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443. \u0418 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043a \u043d\u0438\u043c, \u0442\u0430\u043c \u0435\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b. \u041d\u043e \u0431\u041e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u043d\u044e\u0430\u043d\u0441\u043e\u0432 \u044f \u043d\u0430\u0447\u0430\u043b \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0443\u0447\u0438\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u0438 \u0441\u0430\u043c.<\/p>\n<p>  <\/p>\n<h4 id=\"sr-gan-super-resolution-generative-adversarial-networks\">SR-GAN (Super-resolution generative adversarial networks)<\/h4>\n<p>  <\/p>\n<p><a href=\"https:\/\/arxiv.org\/abs\/1609.04802\" rel=\"nofollow noopener noreferrer\">Arxiv<\/a><\/p>\n<p>  <\/p>\n<p>\u0423\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0439 \u0432 \u0447\u0435\u0442\u044b\u0440\u0435 \u0440\u0430\u0437\u0430, \u043e\u0434\u043d\u0430 \u0438\u0437 \u043f\u0435\u0440\u0432\u044b\u0445 \u0441\u0442\u0430\u0442\u0435\u0439, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 2016 \u0433\u043e\u0434\u0443.<\/p>\n<p>  <\/p>\n<p>\u0420\u0430\u0437\u043c\u0435\u0440 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u2014 96\u044596 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439.<\/p>\n<p>  <\/p>\n<h4 id=\"esr-gan-enchanced-esr-gan\">ESR-GAN (Enchanced ESR-GAN)<\/h4>\n<p>  <\/p>\n<p>2018 \u0433\u043e\u0434.<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/arxiv.org\/abs\/1809.00219\" rel=\"nofollow noopener noreferrer\">Arxiv<\/a>, <a href=\"https:\/\/github.com\/xinntao\/ESRGAN\" rel=\"nofollow noopener noreferrer\">github<\/a><\/p>\n<p>  <\/p>\n<p>\u0420\u0430\u0437\u043c\u0435\u0440 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a 128\u0445128.<\/p>\n<p>  <\/p>\n<p>\u041e\u0442\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u043e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0430\u0442\u0447-\u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0435, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043c\u0435\u043d\u044f\u0442\u044c \u0432\u0441\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430<br \/>  \u0418\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0440\u0430\u0437\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0439 \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0438 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438.<\/p>\n<p>  <\/p>\n<h4 id=\"real-esr-gan\">Real ESR-GAN<\/h4>\n<p>  <\/p>\n<p>\u041f\u043e\u043a\u0430 \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0431\u0443\u043a\u043e\u0432\u043e\u043a \u0441\u043b\u0435\u0432\u0430 \u043a \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044e<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/arxiv.org\/abs\/2107.10833\" rel=\"nofollow noopener noreferrer\">Arxiv<\/a>, <a href=\"https:\/\/github.com\/xinntao\/Real-ESRGAN\" rel=\"nofollow noopener noreferrer\">github<\/a><\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u2014 256\u0445256 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439. \u0425\u043e\u0442\u044f, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u044d\u0442\u043e \u043a\u0430\u043a-\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435\u043c \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442 \u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p>  <\/p>\n<p>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0442\u0430\u043a \u0436\u0435, \u0447\u0442\u043e \u0438 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435. \u041d\u043e \u0430\u0432\u0442\u043e\u0440\u044b \u043e\u0447\u0435\u043d\u044c \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e \u043f\u043e\u0434\u043e\u0448\u043b\u0438 \u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0443 \u0438\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u0439 \u2014 \u043a \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0448\u0443\u043c\u044b, \u0440\u0430\u0437\u043c\u044b\u0442\u0438\u0435, \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b \u0441\u0436\u0430\u0442\u0438\u044f, \u0438 \u0443\u0436\u0435 \u0432\u043e\u0442 \u044d\u0442\u043e\u0442 &#171;\u043f\u043e\u0434\u043f\u043e\u0440\u0447\u0435\u043d\u043d\u044b\u0439&#187; \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u043a\u0430 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 \u043a\u0440\u0430\u0441\u0438\u0432\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443.<\/p>\n<p>  <\/p>\n<h2 id=\"pytorch-cuda-gpu-i-vremya-obucheniya\">pytorch, cuda, gpu \u0438 \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f<\/h2>\n<p>  <\/p>\n<p>\u0412\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0430 \u2014 geforce 2060 super, 8Gb.<br \/>  \u041e\u0431\u0443\u0447\u0430\u0442\u044c \u043d\u0430 CPU \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u043d\u0430 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u2014 \u043b\u0443\u0447\u0448\u0435 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u043e\u0439.<br \/>  \u0412 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u043c \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c 400 000 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 256\u0445256, \u043e\u043d\u0438 \u0437\u0430\u043d\u044f\u043b\u0438 32 \u0413\u0431 \u043d\u0430 SSD.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0441\u0442\u044b\u0435 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0435 \u0441\u0435\u0442\u043a\u0438 \u043f\u0440\u043e\u0431\u0435\u0433\u0430\u043b\u0438 \u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u044f \u0443\u0447\u0438\u043b \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u043f\u043e\u0445, \u043d\u043e \u0441 \u0443\u0441\u043b\u043e\u0436\u043d\u0435\u043d\u0438\u0435\u043c \u0441\u0435\u0442\u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0430\u0441\u044c \u0432\u0441\u0451 \u043c\u0435\u043d\u0435\u0435 \u0432\u0430\u0436\u043d\u043e\u0439. \u041d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439, \u0441\u0430\u043c\u043e\u0439 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u043a\u0435 \u043e\u0434\u043d\u0430 \u044d\u043f\u043e\u0445\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0430 \u0430\u0436 \u0442\u0440\u043e\u0435 \u0441\u0443\u0442\u043e\u043a \u0441 \u043e\u0434\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u043e\u0439 \u0432 \u0431\u0430\u0442\u0447\u0435 \u2014 \u0438\u043d\u0430\u0447\u0435 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u043b\u043e \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438. \u042d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e 0.7 \u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043d\u0430 \u0448\u0430\u0433 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<p>\u0427\u0442\u043e \u0437\u0430\u0431\u0430\u0432\u043d\u043e, \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0438\u043b\u044c\u043d\u043e \u0432\u0430\u0436\u043d\u043e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u044f \u0447\u0430\u0441\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u043d\u043e\u0447\u044c \u0438\u043b\u0438 \u0443\u0442\u0440\u043e\u043c \u043f\u0435\u0440\u0435\u0434 \u0443\u0445\u043e\u0434\u043e\u043c \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u2014 \u0438 \u043d\u0435 \u0432\u0430\u0436\u043d\u043e, \u0443\u0447\u0438\u0442\u0441\u044f \u0441\u0435\u0442\u043a\u0430 3 \u0447\u0430\u0441\u0430 \u0438\u043b\u0438 8 \u2014 \u044f \u0434\u043e\u0431\u0435\u0440\u0443\u0441\u044c \u0434\u043e \u043d\u0435\u0451 \u0435\u0449\u0451 \u043f\u043e\u0437\u0436\u0435.<\/p>\n<p>  <\/p>\n<p>\u042f \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b pytorch \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 cuda \u043d\u0430 linux mint. \u041f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430 ubuntu \u0431\u044b\u043b\u043e \u0431\u044b \u043f\u0440\u043e\u0449\u0435. \u041f\u043e \u0444\u0430\u043a\u0442\u0443 linux mint 21.1 \u0431\u0430\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430 ubuntu 22.04. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 <code>\/etc\/apt\/sources.list<\/code> \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0432 \u0444\u0430\u0439\u043b\u0435 <code>cuda-ubuntu2204-x86_64.list<\/code> \u0442\u0430\u0449\u0438\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u044e \u0434\u043b\u044f \u0443\u0431\u0443\u043d\u0442\u044b.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">deb [signed-by=\/usr\/share\/keyrings\/cuda-archive-keyring.gpg] https:\/\/developer.download.nvidia.com\/compute\/cuda\/repos\/ubuntu2204\/x86_64\/ \/<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u0434\u043e\u043a\u0435\u0440\u043e\u043c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e &#171;jammy stable&#187;, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441\u0430\u043c\u043e \u0441\u043e\u0431\u043e\u0439 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u0443\u0431\u0443\u043d\u0442\u0435. \u041d\u0435 \u0437\u043d\u0430\u044e \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435.<\/p>\n<p>  <\/p>\n<p>\u0415\u0449\u0451 \u044f \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0434\u043e\u043a\u0435\u0440: <a href=\"https:\/\/catalog.ngc.nvidia.com\/orgs\/nvidia\/containers\/pytorch\" rel=\"nofollow noopener noreferrer\">https:\/\/catalog.ngc.nvidia.com\/orgs\/nvidia\/containers\/pytorch<\/a><br \/>  \u0427\u0442\u043e \u043c\u043d\u0435 \u043d\u0435 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u043e\u0441\u044c \u2014 \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0434\u043e\u043a\u0435\u0440 \u0438 \u0438\u043c\u0435\u0442\u044c \u0432\u0441\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0433\u043e. \u0412 \u0445\u043e\u0441\u0442\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0432\u0434\u043e\u0431\u0430\u0432\u043e\u043a \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0441\u0442\u0430\u0432\u0438\u0442\u044c nvidia gpu drivers \u0438 nvidia container toolkit. \u0410 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 nvidia\u2026 \u041a\u043e\u0440\u043e\u0447\u0435, \u0434\u043e\u043a\u0435\u0440 \u043d\u0435 \u0441\u043f\u0430\u0441\u0430\u0435\u0442 \u043e\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u0432.<br \/>  \u0412 \u0438\u0442\u043e\u0433\u0435 \u0443 \u043c\u0435\u043d\u044f torch \u0441 cuda \u0432 \u0434\u043e\u043a\u0435\u0440\u0435 \u0442\u0430\u043a \u0438 \u043d\u0435 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043d\u0430 \u0445\u043e\u0441\u0442\u0435, \u0442\u0430\u043a \u0447\u0442\u043e \u044f \u043d\u0430 \u043d\u0435\u0433\u043e \u0437\u0430\u0431\u0438\u043b.<\/p>\n<p>  <\/p>\n<h2 id=\"pochemu-ne-ispolzuyu-google-colab\">\u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e google colab<\/h2>\n<p>  <\/p>\n<p>\u0412 Google colab \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a nvidida T4. \u041e\u043d\u0430 \u0438\u043c\u0435\u0435\u0442 16 \u0413\u0431 \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0430 \u0431\u043e\u0440\u0442\u0443 \u0438 \u0432\u0440\u043e\u0434\u0435 \u043a\u0430\u043a \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u0430 \u0434\u043b\u044f \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u043c\u043e\u0435\u0439 nvidia 2060 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0432 2-3 \u0440\u0430\u0437\u0430. \u0410 \u0435\u0449\u0451 \u0443 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0433\u043e google colab \u0435\u0441\u0442\u044c \u043b\u0438\u043c\u0438\u0442\u044b: 40 \u043c\u0438\u043d\u0443\u0442 \u043d\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u0438 12 \u0447\u0430\u0441\u043e\u0432 \u043e\u0431\u0449\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043d\u043e\u0443\u0442\u0431\u0443\u043a \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>  <\/p>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435 \u044f \u0432\u043e\u043e\u0431\u0449\u0435 \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043e\u0442 colab: \u0434\u043e\u043b\u0433\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u043d\u0430 \u043d\u0451\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e, \u0430 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0435 \u044f \u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0443\u0449\u0443. \u0412\u0434\u043e\u0431\u0430\u0432\u043e\u043a &#171;\u0434\u043e\u043b\u0433\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438&#187; \u0434\u043b\u044f \u043a\u043e\u043b\u043b\u0430\u0431\u0430 \u2014 \u044d\u0442\u043e 40 \u043c\u0438\u043d\u0443\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u0435 \u0442\u0430\u043a\u0438\u0435 \u0434\u043e\u043b\u0433\u0438\u0435 15-20.<\/p>\n<p>  <\/p>\n<h2 id=\"zagruzka-kartinok-s-pomoschyu-pillow\">\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Pillow<\/h2>\n<p>  <\/p>\n<p>\u0412\u043e\u043e\u0431\u0449\u0435 \u0435\u0441\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b \u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043d\u043e \u043c\u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u0430\u043c\u043e\u043c\u0443, \u0447\u0442\u043e\u0431\u044b \u0438\u043c\u0435\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u043d\u0430\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0448\u0430\u0433\u043e\u043c.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b Pillow, \u043d\u043e \u0442\u0430\u043c \u0435\u0441\u0442\u044c \u043d\u044e\u0430\u043d\u0441\u044b:<\/p>\n<p>  <\/p>\n<ol>\n<li>\u0424\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u0441 \u043f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u043a \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0442\u0430\u043a \u0436\u0435, \u043d\u043e \u0432 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u0435\u0433, \u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u043f\u043e\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0443\u0436\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043e\u0439 \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430<\/li>\n<li>\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043d\u0435 \u0432 RGB \u0444\u043e\u0440\u043c\u0430\u0442\u0435, \u0430 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 RGBA, \u0447\u0451\u0440\u043d\u043e-\u0431\u0435\u043b\u044b\u0435 \u0438\u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 YUV<\/li>\n<li>\u0411\u044b\u0432\u0430\u044e\u0442 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0449\u0438\u043a\u043e\u043c \u0444\u043e\u0442\u043e\u043a, \u043d\u043e Pillow \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0438\u0445 \u0438\u0441\u043f\u043e\u0440\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u0438 \u043a\u0438\u0434\u0430\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/li>\n<li>\u041c\u0430\u0441\u0441\u0438\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0443\u0434\u0435\u0442 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 uint8 \u0432 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0435 0-255, \u0430 \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0445\u043e\u0447\u0435\u0442\u0441\u044f float \u0432 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0435 0.0-1.0. \u0412\u043e\u043e\u0431\u0449\u0435 \u0433\u043e\u0432\u043e\u0440\u044f \u0432 png \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0438 \u0437\u0430\u0434\u0430\u0442\u044c \u0433\u043b\u0443\u0431\u0438\u043d\u0443 \u043a\u0430\u043d\u0430\u043b\u0430 float 16 \u0431\u0438\u0442, \u043d\u043e \u043c\u043d\u0435 \u0442\u0430\u043a\u0438\u0445 \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u043b\u043e\u0441\u044c.<\/li>\n<li>\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c <code>(height, width, 3)<\/code>, \u043d\u043e \u0432 pytorch \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441 \u043a\u0430\u043d\u0430\u043b\u0430\u043c\u0438 \u0432\u043d\u0430\u0447\u0430\u043b\u0435: <code>(3, height, width)<\/code><\/li>\n<\/ol>\n<p>  <\/p>\n<p>\u0422\u0430\u043a \u0447\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043a\u043e\u0434 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u0435 \u0442\u0430\u043a\u043e\u0439 \u0443\u0436 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0439:<\/p>\n<p>  <\/p>\n<pre><code class=\"python\">def load_img(path: str, channels_first: bool = False) -> Optional[np.ndarray]:     try:         pil_image = PILImage.open(path)         pil_image = PIL.ImageOps.exif_transpose(pil_image)         pil_image = pil_image.convert('RGB')         np_array = np.asarray(pil_image)         np_array = np_array.astype(np.float32) \/ 255.0         if channels_first:             np_array = np.moveaxis(np_array, 2, 0)         return np_array     except Exception as e:         logging.error(f\"error {e} for {path}\")         return None<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0432 \u0442\u0435\u0433\u0438 \u0438 \u0432\u044b\u0442\u0430\u0449\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u0438\u043f\u0430 \u043c\u043e\u0434\u0435\u043b\u0438 \u043a\u0430\u043c\u0435\u0440\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u0434\u0435\u043b\u0430\u0435\u0442 4\u043a \u0441\u043d\u0438\u043c\u043a\u0438, \u043d\u043e \u043d\u0430 \u0438\u0445 \u0448\u0443\u043c\u043d\u043e\u0441\u0442\u044c \u0438 \u0448\u0430\u043a\u0430\u043b\u0438\u0441\u0442\u043e\u0441\u0442\u044c \u0431\u0435\u0437 \u0441\u043b\u0451\u0437 \u043d\u0435 \u0432\u0437\u0433\u043b\u044f\u043d\u0435\u0448\u044c. \u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u0438 \u0444\u043e\u0442\u043a\u0438 \u044f \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u043b \u0432 \u0434\u0432\u0430 \u0440\u0430\u0437\u0430. \u0412\u0441\u0451-\u0442\u0430\u043a\u0438 \u044f \u0445\u043e\u0447\u0443, \u0447\u0442\u043e\u0431\u044b \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0430 \u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u0434\u0435\u0442\u0430\u043b\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0430 \u043d\u0435 \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0434\u043e\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u0448\u0443\u043c \u043c\u0430\u0442\u0440\u0438\u0446\u044b.<\/p>\n<p>  <\/p>\n<pre><code class=\"python\">def image_get_model(image: PIL.Image) -> str:     model_tag = 0x0110     return image.getexif().get(model_tag)<\/code><\/pre>\n<p>  <\/p>\n<h2 id=\"umenshenie-kartinok-byvaet-raznym\">\u0423\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0431\u044b\u0432\u0430\u0435\u0442 \u0440\u0430\u0437\u043d\u044b\u043c<\/h2>\n<p>  <\/p>\n<p>\u041c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f, \u043d\u043e \u043e\u043f\u044f\u0442\u044c \u0436\u0435 \u0435\u0441\u0442\u044c \u043d\u044e\u0430\u043d\u0441\u044b.<\/p>\n<p>  <\/p>\n<p>\u0421\u0441\u044b\u043b\u043a\u0430 \u0441\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435\u043c \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0432 Pillow, OpenCV, Tensorflow \u0438 PyTorch: <a href=\"https:\/\/zuru.tech\/blog\/the-dangers-behind-image-resizing\" rel=\"nofollow noopener noreferrer\">https:\/\/zuru.tech\/blog\/the-dangers-behind-image-resizing<\/a><\/p>\n<p>  <\/p>\n<p>\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u0432\u044b\u0432\u043e\u0434 \u2014 \u044f \u043f\u043e-\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e Pillow. \u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e pyTorch \u0434\u043b\u044f \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044f \u0440\u043e\u0432\u043d\u043e \u0432 \u0434\u0432\u0430 \u0440\u0430\u0437\u0430.<br \/>  \u0423\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435 \u0432 Pillow \u043f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0431\u0438\u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u044e:<\/p>\n<p>  <\/p>\n<pre><code class=\"python\">pil_image.resize(new_size)<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u0432 pytorch:<\/p>\n<p>  <\/p>\n<pre><code class=\"python\">_, _, h, w = x.size() return F.interpolate(x, size=(h \/\/ factor, w \/\/ factor), mode='bilinear', antialias=True)<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0443 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u043e\u0437\u0440\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u043c \u0446\u0432\u0435\u0442\u043e\u0432\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435, \u0430 \u043d\u0435 \u0432 sRGB.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0438 \u044d\u0442\u043e \u0432\u0441\u0451 \u0432\u0430\u0436\u043d\u043e. \u0415\u0441\u043b\u0438 \u044f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0440\u0438\u0432\u043e\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438, \u0442\u043e \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0430 \u0432\u044b\u0443\u0447\u0438\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u0434 \u043d\u0435\u0433\u043e. \u0418, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0431\u0443\u0434\u0435\u0442 \u0445\u0443\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u0445.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u2014 (\u043c\u043e\u0433\u0443 \u043e\u0448\u0438\u0431\u0430\u0442\u044c\u0441\u044f) \u0434\u043b\u044f \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 sr-gan <a href=\"https:\/\/arxiv.org\/abs\/1609.04802\" rel=\"nofollow noopener noreferrer\">https:\/\/arxiv.org\/abs\/1609.04802<\/a> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0432 matlab \u0438 \u043e\u043d\u043e \u044f\u043a\u043e\u0431\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u0436\u0435 \u043a\u0430\u043a-\u0442\u043e \u043f\u043e-\u0441\u0432\u043e\u0435\u043c\u0443.<\/p>\n<p>  <\/p>\n<h2 id=\"pochemu-ya-vybral-razmer-kartinok-256h256\">\u041f\u043e\u0447\u0435\u043c\u0443 \u044f \u0432\u044b\u0431\u0440\u0430\u043b \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a 256\u0445256<\/h2>\n<p>  <\/p>\n<p>\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u0432\u0435\u0440\u0445\u0443: \u043d\u0430 \u043c\u043e\u0435\u0439 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0435 \u0441 8 \u0413\u0431 \u043f\u0430\u043c\u044f\u0442\u0438 \u0441 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e\u0439 \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u043e\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0431\u0430\u0442\u0447\u0430 \u0441 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u043c\u0438 \u0442\u0430\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u043b\u0441\u044f \u0434\u043e \u043e\u0434\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438. \u041d\u0430 \u0448\u0430\u0433\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432\u0441\u0435 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u0438 \u043f\u043e\u0442\u043e\u043c \u0441\u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u044b \u2014 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u043e.<\/p>\n<p>  <\/p>\n<p>\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u043d\u0438\u0437\u0443:<br \/>  \u042d\u0442\u043e \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430, \u0431\u043e\u043b\u044c\u0448\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u0430\u044f \u0441\u0435\u0442\u044c \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0442\u044c.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430: \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u0440\u043e sr-gan \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0431\u044b\u043b\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 96\u044596. \u041f\u043e\u0442\u043e\u043c \u0438\u0445 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u043b\u0438 \u0432 \u0447\u0435\u0442\u044b\u0440\u0435 \u0440\u0430\u0437\u0430 (\u0434\u043e 24\u044524) \u0438 \u043f\u043e\u0442\u043e\u043c \u0443\u0447\u0438\u043b\u0438 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u0443\u044e \u0441\u0435\u0442\u044c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u0438\u0445 \u043e\u0431\u0440\u0430\u0442\u043d\u043e.<\/p>\n<p>  <\/p>\n<p>\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u2014 \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043a\u0440\u043e\u0445\u043e\u0442\u043d\u044b\u0439 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u043a \u0432 24\u044524 \u043f\u0438\u043a\u0441\u0435\u043b\u044f \u0438 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u043d\u0435\u0433\u043e \u0447\u0442\u043e-\u0442\u043e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c. \u0421\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u043d\u0430 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c?<\/p>\n<p>  <\/p>\n<p>\u041f\u043e-\u0441\u0443\u0442\u0438, \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442 \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u0438 \u2014 \u0443 \u043d\u0438\u0445 \u0431\u0443\u0434\u0435\u0442 \u0440\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u043e\u043a\u0440\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u044c \u0432 \u0446\u0435\u043b\u044b\u0439 \u0434\u0435\u0441\u044f\u0442\u043e\u043a \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439. \u042f \u0441\u0447\u0438\u0442\u0430\u044e, \u0447\u0442\u043e \u044d\u0442\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u043c\u0430\u043b\u043e. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0430 \u0440\u044f\u0434\u043e\u043c \u0441 \u043a\u0440\u0430\u044f\u043c\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0438 \u0442\u0430\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0438\u0433\u0440\u0430\u0442\u044c \u0432 \u0443\u0433\u0430\u0434\u0430\u0439\u043a\u0443.<\/p>\n<p>  <\/p>\n<p>\u042f \u0445\u043e\u0447\u0443, \u0447\u0442\u043e\u0431\u044b \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0430 \u043f\u0440\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0438 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u043b\u0430 \u0447\u0451\u0442\u043a\u0438\u0435 \u043a\u0440\u0430\u044f, \u0430 \u0434\u0435\u043b\u0430\u043b\u0430 \u0447\u0442\u043e-\u0442\u043e \u043e\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e\u0435. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u044f \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0438 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u0432 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043f\u043e\u043c\u0435\u0449\u0430\u043b\u0438\u0441\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u2014 \u043b\u0438\u0446\u0430 \u043b\u044e\u0434\u0435\u0439, \u0434\u0435\u0440\u0435\u0432\u044c\u044f, \u0441\u0442\u043e\u043b\u0431\u044b \u0438 \u0442.\u043f.<\/p>\n<p>  <\/p>\n<p>\u0422\u043e\u0433\u0434\u0430 \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0430 \u0441\u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0438\u0442\u044c \u0432\u043e\u043b\u043e\u0441\u044b \u043d\u0430 \u0449\u0435\u043a\u0435 \u043e\u0442 \u043f\u0440\u043e\u0432\u043e\u0434\u043e\u0432 \u043d\u0430 \u0444\u043e\u043d\u0435 \u0437\u0430\u043a\u0430\u0442\u043d\u043e\u0433\u043e \u043d\u0435\u0431\u0430 \u0438 \u0434\u043e\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443.<\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u044f \u0431\u0435\u0440\u0443 \u043e\u0431\u0440\u0430\u0437\u0446\u044b \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 256\u0445256 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439, \u0442\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u043d\u044b\u0439 \u0432 \u0447\u0435\u0442\u044b\u0440\u0435 \u0440\u0430\u0437\u0430 \u043e\u0431\u0440\u0430\u0437\u0435\u0446 \u043d\u0435 \u0442\u0430\u043a\u043e\u0439 \u0443\u0436 \u0438 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u2014 64\u044564 \u043f\u0438\u043a\u0441\u043b\u0435\u044f. \u041d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u043c\u0430\u043b\u043e, \u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u044f \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u044e.<\/p>\n<p>  <\/p>\n<p>\u042f \u0443\u0434\u0438\u0432\u043b\u0451\u043d, \u043d\u043e \u0432 \u0441\u0442\u0430\u0442\u044c\u044f\u0445 \u043f\u0440\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043e\u0447\u0435\u043d\u044c \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0435 \u043e\u0431\u0440\u0430\u0437\u0446\u044b. \u0417\u0430\u0447\u0435\u043c, \u043f\u043e\u0447\u0435\u043c\u0443 \u2014 \u043d\u0435 \u0437\u043d\u0430\u044e.<\/p>\n<p>  <\/p>\n<h2 id=\"malenkiy-dataset-dlya-proverki-idey\">\u041c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0438\u0434\u0435\u0439<\/h2>\n<p>  <\/p>\n<p>\u0412\u043d\u0430\u0447\u0430\u043b\u0435 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b <a href=\"https:\/\/pytorch.org\/vision\/main\/generated\/torchvision.datasets.Flowers102.html\" rel=\"nofollow noopener noreferrer\">\u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u0441 \u0446\u0432\u0435\u0442\u0430\u043c\u0438<\/a>.<\/p>\n<p>  <\/p>\n<p>\u0423\u043c\u0435\u043d\u044c\u0448\u0438\u043b \u0438 \u043a\u0440\u043e\u043f\u043d\u0443\u043b \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438, \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b \u0432 \u0432\u0438\u0434\u0435 png \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a 256\u0445256 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439. \u041f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c 10\u043a \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432.<\/p>\n<p>  <\/p>\n<p>\u042f \u0431\u0440\u0430\u043b \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u0441\u0435\u0442\u043a\u0443, \u0443\u0447\u0438\u043b \u0435\u0451 \u043d\u0430 \u0446\u0432\u0435\u0442\u0430\u0445. \u0412\u0441\u0451 \u0431\u044b\u043b\u043e \u0431\u044b\u0441\u0442\u0440\u043e. \u0421\u0435\u0442\u043a\u0435 \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0449\u0435 \u0443\u0447\u0438\u0442\u044c\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u0430 \u0432\u0438\u0434\u0435\u043b\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0446\u0432\u0435\u0442\u044b. \u042f \u043d\u0430 \u044d\u0442\u0438\u0445 \u0441\u0430\u043c\u0438\u0445 \u0446\u0432\u0435\u0442\u0430\u0445 &#171;\u043d\u0430 \u0433\u043b\u0430\u0437&#187; \u0438\u043b\u0438 \u043f\u043e \u043c\u0435\u0442\u0440\u0438\u043a\u0430\u043c \u043c\u043e\u0433 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0434\u0430\u0447\u043d\u043e \u0442\u043e \u0438\u043b\u0438 \u0438\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435.<\/p>\n<p>  <\/p>\n<p>\u042d\u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434 \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u043b \u043c\u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<br \/>  \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0437\u0430\u043d\u0438\u043c\u0430\u043b \u043e\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043c\u0438\u043d\u0443\u0442 \u0434\u043e \u0447\u0430\u0441\u0430. \u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u0435\u0441\u043b\u0438 \u043d\u0435\u0442 GPU \u0441 cuda, \u0441 \u0442\u0430\u043a\u0438\u043c \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043d\u0430 CPU. \u041d\u043e \u0434\u0430\u043b\u044c\u0448\u0435 \u0431\u0443\u0434\u0435\u0442 \u0445\u0443\u0436\u0435.<\/p>\n<p>  <\/p>\n<p>\u042f \u043d\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u043b \u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u043d\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435\/\u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044e. \u041d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0435 \u0441\u0435\u0442\u043a\u0438 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e \u0441\u043b\u0430\u0431\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0438 \u0431\u043e\u0440\u043e\u0442\u044c\u0441\u044f \u0441 \u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u043d\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430.<\/p>\n<p>  <\/p>\n<h2 id=\"podgotovka-realnogo-dataseta\">\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430<\/h2>\n<p>  <\/p>\n<p>\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0435\u0441\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 1500\u04452000 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439. \u042f \u0438\u0437 \u043d\u0435\u0451 \u043c\u043e\u0433\u0443 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u043e\u0431\u0440\u0430\u0437\u0446\u043e\u0432:<\/p>\n<p>  <\/p>\n<ol>\n<li>\u041c\u043e\u0436\u043d\u043e \u0432\u044b\u0440\u0435\u0437\u0430\u0442\u044c \u043a\u0443\u0441\u043e\u0447\u043a\u0438 256\u0445256 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0445 \u043c\u0435\u0441\u0442\u0430\u0445.<\/li>\n<li>\u041c\u043e\u0436\u043d\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0432 2-4-8-\u2026 \u0440\u0430\u0437 \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u043a\u0443\u0441\u043e\u0447\u043a\u0438 \u0438\u0437 \u043d\u0435\u0451.<\/li>\n<\/ol>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0438\u0437 \u043e\u0434\u043d\u043e\u0439 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u043e\u0431\u0440\u0430\u0437\u0446\u043e\u0432 \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f.<br \/>  \u0423 \u043c\u0435\u043d\u044f \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432\u0441\u0435 \u0444\u043e\u0442\u043a\u0438 \u0441 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043e\u0432 \u0438 \u0444\u043e\u0442\u043e\u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043e\u0432 \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0434\u0435\u0441\u044f\u0442\u043e\u043a \u043b\u0435\u0442 \u2014 \u0443\u0447\u0438\u0442\u044c \u0435\u0441\u0442\u044c \u043d\u0430 \u0447\u0451\u043c. \u041d\u0435 \u0437\u043d\u0430\u044e \u043a\u0430\u043a \u0442\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0440\u0430\u0437 \u0438\u043b\u0438 \u0434\u0432\u0430 \u0432 \u0433\u043e\u0434 \u043f\u0435\u0440\u0435\u043a\u0438\u0434\u044b\u0432\u0430\u044e \u0432\u0441\u0435 \u0444\u043e\u0442\u043a\u0438 \u043d\u0430 \u043a\u043e\u043c\u043f, \u0430 \u0443\u0436\u0435 \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0438\u0445 \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435 \u043e\u043f\u044f\u0442\u044c \u0446\u0435\u043b\u0430\u044f \u043a\u0443\u0447\u0430.<\/p>\n<p>  <\/p>\n<p>\u0412 \u0441\u0443\u043c\u043c\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e 400 000 \u043a\u0443\u0441\u043e\u0447\u043a\u043e\u0432 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u044b\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0432 32 \u0413\u0431. \u042f \u0438\u0445 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u043b \u0432 png, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0431\u044b\u043b\u043e \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432.<br \/>  \u0428\u0430\u043a\u0430\u043b\u0438\u0441\u0442\u044b\u0435 jpeg \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u0441 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043e\u0432 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u043b \u0440\u0430\u0437\u0430 \u0432 2, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0440\u0430\u0442\u044c \u0448\u0443\u043c \u0438 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b \u0441\u0436\u0430\u0442\u0438\u044f.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430\u0440\u0435\u0437\u043a\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0438 \u0442.\u043f. \u0441\u0434\u0435\u043b\u0430\u043b \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u2014 \u043e\u043d \u0437\u0430\u043d\u044f\u043b \u043e\u043a\u043e\u043b\u043e \u0432\u043e\u0441\u044c\u043c\u0438 \u0447\u0430\u0441\u043e\u0432 \u043e\u0434\u043d\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043d\u0430 \u043f\u0438\u0442\u043e\u043d\u0435.<br \/>  \u041f\u043e\u043d\u0430\u0447\u0430\u043b\u0443 \u0443 \u043c\u0435\u043d\u044f \u0431\u044b\u043b\u0438 \u043c\u044b\u0441\u043b\u0438, \u0447\u0442\u043e \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043a\u0430\u043a-\u0442\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0440\u0430\u0441\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0442\u044c \u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0441 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438, \u043d\u043e \u0432 \u0438\u0442\u043e\u0433\u0435 \u044f \u0437\u0430\u0431\u0438\u043b \u0438 \u043a\u0430\u043a \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u043b:<\/p>\n<p>  <\/p>\n<ol>\n<li>\u042f \u0443\u0447\u0438\u043b \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0435 \u0441\u0435\u0442\u0438 \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437, \u0430 \u0441\u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0430\u0436\u0434\u044b.<\/li>\n<li>\u041b\u0435\u0433\u043a\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0441 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0432\u0441\u0451 \u0432\u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u2014 \u044f \u043c\u043e\u0433\u0443 \u0433\u043b\u0430\u0437\u0430\u043c\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043b\u044e\u0431\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443.<\/li>\n<li>\u041f\u0440\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u043d\u0435 \u043d\u0430\u0434\u043e \u0437\u0430\u0431\u043e\u0442\u0438\u0442\u044c\u0441\u044f \u043e \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0435 \u0438\u0445 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u2014 \u0432\u0441\u0451 \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u043e.<\/li>\n<li>\u0415\u0441\u043b\u0438 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u0430\u044f \u0441\u0435\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f, \u0442\u043e \u0448\u0430\u0433\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0435\u043b\u0430\u044e\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e, \u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0443\u0437\u043a\u0438\u043c \u0433\u043e\u0440\u043b\u044b\u0448\u043a\u043e\u043c. \u041f\u0440\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0441 \u0434\u0438\u0441\u043a\u0430 \u0443\u0442\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u043b\u0430 95%.<\/li>\n<li>\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0441 \u0434\u0438\u0441\u043a\u0430 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u2014 \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0438\u0437 \u043e\u0434\u043d\u043e\u0439 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 (\u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0441\u0435\u0440\u0438\u0438 \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0439) \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u043b\u0430\u0441\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u0437 \u043c\u043d\u043e\u0433\u0438\u0445 \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u043f\u043e \u0441\u0442\u0438\u043b\u044e \u043a\u0443\u0441\u043e\u0447\u043a\u043e\u0432.<\/li>\n<li>\u0415\u0441\u043b\u0438 \u0431\u044b \u044f \u0443\u0447\u0438\u043b \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0443 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0441 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u0430\u043a\u0430\u044f-\u043d\u0438\u0431\u0443\u0434\u044c \u043e\u0448\u0438\u0431\u043a\u0430 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0433\u043b\u0430 \u0431\u044b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435.<\/li>\n<\/ol>\n<p>  <\/p>\n<p>\u041c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0447\u0435\u0442\u044b\u0440\u0435\u0441\u0442\u0430 \u0442\u044b\u0441\u044f\u0447 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u043e\u0434\u043d\u0443 \u043f\u0430\u043f\u043a\u0443 \u2014 \u043d\u0435 \u0441\u0430\u043c\u0430\u044f \u043b\u0443\u0447\u0448\u0430\u044f \u0438\u0434\u0435\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 <code>ImageSaver<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u043f\u043e \u0442\u044b\u0441\u044f\u0447\u0435 \u0448\u0442\u0443\u043a \u0432 \u043f\u0430\u043f\u043a\u0443 \u0441 \u0438\u043c\u0435\u043d\u0430\u043c\u0438-\u043d\u043e\u043c\u0435\u0440\u0430\u043c\u0438 \u0442\u0438\u043f\u0430 12\/12678.png, 12\/12679.png\u2026<br \/>  \u042d\u0442\u043e\u0442 \u043a\u043b\u0430\u0441\u0441 \u043f\u043e\u0442\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0433\u0434\u0435 \u043f\u0440\u0438\u0433\u043e\u0436\u0434\u0430\u043b\u0441\u044f.<\/p>\n<p>  <\/p>\n<h2 id=\"kastomnyy-dataset-dlya-pytorch\">\u041a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0439 \u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u0434\u043b\u044f pytorch<\/h2>\n<p>  <\/p>\n<p><a href=\"https:\/\/pytorch.org\/docs\/stable\/data.html\" rel=\"nofollow noopener noreferrer\">https:\/\/pytorch.org\/docs\/stable\/data.html<\/a><\/p>\n<p>  <\/p>\n<p>\u0412\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e: \u043c\u043e\u0436\u043d\u043e \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0442 <code>torch.utils.data.Dataset<\/code> \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u044b <code>__len__<\/code> \u0438 <code>__getitem__<\/code><\/p>\n<p>  <\/p>\n<p>\u042f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0445\u0440\u0430\u043d\u0438\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0443\u0442\u0435\u0439 \u043a \u0444\u0430\u0439\u043b\u0430\u043c \u0438 \u043e\u0442\u0434\u0430\u0451\u0442 numpy \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u0432 \u043d\u0443\u0436\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435<\/p>\n<p>  <\/p>\n<pre><code class=\"python\">class ImagesDataset(torch.utils.data.Dataset):     def __init__(self,                  images_paths: List[str],                  channels_order: str = 'hwc'):         assert channels_order in {'hwc', 'chw'}         super(ImagesDataset).__init__()         self.channels_order = channels_order         self.images_paths: List[str] = images_paths      def __getitem__(self, index) -> np.ndarray:         path = self.images_paths[index]         # \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0437\u0434\u0435\u0441\u044c      @staticmethod     def from_dirs_recursive(roots: List[str], shuffle_seed: Optional[int] = None, channels_order: str = 'hwc'):         result_set: Set[str] = set()          for root in roots:             for dir_path, dir_names, file_names in os.walk(root):                 for file_name in file_names:                     if is_image(file_name):                         result_set.add(f\"{dir_path}\/{file_name}\")          results = list(result_set)         results.sort()         if shuffle_seed is not None:             Random(shuffle_seed).shuffle(results)          return ImagesDataset(results, channels_order)<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u0442\u043e\u043c \u0441\u0432\u043e\u0439 \u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 <code>DataLoader<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043c\u0435\u0435\u0442 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u0431\u0430\u0442\u0447\u0438 \u0438 \u0442.\u043f.<\/p>\n<p>  <\/p>\n<pre><code class=\"python\">dataset = pyml.ImagesDataset.from_dirs_recursive(roots=[\"datasets\/flowers102processed\"], channels_order='chw') data_loader = DataLoader(dataset, batch_size=batch_size, shuffle=True, pin_memory=True, pin_memory_device='cuda')<\/code><\/pre>\n<p>  <\/p>\n<h2 id=\"samaya-prostaya-neyronka\">\u0421\u0430\u043c\u0430\u044f \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0430<\/h2>\n<p>  <\/p>\n<p>\u0421\u0442\u0430\u0442\u044c\u044f \u0434\u043b\u044f \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u0435\u043d\u0438\u044f: Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network <a href=\"https:\/\/arxiv.org\/abs\/1609.05158\" rel=\"nofollow noopener noreferrer\">https:\/\/arxiv.org\/abs\/1609.05158<\/a><\/p>\n<p>  <\/p>\n<p>\u041d\u0435\u0439\u0440\u043e\u043d\u043d\u0430\u044f \u0441\u0435\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0442\u0440\u0451\u0445 \u0441\u0432\u0451\u0440\u0442\u043e\u0447\u043d\u044b\u0445 \u0441\u043b\u043e\u0451\u0432. \u0412 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0435\u0441\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b \u2014 \u044f \u0438\u0445 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b, \u043d\u043e \u043d\u0435 \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0438\u043b\u0441\u044f:<\/p>\n<p>  <\/p>\n<p><strong>\u0412\u044b\u0431\u043e\u0440 \u0444\u0443\u043d\u043a\u0438\u0438 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438<\/strong><br \/>  \u0412 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f tanh. \u042d\u0442\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u0435\u0449\u0451 \u0432 2012 \u0433\u043e\u0434\u0443 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c AlexNet \u0438 \u0432 \u043d\u0435\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f relu. \u0410 \u043a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432 \u043d\u0435\u0439 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0441 ReLU \u043d\u0435\u0442 \u0437\u0430\u0442\u0443\u0445\u0430\u043d\u0438\u044f \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043e\u0432 \u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 5-7 \u0440\u0430\u0437 \u0431\u044b\u0441\u0442\u0440\u0435\u0435. <a href=\"https:\/\/en.wikipedia.org\/wiki\/AlexNet\" rel=\"nofollow noopener noreferrer\">https:\/\/en.wikipedia.org\/wiki\/AlexNet<\/a><br \/>  \u0418\u0437-\u0437\u0430 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 tanh \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0441\u043b\u043e\u0436\u043d\u043e \u0432\u044b\u0434\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0431\u043b\u0438\u0437\u043a\u0438\u0435 \u043a \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c -1 \u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c 1 \u2014 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0438 \u043e\u0447\u0435\u043d\u044c \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0435 \u0447\u0438\u0441\u043b\u0430. \u042f \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0443\u0447\u0438\u0442\u044c \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0443 \u0438 \u043f\u0440\u044f\u043c \u0433\u043b\u0430\u0437\u0430\u043c\u0438 \u0431\u044b\u043b\u043e \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u044f\u0440\u043a\u0438\u0435 \u0438 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0442\u0451\u043c\u043d\u044b\u0435 \u043c\u0435\u0441\u0442\u0430 \u043d\u0430 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442\u0441\u044f &#171;\u0432\u044b\u0433\u043e\u0440\u0435\u0432\u0448\u0438\u043c\u0438&#187;<\/p>\n<p>  <\/p>\n<p>\u042f \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043b \u043d\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 sr-gan \u0438 \u0442.\u043f. \u0438 \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c. \u0414\u0430, \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0430 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u0442 \u043c\u0438\u043d\u0443\u0441 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0441\u0442\u0438 \u0434\u043e \u043f\u043b\u044e\u0441 \u044e\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0441\u0442\u0438. \u0414\u0430, \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0443\u0447\u0438\u0442\u044c \u043f\u043e\u0434 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0432 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0435 \u043e\u0442 0 \u0434\u043e 1. \u0418 \u0434\u0430, \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<p>  <\/p>\n<p>\u0418\u043d\u043e\u0433\u0434\u0430 \u0432\u044b\u0445\u043e\u0434\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0432\u043d\u0435 \u044d\u0442\u043e\u0433\u043e \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430, \u043d\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043a\u0440\u0438\u043c\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e.<\/p>\n<p>  <\/p>\n<p><strong>\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f<\/strong><\/p>\n<p>  <\/p>\n<p>\u0412 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0441\u0430\u043c\u044b\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0441\u043b\u043e\u0439 \u0443\u0447\u0438\u043b\u0438 \u0441 learning rate, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u0435\u043d\u044c\u0448\u0435 \u0432 10 \u0440\u0430\u0437.<br \/>  \u041f\u0440\u0438\u043c\u0435\u0440 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432 pytorch:<\/p>\n<p>  <\/p>\n<pre><code class=\"python\">generator_optimizer = torch.optim.Adam([     {'params': self.generator.other_layers.parameters()},     {'params': self.generator.pixel_shuffle.parameters(), 'lr': lr * 0.1} ], lr=lr)<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043c\u0435\u043d\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u043d\u0430 relu \u044f \u0441\u0440\u0430\u0432\u043d\u0438\u043b \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0438 \u0432\u044b\u044f\u0441\u043d\u0438\u043b, \u0447\u0442\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d learning rate \u043d\u0430 \u0432\u0441\u044e \u043c\u043e\u0434\u0435\u043b\u044c.<br \/>  \u0418 \u044d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u043e, \u043a\u043e\u0434 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u043b \u0447\u0443\u0442\u043e\u0447\u043a\u0443 \u043f\u0440\u043e\u0449\u0435.<\/p>\n<p>  <\/p>\n<pre><code class=\"python\">class GeneratorESPCN(nn.Module):     def __init__(self, channels: int, upscale: int):         super(GeneratorESPCN, self).__init__()          self.layers = nn.Sequential(             nn.Conv2d(3, channels, kernel_size=5, padding='same'),             nn.LeakyReLU(0.1),             nn.Conv2d(channels, channels, kernel_size=3, padding='same'),             nn.LeakyReLU(0.1),             nn.Conv2d(channels, 3 * upscale ** 2, kernel_size=3, padding='same'),         )      def forward(self, x: torch.Tensor):         return self.layers(x)<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u0442\u0430\u043a\u0430\u044f \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0430 \u0443\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<br \/>  \u0412 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u2014 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u043b\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u043b\u0438 \u0432 \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0443, \u043e\u043d\u0430 \u0435\u0451 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u043b\u0430 \u043e\u0431\u0440\u0430\u0442\u043d\u043e. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 mse loss \u043c\u0435\u0436\u0434\u0443 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u043e\u0439 \u0438 \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0438.<\/p>\n<p>  <\/p>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0435 \u0442\u043e \u0447\u0442\u043e\u0431\u044b \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u043b\u0441\u044f \u043e\u0442 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u0438. \u042d\u0442\u043e \u0434\u0430\u0436\u0435 \u043d\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u0441\u0435\u0442\u044c. \u0417\u0430\u0442\u043e \u043e\u043d\u0430 \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e \u0443\u0447\u0438\u0442\u0441\u044f.<\/p>\n<p>  <\/p>\n<p>\u042d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0435 \u0431\u0430\u0437\u043e\u0432\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u044f \u043f\u043e\u0442\u043e\u043c \u0431\u0443\u0434\u0443 \u0443\u043b\u0443\u0447\u0448\u0430\u0442\u044c. \u0418 \u0432 \u043a\u043e\u043d\u0446\u0435, \u043a\u0430\u043a \u0432 \u0441\u043a\u0430\u0437\u043a\u0435 \u043f\u0440\u043e \u043a\u0430\u0448\u0443 \u0438\u0437 \u0442\u043e\u043f\u043e\u0440\u0430, \u0437\u0430\u043c\u0435\u043d\u044e \u044d\u0442\u0443 \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0443 \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0442\u044f\u0436\u0451\u043b\u0443\u044e.<\/p>\n<p>  <\/p>\n<p>\u0412 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0435 \u0431\u044b\u043b\u043e 64 \u043a\u0430\u043d\u0430\u043b\u0430, \u044f \u043f\u0435\u0440\u0435\u0448\u0451\u043b \u043a 128 \u2014 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0441\u0435\u0442\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u0432\u0435\u0441\u0438\u0442 \u043c\u0430\u043b\u043e.<\/p>\n<p>  <\/p>\n<p>\u041c\u043e\u0439 jupyter notebook, \u0432 \u043a\u043e\u043d\u0446\u0435 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a: <a href=\"https:\/\/github.com\/Kright\/mySmallProjects\/blob\/master\/2023\/ml_experiments\/superresolution\/espcn.ipynb\" rel=\"nofollow noopener noreferrer\">https:\/\/github.com\/Kright\/mySmallProjects\/blob\/master\/2023\/ml_experiments\/superresolution\/espcn.ipynb<\/a><\/p>\n<p>  <\/p>\n<h2 id=\"learning-rate-loss-i-batch-size\">learning rate, loss \u0438 batch size<\/h2>\n<p>  <\/p>\n<p>\u041d\u0430\u0434\u043e \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u0440\u0430\u0437\u043c\u0435\u0440 \u0431\u0430\u0442\u0447\u0430 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0441\u0440\u0435\u0434\u043d\u0435\u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u0447\u043d\u043e\u0435 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0435.<br \/>  \u0415\u0441\u043b\u0438 \u0431\u0430\u0442\u0447 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0432 \u0434\u0432\u0430 \u0440\u0430\u0437\u0430 \u043c\u0435\u043d\u044c\u0448\u0435, \u0442\u043e \u0432\u043b\u0438\u044f\u043d\u0438\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043d\u0430 \u043e\u0431\u0449\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443 (\u0438 \u043d\u0430 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442) \u0431\u0443\u0434\u0435\u0442 \u0432 \u0434\u0432\u0430 \u0440\u0430\u0437\u0430 \u0431\u043e\u043b\u044c\u0448\u0435.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u0448\u0430 \u0431\u0430\u0437\u043e\u0432\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0438\u0437 \u0437\u0430\u043c\u0435\u0442\u043a\u0438 \u0432\u044b\u0448\u0435 \u0443\u0447\u0438\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e, \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043c\u0430\u043b\u043e \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u044f \u043f\u0440\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0440\u0430\u0437\u043c\u0435\u0440 \u0431\u0430\u0442\u0447\u0430 64.<\/p>\n<p>  <\/p>\n<p>\u0412 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0441\u0435\u0442\u0438 \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u0442\u044c\u0441\u044f, \u0441\u0435\u0442\u044c \u2014 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0435, \u0438 \u0440\u0430\u0437 \u0437\u0430 \u0440\u0430\u0437\u043e\u043c batch size \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0442\u044c<br \/>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0442\u044c learning_rate \u0432 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0436\u0435 \u0440\u0430\u0437.<\/p>\n<p>  <\/p>\n<h2 id=\"vgg-loss\">VGG loss<\/h2>\n<p>  <\/p>\n<p>\u041d\u0435 \u0432\u0441\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e \u0432\u0430\u0436\u043d\u044b. \u041a\u0430\u043a\u0438\u0435-\u0442\u043e \u043d\u0435\u0441\u0443\u0442 \u043a\u043b\u044e\u0447\u0435\u0432\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u0430\u043c\u0446\u0438\u044e, \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0444\u043e\u043d \u0438\u043b\u0438 \u0448\u0443\u043c.<\/p>\n<p>  <\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u0443\u0436\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u043d\u0443\u044e \u0441\u0435\u0442\u044c VGG, \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432 \u043d\u0435\u0451 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0435 \u0444\u0438\u0447\u0438 \u043e\u043d\u0430 \u0438\u0437\u0432\u043b\u0435\u0447\u0451\u0442. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0448\u0438\u0431\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u0431\u0440\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u0438\u043c\u0435\u043d\u043d\u043e \u0434\u043b\u044f \u044d\u0442\u0438\u0445 \u0444\u0438\u0447.<\/p>\n<p>  <\/p>\n<p>\u041d\u044e\u0430\u043d\u0441\u044b:<br \/>  \u041d\u0435 \u0437\u0430\u0431\u044b\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u0443 \u0441\u0435\u0442\u044c \u043d\u0430\u0434\u043e &#171;\u0437\u0430\u043c\u043e\u0440\u043e\u0437\u0438\u0442\u044c&#187; \u0438 \u043d\u0435 \u043e\u0431\u0443\u0447\u0430\u0442\u044c.<br \/>  \u0415\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0440\u0441\u0438\u0439 VGG. \u0412\u043e \u0438\u043c\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u044f \u0432\u0437\u044f\u043b \u0432\u0435\u0440\u0441\u0438\u044e \u0431\u0435\u0437 \u0431\u0430\u0442\u0447-\u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.<br \/>  \u0414\u043b\u044f \u0444\u0438\u0447 \u043b\u0443\u0447\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0434\u043e \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438, \u0430 \u043d\u0435 \u043f\u043e\u0441\u043b\u0435 (\u042d\u0442\u043e \u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u043f\u043e\u0441\u043b\u0435 relu \u0447\u0430\u0441\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0441\u0442\u0430\u043d\u0435\u0442 \u043d\u0443\u043b\u0435\u0432\u043e\u0439)<br \/>  \u041d\u0430 \u0432\u0445\u043e\u0434 vgg \u043f\u043e\u0434\u0430\u044e\u0442\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u043a\u0430\u043a\u0438\u043c\u0438-\u0442\u043e \u043d\u0443\u0436\u043d\u044b\u043c \u0441\u0440\u0435\u0434\u043d\u0438\u043c \u0438 \u0441\u0440\u0435\u0434\u043d\u0435\u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u0447\u043d\u044b\u043c \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0435\u043c. \u041d\u0430\u0434\u043e \u043d\u0435 \u0437\u0430\u0431\u044b\u0442\u044c \u0438\u0445 \u0443\u043a\u0430\u0437\u0430\u0442\u044c.<\/p>\n<p>  <\/p>\n<p>\u041c\u043e\u0439 \u043a\u043e\u0434 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0442\u0443\u0442:<br \/>  <a href=\"https:\/\/github.com\/Kright\/mySmallProjects\/blob\/master\/2023\/ml_experiments\/superresolution\/models\/features_vgg.py\" rel=\"nofollow noopener noreferrer\">https:\/\/github.com\/Kright\/mySmallProjects\/blob\/master\/2023\/ml_experiments\/superresolution\/models\/features_vgg.py<\/a><\/p>\n<p>  <\/p>\n<p>\u0432 pytroch \u0432\u0441\u0451 \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u043e, \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c:<\/p>\n<p>  <\/p>\n<pre><code class=\"python\">class FeaturesFromVGG16(nn.Module):     def __init__(self, layers_count: int = 30):         super(FeaturesFromVGG16, self).__init__()         vgg = torchvision.models.vgg16(weights=torchvision.models.VGG16_Weights.IMAGENET1K_V1)          features: nn.Sequential = vgg.features          self.normalize_input = torchvision.transforms.Normalize(mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225))         self.layers = nn.ParameterList([features[i] for i in range(layers_count)])         # freeze network         self.requires_grad_(False)      def forward(self, x: torch.Tensor) -> List[torch.Tensor]:         outputs = []          x = self.normalize_input(x)          for layer in self.layers:             x = layer(x)             if isinstance(layer, nn.Conv2d):                 outputs.append(x)          return outputs<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0431\u0435\u0440\u0451\u043c \u043f\u0435\u0432\u044b\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u043e\u0451\u0432 \u0438\u0437 VGG \u0438 \u0443\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0435\u043c \u0438\u0445 \u043a \u0441\u0435\u0431\u0435. <code>self.requires_grad_(False)<\/code> \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043d\u0430\u0448\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0438 \u043d\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0435\u0451 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<p>\u041c\u043e\u0434\u0435\u043b\u044c \u043e\u0442\u0434\u0430\u0451\u0442 \u043d\u0430\u0440\u0443\u0436\u0443 \u0432\u0441\u0435 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0432\u0451\u0440\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u044f.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0442\u043e\u043c \u043f\u0440\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0443\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c mse_loss \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0432\u044b\u0445\u043e\u0434\u043e\u0432:<\/p>\n<p>  <\/p>\n<pre><code class=\"python\">y_features = self.vgg(y) label_features = self.vgg(label)  results: List[torch.Tensor] = [] for y_f, label_f in zip(y_features, label_features):     results.append(self.mse_loss(y_f, label_f))  return sum(results) * self.weight<\/code><\/pre>\n<p>  <\/p>\n<p>\u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043d\u0435 \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u2014 \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u0441\u0440\u0435\u0434\u043d\u0435\u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u0447\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u043e\u0442 \u0441\u043b\u043e\u044f \u043a \u0441\u043b\u043e\u044e \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0432\u0441\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u0438 \u0431\u043e\u043b\u044c\u0448\u0435. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0443 \u043c\u0435\u043d\u044f \u0447\u0442\u043e-\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u0442\u043d\u043e.<br \/>  \u0418\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e, \u043d\u043e \u043d\u0430\u0432\u0435\u0440\u043d\u043e \u043d\u0430\u0434\u043e \u0434\u043e\u043c\u043d\u043e\u0436\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443 \u043d\u0430 \u0437\u0430\u0442\u0443\u0445\u0430\u0449\u0438\u0435 \u0432\u0435\u0441\u0430 \u0442\u0438\u043f\u0430 <code>1.0, 0.5, 0.25 ...<\/code> \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0438\u043d\u0430\u0447\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0441\u043b\u043e\u0439 \u0434\u0430\u0451\u0442 \u0441\u0430\u043c\u044b\u0439 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0438 \u0448\u0443\u043c\u043d\u044b\u0439 \u0432\u043a\u043b\u0430\u0434 \u0432 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u044b.<\/p>\n<p>  <\/p>\n<p>\u0412 \u0441\u0442\u0430\u0442\u044c\u0435 sr-gan \u0441\u043e\u0432\u0435\u0442\u043e\u0432\u0430\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0435\u0441 0.001, \u044f \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u0433\u043e \u0432\u0437\u044f\u043b 0.0001. \u041d\u043e \u0443 \u043c\u0435\u043d\u044f \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0441\u043b\u043e\u0435 vgg.<\/p>\n<p>  <\/p>\n<p>\u0412 \u0441\u0442\u0430\u0442\u044c\u0435 real-esr-gan \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0432\u0437\u044f\u043b\u0438 \u043f\u0435\u0440\u0432\u044b\u0435 \u043f\u044f\u0442\u044c \u0441\u0432\u0451\u0440\u0442\u043e\u043a \u043e\u0442 vgg19 \u0438 \u043e\u0448\u0438\u0431\u043a\u0443 \u043f\u043e\u0441\u043b\u0435 \u0441\u043b\u043e\u0451\u0432 \u0441\u0447\u0438\u0442\u0430\u043b\u0438 \u0441 \u0432\u0435\u0441\u0430\u043c\u0438 <code>0.1, 0.1, 1.0, 1.0, 1.0<\/code><\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0430\u044f \u0441\u0435\u0442\u043a\u0430 \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0437\u0430\u043c\u0435\u0442\u043a\u0438 \u0441 vgg loss \u0434\u0430\u0451\u0442 \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0431\u043e\u043b\u0435\u0435 \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.<br \/>  \u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0442\u0443\u0442: <a href=\"https:\/\/github.com\/Kright\/mySmallProjects\/blob\/master\/2023\/ml_experiments\/superresolution\/espcn_vgg_gan.ipynb\" rel=\"nofollow noopener noreferrer\">https:\/\/github.com\/Kright\/mySmallProjects\/blob\/master\/2023\/ml_experiments\/superresolution\/espcn_vgg_gan.ipynb<\/a><\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0441\u0435\u0442\u0435\u0439 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0432 \u0447\u0435\u0442\u044b\u0440\u0435 \u0440\u0430\u0437\u0430.<br \/>  VGG loss \u043c\u043e\u0436\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u0445 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u2014 \u043d\u043e \u0438 \u043d\u0430 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u043d\u044b\u0445 \u0432 \u0434\u0432\u0430 \u0440\u0430\u0437\u0430.<\/p>\n<p>  <\/p>\n<p>\u0423 \u043c\u0435\u043d\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u0442\u0430\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u0432 \u043f\u0430\u0440\u0443 \u0440\u0430\u0437 \u043c\u0435\u043d\u044c\u0448\u0435, \u0447\u0435\u043c vgg loss \u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u0435.<\/p>\n<p>  <\/p>\n<p>\u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u043e\u0431\u0435. \u0422\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0447\u0442\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u043d\u043e\u0435 \u0432 \u0434\u0432\u0430 \u0440\u0430\u0437\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u0435\u0442 \u0432 \u0447\u0435\u0442\u044b\u0440\u0435 \u0440\u0430\u0437\u0430 \u043c\u0435\u043d\u044c\u0448\u0443\u044e \u043f\u043b\u043e\u0449\u0430\u0434\u044c \u0438 \u043e\u0448\u0438\u0431\u043a\u0430 \u043d\u0430 \u043d\u0451\u043c \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>  <\/p>\n<h2 id=\"gan-discriminator\">GAN Discriminator<\/h2>\n<p>  <\/p>\n<p>\u0421 \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0430\u043c\u0438 \u0438\u0437 \u043e\u0434\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u044f \u0437\u043d\u0430\u043a\u043e\u043c \u0434\u0430\u0432\u043d\u043e, \u043d\u043e \u0443\u0447\u0438\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0441\u0435\u0442\u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0432\u043f\u0435\u0440\u0432\u044b\u0435. \u041c\u043e\u0433\u0443 \u0447\u0435\u0433\u043e-\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u0442\u044c \u0438\u043b\u0438 \u043e\u0448\u0438\u0431\u0430\u0442\u044c\u0441\u044f.<\/p>\n<p>  <\/p>\n<p>\u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044e\u0449\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0441\u0435\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c.<br \/>  \u0421\u0435\u0442\u044c, \u043f\u044b\u0442\u0430\u044e\u0449\u0430\u0441\u044f \u043e\u0442\u043b\u0438\u0447\u0438\u0442\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u043e\u0442 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u2014 \u0434\u0438\u0441\u043a\u0440\u0438\u043c\u0438\u043d\u0430\u0442\u043e\u0440\u043e\u043c.<\/p>\n<p>  <\/p>\n<p>\u042d\u0442\u0438 \u0434\u0432\u0435 \u0441\u0435\u0442\u0438 \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0440\u0435\u0432\u043d\u043e\u0432\u0430\u0442\u044c\u0441\u044f.<br \/>  \u0428\u0430\u0433 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0442\u0435\u043f\u0435\u0440\u044c \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 \u0434\u0432\u0443\u0445 \u0448\u0430\u0433\u043e\u0432 \u2014 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0438 \u0434\u0438\u0441\u043a\u0440\u0438\u043c\u0438\u043d\u0430\u0442\u043e\u0440\u0430.<\/p>\n<p>  <\/p>\n<p>\u041d\u0443\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0434\u0438\u0441\u043a\u0440\u0438\u043c\u0438\u043d\u0430\u0442\u043e\u0440 \u0434\u0430\u0432\u0430\u043b \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0443 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e\u0442 \u0436\u0435 \u0432 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043d\u0435\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u043c.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u044f \u0441\u0434\u0435\u043b\u0430\u043b \u0442\u0430\u043a \u2014 \u0434\u0438\u0441\u043a\u0440\u0438\u043c\u0438\u043d\u0430\u0442\u043e\u0440 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434 \u0434\u0430\u0451\u0442 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c &#171;\u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438&#187; \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0438\u043a\u0441\u0435\u043b\u044f.<br \/>  \u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430, \u043f\u0440\u0430\u0432\u0434\u0430, \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442\u0441\u044f \u0432 8 \u0440\u0430\u0437. 256 \/ 8 = 32. \u0418\u0442\u043e\u0433\u043e \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 32\u044532 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u2014 \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c\u0438.<\/p>\n<p>  <\/p>\n<p>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u043e\u0445\u043e\u0436\u0430 \u043d\u0430 VGG. \u041f\u0430\u0440\u0430 \u0441\u0432\u0451\u0440\u0442\u043e\u0447\u043d\u044b\u0445 \u0441\u043b\u043e\u0451\u0432 \u0438 \u043f\u043e\u0442\u043e\u043c \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435, \u0438 \u0442\u0430\u043a \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442\u0441\u044f \u0442\u0440\u0438 \u0440\u0430\u0437\u0430.<\/p>\n<p>  <\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b LeakyReLU \u0441 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u043c 0.1. \u0427\u0435\u0441\u0442\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u044f \u0432\u0435\u0437\u0434\u0435 \u043b\u044e\u0431\u043b\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438, \u043d\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0432 \u0434\u0438\u0441\u043a\u0440\u0438\u043c\u0438\u043d\u0430\u0442\u043e\u0440\u0435 \u043e\u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043d\u0443\u0436\u043d\u0430. \u0413\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u043e\u0439\u0442\u0438 \u0441\u043a\u0432\u043e\u0437\u044c \u0434\u0438\u0441\u043a\u0440\u0438\u043c\u0438\u043d\u0430\u0442\u043e\u0440 \u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0434\u043e\u043d\u0435\u0441\u0442\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0434\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430. \u0414\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u2014 \u044d\u0442\u043e \u043d\u0435 \u043f\u043e\u0432\u043e\u0434 \u0435\u0433\u043e \u043e\u0442\u0441\u0435\u043a\u0430\u0442\u044c.<\/p>\n<p>  <\/p>\n<p>\u0418\u043d\u0442\u0443\u0438\u0442\u0438\u0432\u043d\u043e \u043c\u043d\u0435 \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043e\u0431\u0443\u0447\u0438\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043d\u0430 mse loss, \u043f\u043e\u0442\u043e\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043e\u0431\u0443\u0447\u0438\u0442\u044c \u0434\u0438\u0441\u043a\u0440\u0438\u043c\u0438\u043d\u0430\u0442\u043e\u0440 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0430\u0445 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043c \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u0443\u0447\u0438\u0442\u044c \u0438\u0445 \u0432\u043c\u0435\u0441\u0442\u0435. \u0422\u0430\u043a \u0432\u043e\u0442 \u2014 \u044d\u0442\u043e \u0432\u0441\u0451 \u043b\u0438\u0448\u043d\u0438\u0435 \u0443\u0441\u043b\u043e\u0436\u043d\u0435\u043d\u0438\u044f. \u041c\u043e\u0436\u043d\u043e \u0431\u0440\u0430\u0442\u044c \u0438 \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u0443\u0447\u0438\u0442\u044c \u043e\u0431\u0435 \u0441\u0435\u0442\u043a\u0438 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0431\u0435\u0437 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u043f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u0439.<\/p>\n<p>  <\/p>\n<h2 id=\"batch-normalization\">Batch normalization<\/h2>\n<p>  <\/p>\n<p>\u042d\u0442\u0430 \u0448\u0442\u0443\u043a\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435. \u041d\u043e \u0435\u0441\u0442\u044c \u043d\u044e\u0430\u043d\u0441 \u2014 \u043e\u043d\u0430 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u0432\u044b\u0445\u043e\u0434\u044b \u0441\u043b\u043e\u044f \u043a \u0441\u0440\u0435\u0434\u043d\u0435\u043c\u0443 0 \u0438 \u0441\u0440\u0435\u0434\u043d\u0435\u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u0447\u043d\u043e\u043c\u0443 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u044e \u0432 1. \u0415\u0441\u043b\u0438 \u0431\u044b\u0442\u044c \u0442\u043e\u0447\u043d\u044b\u043c \u2014 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0441\u043a\u043e\u043b\u044c\u0437\u044f\u0449\u0435\u0435 \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u0432\u0445\u043e\u0434\u043e\u0432 \u0437\u0430 \u043c\u043d\u043e\u0433\u043e \u0448\u0430\u0433\u043e\u0432 \u0438 \u0432\u0445\u043e\u0434\u044b \u0434\u043e\u043c\u043d\u043e\u0436\u043d\u0430\u044e\u0442\u0441\u044f \u0438 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0441 \u043f\u043e\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u044b\u043c\u0438 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u0430\u043c\u0438. \u041e\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435 \u0432 \u0448\u0430\u0433\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440\u0430, \u0430 \u043f\u0440\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0441\u043b\u043e\u044f. \u042d\u0442\u043e \u043f\u0440\u0438\u0432\u043d\u043e\u0441\u0438\u0442 \u0441\u0432\u043e\u0438 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e \u0432 pytorch \u0443 \u043c\u043e\u0434\u0435\u043b\u0438 \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u0440\u0435\u0436\u0438\u043c\u0430 train \u0438 eval \u2014 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0441\u043b\u043e\u0438 &#171;\u0437\u0430\u043c\u043e\u0440\u043e\u0436\u0435\u043d\u044b&#187; \u0438 \u043d\u0435 \u043f\u044b\u0442\u0430\u044e\u0442\u0441\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435.<\/p>\n<p>  <\/p>\n<p>\u0412 \u0441\u0442\u0430\u0442\u044c\u0435 ESR-GAN \u0432 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0435 \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u043e\u0442 \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u0410\u0432\u0442\u043e\u0440\u044b \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044e\u0442, \u0447\u0442\u043e \u043d\u0430 \u043e\u0434\u043d\u043e\u0446\u0432\u0435\u0442\u043d\u043e\u043c \u0444\u043e\u043d\u0435 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u0430\u044f \u0441\u0435\u0442\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u043b\u0430 &#171;\u0432\u044b\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c&#187; \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438.<br \/>  \u042f \u043f\u0440\u0438\u043d\u044f\u043b \u044d\u0442\u043e \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u043d\u0430 \u0432\u0435\u0440\u0443 \u2014 \u043e\u043d\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0440\u0443\u043a\u0438 \u043d\u0435 \u0434\u043e\u0448\u043b\u0438. \u0412 \u0438\u0445 \u0441\u0442\u0430\u0442\u044c\u0435 \u0435\u0441\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0441 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0435\u0439. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0430\u0432\u0442\u043e\u0440\u0430\u043c\u0438 &#171;\u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b&#187; \u0441\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u0432\u0438\u0441\u044f\u0442 \u043e\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.<br \/>  \u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u2014 \u0431\u0435\u0437 \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0435\u0442\u044c \u043f\u0440\u043e\u0449\u0435 \u0438 \u043c\u0435\u043d\u044c\u0448\u0435 \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0439\u0442\u0438 &#171;\u043d\u0435 \u0442\u0430\u043a&#187;.<br \/>  \u0412 \u0434\u0438\u0441\u043a\u0440\u0438\u043c\u0438\u043d\u0430\u0442\u043e\u0440\u0435 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e BatchNorm2d, \u0447\u0442\u043e\u0431\u044b \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0443\u0447\u0438\u043b\u0441\u044f. \u041f\u043e-\u0445\u043e\u0440\u043e\u0448\u0435\u043c\u0443 \u044d\u0442\u043e \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0442\u043e\u0436\u0435 \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c.<\/p>\n<p>  <\/p>\n<h2 id=\"x4-vs-x2x2\">x4 vs x2x2<\/h2>\n<p>  <\/p>\n<p>\u041f\u043e \u0438\u0442\u043e\u0433\u0430\u043c \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0439 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0434\u043b\u044f \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0432 4 \u0440\u0430\u0437\u0430 \u043b\u0443\u0447\u0448\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0432\u0430 \u0448\u0430\u0433\u0430 \u0441 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0432 2 \u0440\u0430\u0437\u0430 \u0438 \u0441 \u043f\u0430\u0440\u043e\u0439-\u0442\u0440\u043e\u0439\u043a\u043e\u0439 \u0441\u0432\u0451\u0440\u0442\u043e\u0447\u043d\u044b\u0445 \u0441\u043b\u043e\u0451\u0432 \u043c\u0435\u0436\u0434\u0443 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f\u043c\u0438.<br \/>  \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043f\u0430\u0440\u0430 \u0441\u0432\u0451\u0440\u0442\u043e\u0447\u043d\u044b\u0445 \u0441\u043b\u043e\u0451\u0432 \u043f\u043e\u0441\u043b\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u0442\u043e\u0436\u0435 \u0443\u043b\u0443\u0447\u0448\u0430\u044e\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.<\/p>\n<p>  <\/p>\n<p>\u0412 ESR-GAN \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u043f\u043e\u0434\u0445\u043e\u0434.<\/p>\n<p>  <\/p>\n<h2 id=\"funkciya-oshibki-i-pereobuchenie-generatora\">\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0448\u0438\u0431\u043a\u0438 \u0438 \u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430<\/h2>\n<p>  <\/p>\n<p>\u0420\u0430\u043d\u044c\u0448\u0435 \u0432 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u0441\u0435\u0442\u044f\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0432\u043e\u0432\u0430\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u2014 \u0434\u0438\u0441\u043a\u0440\u0438\u043c\u0438\u043d\u0430\u0442\u043e\u0440 \u0434\u043b\u044f &#171;\u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e&#187; \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0443\u0447\u0438\u043b\u0441\u044f \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c 1, \u0430 \u0434\u043b\u044f &#171;\u0438\u0441\u043a\u0443\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e&#187; \u2014 0. \u0421 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0435\u0439 sigmoid, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u0432\u044b\u0445\u043e\u0434\u044b \u043a \u044d\u0442\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0443.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/82d\/7d6\/8df\/82d7d68df500a373434886865b9d4734.svg\" alt=\"$\\sigma(D(y_{real})) \\rightarrow 1$\" data-tex=\"display\"\/><\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8ad\/e9e\/c47\/8ade9ec47e07582f681a2047a02f7a30.svg\" alt=\"$\\sigma(D(y_{fake})) \\rightarrow 0$\" data-tex=\"display\"\/><\/p>\n<p>  <\/p>\n<p>\u041d\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e \u043d\u0430 \u0432\u0438\u043a\u0438\u043f\u0435\u0434\u0438\u0438 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Generative_adversarial_network\" rel=\"nofollow noopener noreferrer\">https:\/\/en.wikipedia.org\/wiki\/Generative_adversarial_network<\/a>, \u0430 \u0442\u0430\u043a \u0436\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 ESR-GAN<\/p>\n<p>  <\/p>\n<p>\u0423\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043b\u0443\u0447\u0448\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0431\u0440\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0439<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3f6\/986\/403\/3f6986403fb36cd72cd5935d96130605.svg\" alt=\"$\\sigma(D(y_{real}) - D(y_{fake})) \\rightarrow 1$\" data-tex=\"display\"\/><\/p>\n<p>  <\/p>\n<p>\u0414\u0438\u0441\u043a\u0440\u0438\u043c\u0438\u043d\u0430\u0442\u043e\u0440 \u0431\u0443\u0434\u0435\u0442 &#171;\u0442\u044f\u043d\u0443\u0442\u044c \u043e\u0434\u0435\u044f\u043b\u043e&#187; \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0435\u0434\u0438\u043d\u0438\u043d\u0447\u043a\u0438, \u0430 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u043d\u0443\u043b\u044f. \u0418\u043d\u0442\u0443\u0438\u0442\u0438\u0432\u043d\u043e \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043b\u043e\u0433\u0438\u0447\u043d\u043e \u2014 \u0435\u0441\u043b\u0438 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0435\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u043c \u2014 \u044d\u0442\u043e \u043d\u0435 \u043f\u043e\u0432\u043e\u0434 \u0441\u0438\u043b\u044c\u043d\u043e \u043d\u0430\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0434\u0438\u0441\u043a\u0440\u0438\u043c\u0438\u043d\u0430\u0442\u043e\u0440.<\/p>\n<p>  <\/p>\n<p>\u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u043a\u0430\u043a \u0431\u044b \u044f \u043d\u0435 \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b, \u044f \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043b\u0441\u044f \u0441 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439 \u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u043e\u0434 \u0434\u0438\u0441\u043a\u0440\u0438\u043c\u0438\u043d\u0442\u043e\u0440 \u2014 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043d\u0430\u0447\u0438\u043d\u0430\u043b \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u044f\u043a\u0438\u0435 \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0443\u0437\u043e\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u0438 \u0447\u0451\u0442\u043a\u0438\u043c\u0438 \u0438 \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u043c\u0438, \u043d\u043e \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435.<\/p>\n<p>  <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0441 \u044d\u0442\u0438\u043c \u0431\u043e\u0440\u043e\u0442\u044c\u0441\u044f, \u044f \u0438\u0437\u043c\u0435\u043d\u0438\u043b \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043e\u0448\u0438\u0431\u043a\u0438 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 (\u0443 \u0434\u0438\u0441\u043a\u0440\u0438\u043c\u0438\u043d\u0430\u0442\u043e\u0440\u0430 \u0432\u0441\u0451 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443). \u041f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u043f\u043e\u043e\u0449\u0440\u044f\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0432 \u0442\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b, \u043a\u043e\u0433\u0434\u0430 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u043e\u0441\u044c \u0431\u043e\u043b\u0435\u0435 &#171;\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u043c&#187;, \u0447\u0435\u043c \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b.<\/p>\n<p>  <\/p>\n<pre><code class=\"python\">pred_y = self(y) pred_label = self(label) y_more_real = pred_y > pred_label diff = y_more_real * 9000 + ~y_more_real * (pred_y - pred_label) ones = torch.ones(size=diff.size(), device=diff.device) return self.binary_crossentropy_with_sigmoid(diff, ones) * self.generator_weight<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0445\u043e\u0440\u043e\u0448\u043e \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435 \u0435\u0441\u043b\u0438 \u0440\u0430\u0441\u0444\u043e\u043a\u0443\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0438\u043b\u0438 \u043e\u0434\u043d\u043e\u0442\u043e\u043d\u043d\u044b\u0439 \u0443\u0447\u0430\u0441\u0442\u043e\u043a, \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043d\u0435 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0438\u0445 &#171;\u0443\u043b\u0443\u0447\u0448\u0430\u0442\u044c&#187; \u0438 \u043c\u0435\u043d\u044f\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0444\u043e\u043a\u0443\u0441\u0435.<\/p>\n<p>  <\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u044f \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0431\u043e\u0440\u043e\u0442\u044c\u0441\u044f \u0441 \u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438:<\/p>\n<p>  <\/p>\n<ol>\n<li>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u043b Dropout \u0432 \u0434\u0438\u0441\u043a\u0440\u0438\u043c\u0438\u043d\u0430\u0442\u043e\u0440, \u0447\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0431\u044b\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0448\u0443\u043c\u043d\u044b\u043c\u0438 \u0438 \u0431\u044b\u043b\u043e \u043d\u0435\u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u043e\u0433\u043d\u0430\u0442\u044c \u0443\u0437\u043e\u0440 (\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e, \u043d\u043e \u0432 \u0438\u0442\u043e\u0433\u0435 \u044f \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0441\u044f)<\/li>\n<li>\u0421\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0441\u0434\u0432\u0438\u0433\u0430\u043b \u043f\u0430\u0440\u0443 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0432\u0445\u043e\u0434\u0435 \u0434\u0438\u0441\u043a\u0440\u0438\u043c\u0438\u043d\u0430\u0442\u043e\u0440\u0430 \u043d\u0430 0-7 \u043f\u0438\u043a\u0441\u043b\u0435\u0439 \u043f\u043e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0438 \u0438 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0438. (\u0414\u0438\u0441\u043a\u0440\u0438\u043c\u0438\u043d\u0430\u0442\u043e\u0440 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437 \u0441\u0432\u0451\u0440\u0442\u043e\u0447\u043d\u044b\u0445 \u0441\u043b\u043e\u0451\u0432, \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0432 8 \u0440\u0430\u0437, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0434\u0432\u0438\u0433 \u043d\u0430 8 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u0435\u043d \u0435\u0433\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044e)<\/li>\n<li>\u0414\u0435\u043b\u0430\u043b \u0431\u043e\u043b\u0435\u0435 &#171;\u0443\u043c\u043d\u044b\u0439&#187; \u0434\u0438\u0441\u043a\u0440\u0438\u043c\u0438\u043d\u0430\u0442\u043e\u0440 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u0438 \u0441\u043b\u043e\u0451\u0432.<\/li>\n<li>\u041f\u043e\u0434\u0433\u043e\u043d\u044f\u043b \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u0432 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u0438 \u0434\u0438\u0441\u043a\u0440\u0438\u043c\u0438\u043d\u0430\u0442\u043e\u0440\u043e\u043c<\/li>\n<li>\u041d\u0430 \u043e\u0434\u0438\u043d \u0448\u0430\u0433 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0434\u0435\u043b\u0430\u043b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0448\u0430\u0433\u043e\u0432 \u0434\u0438\u0441\u043a\u0440\u0438\u043c\u0438\u043d\u0430\u0442\u043e\u0440\u0430 (\u043e\u043d\u0438 \u0434\u0435\u043b\u0430\u044e\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u044b \u0431\u044b\u0441\u0442\u0440\u0435\u0435)<\/li>\n<\/ol>\n<p>  <\/p>\n<h2 id=\"max-pooling-vs-strided-conv\">max pooling vs strided conv<\/h2>\n<p>  <\/p>\n<p>\u042f \u0441\u0440\u0430\u0432\u043d\u0438\u043b \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435 \u0434\u0432\u0443\u043c\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438:<\/p>\n<p>  <\/p>\n<ol>\n<li><code>MaxPool2d(2)<\/code> \u2014 \u0431\u0435\u0440\u0451\u0442 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u043a\u0438 2\u04452 \u043f\u0438\u043a\u0441\u0435\u043b\u044f, \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430 \u0431\u0435\u0440\u0451\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c<\/li>\n<li><code>Conv2d(kernel=3, stride=2)<\/code> \u2014 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u0441\u0432\u0451\u0440\u0442\u043a\u0443 \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0441 \u0447\u0451\u0442\u043d\u044b\u043c\u0438 x \u0438 y, \u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u0442\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f<\/li>\n<\/ol>\n<p>  <\/p>\n<p>\u0415\u0441\u0442\u044c \u0434\u0430\u0436\u0435 \u0441\u0442\u0430\u0442\u044c\u044f \u0438\u0437 2015, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0437\u0430\u043c\u0435\u043d\u0438\u043b\u0438 \u0432\u0441\u0435 max-pooling \u0441\u043b\u043e\u0438 \u043d\u0430 \u0441\u0432\u0451\u0440\u0442\u043a\u0438 \u0441\u043e stride<\/p>\n<p>  <\/p>\n<p><strong>Striving for Simplicity: The All Convolutional Net:<\/strong> <a href=\"https:\/\/arxiv.org\/abs\/1412.6806\" rel=\"nofollow noopener noreferrer\">https:\/\/arxiv.org\/abs\/1412.6806<\/a><\/p>\n<p>  <\/p>\n<p>\u042f \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0438\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0438 \u0432\u0437\u044f\u043b \u0434\u0430\u0442\u0430\u0441\u0435\u0442 mnist.<br \/>  \u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c.<br \/>  \u0415\u0441\u043b\u0438 \u044f \u0437\u0430\u043c\u0435\u043d\u044f\u043b max-pooling \u0441\u043b\u043e\u0439 \u043d\u0430 \u0435\u0449\u0451 \u043e\u0434\u043d\u0443 \u0441\u0432\u0451\u0440\u0442\u043a\u0443 \u2014 \u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u0438\u0435 \u0436\u0435: <a href=\"https:\/\/github.com\/Kright\/mySmallProjects\/blob\/master\/2023\/ml_experiments\/mnist_nets\/mnist_baseline_compare_maxpool_vs_strided.ipynb\" rel=\"nofollow noopener noreferrer\">https:\/\/github.com\/Kright\/mySmallProjects\/blob\/master\/2023\/ml_experiments\/mnist_nets\/mnist_baseline_compare_maxpool_vs_strided.ipynb<\/a><br \/>  \u0415\u0441\u043b\u0438 \u044f \u0432\u044b\u043a\u0438\u0434\u044b\u0432\u0430\u043b max-pooling \u0441\u043b\u043e\u0439 \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u043b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 strided=2 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c\u0443 \u0441\u0432\u0451\u0440\u0442\u043e\u0447\u043d\u043e\u043c\u0443 \u0441\u043b\u043e\u044e, \u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0443\u0445\u0443\u0434\u0448\u0430\u043b\u0438\u0441\u044c: <a href=\"https:\/\/github.com\/Kright\/mySmallProjects\/blob\/master\/2023\/ml_experiments\/mnist_nets\/mnist_baseline_compare_maxpool_vs_no_layer.ipynb\" rel=\"nofollow noopener noreferrer\">https:\/\/github.com\/Kright\/mySmallProjects\/blob\/master\/2023\/ml_experiments\/mnist_nets\/mnist_baseline_compare_maxpool_vs_no_layer.ipynb<\/a><\/p>\n<p>  <\/p>\n<p>\u041d\u043e \u0435\u0441\u0442\u044c \u043c\u043e\u043c\u0435\u043d\u0442 \u2014 max pooling \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u043f\u0440\u043e\u0449\u0435 \u0438 \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c \u0441\u0432\u0451\u0440\u0442\u043a\u0443. \u0410 \u0435\u0449\u0451 \u0441\u0432\u0451\u0440\u0442\u043a\u0430 \u2014 \u044d\u0442\u043e \u043e\u0431\u0443\u0447\u0430\u0435\u043c\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u2014 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0440\u043e\u0434\u0435 \u0431\u044b \u0438 \u0443\u0447\u0430\u0442\u0441\u044f, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u043f\u043e\u0432\u044b\u0448\u0430\u044e\u0442 \u043e\u0431\u0449\u0443\u044e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0441\u0435\u0442\u0438 \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 max pooling. \u041d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0434\u0438\u0441\u0440\u0438\u043c\u0438\u043d\u0430\u0442\u043e\u0440\u0435 \u0443 \u043c\u0435\u043d\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e max pool<\/p>\n<p>  <\/p>\n<h2 id=\"dilated-convolution-i-perception-field\">Dilated convolution \u0438 perception field<\/h2>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0441\u0432\u0451\u0440\u0442\u043a\u0438 3\u04453 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u0438\u043a\u0441\u0435\u043b\u044f \u0438 \u043e\u0442 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0445 (-1, 0, 1)<br \/>  \u043f\u043e \u0445 \u0438 \u0443) \u0415\u0441\u043b\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c N \u0441\u0432\u0451\u0440\u0442\u043e\u043a 3\u04453 \u043f\u043e\u0434\u0440\u044f\u0434, \u0442\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0441\u043c\u043e\u0436\u0435\u0442 &#171;\u0443\u0442\u0435\u0447\u044c&#187; \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 N \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0432\u0431\u043e\u043a. \u0415\u0441\u043b\u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043c\u043e\u0433\u043b\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043a\u0430\u043a\u0438\u0445-\u0442\u043e \u0434\u0430\u043b\u044c\u043d\u0438\u0445 \u0443\u0447\u0430\u0441\u0442\u043a\u0430\u0445, \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u0438\u043d\u0430\u0447\u0435.<\/p>\n<p>  <\/p>\n<p><strong>dilated convolution<\/strong> \u2014 \u0446\u0432\u0435\u0442 \u043f\u0438\u043a\u0441\u0435\u043b\u044f \u0442\u0430\u043a \u0436\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u0434\u0435\u0432\u044f\u0442\u0438 \u0442\u043e\u0447\u0435\u043a, \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u0442 \u044d\u0442\u0438 \u043f\u0438\u043a\u0441\u0435\u043b\u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u044b \u0434\u0430\u043b\u044c\u0448\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f dilation=2 \u0441\u0434\u0432\u0438\u0433\u0438 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0431\u0443\u0434\u0443\u0442 (-2, 0, 2)<\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0437\u0430\u0445\u0432\u0430\u0442\u0438\u0442\u044c \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c, \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u0432\u0451\u0440\u0442\u043e\u043a \u0441 dilation \u0432 \u0432\u0438\u0434\u0435 \u0441\u0442\u0435\u043f\u0435\u043d\u0435\u0439 \u0434\u0432\u043e\u0439\u043a\u0438 \u2014 1, 2, 4, 8,\u2026<br \/>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f, \u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 &#171;\u043f\u0435\u0440\u0435\u0442\u0435\u043a\u0430\u0442\u044c&#187; \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0434\u0430\u043b\u0435\u043a\u043e.<\/p>\n<p>  <\/p>\n<p>\u0421\u0442\u0430\u0442\u044c\u044f \u0438\u0437 2015 \u0433\u043e\u0434\u0430. \u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0441\u0435\u0442\u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0430 \u0434\u043b\u044f \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u2014 \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0430 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0438\u043a\u0441\u0435\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0430 \u043a\u043b\u0430\u0441\u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u0430.<\/p>\n<p>  <\/p>\n<p>Multi-Scale Context Aggregation by Dilated Convolutions: <a href=\"https:\/\/arxiv.org\/pdf\/1511.07122.pdf\" rel=\"nofollow noopener noreferrer\">https:\/\/arxiv.org\/pdf\/1511.07122.pdf<\/a><\/p>\n<p>  <\/p>\n<p>\u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u043f\u043e\u0434\u0445\u043e\u0434 \u0438 \u0432 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0435 \u0438 \u0432 \u0434\u0438\u0441\u043a\u0440\u0438\u043c\u0438\u043d\u0430\u0442\u043e\u0440\u0435. \u0412 \u0434\u0438\u0441\u043a\u0440\u0438\u043c\u0438\u043d\u0430\u0442\u043e\u0440\u0435 \u044f \u043d\u0435 \u0445\u043e\u0442\u0435\u043b \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0431\u043e\u043b\u044c\u0448\u0435 \u0447\u0435\u043c \u0432 8 \u0440\u0430\u0437, \u043d\u043e \u0445\u043e\u0442\u0435\u043b \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043e\u0431\u043b\u0430\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0438\u043a\u0441\u0435\u043b\u044f. \u0412 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0435 \u044f \u043e\u043f\u044f\u0442\u044c \u0436\u0435 \u0445\u043e\u0442\u0435\u043b \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0445\u043e\u0442\u044f \u0431\u044b \u0434\u043e 10-20 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0432\u043e\u043a\u0440\u0443\u0433, \u0447\u0442\u043e\u0431\u044b \u0441\u0435\u0442\u044c \u043f\u0440\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0438 \u043a\u0443\u0441\u043e\u0447\u043a\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u043c\u043e\u0433\u043b\u0430 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442.<\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u0442\u044c \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043e\u0439 \u0442\u0438\u043f\u0430 U-net: <a href=\"https:\/\/en.wikipedia.org\/wiki\/U-Net\" rel=\"nofollow noopener noreferrer\">https:\/\/en.wikipedia.org\/wiki\/U-Net<\/a><\/p>\n<p>  <\/p>\n<p>\u0412 \u043a\u043e\u0434\u0435 \u043a Real-ESR-GAN \u0432 \u0434\u0438\u0441\u043a\u0440\u0438\u043c\u0438\u043d\u0430\u0442\u043e\u0440\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f U-net \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0438 \u0441\u043f\u0435\u043a\u0442\u0440\u0430\u043b\u044c\u043d\u0430\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f. <a href=\"https:\/\/github.com\/xinntao\/Real-ESRGAN\/blob\/master\/realesrgan\/archs\/discriminator_arch.py\" rel=\"nofollow noopener noreferrer\">https:\/\/github.com\/xinntao\/Real-ESRGAN\/blob\/master\/realesrgan\/archs\/discriminator_arch.py<\/a><\/p>\n<p>  <\/p>\n<p>&#171;\u0420\u0443\u043a\u043e\u043c\u0430\u0445\u0430\u0442\u0435\u043b\u044c\u043d\u043e&#187; \u044f \u043c\u043e\u0433\u0443 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0442\u0430\u043c \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430, \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043c\u0435\u043d\u044c\u0448\u0435\u0439 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438 \u0438 \u043f\u043e\u0442\u043e\u043c &#171;\u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f&#187; \u043e\u0431\u0440\u0430\u0442\u043d\u043e, \u043e\u0431\u043e\u0433\u0430\u0449\u0430\u044f \u0441\u043b\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c\u0438, \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430\u0445.<br \/>  \u041d\u043e \u0441\u0430\u043c \u044f \u0442\u0430\u043a\u043e\u0435 \u043e\u0431\u0443\u0447\u0430\u0442\u044c \u0435\u0449\u0451 \u043d\u0435 \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0438 \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u043d\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043b.<\/p>\n<p>  <\/p>\n<h2 id=\"finalnaya-arhitektura-diskriminatora\">\u0424\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0434\u0438\u0441\u043a\u0440\u0438\u043c\u0438\u043d\u0430\u0442\u043e\u0440\u0430<\/h2>\n<p>  <\/p>\n<p>\u0423\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0432 8 \u0440\u0430\u0437, \u043f\u043e\u0442\u043e\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0432\u0451\u0440\u0442\u043e\u043a \u0441 dilation \u0438 \u0432 \u043a\u043e\u043d\u0446\u0435 \u043f\u0430\u0440\u0430 \u0441\u043b\u043e\u0451\u0432 \u0441 <code>kernel_size=1<\/code> \u0434\u043b\u044f \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 &#171;\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0439&#187; \u043a\u0430\u0436\u0434\u044b\u043c \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u043c.<\/p>\n<p>  <\/p>\n<pre><code class=\"python\">class DiscriminatorDilationNetwork(nn.Module):     def __init__(self,                  generator_weight: float,                  mid_channels: int):         super(DiscriminatorDilationNetwork, self).__init__()          self.generator_weight: float = generator_weight         self.random_crop = RandomShiftCrop(8)          self.layers = nn.Sequential(             self.conv(3, mid_channels, kernel_size=5),             self.conv(mid_channels, mid_channels, kernel_size=3),             nn.MaxPool2d(2),              self.conv(mid_channels, mid_channels * 2, kernel_size=3),             self.conv(mid_channels * 2, mid_channels * 2, kernel_size=3),             nn.MaxPool2d(2),              self.conv(mid_channels * 2, mid_channels * 4, kernel_size=3),             self.conv(mid_channels * 4, mid_channels * 4, kernel_size=3),             nn.MaxPool2d(2),              self.conv(mid_channels * 4, mid_channels * 8, kernel_size=3),             self.dilated_conv3(mid_channels * 8, mid_channels * 8, dilation=2),             self.dilated_conv3(mid_channels * 8, mid_channels * 8, dilation=4),             self.conv(mid_channels * 8, mid_channels * 8, kernel_size=3),              self.conv(mid_channels * 8, mid_channels * 16, kernel_size=1),             self.conv(mid_channels * 16, mid_channels, kernel_size=1),             nn.Conv2d(mid_channels, 1, kernel_size=1)         )          self.binary_crossentropy_with_sigmoid = torch.nn.BCEWithLogitsLoss()      def conv(self, in_ch: int, out_ch: int, kernel_size: int = 3) -> torch.nn.Module:         return nn.Sequential(             nn.Conv2d(in_ch, out_ch, kernel_size=kernel_size, padding='same', bias=False),             nn.BatchNorm2d(out_ch),             nn.LeakyReLU(0.1),         )      def dilated_conv3(self, in_ch: int, out_ch: int, *, dilation: int) -> torch.nn.Module:         return nn.Sequential(             nn.Conv2d(in_ch, out_ch, kernel_size=3, dilation=dilation, padding=dilation, bias=False),             nn.BatchNorm2d(out_ch),             nn.LeakyReLU(0.1),         )      def loss_for_discriminator(self,                                y: torch.Tensor,                                label: torch.Tensor) -> torch.Tensor:         y, label = self.random_crop(y, label)          diff = self(y) - self(label)         # realness(label) should be >> realness(y)         zeros = torch.zeros(size=diff.size(), device=diff.device)         return self.binary_crossentropy_with_sigmoid(diff, zeros)      def loss(self,              y: torch.Tensor,              label: torch.Tensor) -> torch.Tensor:         if self.generator_weight == 0.0:             return torch.zeros(size=[1], device=y.get_device())          y, label = self.random_crop(y, label)          pred_y = self(y)         pred_label = self(label)         y_more_real = pred_y > pred_label          diff = y_more_real * 9000 + ~y_more_real * (pred_y - pred_label)         ones = torch.ones(size=diff.size(), device=diff.device)         return self.binary_crossentropy_with_sigmoid(diff, ones) * self.generator_weight      def forward(self, y: torch.Tensor) -> torch.Tensor:         y = self.layers(y)         return y<\/code><\/pre>\n<p>  <\/p>\n<h2 id=\"generator-ot-esr-gan-i-chto-ya-v-nyom-pomenyal\">\u0413\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043e\u0442 ESR-GAN \u0438 \u0447\u0442\u043e \u044f \u0432 \u043d\u0451\u043c \u043f\u043e\u043c\u0435\u043d\u044f\u043b<\/h2>\n<p>  <\/p>\n<p>\u0412\u043c\u0435\u0441\u0442\u043e \u0442\u044b\u0441\u044f\u0447\u0438 \u0441\u043b\u043e\u0432: <a href=\"https:\/\/github.com\/xinntao\/ESRGAN\/blob\/master\/RRDBNet_arch.py\" rel=\"nofollow noopener noreferrer\">https:\/\/github.com\/xinntao\/ESRGAN\/blob\/master\/RRDBNet_arch.py<\/a><br \/>  \u042d\u0442\u043e \u043a\u043e\u0434 \u043e\u0442 \u0430\u0432\u0442\u043e\u0440\u0430 \u0441\u0442\u0430\u0442\u044c\u0438 ESR-GAN.<\/p>\n<p>  <\/p>\n<p>\u0410 \u0435\u0441\u043b\u0438 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e \u2014 \u0443 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u0441\u043e\u043c\u043d\u0435\u043d\u0438\u044f \u0432 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0438 \u044f \u0435\u0451 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043b, \u0447\u0442\u043e\u0431\u044b \u0441\u0435\u0442\u044c \u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043f\u043e\u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0430 \u043c\u0435\u043d\u044c\u0448\u0435 \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p>  <\/p>\n<p>\u0418\u0442\u0430\u043a, \u043e\u0431\u0449\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0441\u0435\u0442\u0438:<\/p>\n<p>  <\/p>\n<ol>\n<li>\u0441\u0432\u0451\u0440\u0442\u043a\u0430 \u0434\u043b\u044f \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438 \u0434\u043e <code>nf=64<\/code> \u043a\u0430\u043d\u0430\u043b\u043e\u0432, \u0438 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u043d\u0435\u0442 (\u044d\u0442\u043e \u0432\u0430\u0436\u043d\u043e)<\/li>\n<li>\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0431\u043b\u043e\u043a \u0441 \u043a\u0443\u0447\u0435\u0439 RRDB \u0431\u043b\u043e\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u043e\u043f\u0438\u0448\u0443 \u043f\u043e\u0437\u0436\u0435. \u0412\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0430\u043c\u0430\u044f \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c<\/li>\n<li>\u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u0432 4 \u0440\u0430\u0437\u0430 \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043a\u0430\u043a \u0434\u0432\u0430 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u0432 \u0434\u0432\u0430 \u0440\u0430\u0437\u0430. \u0412 \u043a\u0430\u0436\u0434\u043e\u043c \u0441\u0432\u0451\u0440\u0442\u043a\u0430 \u0438 \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 F.interpolate(fea, scale_factor=2, mode=&#8217;nearest&#8217;). \u0421\u0442\u0440\u0430\u043d\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e, nearest \u044f \u043d\u0435 \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b.<\/li>\n<li>\u043f\u043e\u0441\u043b\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0439 \u043f\u0430\u0440\u0430 \u0441\u0432\u0451\u0440\u0442\u043e\u043a. \u0427\u0442\u043e \u0442\u043e\u0436\u0435 \u0441\u0442\u0440\u0430\u043d\u043d\u043e \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f. \u0425\u043e\u0442\u044f \u043f\u043e\u0441\u043b\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0432 <code>4**2 = 16<\/code> \u0440\u0430\u0437 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u043e\u0434\u043d\u0430 <code>HRconv<\/code> \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0442\u044c\u0441\u044f \u0432 16 \u0440\u0430\u0437 \u0434\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c <code>trunk_conv<\/code><\/li>\n<\/ol>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 (\u0438 \u043e\u0447\u0435\u043d\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u044f\u0436\u0451\u043b\u044b\u0435) \u0431\u043b\u043e\u043a\u0438.<br \/>  \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0438\u0445 \u0438\u0434\u0435\u044f: <a href=\"https:\/\/en.wikipedia.org\/wiki\/Residual_neural_network\" rel=\"nofollow noopener noreferrer\">https:\/\/en.wikipedia.org\/wiki\/Residual_neural_network<\/a><br \/>  \u0435\u0441\u0442\u044c &#171;\u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u0443\u0442\u044c&#187; \u0432 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435 \u0441 64 \u043a\u0430\u043d\u0430\u043b\u0430\u043c\u0438, \u043a\u0430\u0436\u0434\u044b\u0439 \u0431\u043b\u043e\u043a \u0447\u0443\u0442\u044c-\u0447\u0443\u0442\u044c \u0443\u043b\u0443\u0447\u0448\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u2014 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u043f\u043e\u043f\u0440\u0430\u0432\u043a\u0430\u043c\u0438, \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u043d\u044b\u043c\u0438 \u043d\u0430 0.2<\/p>\n<p>  <\/p>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0431\u043b\u043e\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f (\u0441\u044e\u0440\u043f\u0440\u0438\u0437) Residual Dense Block:<\/p>\n<p>  <\/p>\n<pre><code class=\"python\">class ResidualDenseBlock_5C(nn.Module):     def __init__(self, nf=64, gc=32, bias=True):         super(ResidualDenseBlock_5C, self).__init__()         # gc: growth channel, i.e. intermediate channels         self.conv1 = nn.Conv2d(nf, gc, 3, 1, 1, bias=bias)         self.conv2 = nn.Conv2d(nf + gc, gc, 3, 1, 1, bias=bias)         self.conv3 = nn.Conv2d(nf + 2 * gc, gc, 3, 1, 1, bias=bias)         self.conv4 = nn.Conv2d(nf + 3 * gc, gc, 3, 1, 1, bias=bias)         self.conv5 = nn.Conv2d(nf + 4 * gc, nf, 3, 1, 1, bias=bias)         self.lrelu = nn.LeakyReLU(negative_slope=0.2, inplace=True)          # initialization         # mutil.initialize_weights([self.conv1, self.conv2, self.conv3, self.conv4, self.conv5], 0.1)      def forward(self, x):         x1 = self.lrelu(self.conv1(x))         x2 = self.lrelu(self.conv2(torch.cat((x, x1), 1)))         x3 = self.lrelu(self.conv3(torch.cat((x, x1, x2), 1)))         x4 = self.lrelu(self.conv4(torch.cat((x, x1, x2, x3), 1)))         x5 = self.conv5(torch.cat((x, x1, x2, x3, x4), 1))         return x5 * 0.2 + x<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0430\u0432\u0442\u043e\u0440\u044b \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u043e\u0442 \u0431\u0430\u0442\u0447-\u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u043e\u043d\u0438 \u0440\u0435\u0448\u0438\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0435 \u043f\u0443\u0442\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u043e\u0434\u0435\u043b\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043d\u0443\u0442\u0440\u0438 dense \u0431\u043b\u043e\u043a\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0441\u043b\u043e\u0439 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0432\u044b\u0445\u043e\u0434\u044b \u0432\u0441\u0435\u0445 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0441\u043b\u043e\u0439 \u0432 \u0431\u043b\u043e\u043a\u0435 \u0431\u0435\u0437 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438.<\/p>\n<p>  <\/p>\n<p>\u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 Residual \u0431\u043b\u043e\u043a\u043e\u0432 \u0430\u0432\u0442\u043e\u0440\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0443\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u0445 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044e: \u0438\u0437 \u0442\u0440\u0451\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 residual \u0431\u043b\u043e\u043a\u043e\u0432 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d Residual In Residual Dense Block (RRDB), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u043e\u0436\u0435 \u0434\u043e\u043c\u043d\u043e\u0436\u0430\u0435\u0442 \u0441\u0432\u043e\u0439 \u0432\u044b\u0445\u043e\u0434 \u043d\u0430 0.2 \u0438 \u043f\u0440\u0438\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u043e \u0432\u0445\u043e\u0434\u0443.<\/p>\n<p>  <\/p>\n<p>\u0418 \u0432\u043e\u0442 \u044d\u0442\u0438\u0445 RRDB \u0431\u043b\u043e\u043a\u043e\u0432 \u0431\u0435\u0440\u0451\u0442\u0441\u044f 16 \u0448\u0442\u0443\u043a \u0438 \u043e\u043d\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043b\u0443\u0447\u0448\u0430\u044e\u0442 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443.<\/p>\n<p>  <\/p>\n<p>\u0415\u0449\u0451 \u0434\u0435\u0442\u0430\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043d\u044f\u043b \u0438 \u043d\u0435 \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0434\u0435\u043b\u0430\u0442\u044c: \u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 \u0442\u043e\u0439 \u0436\u0435 \u0441\u0430\u043c\u043e\u0439 \u0441\u0435\u0442\u043a\u0438 \u043c\u0435\u043d\u044f\u043b\u0438 \u043f\u0435\u0440\u0432\u044b\u0439 \u0441\u043b\u043e\u0439 \u043d\u0430 \u0441\u0432\u0451\u0440\u0442\u043a\u0443 \u0441 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435\u043c, \u0442\u0430\u043a \u0447\u0442\u043e \u0432\u0445\u043e\u0434 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u043b\u0441\u044f \u0432 2 \u0438\u043b\u0438 4 \u0440\u0430\u0437\u0430, \u0430 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u043b\u0438\u0441\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438, \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u043d\u044b\u0435 \u0432 2 \u0438\u043b\u0438 1 \u0440\u0430\u0437. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u044d\u0442\u043e \u043a\u0430\u043a-\u0442\u043e \u0443\u0441\u043a\u043e\u0440\u044f\u043b\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435.<\/p>\n<p>  <\/p>\n<p>\u0423 \u043c\u0435\u043d\u044f \u0431\u044b\u043b\u0430 \u0437\u0430\u0431\u0430\u0432\u043d\u0430\u044f \u043c\u044b\u0441\u043b\u044c, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c RRDB \u0431\u043b\u043e\u043a\u0438 \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u0437\u044f\u0442\u044c \u043e\u0434\u0438\u043d \u0431\u043b\u043e\u043a \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e 16 \u0440\u0430\u0437. \u0422\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0447\u0435\u043c-\u0442\u043e \u043f\u043e\u0445\u043e\u0436\u0438\u043c \u043d\u0430 diffusion \u043c\u043e\u0434\u0435\u043b\u0438, \u043a\u043e\u0433\u0434\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u043f\u043e\u0442\u0438\u0445\u043e\u043d\u044c\u043a\u0443 \u0443\u043b\u0443\u0447\u0448\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437 \u0437\u0430 \u0440\u0430\u0437\u043e\u043c, \u043d\u043e \u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b.<\/p>\n<p>  <\/p>\n<p>\u0427\u0442\u043e \u043c\u043d\u0435 \u043d\u0435 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u043e\u0441\u044c \u0432 Redisual Dense Block: \u043a\u0430\u0436\u0434\u0430\u044f \u0441\u0432\u0451\u0440\u0442\u043a\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u0451 \u0442\u044f\u0436\u0435\u043b\u0435\u0435, \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0441\u0432\u0451\u0440\u0442\u043a\u0430 \u0438\u0437 <code>64 * 5 = 320<\/code> \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u0432 <code>64<\/code> \u2014 \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u043f\u044f\u0442\u044c \u0440\u0430\u0437 \u0434\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u043e\u0431\u044b\u0447\u043d\u0430\u044f \u0441\u0432\u0451\u0440\u0442\u043a\u0430 \u0438\u0437 <code>64<\/code> \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u0432 <code>64<\/code>.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f RDB \u0441\u043b\u043e\u0436\u043d\u043e\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 (\u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432) \u0440\u0430\u0441\u0442\u0451\u0442 \u043a\u0430\u043a <code>1 + 2 + 3 + 4 + 5 = 15<\/code>. \u0415\u0441\u043b\u0438 \u0431\u044b \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0431\u044b\u043b\u0430 \u0431\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u044f\u0442\u0438 \u0441\u0432\u0451\u0440\u0442\u043e\u043a, \u0442\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0431\u044b\u043b\u0430 \u0431\u044b <code>1 * 5 = 5<\/code> \u2014 \u0432 \u0442\u0440\u0438 \u0440\u0430\u0437\u0430 \u043c\u0435\u043d\u044c\u0448\u0435 \u043f\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u043e\u0431\u0443\u0447\u0430\u0435\u043c\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0442\u0430\u043a\u043e\u0439 \u0431\u043b\u043e\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0431\u044b \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0445\u0443\u0436\u0435, \u043d\u043e \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043c\u0435\u0448\u0430\u0435\u0442 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u0438\u043b\u0438 \u0431\u043b\u043e\u043a\u043e\u0432.<\/p>\n<p>  <\/p>\n<p>\u0418 \u043c\u043e\u044f \u0432\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0435\u0442\u0435\u043d\u0437\u0438\u044f \u2014 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 Residual Dense Block \u043f\u0440\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0438 \u0446\u0432\u0435\u0442\u0430 \u043f\u0438\u043a\u0441\u0435\u043b\u044f \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0434\u0430\u043b\u0435\u043a\u043e \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u2014 \u043d\u0435 \u0434\u0430\u043b\u044c\u0448\u0435 \u043f\u044f\u0442\u0438 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443. \u041c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u044d\u0442\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0442\u0430\u043a\u0438\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 \u043c\u043d\u043e\u0433\u043e, \u0438 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0432\u0441\u0435\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043f\u043e\u0442\u0438\u0445\u043e\u043d\u044c\u043a\u0443 \u043c\u043e\u0436\u0435\u0442 \u0443\u043f\u043e\u043b\u0437\u0442\u0438 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0434\u0430\u043b\u0435\u043a\u043e, \u043d\u043e \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0431\u043b\u043e\u043a \u0441\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043e\u0447\u0435\u043d\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<p>\u042f \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u0442\u044c \u2014 \u0432 RDB \u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0440\u0438 \u0441\u0432\u0451\u0440\u0442\u043a\u0438 (\u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c <code>1 + 2 + 3 = 6<\/code> \u2014 \u043c\u0435\u043d\u044c\u0448\u0435 \u0432 \u0434\u0432\u0430 \u0441 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u043e\u0439 \u0440\u0430\u0437\u0430). \u041d\u043e \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0438\u0445 \u0441\u0432\u044f\u0437\u0435\u0439 \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0441\u0432\u043e\u0438 \u0431\u043b\u043e\u043a\u0438 \u2014 \u0442\u0440\u0438 \u0441\u0432\u0451\u0440\u0442\u043a\u0438 \u0441 dilation <code>1,2,4<\/code> \u0438 \u043e\u0434\u043d\u0443 \u043f\u043e\u0442\u043e\u0447\u0435\u0447\u043d\u0443\u044e.<br \/>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043d\u0430 \u043f\u0438\u043a\u0441\u0435\u043b\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u0432\u043b\u0438\u044f\u0442\u044c \u0432\u0441\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u0438 \u0441 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f\u0435\u043c \u0434\u043e 7<br \/>  \u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e <code>3<\/code>, \u0432 \u0441\u0443\u043c\u043c\u0435 \u0441 RDB \u0431\u043b\u043e\u043a\u043e\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f 9 \u0432\u043c\u0435\u0441\u0442\u043e \u0431\u044b\u0432\u0448\u0438\u0445 15.<\/p>\n<p>  <\/p>\n<pre><code class=\"python\">class MyDilatedBlock(nn.Module):     def __init__(self, channels: int, res_scale: float = 0.2):         super(MyDilatedBlock, self).__init__()          self.res_scale: float = res_scale          self.layers = nn.Sequential(             nn.Conv2d(channels, channels, kernel_size=3, padding=1, bias=True),             nn.LeakyReLU(0.1),             nn.Conv2d(channels, channels, kernel_size=3, dilation=2, padding=2, bias=True),             nn.LeakyReLU(0.1),             nn.Conv2d(channels, channels, kernel_size=3, dilation=4, padding=4, bias=True),             nn.LeakyReLU(0.1),             nn.Conv2d(channels, channels, kernel_size=1, bias=True)         )      def forward(self, x):         return x + self.layers(x) * self.res_scale  class MyResidualInResidualDenseBlock(nn.Module):     def __init__(self, filters, res_scale=0.2, dr_layers: int = 5):         super(MyResidualInResidualDenseBlock, self).__init__()         self.res_scale = res_scale         self.dense_blocks = nn.Sequential(             MyDilatedBlock(filters),             DenseResidualBlock(filters, layers=dr_layers),             MyDilatedBlock(filters),             DenseResidualBlock(filters, layers=dr_layers),             MyDilatedBlock(filters),             DenseResidualBlock(filters, layers=dr_layers)         )      def forward(self, x):         return x + self.dense_blocks(x) * self.res_scale<\/code><\/pre>\n<p>  <\/p>\n<p>\u042d\u0442\u0430 \u0441\u0435\u0442\u043a\u0430 \u043e\u0434\u043d\u0443 \u044d\u043f\u043e\u0445\u0443 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043b\u0430 \u0442\u0440\u043e\u0435 \u0441\u0443\u0442\u043e\u043a. \u0414\u043e\u043b\u0433\u043e. \u0416\u0435\u043b\u0430\u043d\u0438\u0435 \u043c\u0435\u043d\u044f\u0442\u044c \u0432\u0441\u044f\u043a\u0438\u0435 \u043c\u0435\u043b\u043e\u0447\u0438 \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043a\u0443\u0434\u0430-\u0442\u043e \u043f\u0440\u043e\u043f\u0430\u043b\u043e.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u043a\u0430 \u0441\u0435\u0442\u043a\u0438 \u0431\u044b\u043b\u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435, \u044f \u043f\u0440\u043e\u0441\u0442\u0440\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u043b \u0432\u0441\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0438 \u0441\u0442\u0440\u043e\u0438\u043b \u0433\u0440\u0430\u0444\u0438\u043a \u0447\u0435\u0440\u0435\u0437 <code>pyplot<\/code> \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u044d\u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434 \u043d\u0435 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u0442\u0441\u044f. \u042f \u0441\u043e\u0431\u0438\u0440\u0430\u043b\u0441\u044f \u0434\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0434\u043e tensorboard \u0438 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0442\u0430\u043c, \u043d\u043e \u0447\u0442\u043e-\u0442\u043e \u0442\u0430\u043a \u0438 \u043d\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b. \u041d\u0430\u0432\u0435\u0440\u043d\u043e, \u043e\u0441\u0432\u043e\u044e \u043f\u043e\u0437\u0436\u0435.<\/p>\n<p>  <\/p>\n<h2 id=\"artefakty-szhatiya-jpeg\">\u0410\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b \u0441\u0436\u0430\u0442\u0438\u044f jpeg<\/h2>\n<p>  <\/p>\n<p>\u0412 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 (Real-ESRGAN) \u0430\u0432\u0442\u043e\u0440\u044b \u043e\u0447\u0435\u043d\u044c \u043a\u0440\u0443\u0442\u043e \u0437\u0430\u043d\u044f\u043b\u0438\u0441\u044c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0448\u0443\u043c\u0430, \u0440\u0430\u0437\u043c\u044b\u0442\u0438\u044f, \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432 \u0441\u0436\u0430\u0442\u0438\u044f \u0438 \u0442.\u043f., \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0430 \u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0443\u0431\u0438\u0440\u0430\u0442\u044c.<\/p>\n<p>  <\/p>\n<p>\u042f \u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0435 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u043b\u0441\u044f, \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0443 \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u0445. \u041c\u043e\u0434\u0435\u043b\u044c \u0432\u0441\u0435 \u044d\u0442\u0438 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b \u0441\u0436\u0430\u0442\u0438\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u043b\u0430 \u0437\u0430 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0432\u0430\u0436\u043d\u044b\u0435 \u0434\u0435\u0442\u0430\u043b\u0438, \u0443\u0441\u0438\u043b\u0438\u0432\u0430\u043b\u0430-\u0434\u043e\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u043b\u0430 \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b \u0443\u0436\u0430\u0441\u043d\u043e.<\/p>\n<p>  <\/p>\n<p>\u042f \u043e\u0442 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e\u0433\u043e \u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432 jpeg. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <a href=\"https:\/\/github.com\/mlomnitz\/DiffJPEG\" rel=\"nofollow noopener noreferrer\">https:\/\/github.com\/mlomnitz\/DiffJPEG<\/a> \u0421 \u0435\u0451 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432 \u0440\u0435\u0430\u043b\u0442\u0430\u0439\u043c\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0441\u0436\u0438\u043c\u0430\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0434\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u0448\u0430\u043a\u0430\u043b\u0438\u0441\u0442\u043e\u0441\u0442\u0438. \u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c <code>quality = 100<\/code> \u2014 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0433\u0434\u0435-\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u043d\u043e\u043b\u044c \u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u0441\u0436\u0430\u0442\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0444\u0438\u0430\u0441\u043a\u043e.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u044f\u043c \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0430 \u0441\u0442\u0430\u043b\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0445\u0443\u0436\u0435 \u043d\u0430 &#171;\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445&#187; \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u0445, \u043d\u043e \u0437\u0430\u0442\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0441\u043c\u043e\u0433\u043b\u0430 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u0441\u0436\u0430\u0442\u044b\u0435.<\/p>\n<p>  <\/p>\n<h2 id=\"kak-ya-proboval-uvelichit-proizvoditelnost\">\u041a\u0430\u043a \u044f \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/h2>\n<p>  <\/p>\n<p>\u0420\u0435\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c<\/p>\n<p>  <\/p>\n<pre><code class=\"python\">with torch.no_grad():     ...<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u043e \u043f\u0440\u0430\u0432\u0434\u0430 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u044d\u0442\u0438 \u0441\u0430\u043c\u044b\u0435 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u044b \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u044b.<\/p>\n<p>  <\/p>\n<p>\u042d\u0442\u0430 \u0444\u0438\u0447\u0430 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u043b\u0430\u0441\u044c, \u043a\u043e\u0433\u0434\u0430 \u044f \u0437\u0430\u0445\u043e\u0442\u0435\u043b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0441\u0435\u0442\u043a\u0443 \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u0445 \u0438 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.<br \/>  \u0414\u0430, \u044f \u0437\u043d\u0430\u044e \u043f\u0440\u043e <code>tensor.requires_grad = False \u0438 model.eval()<\/code>, \u043d\u043e \u0441 <code>no_grad<\/code> \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u0431\u043e\u043b\u0435\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e.<br \/>  \u0415\u0441\u043b\u0438 \u043d\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f, \u0442\u043e \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0430 \u0432\u043f\u043e\u043b\u043d\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0432\u043c\u0435\u0449\u0430\u0435\u0442 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043c\u0438 \u043e\u043a\u043e\u043b\u043e \u0442\u044b\u0441\u044f\u0447\u0438 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439.<\/p>\n<p>  <\/p>\n<p>\u0422\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c<\/p>\n<p>  <\/p>\n<pre><code class=\"python\">LeakyRelu(0.1, inplace=True)<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0441\u043b\u043e\u0439, \u0430 \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u043c \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0442\u044c\u0441\u044f \u0437\u0430\u043d\u043e\u0432\u043e. \u0422\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u044d\u0442\u043e \u0441\u043d\u0438\u0436\u0430\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 (\u0432 \u0438\u0434\u0435\u0430\u043b\u0435 \u0440\u0430\u0437\u0430 \u0432 \u0434\u0432\u0430, \u0435\u0441\u043b\u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u043b\u043e\u0439 \u2014 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f), \u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0447\u0443\u0442\u044c-\u0447\u0443\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b. \u042f \u0442\u043e\u043b\u043a\u043e\u043c \u043d\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b.<\/p>\n<p>  <\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c autocast <a href=\"https:\/\/pytorch.org\/docs\/stable\/notes\/amp_examples.html\" rel=\"nofollow noopener noreferrer\">https:\/\/pytorch.org\/docs\/stable\/notes\/amp_examples.html<\/a><\/p>\n<p>  <\/p>\n<pre><code class=\"python\">with with autocast(device_type='cuda'):     ...<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0443\u043b\u0443\u0447\u0448\u0438\u043b\u0430\u0441\u044c \u0432 \u043f\u043e\u043b\u0442\u043e\u0440\u0430-\u0434\u0432\u0430 \u0440\u0430\u0437\u0430, \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u043b\u043e\u0441\u044c, \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u0442 \u0432\u043e\u0442 \u043c\u043e\u044f \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0430 \u0441 \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u0430\u043b\u0430 \u043e\u0431\u0443\u0447\u0430\u0442\u044c\u0441\u044f. \u0410 \u0431\u0435\u0437 autocast \u0443\u043b\u0443\u0447\u0448\u0430\u043b\u0430\u0441\u044c \u0434\u0430\u043b\u044c\u0448\u0435. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u044b \u0433\u0434\u0435-\u0442\u043e \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438\u0441\u044c \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u043c\u0438. \u041f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u0448\u0442\u0443\u043a\u0430, \u043d\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u0443\u0447\u0448\u0435 \u0431\u0435\u0437 \u043d\u0435\u0451.<\/p>\n<p>  <\/p>\n<h2 id=\"uvelichenie-v-4-ili-2-raza\">\u0423\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u0432 4 \u0438\u043b\u0438 2 \u0440\u0430\u0437\u0430.<\/h2>\n<p>  <\/p>\n<p>\u0421\u0430\u043c\u043e\u0435 \u0437\u0430\u0431\u0430\u0432\u043d\u043e\u0435 \u2014 \u0432\u043d\u0430\u0447\u0430\u043b\u0435, \u043a\u0430\u043a \u0438 \u0432 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0430\u0442\u044c\u044f\u0445, \u044f \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043b \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0441\u0440\u0430\u0437\u0443 \u0432 \u0447\u0435\u0442\u044b\u0440\u0435 \u0440\u0430\u0437\u0430. \u0410 \u043f\u043e\u0442\u043e\u043c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043b, \u043a\u0430\u043a \u043c\u044b\u043b\u044c\u043d\u0435\u043d\u044c\u043a\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0448\u0438\u0440\u0438\u043d\u043e\u0439 \u0442\u044b\u0441\u044f\u0447\u0443 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043f\u043e\u043b\u043e\u0442\u043d\u0438\u0449\u0435 \u0432 4\u043a \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0438 \u0437\u0430\u0434\u0443\u043c\u0430\u043b\u0441\u044f \u2014 \u0430 \u043d\u0430\u0434\u043e \u043b\u0438 \u0442\u0430\u043a \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c?<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043c\u043e\u0438\u0445 \u0445\u043e\u0442\u0435\u043b\u043e\u043a \u0442\u0438\u043f\u0430 &#171;\u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u043f\u043e\u043a\u0440\u0430\u0441\u0438\u0432\u0435\u0435&#187; \u0432\u043f\u043e\u043b\u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u0432 \u0434\u0432\u0430 \u0440\u0430\u0437\u0430. \u0410 \u0435\u0449\u0451 \u2014 \u0434\u043b\u044f \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u043a\u0438 \u044d\u0442\u043e \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u2014 \u0438 \u0443\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0449\u0435, \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u0440\u0430\u0441\u0438\u0432\u0435\u0435.<\/p>\n<p>  <\/p>\n<p>\u0422\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0435\u0441\u043b\u0438 \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0430 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0432 \u0434\u0432\u0430 \u0440\u0430\u0437\u0430 \u0438 \u0435\u0451 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0434\u0432\u0430\u0436\u0434\u044b, \u0442\u043e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0430 \u0432 \u0447\u0435\u0442\u044b\u0440\u0435 \u0440\u0430\u0437\u0430. \u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0439 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b. \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043e\u043d\u0438 \u0437\u0430\u043c\u0435\u0442\u043d\u044b, \u0435\u0441\u043b\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0440\u0430\u0437 \u0432 8 \u0438\u043b\u0438 16.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u0432\u0435\u0440\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0442\u0430\u043a\u043e\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u0445\u043e\u0440\u043e\u0448\u043e, \u043d\u0430\u0434\u043e \u043f\u0440\u0438 \u0448\u0430\u0433\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0442\u043e\u0436\u0435 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0432 \u0447\u0435\u0442\u044b\u0440\u0435 \u0440\u0430\u0437\u0430, \u0434\u0432\u0430\u0436\u0434\u044b \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">y = generator(generator(x))<\/code><\/pre>\n<p>  <\/p>\n<h2 id=\"rezultaty\">\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b<\/h2>\n<p>  <\/p>\n<p>Jupyter \u043d\u043e\u0443\u0442\u0431\u0443\u043a \u0441 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f \u0443\u0447\u0438\u043b \u0442\u0440\u043e\u0435 \u0441\u0443\u0442\u043e\u043a: <a href=\"https:\/\/github.com\/Kright\/mySmallProjects\/blob\/master\/2023\/ml_experiments\/superresolution\/rrdb_x2_vgg_gan.ipynb\" rel=\"nofollow noopener noreferrer\">https:\/\/github.com\/Kright\/mySmallProjects\/blob\/master\/2023\/ml_experiments\/superresolution\/rrdb_x2_vgg_gan.ipynb<\/a><\/p>\n<p>  <\/p>\n<p>\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0435\u0441\u043e\u0432 \u0432 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0435: 16 293 763<br \/>  \u0424\u0430\u0439\u043b \u0441 \u0432\u0435\u0441\u0430\u043c\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 65 \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442, \u0441 \u0432\u0435\u0441\u0430\u043c\u0438 \u0434\u0438\u0441\u043a\u0440\u0438\u043c\u0438\u043d\u0430\u0442\u043e\u0440\u0430 \u2014 10.<br \/>  \u0422\u0430\u043a\u0438\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0444\u0430\u0439\u043b\u044b \u043c\u043e\u0436\u043d\u043e \u0434\u0430\u0436\u0435 \u043d\u0430 \u0433\u0438\u0442\u0445\u0430\u0431 \u0437\u0430\u043b\u0438\u0442\u044c, \u0447\u0442\u043e \u044f \u0438 \u0441\u0434\u0435\u043b\u0430\u043b: <a href=\"https:\/\/github.com\/Kright\/mySmallProjects\/tree\/master\/2023\/ml_experiments\/superresolution\/models\/espcn\" rel=\"nofollow noopener noreferrer\">https:\/\/github.com\/Kright\/mySmallProjects\/tree\/master\/2023\/ml_experiments\/superresolution\/models\/espcn<\/a><\/p>\n<p>  <\/p>\n<p>\u041d\u0435\u0439\u0440\u043e\u043d\u043a\u0430 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0432 \u0434\u0432\u0430 \u0440\u0430\u0437\u0430. \u0415\u0441\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437, \u0442\u043e \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0435 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b.<\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043a\u0440\u0430\u0441\u0438\u0432\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u0444\u043e\u0442\u043a\u0438 \u2014 \u043d\u0430\u0432\u0435\u0440\u043d\u043e, \u043d\u0435 \u043d\u0430\u0434\u043e \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043c\u043e\u044e \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0443. \u0415\u0441\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0442\u044f\u0436\u0435\u043b\u043e\u0432\u0435\u0441\u043d\u044b\u0435 \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0438, \u0434\u0430\u044e\u0449\u0438\u0435 \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b.<\/p>\n<p>  <\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432 \u0441\u043e\u0444\u0442 \u0442\u0438\u043f\u0430 \u0444\u043e\u0442\u043e\u0448\u043e\u043f\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442 \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0438 \u0438 \u043e\u043d\u0438 \u0442\u0430\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043e\u0447\u0435\u043d\u044c \u043a\u0440\u0443\u0442\u043e.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u043f\u043e\u0434 \u0441\u043f\u043e\u0439\u043b\u0435\u0440\u043e\u043c<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<p>\u0418\u0442\u0430\u043a, \u0435\u0441\u043b\u0438 \u043a\u0442\u043e \u0445\u043e\u0442\u0435\u043b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u041b\u0435\u043d\u0443 \u0432 1024&#215;1024 \u0432\u043c\u0435\u0441\u0442\u043e 512\u0445512.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/0f5\/d25\/141\/0f5d2514142f54435dce947691be6113.png\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/0f5\/d25\/141\/0f5d2514142f54435dce947691be6113.png\"\/><\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/c23\/974\/e01\/c23974e0188398a9522c4385391d8556.png\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/c23\/974\/e01\/c23974e0188398a9522c4385391d8556.png\"\/><\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438 \u044f \u0441\u043e\u0431\u0440\u0430\u043b \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e \u0432 1024\u04451024 \u0432 webp. \u041e\u0434\u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0430 \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u043e\u0439, \u0432\u0442\u043e\u0440\u0430\u044f \u2014 \u0431\u0438\u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u0435\u0439, \u0440\u0430\u0437 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/549\/397\/fae\/549397faebb5cb80bd22cc533a106131.webp\"\/><\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u043e\u043d\u0430 \u0432\u0434\u0440\u0443\u0433 \u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0430, \u0432\u043e\u0442 <a href=\"https:\/\/github.com\/Kright\/my-articles\/blob\/master\/2023\/superresolutionNotes\/imgs\/animation01.webp?raw=true\" rel=\"nofollow noopener noreferrer\">\u0441\u0441\u044b\u043b\u043a\u0430<\/a><\/p>\n<\/div><\/div>\n<p>  <\/p>\n<p>\u0412\u043e\u043e\u0431\u0449\u0435 \u0442\u0443\u0442 \u0437\u0430\u0431\u0430\u0432\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442. \u0415\u0441\u043b\u0438 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u044e, \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u043d\u0443\u044e \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u0435\u0439 \u0441 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0435\u0439, \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0441 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u043d\u043e\u0439 \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u043e\u0439 \u2014 \u0432\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0430 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043b\u0443\u0447\u0448\u0435.<br \/>  \u041d\u043e \u0435\u0441\u043b\u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u0443\u044e \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u044e \u0441 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u043d\u043e\u0439 \u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u043d\u043e\u0439 \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u043e\u0439, \u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0435 \u0442\u0430\u043a\u043e\u0439 \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0439.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0432 \u043e\u0434\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435, \u0441\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e:<\/p>\n<p>  <\/p>\n<ol>\n<li>\u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b,<\/li>\n<li>\u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b, \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u043d\u044b\u0435 \u0432 \u0434\u0432\u0430 \u0440\u0430\u0437\u0430 \u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u0435\u0439<\/li>\n<li>\u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b, \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u043d\u044b\u0439 \u0432 \u0434\u0432\u0430 \u0440\u0430\u0437\u0430 \u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u043d\u044b\u0439 \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u043e\u0439.<\/li>\n<\/ol>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/e29\/394\/625\/e293946257786cd2169b89451cfea04a.png\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/e29\/394\/625\/e293946257786cd2169b89451cfea04a.png\"\/><\/p>\n<p>  <\/p>\n<p>\u0427\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0430 \u0434\u043e\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0434\u0435\u0442\u0430\u043b\u0438 \u0442\u0438\u043f\u0430 \u0433\u043b\u0430\u0437 \u0438\u043b\u0438 \u043a\u043e\u043d\u0442\u0443\u0440\u043e\u0432, \u043d\u043e \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0432 \u0444\u043e\u043a\u0443\u0441\u0435.<\/p>\n<p>  <\/p>\n<h2 id=\"istoricheskaya-spravka\">\u0418\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u043f\u0440\u0430\u0432\u043a\u0430<\/h2>\n<p>  <\/p>\n<p>\u041c\u0435\u043d\u044f \u0443\u0434\u0438\u0432\u043b\u044f\u0435\u0442, \u043a\u0430\u043a \u043f\u043e\u0437\u0430\u0432\u0447\u0435\u0440\u0430\u0448\u043d\u0438\u0435 \u0432\u0438\u0440\u0443\u0441\u043e\u043b\u043e\u0433\u0438 \u0438 \u0432\u0447\u0435\u0440\u0430\u0448\u043d\u0438\u0435 \u0432\u043e\u0435\u043d\u043d\u044b\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u044b \u0432\u0434\u0440\u0443\u0433 \u0440\u0435\u0437\u043a\u043e \u0441\u0442\u0430\u043b\u0438 \u0437\u043d\u0430\u0442\u043e\u043a\u0430\u043c\u0438 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0418\u0418. \u041d\u0435\u0439\u0440\u043e\u043d\u043a\u0438 \u2014 \u043d\u0435 \u043c\u0430\u0433\u0438\u044f. \u041e\u043d\u0438 \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u043f\u043e\u044f\u0432\u043b\u044f\u043b\u0438\u0441\u044c \u0432 \u043d\u0430\u0448\u0435\u0439 \u0436\u0438\u0437\u043d\u0438, \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0441\u044c \u0432\u0441\u0451 \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u0438 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u0435\u0435. \u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442. \u0412\u043e\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432:<\/p>\n<p>  <\/p>\n<ul>\n<li>2001 \u0433\u043e\u0434, \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u0442\u044c \u0438\u0434\u0435\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u0443\u044e \u0441\u0435\u0442\u044c \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435. <a href=\"https:\/\/en.wikipedia.org\/wiki\/Branch_predictor#Neural_branch_prediction\" rel=\"nofollow noopener noreferrer\">https:\/\/en.wikipedia.org\/wiki\/Branch_predictor#Neural_branch_prediction<\/a>. \u0418\u0434\u0435\u044f \u2014 \u044d\u0442\u043e \u0435\u0449\u0451 \u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043d\u043e \u0438 \u043e\u043d\u043e \u0442\u043e\u0436\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c. \u041f\u0440\u0435\u0441\u0441 \u0440\u0435\u043b\u0438\u0437 AMD \u0432 2016 \u0433\u043e\u0434\u0443: \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442\u0441\u044f &#171;neural net prediction&#187; \u0438 &#171;smart prefetch&#187;: <a href=\"https:\/\/www.amd.com\/en\/press-releases\/amd-takes-computing-2016dec13\" rel=\"nofollow noopener noreferrer\">https:\/\/www.amd.com\/en\/press-releases\/amd-takes-computing-2016dec13<\/a> \u042f \u043e\u0442\u043a\u0443\u0434\u0430-\u0442\u043e \u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u0445 \u0418\u043d\u0442\u0435\u043b\u0430 \u0435\u0441\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0445\u043e\u0436\u0435\u0435, \u043d\u043e \u043b\u0435\u043d\u044c \u0438\u0441\u043a\u0430\u0442\u044c \u043f\u0440\u0443\u0444\u044b.<\/li>\n<li>2012 \u0433\u043e\u0434, \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u0440\u043e \u0431\u043b\u043e\u043a \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044f: <a href=\"https:\/\/habr.com\/ru\/articles\/141095\/\">https:\/\/habr.com\/ru\/articles\/141095\/<\/a> \u0422\u0430\u043c \u044d\u0442\u043e \u044f\u0432\u043d\u043e \u043d\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e, \u043d\u043e \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e &#171;\u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442&#187; \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0435\u043c, \u043e\u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u0432\u044f\u0437\u044c \u0432 \u0432\u0438\u0434\u0435 \u043b\u044f\u043c\u0431\u0434\u0430 \u0437\u043e\u043d\u0434\u0430, \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432 \u0434\u0435\u0442\u043e\u043d\u0430\u0446\u0438\u0438, \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b, \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043a\u043e\u043b\u0435\u043d\u0432\u0430\u043b\u0430 \u0438 \u0442.\u043f. \u0411\u043b\u043e\u043a \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0435\u043c \u0432 \u043a\u0430\u043a\u0438\u0445-\u0442\u043e \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0438 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0430 \u0440\u0430\u0437\u043d\u043e\u043c \u0431\u0435\u043d\u0437\u0438\u043d\u0435, \u043f\u0440\u0438 \u0440\u0430\u0437\u043d\u043e\u0439 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0435 \u0438 \u0434\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0432\u043e\u0437\u0434\u0443\u0445\u0430 \u0438 \u0434\u0430\u0436\u0435 \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f. \u0414\u0430, &#171;\u043e\u0431\u0443\u0447\u0430\u0435\u043c\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c&#187; \u0442\u0430\u043c \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0438 \u043d\u0435\u0434\u0430\u043b\u0435\u043a\u043e \u0443\u0448\u043b\u0430 \u043e\u0442 \u0442\u0430\u0431\u043b\u0438\u0447\u0435\u043a \u0441 \u043d\u0430\u0431\u043e\u0440\u0430\u043c\u0438 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u0432, \u043d\u043e \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u043e\u0434\u0435\u043b\u044c \u0441 \u0441\u043e\u0442\u043d\u0435\u0439 \u043f\u043e\u0434\u0433\u043e\u043d\u044f\u0435\u043c\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043d\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043c\u043e\u0434\u0435\u043b\u0438 \u0441 \u0441\u043e\u0442\u043d\u0435\u0439 \u0442\u044b\u0441\u044f\u0447 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432.<\/li>\n<li>2016 \u0433\u043e\u0434, \u0432 \u043f\u043e\u0438\u0441\u043a\u0435 \u042f\u043d\u0434\u0435\u043a\u0441\u0430 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c DSSM: <a href=\"https:\/\/habr.com\/ru\/companies\/yandex\/articles\/314222\/\">https:\/\/habr.com\/ru\/companies\/yandex\/articles\/314222\/<\/a><\/li>\n<li>2016 \u0433\u043e\u0434 \u2014 \u0432 \u0422\u0435\u0441\u043b\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0430\u0432\u0442\u043e\u043f\u0438\u043b\u043e\u0442 \u0438 \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u043e\u043d \u0443\u043b\u0443\u0447\u0448\u0430\u043b\u0441\u044f: <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tesla_Autopilot\" rel=\"nofollow noopener noreferrer\">https:\/\/en.wikipedia.org\/wiki\/Tesla_Autopilot<\/a> \u0422\u0430\u043a \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0430\u0432\u0442\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u0439, \u0445\u043e\u0442\u044c \u0438 \u043d\u0435 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044e\u0442 \u043f\u0440\u043e &#171;\u0430\u0432\u0442\u043e\u043f\u0438\u043b\u043e\u0442&#187;, \u043f\u043e\u0442\u0438\u0445\u043e\u043d\u044c\u043a\u0443 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0442\u0438\u043f\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u0440\u043a\u043e\u0432\u043a\u0438, \u0443\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u043e\u0441\u044b \u0438 \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u0438 \u0434\u043e \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f \u0432\u043f\u0435\u0440\u0435\u0434\u0438 \u0438 \u0442.\u043f.<\/li>\n<li>2020 \u0433\u043e\u0434, \u0432 \u043f\u043e\u0438\u0441\u043a\u0435 \u042f\u043d\u0434\u0435\u043a\u0441\u0430 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f BERT: <a href=\"https:\/\/habr.com\/ru\/companies\/yandex\/articles\/529658\/\">https:\/\/habr.com\/ru\/companies\/yandex\/articles\/529658\/<\/a><\/li>\n<\/ul>\n<p>  <\/p>\n<h2 id=\"vyvody\">\u0412\u044b\u0432\u043e\u0434\u044b<\/h2>\n<p>  <\/p>\n<p>\u041c\u043e\u044f \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442! \u0423\u0447\u0438\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u0438 \u2014 \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e. \u0412\u043f\u043e\u043b\u043d\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u041f\u041a \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435.<\/p>\n<p>  <\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u0438 \u0438 \u0438\u043c\u0435\u0442\u044c \u043e\u0431\u0449\u0435\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c, \u043d\u043e \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0433\u043b\u0443\u0431\u043e\u043a\u0438\u0445 \u0437\u043d\u0430\u043d\u0438\u0439 \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0430\u043c\u043e\u043c\u0443. \u042d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u044b &#171;\u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c&#187;, \u043d\u043e \u0434\u043b\u044f \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u043a \u043d\u0435\u0442 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0443\u0442\u0438.<\/p>\n<p>  <\/p>\n<p>\u041c\u0438\u0440 \u043d\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u043c\u0438 \u0441\u0435\u0442\u043a\u0430\u043c\u0438 \u0438 state-of-the-art \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438. \u041c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u0446\u0435\u043b\u0430\u044f \u043a\u0443\u0447\u0430 \u0433\u0440\u0430\u0434\u0430\u0446\u0438\u0439 \u2014 \u043c\u043e\u0436\u043d\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u0441\u0435\u0442\u0438, \u0432\u043f\u0438\u0441\u044b\u0432\u0430\u044f \u0435\u0451 \u0432 \u0442\u0435\u043a\u0443\u0449\u0438\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0436\u0435\u043b\u0435\u0437\u0443, \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430. \u042d\u0442\u0438 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0442\u043e\u0436\u0435 \u043c\u043e\u0433\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0445\u043e\u0440\u043e\u0448\u043e.<\/p>\n<p>  <\/p>\n<p>\u041e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u0443\u0437\u0438\u0442\u044c \u043e\u0431\u0443\u0447\u0430\u0435\u043c\u044b\u0439 \u0434\u0430\u0442\u0430\u0441\u0435\u0442. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u044f \u0443\u0447\u0438\u043b \u043d\u0430 \u0434\u0435\u0441\u044f\u0442\u043a\u0435 \u0442\u044b\u0441\u044f\u0447 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0439 \u0446\u0432\u0435\u0442\u043e\u0432 \u2014 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u0440\u0430\u0442\u044c \u0441\u0435\u0442\u044c \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0438 \u0431\u044b\u0441\u0442\u0440\u043e \u0443\u0447\u0438\u0442\u044c. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043b\u0435\u0433\u043a\u043e\u0439 \u0441\u0435\u0442\u043a\u0438 \u043d\u0430 \u0446\u0432\u0435\u0442\u0430\u0445 \u0431\u044b\u043b\u0438 \u0432\u043f\u043e\u043b\u043d\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u043c\u044b \u0441 \u0442\u044f\u0436\u0451\u043b\u043e\u0439 \u0441\u0435\u0442\u043a\u043e\u0439, \u0434\u043e\u043b\u0433\u043e \u0443\u0447\u0438\u0432\u0448\u0435\u0439\u0441\u044f \u043d\u0430 \u0432\u0441\u0451\u043c \u043c\u043d\u043e\u0433\u043e\u043e\u0431\u0440\u0430\u0437\u0438\u0438 \u0444\u043e\u0442\u043e\u043a.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p> <!----> <!----><\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/742420\/\"> https:\/\/habr.com\/ru\/articles\/742420\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/cl\/xx\/q8\/clxxq89cekkyblw1u9gxgqhrgie.png\" data-src=\"https:\/\/habrastorage.org\/webt\/cl\/xx\/q8\/clxxq89cekkyblw1u9gxgqhrgie.png\"\/><\/p>\n<p>  <\/p>\n<p><strong>TLDR<\/strong> \u2014 \u044d\u0442\u043e \u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u044d\u0442\u043e \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u0438 \u043e\u0431\u0443\u0447\u0438\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e-\u0441\u043e\u0441\u0442\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c (GAN) \u0434\u043b\u044f \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0432 2 \u0438\u043b\u0438 4 \u0440\u0430\u0437\u0430. \u042f \u043d\u0435 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u0443\u044e \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043c\u043e\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0438\u043b\u0438 \u043f\u0443\u0442\u044c \u0440\u0430\u0441\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0439 \u043b\u0443\u0447\u0448\u0435 \u043a\u0430\u043a\u0438\u0445-\u0442\u043e \u0434\u0440\u0443\u0433\u0438\u0445. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u0441\u0442\u0430\u043b\u0438 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440\u044b \u0438 diffusion \u043c\u043e\u0434\u0435\u043b\u0438 \u2014 \u0437\u0430\u043c\u0435\u0442\u043a\u0438 \u043d\u0435 \u043f\u0440\u043e \u043d\u0438\u0445.<\/p>\n<p>  <\/p>\n<p>\u0421 \u0437\u0430\u043c\u0435\u0442\u043a\u0430\u043c\u0438 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043f\u043e\u0432\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f \u2014 \u0435\u0441\u0442\u044c \u043e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f &#171;\u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443&#187; \u0438 \u0443\u0442\u043e\u0447\u043d\u0435\u043d\u0438\u044f. \u041c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043d\u0435\u0440\u0435\u043b\u0435\u0432\u0430\u043d\u0442\u043d\u044b\u0435 \u0437\u0430\u043c\u0435\u0442\u043a\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0443\u0436\u043d\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u2014 \u0430 \u0432 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c. \u042f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043a\u0430\u0436\u0434\u0443\u044e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0437\u0430\u043c\u0435\u0442\u043a\u0443 \u043f\u043e-\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0446\u0435\u043b\u044c\u043d\u043e\u0439 \u0438 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0439 \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445.<\/p>\n<p>  <\/p>\n<p>\u042f \u0443\u0436\u0435 \u0431\u044b\u043b \u0437\u043d\u0430\u043a\u043e\u043c \u0441\u043e \u0441\u0432\u0451\u0440\u0442\u043e\u0447\u043d\u044b\u043c\u0438 \u0441\u0435\u0442\u043a\u0430\u043c\u0438, \u043d\u043e \u043c\u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e-\u0441\u043e\u0441\u0442\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0435\u0442\u0438. \u041f\u043e\u043d\u044f\u0442\u044c, \u043f\u043e\u0447\u0435\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0442\u0435 \u0438\u043b\u0438 \u0438\u043d\u044b\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b. \u041f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0438\u0434\u0435\u0438. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0443\u0447\u0438\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u0438 \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043c\u043e\u0435\u0433\u043e \u041f\u041a. \u041a\u0430\u043a\u0438\u0435-\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0438 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u043c\u0438\u043d\u0443\u0442 \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u043e\u0432, \u0441\u0430\u043c\u044b\u0439 \u0434\u043b\u0438\u043d\u043d\u044b\u0439 \u0441 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u2014 \u0442\u0440\u043e\u0435 \u0441\u0443\u0442\u043e\u043a.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-348961","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/348961","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=348961"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/348961\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=348961"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=348961"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=348961"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}