Làm Thế Nào Chúng Ta Sẽ Tạo Ra Một Mô Hình Ổn Định (Stable Model)?
  1. Home
  2. Câu Hỏi
  3. Làm Thế Nào Chúng Ta Sẽ Tạo Ra Một Mô Hình Ổn Định (Stable Model)?
admin 3 giờ trước

Làm Thế Nào Chúng Ta Sẽ Tạo Ra Một Mô Hình Ổn Định (Stable Model)?

Bạn đang tìm kiếm cách tạo ra một mô hình ổn định (stable model) trong lĩnh vực trí tuệ nhân tạo? CauHoi2025.EDU.VN sẽ giúp bạn khám phá quy trình chi tiết, từ việc thu thập dữ liệu đến in ấn tác phẩm nghệ thuật chất lượng cao. Chúng ta sẽ đi sâu vào các kỹ thuật như Dreambooth, Outpainting, Inpainting và Upscaling để tạo ra những tác phẩm độc đáo.

1. Giới Thiệu

Khi bắt đầu khám phá khả năng tạo ảnh từ văn bản của Stable Diffusion vào tháng 8 năm 2022, phản ứng đầu tiên của tôi là: “Tuyệt vời! Tôi cần tạo ra những bản in nghệ thuật cho bức tường nghệ thuật của mình!”. Nhưng ngay sau đó, tôi nhận ra rằng việc “thuần hóa” Stable Diffusion không hề dễ dàng. Để tái tạo một chủ thể cụ thể, bạn cần sử dụng các chiến lược và kỹ thuật bổ sung, mà vào thời điểm đó, chưa hề tồn tại.

Trong những tháng tiếp theo, một số dự án cộng đồng mới đã xuất hiện, nhằm mục đích trao cho nghệ sĩ AI quyền kiểm soát sáng tạo hoàn toàn đối với các sản phẩm hình ảnh mà họ đang cố gắng tạo ra. Một trong những kỹ thuật đó là LoRA (Low-Rank Adaptation). Tôi đã khám phá việc sử dụng LoRA trong các bài đăng của mình về Tự Chụp Chân Dung với Stable Diffusion và Kết Hợp Các Phong Cách Nghệ Sĩ Tùy Chỉnh.

Một kỹ thuật thậm chí còn phổ biến hơn là Dreambooth, và đó là những gì chúng ta sẽ tập trung vào trong phần còn lại của bài đăng trên blog này. Tôi sẽ trình bày chi tiết quy trình làm việc của mình để đưa Stable Diffusion vào cuộc sống như một bản in nghệ thuật đóng khung chất lượng cao. Chúng ta sẽ đề cập đến việc tạo nghệ thuật với Dreambooth, Stable Diffusion, Outpainting, Inpainting, Upscaling, chuẩn bị in ấn với Photoshop và cuối cùng là in trên giấy mỹ thuật với máy in Epson XP-15000.

Vậy thì, không chần chừ gì nữa, hãy bắt đầu!

2. Dreambooth Là Gì?

Dreambooth là một kỹ thuật tinh chỉnh cho các mô hình AI khuếch tán văn bản thành hình ảnh. Về cơ bản, điều đó có nghĩa là bạn có thể “tinh chỉnh” mô hình Stable Diffusion mã nguồn mở vốn đã mạnh mẽ để tạo ra những hình ảnh đáng tin cậy và nhất quán về các chủ thể và phong cách mà bạn xác định.

Sơ đồ hoạt động của Dreambooth từ cấp độ cao.

Nếu bạn quan tâm đến loại hình này, tôi rất khuyến khích bạn đọc qua bài báo Dreambooth, bạn có thể tìm thấy ở đây https://arxiv.org/abs/2208.12242; mặc dù có một số phần kỹ thuật, nhưng chúng cũng bao gồm nhiều ví dụ hình ảnh giúp bạn xây dựng trực giác về những gì có thể. Tôi thấy bài báo Dreambooth có tính truyền cảm hứng rất lớn và nó thực sự đã dẫn tôi đến việc thực hiện dự án nghệ thuật này và viết bài đăng trên blog này; có lẽ chủ yếu là vì có rất nhiều ví dụ về ảnh chó 😅. Tôi sẽ đưa một vài hình ảnh từ bài báo của họ bên dưới.

Giống như một buồng chụp ảnh, nhưng một khi chủ thể được chụp, nó có thể được tổng hợp bất cứ nơi nào giấc mơ của bạn đưa bạn đến… – https://dreambooth.github.io/

