{"id":36359,"date":"2024-11-01T09:47:48","date_gmt":"2024-11-01T09:47:48","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=36359"},"modified":"2024-11-01T11:00:14","modified_gmt":"2024-11-01T11:00:14","slug":"deep-learning-with-gans-using-pytorch-neural-style-transfer","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/36359\/","title":{"rendered":"Deep Learning with GANs Using PyTorch, Neural Style Transfer"},"content":{"rendered":"<p><body><\/p>\n<h2>1. Introduction<\/h2>\n<p>\n        In recent years, the fields of artificial intelligence and deep learning have led innovations in information technology. Among them, Generative Adversarial Networks (GAN) and<br \/>\n        Neural Style Transfer have gained attention as innovative methodologies for generating and transforming visual content. This course will explain the basic concepts of GAN and<br \/>\n        how to implement Neural Style Transfer using PyTorch.\n    <\/p>\n<h2>2. Basic Concepts of GAN<\/h2>\n<p>\n        GAN consists of two neural networks: a Generator and a Discriminator. The Generator generates fake data, while the Discriminator distinguishes between real and fake data.<br \/>\n        These two networks compete and learn from each other. The Generator continuously improves the quality of the data to fool the Discriminator, and the Discriminator learns to better distinguish the<br \/>\n        data created by the Generator.\n    <\/p>\n<h3>2.1 Structure of GAN<\/h3>\n<p>\n        The process of GAN can be summarized as follows:<\/p>\n<ol>\n<li>Generate fake images by feeding random noise into the generator.<\/li>\n<li>Input the generated images and real images into the discriminator.<\/li>\n<li>The discriminator outputs the probability of the input images being real or fake.<\/li>\n<li>The generator improves the fake images based on the feedback from the discriminator.<\/li>\n<\/ol>\n<h2>3. Implementing GAN<\/h2>\n<p>\n        Now let&#8217;s implement GAN. In this example, we will build a GAN that generates digit images using the MNIST dataset.\n    <\/p>\n<h3>3.1 Installing Required Libraries<\/h3>\n<pre><code>\n        pip install torch torchvision matplotlib\n    <\/code><\/pre>\n<h3>3.2 Loading MNIST Dataset<\/h3>\n<div class=\"example\">\n<pre><code>\nimport torch\nimport torchvision.datasets as dsets\nimport torchvision.transforms as transforms\n\n# Download and load MNIST dataset\ndef load_mnist(batch_size):\n    transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))])\n    train_dataset = dsets.MNIST(root='.\/data', train=True, transform=transform, download=True)\n    train_loader = torch.utils.data.DataLoader(dataset=train_dataset, batch_size=batch_size, shuffle=True)\n    return train_loader\n\n# Set batch size to 100\nbatch_size = 100\ntrain_loader = load_mnist(batch_size)\n        <\/code><\/pre>\n<\/div>\n<h3>3.3 Building GAN Model<\/h3>\n<p>Now we will define the generator and discriminator models.<\/p>\n<div class=\"example\">\n<pre><code>\nimport torch.nn as nn\n\n# Define generator model\nclass Generator(nn.Module):\n    def __init__(self):\n        super(Generator, self).__init__()\n        self.model = nn.Sequential(\n            nn.Linear(100, 256),\n            nn.ReLU(),\n            nn.Linear(256, 512),\n            nn.ReLU(),\n            nn.Linear(512, 1024),\n            nn.ReLU(),\n            nn.Linear(1024, 784),\n            nn.Tanh()  # Pixel value range for MNIST images: -1 to 1\n        )\n\n    def forward(self, z):\n        return self.model(z).reshape(-1, 1, 28, 28)  # Reshape to MNIST image format\n\n# Define discriminator model\nclass Discriminator(nn.Module):\n    def __init__(self):\n        super(Discriminator, self).__init__()\n        self.model = nn.Sequential(\n            nn.Flatten(),\n            nn.Linear(784, 512),\n            nn.LeakyReLU(0.2),\n            nn.Linear(512, 256),\n            nn.LeakyReLU(0.2),\n            nn.Linear(256, 1),\n            nn.Sigmoid()  # Output values between 0 and 1\n        )\n\n    def forward(self, img):\n        return self.model(img)\n        <\/code><\/pre>\n<\/div>\n<h3>3.4 GAN Training Process<\/h3>\n<p>Now we will implement the functionality to train GAN.<\/p>\n<div class=\"example\">\n<pre><code>\nimport torchvision.utils as vutils\n\ndef train_gan(epochs, train_loader):\n    generator = Generator()\n    discriminator = Discriminator()\n\n    criterion = nn.BCELoss()\n    lr = 0.0002\n    beta1 = 0.5\n    g_optimizer = torch.optim.Adam(generator.parameters(), lr=lr, betas=(beta1, 0.999))\n    d_optimizer = torch.optim.Adam(discriminator.parameters(), lr=lr, betas=(beta1, 0.999))\n\n    for epoch in range(epochs):\n        for i, (imgs, _) in enumerate(train_loader):\n            # Generate real and fake labels\n            real_labels = torch.ones(imgs.size(0), 1)\n            fake_labels = torch.zeros(imgs.size(0), 1)\n\n            # Train discriminator\n            discriminator.zero_grad()\n            outputs = discriminator(imgs)\n            d_loss_real = criterion(outputs, real_labels)\n            d_loss_real.backward()\n\n            z = torch.randn(imgs.size(0), 100)  # Noise vector\n            fake_imgs = generator(z)\n            outputs = discriminator(fake_imgs.detach())\n            d_loss_fake = criterion(outputs, fake_labels)\n            d_loss_fake.backward()\n\n            d_loss = d_loss_real + d_loss_fake\n            d_optimizer.step()\n\n            # Train generator\n            generator.zero_grad()\n            outputs = discriminator(fake_imgs)\n            g_loss = criterion(outputs, real_labels)\n            g_loss.backward()\n            g_optimizer.step()\n\n            if (i + 1) % 100 == 0:\n                print(f'Epoch [{epoch + 1}\/{epochs}], Step [{i + 1}\/{len(train_loader)}], '\n                      f'D Loss: {d_loss.item()}, G Loss: {g_loss.item()}')\n\n        # Save generated images\n        if (epoch + 1) % 10 == 0:\n            with torch.no_grad():\n                fake_imgs = generator(z).detach()\n                vutils.save_image(fake_imgs, f'output\/fake_images-{epoch + 1}.png', normalize=True)\ntrain_gan(epochs=50, train_loader=train_loader)\n        <\/code><\/pre>\n<\/div>\n<h2>4. Neural Style Transfer<\/h2>\n<p>\n        Neural Style Transfer is a technique that separates the content and style of an image to transform a content image into the characteristics of a style image.<br \/>\n        This process is based on Convolutional Neural Networks (CNN) and typically involves the following steps:\n    <\/p>\n<ol>\n<li>Extract content and style images.<\/li>\n<li>Combine the two images to generate the final image.<\/li>\n<\/ol>\n<h3>4.1 Installing Required Libraries<\/h3>\n<pre><code>\npip install Pillow numpy matplotlib\n    <\/code><\/pre>\n<h3>4.2 Preparing the Model<\/h3>\n<div class=\"example\">\n<pre><code>\nimport torch\nimport torch.nn as nn\nfrom torchvision import models\n\nclass StyleTransferModel(nn.Module):\n    def __init__(self):\n        super(StyleTransferModel, self).__init__()\n        self.vgg = models.vgg19(pretrained=True).features.eval()  # Using VGG19 model \n\n    def forward(self, x):\n        return self.vgg(x)\n        <\/code><\/pre>\n<\/div>\n<h3>4.3 Defining Style and Content Loss<\/h3>\n<div class=\"example\">\n<pre><code>\nclass ContentLoss(nn.Module):\n    def __init__(self, target):\n        super(ContentLoss, self).__init__()\n        self.target = target.detach()  # Prevent gradient calculation for target\n\n    def forward(self, x):\n        return nn.functional.mse_loss(x, self.target)\n\nclass StyleLoss(nn.Module):\n    def __init__(self, target):\n        super(StyleLoss, self).__init__()\n        self.target = self.gram_matrix(target).detach()  # Calculate Gram matrix \n\n    def gram_matrix(self, x):\n        b, c, h, w = x.size()\n        features = x.view(b, c, h * w)\n        G = torch.bmm(features, features.transpose(1, 2))  # Create Gram matrix\n        return G.div(c * h * w)\n\n    def forward(self, x):\n        G = self.gram_matrix(x)\n        return nn.functional.mse_loss(G, self.target)\n        <\/code><\/pre>\n<\/div>\n<h3>4.4 Running Style Transfer<\/h3>\n<p>Now we will define the function and loss for style transfer, then implement the training loop. Ultimately, we minimize the combined content and style loss.<\/p>\n<div class=\"example\">\n<pre><code>\ndef run_style_transfer(content_img, style_img, model, num_steps=500, style_weight=1000000, content_weight=1):\n    target = content_img.clone().requires_grad_(True)  # Create initial image\n    optimizer = torch.optim.LBFGS([target])  # Use LBFGS optimization technique\n    \n    style_losses = []\n    content_losses = []\n\n    for layer in model.children():\n        target = layer(target)\n        if isinstance(layer, ContentLoss):\n            content_losses.append(target)\n        if isinstance(layer, StyleLoss):\n            style_losses.append(target)\n\n    for step in range(num_steps):\n        def closure():\n            optimizer.zero_grad()\n            target_data = target.data\n\n            style_loss_val = sum([style_loss(target_data).item() for style_loss in style_losses])\n            content_loss_val = sum([content_loss(target_data).item() for content_loss in content_losses])\n            total_loss = style_weight * style_loss_val + content_weight * content_loss_val\n\n            total_loss.backward()\n            return total_loss\n\n        optimizer.step(closure)\n\n    return target.data\n        <\/code><\/pre>\n<\/div>\n<h2>5. Conclusion<\/h2>\n<p>\n        In this course, we learned about implementing image generation and neural style transfer using GAN. GAN has set a new standard in image generation technology, and<br \/>\n        neural style transfer is a methodology for creating unique artistic works by combining images. Both technologies are driving advancements in deep learning and will be<br \/>\n        applicable in various fields in the future.\n    <\/p>\n<h3>6. References<\/h3>\n<ul>\n<li><a href=\"https:\/\/arxiv.org\/abs\/1406.2661\">Generative Adversarial Networks (GAN)<\/a><\/li>\n<li><a href=\"https:\/\/arxiv.org\/abs\/1508.06576\">A Neural Algorithm of Artistic Style<\/a><\/li>\n<li><a href=\"https:\/\/pytorch.org\/docs\/stable\/index.html\">PyTorch Documentation<\/a><\/li>\n<\/ul>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>1. Introduction In recent years, the fields of artificial intelligence and deep learning have led innovations in information technology. Among them, Generative Adversarial Networks (GAN) and Neural Style Transfer have gained attention as innovative methodologies for generating and transforming visual content. This course will explain the basic concepts of GAN and how to implement Neural &hellip; <a href=\"https:\/\/atmokpo.com\/w\/36359\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Deep Learning with GANs Using PyTorch, Neural Style Transfer&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[113],"tags":[],"class_list":["post-36359","post","type-post","status-publish","format-standard","hentry","category-gan-deep-learning-course"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Deep Learning with GANs Using PyTorch, Neural Style Transfer - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/atmokpo.com\/w\/36359\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Deep Learning with GANs Using PyTorch, Neural Style Transfer - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"1. Introduction In recent years, the fields of artificial intelligence and deep learning have led innovations in information technology. Among them, Generative Adversarial Networks (GAN) and Neural Style Transfer have gained attention as innovative methodologies for generating and transforming visual content. This course will explain the basic concepts of GAN and how to implement Neural &hellip; \ub354 \ubcf4\uae30 &quot;Deep Learning with GANs Using PyTorch, Neural Style Transfer&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/36359\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:47:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:00:14+00:00\" \/>\n<meta name=\"author\" content=\"root\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@bebubo4\" \/>\n<meta name=\"twitter:site\" content=\"@bebubo4\" \/>\n<meta name=\"twitter:label1\" content=\"\uae00\uc4f4\uc774\" \/>\n\t<meta name=\"twitter:data1\" content=\"root\" \/>\n\t<meta name=\"twitter:label2\" content=\"\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04\" \/>\n\t<meta name=\"twitter:data2\" content=\"5\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/36359\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/36359\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Deep Learning with GANs Using PyTorch, Neural Style Transfer\",\"datePublished\":\"2024-11-01T09:47:48+00:00\",\"dateModified\":\"2024-11-01T11:00:14+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/36359\/\"},\"wordCount\":412,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"GAN deep learning course\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/36359\/\",\"url\":\"https:\/\/atmokpo.com\/w\/36359\/\",\"name\":\"Deep Learning with GANs Using PyTorch, Neural Style Transfer - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:47:48+00:00\",\"dateModified\":\"2024-11-01T11:00:14+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/36359\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/36359\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/36359\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Deep Learning with GANs Using PyTorch, Neural Style Transfer\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/atmokpo.com\/w\/#website\",\"url\":\"https:\/\/atmokpo.com\/w\/\",\"name\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/atmokpo.com\/w\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\",\"name\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"url\":\"https:\/\/atmokpo.com\/w\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png\",\"contentUrl\":\"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png\",\"width\":400,\"height\":400,\"caption\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\"},\"image\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/bebubo4\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\",\"name\":\"root\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g\",\"caption\":\"root\"},\"sameAs\":[\"http:\/\/atmokpo.com\/w\"],\"url\":\"https:\/\/atmokpo.com\/w\/author\/root\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Deep Learning with GANs Using PyTorch, Neural Style Transfer - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/atmokpo.com\/w\/36359\/","og_locale":"ko_KR","og_type":"article","og_title":"Deep Learning with GANs Using PyTorch, Neural Style Transfer - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"1. Introduction In recent years, the fields of artificial intelligence and deep learning have led innovations in information technology. Among them, Generative Adversarial Networks (GAN) and Neural Style Transfer have gained attention as innovative methodologies for generating and transforming visual content. This course will explain the basic concepts of GAN and how to implement Neural &hellip; \ub354 \ubcf4\uae30 \"Deep Learning with GANs Using PyTorch, Neural Style Transfer\"","og_url":"https:\/\/atmokpo.com\/w\/36359\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:47:48+00:00","article_modified_time":"2024-11-01T11:00:14+00:00","author":"root","twitter_card":"summary_large_image","twitter_creator":"@bebubo4","twitter_site":"@bebubo4","twitter_misc":{"\uae00\uc4f4\uc774":"root","\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04":"5\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/36359\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/36359\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Deep Learning with GANs Using PyTorch, Neural Style Transfer","datePublished":"2024-11-01T09:47:48+00:00","dateModified":"2024-11-01T11:00:14+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/36359\/"},"wordCount":412,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["GAN deep learning course"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/36359\/","url":"https:\/\/atmokpo.com\/w\/36359\/","name":"Deep Learning with GANs Using PyTorch, Neural Style Transfer - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:47:48+00:00","dateModified":"2024-11-01T11:00:14+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/36359\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/36359\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/36359\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Deep Learning with GANs Using PyTorch, Neural Style Transfer"}]},{"@type":"WebSite","@id":"https:\/\/atmokpo.com\/w\/#website","url":"https:\/\/atmokpo.com\/w\/","name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","description":"","publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/atmokpo.com\/w\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/atmokpo.com\/w\/#organization","name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","url":"https:\/\/atmokpo.com\/w\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/","url":"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png","contentUrl":"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png","width":400,"height":400,"caption":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8"},"image":{"@id":"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/bebubo4"]},{"@type":"Person","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7","name":"root","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g","caption":"root"},"sameAs":["http:\/\/atmokpo.com\/w"],"url":"https:\/\/atmokpo.com\/w\/author\/root\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/36359","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/comments?post=36359"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/36359\/revisions"}],"predecessor-version":[{"id":36360,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/36359\/revisions\/36360"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=36359"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=36359"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=36359"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}