【文生图】Stable Diffusion XL 1.0模型Full Fine-tuning指南(U-Net全参微调)

文章目录

  • 前言
  • 重要教程链接
  • 以海报生成微调为例
    • 总体流程
    • 数据获取
      • POSTER-TEXT
      • AutoPoster
      • CGL-Dataset
      • PKU PosterLayout
      • PosterT80K
      • Movie & TV Series & Anime Posters
    • 数据清洗与标注
    • 模型训练
    • 模型评估
    • 生成图片样例
      • 宠物包商品海报
      • 护肤精华商品海报
    • 一些Tips
      • Mata:EMU(Expressive Media Universe)
      • ideogram
      • DALL-E3
      • 关于模型优化
      • Examples of Commonly Used Negative Prompts:

前言

Stable Diffusion是计算机视觉领域的一个生成式大模型,能够进行文生图(txt2img)和图生图(img2img)等图像生成任务。Stable Diffusion的开源公布,以及随之而来的一系列借助Stable Diffusion为基础的工作使得人工智能绘画领域呈现出前所未有的高品质创作与创意。

今年7月Stability AI 正式推出了 Stable Diffusion XL(SDXL)1.0,这是当前图像生成领域最好的开源模型。文生图模型又完成了进化过程中的一次重要迭代,SDXL 1.0几乎能够生成任何艺术风格的高质量图像,并且是实现逼真效果的最佳开源模型。该模型在色彩的鲜艳度和准确度方面做了很好的调整,对比度、光线和阴影都比上一代更好,并全部采用原生1024x1024分辨率。除此之外,SDXL 1.0 对于难以生成的概念有了很大改善,例如手、文本以及空间的排列。

目前关于文生图(text2img)模型的训练教程多集中在LoRA、DreamBooth、Text Inversion等模型,且训练方式大多也依赖于可视化UI界面工具,如SD WebUI、AI 绘画一键启动软件等等。而Full Fine-tuning的详细教程可以说几乎没有,所以这里记录一下我在微调SDXL Base模型过程中所参考的资料,以及一些训练参数的说明。

重要教程链接

  • 主要参考:训练流程解读https://zhuanlan.zhihu.com/p/643420260——知乎
  • SDXL原理详解:https://zhuanlan.zhihu.com/p/650717774
  • 代码库:https://github.com/qaneel/kohya-trainer
  • SDXL训练说明:https://github.com/kohya-ss/sd-scripts/blob/main/README.md#sdxl-training
  • 微调Stable Diffusion模型例子:https://keras.io/examples/generative/finetune_stable_diffusion/
  • huggingface官方基于Diffusers微调SDXL代码库:
    https://github.com/huggingface/diffusers/blob/main/examples/text_to_image/README_sdxl.md

以海报生成微调为例

总体流程

在这里插入图片描述

数据获取

使用科研机构、公司以及Kaggle平台的公开数据集,具体如下:

POSTER-TEXT

数据集POSTER-TEXT是关于电商海报图片的文本图像生成任务,它包含114,009条记录,由阿里巴巴集团提供。包括原始海报图及擦除海报图中文字后的图片。
Paper:TextPainter: Multimodal Text Image Generation with Visual-harmony and Text-comprehension for Poster Design ACM MM 2023.
Source:https://tianchi.aliyun.com/dataset/160034

AutoPoster

数据集AutoPoster-Dataset是关于电商海报图片的自动化生成任务,它包含 76000 条记录,由阿里巴巴集团提供。

在一些图像中存在重复标注的问题。该论文提到训练集中有69,249张图像,测试集中有7,711张图像。但实际上,在去除重复数据后,训练集中有68,866张唯一的广告海报图像,测试集中有7,671张唯一的图像。

Paper: AutoPoster: A Highly Automatic and Content-aware Design System for Advertising Poster Generation ACM MM 2023
Source:https://tianchi.aliyun.com/dataset/159829

CGL-Dataset

Paper: Composition-aware Graphic Layout GAN for Visual-textual Presentation Designs IJCAI 2022
Github: https://github.com/minzhouGithub/CGL-GAN
Source:https://tianchi.aliyun.com/dataset/142692

PKU PosterLayout