5 ảnh chó vào, vô số hình ảnh được tạo ra. Tập dữ liệu cho những hình ảnh này sống ở đây: https://github.com/google/dreambooth/tree/main/dataset/dog5

2.1. Tạo Ra Mô Hình Ổn Định (Stable Model) Riêng Bằng Dreambooth

Để tạo ra một mô hình ổn định (stable model) chất lượng, chúng ta cần hiểu rõ các yếu tố ảnh hưởng đến quá trình này và cách tối ưu hóa từng bước. Việc này bao gồm chuẩn bị dữ liệu, lựa chọn thuật toán và tinh chỉnh mô hình.

2.1.1. Chuẩn bị dữ liệu: Dữ liệu đầu vào chất lượng cao là yếu tố then chốt. Theo nghiên cứu của Đại học Quốc gia Hà Nội năm 2023, mô hình được huấn luyện trên dữ liệu sạch và đa dạng cho kết quả chính xác hơn 30% so với dữ liệu không được xử lý. (Nguồn: https://www.vnu.edu.vn/)

2.1.2. Lựa chọn thuật toán: Dreambooth, LoRA và các thuật toán tương tự đều có ưu nhược điểm riêng. Tùy thuộc vào loại dữ liệu và mục tiêu cụ thể, việc lựa chọn thuật toán phù hợp sẽ ảnh hưởng lớn đến tính ổn định của mô hình.

2.1.3. Tinh chỉnh mô hình: Quá trình tinh chỉnh bao gồm điều chỉnh các tham số để mô hình hoạt động tối ưu. Điều này đòi hỏi kiến thức chuyên sâu và thử nghiệm liên tục để đạt được kết quả tốt nhất.

3. Cách Huấn Luyện Mô Hình Dreambooth Của Riêng Bạn với Replicate

Đối với dự án và bài đăng này, chúng ta sẽ huấn luyện một mô hình Dreambooth trên ảnh của người bạn thân nhất của tôi, 🧀 Queso.

Queso là một chú chó Golden Retriever English Cream rất ăn ảnh và đáng yêu, và là cậu bé ngoan nhất từng tồn tại, điều này khiến nó trở thành chủ thể hoàn hảo để huấn luyện một mô hình Dreambooth tùy chỉnh!

3.1. Xây Dựng Bộ Dữ Liệu Huấn Luyện Hình Ảnh

Điều đầu tiên bạn cần khi huấn luyện một mô hình Dreambooth tùy chỉnh là một bộ dữ liệu huấn luyện hình ảnh “chất lượng cao”. Tôi đặt “chất lượng cao” trong ngoặc kép vì tôi đã thấy kết quả khá tốt với những hình ảnh không lý tưởng trong quá khứ. Tuy nhiên, thông lệ phổ biến là chọn một số hình ảnh về chủ thể của bạn ở nhiều tư thế, môi trường và điều kiện ánh sáng khác nhau. Bạn càng có nhiều sự đa dạng (về tư thế, môi trường và ánh sáng) về chủ thể của mình, mô hình Dreambooth được tinh chỉnh của bạn sẽ càng tổng quát và linh hoạt hơn.

Trong bài báo, họ sử dụng 3-5 ảnh để huấn luyện các mô hình Dreambooth; nhưng trong cộng đồng, người ta thường sử dụng nhiều hơn. Vì vậy, trong trường hợp của tôi, tôi đã thu thập 40 ảnh về Queso ở nhiều tư thế, ánh sáng và môi trường khác nhau.

Tôi đã chọn cắt bỏ hình nền của hình ảnh của mình vì một số hình ảnh trong số đó ở trong môi trường rất giống nhau và trong các thử nghiệm ban đầu, tôi thấy rằng những yếu tố nền đó bắt đầu xuất hiện trong hình ảnh được tạo của tôi. Điều này là rất tùy chọn và tôi không khuyên bạn nên làm vậy trừ khi bạn gặp sự cố. Tôi đã có thể thực hiện việc này khá nhanh chóng trong Photoshop với công cụ Object Selection; nhanh chóng chọn Queso, đảo ngược lựa chọn và xóa nền.

Sau khi tôi có tất cả các hình ảnh của mình, tôi đã tạo một tệp .zip và tải nó lên s3, nơi tôi có thể tham chiếu nó theo URL. Điều này rất quan trọng, vì chúng ta sẽ chuyển URL tệp zip này vào công việc huấn luyện Dreambooth trong bước tiếp theo.

Dưới đây là một lưới hình ảnh về bộ huấn luyện Queso của tôi. Nó không phải là cậu bé tốt nhất bạn từng thấy sao?

40 ảnh về Queso, với hình nền bị xóa.

3.2. Chạy Huấn Luyện Dreambooth trên Replicate

Đối với những cuộc phiêu lưu huấn luyện Dreambooth của chúng tôi, tôi đã chọn sử dụng Replicate (như tôi đã làm trong một vài bài đăng gần đây của mình). Replicate rất tốt cho các dự án như thế này vì nó giảm thiểu sự khó khăn khi mò mẫm với GPU đám mây và tự cài đặt và thiết lập mọi thứ. Bạn chỉ cần gửi một yêu cầu HTTP mà không cần phải suy nghĩ về GPU hoặc chấm dứt các phiên bản khi bạn hoàn thành. Replicate có một API huấn luyện Dreambooth được ghi lại bán phần, được mô tả trong bài đăng trên blog này.

Nếu bạn thích mạo hiểm và chỉ muốn lao vào chỗ sâu, tôi khuyên bạn nên thử bộ sổ tay google colab fast-stable-diffusion này của @TheLastBen: https://github.com/TheLastBen/fast-stable-diffusion. Họ có một sổ tay để huấn luyện các mô hình Dreambooth và nhanh chóng khởi động Giao diện web Automatic1111 Stable Diffusion.

Theo bài đăng trên blog tài liệu Replicate Dreambooth, tôi đã tạo một tập lệnh bash một lần nhanh chóng với một số đầu vào được mã hóa cứng.

Dưới đây, tôi đã bao gồm tập lệnh bash queso-1.5.sh của mình, chỉ được sao chép-dán từ blog Replicate. Bên dưới đó, tôi đã bao gồm một phân tích về các tham số khác nhau mà tôi đang sử dụng. Nếu bạn quan tâm đến các tham số huấn luyện nâng cao hơn, bạn có thể tìm thấy tài liệu chi tiết cho mỗi tham số tại đây: https://replicate.com/replicate/dreambooth/api

Tập lệnh này mất ~30-40 phút để chạy từ đầu đến cuối, vì vậy bạn có thể muốn nghỉ ngơi và đi dạo với một người bạn lông lá. Thật không may, nhiều bước huấn luyện hơn có nghĩa là mất nhiều thời gian huấn luyện hơn và 4000 bước là rất nhiều.

Bạn sẽ nhận thấy có một trường model trong phần thân yêu cầu JSON. Sau khi công việc huấn luyện hoàn tất, một mô hình replicate riêng tư sẽ được tạo tại một URL như https://replicate.com/jakedahn/queso-1-5 (Tôi đã để mô hình của mình ở chế độ riêng tư, vì vậy nó sẽ trả về 404). Sau khi mô hình này được tạo, bạn sẽ có thể tạo hình ảnh thông qua giao diện người dùng web Replicate hoặc thông qua API Replicate.

<span>#!/bin/bash</span>
curl -X POST 
  -H <span>"Authorization: Token <span>$REPLICATE_API_TOKEN</span>"</span> 
  -H <span>"Content-Type: application/json"</span> 
  -d <span>'{
    "input": {
      "instance_prompt": "a photo of a qdg dog",
      "class_prompt": "photograph of a golden retriever dog, 4k hd, high detail photograph, sharp lens, realistic, highly detailed, fur",
      "instance_data": "https://shruggyface.s3-us-west-2.amazonaws.com/queso-2023-transparent-all.zip",
      "max_train_steps": 4000
    },
    "model": "jakedahn/queso-1-5",
    # Mô hình dreambooth sẽ được thêm vào tài khoản Replicate của bạn tại URL này. Thay thế "jakedahn" bằng tên người dùng của bạn...
    "trainer_version": "cd3f925f7ab21afaef7d45224790eedbb837eeac40d22e8fefe015489ab644aa",
    "webhook_completed": "https://abc123.m.pipedream.net/queso-1-5"
  }'</span> 
  https://dreambooth-api-experimental.replicate.com/v1/trainings

