【AIGC 应用之线稿生图】约稿插画师的得利助手!

2024-09-13 13:19:28 浏览数 (2)

一、应用背景

AIGC(Artificial Intelligence Generated Content)即人工智能生成内容,近年来在多个领域展现出强大的应用潜力。线稿上色技术作为AIGC的一个重要分支,利用深度学习算法,特别是生成对抗网络(GAN)和变分自编码器(VAE),能够自动为黑白线稿添加色彩。这种技术不仅提高了上色的效率,还为插画师提供了更多的创作可能性。

本文采用腾讯混元大模型中大模型图像创作引擎的线稿生图进行实例演示,讲解AIGC技术如何对插画师的工作产生质与量的飞跃。

本文使用腾讯混元大模型生成的线稿上色实际效果本文使用腾讯混元大模型生成的线稿上色实际效果

腾讯混元大模型(Tencent Hunyuan)具备强大的中文创作能力,复杂语境下的逻辑推理能力,以及可靠的任务执行能力。基于腾讯混元大模型,腾讯云推出了文本生成、图像创作、视频创作产品方案,轻松打造全场景 AIGC 应用。其中,大模型图像创作引擎是一款提供 AI 图像生成与处理能力的 API 技术服务,可以结合输入的图片或文本智能创作出与输入相关的图像内容,具有更强大的中文理解能力、更多样化的风格选择,以及更偏东方审美的绘画创作能力,更好支持中文场景下的建筑风景生成、古诗词理解、水墨剪纸等中国元素风格生成,以及各种动漫、游戏风格的高精度图像生成和风格转换,为高质量的内容创作、内容运营提供技术支持。

二、解决的问题

传统的线稿上色过程需要插画师手动为每个元素选择颜色并进行细致的填充,耗时且繁琐。AIGC线稿上色技术可以自动完成这一过程,大大缩短了创作时间。

(1)对于刚入行的插画师,线稿上色技术可以帮助他们快速掌握上色技巧,减少学习曲线。同时,AIGC技术可以模拟多种上色风格,新手插画师可以通过模仿不同风格的作品来提升自己的技能。

(2)而对于老从业者来说,面临着行业内卷的困境,也可以利用AIGC技术激发灵感,提升效率。

三、接入指引(服务端nodejs版)

3.1 注册账号

在使用大模型图像创作引擎服务前,您需要先注册腾讯云账号。如果没有账号,请参考 注册腾讯云教程。

3.2 开通服务

注册并通过实名认证后,登录腾讯云大模型图像创作引擎 控制台,阅读和同意服务条款,单击立即开通,即可获得大模型图像创作引擎的 API 接口调用权限。

3.2 新建/查看云API密钥

在控制台访问管理中,点击访问密钥菜单栏,进入API密钥管理页面,新建或查看密钥,保存secretId和secretKey。

3.3 新建项目文件夹并安装依赖

进入项目目录,打开终端,输入以下命令安装依赖:

代码语言:powershell复制
npm install tencentcloud-sdk-nodejs-aiart

3.4 新建云API函数模块tencentCloudApi.js文件,键入以下代码:

代码语言:javascript复制
// Depends on tencentcloud-sdk-nodejs version 4.0.3 or higher
import tencentcloud from "tencentcloud-sdk-nodejs-aiart"
const AiartClient = tencentcloud.aiart.v20221229.Client;
// 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密
// 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见:https://cloud.tencent.com/document/product/1278/85305
// 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取
const clientConfig = {
    credential: {
        secretId: "AKIDjIcgU1HI2VhcHxxxxxxxxxxxxxxxxxxxxx",
        secretKey: "KOBhwykFagX8UaS5Sxxxxxxxxxxxxxxxx",
    },
    region: "ap-shanghai",
    profile: {
        httpProfile: {
            endpoint: "aiart.tencentcloudapi.com",//接口请求域名
        },
    },
};
// 实例化要请求产品的client对象,clientProfile是可选的
const client = new AiartClient(clientConfig);

/**
 * 线稿生图请求
 * @param {string} prompt - 用于线稿生图的文本描述。建议格式:线稿中的主体对象 画面场景 配色/材质/元素/风格等
 * @param {string} inputImage - 线稿图 Base64 数据。图片限制:黑白线稿图片,512<单边分辨率<5000,小于 6MB……
 * @returns {SketchToImageResponse} 返回结果
 * @throws {Error} 如果请求失败或解析失败,抛出错误
 */
export async function sketchToImage(prompt, inputImage) {
    const params = {
        "Prompt": prompt,
        "InputImage": inputImage,
        "RspImgType": "url"
    };
    try {
        const response = await client.SketchToImage(params)
        if (!response.RequestId) {
            throw new Error(`HTTP error!`);
        }
        return response;
    } catch (error) {
        console.error(`Error fetching`, error);
        throw error;
    }
}
// 采用ES6写法,需在package.json文件中加入 "type": "module"