作为第一个包含复杂布局的公共数据集,它在建模布局内关系方面提供了更多的困难,并代表了需要复杂布局的扩展任务。包含9,974个训练图片和905个测试图片。

  • 领域多样性
    从多个来源收集了数据,包括电子商务海报数据集和多个图片库网站。图像在域、质量和分辨率方面都是多样化的,这导致了数据分布的变化,并使数据集更加通用。
  • 内容多样性
    定义了九个类别,涵盖大多数产品,包括食品/饮料、化妆品/配件、电子产品/办公用品、玩具/仪器、服装、运动/交通、杂货、电器/装饰和新鲜农产品。

Paper: A New Dataset and Benchmark for Content-aware Visual-Textual Presentation Layout CVPR 2023
Github: https://github.com/PKU-ICST-MIPL/PosterLayout-CVPR2023
Source:http://59.108.48.34/tiki/PosterLayout/

PosterT80K

电商海报图片,但是数据未公开,单位为中科大和阿里巴巴
Paper: TextPainter: Multimodal Text Image Generation with
Visual-harmony and Text-comprehension for Poster Design ACM MM 2023
Source:None

Movie & TV Series & Anime Posters

Kaggle上的公开数据,需要从提供的csv或json文件中的图片url地址自己写个下载脚本。\

Source:

  • https://www.kaggle.com/datasets/bourdier/all-tv-series-details-dataset
    file prefix: https://www.themoviedb.org/t/p/w600_and_h900_bestv2/xx.jpg
  • https://www.kaggle.com/datasets/crawlfeeds/movies-and-tv-shows-dataset
  • https://www.kaggle.com/datasets/phiitm/movie-posters
  • https://www.kaggle.com/datasets/ostamand/tmdb-box-office-prediction-posters
  • https://www.kaggle.com/datasets/dbdmobile/myanimelist-dataset
  • https://www.kaggle.com/zakarihachemi/datasets
  • https://www.kaggle.com/datasets/rezaunderfit/48k-imdb-movies-data

以第一个数据源为例:

import csv
import os
import requests
import warnings
warnings.filterwarnings('ignore')csv_file = r"C:\Users\xxx\Downloads\tvs.csv"
url_prefix = 'https://www.themoviedb.org/t/p/w600_and_h900_bestv2'
save_root_path = r"D:\dataset\download_data\tv_series"def parse_csv(path):cnt = 0s = requests.Session()s.verify = False    # 全局关闭ssl验证with open(path, 'r', encoding='utf-8') as f:reader = csv.DictReader(f)for row in reader:raw_img_url = row['poster_path']    # url itemimg_url = url_prefix + raw_img_urlif raw_img_url == '':continuetry:img_file = s.get(img_url, verify=False)except Exception as e:print(repr(e))print("错误的状态响应码:{}".format(img_file.status_code))if img_file.status_code == 200:img_name = raw_img_url.split('/')[-1]# img_name = row['url'].split('/')[-2] + '.jpg'save_path = os.path.join(save_root_path, img_name)with open(save_path, 'wb') as img:img.write(img_file.content)cnt += 1print(cnt, 'saved!')print("Done!")if __name__ == '__main__':if not os.path.exists(save_root_path):os.makedirs(save_root_path)parse_csv(csv_file)

数据清洗与标注

数据筛选标准:低于512和超过1024的去除,文件大小/分辨率<0.0005的去除,dpi小于96的去除。这里的0.0005是根据SD所生成图片的文件大小(kb)和分辨率所确定的一个主观参数标准,用于保证图片质量。统计八张SD所生成图片在该指标下的数值如下:

SD生成的文件大小/图像分辨率:0.00129, 0.0012, 0.0011, 0.00136, 0.0014, 0.0015, 0.0013, 0.00149

图片标注:使用BLIP和Waifu模型自动标注,上文给出的那个知乎链接中有详细的说明,这里不做赘述。

模型训练

  1. 模型准备:
    SDXL 1.0 的 vea 由于数字水印的问题生成的图像会有彩色条纹的伪影存在,可以使用 0.9 的 vae 文件解决这个问题。这里建议使用整合好的Base模型(链接),HuggingFace官方也有相关的说明如下:

SDXL’s VAE is known to suffer from numerical instability issues. This is why we also expose a CLI argument namely --pretrained_vae_model_name_or_path that lets you specify the location of a better VAE (such as this one).

  1. 部分训练参数说明
    • mixed_precision: 是否使用混合精度,根据unet模型决定,[“no”, “fp16”, “bf16”]
    • save_percision: 保存模型精度,[float, fp16, bf16], "float"表示torch.float32
    • vae: 训练和推理的所使用的指定vae模型
    • keep_tokens: 训练中会将tags随机打乱,如果设置为n,则前n个tags的顺序不会被打乱
    • shuffle_caption:bool,打乱标签,可增强模型泛化性
    • sdxl_train_util.py的_load_target_model()判断是否从单个safetensor读取模型,有修改StableDiffusionXLPipeline读取模型的代码
    • sample_every_n_steps: 间隔多少训练迭代次数推理一次
    • noise_offset: 避免生成图像的平均亮度值为0.5,对于logo、立体裁切图像和自然光亮与黑暗场景图片生成有很大提升
    • optimizer_args: 优化器的额外设定参数,比如weight_decay和betas等等,在train_util.py中定义。
    • clip_threshold: AdaFactor优化器的参数,在optimizer_args里新增该参数,默认值1.0。参考:https://huggingface.co/docs/transformers/main_classes/optimizer_schedules
    • gradient checkpointing:用额外的计算时间换取GPU内存,使得有限的GPU显存下训练更大的模型
    • lr_scheduler: 设置学习率变化规则,如linear,cosine,constant_with_warmup
    • lr_scheduler_args: 设置该规则下的具体参数,可参考pytorch文档

模型评估

目前,AIGC领域的测评过程整体上还是比较主观,但这里还是通过美学评分(Aesthetics)和CLIP score指标来分别衡量生成的图片质量与文图匹配度。评测代码基于GhostMix的作者开发的GhostReview,笔者仅取其中的一部分并做了一些优化,请结合着原作者的代码理解,具体代码如下:

import numpy as np
import torch
import pytorch_lightning as pl
import torch.nn as nn
import clip
import os
import torch.nn.functional as F
import pandas as pd
from PIL import Image
import scipyclass MLP(pl.LightningModule):def __init__(self, input_size, xcol='emb', ycol='avg_rating'):super().__init__()self.input_size = input_sizeself.xcol = xcolself.ycol = ycolself.layers = nn.Sequential(nn.Linear(self.input_size, 1024),# nn.ReLU(),nn.Dropout(0.2),nn.Linear(1024, 128),# nn.ReLU(),nn.Dropout(0.2),nn.Linear(128, 64),# nn.ReLU(),nn.Dropout(0.1),nn.Linear(64, 16),# nn.ReLU(),nn.Linear(16, 1))def forward(self, x):return self.layers(x)def training_step(self, batch, batch_idx):x = batch[self.xcol]y = batch[self.ycol].reshape(-1, 1)x_hat = self.layers(x)loss = F.mse_loss(x_hat, y)return lossdef validation_step(self, batch, batch_idx):x = batch[self.xcol]y = batch[self.ycol].reshape(-1, 1)x_hat = self.layers(x)loss = F.mse_loss(x_hat, y)return lossdef configure_optimizers(self):optimizer = torch.optim.Adam(self.parameters(), lr=1e-3)return optimizerdef normalized(a, axis=-1, order=2):l2 = np.atleast_1d(np.linalg.norm(a, order, axis))l2[l2 == 0] = 1return a / np.expand_dims(l2, axis)def PredictionLAION(image, laion_model, clip_model, clip_process, device='cpu'):image = clip_process(image).unsqueeze(0).to(device)with torch.no_grad():image_features = clip_model.encode_image(image)im_emb_arr = normalized(image_features.cpu().detach().numpy())prediction = laion_model(torch.from_numpy(im_emb_arr).to(device).type(torch.FloatTensor))return float(prediction)# ClipScore for 1 image
# 1张图片的ClipScore
def get_clip_score(image, text, clip_model, preprocess, device='cpu'):# Preprocess the image and tokenize the textimage_input = preprocess(image).unsqueeze(0)text_input = clip.tokenize([text], truncate=True)# Move the inputs to GPU if availableimage_input = image_input.to(device)text_input = text_input.to(device)# Generate embeddings for the image and textwith torch.no_grad():image_features = clip_model.encode_image(image_input)text_features = clip_model.encode_text(text_input)# Normalize the featuresimage_features = image_features / image_features.norm(dim=-1, keepdim=True)text_features = text_features / text_features.norm(dim=-1, keepdim=True)# Calculate the cosine similarity to get the CLIP scoreclip_score = torch.matmul(image_features, text_features.T).item()return clip_scoreif __name__ == '__main__':# 读取图片路径ImgRoot = './Image/ImageRating'DataFramePath = './dataresult/MyImageRating'    # all prompts results of each modelModelSummaryFile = './ImageRatingSummary/MyModelSummary_Total.csv'PromptsFolder = os.listdir(ImgRoot)if not os.path.exists(DataFramePath):os.makedirs(DataFramePath)# 读取图片对应的PromptsPromptDataFrame = pd.read_csv('./PromptsForReviews/mytest.csv')PromptsList = list(PromptDataFrame['Prompts'])# 载入评估模型device = "cuda" if torch.cuda.is_available() else "cpu"MLP_Model = MLP(768)  # CLIP embedding dim is 768 for CLIP ViT L 14# load LAION aesthetics modelstate_dict = torch.load("./models/sac+logos+ava1-l14-linearMSE.pth", map_location=torch.device(device))MLP_Model.load_state_dict(state_dict)MLP_Model.to(device)MLP_Model.eval()# Load the pre-trained CLIP model and the imageCLIP_Model, CLIP_Preprocess = clip.load('ViT-L/14', device=device, download_root='./models/clip')  # RN50x64CLIP_Model.to(device)CLIP_Model.eval()# 跳过已经做过的Promptstry:DataSummaryDone = pd.read_csv(ModelSummaryFile)PromptsNotDone = [i for i in PromptsFolder if i not in list(DataSummaryDone['Model'])]except:DataSummaryDone = pd.DataFrame()PromptsNotDone = [i for i in PromptsFolder]if not PromptsNotDone:import syssys.exit("There are no models to analyze.")for i, name in enumerate(PromptsNotDone):FolderPath = os.path.join(ImgRoot, str(name))ImageInFolder = os.listdir(FolderPath)DataCollect = pd.DataFrame()for j, img in enumerate(ImageInFolder):prompt_index = int(img.split('-')[1])txt = PromptsList[prompt_index]ImagePath = os.path.join(FolderPath, img)Img = Image.open(ImagePath)# ClipscoreImgClipScore = get_clip_score(Img, txt, CLIP_Model, CLIP_Preprocess, device)# aesthetics scorer# ImageScore = predict(Img)# LAION aesthetics scorerImageLAIONScore = PredictionLAION(Img, MLP_Model, CLIP_Model, CLIP_Preprocess, device)# temp = list(ImageScore)temp = list()temp.append(float(ImgClipScore))temp.append(ImageLAIONScore)temp = pd.DataFrame(temp)DataCollect = pd.concat([DataCollect, temp], axis=1)print("Model:{}/{}, image:{}/{}".format(i+1, len(PromptsNotDone), j+1, len(ImageInFolder)))DataCollect = DataCollect.TDataCollect['ImageIndex'] = [i + 1 for i in range(len(ImageInFolder))]DataCollect.columns = ['ClipScore', 'LAIONScore', 'ImageIndex']# 保存原数据DataCollect.to_csv(os.path.join(DataFramePath, str(name) + '.csv'), index=False)print("One Results File Saved!")print('Image rating complete!')# do some calculationModelSummary = pd.DataFrame()for i in PromptsNotDone:DataCollect = pd.read_csv(os.path.join('dataresult/MyImageRating', str(i) + '.csv'))temp = pd.DataFrame(DataCollect['LAIONScore'].describe()).T# 计算数据的偏度temp['skew'] = scipy.stats.skew(DataCollect['LAIONScore'], axis=0, bias=True, nan_policy="propagate")# 计算数据的峰度temp['kurtosis'] = scipy.stats.kurtosis(DataCollect['LAIONScore'], axis=0, fisher=True, bias=True,nan_policy="propagate")temp.columns = [i + '_LAIONScore' for i in list(temp.columns)]# temp['RatingScore_mean']=np.mean(DataCollect['Rating'])# temp['RatingScore_std']=np.std(DataCollect['Rating'])temp['Clipscore_mean'] = np.mean(DataCollect['ClipScore'])temp['Clipscore_std'] = np.std(DataCollect['ClipScore'])# temp['Artifact_mean']=np.mean(DataCollect['Artifact'])# temp['Artifact_std']=np.std(DataCollect['Artifact'])temp['Model'] = str(i)ModelSummary = pd.concat([ModelSummary, temp], axis=0)# save resultsnew_order = ['Model', 'count_LAIONScore', 'mean_LAIONScore', 'std_LAIONScore','min_LAIONScore', '25%_LAIONScore', '50%_LAIONScore', '75%_LAIONScore','max_LAIONScore', 'skew_LAIONScore', 'kurtosis_LAIONScore','Clipscore_mean', 'Clipscore_std']# 使用 reindex() 方法重新排序列ModelSummary = ModelSummary.reindex(columns=new_order)DataSummaryDone = pd.concat([DataSummaryDone, ModelSummary], axis=0)DataSummaryDone.to_csv('./ImageRatingSummary/MyModelSummary_Total.csv')pd.set_option('display.max_rows', None)  # None表示没有限制pd.set_option('display.max_columns', None)  # None表示没有限制pd.set_option('display.width', 1000)  # 设置宽度为1000字符print(DataSummaryDone)

下图给出了本文所训练的SDXL-Poster与主流文生图模型的比较结果,注意其中包括Anything模型开始往下的结果都是笔者自己调用相关模型生成的180张图片计算得来,所以标准差都偏大;而上方则是GhostReview作者调用这些模型生成960张图片的计算而来的结果。由于样本数量不一致,请读者谨慎参考
在这里插入图片描述

生成图片样例

将本文训练的SDXL-Poster与SDXL-Base、CyberRealistic比较。

宠物包商品海报

A feline peering out from a striped transparent travel bag with a bicycle in the background. Outdoor setting, sunset ambiance. Product advertisement of pet bag, No humans, focus on cat and bag, vibrant colors, recreational theme
SDXL-Poster

(a) SDXL-Poster

在这里插入图片描述

(b) SDXL-Base

在这里插入图片描述

(c) CyberRealistic

护肤精华商品海报

Four amber glass bottles with droppers placed side by side, arranged on a white background, skincare product promotion, no individuals present, still life setup
在这里插入图片描述

(a) SDXL-Poster

在这里插入图片描述

(b) SDXL-Base

在这里插入图片描述

(c) CyberRealistic

一些Tips

Mata:EMU(Expressive Media Universe)

简单文字,5秒出图。论文:https://arxiv.org/abs/2309.15807
知乎详细解读:https://zhuanlan.zhihu.com/p/659476603

介绍了EMU的训练方式:quality-tuning,一种有监督微调。其有三个关键:

  • 微调数据集可以小得出奇,大约只有几千张图片;
  • 数据集的质量非常高,这使得数据整理难以完全自动化,需要人工标注;
  • 即使微调数据集很小,质量调整不仅能显著提高生成图片的美观度,而且不会牺牲通用性,因为通用性是根据输入提示的忠实度来衡量的。
  • 基础的预训练大模型生成过程没有被引导为生成与微调数据集统计分布一致的图像,而quality-tuning能有效地限制输出图像与微调子集保持分布一致
  • 分辨率低于1024x1024的图像使用pixel diffusion upsampler来提升分辨率

ideogram

生成图像中包含文字的生成模型:ideogram,2023年8月23日发布,免费,官网https://ideogram.ai/

DALL-E3

“文本渲染仍然不可靠,他们认为该模型很难将单词 token 映射为图像中的字母”

  • 增强模型的prompt following能力,训练一个image captioner来生成更为准确详细的图像caption
  • 合成的长caption能够提升模型性能,且与groud-truth caption混合比例为95%效果最佳。长caption通过GPT-4对人类的描述进行upsampling得到

关于模型优化

  • 将训练出的base模型与类似的LoRA模型mix会好些
  • base模型的作用就是多风格兼容,风格细化是LoRA做的事情
  • SDXL在生成文字以及手时出现问题:https://zhuanlan.zhihu.com/p/649308666
  • 微调迭代次数不能超过5k,否则导致明显的过拟合,降低视觉概念的通用性(来源:EMU模型tips)

Examples of Commonly Used Negative Prompts:

  1. Basic Negative Prompts: worst quality, normal quality, low quality, low res, blurry, text, watermark, logo, banner, extra digits, cropped, jpeg artifacts, signature, username, error, sketch, duplicate, ugly, monochrome, horror, geometry, mutation, disgusting.
  2. For Animated Characters: bad anatomy, bad hands, three hands, three legs, bad arms, missing legs, missing arms, poorly drawn face, bad face, fused face, cloned face, worst face, three crus, extra crus, fused crus, worst feet, three feet, fused feet, fused thigh, three thigh, fused thigh, extra thigh, worst thigh, missing fingers, extra fingers, ugly fingers, long fingers, horn, realistic photo, extra eyes, huge eyes, 2girl, amputation, disconnected limbs.
  3. For Realistic Characters: bad anatomy, bad hands, three hands, three legs, bad arms, missing legs, missing arms, poorly drawn face, bad face, fused face, cloned face, worst face, three crus, extra crus, fused crus, worst feet, three feet, fused feet, fused thigh, three thigh, fused thigh, extra thigh, worst thigh, missing fingers, extra fingers, ugly fingers, long fingers, horn, extra eyes, huge eyes, 2girl, amputation, disconnected limbs, cartoon, cg, 3d, unreal, animate.
  4. For Non-Adult Content: nsfw, nude, censored.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/183624.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL的备份恢复

数据备份的重要性 1.生产环境中&#xff0c;数据的安全至关重要 任何数据的丢失都会导致非常严重的后果。 2.数据为什么会丢失 &#xff1a;程序操作&#xff0c;运算错误&#xff0c;磁盘故障&#xff0c;不可预期的事件&#xff08;地震&#xff0c;海啸&#xff09;&#x…

独立云厂商市场份额第一 | 云轴科技ZStack位居IDC云系统软件市场报告第一梯队

近日&#xff0c;全球IT市场研究和咨询公司IDC发布《中国云系统软件市场跟踪报告2023H1》报告&#xff0c;报告显示2023年上半年中国云系统软件整体市场规模达到24.08亿元&#xff0c;同比增长16.4%。其中&#xff0c;云轴科技ZStack 作为产品化的云基础软件提供商&#xff0c;…

怎么在相册里去水印?三种方法教你去除

当你查看相册时&#xff0c;有时可能会注意到一些照片上有水印&#xff0c;这可能会让人感到不满,不管你是想保存这些照片还是与他人分享&#xff0c;水印往往会影响图片的观赏效果&#xff0c;不过别担心我将向你介绍一些简单的方法&#xff0c;帮助你在相册中轻松去除这些水印…

浅谈前端自定义VectorGrid矢量瓦片样式

目录 前言 一、VectorGrid相关API介绍 1、VectorGrid 2、 LayerStyles样式详解 二、样式自动配置 1、页面定义 2、地图及PBF瓦片引入 3、矢量瓦片样式定义 4、鼠标事件交互 三、最终效果 1、自定义样式展示 2、鼠标交互 总结 前言 在上一篇博客中&#xff0c;详细讲…

6大场景,玩转ChatGPT!

文章目录 一、故事叙述提问举例 二、产品描述提问举例 三、报告撰写提问举例 四、邮件和信件撰写提问举例 五、新间稿和公告撰写提问举例 六、学术论文和专业文章撰写提问举例 本文是在GPT3.5版本下演示的 我们知道AI技术不仅能够自动生成文章和内容&#xff0c;还可以根据我们…

Postman接口测试工具,提高SpringBoot开发效率

文章目录 &#x1f33a;工具—postman⭐作用&#x1f3f3;️‍&#x1f308;安装&#x1f388;创建工作空间 &#x1f384;简单参数⭐原始方式&#x1f388;我们建立springboot项目&#xff0c;输入下面的代码&#x1f388;运行 ⭐SpringBoot方式 &#x1f384;实体参数&#x…

文献阅读:LONGNET: Scaling Transformers to 1,000,000,000 Tokens

文献阅读&#xff1a;LONGNET: Scaling Transformers to 1,000,000,000 Tokens 1. 文章简介2. 方法原理 1. 方法思路2. Dilated Attention 1. 具体原理2. 多头实现3. 复杂度分析 3. 训练方法 3. 实验结果4. 结论 & 思考5. 参考链接 文献链接&#xff1a;https://arxiv.org…

FPGA设计过程中有关数据之间的并串转化

1.原理 并串转化是指的是完成串行传输和并行传输两种传输方式之间的转换的技术&#xff0c;通过移位寄存器可以实现串并转换。 串转并&#xff0c;将数据移位保存在寄存器中&#xff0c;再将寄存器的数值同时输出&#xff1b; 并转串&#xff0c;将数据先进行移位&#xff0…

【微服务】一体化智慧工地管理平台源码

智慧工地系统是一种利用人工智能和物联网技术来监测和管理建筑工地的系统。它可以通过感知设备、数据处理和分析、智能控制等技术手段&#xff0c;实现对工地施工、设备状态、人员安全等方面的实时监控和管理。 一、智慧工地让工程施工智能化 1、内容全面&#xff0c;多维度数…

开源七轴myArm协作机械臂正逆运动学技术讲解

引言&#xff1a; 在本文中&#xff0c;我们将深入探讨机器人学的两个核心概念&#xff1a;正运动学和逆运动学。这两个概念是理解和控制机械臂运动的基础。通过一个具体的7轴机械臂实例&#xff0c;我们将详细介绍如何计算机械臂的正运动学和逆运动学。我们首先会解释正运动学…

集合贴1——人工智能技术

集合一下人工智能技术的文章&#xff1a; 基础课2——自然语言处理-CSDN博客文章浏览阅读412次。自然语言处理&#xff08;Natural Language Processing, NLP&#xff09;是计算机科学领域与人工智能领域中的一个重要方向&#xff0c;它研究能实现人与计算机之间用自然语言进…

Splunk 创建特色 dashboard 报表

1: 背景: 对原有的dashboard 进行增加点东西,特别是文字部分: 比如: 增加:“this is a guidline for how to use performance". 这段话,就不能写在title, 那样,这段文字,会出现在dashboard 的PDF 文件的分割线的上面,不符合要求。 2: 解决问题: 正确的做法是…

JavaScript使用正则表达式

正则表达式(RegExp)也称规则表达式(regular expression)&#xff0c;是非常强大的字符串操作工具&#xff0c;语法格式为一组特殊字符构成的匹配模式&#xff0c;用来匹配字符串。ECMAScript 3以Perl为基础规范JavaScript正则表达式&#xff0c;实现Perl 5正则表达式的子集。Ja…

ZYNQ_project:led

本次实验完成&#xff1a;led流水间隔0.5s 闪烁间隔0.25s。 名词解释&#xff1a; analysis分析&#xff1a;对源文件进行全面的语法检查。 synthesis综合&#xff1a;综合的过程是由 FPGA 综合工具箱 HDL 原理图或其他形式源文件进行分析&#xff0c;进而推演出由 FPGA 芯…

Arrays.asList() 和 List.of() 的列表之争

1. 概述 有时在Java中&#xff0c;为了方便&#xff0c;我们需要创建一个小列表或将数组转换为列表。Java 为此提供了一些辅助方法。 在本文中&#xff0c;我们将比较初始化小型临时数组的两种主要方法&#xff1a;List.of()和 Array.asList()。 2. Arrays.asList() Java 自…

Zeus IoT : 基于 SpringBoot 的分布式开源物联网大数据平台

Zeus IoT 是一个集设备数据采集、存储、分析、观测为一体的开源物联网平台&#xff0c;全球首创基于 Zabbix 的物联网分布式数据采集架构&#xff0c;具备超百万级物联网设备的并发监控能力&#xff0c;真正具备工业级性能与稳定性的开源物联网大数据中台。 Zeus IoT 致力于让设…

AI生图王者之战!深度体验实测,谁是真正的艺术家?

10月11日凌晨&#xff0c;设计软件巨头Adobe宣布推出一系列图像生成模型&#xff0c;其中Firefly Image 2作为新一代图像生成器&#xff0c;通过改善皮肤、头发、眼睛、手和身体结构增强了人体渲染质量&#xff0c;提供更好的色彩和改进的动态范围&#xff0c;并为用户提供更大…

【数据结构】单链表之--无头单向非循环链表

前言&#xff1a;前面我们学习了动态顺序表并且模拟了它的实现&#xff0c;今天我们来进一步学习&#xff0c;来学习单链表&#xff01;一起加油各位&#xff0c;后面的路只会越来越难走需要我们一步一个脚印&#xff01; &#x1f496; 博主CSDN主页:卫卫卫的个人主页 &#x…

跨境电商年底风控升级,测评养号如何选择稳定且纯净的IP环境?

随着年底跨境电商平台风控的升级&#xff0c;许多测评团队的账号存活率有所下降。对于自养号测评的卖家来说&#xff0c;IP的重要性不言而喻。除了设置参数阻断&#xff0c;IP的质量也直接影响到账户的稳定性和成功率。因此&#xff0c;在年底这个特殊时期&#xff0c;所有测评…

【c++入门】引用详解 | auto的类型推导 | 范围for循环 | nullptr空指针

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; C入门到进阶 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言&#x1f324;️引用☁️引用的概念☁️引用的特性⭐引用在定义时必须初始化 ☁️常引用…