Sau đó, tôi đã chạy nó như thế này:

REPLICATE_API_TOKEN=your-token-here ./queso-1.5.sh

3.3. Phân Tích Các Đầu Vào

Các đầu vào trong tập lệnh này xác định cách mô hình Dreambooth được huấn luyện và chúng rất quan trọng.

  • instance_prompt: Instance Prompt giống như một lời nhắc ví dụ mà bạn sẽ sử dụng nếu bạn muốn có một hình ảnh về chủ thể mô hình của mình. Định dạng được đề xuất là a [identifier] [class noun]. Thật thú vị, bạn muốn identifier là một “token” duy nhất. Điều đó có nghĩa là nó phải có 3-4 chữ cái và nó không được là một từ. Tôi đã nghe một số người có các token cụ thể hoạt động tốt hơn cho họ, tôi đã chọn qdg.

  • class_prompt: Khi huấn luyện các mô hình Dreambooth, bạn cần cung cấp thêm “Hình ảnh Điều chỉnh”, giúp ngăn chặn tình trạng overfitting cực độ. Nếu không có những hình ảnh này, mọi hình ảnh được tạo sẽ chỉ cố gắng tái tạo chính xác những hình ảnh trong bộ huấn luyện của bạn. Bằng cách cung cấp cho bộ huấn luyện thêm những hình ảnh “tương tự”, trong trường hợp của chúng tôi, nhiều ảnh hơn về chó golden retriever, mô hình đầu ra sẽ linh hoạt hơn và cho kết quả tốt hơn trong nhiều tình huống hơn. Theo mặc định, Replicate sẽ tạo 50 hình ảnh bằng lời nhắc lớp của bạn; Tôi khuyên bạn nên thử nghiệm nhiều hơn.

  • instance_data: Đây là một tệp zip chứa tất cả các hình ảnh huấn luyện của bạn. Replicate có một API để tải tệp này lên máy chủ của họ, nhưng nó hơi phức tạp/liên quan, vì vậy tôi chỉ tự lưu trữ tệp của mình trên s3, nơi tôi có thể dễ dàng sử dụng lại nó cho các dự án trong tương lai.

  • max_train_steps: Đây là số lượng bước huấn luyện. Cao hơn thì tốt hơn, đại loại vậy. Tôi đã nghe nhiều điều mâu thuẫn về giá trị này, nhưng điều nhất quán nhất dường như là “100 bước cho mỗi hình ảnh huấn luyện”. Vì vậy, vì tôi có 40 hình ảnh, tôi đã sử dụng 4000 bước. Trong các lần chạy huấn luyện trước đây, tôi đã nhận được kết quả tuyệt vời với 40 hình ảnh và 3000 bước — vì vậy đây là điều bạn sẽ muốn tự mình thử nghiệm.

  • trainer_version: Phiên bản trình huấn luyện rất quan trọng! Có một số tùy chọn mà bạn có thể muốn thử nghiệm.

    • Nếu bạn muốn sử dụng Stable Diffusion v1.5, hãy sử dụng cd3f925f7ab21afaef7d45224790eedbb837eeac40d22e8fefe015489ab644aa
    • Nếu bạn muốn sử dụng Stable Diffusion v2.1, hãy sử dụng d5e058608f43886b9620a8fbb1501853b8cbae4f45c857a014011c86ee614ffb
  • webhook_completed: Huấn luyện một mô hình dreambooth mất một chút thời gian và việc nhận được thông báo khi nó hoàn tất là điều tốt. Tôi sử dụng requestbin từ https://pipedream.com cho URL webhook này, cung cấp một giao diện người dùng đơn giản để khám phá dữ liệu được gửi đến điểm cuối webhook:

Ảnh chụp màn hình của requestbin Pipedream.com

4. Tạo Hình Ảnh

Tuyệt vời! Nếu bạn đã theo dõi cho đến nay, bạn sẽ có mô hình Dreambooth tùy chỉnh của riêng mình! Tiếp theo là phần thú vị: tạo ra một số lượng hình ảnh vô lý về người bạn lông lá của bạn.

Đầu tiên, chúng ta cần viết một số lời nhắc và sau đó chúng ta có thể tạo ra hàng trăm hoặc hàng nghìn hình ảnh 😱.

Vì tôi có thể là kỹ sư lời nhắc tồi tệ nhất trên thế giới, tôi đã đi theo con đường dễ dàng và đi dạo một giờ xuống cuộn vô hạn của Lexica. Lexica là một bộ sưu tập khổng lồ các hình ảnh do AI tạo ra, tất cả đều được chia sẻ với lời nhắc của chúng. Sau một thời gian, tôi đã chọn mười hình ảnh mà tôi nghĩ là thú vị từ cụm từ tìm kiếm dog portrait và sao chép lời nhắc của chúng. Bạn có thể thấy điều này vie

Tôi có thể là kỹ sư lời nhắc tồi tệ nhất trên thế giới.

Tôi đã thu thập các lời nhắc sau và thay thế các giống chó bằng token của tôi qdg:

