{"id":397315,"date":"2024-06-29T13:22:26","date_gmt":"2024-06-29T13:22:26","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=397315"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=397315","title":{"rendered":"<span>\u041e\u043a\u0440\u0430\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439<\/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-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0441\u043a\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d97\/b88\/195\/d97b881951b29e4f0511e77516e2b4ee.png\" width=\"873\" height=\"162\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d97\/b88\/195\/d97b881951b29e4f0511e77516e2b4ee.png\"\/><figcaption><\/figcaption><\/figure>\n<p>8 \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 \u041d\u041b\u041e \u0432\u044b\u0434\u0430\u043b\u043e \u043c\u043d\u0435 \u0438\u043d\u0432\u0430\u0439\u0442 \u0437\u0430 <a href=\"https:\/\/habr.com\/ru\/post\/183226\/\">\u0441\u0442\u0430\u0442\u044c\u044e <\/a>\u043f\u0440\u043e \u043e\u043a\u0440\u0430\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u0435 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043e\u0434\u043d\u0443 \u0438\u0437 \u0441\u0432\u0435\u0436\u0438\u0445 <a href=\"https:\/\/arxiv.org\/abs\/2106.08017\">\u0440\u0430\u0431\u043e\u0442<\/a> \u0432 \u044d\u0442\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438: Color2Embed: Fast Exemplar-Based Image Colorization using Color Embeddings. \u0417\u0434\u0435\u0441\u044c \u0431\u0443\u0434\u0435\u0442 \u043c\u043e\u0439 \u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0441\u043a\u0430\u0437 \u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u043c\u0438, \u043d\u0443 \u0438 \u043c\u043d\u043e\u0433\u043e \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a.<\/p>\n<h2>TL;DR:<\/h2>\n<p>\u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u044c \u0446\u0432\u0435\u0442 \u0441 \u043e\u0434\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u043d\u0430 \u0434\u0440\u0443\u0433\u0443\u044e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043c\u0435\u0441\u0438 \u0438\u0437 U-Net \u0438 StyleGAN v2. \u0415\u0441\u043b\u0438 \u044d\u0442\u0438 \u0441\u043b\u043e\u0432\u0430 \u0432\u0430\u043c \u043d\u0438 \u043e \u0447\u0435\u043c \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u044f\u0442 \u2014 \u043f\u0440\u043e\u043b\u0438\u0441\u0442\u0430\u0439\u0442\u0435 \u0432\u043d\u0438\u0437, \u0442\u0430\u043c \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438. \u041c\u043e\u0439 \u043a\u043e\u0434 <a href=\"https:\/\/github.com\/Kwentar\/Color2Embed_pytorch\">\u0437\u0434\u0435\u0441\u044c<\/a>, \u043a\u043e\u0434 \u0430\u0432\u0442\u043e\u0440\u043e\u0432 <a href=\"https:\/\/github.com\/zhaohengyuan1\/Color2Embed\">\u0442\u0443\u0442<\/a>, \u0435\u0449\u0435 \u044f \u0441\u0434\u0435\u043b\u0430\u043b Google Colab <a href=\"https:\/\/colab.research.google.com\/drive\/1Xyq-kuTWzvoQH4r7d5C7YN7sVe19pUv0#scrollTo=6Nm25AlJzmyn\">\u0442\u0435\u0442\u0440\u0430\u0434\u043a\u0443<\/a>, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438. <\/p>\n<details class=\"spoiler\">\n<summary>\u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043f\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0443 Google Colab<\/summary>\n<div class=\"spoiler__content\">\n<p>Google Colab &#8212; \u042d\u0442\u043e \u0442\u0430\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0442 \u0413\u0443\u0433\u043b\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c Jupyter Notebook \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043d\u0430 \u0438\u0445 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044f\u0445 \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043a GPU \u0438 TPU \u0438 \u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0438\u043c\u0438.<\/p>\n<ol>\n<li>\n<p>\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443;<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0436\u0430\u0442\u044c \u0441\u043f\u0440\u0430\u0432\u0430 \u0441\u0432\u0435\u0440\u0445\u0443 \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f (Connect) \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e, \u0435\u0441\u043b\u0438 \u043d\u0435\u0442 \u0442\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0431 \u041e\u0417\u0423 \u0438 \u0434\u0438\u0441\u043a\u0435;<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0436\u0430\u0442\u044c \u0432 \u043c\u0435\u043d\u044e \u0441\u0432\u0435\u0440\u0445\u0443 \u0421\u0440\u0435\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f -> \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0432\u0441\u0435 (Runtime -> run all);<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u043a\u0440\u0443\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u0437 \u0434\u043e \u043a\u0443\u0441\u043a\u0430 \u0441 \u043a\u043e\u0434\u043e\u043c:<\/p>\n<pre><code class=\"python\">target_image_uploaded = files.upload() ref_image_uploaded = files.upload() target_image_path = list(target_image_uploaded.keys())[0] ref_image_path = list(ref_image_uploaded.keys())[0] predict_colors(target_image_path, ref_image_path, model)<\/code><\/pre>\n<p>\u041f\u043e\u0434\u043e\u0436\u0434\u0430\u0442\u044c, \u043f\u043e\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f \u0434\u043e \u043d\u0435\u0433\u043e (\u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f, \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0432\u0435\u0441\u043e\u0432 \u0438 \u0442.\u0434., \u0437\u0430\u0439\u043c\u0435\u0442 \u043c\u0438\u043d\u0443\u0442\u0443-\u0434\u0432\u0435) \u0438 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043a\u043d\u043e\u043f\u043a\u0430:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a25\/896\/612\/a2589661263cc78ee9e4c7528f741c8d.png\" alt=\"\u041a\u043d\u043e\u043f\u043a\u0430 \u0432\u044b\u0431\u043e\u0440\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438\" title=\"\u041a\u043d\u043e\u043f\u043a\u0430 \u0432\u044b\u0431\u043e\u0440\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438\" width=\"234\" height=\"27\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a25\/896\/612\/a2589661263cc78ee9e4c7528f741c8d.png\"\/><figcaption>\u041a\u043d\u043e\u043f\u043a\u0430 \u0432\u044b\u0431\u043e\u0440\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438<\/figcaption><\/figure>\n<\/li>\n<li>\n<p>\u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0441\u043f\u0435\u0440\u0432\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 (\u043f\u043e \u043e\u0434\u043d\u043e\u0439 \u0437\u0430 \u0440\u0430\u0437, \u0442\u0430\u043c \u0434\u0432\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443, \u0432\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0431\u043e\u0440\u0430 \u043f\u0435\u0440\u0432\u043e\u0439), \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043a\u0440\u0430\u0441\u0438\u0442\u044c, \u043f\u043e\u0442\u043e\u043c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0445\u043e\u0442\u0438\u043c \u0432\u0437\u044f\u0442\u044c \u0446\u0432\u0435\u0442\u0430;<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043c\u0435\u043d\u044c\u0448\u0435 \u0441\u0435\u043a\u0443\u043d\u0434\u044b (~300 \u043c\u0441) \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a. \u041f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d13\/3ad\/15f\/d133ad15f8a61df3b9807c629b71b32d.png\" width=\"1004\" height=\"432\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d13\/3ad\/15f\/d133ad15f8a61df3b9807c629b71b32d.png\"\/><figcaption><\/figcaption><\/figure>\n<\/li>\n<\/ol>\n<\/div>\n<\/details>\n<h2>\u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435, \u0432\u0438\u0434 \u0441\u0432\u0435\u0440\u0445\u0443<\/h2>\n<p>\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0438\u0437 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/133\/0d3\/e70\/1330d3e703c86ce7a57932e5835f26e8.png\" width=\"1333\" height=\"700\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/133\/0d3\/e70\/1330d3e703c86ce7a57932e5835f26e8.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0414\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0437\u0430 \u0440\u0430\u0437 \u043d\u0443\u0436\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0430 \u0446\u0432\u0435\u0442\u043d\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430, <img decoding=\"async\" class=\"formula inline\" source=\"GT\" alt=\"GT\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3f1\/159\/53c\/3f115953c28c5c5076641f93eb443329.svg\"\/>(ground truth). \u0418\u0437 \u043d\u0435\u0435 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0434\u0432\u0430 \u0432\u0445\u043e\u0434\u0430: \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u0443\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0439 (\u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0438\u0436\u0435) \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043d\u0443\u044e \u0442\u0440\u0435\u0445\u043a\u0430\u043d\u0430\u043b\u044c\u043d\u0443\u044e RGB \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443, \u043d\u0430 \u0441\u0445\u0435\u043c\u0435 \u044d\u0442\u043e <img decoding=\"async\" class=\"formula inline\" source=\"R_{rgb}\" alt=\"R_{rgb}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/948\/94d\/eb4\/94894deb4371649882daf0b7cddec1fd.svg\"\/>; \u0432\u0442\u043e\u0440\u0443\u044e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f <img decoding=\"async\" class=\"formula inline\" source=\"GT\" alt=\"GT\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b81\/d98\/a02\/b81d98a0237983f997a113972f996c20.svg\"\/>\u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e <a href=\"https:\/\/en.wikipedia.org\/wiki\/CIELAB_color_space\">Lab <\/a>\u2014 \u0431\u0435\u0440\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u043a\u0430\u043d\u0430\u043b L (lightness), \u043d\u0430 \u0441\u0445\u0435\u043c\u0435 \u044d\u0442\u043e <img decoding=\"async\" class=\"formula inline\" source=\"T_L\" alt=\"T_L\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/439\/8c2\/2a3\/4398c22a337b8d9137302e6040148c1b.svg\"\/>. \u041a\u0430\u043d\u0430\u043b\u044b <img decoding=\"async\" class=\"formula inline\" source=\"a\" alt=\"a\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/076\/554\/0b3\/0765540b37ae76369aa9c1479dee0ec7.svg\"\/>\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"b\" alt=\"b\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1d1\/fd5\/d82\/1d1fd5d82f3a16297b6486756c687a67.svg\"\/>\u0442\u043e\u0436\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c, \u043e\u043d\u0438 \u043f\u0440\u0438\u0433\u043e\u0434\u044f\u0442\u0441\u044f \u0434\u043b\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0442\u0435\u0440\u044c \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c, \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442\u0441\u044f \u043e\u043d\u0438<img decoding=\"async\" class=\"formula inline\" source=\"GT_{ab}\" alt=\"GT_{ab}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5b2\/4f7\/798\/5b24f779850fe8177a576a4e87c75409.svg\"\/>. <\/p>\n<p>\u0412\u044b\u0445\u043e\u0434\u043e\u043c \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0434\u0432\u0430 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u0446\u0432\u0435\u0442\u043d\u044b\u0445 \u043a\u0430\u043d\u0430\u043b\u0430 \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 <img decoding=\"async\" class=\"formula inline\" source=\"T_L\" alt=\"T_L\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9b5\/cc7\/1c8\/9b5cc71c895a56179cba94cc966d35de.svg\"\/> \u2014 \u043a\u0430\u043d\u0430\u043b\u044b <img decoding=\"async\" class=\"formula inline\" source=\"a\" alt=\"a\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2c9\/ef1\/9b8\/2c9ef19b8b97f78bb0a7fbdddd8548b8.svg\"\/>\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"b\" alt=\"b\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f8b\/d8a\/652\/f8bd8a6521ec5b7b61c381b13864fce9.svg\"\/>, \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442\u0441\u044f \u043e\u043d\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"P_{ab}\" alt=\"P_{ab}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a3b\/e5e\/a89\/a3be5ea894cba84ec32bf3a61b300591.svg\"\/>, \u0438\u043b\u0438, \u043a\u043e\u0433\u0434\u0430 \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u043c \u0441 <img decoding=\"async\" class=\"formula inline\" source=\"T_L\" alt=\"T_L\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cfc\/928\/cdd\/cfc928cddccd4a92572ee78a4cb79d3b.svg\"\/>, \u2014 <img decoding=\"async\" class=\"formula inline\" source=\"P_{Lab}\" alt=\"P_{Lab}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5bc\/3ca\/a30\/5bc3caa309e9d0e237a84034a814d326.svg\"\/>.<\/p>\n<p>\u041f\u043e\u0434\u0430\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u0443 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u043d\u0430 \u0432\u0445\u043e\u0434 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e, \u0442\u0430\u043a \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0431\u0440\u0430\u0442\u044c \u0431\u0430\u0437\u0443 \u0431\u0435\u0437 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438, \u043d\u0435 \u043d\u0443\u0436\u043d\u044b \u043d\u0438 \u043a\u043b\u0430\u0441\u0441\u044b, \u043d\u0438 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0434\u0440\u0443\u0433\u0438\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438. <\/p>\n<p>\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0442\u0440\u0435\u0445 \u0447\u0430\u0441\u0442\u0435\u0439: \u041a\u043e\u0434\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u0446\u0432\u0435\u0442\u0430 (<strong>Color encoder<\/strong>, <img decoding=\"async\" class=\"formula inline\" source=\"E_c\" alt=\"E_c\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/146\/4ed\/405\/1464ed4059d5aae8c0617240c3370d14.svg\"\/>), \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 (<strong>Content encoder<\/strong>, <img decoding=\"async\" class=\"formula inline\" source=\"E_s\" alt=\"E_s\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/401\/0e9\/cd9\/4010e9cd9eeba2764fe51c7ea22e6f25.svg\"\/>) \u0438 \u043d\u0435\u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043c\u043e\u0439 <strong>PFFN<\/strong> (progressive feature formalisation network). \u041a\u043e\u0434\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0446\u0432\u0435\u0442\u0430 \u0441\u0436\u0438\u043c\u0430\u0435\u0442 \u0446\u0432\u0435\u0442\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0434\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0441 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e \u0446\u0432\u0435\u0442\u0435, \u041a\u043e\u0434\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0441\u0436\u0438\u043c\u0430\u0435\u0442 \u043e\u0434\u043d\u043e\u043a\u0430\u043d\u0430\u043b\u044c\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0434\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u0430 &#171;\u0441\u043c\u044b\u0441\u043b\u0430&#187;, \u0430 PFFN \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e\u0433\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0446\u0432\u0435\u0442\u043e\u0432\u044b\u0435 \u043a\u0430\u043d\u0430\u043b\u044b.<\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u0439 \u043f\u043e\u0442\u0435\u0440\u044c \u0434\u0432\u0435:<\/p>\n<ol>\n<li>\n<p> <img decoding=\"async\" class=\"formula inline\" source=\"\\mathcal{L}_{recon}\" alt=\"\\mathcal{L}_{recon}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/da4\/6b3\/00c\/da46b300cf0c3992ee4325d48abfabee.svg\"\/>\u2014 <strong>reconstruction loss<\/strong>, \u043e\u043d \u0436\u0435 <a href=\"https:\/\/pytorch.org\/docs\/stable\/generated\/torch.nn.SmoothL1Loss.html\">SmoothL1Loss<\/a>, \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442 <img decoding=\"async\" class=\"formula inline\" source=\"GT_{ab} \" alt=\"GT_{ab} \" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/477\/f49\/d9f\/477f49d9f5fa2de2298c8c8bfed24c41.svg\"\/>\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"P_{ab}\" alt=\"P_{ab}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/103\/d34\/b0f\/103d34b0fc7383fbed1e8cfe199ceb8d.svg\"\/>.<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"\\mathcal{L}_{perc} \" alt=\"\\mathcal{L}_{perc} \" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/793\/21c\/1a2\/79321c1a2ecbc43823e182e9d2d4c7c7.svg\"\/>\u2014 <strong>perceptual loss<\/strong>, \u0442\u043e\u0442 \u0436\u0435 <a href=\"https:\/\/pytorch.org\/docs\/stable\/generated\/torch.nn.L1Loss.html\">L1Loss<\/a>, \u043d\u043e \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0430\u0445 VGG \u0441\u0435\u0442\u0438. \u041d\u0430 \u0432\u0445\u043e\u0434 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0432 RGB <img decoding=\"async\" class=\"formula inline\" source=\"GT\" alt=\"GT\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c0c\/dd7\/220\/c0cdd72203f4ffa5cf3c83994100d468.svg\"\/> \u0438 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0432 RGB <img decoding=\"async\" class=\"formula inline\" source=\"P_{rgb}\" alt=\"P_{rgb}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e73\/788\/e5e\/e73788e5eafc87c6ee94ae513a8ef67c.svg\"\/>, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0443\u044e \u0438\u0437 <img decoding=\"async\" class=\"formula inline\" source=\"P_{Lab}\" alt=\"P_{Lab}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/648\/9a2\/f9a\/6489a2f9a58fb8da64a0f7152f5366db.svg\"\/>. <\/p>\n<\/li>\n<\/ol>\n<p>\u041e\u0431\u0449\u0438\u0439 \u043b\u043e\u0441\u0441 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0437\u0432\u0435\u0448\u0435\u043d\u043d\u043e\u0439 \u0441\u0443\u043c\u043c\u043e\u0439: <img decoding=\"async\" class=\"formula inline\" source=\"\\mathcal{L}_{total}=\\mathcal{L}_{recon} + 0.1*\\mathcal{L}_{perc}\" alt=\"\\mathcal{L}_{total}=\\mathcal{L}_{recon} + 0.1*\\mathcal{L}_{perc}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d0c\/2a1\/dc4\/d0c2a1dc4d7911f6d1bcb38770fa10f5.svg\"\/><\/p>\n<p>\u0414\u043b\u044f \u0441\u0435\u0431\u044f \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044f \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u043b \u0442\u0430\u043a\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u2014 \u043c\u043e\u0436\u0435\u0442, \u043a\u043e\u043c\u0443-\u0442\u043e \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u043d\u0435\u0439:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f90\/2eb\/29f\/f902eb29fdea2b1ac5c4865888943889.png\" width=\"2823\" height=\"3085\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f90\/2eb\/29f\/f902eb29fdea2b1ac5c4865888943889.png\"\/><figcaption><\/figcaption><\/figure>\n<h2>\u0410\u0443\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0446\u0432\u0435\u0442\u043d\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/h2>\n<p>\u0410\u0432\u0442\u043e\u0440\u044b \u0432\u044b\u0434\u0432\u0438\u0433\u0430\u044e\u0442 \u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u0442\u0435\u0437\u0438\u0441: \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0434\u0430\u0432\u0430\u0442\u044c \u0446\u0432\u0435\u0442\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u043a\u0430\u043a \u0435\u0441\u0442\u044c \u0438 \u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0435\u0435 \u0436\u0435 \u0440\u0430\u0441\u043a\u0440\u0430\u0441\u0438\u0442\u044c, \u0442\u043e \u0443 \u0441\u0435\u0442\u043a\u0438 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0441\u043e\u0431\u043b\u0430\u0437\u043d \u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0438\u0442\u044c\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d\u0438 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u044f\u0434 \u0430\u0443\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0439, \u043e\u0442 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 (\u043f\u043e\u0432\u043e\u0440\u043e\u0442\u044b \u0438 \u0448\u0443\u043c), \u0434\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439: \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c \u043a \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Thin_plate_spline\">thin\u00a0plate\u00a0spline<\/a> (TSP), \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0437\u0430\u0431\u0430\u0432\u043d\u043e \u0438\u0441\u043a\u0430\u0436\u0430\u0442\u044c \u0435\u0451:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4c7\/0aa\/1d4\/4c70aa1d47ff463a8597c1f047132723.png\" width=\"502\" height=\"316\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4c7\/0aa\/1d4\/4c70aa1d47ff463a8597c1f047132723.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0412 \u043c\u043e\u0435\u043c <a href=\"https:\/\/github.com\/Kwentar\/Color2Embed_pytorch\/blob\/73344fc217771b48139730680607f63471b79915\/color2embed\/test_parts.ipynb\">\u0431\u043b\u043e\u043a\u043d\u043e\u0442\u0435 <\/a>\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0437\u043e\u0432\u0430 \u0438\u0437 \u043a\u043e\u0434\u0430 (\u0441\u0435\u043a\u0446\u0438\u044f TSP Example), \u0441\u0430\u043c \u043a\u043e\u0434 \u0432 <a href=\"https:\/\/github.com\/Kwentar\/Color2Embed_pytorch\/blob\/73344fc217771b48139730680607f63471b79915\/color2embed\/tsp.py\">tsp.py<\/a><\/p>\n<h2>\u041a\u043e\u0434\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0446\u0432\u0435\u0442\u0430<\/h2>\n<p>\u041a\u043e\u0434\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0446\u0432\u0435\u0442\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"E_c\" alt=\"E_c\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5ac\/b6b\/886\/5acb6b886f9178c8220d736f79f137dd.svg\"\/>\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u2014 \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u0430\u044f \u0441\u0435\u0442\u044c \u0434\u043b\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438. \u0410\u0432\u0442\u043e\u0440\u044b \u0438\u0437\u043e\u0431\u0440\u0435\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0441\u0432\u043e\u0435, \u044f \u043d\u0435 \u0443\u0432\u0438\u0434\u0435\u043b \u0441\u043c\u044b\u0441\u043b\u0430 \u0432 \u044d\u0442\u043e\u043c \u043a\u043e\u0441\u0442\u044b\u043b\u0435\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0438 \u0438 \u0432\u0437\u044f\u043b \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0438 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 resnet18. <\/p>\n<p>\u0412\u044b\u0445\u043e\u0434\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0435\u043a\u0442\u043e\u0440, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0446\u0432\u0435\u0442\u0435, \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d <img decoding=\"async\" class=\"formula inline\" source=\"Z\" alt=\"Z\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/82e\/f12\/a25\/82ef12a25a6eb5d8253b9e889593585f.svg\"\/>. \u042d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u0432\u0435\u043a\u0442\u043e\u0440 \u0441\u0442\u0438\u043b\u044f \u0432 StyleGAN. \u0420\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c \u0435\u0433\u043e \u0430\u0432\u0442\u043e\u0440\u044b \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e\u0442 \u0432\u0437\u044f\u0442\u044c 512, \u0442\u0443\u0442 \u044f \u0441 \u043d\u0438\u043c\u0438 \u0441\u043f\u043e\u0440\u0438\u0442\u044c \u043d\u0435 \u0441\u0442\u0430\u043b. <\/p>\n<h2>\u041a\u043e\u0434\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430+ PFFN<\/h2>\n<p>\u041a\u043e\u0434\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0438 PFFN \u0432\u043c\u0435\u0441\u0442\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0431\u043e\u0439 \u043f\u043e\u0445\u043e\u0436\u0443\u044e \u043d\u0430 U-Net \u0441\u0435\u0442\u044c \u0441 \u043e\u0434\u043d\u0438\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043e\u0442\u043b\u0438\u0447\u0438\u0435\u043c: \u0432 \u0447\u0430\u0441\u0442\u0438 \u00ab\u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0438\u00bb, \u043a\u0440\u043e\u043c\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0441 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u044d\u0442\u0430\u043f\u043e\u0432, \u043d\u0430\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0446\u0432\u0435\u0442\u0435 \u0441 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u0446\u0432\u0435\u0442\u0430. \u0410\u0432\u0442\u043e\u0440\u044b \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u044d\u0442\u043e PFFN, \u0438\u0434\u0435\u044f \u0432\u0437\u044f\u0442\u0430 \u0438\u0437 StyleGANv2, \u0438 \u0441\u0435\u0440\u0434\u0446\u0435\u043c \u0435\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u0447\u0442\u043e \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 <strong>Modulated Convolution.  <\/strong>Modulated Convolution \u2014 \u044d\u0442\u043e \u0442\u0430\u043a\u0430\u044f \u0441\u0432\u0435\u0440\u0442\u043a\u0430, \u0441 \u0432\u0435\u0441\u0430\u043c\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u044b \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0438\u0433\u0440\u0430\u0435\u043c.<strong> <\/strong>\u041e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c\u0441\u044f \u043d\u0430 \u044d\u0442\u043e\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435, \u0441\u0445\u0435\u043c\u0430 \u0438\u0437 \u0441\u0442\u0430\u0442\u044c\u0438:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d3e\/11f\/4b3\/d3e11f4b36db8b8638ff0e2d8051f070.png\" width=\"1184\" height=\"408\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d3e\/11f\/4b3\/d3e11f4b36db8b8638ff0e2d8051f070.png\"\/><figcaption><\/figcaption><\/figure>\n<details class=\"spoiler\">\n<summary>\u041a\u043e\u0434 \u043d\u0430 PyTorch<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"python\">class ModulatedConv2d(nn.Module):     def __init__(             self,             in_channel,             out_channel,             kernel_size,             style_dim     ):         # Part from https:\/\/github.com\/rosinality\/stylegan2-pytorch\/blob\/a2f38914bb5049894c37f2d7a9854bc130cf8a27\/model.py         super().__init__()          self.eps = 1e-8         self.kernel_size = kernel_size         self.in_channel = in_channel         self.out_channel = out_channel          fan_in = in_channel * kernel_size ** 2         self.scale = 1 \/ math.sqrt(fan_in)         self.padding = kernel_size \/\/ 2          self.weight = nn.Parameter(             torch.randn(1, out_channel, in_channel, kernel_size, kernel_size)         )         self.weight_linear = nn.Parameter(torch.randn(in_channel, style_dim))         self.bias_linear = nn.Parameter(torch.zeros(in_channel).fill_(1))      def __repr__(self):         return (             f\"{self.__class__.__name__}({self.in_channel}, {self.out_channel}, {self.kernel_size})\"         )      def forward(self, input_, style):         batch, in_channel, height, width = input_.shape          # Linear         style = F.linear(style, self.weight_linear * self.scale, bias=self.bias_linear)          # Dot         weight = self.scale * self.weight * style.view(batch, 1, in_channel, 1, 1)           # Norm         Fnorm = torch.rsqrt(weight.pow(2).sum([2, 3, 4]) + 1e-8)         weight = weight * Fnorm.view(batch, self.out_channel, 1, 1, 1)          # Convolve         weight = weight.view(batch * self.out_channel, in_channel, self.kernel_size, self.kernel_size)         input_ = input_.view(1, batch * in_channel, height, width)         out = F.conv2d(input_, weight, padding=self.padding,  groups=batch)          _, _, height, width = out.shape         out = out.view(batch, self.out_channel, height, width)         return out<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0412\u0445\u043e\u0434\u0430 \u0443 \u043d\u0430\u0441 \u0434\u0432\u0430: \u0432\u0435\u043a\u0442\u043e\u0440 \u0446\u0432\u0435\u0442\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"Z\" alt=\"Z\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b25\/c8e\/0ff\/b25c8e0ff5221e0fc33c34b896ad00c8.svg\"\/>\u0438 \u0432\u044b\u0445\u043e\u0434 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0441\u043b\u043e\u044f-\u0441\u0432\u0435\u0440\u0442\u043a\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"d\" alt=\"d\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f28\/241\/236\/f282412367ca12e1a1114e91657f6d34.svg\"\/>. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0430\u0431\u043e\u0440 \u0432\u0435\u0441\u043e\u0432: \u0432\u0435\u0441\u0430 \u0441\u0432\u0435\u0440\u0442\u043a\u0438 \u0438 \u0432\u0435\u0441\u0430 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u044f. \u041b\u0438\u043d\u0435\u0439\u043d\u044b\u0439 \u0441\u043b\u043e\u0439 \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c \u0432\u0435\u043a\u0442\u043e\u0440\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"Z\" alt=\"Z\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/04e\/48e\/6a0\/04e48e6a0d1ddfae3a6744fee6591ced.svg\"\/>,\u0442\u0430\u043a \u043a\u0430\u043a \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u0432 \u0441\u0432\u0435\u0440\u0442\u043a\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043d\u0430 \u043a\u0430\u043a\u043e\u043c \u043c\u044b \u044d\u0442\u0430\u043f\u0435 (\u0447\u0435\u043c \u0431\u043b\u0438\u0436\u0435 \u043a \u0432\u044b\u0445\u043e\u0434\u0443, \u0442\u0435\u043c \u043c\u0435\u043d\u044c\u0448\u0435 \u043a\u0430\u043d\u0430\u043b\u043e\u0432). \u0422\u043e \u0435\u0441\u0442\u044c, \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u0435\u043a\u0442\u043e\u0440 \u0446\u0432\u0435\u0442\u0430, \u043d\u043e \u0443\u0436\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u0435 512, \u0430 <img decoding=\"async\" class=\"formula inline\" source=\"C\" alt=\"C\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b1d\/f8c\/a50\/b1df8ca50cd5f5654c5e7d94bde7c433.svg\"\/>. <\/p>\n<p>\u0412\u0442\u043e\u0440\u043e\u0435 \u043d\u0430\u0448\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435: \u043c\u044b \u0443<strong>\u043c\u043d\u043e\u0436\u0430\u0435\u043c \u0432\u0435\u0441\u0430<\/strong> \u0441\u0432\u0435\u0440\u0442\u043a\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"w\" alt=\"w\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cb4\/d91\/16d\/cb4d9116dee0a28b40e158005e969721.svg\"\/>\u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 \u0446\u0432\u0435\u0442\u0430 (dot product), \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"w'\" alt=\"w'\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/222\/93e\/2cb\/22293e2cb65a8f81085d73836a3a63de.svg\"\/>. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043f\u043e\u0441\u043b\u0435 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u044b \u043d\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0432\u0435\u0441\u0430, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"w''\" alt=\"w''\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/402\/23b\/0b6\/40223b0b6e46d35c05c93a156af20ee3.svg\"\/>. <\/p>\n<p>\u041d\u0430\u043c \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u2014 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u0432\u0435\u0440\u0442\u043a\u0430, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0444\u0438\u0447\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"g\" alt=\"g\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8a1\/df0\/901\/8a1df0901f68b49c7ce9690a718263cf.svg\"\/>\u0438\u0434\u0443\u0442 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u044d\u0442\u0430\u043f.<\/p>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u0440\u0430\u0437\u0431\u043e\u0440 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u0435\u043c\u0430 \u043e\u043f\u0438\u0441\u0430\u043d \u0432 <a href=\"https:\/\/arxiv.org\/abs\/1912.04958\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a>, \u0442\u0430\u043c \u043e\u043d \u0431\u044b\u043b \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043d \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432 \u043f\u0440\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439.<\/p>\n<p>Modulated Convolution \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 &#171;\u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0438&#187; U-Net, \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u0438\u043c PFFN \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 <a href=\"https:\/\/github.com\/milesial\/Pytorch-UNet\">\u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430<\/a>.<\/p>\n<h2>\u041f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0435<\/h2>\n<p>\u041d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0446\u0432\u0435\u0442\u0430 \u043c\u044b \u0431\u0435\u0440\u0435\u043c \u0442\u0443 \u0436\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443, \u0447\u0442\u043e \u0438 \u0445\u043e\u0442\u0438\u043c \u043e\u043a\u0440\u0430\u0441\u0438\u0442\u044c. \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u043d\u0430 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0438 \u0442\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f. \u041d\u043e \u043d\u0430\u0448\u0438 \u0430\u0443\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043e\u043a\u0430\u0437\u0430\u043b\u0438 \u043d\u0430\u043c \u0443\u0441\u043b\u0443\u0433\u0443: \u0435\u0441\u043b\u0438 \u0432\u0437\u044f\u0442\u044c \u043f\u043e\u0445\u043e\u0436\u0443\u044e \u0446\u0432\u0435\u0442\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443, \u0442\u043e \u0432\u0441\u0435 \u0445\u043e\u0440\u043e\u0448\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u0440\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0442\u043e\u043d\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043e\u043a\u0440\u0430\u0441\u043a\u0438 (\u0445\u043e\u0442\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0446\u0432\u0435\u0442\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0438\u043a\u0430\u043a \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c\u0441\u044f). <\/p>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u043b\u0438\u0441\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0438\u0437 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f6d\/57e\/d92\/f6d57ed921c2367add15af80bd55bdeb.png\" alt=\"\u0425\u043e\u0440\u043e\u0448\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b\" title=\"\u0425\u043e\u0440\u043e\u0448\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b\" width=\"771\" height=\"867\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f6d\/57e\/d92\/f6d57ed921c2367add15af80bd55bdeb.png\"\/><figcaption>\u0425\u043e\u0440\u043e\u0448\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b<\/figcaption><\/figure>\n<p>\u041a \u0447\u0435\u0441\u0442\u0438 \u0430\u0432\u0442\u043e\u0440\u043e\u0432, \u043c\u043e\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0438\u0437 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0434\u0438\u043d \u0432 \u043e\u0434\u0438\u043d. \u041f\u0440\u0430\u0432\u0434\u0430, \u0435\u0441\u0442\u044c \u043b\u043e\u0436\u043a\u0430 \u0434\u0451\u0433\u0442\u044f: \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0445\u043e\u0440\u043e\u0448\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b, \u0430 \u0435\u0441\u043b\u0438 \u0432\u0437\u044f\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0437  \u0434\u0440\u0443\u0433\u043e\u0439 <a href=\"https:\/\/arxiv.org\/abs\/1807.06587\">\u0441\u0442\u0430\u0442\u044c\u0438<\/a>, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0430\u0432\u0442\u043e\u0440\u044b \u0443\u043b\u0443\u0447\u0448\u0430\u044e\u0442 \u0438 \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f, \u0442\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0432\u0438\u0434\u043d\u044b:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/00e\/042\/02c\/00e04202c71e688a4481c8004d4c9f0b.png\" alt=\"\u041d\u0435 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b\" title=\"\u041d\u0435 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b\" width=\"847\" height=\"418\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/00e\/042\/02c\/00e04202c71e688a4481c8004d4c9f0b.png\"\/><figcaption>\u041d\u0435 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b<\/figcaption><\/figure>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043a\u0440\u0430\u0441\u0438\u0442\u044c \u043e\u0434\u043d\u0443 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0440\u0430\u0437\u043d\u044b\u043c\u0438:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/48f\/3a9\/1b7\/48f3a91b7206bbf021076704d7025e27.png\" alt=\"\" title=\"\" width=\"884\" height=\"714\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/48f\/3a9\/1b7\/48f3a91b7206bbf021076704d7025e27.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041a\u043e\u0433\u0434\u0430 \u044f \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0434\u0440\u0443\u0433\u0438\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438, \u0437\u0430\u043c\u0435\u0442\u0438\u043b, \u0447\u0442\u043e \u043d\u0430\u0439\u0442\u0438 \u0443\u0434\u0430\u0447\u043d\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0441\u0438\u043b\u044c\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u0447\u0435\u043c \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u044b\u0435. \u041c\u043d\u043e\u0433\u0438\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0431\u0435\u0441\u0446\u0432\u0435\u0442\u043d\u044b\u043c\u0438, \u0438\u043b\u0438 \u0441\u043a\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u0441\u0435\u043f\u0438\u044e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u043a \u044d\u0442\u043e\u0442 \u043a\u043e\u0442:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a7a\/a0a\/626\/a7aa0a626a2568a646c70a313547600e.png\" alt=\"\" title=\"\" width=\"884\" height=\"191\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a7a\/a0a\/626\/a7aa0a626a2568a646c70a313547600e.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0411\u043e\u043d\u0443\u0441: \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f \u043a\u0440\u0430\u0441\u0438\u043b 8 \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 \u0432\u0441\u0435 \u0435\u0449\u0435 \u043a\u0440\u0430\u0441\u0438\u0442\u0441\u044f \u0445\u043e\u0440\u043e\u0448\u043e:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0d2\/035\/147\/0d203514747618ec5f9e500e507f27e8.png\" width=\"884\" height=\"217\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0d2\/035\/147\/0d203514747618ec5f9e500e507f27e8.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u0432 <a href=\"https:\/\/colab.research.google.com\/drive\/1Xyq-kuTWzvoQH4r7d5C7YN7sVe19pUv0#scrollTo=6Nm25AlJzmyn\">colab<\/a> \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438.<\/p>\n<h2>\u041a\u0440\u0438\u0442\u0438\u043a\u0430<\/h2>\n<ol>\n<li>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b, \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435, \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u2014 \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0437\u0434\u043e\u0440\u043e\u0432\u043e \u0438 \u043d\u0435 \u0447\u0430\u0441\u0442\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u043d\u0430\u0448\u0435 \u0432\u0440\u0435\u043c\u044f.<\/p>\n<\/li>\n<li>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u0439 \u0436\u0435 \u0441\u0430\u043c\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0432 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 \u2014 \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e, \u043d\u043e, \u044f \u0434\u0443\u043c\u0430\u044e, \u044d\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u0447\u0438\u043d\u043e\u0439 \u0443\u0437\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 \u0440\u0430\u0431\u043e\u0442: \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0438 \u0434\u043b\u044f \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430. \u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0430\u044f \u0438\u0434\u0435\u044f \u2014 \u0431\u0440\u0430\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0438\u0437 \u0442\u043e\u0433\u043e \u0436\u0435 \u043a\u043b\u0430\u0441\u0441\u0430 \u2014 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u0440\u043e\u0431\u0430\u0441\u0442\u043d\u043e\u0439.<\/p>\n<\/li>\n<li>\n<p>\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0438\u043b\u043b\u0435\u0440-\u0444\u0438\u0447\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b, \u043e\u043d\u0430 \u0432 \u0440\u0430\u0437\u044b \u0432\u044b\u0448\u0435, \u0447\u0435\u043c \u0443 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043e\u0432, \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u0447\u0430\u0441\u0442\u0438 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0435 \u0438 \u0431\u044b\u0441\u0442\u0440\u044b\u0435.<\/p>\n<\/li>\n<li>\n<p>\u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0443 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u043c \u0431\u0440\u0430\u0442\u044c \u0446\u0432\u0435\u0442. \u0418\u0434\u0435\u044f \u0441\u043e \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0438\u043a\u0430 \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a-\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0446\u0432\u0435\u0442\u0430 \u2014 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u043c\u043e\u0436\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e, \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0435\u0439 \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e.<\/p>\n<\/li>\n<\/ol>\n<h2>\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438:<\/h2>\n<ol>\n<li>\n<p><a href=\"https:\/\/arxiv.org\/abs\/2106.08017\">\u0421\u0430\u043c\u0430 \u0441\u0442\u0430\u0442\u044c\u044f<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/arxiv.org\/abs\/1807.06587\">\u0421\u0442\u0430\u0442\u044c\u044f-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/arxiv.org\/abs\/1912.04958\">StyleGANv2<\/a> (Modulated Convolutional)<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/zhaohengyuan1\/Color2Embed\">\u041a\u043e\u0434 \u0430\u0432\u0442\u043e\u0440\u043e\u0432<\/a> (PyTorch)<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/Kwentar\/Color2Embed_pytorch\">\u041a\u043e\u0434 \u043c\u043e\u0439<\/a> (PyTorch)<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/colab.research.google.com\/drive\/1Xyq-kuTWzvoQH4r7d5C7YN7sVe19pUv0#scrollTo=6Nm25AlJzmyn\">Colab<\/a><\/p>\n<\/li>\n<\/ol>\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\/586122\/\"> https:\/\/habr.com\/ru\/articles\/586122\/<\/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-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0441\u043a\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>8 \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 \u041d\u041b\u041e \u0432\u044b\u0434\u0430\u043b\u043e \u043c\u043d\u0435 \u0438\u043d\u0432\u0430\u0439\u0442 \u0437\u0430 <a href=\"https:\/\/habr.com\/ru\/post\/183226\/\">\u0441\u0442\u0430\u0442\u044c\u044e <\/a>\u043f\u0440\u043e \u043e\u043a\u0440\u0430\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u0435 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043e\u0434\u043d\u0443 \u0438\u0437 \u0441\u0432\u0435\u0436\u0438\u0445 <a href=\"https:\/\/arxiv.org\/abs\/2106.08017\">\u0440\u0430\u0431\u043e\u0442<\/a> \u0432 \u044d\u0442\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438: Color2Embed: Fast Exemplar-Based Image Colorization using Color Embeddings. \u0417\u0434\u0435\u0441\u044c \u0431\u0443\u0434\u0435\u0442 \u043c\u043e\u0439 \u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0441\u043a\u0430\u0437 \u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u043c\u0438, \u043d\u0443 \u0438 \u043c\u043d\u043e\u0433\u043e \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a.<\/p>\n<h2>TL;DR:<\/h2>\n<p>\u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u044c \u0446\u0432\u0435\u0442 \u0441 \u043e\u0434\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u043d\u0430 \u0434\u0440\u0443\u0433\u0443\u044e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043c\u0435\u0441\u0438 \u0438\u0437 U-Net \u0438 StyleGAN v2. \u0415\u0441\u043b\u0438 \u044d\u0442\u0438 \u0441\u043b\u043e\u0432\u0430 \u0432\u0430\u043c \u043d\u0438 \u043e \u0447\u0435\u043c \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u044f\u0442 \u2014 \u043f\u0440\u043e\u043b\u0438\u0441\u0442\u0430\u0439\u0442\u0435 \u0432\u043d\u0438\u0437, \u0442\u0430\u043c \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438. \u041c\u043e\u0439 \u043a\u043e\u0434 <a href=\"https:\/\/github.com\/Kwentar\/Color2Embed_pytorch\">\u0437\u0434\u0435\u0441\u044c<\/a>, \u043a\u043e\u0434 \u0430\u0432\u0442\u043e\u0440\u043e\u0432 <a href=\"https:\/\/github.com\/zhaohengyuan1\/Color2Embed\">\u0442\u0443\u0442<\/a>, \u0435\u0449\u0435 \u044f \u0441\u0434\u0435\u043b\u0430\u043b Google Colab <a href=\"https:\/\/colab.research.google.com\/drive\/1Xyq-kuTWzvoQH4r7d5C7YN7sVe19pUv0#scrollTo=6Nm25AlJzmyn\">\u0442\u0435\u0442\u0440\u0430\u0434\u043a\u0443<\/a>, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438. <\/p>\n<details class=\"spoiler\">\n<summary>\u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043f\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0443 Google Colab<\/summary>\n<div class=\"spoiler__content\">\n<p>Google Colab &#8212; \u042d\u0442\u043e \u0442\u0430\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0442 \u0413\u0443\u0433\u043b\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c Jupyter Notebook \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043d\u0430 \u0438\u0445 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044f\u0445 \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043a GPU \u0438 TPU \u0438 \u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0438\u043c\u0438.<\/p>\n<ol>\n<li>\n<p>\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443;<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0436\u0430\u0442\u044c \u0441\u043f\u0440\u0430\u0432\u0430 \u0441\u0432\u0435\u0440\u0445\u0443 \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f (Connect) \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e, \u0435\u0441\u043b\u0438 \u043d\u0435\u0442 \u0442\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0431 \u041e\u0417\u0423 \u0438 \u0434\u0438\u0441\u043a\u0435;<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0436\u0430\u0442\u044c \u0432 \u043c\u0435\u043d\u044e \u0441\u0432\u0435\u0440\u0445\u0443 \u0421\u0440\u0435\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f -> \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0432\u0441\u0435 (Runtime -> run all);<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u043a\u0440\u0443\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u0437 \u0434\u043e \u043a\u0443\u0441\u043a\u0430 \u0441 \u043a\u043e\u0434\u043e\u043c:<\/p>\n<pre><code class=\"python\">target_image_uploaded = files.upload() ref_image_uploaded = files.upload() target_image_path = list(target_image_uploaded.keys())[0] ref_image_path = list(ref_image_uploaded.keys())[0] predict_colors(target_image_path, ref_image_path, model)<\/code><\/pre>\n<p>\u041f\u043e\u0434\u043e\u0436\u0434\u0430\u0442\u044c, \u043f\u043e\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f \u0434\u043e \u043d\u0435\u0433\u043e (\u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f, \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0432\u0435\u0441\u043e\u0432 \u0438 \u0442.\u0434., \u0437\u0430\u0439\u043c\u0435\u0442 \u043c\u0438\u043d\u0443\u0442\u0443-\u0434\u0432\u0435) \u0438 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043a\u043d\u043e\u043f\u043a\u0430:<\/p>\n<figure class=\"\"><figcaption>\u041a\u043d\u043e\u043f\u043a\u0430 \u0432\u044b\u0431\u043e\u0440\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438<\/figcaption><\/figure>\n<\/li>\n<li>\n<p>\u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0441\u043f\u0435\u0440\u0432\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 (\u043f\u043e \u043e\u0434\u043d\u043e\u0439 \u0437\u0430 \u0440\u0430\u0437, \u0442\u0430\u043c \u0434\u0432\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443, \u0432\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0431\u043e\u0440\u0430 \u043f\u0435\u0440\u0432\u043e\u0439), \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043a\u0440\u0430\u0441\u0438\u0442\u044c, \u043f\u043e\u0442\u043e\u043c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0445\u043e\u0442\u0438\u043c \u0432\u0437\u044f\u0442\u044c \u0446\u0432\u0435\u0442\u0430;<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043c\u0435\u043d\u044c\u0448\u0435 \u0441\u0435\u043a\u0443\u043d\u0434\u044b (~300 \u043c\u0441) \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a. \u041f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442:<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<\/li>\n<\/ol>\n<\/div>\n<\/details>\n<h2>\u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435, \u0432\u0438\u0434 \u0441\u0432\u0435\u0440\u0445\u0443<\/h2>\n<p>\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0438\u0437 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438:<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0414\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0437\u0430 \u0440\u0430\u0437 \u043d\u0443\u0436\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0430 \u0446\u0432\u0435\u0442\u043d\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430, (ground truth). \u0418\u0437 \u043d\u0435\u0435 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0434\u0432\u0430 \u0432\u0445\u043e\u0434\u0430: \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u0443\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0439 (\u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0438\u0436\u0435) \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043d\u0443\u044e \u0442\u0440\u0435\u0445\u043a\u0430\u043d\u0430\u043b\u044c\u043d\u0443\u044e RGB \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443, \u043d\u0430 \u0441\u0445\u0435\u043c\u0435 \u044d\u0442\u043e ; \u0432\u0442\u043e\u0440\u0443\u044e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e <a href=\"https:\/\/en.wikipedia.org\/wiki\/CIELAB_color_space\">Lab <\/a>\u2014 \u0431\u0435\u0440\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u043a\u0430\u043d\u0430\u043b L (lightness), \u043d\u0430 \u0441\u0445\u0435\u043c\u0435 \u044d\u0442\u043e . \u041a\u0430\u043d\u0430\u043b\u044b \u0438 \u0442\u043e\u0436\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c, \u043e\u043d\u0438 \u043f\u0440\u0438\u0433\u043e\u0434\u044f\u0442\u0441\u044f \u0434\u043b\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0442\u0435\u0440\u044c \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c, \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442\u0441\u044f \u043e\u043d\u0438. <\/p>\n<p>\u0412\u044b\u0445\u043e\u0434\u043e\u043c \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0434\u0432\u0430 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u0446\u0432\u0435\u0442\u043d\u044b\u0445 \u043a\u0430\u043d\u0430\u043b\u0430 \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439  \u2014 \u043a\u0430\u043d\u0430\u043b\u044b \u0438 , \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442\u0441\u044f \u043e\u043d\u0438 , \u0438\u043b\u0438, \u043a\u043e\u0433\u0434\u0430 \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u043c \u0441 , \u2014 .<\/p>\n<p>\u041f\u043e\u0434\u0430\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u0443 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u043d\u0430 \u0432\u0445\u043e\u0434 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e, \u0442\u0430\u043a \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0431\u0440\u0430\u0442\u044c \u0431\u0430\u0437\u0443 \u0431\u0435\u0437 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438, \u043d\u0435 \u043d\u0443\u0436\u043d\u044b \u043d\u0438 \u043a\u043b\u0430\u0441\u0441\u044b, \u043d\u0438 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0434\u0440\u0443\u0433\u0438\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438. <\/p>\n<p>\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0442\u0440\u0435\u0445 \u0447\u0430\u0441\u0442\u0435\u0439: \u041a\u043e\u0434\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u0446\u0432\u0435\u0442\u0430 (<strong>Color encoder<\/strong>, ), \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 (<strong>Content encoder<\/strong>, ) \u0438 \u043d\u0435\u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043c\u043e\u0439 <strong>PFFN<\/strong> (progressive feature formalisation network). \u041a\u043e\u0434\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0446\u0432\u0435\u0442\u0430 \u0441\u0436\u0438\u043c\u0430\u0435\u0442 \u0446\u0432\u0435\u0442\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0434\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0441 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e \u0446\u0432\u0435\u0442\u0435, \u041a\u043e\u0434\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0441\u0436\u0438\u043c\u0430\u0435\u0442 \u043e\u0434\u043d\u043e\u043a\u0430\u043d\u0430\u043b\u044c\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0434\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u0430 &#171;\u0441\u043c\u044b\u0441\u043b\u0430&#187;, \u0430 PFFN \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e\u0433\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0446\u0432\u0435\u0442\u043e\u0432\u044b\u0435 \u043a\u0430\u043d\u0430\u043b\u044b.<\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u0439 \u043f\u043e\u0442\u0435\u0440\u044c \u0434\u0432\u0435:<\/p>\n<ol>\n<li>\n<p> \u2014 <strong>reconstruction loss<\/strong>, \u043e\u043d \u0436\u0435 <a href=\"https:\/\/pytorch.org\/docs\/stable\/generated\/torch.nn.SmoothL1Loss.html\">SmoothL1Loss<\/a>, \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442 \u0438 .<\/p>\n<\/li>\n<li>\n<p>\u2014 <strong>perceptual loss<\/strong>, \u0442\u043e\u0442 \u0436\u0435 <a href=\"https:\/\/pytorch.org\/docs\/stable\/generated\/torch.nn.L1Loss.html\">L1Loss<\/a>, \u043d\u043e \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0430\u0445 VGG \u0441\u0435\u0442\u0438. \u041d\u0430 \u0432\u0445\u043e\u0434 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0432 RGB  \u0438 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0432 RGB , \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0443\u044e \u0438\u0437 . <\/p>\n<\/li>\n<\/ol>\n<p>\u041e\u0431\u0449\u0438\u0439 \u043b\u043e\u0441\u0441 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0437\u0432\u0435\u0448\u0435\u043d\u043d\u043e\u0439 \u0441\u0443\u043c\u043c\u043e\u0439: <\/p>\n<p>\u0414\u043b\u044f \u0441\u0435\u0431\u044f \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044f \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u043b \u0442\u0430\u043a\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u2014 \u043c\u043e\u0436\u0435\u0442, \u043a\u043e\u043c\u0443-\u0442\u043e \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u043d\u0435\u0439:<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<h2>\u0410\u0443\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0446\u0432\u0435\u0442\u043d\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/h2>\n<p>\u0410\u0432\u0442\u043e\u0440\u044b \u0432\u044b\u0434\u0432\u0438\u0433\u0430\u044e\u0442 \u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u0442\u0435\u0437\u0438\u0441: \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0434\u0430\u0432\u0430\u0442\u044c \u0446\u0432\u0435\u0442\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u043a\u0430\u043a \u0435\u0441\u0442\u044c \u0438 \u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0435\u0435 \u0436\u0435 \u0440\u0430\u0441\u043a\u0440\u0430\u0441\u0438\u0442\u044c, \u0442\u043e \u0443 \u0441\u0435\u0442\u043a\u0438 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0441\u043e\u0431\u043b\u0430\u0437\u043d \u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0438\u0442\u044c\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d\u0438 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u044f\u0434 \u0430\u0443\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0439, \u043e\u0442 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 (\u043f\u043e\u0432\u043e\u0440\u043e\u0442\u044b \u0438 \u0448\u0443\u043c), \u0434\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439: \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c \u043a \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Thin_plate_spline\">thin\u00a0plate\u00a0spline<\/a> (TSP), \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0437\u0430\u0431\u0430\u0432\u043d\u043e \u0438\u0441\u043a\u0430\u0436\u0430\u0442\u044c \u0435\u0451:<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>\u0412 \u043c\u043e\u0435\u043c <a href=\"https:\/\/github.com\/Kwentar\/Color2Embed_pytorch\/blob\/73344fc217771b48139730680607f63471b79915\/color2embed\/test_parts.ipynb\">\u0431\u043b\u043e\u043a\u043d\u043e\u0442\u0435 <\/a>\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0437\u043e\u0432\u0430 \u0438\u0437 \u043a\u043e\u0434\u0430 (\u0441\u0435\u043a\u0446\u0438\u044f TSP Example), \u0441\u0430\u043c \u043a\u043e\u0434 \u0432 <a href=\"https:\/\/github.com\/Kwentar\/Color2Embed_pytorch\/blob\/73344fc217771b48139730680607f63471b79915\/color2embed\/tsp.py\">tsp.py<\/a><\/p>\n<h2>\u041a\u043e\u0434\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0446\u0432\u0435\u0442\u0430<\/h2>\n<p>\u041a\u043e\u0434\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0446\u0432\u0435\u0442\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u2014 \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u0430\u044f \u0441\u0435\u0442\u044c \u0434\u043b\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438. \u0410\u0432\u0442\u043e\u0440\u044b \u0438\u0437\u043e\u0431\u0440\u0435\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0441\u0432\u043e\u0435, \u044f \u043d\u0435 \u0443\u0432\u0438\u0434\u0435\u043b \u0441\u043c\u044b\u0441\u043b\u0430 \u0432 \u044d\u0442\u043e\u043c \u043a\u043e\u0441\u0442\u044b\u043b\u0435\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0438 \u0438 \u0432\u0437\u044f\u043b \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0438 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 resnet18. <\/p>\n<p>\u0412\u044b\u0445\u043e\u0434\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0435\u043a\u0442\u043e\u0440, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0446\u0432\u0435\u0442\u0435, \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d . \u042d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u0432\u0435\u043a\u0442\u043e\u0440 \u0441\u0442\u0438\u043b\u044f \u0432 StyleGAN. \u0420\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c \u0435\u0433\u043e \u0430\u0432\u0442\u043e\u0440\u044b \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e\u0442 \u0432\u0437\u044f\u0442\u044c 512, \u0442\u0443\u0442 \u044f \u0441 \u043d\u0438\u043c\u0438 \u0441\u043f\u043e\u0440\u0438\u0442\u044c \u043d\u0435 \u0441\u0442\u0430\u043b. <\/p>\n<h2>\u041a\u043e\u0434\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430+ PFFN<\/h2>\n<p>\u041a\u043e\u0434\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0438 PFFN \u0432\u043c\u0435\u0441\u0442\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0431\u043e\u0439 \u043f\u043e\u0445\u043e\u0436\u0443\u044e \u043d\u0430 U-Net \u0441\u0435\u0442\u044c \u0441 \u043e\u0434\u043d\u0438\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043e\u0442\u043b\u0438\u0447\u0438\u0435\u043c: \u0432 \u0447\u0430\u0441\u0442\u0438 \u00ab\u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0438\u00bb, \u043a\u0440\u043e\u043c\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0441 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u044d\u0442\u0430\u043f\u043e\u0432, \u043d\u0430\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0446\u0432\u0435\u0442\u0435 \u0441 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u0446\u0432\u0435\u0442\u0430. \u0410\u0432\u0442\u043e\u0440\u044b \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u044d\u0442\u043e PFFN, \u0438\u0434\u0435\u044f \u0432\u0437\u044f\u0442\u0430 \u0438\u0437 StyleGANv2, \u0438 \u0441\u0435\u0440\u0434\u0446\u0435\u043c \u0435\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u0447\u0442\u043e \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 <strong>Modulated Convolution.  <\/strong>Modulated Convolution \u2014 \u044d\u0442\u043e \u0442\u0430\u043a\u0430\u044f \u0441\u0432\u0435\u0440\u0442\u043a\u0430, \u0441 \u0432\u0435\u0441\u0430\u043c\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u044b \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0438\u0433\u0440\u0430\u0435\u043c.<strong> <\/strong>\u041e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c\u0441\u044f \u043d\u0430 \u044d\u0442\u043e\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435, \u0441\u0445\u0435\u043c\u0430 \u0438\u0437 \u0441\u0442\u0430\u0442\u044c\u0438:<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<details class=\"spoiler\">\n<summary>\u041a\u043e\u0434 \u043d\u0430 PyTorch<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"python\">class ModulatedConv2d(nn.Module):     def __init__(             self,             in_channel,             out_channel,             kernel_size,             style_dim     ):         # Part from https:\/\/github.com\/rosinality\/stylegan2-pytorch\/blob\/a2f38914bb5049894c37f2d7a9854bc130cf8a27\/model.py         super().__init__()          self.eps = 1e-8         self.kernel_size = kernel_size         self.in_channel = in_channel         self.out_channel = out_channel          fan_in = in_channel * kernel_size ** 2         self.scale = 1 \/ math.sqrt(fan_in)         self.padding = kernel_size \/\/ 2          self.weight = nn.Parameter(             torch.randn(1, out_channel, in_channel, kernel_size, kernel_size)         )         self.weight_linear = nn.Parameter(torch.randn(in_channel, style_dim))         self.bias_linear = nn.Parameter(torch.zeros(in_channel).fill_(1))      def __repr__(self):         return (             f\"{self.__class__.__name__}({self.in_channel}, {self.out_channel}, {self.kernel_size})\"         )      def forward(self, input_, style):         batch, in_channel, height, width = input_.shape          # Linear         style = F.linear(style, self.weight_linear * self.scale, bias=self.bias_linear)          # Dot         weight = self.scale * self.weight * style.view(batch, 1, in_channel, 1, 1)           # Norm         Fnorm = torch.rsqrt(weight.pow(2).sum([2, 3, 4]) + 1e-8)         weight = weight * Fnorm.view(batch, self.out_channel, 1, 1, 1)          # Convolve         weight = weight.view(batch * self.out_channel, in_channel, self.kernel_size, self.kernel_size)         input_ = input_.view(1, batch * in_channel, height, width)         out = F.conv2d(input_, weight, padding=self.padding,  groups=batch)          _, _, height, width = out.shape         out = out.view(batch, self.out_channel, height, width)         return out<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0412\u0445\u043e\u0434\u0430 \u0443 \u043d\u0430\u0441 \u0434\u0432\u0430: \u0432\u0435\u043a\u0442\u043e\u0440 \u0446\u0432\u0435\u0442\u0430 \u0438 \u0432\u044b\u0445\u043e\u0434 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0441\u043b\u043e\u044f-\u0441\u0432\u0435\u0440\u0442\u043a\u0438 . \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0430\u0431\u043e\u0440 \u0432\u0435\u0441\u043e\u0432: \u0432\u0435\u0441\u0430 \u0441\u0432\u0435\u0440\u0442\u043a\u0438 \u0438 \u0432\u0435\u0441\u0430 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u044f. \u041b\u0438\u043d\u0435\u0439\u043d\u044b\u0439 \u0441\u043b\u043e\u0439 \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c \u0432\u0435\u043a\u0442\u043e\u0440\u0430 ,\u0442\u0430\u043a \u043a\u0430\u043a \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u0432 \u0441\u0432\u0435\u0440\u0442\u043a\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043d\u0430 \u043a\u0430\u043a\u043e\u043c \u043c\u044b \u044d\u0442\u0430\u043f\u0435 (\u0447\u0435\u043c \u0431\u043b\u0438\u0436\u0435 \u043a \u0432\u044b\u0445\u043e\u0434\u0443, \u0442\u0435\u043c \u043c\u0435\u043d\u044c\u0448\u0435 \u043a\u0430\u043d\u0430\u043b\u043e\u0432). \u0422\u043e \u0435\u0441\u0442\u044c, \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u0435\u043a\u0442\u043e\u0440 \u0446\u0432\u0435\u0442\u0430, \u043d\u043e \u0443\u0436\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u0435 512, \u0430 . <\/p>\n<p>\u0412\u0442\u043e\u0440\u043e\u0435 \u043d\u0430\u0448\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435: \u043c\u044b \u0443<strong>\u043c\u043d\u043e\u0436\u0430\u0435\u043c \u0432\u0435\u0441\u0430<\/strong> \u0441\u0432\u0435\u0440\u0442\u043a\u0438 \u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 \u0446\u0432\u0435\u0442\u0430 (dot product), \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c . \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043f\u043e\u0441\u043b\u0435 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u044b \u043d\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0432\u0435\u0441\u0430, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c . <\/p>\n<p>\u041d\u0430\u043c \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u2014 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u0432\u0435\u0440\u0442\u043a\u0430, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0444\u0438\u0447\u0438 \u0438\u0434\u0443\u0442 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u044d\u0442\u0430\u043f.<\/p>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u0440\u0430\u0437\u0431\u043e\u0440 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u0435\u043c\u0430 \u043e\u043f\u0438\u0441\u0430\u043d \u0432 <a href=\"https:\/\/arxiv.org\/abs\/1912.04958\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a>, \u0442\u0430\u043c \u043e\u043d \u0431\u044b\u043b \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043d \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432 \u043f\u0440\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439.<\/p>\n<p>Modulated Convolution \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 &#171;\u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0438&#187; U-Net, \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u0438\u043c PFFN \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 <a href=\"https:\/\/github.com\/milesial\/Pytorch-UNet\">\u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430<\/a>.<\/p>\n<h2>\u041f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0435<\/h2>\n<p>\u041d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0446\u0432\u0435\u0442\u0430 \u043c\u044b \u0431\u0435\u0440\u0435\u043c \u0442\u0443 \u0436\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443, \u0447\u0442\u043e \u0438 \u0445\u043e\u0442\u0438\u043c \u043e\u043a\u0440\u0430\u0441\u0438\u0442\u044c. \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u043d\u0430 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0438 \u0442\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f. \u041d\u043e \u043d\u0430\u0448\u0438 \u0430\u0443\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043e\u043a\u0430\u0437\u0430\u043b\u0438 \u043d\u0430\u043c \u0443\u0441\u043b\u0443\u0433\u0443: \u0435\u0441\u043b\u0438 \u0432\u0437\u044f\u0442\u044c \u043f\u043e\u0445\u043e\u0436\u0443\u044e \u0446\u0432\u0435\u0442\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443, \u0442\u043e \u0432\u0441\u0435 \u0445\u043e\u0440\u043e\u0448\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u0440\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0442\u043e\u043d\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043e\u043a\u0440\u0430\u0441\u043a\u0438 (\u0445\u043e\u0442\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0446\u0432\u0435\u0442\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0438\u043a\u0430\u043a \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c\u0441\u044f). <\/p>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u043b\u0438\u0441\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0438\u0437 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438:<\/p>\n<figure class=\"full-width\"><figcaption>\u0425\u043e\u0440\u043e\u0448\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b<\/figcaption><\/figure>\n<p>\u041a \u0447\u0435\u0441\u0442\u0438 \u0430\u0432\u0442\u043e\u0440\u043e\u0432, \u043c\u043e\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0438\u0437 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0434\u0438\u043d \u0432 \u043e\u0434\u0438\u043d. \u041f\u0440\u0430\u0432\u0434\u0430, \u0435\u0441\u0442\u044c \u043b\u043e\u0436\u043a\u0430 \u0434\u0451\u0433\u0442\u044f: \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0445\u043e\u0440\u043e\u0448\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b, \u0430 \u0435\u0441\u043b\u0438 \u0432\u0437\u044f\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0437  \u0434\u0440\u0443\u0433\u043e\u0439 <a href=\"https:\/\/arxiv.org\/abs\/1807.06587\">\u0441\u0442\u0430\u0442\u044c\u0438<\/a>, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0430\u0432\u0442\u043e\u0440\u044b \u0443\u043b\u0443\u0447\u0448\u0430\u044e\u0442 \u0438 \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f, \u0442\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0432\u0438\u0434\u043d\u044b:<\/p>\n<figure class=\"full-width\"><figcaption>\u041d\u0435 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b<\/figcaption><\/figure>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043a\u0440\u0430\u0441\u0438\u0442\u044c \u043e\u0434\u043d\u0443 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0440\u0430\u0437\u043d\u044b\u043c\u0438:<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041a\u043e\u0433\u0434\u0430 \u044f \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0434\u0440\u0443\u0433\u0438\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438, \u0437\u0430\u043c\u0435\u0442\u0438\u043b, \u0447\u0442\u043e \u043d\u0430\u0439\u0442\u0438 \u0443\u0434\u0430\u0447\u043d\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0441\u0438\u043b\u044c\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u0447\u0435\u043c \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u044b\u0435. \u041c\u043d\u043e\u0433\u0438\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0431\u0435\u0441\u0446\u0432\u0435\u0442\u043d\u044b\u043c\u0438, \u0438\u043b\u0438 \u0441\u043a\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u0441\u0435\u043f\u0438\u044e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u043a \u044d\u0442\u043e\u0442 \u043a\u043e\u0442:<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0411\u043e\u043d\u0443\u0441: \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f \u043a\u0440\u0430\u0441\u0438\u043b 8 \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 \u0432\u0441\u0435 \u0435\u0449\u0435 \u043a\u0440\u0430\u0441\u0438\u0442\u0441\u044f \u0445\u043e\u0440\u043e\u0448\u043e:<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u0432 <a href=\"https:\/\/colab.research.google.com\/drive\/1Xyq-kuTWzvoQH4r7d5C7YN7sVe19pUv0#scrollTo=6Nm25AlJzmyn\">colab<\/a> \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438.<\/p>\n<h2>\u041a\u0440\u0438\u0442\u0438\u043a\u0430<\/h2>\n<ol>\n<li>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b, \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435, \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u2014 \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0437\u0434\u043e\u0440\u043e\u0432\u043e \u0438 \u043d\u0435 \u0447\u0430\u0441\u0442\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u043d\u0430\u0448\u0435 \u0432\u0440\u0435\u043c\u044f.<\/p>\n<\/li>\n<li>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u0439 \u0436\u0435 \u0441\u0430\u043c\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0432 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 \u2014 \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e, \u043d\u043e, \u044f \u0434\u0443\u043c\u0430\u044e, \u044d\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u0447\u0438\u043d\u043e\u0439 \u0443\u0437\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 \u0440\u0430\u0431\u043e\u0442: \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0438 \u0434\u043b\u044f \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430. \u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0430\u044f \u0438\u0434\u0435\u044f \u2014 \u0431\u0440\u0430\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0438\u0437 \u0442\u043e\u0433\u043e \u0436\u0435 \u043a\u043b\u0430\u0441\u0441\u0430 \u2014 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u0440\u043e\u0431\u0430\u0441\u0442\u043d\u043e\u0439.<\/p>\n<\/li>\n<li>\n<p>\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0438\u043b\u043b\u0435\u0440-\u0444\u0438\u0447\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b, \u043e\u043d\u0430 \u0432 \u0440\u0430\u0437\u044b \u0432\u044b\u0448\u0435, \u0447\u0435\u043c \u0443 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043e\u0432, \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u0447\u0430\u0441\u0442\u0438 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0435 \u0438 \u0431\u044b\u0441\u0442\u0440\u044b\u0435.<\/p>\n<\/li>\n<li>\n<p>\u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0443 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u043c \u0431\u0440\u0430\u0442\u044c \u0446\u0432\u0435\u0442. \u0418\u0434\u0435\u044f \u0441\u043e \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0438\u043a\u0430 \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a-\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0446\u0432\u0435\u0442\u0430 \u2014 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u043c\u043e\u0436\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e, \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0435\u0439 \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e.<\/p>\n<\/li>\n<\/ol>\n<h2>\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438:<\/h2>\n<ol>\n<li>\n<p><a href=\"https:\/\/arxiv.org\/abs\/2106.08017\">\u0421\u0430\u043c\u0430 \u0441\u0442\u0430\u0442\u044c\u044f<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/arxiv.org\/abs\/1807.06587\">\u0421\u0442\u0430\u0442\u044c\u044f-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/arxiv.org\/abs\/1912.04958\">StyleGANv2<\/a> (Modulated Convolutional)<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/zhaohengyuan1\/Color2Embed\">\u041a\u043e\u0434 \u0430\u0432\u0442\u043e\u0440\u043e\u0432<\/a> (PyTorch)<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/Kwentar\/Color2Embed_pytorch\">\u041a\u043e\u0434 \u043c\u043e\u0439<\/a> (PyTorch)<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/colab.research.google.com\/drive\/1Xyq-kuTWzvoQH4r7d5C7YN7sVe19pUv0#scrollTo=6Nm25AlJzmyn\">Colab<\/a><\/p>\n<\/li>\n<\/ol>\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\/586122\/\"> https:\/\/habr.com\/ru\/articles\/586122\/<\/a><br \/><\/br><\/br><\/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-397315","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/397315","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=397315"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/397315\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=397315"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=397315"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=397315"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}