当前位置: 首页 > wzjs >正文

触屏手机网站建设手机如何自己编程做游戏

触屏手机网站建设,手机如何自己编程做游戏,定制开发软件和产品,佛山网站建设熊掌号前言 体验了一把本地部署Janus-Pro-1B实现文生图功能。 1、开源项目下载 官方开源项目代码直接从Github上下载。 2、模型下载 模型官方下载需要魔法 Janus-Pro-1B模型文件:Janus-Pro-1B模型文件 百度网盘: https://pan.baidu.com/s/16t4H4z-QZe2UDAg4…

前言

体验了一把本地部署Janus-Pro-1B实现文生图功能。

1、开源项目下载

官方开源项目代码直接从Github上下载。

在这里插入图片描述

2、模型下载

在这里插入图片描述
模型官方下载需要魔法
Janus-Pro-1B模型文件:Janus-Pro-1B模型文件
百度网盘:
https://pan.baidu.com/s/16t4H4z-QZe2UDAg4EF5g3w?pwd=6666

3、将项目代码和模型添加到同一个文件

1)创建目录存放模型文件

将模型及配置权重文件存放在同一目录下,如Janus-Pro-1B
在这里插入图片描述

2)将模型目录放到官方开源项目中。

在这里插入图片描述

3)创建虚拟环境

使用如下命令创建虚拟环境:

myenv\Scripts\activate

4)安装所需依赖

pip install -r requirements.txt

5) 项目内容如下

在这里插入图片描述

6) 最后运行效果:运行 app_januspro.py

在这里插入图片描述

运行代码

