随着AIPC概念的产品不断落地,openKylin操作系统正在不断地嵌入AI的各种能力,为社区用户带来更智能的体验。在openKylin 2.0版本中,基于KolourPaint画图工具和VISION视觉大模型,开发实现了智能文生图功能。那么,当传统的画图应用遇上先进的AI文生图技术,会碰撞出怎样的火花呢?
01智能生成,创意无限
在openKylin 2.0版本中,画图工具利用先进的自然语言处理与深度学习技术,能够根据用户输入的文本描述,自动生成丰富多彩的图像。无论是壮丽的山水风光,还是细腻的静物描绘,只需简单的文字描述,即可解锁无限创意。
打开画图工具:
输入图像描述内容:
首次打开,在未配置模型下,会自动弹出配置模型弹窗,下面图像中已经为添加状态:
点击VISION视觉大模型选中右侧的+添加按钮,并选择模型类型,输入APIKey和APISecret:
添加后重新打开画图,并输入图像描述,点击立即生成按钮,等待生成,点击生成结果后可以在左侧编辑界面进行细化操作;
文生图功能中存在对生成图像风格选项,存在16种风格,如下:
根据不同的需求,选择对应的风格进行生成,生成界面还存在分辨率和一次生成数量的选择,每种模型支持的不一样,所显示的分辨率和生成数量也不一样;
生成结果部分存在本次使用的历史选项,通过切换箭头可以选择每次生成的图像数据进行查看和编辑;
画图工具本身具有多种编辑能力,支持对生成图片进行二次绘画;
同时,支持图像导出保存功能,并有多种图像文件格式选项进行选择。
02应用场景,简直全面
教育领域:提供直观、生动的视觉学习材料,激发学习兴趣与创造力。如以下细胞结构的生成结果:
设计行业:可借助AI快速生成概念图,加速设计流程,提高工作效率。如以下室内空间布局图的生成结果:
艺术创作:提供灵感源泉,促进传统艺术与现代科技的融合创新。如以下三维雕塑山水画的生成:
日常生活:轻松创作个性化壁纸、表情包等,装点生活,分享快乐。
03自己动手,丰衣足食
在openKylin系统中,为了更好的嵌入AI功能,系统提供了SDK的接口能力,首先需要通过终端安装实际的开发包:
sudo apt install libkylin-ai-base-dev
安装后在代码中关联相关的PC文件和头文件:
CMakeLists.txt:
find_package(PkgConfig REQUIRED)
pkg_check_modules(AIBASE kylin-ai-base)
include_directories(${AIBASE_INCLUDE_DIRS})
头文件:
#include <ai-base/modelconfig.h>
#include <ai-base/vision.h>
#include <kylin-ai/config.h>
调用视觉模型服务创建函数,实现创建文生图模型功能:
bool AIModeDataThread::setSessionStatus()
{
VisionSession session = nullptr;
VisionResult ret = vision_create_session(&session);//创建视觉模型服务
if (ret != VISION_SUCCESS) {
qDebug()<<"创建失败VisionResult="<<ret
<<"ErrorMessage:"<<vision_get_last_error_message();
return false;
}
VisionResult initRet = vision_init_session(session);//初始化模型
if (initRet != VISION_SUCCESS) {
qDebug()<<"初始化失败 VisionResult="<<initRet
<<"ErrorMessage:"<<vision_get_last_error_message();
return false;
}
return true;
}
调用设置具体生成数据,如数量、风格、描述等:
/**
@brief setImageGenerationData
AI服务调用函数
@return
*/
bool setImageGenerationData()
{
int width = ImageSize.width();
int height = ImageSize.height();
vision_set_prompt2image_number(session, ImageNum); //设置生成数量
vision_set_prompt2image_size(session, width, height); //设置生成宽高
vision_set_prompt2image_callback(session, generateImageCallback, this);//设置回调函数,用于生成的图像数据进行回调
vision_set_prompt2image_style(session, ImageStyle);//设置生成风格
VisionResult imageRet = vision_prompt2image_async(session, textBox.toLocal8Bit().data());//传输生成图片描述的字体
if (imageRet != VISION_SUCCESS) {
qDebug()<<"文字输入失败,VisionResult="<<imageRet
<<"ErrorMessage:"<<vision_get_last_error_message();
return false;
}
return true;
}
文生图回调函数,在上一步设置图像数据后,用于模型返回生成的图片数据:
/**
* @brief generateImageCallback
* AI生成后回调函数
* @param imageData
* @param userData
*/
void AIModeDataThread::generateImageCallback(VisionImageData imageData, void* userData){
qDebug()<<"AI生成回调函数: 图像长度:"<<imageData.data_size
<<"图像数据:"<<imageData.data;
QPixmap map;
map.loadFromData(imageData.data, imageData.data_size); //QPixmap可以实现图像数据转换
}
感兴趣的社区爱好者可以在openKylin中自己动手开发,代码已在https://gitee.com/openkylin中开源。
04结语
在openKylin 2.0版本中,AI文生图技术的融入是对传统画图应用的一次革新。社区诚邀广大用户、开发者及艺术爱好者共同加入这场创意与技术交织的盛宴,携手共创更加多彩、智能的视觉世界。