3.5 新建保存Url图片功能函数saveImageFromUrl.js

为方便保存图片,新建函数如下:

代码语言:javascript复制
// saveImageFromUrl.js
import https from 'https';
import fs from 'fs';
/**
 * 从指定的URL获取图片并保存到本地文件
 * @param {string} url - 图片的URL
 * @param {string} outputFilePath - 保存图片的本地文件路径
 * @returns {Promise<void>}
 */
export async function saveImageFromUrl(url, outputFilePath) {
    return new Promise((resolve, reject) => {
        const file = fs.createWriteStream(outputFilePath);
        https.get(url, (response) => {
            if (response.statusCode !== 200) {
                reject(new Error(`Failed to get image, status code: ${response.statusCode}`));
                return;
            }
            response.pipe(file);
            file.on('finish', () => {
                file.close(resolve);  // 文件写入完成并关闭
            });
        }).on('error', (err) => {
            fs.unlink(outputFilePath, () => {});  // 删除文件
            reject(err);
        });
    });
}

3.6 新建主业务模块index.js文件,键入以下代码:

代码语言:javascript复制
import { sketchToImage } from "./tencentCloudApi.js"
import { readFileSync } from "fs"
import { saveImageFromUrl } from './saveImageFromUrl.js';

// 本文以测试为例,将目标图片已存放至项目根目录,命名为test.jpg
var filePath = "test.jpg";
var base64Str = readFileSync(filePath, 'base64');
// 本文以测试为例,固定输入了如下提示语。建议格式:线稿中的主体对象 画面场景 配色/材质/元素/风格等
const prompt = '几艘帆船在海上航行,晴空万里,深蓝色的大海,白色的浪花翻滚,海鸥,蓝天白云,色彩绚丽,高清,绘本,童话';

const data = await sketchToImage(prompt, base64Str);
console.log(data)

const url = data.ResultImage
const timestamp = new Date().getTime().toString();
const outputFilePath = timestamp   '.jpg';

saveImageFromUrl(url, outputFilePath)
    .then(() => {
        console.log(`Image saved to ${outputFilePath}`);
    })
    .catch((err) => {
        console.error('Error saving image:', err);
    });

3.7 准备线稿一张,命名为test.jpg保存在项目的根目录

测试线稿测试线稿

3.8 打开终端,输入命令,进行测试:

代码语言:txt复制
node index.js

大约2-3秒后,我们得到以下结果

代码语言:txt复制
{
  ResultImage: 'https://aiart-1258344699.cos.ap-guangzhou.myzijiebao.com/sketch_to_img/1258618245/e6da2563-668a-46f0-a4df-7a75a31129fa-1258618245.jpg?q-sign-algorithm=sha1&q-ak=AKIDpRovliU1IJ5ctufBSVIq8AwTlnZ5MN8d&q-sign-time=1726134391;1726137991&q-key-time=1726134391;1726137991&q-header-list=host&q-url-param-list=&q-signature=d484398ea6950ddccf6e9ca974c44ab336cedf0f',
  RequestId: 'e6da2563-668a-46f0-a4df-7a75a31129fa'
}
Image saved to 1726134392625.jpg

可以看到,我们成功的得到了返回的图片URL地址,并将图片保存在了本地。

线稿生图成品线稿生图成品

四、技术优势

可以看到,AIGC技术能够在短时间内将线稿转换为高质量图像,大大缩短了设计周期。

实践中,我们使用腾讯混元大模型(Tencent Hunyuan)的线稿生图功能,在短短2-3秒的时间,即可将一幅线稿转化为插画成品,并且在多次重复使用之中,会获得完全不同的各种风格类型的作品。其模型训练上,也有着丰富的体量和质量,完全能够满足插画师在工作中的日常需要。

在应用上,采用API调用的方式使用AIGC技术,大大的降低了搭建算力和训练模型的成本,在用量成本上,弹性十足,且调用方法方式简单。无论是创建新应用还是在原有应用上增添功能,都是可以在极短的时间内实现的,满足低代码、轻量级的开发需求。

五、实际应用展望

虽然,AIGC技术能够提升插画师等行业的业务水平,可以短时间内将作画的灵感以文字的形式输入,并且迅速的得到相对满意的回馈,确确实实的大量的节省了创作的效率,大大的节省了从风格选定、配色、上色到成品的“废稿”过程,让插画师与甲方能够迅速的确定最终样式,熟练应用的话,甚至能够提升不只10倍的工作效率,但是目前仍然是有着一定的局限性,例如出图分辨率低、出图高宽比被限定、版权问题等,也是目前AIGC技术应用存在的壁垒。相信随着科技发展和政策的出台变更,AIGC技术能够有着更好的前景。

早学习,早应用,早改变,跟着时代发展步步向前就是我们新一代应该具备的特质。

所以,你学会了吗?

0 人点赞