<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          今天,我被二維碼卷到了...

          共 8593字,需瀏覽 18分鐘

           ·

          2023-08-02 10:13


          都說AI繪畫來勢洶洶,但論創(chuàng)意,還是人類玩得花??。下面這幾張乍一看平平無奇、卻在網(wǎng)上瘋傳的AI生成圖片,你能看出其中暗藏的玄機嗎?




          建議大家在手機上手動縮放一下這些圖。縮得越小,圖片夾帶的文字/二維碼能展示得更清晰。

          還有網(wǎng)友給了別的“認字”秘訣,比如摘下你的近視眼鏡:

          大家可以發(fā)現(xiàn),這些圖片生成的思路如出一轍——通過光影、著色等等控制手段,確保文字或者二維碼作為光影、衣服圖案等,融入圖像中。

          令本人震驚的是,藝術(shù)畫二維碼還是由幾位在校學生使用 ControlNet+StableDiffusion 生成的。后生可畏!他們訓練的 ControlNet 生成的二維碼圖片極具藝術(shù)感。二維碼不再是經(jīng)典的黑白格子矩陣,而是被巧妙地融合在圖片的內(nèi)容當中。


          @倪豪@陳柏宇(時辰) @王照涵 @陳智勇的 QR Code ControlNet 作品

          我不禁思考這種圖為什么依然是一個可用的二維碼呢?怎樣才能制作這樣的二維碼圖片呢?遂開始一次小實驗。


          首先我們需要快速了解二維碼識別的原理。


          二維碼圖片主要包含定位圖案(圖上的三個大“回”形方框)、中間的點陣數(shù)據(jù)圖案。二維碼的掃描過程看上去也很復雜,我看了一下網(wǎng)上的介紹,粗略地將其解碼過程總結(jié)為:
          • 根據(jù)三個定位圖案檢測以及“擺正”二維碼。
          • 將二維碼區(qū)域轉(zhuǎn)換為灰度圖,切分成不重疊的區(qū)塊,每個區(qū)塊內(nèi)單獨計算得到一個閾值,高于閾值的為1,小于閾值的為0。
          • 根據(jù)一定的規(guī)則,從讀取的一串010110...數(shù)據(jù)流中解碼得到信息。二維碼的編碼有一定的冗余,數(shù)據(jù)流中偶然幾位的0,1被搞混也不會影響解碼。


          因此,雖然上面這些藝術(shù)畫二維碼看上去不再是黑白格子矩陣,但只要它:
          • 依然包含關(guān)鍵的三個定位圖案。
          • 定位圖案包圍的數(shù)據(jù)區(qū)域有明顯的亮暗關(guān)系變化,可以被解碼為0,1數(shù)據(jù)流。
          • 數(shù)據(jù)流中被擾亂的0,1比特還沒有那么多,還能被冗余信息恢復。

          那么它就是一個二維碼。

          總結(jié)一下:只要二維碼的亮暗關(guān)系還沒被破壞得太多,那就還是一個可用的二維碼?

          好的,現(xiàn)在我們已經(jīng)知道關(guān)鍵點是保留亮暗關(guān)系了,接著一個問題就是,怎么才能制作滿足這種亮暗關(guān)系的二維碼圖片?

          子中提到的文章作者并沒有透露他們使用的 ControlNet 方案。現(xiàn)網(wǎng)制作這些二維碼的方案很多,而且效果上差距還挺明顯。

          下面我盡量多介紹幾種合成藝術(shù)畫二維碼的方案,例如開源社區(qū)很快有人提出可以用 tile_resample ControlNet ,來模擬一下類似的效果。


          ControlNet 1.1 Tile 是 ControlNet 作者(github: lllyasviel)制作的一個功能類似于補充細節(jié)的 ControlNet。

          當被輸入丟失了很多細節(jié)紋理的圖片(如下面的模糊狗狗圖)時:


          輸出則是一幅正常的細節(jié)完善的圖片:



          利用其補細節(jié)這一特性,我們使用一張包含黑白格子二維碼的圖片作為 ControlNet 的輸入,同時用 ControlNet 的輸入當作 img2img 的墊圖,即基于 resample ControlNet + img2img,可以搞出類似于下圖的效果:


          具體來說,用這種圖同時當作 img2img 的墊圖及 ControlNet 的輸入:


          在 Stable Diffusion WebUI 的 img2img Tab,設置調(diào)整那一系列參數(shù),然后點 Generate 就可以“開盲盒”了。

          為了降低大家“開盲盒”的難度,我這里分享下我使用的 WebUI 參數(shù):

              
          Tony Stark, bruise wounded, wet soaked, water splash, torn apart, ripped clothes, random background vintage, neons lights, (high detailed skin:1.2), 8k uhd, dslr, soft lighting, hyperdetailed, intricately detailed, unreal engine, fantastical, ideal human, high quality, film grain, bokeh, Fujifilm XT3, hyper realisticNegative prompt: ugly, disfigured, low quality, blurry, nsfwSteps: 50, Sampler: DPM++ 2M Karras, CFG scale: 10, Seed: 3724036266, Size: 768x768, Model hash: 4199bcdd14, Model: revAnimated_v122, Denoising strength: 0.85, Mask blur: 4, ControlNet 1: "preprocessor: tile_resample, model: control_v11f1e_sd15_tile [a371b31b], weight: 0.8, starting/ending: (0.23, 0.9), resize mode: Just Resize, pixel perfect: False, control mode: Balanced, preprocessor params: (512, 1, 64)"

          我用了 revAnimated_v122 模型,Prompt 和 Negative Prompt 已經(jīng)包含在上面。

          最關(guān)鍵的 ControlNet 參數(shù)是:

              
          ControlNet 1: "preprocessor: tile_resample, model: control_v11f1e_sd15_tile [a371b31b], weight: 0.8, starting/ending: (0.23, 0.9), resize mode: Just Resize, pixel perfect: False, control mode: Balanced, preprocessor params: (512, 1, 64)"

          這里 weight: 0.8, starting/ending: (0.23, 0.9),是我主要調(diào)整的參數(shù)。分別對應了 ControlNet 起效的力度、起效的 diffusion step 開始與結(jié)束。這本質(zhì)上是在調(diào)整 ControlNet 在圖生圖過程中的作用大小

          ControlNet 作用太大,出來的圖格子感太重;反之作用太小,生成圖很有可能已經(jīng)不是二維碼了。

          當然,你可以預先調(diào)整一下輸入圖的二維碼顏色位置,提前安排一下生成結(jié)果中二維碼大概的顏色和位置。比如把二維碼設置成紅色,那么你就能得到下面這幅鎧甲顏色更為自然的圖片。


          這種方案我測試了很久,真實體驗就是:摸獎的成分很重。

          比如上面的鋼鐵俠二維碼,調(diào)整好 ControlNet+img2img 參數(shù)后,大部分隨機數(shù)種子對應的圖片中鋼鐵俠的人臉都有黑白格子對應的”污損“:



          想得到上面那種臉沒有污損的圖片,要抽很多隨機數(shù)種子(隨機數(shù)選42結(jié)果不好,我試了ヾ(?ω?)o)

          自然而然地,我又有一個問題:有沒有辦法指定圖中人物的位置 or 姿勢呢?用多了 WebUI 的開發(fā)者,能立馬想到再加一個 ControlNet 控制人物的方案(當然我沒想到,在 reddit 上盯了半天才學到這個方案)


          這一方案是上面的方案改進版。

          ControlNet tile 負責補充二維碼區(qū)域的紋理細節(jié),ControlNet OpenPose 負責控制人物位置。

          依然是用 Stable Diffusion WebUI 的 img2img tab,但開啟了兩個 ControlNet。其中 ControlNet1 是 Openpose:輸入圖及其提供的火柴人 pose 圖如下


          ControlNet2 則是和上一個方案類似的一個帶二維碼的圖片:


          依然公開一下我調(diào)出來的 webui 參數(shù),供大家參考:

              
          futobot, cyborg, ((masterpiece),(best quality),(ultra-detailed), (full body:1.2), 1 female, solo, hood up, upper body, mask, 1 girl, female focus, black gloves, cloak, long sleevesNegative prompt: paintings, sketches, (worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, ((monochrome)), ((grayscale)), skin spots, acnes, skin blemishes, age spot, glans, nsfw, nipples, (((necklace))), (worst quality, low quality:1.2), watermark, username, signature, text, multiple breasts, lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry, bad feet, single color, ((((ugly)))), (((duplicate))), ((morbid)), ((mutilated)), (((tranny))), (((trans))), (((trannsexual))), (hermaphrodite), extra fingers, mutated hands, ((poorly drawn hands)), ((poorly drawn face)), (((mutation))), (((deformed))), ((ugly)), blurry, ((bad anatomy)), (((bad proportions))), ((extra limbs)), (((disfigured))), (bad anatomy), gross proportions, (malformed limbs), ((missing arms)), (missing legs), (((extra arms))), (((extra legs))), mutated hands,(fused fingers), (too many fingers), (((long neck))), (bad body perspect:1.1)Steps: 60, Sampler: DPM++ 2M Karras, CFG scale: 11, Seed: 2912497446, Size: 768x768, Model hash: ed4f26c284, Model: camelliamix25D_v2, Denoising strength: 1, Mask blur: 4, ControlNet 0: "preprocessor: openpose_full, model: control_sd15_openpose [fef5e48e], weight: 1, starting/ending: (0, 1), resize mode: Resize and Fill, pixel perfect: False, control mode: Balanced, preprocessor params: (512, 64, 64)", ControlNet 1: "preprocessor: tile_resample, model: control_v11f1e_sd15_tile [a371b31b], weight: 0.75, starting/ending: (0.23, 1), resize mode: Resize and Fill, pixel perfect: False, control mode: Balanced, preprocessor params: (512, 1, 64)"

          這種方案生成的圖片類似于這樣:


          更換一下提供姿勢的圖片,就能調(diào)整生成圖片中人物的姿勢:


          這個方案的生成效果格子感很重,但成功率較高。基本上每個隨機數(shù)種子的結(jié)果都大差不差,畢竟使用了兩個 ControlNet,對生成圖片的控制程度提升了很多。

          以上兩個方案雖然能搞出一些驚艷的效果,但是整體上看成功率不高,生成圖格子感也比較重。

          看來,針對二維碼這個特定的場景,單獨訓練一個對應的 QRCode ControlNet 還是很有必要的。


          本人在研究上面兩個方案的同時,發(fā)現(xiàn)huggingface 上有人開源了一個 QRCode ControlNet。這個 ControlNet 效果怎么樣呢?

          社區(qū)開源的 QRCodeControlNet 在:DionTimmer/controlnet_qrcode-control_v1p_sd15 · Hugging Face 其展示的效果類似于:



          我個人評價不是特別好。它使用成對的二維碼及其藝術(shù)二維碼圖片作為訓練集,生成的圖片二維碼感非常強,可掃性很高,但不好看。

          但即使是這樣,開源到社區(qū)后,還是很快有人用這個模型搞出來類似于下圖這樣的效果:


          是不是感覺還可以?開源社區(qū)調(diào) Prompt 的技巧還是很強的!但我覺得它這種思路還是有點問題。

          我們期望的是生成的圖片看不出來是二維碼。如果訓練時就用了一堆二維碼圖片當作輸出,那么網(wǎng)絡就會很快地過擬合到二維碼域,二維碼感會很強。我們需要的是沒有“二維碼感”的二維碼!有沒有什么更好的思路呢?


          在嘗試訓練 ControlNet 前,先要理清楚如何構(gòu)造數(shù)據(jù)。回顧一下,我們期望的 ControlNet 有兩個關(guān)鍵點:

          ControlNet tile 實際上解決了第一個問題,配合著 img2img,它能夠把輸入二維碼的明暗關(guān)系保留下來,但同時也過多地保留了輸入圖的顏色,以及“格子感。保留明暗,忽略顏色、格子......

          這些需求啟發(fā)我設計了對應的數(shù)據(jù)處理策略,訓練一個專門的 QRCode ControlNet。初步測試的結(jié)果也支持了我的想法。

          上述兩個關(guān)鍵點啟發(fā)的 QRCode ControlNet 能得到一些類似于這樣的輸出:


          但是還有一個問題:二維碼出現(xiàn)的位置還是很突兀。感覺二維碼和圖片沒有很自然地融合在一起。之后,我又思考了一下突兀問題的解法,給上面的思路增加了一點細節(jié)。可以得到下面這樣的二維碼藝術(shù)畫:



          自訓練的 QRCode ControlNet 制作的圖片美觀程度,相較于其它方法改進了很多。我也制作了一個生成 demo 分享給了同事,大家基本上很容易就能生成一些很美觀的二維碼圖片,遠勝于之前我一個人用 Stable Diffusion WebUI 頻繁“開盲盒”。

          也許會有讀者朋友想要個藝術(shù)二維碼生成體驗鏈接?先賣個關(guān)子,相關(guān)的體驗活動近期會在QQ上線。上面提到的多個生成思路,非常推薦大家動手體驗!!


          整體來說,萌生 AIGC 二維碼這個想法后的這個探索過程,我學著用起了 Stable Diffusion WebUI,嘗試了很多方案最終才有了一個還不錯的效果,體驗到了一種解密的快感。實際效果其實也超出了我原先預期,這就是 AIGC的奇妙可能性。歡迎大家轉(zhuǎn)發(fā)分享~

          -End-
          原創(chuàng)作者|王銳



          瀏覽 679
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  人人摸在线视频 | 国产精品国产伦子伦露看 | 青青草男人的天堂黄上网站免费在线观看 | h片无码 | 国产偷抇久久精品A片69探花 |