PROMPTS = [
  <span>"Adorably cute qdg dog portrait, artstation winner by Victo Ngai, Kilian Eng and by Jake Parker, vibrant colors, winning-award masterpiece, fantastically gaudy, aesthetic octane render, 8K HD Resolution"</span>,
  <span>"Incredibly cute golden retriever qdg dog portrait, artstation winner by Victo Ngai, Kilian Eng and by Jake Parker, vibrant colors, winning-award masterpiece, fantastically gaudy, aesthetic octane render, 8K HD Resolution"</span>,
  <span>"a high quality painting of a very cute golden retriever qdg dog puppy, friendly, curious expression. painting by artgerm and greg rutkowski and alphonse mucha "</span>,
  <span>"magnificent qdg dog portrait masterpiece work of art. oil on canvas. Digitally painted. Realistic. 3D. 8k. UHD."</span>,
  <span>"intricate five star qdg dog facial portrait by casey weldon, oil on canvas, hdr, high detail, photo realistic, hyperrealism, matte finish, high contrast, 3 d depth, centered, masterpiece, vivid and vibrant colors, enhanced light effect, enhanced eye detail, artstationhd "</span>,
  <span>"a portrait of a qdg dog in a scenic environment by mary beale and rembrandt, royal, noble, baroque art, trending on artstation "</span>,
  <span>"a painted portrait of a qdg dog with brown fur, no white fur, wearing a sea captain's uniform and hat, sea in background, oil painting by thomas gainsborough, elegant, highly detailed, anthro, anthropomorphic dog, epic fantasy art, trending on artstation, photorealistic, photoshop, behance winner "</span>,
  <span>"qdg dog guarding her home, dramatic sunset lighting, mat painting, highly detailed, "</span>,
  <span>"qdg dog, realistic shaded lighting poster by ilya kuvshinov katsuhiro otomo, magali villeneuve, artgerm, jeremy lipkin and michael garmash and rob rey "</span>,
  <span>"a painting of a qdg dog dog, greg rutkowski, cinematic lighting, hyper realistic painting"</span>,
]

Sau đó, tôi đã viết một tập lệnh Python siêu nhanh/tệ lặp lại qua từng lời nhắc này mười lần, tạo ra tổng cộng 100 hình ảnh. Tôi đã làm điều này nhiều lần… Tôi không bao giờ chán nhìn nghệ thuật chó do AI tạo ra.

<span>import</span> os
<span>import</span> urllib
<span>import</span> random
<span>import</span> replicate

USERNAME = <span>'jakedahn'</span>
MODEL_NAME = <span>'queso-1.5'</span>
MODEL_SLUG = <span>f'<span>{USERNAME}</span>/<span>{MODEL_NAME}</span>'</span>

<span># Grab the model from replicate</span>
model = replicate.models.get(MODEL_SLUG)
<span># Grab the latest version</span>
version = model.versions.<span>list</span>()[<span>0</span>]

<span>def</span> <span>download_prompt</span>(<span>prompt, negative_prompt=NEGATIVE_PROMPT, num_outputs=<span>1</span></span>):
  <span>print</span>(<span>"====================================================================="</span>)
  <span>print</span>(<span>"prompt:"</span>, prompt)
  <span>print</span>(<span>"negative_prompt:"</span>, negative_prompt)
  <span>print</span>(<span>"num_outputs:"</span>, num_outputs)
  <span>print</span>(<span>"====================================================================="</span>)

  image_urls = version.predict(
      prompt=prompt,
      width=<span>512</span>,
      height=<span>512</span>,
      negative_prompt=negative_prompt,
      num_outputs=num_outputs,
  )
  <span>for</span> url <span>in</span> image_urls:
    img_id = url.split(<span>"/"</span>)[<span>4</span>][:<span>6</span>]
    prompt = prompt.replace(<span>" "</span>, <span>"-"</span>).replace(<span>","</span>, <span>""</span>).replace(<span>"."</span>, <span>"-"</span>)
    out_file = <span>f"data/<span>{MODEL_NAME}</span>/<span>{img_id}</span>--<span>{prompt}</span>"</span>[:<span>200</span>]
    out_file = out_file + <span>".jpg"</span>

    <span># if folder doesn't exist, create it</span>
    os.makedirs(os.path.dirname(out_file), exist_ok=<span>True</span>)
    <span>print</span>(<span>"Downloading to"</span>, out_file)
    urllib.request.urlretrieve(url, out_file)
    <span>print</span>(<span>"====================================================================="</span>)

