<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Stepan Voevodin</title>
    <description>The latest articles on DEV Community by Stepan Voevodin (@melpnz).</description>
    <link>https://dev.to/melpnz</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1022227%2F47310c95-fb3e-4424-869f-1eb063f1ed80.jpg</url>
      <title>DEV Community: Stepan Voevodin</title>
      <link>https://dev.to/melpnz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/melpnz"/>
    <language>en</language>
    <item>
      <title>How we tried to generate the Enter button</title>
      <dc:creator>Stepan Voevodin</dc:creator>
      <pubDate>Wed, 20 Sep 2023 09:45:41 +0000</pubDate>
      <link>https://dev.to/melpnz/how-we-tried-to-generate-the-enter-button-3o9j</link>
      <guid>https://dev.to/melpnz/how-we-tried-to-generate-the-enter-button-3o9j</guid>
      <description>&lt;p&gt;Hello Dev.to! I want to share my experience of working with neural networks. Lately, they have been making a lot of noise, and there are many examples of high-quality and well-crafted generated images on the internet. Inspired by these examples, I decided to test Midjourney, Stable Diffusion, and Kandinsky on a real project to identify their strengths and weaknesses and understand which neural network would be best suited for my future work. The main goal was to generate a button for a landing page that would be shaped like a classic Enter button but visually more interesting with highlights, neon, and futurism. Below, I will describe my process and the results of the neural network generations.&lt;/p&gt;

&lt;h2&gt;
  
  
  First attempt
&lt;/h2&gt;

&lt;p&gt;I took a simple approach and wrote a basic prompt, listing all the characteristics I wanted to see in the image. But the result was far from what I had in mind, and the button looked nothing like Enter.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--a9T0M5BD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c4x80fzkls3z9069wk3w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--a9T0M5BD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c4x80fzkls3z9069wk3w.png" alt="Options for generating the Enter button by artificial intelligence" width="800" height="267"&gt;&lt;/a&gt; &lt;em&gt;Promt: enter button black color, luminous inscription, white background, strongly detailed, top view&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xZ3E7M8h--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vbidsgcyodvgpnmg95xk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xZ3E7M8h--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vbidsgcyodvgpnmg95xk.png" alt="Options for generating the Enter button by artificial intelligence" width="800" height="267"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I ran the generation of this prompt many times, but the result did not improve. Midjourney and Kandinsky generated a beautiful button with many details, but it was far from what I wanted. Stable Diffusion generated anything but keyboard buttons. I realized that the number of generations would not change anything, so I decided to try a different tactic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reference image
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PP0M3sng--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zbk21kjqmd5l2iynblzd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PP0M3sng--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zbk21kjqmd5l2iynblzd.png" alt="Options for generating the Enter button by artificial intelligence" width="529" height="529"&gt;&lt;/a&gt;&lt;br&gt;
Since none of the neural networks seemed to understand what a classic Enter button looked like, I decided to show them with an image. I found an image that matched my wishes and fed it to each neural network: for Midjourney, I provided a link to the image and prompt, for Kandinsky, I used the "Image Variation" mode, and for Stable Diffusion, I used the ControlNet extension. And then I waited.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9Luk32sy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dhpy97a61g90kmoh7esw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9Luk32sy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dhpy97a61g90kmoh7esw.png" alt="Options for generating the Enter button by artificial intelligence" width="800" height="267"&gt;&lt;/a&gt; &lt;em&gt;Promt: black enter button, luminous inscription, white background, strongly detailed, top view&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Midjourney was far from the desired shape, but it generated a button with some angles and inscriptions. Stable Diffusion made a button that was very similar to the reference image, but the result was very boring. Kandinsky generated something abstract, and I needed to experiment more with it.&lt;br&gt;
Realizing that each neural network required its own approach to achieve a better result, I started experimenting with each of them separately, hoping to find the perfect method.&lt;/p&gt;

&lt;h2&gt;
  
  
  Midjourney
&lt;/h2&gt;

&lt;p&gt;I continued to use the original reference image with a slightly modified prompt. For some of the good results, I requested additional variations, hoping to get something more interesting. Out of the huge number of variations, only a few were close to what I had in mind. I still needed to work on them.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--F-TcN_xW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aclwrcf5eainiyw8e5mw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--F-TcN_xW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aclwrcf5eainiyw8e5mw.png" alt="Options for generating the Enter button by artificial intelligence" width="800" height="800"&gt;&lt;/a&gt; &lt;em&gt;Promt: black enter button, irregular shape, white background, super detailed, top view&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Stable Diffusion
&lt;/h2&gt;