# 导入必要的库
# 用于处理文件和目录路径
# 用于图像处理
# PyTorch库,用于深度学习模型的构建和训练
# 用于数值计算
# Hugging Face的Transformers库,用于加载预训练的语言模型
# 自定义的多模态因果语言模型和处理器
import os  
import PIL.Image  
import time
import torch  
import numpy as np 
from transformers import AutoModelForCausalLM  
from janus.models import MultiModalityCausalLM, VLChatProcessor  
from datetime import datetime # 打印PyTorch版本和CUDA可用性
print(torch.__version__)  
# 打印当前使用的PyTorch版本
print(torch.cuda.is_available())  
# 检查CUDA是否可用(即是否可以使用GPU)# 打印当前GPU的显存占pip install Pillow用情况
print("初始显存占用:", torch.cuda.memory_allocated() / 1024**3, "GB")  # 指定模型路径
# model_path = "deepseek-ai/Janus-Pro-1B"  # 禁用此远程路径
# 使用本地路径
model_path = "./Janus-Pro-1B"  
# 检查模型路径是否存在
assert os.path.exists(model_path), "模型路径不存在!"  
# 打印模型路径
print(f"模型路径:{model_path}")  # 加载VLChatProcessor和tokenizer # 加载VLChatProcessor
vl_chat_processor: VLChatProcessor = VLChatProcessor.from_pretrained(model_path)  # 获取tokenizer,用于将文本编码为模型可以理解的输入格式
tokenizer = vl_chat_processor.tokenizer # 使用AutoModelForCausalLM加载预训练的多模态因果语言模型
vl_gpt: MultiModalityCausalLM = AutoModelForCausalLM.from_pretrained(model_path, trust_remote_code=True
)  
# 将模型转换为float32精度,并将其移动到GPU上,设置为评估模式
vl_gpt = vl_gpt.to(torch.float32).cuda().eval()  # 打印加载模型后的显存占用情况
print("加载模型后显存占用:", torch.cuda.memory_allocated() / 1024**3, "GB") # 定义对话内容
conversation = [{# 用户角色"role": "<|User|>", # 用户输入的文本描述#"content": "long hair,pink lace dress, off-shoulder, high-waist, narrow waist", # "content": "这是一张极简主义的照片,一个橙色的橘子,有绿色的茎和叶,象征着繁荣,在中国新年期间坐在红色的丝绸布上。捕捉一个充满活力的向日葵盛开的特写镜头,一只蜜蜂栖息在它的花瓣上,它精致的翅膀捕捉阳光。",#"content": "这是一张古风照片,一个疑似少年的人站在山顶悬崖边上眺望远处的群山,负手而立,少年周身好似仙人气息,山下烟雾缭绕,隐隐约约有几座宫殿。"#"content":"瓜子脸 + 高额头 + 浓眉 + 大眼睛 + 高鼻梁 + 樱桃小嘴 + 尖下巴 + 白皙皮肤"#"content":"圆脸 + 宽额头 + 细眉 + 小眼睛 + 塌鼻子 + 厚嘴唇 + 圆下巴 + 黝黑皮肤"#"content":"方脸 + 窄额头 + 剑眉 + 丹凤眼 + 鹰钩鼻 + 薄嘴唇 + 方下巴 + 粗糙皮肤""content":"这是一张单独人物的照片、性别男、青年、面无表情、短发刘海、脸部干净、穿着西装、打着领带、脸型圆润、动漫化"},# 助手角色,内容为空{"role": "<|Assistant|>", "content": ""},  
]# 应用SFT模板生成多轮对话的prompt
# 使用VLChatProcessor的apply_sft_template_for_multi_turn_prompts方法将对话内容转换为模型可以理解的格式
sft_format = vl_chat_processor.apply_sft_template_for_multi_turn_prompts(# 对话内容conversations=conversation,# SFT模板格式sft_format=vl_chat_processor.sft_format, # 系统提示,此处为空system_prompt="", 
)  
# 在生成的prompt后添加图像生成的起始标记
prompt = sft_format + vl_chat_processor.image_start_tag  img_size = 384  # 修改图片尺寸384: (1B支持生成最好的尺寸,超过这个会出稀奇古怪的东西)
patch_size = 16  # 假设 patch_size 是 16
image_token_num_per_image = (img_size // patch_size) ** 2  # 计算 token 数量(** 2平方)
# 定义生成函数,用于生成图片
# 使用torch.inference_mode()装饰器,以减少内存占用并加速推理过程
@torch.inference_mode()  
def generate(mmgpt: MultiModalityCausalLM,           # 多模态因果语言模型vl_chat_processor: VLChatProcessor,     # 用于处理输入的处理器prompt: str,                            # 用户输入的文本描述temperature: float = 1,                 # 控制生成过程的随机性parallel_size: int = 1,                 # 一次生成的图片数量cfg_weight: float = 5,                  # 分类器自由引导(Classifier-Free Guidance)的权重image_token_num_per_image=image_token_num_per_image,   # 每张图片生成的token数量 576img_size=img_size,                    # 生成图片的尺寸384patch_size= patch_size,                   # 图片的patch大小
):# 使用tokenizer将prompt编码为input_idsinput_ids = vl_chat_processor.tokenizer.encode(prompt)  # 将input_ids转换为LongTensorinput_ids = torch.LongTensor(input_ids) # 初始化tokens,用于生成图片tokens = torch.zeros((parallel_size * 2, len(input_ids)), dtype=torch.int).cuda()  for i in range(parallel_size * 2):# 将input_ids复制到tokens中tokens[i, :] = input_ids if i % 2 != 0:# 对于非条件tokens,填充pad_idtokens[i, 1:-1] = vl_chat_processor.pad_id  # 获取输入的embeddings  # 将tokens转换为embeddings,作为模型的输入inputs_embeds = mmgpt.language_model.get_input_embeddings()(tokens)  # 初始化生成的tokens  # 初始化用于存储生成图片的tokensgenerated_tokens = torch.zeros((parallel_size, image_token_num_per_image), dtype=torch.int).cuda() # 记录耗时:开始start_time = time.perf_counter()# 逐步生成图片for i in range(image_token_num_per_image):outputs = mmgpt.language_model.model(# 输入的embeddingsinputs_embeds=inputs_embeds, # 使用缓存use_cache=True, # 使用过去的key-valuespast_key_values=outputs.past_key_values if i != 0 else None,  )hidden_states = outputs.last_hidden_state  # 获取隐藏状态# 计算logitslogits = mmgpt.gen_head(hidden_states[:, -1, :]) # 条件logitslogit_cond = logits[0::2, :] # 非条件logitslogit_uncond = logits[1::2, :] #  # 应用分类器自由引导(CFG)权重logits = logit_uncond + cfg_weight * (logit_cond - logit_uncond) # 计算概率分布probs = torch.softmax(logits / temperature, dim=-1)  # 使用torch.multinomial采样下一个tokennext_token = torch.multinomial(probs, num_samples=1) # 将采样的token存储到generated_tokens中generated_tokens[:, i] = next_token.squeeze(dim=-1) # 准备下一个输入的embeddingsnext_token = torch.cat([next_token.unsqueeze(dim=1), next_token.unsqueeze(dim=1)], dim=1).view(-1) # 生成图片的embeddingsimg_embeds = mmgpt.prepare_gen_img_embeds(next_token) # 更新输入的embeddingsinputs_embeds = img_embeds.unsqueeze(dim=1) # 打印每一步的显存占用情况print(f"Step {i}/{image_token_num_per_image} 显存占用:", torch.cuda.memory_allocated() / 1024**3, "GB") # 记录循环结束时间end_time = time.perf_counter()# 计算耗时elapsed_time = end_time - start_timeprint(f"循环耗时: {elapsed_time:.6f} 秒")# 解码生成的tokens为图片dec = mmgpt.gen_vision_model.decode_code(# 生成的tokensgenerated_tokens.to(dtype=torch.int),  # 图片的形状shape=[parallel_size, 8, img_size // patch_size, img_size // patch_size], )# 将生成的图片转换为numpy数组dec = dec.to(torch.float32).cpu().numpy().transpose(0, 2, 3, 1)  # 对图片进行后处理,将其转换为8位无符号整数格式dec = np.clip((dec + 1) / 2 * 255, 0, 255)  # 初始化用于存储最终图片的数组visual_img = np.zeros((parallel_size, img_size, img_size, 3), dtype=np.uint8)  # 将生成的图片存储到visual_img中visual_img[:, :, :] = dec  # 创建目录generated_samplesos.makedirs('generated_samples', exist_ok=True) for i in range(parallel_size):# 获取当前本地时间now = datetime.now()# 格式化输出formatted_time = now.strftime("%Y%m%d%H%M%S%f")# 定义保存路径:生成日期格式save_path = os.path.join('generated_samples', "img_{}.jpg".format(formatted_time)) # 保存生成的图片PIL.Image.fromarray(visual_img[i]).save(save_path)  # 调用生成函数生成图片
generate(# 多模态因果语言模型vl_gpt, # 用于处理输入的处理器vl_chat_processor,  # 用户输入的文本描述prompt, 
)

文章转载自:

http://1EvM6Q58.xphLs.cn
http://es2TuOEH.xphLs.cn
http://5OshLx4z.xphLs.cn
http://sf0Ftxon.xphLs.cn
http://aqg8adVq.xphLs.cn
http://yaNLnMGH.xphLs.cn
http://goUopXjP.xphLs.cn
http://1e8avG2N.xphLs.cn
http://Eraa8HFb.xphLs.cn
http://hzpDJiCa.xphLs.cn
http://BlljRIst.xphLs.cn
http://hfxHHFgg.xphLs.cn
http://qobUzQlZ.xphLs.cn
http://y3tebKO6.xphLs.cn
http://F5Ga77UR.xphLs.cn
http://pQCJF7Lg.xphLs.cn
http://QEgEI4Z0.xphLs.cn
http://iflNyfeI.xphLs.cn
http://dw4WYbQu.xphLs.cn
http://9FM0tqbv.xphLs.cn
http://gBkWIIvG.xphLs.cn
http://ModnYEzw.xphLs.cn
http://DmGUiBN1.xphLs.cn
http://muVPdekc.xphLs.cn
http://AciStaCL.xphLs.cn
http://TCXWWkaj.xphLs.cn
http://FG11RhAL.xphLs.cn
http://VgqUXoJZ.xphLs.cn
http://GwNVFkOv.xphLs.cn
http://n3YchKJb.xphLs.cn
http://www.dtcms.com/wzjs/730838.html

相关文章:

  • 微信网站合同wordpress 初始化 数据库
  • 适合个人做的网站有哪些东西在线购物网站建设流程图
  • 报社网站开发做什么查看网站备案号
  • 宝安网站(建设深圳信科)烟台网站建设哪家好
  • 杭州 高端网站建设个人网站样式
  • html静态网站怎么放在网站上公司网站建设一年多少钱
  • 界面十分好看的网站google搜索引擎入口
  • 南阳教育网站平台2021年中国十大电商平台排名
  • 网站logo怎么做最清楚南阳做网站
  • 亚马逊海外版网站wordpress的wap插件
  • 各大网站做推广的广告怎么做唐山快速建站公司
  • 徐闻网站开发公司安徽建设厅网站官网
  • 四川高速公路建设开发集团有限公司网站动漫设计与制作专业就业前景
  • 网站地图怎么添加威海建设局官方网站
  • 做外贸有免费的网站吗医学类app制作公司
  • 如何做正规的采集网站PHP网站开发简单实例
  • 接私活 做网站台州网站如何制作
  • 综合网站推广拍大师官方网站 图片做视频
  • 望城区建设局网站哪个网站可以做外贸
  • 金华网站建设设计手机网站表单验证
  • 户县做网站做网站佛山
  • python网站开发优缺wordpress 图片等比缩放
  • 无锡网站建设外包定制设计网站公司
  • 网站建设各部门职责策划没有证书编号
  • 做淘宝客网站要注意什么广告公司联系方式
  • 自动优化网站建设电话济南建设网建筑市场信用信息管理平台
  • WordPress网站加载时间wordpress 怎么打开
  • 金牛区建设审批网站网站建设外包服务公司创业计划书
  • 怎么建个人公司网站开发网站需要什么人员
  • 音乐网站设计怎么做网站建设不包括以下哪个阶段