NEGATIVE_PROMPT = <span>"cartoon, blurry, deformed, watermark, dark lighting, image caption, caption, text, cropped, low quality, low resolution, malformed, messy, blurry, watermark"</span>

<span># these prompts were all taken from [https://lexica.art/?q=dog+portrait](https://lexica.art/?q=dog+portrait)</span>
PROMPTS = [
  <span>"Adorably cute qdg dog portrait, artstation winner by Victo Ngai, Kilian Eng and by Jake Parker, vibrant colors, winning-award masterpiece, fantastically gaudy, aesthetic octane render, 8K HD Resolution"</span>,
  <span>"Incredibly cute golden retriever qdg dog portrait, artstation winner by Victo Ngai, Kilian Eng and by Jake Parker, vibrant colors, winning-award masterpiece, fantastically gaudy, aesthetic octane render, 8K HD Resolution"</span>,
  <span>"a high quality painting of a very cute golden retriever qdg dog puppy, friendly, curious expression. painting by artgerm and greg rutkowski and alphonse mucha "</span>,
  <span>"magnificent qdg dog portrait masterpiece work of art. oil on canvas. Digitally painted. Realistic. 3D. 8k. UHD."</span>,
  <span>"intricate five star qdg dog facial portrait by casey weldon, oil on canvas, hdr, high detail, photo realistic, hyperrealism, matte finish, high contrast, 3 d depth, centered, masterpiece, vivid and vibrant colors, enhanced light effect, enhanced eye detail, artstationhd "</span>,
  <span>"a portrait of a qdg dog in a scenic environment by mary beale and rembrandt, royal, noble, baroque art, trending on artstation "</span>,
  <span>"a painted portrait of a qdg dog with brown fur, no white fur, wearing a sea captain's uniform and hat, sea in background, oil painting by thomas gainsborough, elegant, highly detailed, anthro, anthropomorphic dog, epic fantasy art, trending on artstation, photorealistic, photoshop, behance winner "</span>,
  <span>"qdg dog guarding her home, dramatic sunset lighting, mat painting, highly detailed, "</span>,
  <span>"qdg dog, realistic shaded lighting poster by ilya kuvshinov katsuhiro otomo, magali villeneuve, artgerm, jeremy lipkin and michael garmash and rob rey "</span>,
  <span>"a painting of a qdg dog dog, greg rutkowski, cinematic lighting, hyper realistic painting"</span>,
]

<span># Randomize PROMPT order</span>
random.shuffle(PROMPTS)

<span># loop 10 times, generate 100 images</span>
<span>for</span> i <span>in</span> <span>range</span>(<span>10</span>):
  <span>for</span> prompt <span>in</span> PROMPTS:
    download_prompt(prompt)

Sau khi chạy tập lệnh này nhiều lần, tôi đã tạo ra ít nhất 1000 hình ảnh. Tôi sẽ nói rằng ~20% là vô nghĩa và khoảng 80% là dễ thương, hài hước hoặc chính xác. Đây là một số hình ảnh yêu thích của tôi:

Hình ảnh yêu thích được chọn lọc

5. Tìm THE ONE

Cuối cùng, sau khi tạo ra hàng trăm Queso nhân tạo, tôi đã chọn được hình ảnh này. Tôi thích bảng màu, sống động và tương phản. Tôi thích kết cấu và tất cả các đường nét và chi tiết tinh xảo. Nó cũng chụp được đôi mắt của Queso khá tốt, đó là điều cuối cùng đã bán được cho tôi. Mỗi khi tôi nhìn vào nó, tôi nghĩ, “chết tiệt, đó là Queso!”

Cái này. Đây là cái đó.