&lt;p&gt;Since the neural network showed good results when working through ControlNet, I repeated the process with the reference image of the button and simplified the prompt to &lt;em&gt;"black button, luminous inscription, white background, strongly detailed, top view."&lt;/em&gt; I had to experiment with the Preprocessor modes in ControlNet: sometimes the neural network saw the outline of the button, sometimes it could reproduce the volume, and sometimes it drew the button in simple straight lines (for clarity, I displayed the image on the left). It was funny that despite the reference image, it added some new and strange objects: a portrait, a button, symbols, etc.&lt;br&gt;
I liked the high speed of work and the ability to adjust the number of results, but Stable Diffusion generated a lot of irrelevant images.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_RankFOC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8i2dysnd90sjop0xorso.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_RankFOC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8i2dysnd90sjop0xorso.png" alt="Options for generating the Enter button by artificial intelligence" width="800" height="160"&gt;&lt;/a&gt; &lt;em&gt;Preprocessor, Model: normal_map&lt;/em&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rLLgoW8c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8zo5setpc2fukeomh57g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rLLgoW8c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8zo5setpc2fukeomh57g.png" alt="Options for generating the Enter button by artificial intelligence" width="800" height="160"&gt;&lt;/a&gt; &lt;em&gt;Preprocessor, Model: canny&lt;/em&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bK-hTeJG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ssv6flygxsj819fcatpm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bK-hTeJG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ssv6flygxsj819fcatpm.png" alt="Options for generating the Enter button by artificial intelligence" width="800" height="160"&gt;&lt;/a&gt; &lt;em&gt;Preprocessor, Model: depth&lt;/em&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xU45ok2T--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ab0eby9534qt81givnyg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xU45ok2T--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ab0eby9534qt81givnyg.png" alt="Options for generating the Enter button by artificial intelligence" width="800" height="160"&gt;&lt;/a&gt; &lt;em&gt;Preprocessor, Model: hed&lt;/em&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--M5mpZ6Xy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pl4imwz3lv7iabga3w8y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--M5mpZ6Xy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pl4imwz3lv7iabga3w8y.png" alt="Options for generating the Enter button by artificial intelligence" width="800" height="160"&gt;&lt;/a&gt; &lt;em&gt;Preprocessor, Model: mlsd&lt;/em&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---LET_EH9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v6giaqs9la6n1prjzuvy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---LET_EH9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v6giaqs9la6n1prjzuvy.png" alt="Options for generating the Enter button by artificial intelligence" width="800" height="160"&gt;&lt;/a&gt; &lt;em&gt;Preprocessor, Model: segmentation&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Kandinsky
&lt;/h2&gt;

&lt;p&gt;At first, I tried to feed it the reference image several times and see what would happen. Apparently, due to the lack of the ability to add a prompt in this mode, it generated anything but what I wanted.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LLkvtOeR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cy9zvbp0priiku2z0vuf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LLkvtOeR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cy9zvbp0priiku2z0vuf.png" alt="Options for generating the Enter button by artificial intelligence" width="800" height="400"&gt;&lt;/a&gt;&lt;br&gt;
I managed to get several images that looked visually good but were far from what I had in mind. Then I switched to the usual method of generating an image through a prompt, changing and simplifying it in every way to find some pattern, but I never found it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sq_NJcuc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/147lmz73au75blidcug5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sq_NJcuc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/147lmz73au75blidcug5.png" alt="Options for generating the Enter button by artificial intelligence" width="800" height="200"&gt;&lt;/a&gt; &lt;em&gt;promt: black enter button with luminous inscription&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SO2a7uYG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cdxezr96lvh4m283m6ql.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SO2a7uYG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cdxezr96lvh4m283m6ql.png" alt="Options for generating the Enter button by artificial intelligence" width="800" height="200"&gt;&lt;/a&gt; &lt;em&gt;promt: black enter button with glowing inscription&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8e5Pa3FC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8gudfhm0fa1u1xcv67lv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8e5Pa3FC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8gudfhm0fa1u1xcv67lv.png" alt="Options for generating the Enter button by artificial intelligence" width="800" height="200"&gt;&lt;/a&gt; &lt;em&gt;promt: enter button from the keyboard, black color, white background, glowing inscription&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VevuwZ3a--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cndwzki3iocazi0irv1w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VevuwZ3a--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cndwzki3iocazi0irv1w.png" alt="Options for generating the Enter button by artificial intelligence" width="800" height="200"&gt;&lt;/a&gt; &lt;em&gt;promt: enter button shape, black color, white background, luminous inscription&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RxoyzMjK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rohqxlevh27frm9o6fx7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RxoyzMjK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rohqxlevh27frm9o6fx7.png" alt="Options for generating the Enter button by artificial intelligence" width="800" height="200"&gt;&lt;/a&gt; &lt;em&gt;promt: black input button&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  In the end
&lt;/h2&gt;

&lt;p&gt;Initially, I had a specific shape in mind for the Enter button with a few added elements and symbols, but after generating images in different neural networks, I decided to use the Midjourney result as a basis and refine it in Figma.&lt;br&gt;
I had to start the entire drawing process from scratch: I created the shape and volume, changed the button color from black to gray, added highlights, shadows, glowing icons, and suitable thematic text.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--o53NLoru--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sw0o9gtxj21f3jsyan0a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--o53NLoru--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sw0o9gtxj21f3jsyan0a.png" alt="Options for generating the Enter button using Midjorney and the option of manually assembling the button in Figma" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;There are no bad or good neural networks. From my personal experience, I realized that each has its own purpose. Midjourney and Kandinsky are very good for creating some creative images, covers, or for finding ideas. Midjourney has an undoubted advantage of generating new variations based on the previous result. As for Stable Diffusion, in combination with ControlNet, you can get a more predictable result, and you can draw a reference shape in any graphic editor in 1 minute, which is what we did in the future&lt;/p&gt;

</description>
      <category>ai</category>
      <category>midjourney</category>
      <category>stablediffusion</category>
      <category>design</category>
    </item>
  </channel>
</rss>
