第1步。创建普通的二维码

首先,我们需要创建一个你的二维码。通过下面的链接可以创建一个你的二维码:https://keremerkan.net/qr-code-and-2d-code-generator/

使用ControlNet生成创意二维码

输入你的链接或要使用二维码展示的文字,使用“短链”功能会对二维码识别有所帮助。将纠错水平(error correction level)设置为高,因为我们要将图像与我们自己的图像混合。
然后,我们可以生成一个二维码,并将其保存在本地。

使用ControlNet生成创意二维码

第2步:创建与二维码相结合图像

现在我们可以找一张我们喜欢的图片,或者从Stable Diffusion的txt2Img中生成一些。我将在T2I中生成一张。

使用ControlNet生成创意二维码

  • (1) 这里的模型(model)选用的是 revAnimated_v122

  • (2) 采样方法(Sampling method)选择 DPM++ 2S a Karras
  • (3) 采样步数(Sampling steps)为 20
  • (4) 分辨率(Resolution)为 768 x 768
  • (5) 提示词相关性(CFG scale)为 11

使用ControlNet生成创意二维码

  • 对于正面提示,我们使用的是ControlNet_OpenPose_Full,所以最好在正面提示中包括 "全身",因为是在模仿生成图像的姿态;因此甚至可以把分辨率改为宽512,高768,使之成为一个肖像,这样就可以减少对QR码的干扰,提高识别率。

正面提示词:
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 sleeves

反面提示词:
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)

生成的图片:

使用ControlNet生成创意二维码

第3步:将图像与二维码相结合

  • 然后可以将生成的图片发送到img2img标签,或者将你的图片上传到img2img标签。如果你已经有你想使用的图片,我们可以输入同样的正面和负面的提示信息。
  • 注意:你必须在img2img标签内输入提示信息,这样I2I才可以工作。

使用ControlNet生成创意二维码

  • (1) 再次选择采样方法为 DPM++ 2S a Karras,
  • (2) 采样步数为 60
  • (3) 分辨率设置为 768 x 768
  • (4) 提示词相关性设置为 11
  • (5) 重绘幅度(Denoising strength)设置为 1.0

使用ControlNet生成创意二维码

  • 然后我们需要进入ControlNet,充分发挥ControlNet的作用!对于ControlNet Unit 0,我们需要再次上传在txt2img标签中生成的图像,或者你自己的图像。

使用ControlNet生成创意二维码

  • (1) 首先要确保 ControlNet Unit 0 已经 启用 
  • (2) 选择 OpenPose 作为控制类型,openpose_full 作为预处理程序,control_sd15_openpose 作为控制模型
  • (3) 需要将控制权重保持在 1
    • QR码的权重应该比该图片更高。

  • (4) 我们可以把开始控制步骤(Starting Control Step)设置为 0 结束控制步骤(Ending Control Step)设置为 1

    • 因为我们希望我们的图像从初始开始生成。

  • (5) 选择平衡(Balanced)作为控制模式
  • (6) 调整大小和填充为调整大小(Resize and Fill)模式

使用ControlNet生成创意二维码

  • 我们现在需要进入ControlNet Unit 1
    • (如果界面中没有,那么你需要进入 设置>ControlNet,并改变滑块以显示超过1个ControlNet标签)


  • 然后我们可以将我们的二维码上传到ControlNet Unit 1中。

使用ControlNet生成创意二维码

  • (1) 确保我们点击启用,以确保ControlNet Unit 1被激活
  • (2) 选择 tile 作为控制类型
  • (3) tile_resample 作为预处理程序
  • (4) control_v11f1e_sd15_tile 作为控制模型
  • (5) 将控制权重设置为 1.2
    • 使Control Net了解二维码码比图像更重要。

  • (6) 设置起始控制步长为 0.23 ,结束控制步长为 1

    • 这确保图像将在二维码码渲染之前开始渲染。
    • 这能使得生成的二维码图片更具有美感。

  • (7) 设置控制模式为 平衡
  • (8) 调整大小的模式为 调整大小和填充

使用ControlNet生成创意二维码

第4步: High five

现在可以点击生成,QR码将会与图像完美的混合在一起。

使用ControlNet生成创意二维码

请注意,你可以通过不断的调整两个图像的控制权重,以找到一个满意的比例!此外,你可以调整二维码的起始控制步骤(starting control step)。这些设置倾向于提供一个好看的外观,同时但也可以作为一个二维码。

不过,生成的图片并不能保证每次都可以被识别出结果,只能通过不断地生成和调整,以获得你想要的一张完美的图片。

Control Net的使用对于GPU显存方面有着较高的要求,此方案若要生成512*512的二维码应该至少需要12G的显存使其完美运行,8G显存经常会出现CUDA out of memory的提示。

Creative QR Codes with ControlNet——Think Diffusion