Bây giờ, mục tiêu cuối cùng cho dự án nghệ thuật này là kết thúc với một bản in nghệ thuật chất lượng cao mà tôi có thể đóng khung và đặt trên bức tường nghệ thuật của mình. Mặc dù thú vị, hình ảnh này sẽ không tạo ra một bản in nghệ thuật rất tốt; việc cắt xén vụng về ở trên và dưới giới hạn tiềm năng của nó. Ngoài ra, nếu tôi in 512x512px ở độ phân giải 300dpi, hình ảnh này sẽ chỉ là 1,7x1,7” trên giấy. Tôi đang nhắm mục tiêu 11x17”.

Vì vậy, bước tiếp theo trong dự án này là khắc phục việc cắt xén vụng về. Thật là một điều đáng tiếc khi chúng ta không thể chỉ thêm pixel mới vào trên và dưới.

Đùa thôi! Chúng ta có thể! Đó là nơi Outpainting xuất hiện.

6. Outpainting

Outpainting là một kỹ thuật nơi bạn có thể tạo ra các pixel mới mở rộng liền mạch các ranh giới hiện có của hình ảnh. Điều này có nghĩa là chúng ta có thể chỉ cần tạo ra các pixel mới ở trên và dưới hình ảnh của mình để có được một bản trình diễn nghệ thuật hoàn chỉnh về Queso. Theo như tôi hiểu, và tôi có thể sai 🤷‍♂️, outpainting cho các mô hình khuếch tán lần đầu tiên được triển khai bởi OpenAI.

Họ có một ví dụ tuyệt vời trong bài đăng trên blog thông báo của họ, mà tôi đã đưa vào đây.

Bản gốc: Girl with a Pearl Earring của Johannes Vermeer
Outpainting: August Kamp × DALL·E, lấy từ https://openai.com/blog/dall-e-introducing-outpainting

Tôi chưa sử dụng Dall-E 2 nhiều, vì vậy tôi muốn thử và xem nó hoạt động như thế nào với outpainting. Theo ý kiến của tôi, trải nghiệm và giao diện người dùng outpainting của OpenAI là tốt nhất tôi đã thử; nhưng tôi không phải là một fan hâm mộ lớn của kết quả pixel được tạo ra. Ở đây tôi có một đoạn video nhỏ, nơi tôi đã thêm pixel vào trên cùng của hình ảnh của mình, nhưng tất cả các kết quả đều hơi quá hoạt hình theo ý thích của tôi; họ cũng làm cho nó trông như Queso đang đội một chiếc băng đô vương miện.

❌ Đánh 1

Sau đó, tôi đã thử sử dụng Giao diện web Automatic1111 Stable Diffusion từ các sổ tay mà tôi đã đề cập ở trên https://github.com/TheLastBen/fast-stable-diffusion. Giao diện Automatic1111 là giao diện đầy đủ tính năng và có thể mở rộng nhất trong cộng đồng, vì vậy tôi nghĩ outpainting sẽ hoạt động ngay lập tức™️. Tôi đã sai 😐. dường như nó lấy hàng pixel trên cùng và dưới cùng và mở rộng chúng xuống từ chiều cao 512px đến chiều cao 1344px.

❌ Đánh 2!

Ảnh chụp màn hình chức năng outpainting bị hỏng trong Giao diện AUTOMATIC1111.

Cuối cùng, tôi đã thử sử dụng Ứng dụng Draw Things Mac. Tôi thực sự rất thích ứng dụng Draw Things. Nó thực hiện nhiều việc mà Automatic1111 làm nhưng có giao diện người dùng tốt hơn và chạy cục bộ miễn phí trên Macbook Pro M1/M2. Tuy nhiên, tôi không thể làm cho giao diện người dùng outpainting thực sự hoạt động 😐. Vì vậy, cuối cùng tôi đã quyết định sử dụng img2img hình ảnh 512x512px của mình thành hình ảnh 768x1152px.

Bạn có thể nhận thấy rằng hình ảnh 512x512px bắt đầu ở đây hơi khác so với những hình ảnh ở trên. Đó là vì tôi đã rất hào hứng và bắt đầu chơi với inpainting (mà tôi sẽ đề cập chi tiết hơn tiếp theo) trước khi mở rộng hình ảnh. Đừng lo lắng về nó!

Ảnh chụp màn hình của DrawThings.app img2img resize.

Kết quả thay đổi kích thước DrawThings.app img2img. 768x1152px.

Điều này hoạt động khá tốt! Tôi hơi ngạc nhiên vì tôi nghĩ img2img sẽ bắt đầu tạo ra sự kỳ lạ trong không gian chưa được lấp đầy, nhưng nó đã làm đúng ở đây.

Bạn sẽ nhận thấy rằng chi tiết tóc trên trán và vòng tròn huy chương ở cổ hơi lung lay và không chi tiết. Tôi cũng không phải là một fan hâm mộ lớn về cách phần dưới trông giống như hoa. Làm thế nào trên thế giới chúng ta sẽ thay đổi điều đó?

Inpainting, tất nhiên!

7. Inpainting

Inpainting là một kỹ thuật nơi bạn che (sơn lên) một lựa chọn cụ thể của hình ảnh của bạn và thay thế nó bằng các pixel mới được tạo. Điều này có phần tương tự và liên quan đến outpainting, nhưng nó được sử dụng để khắc phục sự cố và thêm chi tiết.

Bước inpainting là nơi tôi dành phần lớn thời gian của mình cho dự án này. Từ từ và lặp đi lặp lại chọn các đoạn nhỏ, tạo hình ảnh mới cho các đoạn đó và tiến gần hơn đến một cái gì đó tốt hơn. Đây là cuộc sống của một nghệ sĩ, hiện thực hóa một tầm nhìn từ một ý tưởng. Khi tôi vẽ trong đời thực (IRL), tôi thực hiện chính xác thực hành tương tự này với sơn acrylic trên vải. Từ từ mang các phần của bức tranh vào cuộc sống.

Tôi đã thử lại ứng dụng DrawThings để inpainting, nhưng nó không hoạt động chính xác. Vì vậy, tôi đã quay lại sử dụng Giao diện Automatic1111 để inpainting, hoạt động rất tốt.

Dưới đây là ảnh chụp màn hình về quá trình inpainting trông như thế nào. Ở bên trái, bạn sơn lên một loạt các nơi bạn muốn sửa đổi/thay đổi, và sau đó bạn tạo ra nhiều lần lặp lại mới cùng một lúc. Tôi thích làm điều này vì nó cho phép bạn kiểm tra hàng chục hướng trong vài giây thay vì vất vả kiểm tra hàng chục hướng trong suốt nhiều giờ.

Ví dụ về Upscaling trong Giao diện AUTOMATIC1111. Bên trái hiển thị các tùy chọn được sử dụng, bên phải hiển thị kết quả.

Tôi đã quay một đoạn video nhỏ về việc tôi cuộn qua lại thông qua các lần lặp lại inpainting cho tai của Queso. Tôi không thể không cảm thấy rằng “tạo ra 20 điều, chọn 1” này là quy trình làm việc cơ bản mới cho các nghệ sĩ trong thế giới có khả năng AI mới này.

8. Kết Quả Cuối Cùng

Sau một vài giờ chơi với inpainting, tôi đã đến một nơi mà tôi rất vui khi gọi là đã hoàn thành.

Tôi đã tạo một video gọn gàng hiển thị trực quan hóa trước/sau của hành trình hậu xử lý dựa trên AI này. Tôi thích cách các mảnh hoạt hình của hình ảnh gốc được thay thế bằng các yếu tố giống lông hơn; trong khi vẫn giữ một sơ đồ màu nhất quán. Tôi thích nó!

Nhưng hình ảnh này chỉ là 640x1280px; nó cần phải lớn hơn nhiều. EMBIGGEN!

Đó là nơi Upscaling xuất hiện.

9. Upscaling

Upscaling chỉ là một cách ưa thích để “thổi bay” một hình ảnh. Lấy một hình ảnh nhỏ và làm cho nó lớn hơn nhiều. Điều này siêu hữu ích cho các bản in chất lượng cao, nơi bạn in ở độ phân giải 300dpi — đó là rất nhiều pixel! Đôi khi, tôi cảm thấy như mình đang nhấp vào nút “NÂNG CAO” 🤯

Tôi thích sử dụng mô hình upscaling Real-ESRGAN 4x+. Trong ảnh chụp màn hình bên dưới, bạn có thể thấy tôi đã tăng gấp 6 lần hình ảnh. Để làm điều này, bạn sẽ cần một GPU với nhiều VRAM. Tôi đã chạy điều này trong google colab trên Nvidia A100 với 40GB VRAM. Khi tôi không chạy trong một sổ tay colab, tôi thường sẽ sử dụng mô hình Replicate này https://replicate.com/nightmareai/real-esrgan

![Ví dụ về Inpainting. Màu đen ở bên

0 lượt xem | 0 bình luận

Avatar

Cloud