继续【Stable-Diffusion WEBUI】方方面面研究(内容索引)

news2024/10/6 6:00:04

文章目录

  • (零)前言
  • (一)绘图
    • (1.1)模型
      • (1.1.1)基础模型(Stable-diffusion模型)
      • (1.1.2)人物模型(LoRA模型)
    • (1.2)绘图方式
      • (1.2.1)文生图(Text to Image)
        • (1.2.1.1)提示词/模板风格(Prompt / Styles)
        • (1.2.1.2)采样(Sampling)
        • (1.2.1.3)修复(Restore or Fix)
        • (1.2.1.4)其它参数
        • (1.2.1.5)插件:可选附加网络(LoRA插件)(Additional networks)
        • (1.2.1.6)插件:ControlNet
        • (1.2.1.7)脚本(Script)
      • (1.2.2)图生图(Image to Image)
      • (1.2.3)图片处理(附加功能:放大/抠图等)
  • (二)训练
    • (2.1)数据准备
    • (2.1.1)筛选照片
      • (2.1.2)预处理照片
      • (2.1.3)提示词(tags)处理
      • (2.1.4)目录命名
    • (2.2)训练工具
      • (2.2.1)选你喜欢的
      • (2.2.2)训练参数
      • (2.2.3)训练过程(例)
      • (2.2.4)训练结果

(零)前言

关于Stable-Diffusion WEBUI,我发现网上各种教程真的很多。
写得很好很详细的也不少,读了感觉比我写的好多了,无论是原理和相关论文还是操作和细节。
所以准备记录下Stable-Diffusion WEB UI的方方面面,以及哪里去看相关的资料。

同时自己写的东西也有点乱,得整理一下。呃在整理完以前,本篇还是会包含不少具体的内容。
这篇Index应该会不断的补充。

💡我AI绘图方面的文章索引:

  • 🔗浅谈【Stable-Diffusion WEBUI】(AI绘图)的基础和使用
  • 🔗探索【Stable-Diffusion WEBUI】的插件:骨骼姿态(OpenPose)
  • 🔗探索【Stable-Diffusion WEBUI】的插件:界面与中文翻译
  • 🔗探索【Stable-Diffusion WEBUI】的插件:画布扩绘(Outpaint)
  • 🔗闲谈【Stable-Diffusion WEBUI】的插件:美不美?交给AI打分
  • 🔗探索【Stable-Diffusion WEBUI】的附加功能:图片缩放&抠图

💡本篇内容阅读提示:

  • 我想画更好看:适合的模型,好的提示词,合理的参数。
  • 我要更多风格:(下载)更多的基础模型,LoRA模型。
  • 我要画我自己:训练自己的模型(训练自己的画风)。
  • 我的模型好么:可选附加网络(LoRA插件),对比模型/权重参数等。
  • 生成高分辨率:附加功能,插件:缩放。
  • 更好控制细节:插件:ControlNet。

(一)绘图

(1.1)模型

(1.1.1)基础模型(Stable-diffusion模型)

根据你绘图的目标,需要选择一种基础模型,人物/风景/建筑/宇宙/动漫/仿真?
参考:🔗xiaolxl的国风3@抱脸,请自行了解huggingface.co上的模型。比如但不局限于:

  • 原始基础:SD v1.5
  • 常见动漫:OpenJourney,Anything,NovalAI(就那整合包啊),RedShift ……
  • 仿真风格:Dreamlike-Photoreal,BasilMix(融合亚洲脸),ChilloutMix(清凉组合/亚洲),URPM(注意NSFW) ……

(1.1.2)人物模型(LoRA模型)

注意版权,比如各地girllikeness模型……

  • 参考:https://openai.wiki/lora-model-part-1.html,以及part2,3。
  • 参考:https://www.bilibili.com/read/cv20039815。
  • 参考:https://aigallery.design/chinese-diffusion-models.html,呃,明星?

(1.2)绘图方式

(1.2.1)文生图(Text to Image)

(1.2.1.1)提示词/模板风格(Prompt / Styles)

  • 正向提示词:描述希望图片生成为什么样子的词语(highres, beautiful, masterpiece)。

  • 反向提示词:不希望图片出现的内容(lowres, ugly, blurry…)。

  • 模板风格:比较完美的一组正反提示词,可以保存成一个“模板风格”,今后重复调用。
    用模板风格可以存储别人的提示词配置用来生成同样的效果。
    很多模型通常都来自网站,但是现在国内访问不了?:civitai 。
    也可以参考:Danbooru 标签超市 ,或提示词学徒库 。
    或小日子过得不错的另类🇯🇵寻找图像提示🔞NSFW❗❗❗

  • (强调) / [弱化]:权重:提示词中出现:(photorealistic:1.4)是强调photorealistic,并且权重是1.4(光标放单词上后,就可以Ctrl+上/下箭头快速调节呢)。圆括号越多越强调——而方括号则是弱化,越多方括号越弱。

  • LoRA模型提示词:提示词中出现:<lora:xxxxx:1.0> 就是LoRA模型的提示词,后面1.0也是权重,调节同上。

(1.2.1.2)采样(Sampling)

  • 采样方法(Sampler) :通常:DPM++ SDE karras ,参考Stable diffusion webui如何工作以及采样方法的对比
  • 采样迭代步数(Steps) :迭代多少次,通常至少20起步。

(1.2.1.3)修复(Restore or Fix)

  • 面部修复(Restore faces):通常都勾选,由于神经网络无法完全捕捉人脸的微妙细节和变化,导致产生了不自然或扭曲的结果。实测似乎还带了美颜的效果(汗),总之人像的话选中它就对了。
    面部修复对比(左关,右开)例子:
    面部修复对比
  • 高清修复(Hires. fix):由于Stable-Diffusion模型的原因(512x512)不适合直接生成高分辨率照片。
    所以可以设置低分辨率并选中这个选项。有人说慎选,其实可以自己尝试【生成低分辨率+高清修复】vs【直接高分辨率】哪个更好。
    工作原理可看WEBUI仓库的WIKI。
    高清修复对比(关,开,直接生成高分辨率)例子: 💡直接生成高分辨率就算随机种子一致结果也不同了……
    高清修复对比

(1.2.1.4)其它参数

  • 分辨率(Width and Height):长x宽。概念大家都知道。 在AI作图中并不是分辨率选得高图就仅仅变大(处理时间变长)而已。模型会适合一定范围内的分辨率(通常都不大),所以我们一般只选择384x512 -> 600x800 这种不太高的分辨率。如果要生成大图则需要配合前面的【高清修复】,或则使用【附加功能】的图片放大,或则两者配合。
  • 生成批次/每批数量(Batch count / Batch size) :重复生成多少次 x 每次生成几张 = 本次最后生成的图片数量,都设为1就是单张。注意【每批数量】是很考验显存的,如果显卡不是很强悍(显存不够大)那还是别设置高了(会OOM报错的)。
  • 提示词相关性(CFG Scale):图像与你的提示的匹配程度。参考Stable Diffusion 新手入门手册,通常5-8,设太高会偏执的要画提示词内容,结果可能很怪,可同时增加【采样迭代步数】来缓和。
  • 随机种子(seed):这怎么解释,后面的骰子图标是填入-1(随机),回收站图标是填入上次用过的值。

💡做到这里就可以生成图片了。

(1.2.1.5)插件:可选附加网络(LoRA插件)(Additional networks)

⭐需要在WEBUI中安装插件。
用于对比各种参数生成图的不同效果(测试模型)
正常使用时不用,参考:Stable diffusion打造自己专属的LORA模型

(1.2.1.6)插件:ControlNet

⭐需要在WEBUI中安装插件。
🌟需要下载多个不同模型。

用模型进一步控制生成的图片内容,
可用多种算法检测已有图片的边缘,深度,身体手部姿态。或则来自涂鸦,生成新的图片。

需要精确控制图片输出时使用,参考:ControlNet|使用教程
比如(很多控制,这里只放2个例子,简单看看吧):

  • OpenPose 姿态检测
    更加和谐的图片

  • Canny 边缘检测
    在这里插入图片描述

配合ControlNet,可用骨骼姿态的插件来生成/编辑骨骼姿态图片,控制最终生成的图像中人物的动作:
可以参考这篇: 🔗探索【Stable-Diffusion WEBUI】的插件:骨骼姿态(OpenPose)

(1.2.1.7)脚本(Script)

  • x/y/z图表
    我只用过【x/y/z图表】,可以配合上面的可选附加网络,生成对比矩阵图片,一般用来测试模型。
    但自己观察到的对比图,和实际输出的模型参数组合,似乎有偏差,目前仅作参考吧。
  • Controlnet-M2M
    可以配合ControlNet把视频进行逐帧处理,最后形成一个GIF动图,参考:……制作跳舞小姐姐 m2m和mov2mov哪家强……
    有意思的是,连你选的ControlNet模型生成的中间图,也做成动画了。。。
    在这里插入图片描述

(1.2.2)图生图(Image to Image)

和上面文生图一样,只是多了从某一张已有的图片出发。
也引入了 局部重绘 等功能(比如出了一张很满意的图,但是小部分画错了)。
相对局部重绘,还有画布扩绘脑部图片外围内容,甚至做成缩放视频。
参考:🔗探索【Stable-Diffusion WEBUI】的插件:画布扩绘(Outpaint)

(1.2.3)图片处理(附加功能:放大/抠图等)

文生图/图生图以外的功能。
为了避免索引过长,这部分内容单独出去了。
参考:🔗探索【Stable-Diffusion WEBUI】的附加功能:图片缩放&抠图

(二)训练

基础模型(大模型)没有条件,这里提到的仅是LoRA模型。

(2.1)数据准备

(2.1.1)筛选照片

这部分感觉比深度伪造(deep fake)要轻松多了。

  • 假设训练的是人物,准备自己的人像图片,20 - 40 张就可以了,当然我看模型也有100多张的。
  • 尽量简单背景,或进行人像抠图后填充简单颜色背景。
    似乎不是每台电脑都正常能用插件抠图⚠️?
    所以另外的选择可以在线抠图(你用PS自己弄不累嘛),比如:在线抠图,趣作图。抠图不好的话,那些原始素材中不是人物的东西可能也会被生成。
  • 处理成同样的分辨率,避免后续自动处理。
  • 最好是半身照片,少用大头照,最好不要全身带腿脚的照片(可以自行剪切)。

(2.1.2)预处理照片

用WEB UI的 训练 -> 预处理 标签页的功能,

  • 将刚才准备好的照片目录作为输入目录。
  • 将某个类似命名 .\xxxxx\100_xxxxx的目录作为输出目录。
  • 调整到上一步用的同样的分辨率。
  • 勾选使用 deepbooru 生成说明文字(tags)
  • 点击【预处理】按钮后,等待图片预处理完成,检查图片和提示词文本。

(2.1.3)提示词(tags)处理

如果背景并不是很乱,发型配饰上没有个人特色,那么可以不处理:)哈哈。
算了😮‍💨,还是认真写两句:

  • 如果背景很单纯,或已经比较好的抠图,确实可以不处理。
  • 检查和图片同名的提示词文本内容,会发现生成了很多已经识别出来的关键词。
  • 不在这些自动生成的关键词的图片内容,大概就是你的LoRA模型的特点。
  • 如果某个物品是人物特诊的一部分,请删掉这个关键词。
  • 可以加入人物名称到关键词第一位(无论是网上说法和实测似乎也没啥用,本条暂时保留)。

(2.1.4)目录命名

刚才提到预处理后的目录叫 .\xxxxx\100_xxxxx

  • xxxxx:是具体的人物简称。
  • 100:是里面每张图片训练的次数,这里我看到两种说法,一种是设为6-8,一种是根据图片数量至少设置100。
    这个次数会乘以后面设置的训练参数的epoch数,最后会训练大概几千次吧。

(2.2)训练工具

(2.2.1)选你喜欢的

  1. https://github.com/bmaltais/kohya_ss (WEB UI)
  2. https://github.com/Akegarasu/lora-scripts (脚本)

实际上都是调用的kohya_ss的sd-scripts。
我比较倾向用脚本那个项目来训练。写配置文件反而比较简单,WEB UI在训练这块用处不大。

两个建议:

  1. 用别人做好的整合包和教程,比如脚本训练用:https://www.bilibili.com/video/BV1fs4y1x7p2
  2. Python下载依赖时一定要换国内源,比如清华大学的:-i https://pypi.tuna.tsinghua.edu.cn/simple 。当然整合包的话已经换好了,否则可以参考我吐槽下载速度这块,实在慢到吐血(习惯了,Linux,Go,Python哪个不换国内源呢)。

(2.2.2)训练参数

我用的是lora-scripts,训练脚本train.ps1必须得改的几个参数:

  • $pretrained_model :基础模型路径(最好填入WEB UI下的绝对路径,避免拷贝几个GB的数据)
  • $train_data_dir :训练数据集路径(预处理完成的图片和提示词存放目录)
  • $resolution :分辨率(需要多少预处理成多少,填写一致)
  • $max_train_epoches :最大训练 epoch (1个epoch是一个完整的数据集通过神经网络一次并且返回一次的过程)
  • $save_every_n_epochs :每几个 epoch 保存一次
  • $output_name :模型保存名称

完整如下(参数可能改动和变化,和项目版本有关):

# LoRA train script by @Akegarasu

# Train data path | 设置训练用模型、图片
$pretrained_model = "./sd-models/model.ckpt" # base model path | 底模路径
$is_v2_model = 0 # SD2.0 model | SD2.0模型 2.0模型下 clip_skip 默认无效
$parameterization = 0 # parameterization | 参数化 本参数需要和 V2 参数同步使用 实验性功能
$train_data_dir = "./train/aki" # train dataset path | 训练数据集路径
$reg_data_dir = "" # directory for regularization images | 正则化数据集路径,默认不使用正则化图像。

# Network settings | 网络设置
$network_module = "networks.lora" # 在这里将会设置训练的网络种类,默认为 networks.lora 也就是 LoRA 训练。如果你想训练 LyCORIS(LoCon、LoHa) 等,则修改这个值为 lycoris.kohya
$network_weights = "" # pretrained weights for LoRA network | 若需要从已有的 LoRA 模型上继续训练,请填写 LoRA 模型路径。
$network_dim = 32 # network dim | 常用 4~128,不是越大越好
$network_alpha = 32 # network alpha | 常用与 network_dim 相同的值或者采用较小的值,如 network_dim的一半 防止下溢。默认值为 1,使用较小的 alpha 需要提升学习率。

# Train related params | 训练相关参数
$resolution = "512,512" # image resolution w,h. 图片分辨率,宽,高。支持非正方形,但必须是 64 倍数。
$batch_size = 1 # batch size
$max_train_epoches = 10 # max train epoches | 最大训练 epoch
$save_every_n_epochs = 2 # save every n epochs | 每 N 个 epoch 保存一次

$train_unet_only = 0 # train U-Net only | 仅训练 U-Net,开启这个会牺牲效果大幅减少显存使用。6G显存可以开启
$train_text_encoder_only = 0 # train Text Encoder only | 仅训练 文本编码器
$stop_text_encoder_training = 0 # stop text encoder training | 在第N步时停止训练文本编码器

$noise_offset = 0 # noise offset | 在训练中添加噪声偏移来改良生成非常暗或者非常亮的图像,如果启用,推荐参数为 0.1
$keep_tokens = 0 # keep heading N tokens when shuffling caption tokens | 在随机打乱 tokens 时,保留前 N 个不变。
$min_snr_gamma = 0 # minimum signal-to-noise ratio (SNR) value for gamma-ray | 伽马射线事件的最小信噪比(SNR)值  默认为 0

# Learning rate | 学习率
$lr = "1e-4"
$unet_lr = "1e-4"
$text_encoder_lr = "1e-5"
$lr_scheduler = "cosine_with_restarts" # "linear", "cosine", "cosine_with_restarts", "polynomial", "constant", "constant_with_warmup"
$lr_warmup_steps = 0 # warmup steps | 学习率预热步数,lr_scheduler 为 constant 或 adafactor 时该值需要设为0。
$lr_restart_cycles = 1 # cosine_with_restarts restart cycles | 余弦退火重启次数,仅在 lr_scheduler 为 cosine_with_restarts 时起效。

# Output settings | 输出设置
$output_name = "aki" # output model name | 模型保存名称
$save_model_as = "safetensors" # model save ext | 模型保存格式 ckpt, pt, safetensors

# Resume training state | 恢复训练设置  
$save_state = 0 # save training state | 保存训练状态 名称类似于 <output_name>-??????-state ?????? 表示 epoch 数
$resume = "" # resume from state | 从某个状态文件夹中恢复训练 需配合上方参数同时使用 由于规范文件限制 epoch 数和全局步数不会保存 即使恢复时它们也从 1 开始 与 network_weights 的具体实现操作并不一致

# 其他设置
$min_bucket_reso = 256 # arb min resolution | arb 最小分辨率
$max_bucket_reso = 1024 # arb max resolution | arb 最大分辨率
$persistent_data_loader_workers = 0 # persistent dataloader workers | 容易爆内存,保留加载训练集的worker,减少每个 epoch 之间的停顿
$clip_skip = 2 # clip skip | 玄学 一般用 2
$multi_gpu = 0 # multi gpu | 多显卡训练 该参数仅限在显卡数 >= 2 使用
$lowram = 0 # lowram mode | 低内存模式 该模式下会将 U-net 文本编码器 VAE 转移到 GPU 显存中 启用该模式可能会对显存有一定影响

# 优化器设置
$optimizer_type = "AdamW8bit" # Optimizer type | 优化器类型 默认为 8bitadam,可选:AdamW AdamW8bit Lion SGDNesterov SGDNesterov8bit DAdaptation AdaFactor

# LyCORIS 训练设置
$algo = "lora" # LyCORIS network algo | LyCORIS 网络算法 可选 lora、loha、lokr、ia3、dylora。lora即为locon
$conv_dim = 4 # conv dim | 类似于 network_dim,推荐为 4
$conv_alpha = 4 # conv alpha | 类似于 network_alpha,可以采用与 conv_dim 一致或者更小的值
$dropout = "0"  # dropout | dropout 概率, 0 为不使用 dropout, 越大则 dropout 越多,推荐 0~0.5, LoHa/LoKr/(IA)^3暂时不支持

(2.2.3)训练过程(例)

相比深度伪造(训练N天)来说,这个训练(N分钟)简直太轻松了。
当然功劳是LoRA模型,之前训练过嵌入式模型也很痛苦的。

prepare tokenizer
update token length: 225
Use DreamBooth method.
prepare images.
found directory train\xxxxx\10_xxxxx contains 40 image files
400 train images with repeating.
0 reg images.
no regularization images / 正則化画像が見つかりませんでした
[Dataset 0]
  batch_size: 1
  resolution: (576, 768)
  enable_bucket: True
  min_bucket_reso: 256
  max_bucket_reso: 1024
  bucket_reso_steps: 64
  bucket_no_upscale: False

  [Subset 0 of Dataset 0]
    image_dir: "train\xxxxx\10_xxxxx"
    image_count: 40
    num_repeats: 10
    shuffle_caption: True
    keep_tokens: 0
    caption_dropout_rate: 0.0
    caption_dropout_every_n_epoches: 0
    caption_tag_dropout_rate: 0.0
    color_aug: False
    flip_aug: False
    face_crop_aug_range: None
    random_crop: False
    token_warmup_min: 1,
    token_warmup_step: 0,
    is_reg: False
    class_tokens: xxxxx
    caption_extension: .txt

[Dataset 0]
loading image sizes.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 40/40 [00:00<00:00, 5000.66it/s]
make buckets
number of images (including repeats) / 各bucketの画像枚数(繰り返し回数を含む)
bucket 0: resolution (576, 768), count: 400
mean ar error (without repeats): 0.0
prepare accelerator
Using accelerator 0.15.0 or above.
loading model for process 0/1
load StableDiffusion checkpoint
loading u-net: <All keys matched successfully>
loading vae: <All keys matched successfully>
loading text encoder: <All keys matched successfully>
Replace CrossAttention.forward to use xformers
[Dataset 0]
caching latents.
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 40/40 [00:13<00:00,  2.99it/s]
import network module: networks.lora
create LoRA network. base dim (rank): 32, alpha: 32.0
create LoRA for Text Encoder: 72 modules.
create LoRA for U-Net: 192 modules.
enable LoRA for text encoder
enable LoRA for U-Net
prepare optimizer, data loader etc.

===================================BUG REPORT===================================
Welcome to bitsandbytes. For bug reports, please submit your error trace to: https://github.com/TimDettmers/bitsandbytes/issues
For effortless bug reporting copy-paste your error into this form: https://docs.google.com/forms/d/e/1FAIpQLScPB8emS3Thkp66nvqwmjTEgxp8Y9ufuWTzFyr9kJ5AoI47dQ/viewform?usp=sf_link
================================================================================
CUDA SETUP: Loading binary D:\xxxx\lora-scripts\venv\lib\site-packages\bitsandbytes\libbitsandbytes_cuda116.dll...
use 8-bit AdamW optimizer | {}
override steps. steps for 10 epochs is / 指定エポックまでのステップ数: 4000
running training / 学習開始
  num train images * repeats / 学習画像の数×繰り返し回数: 400
  num reg images / 正則化画像の数: 0
  num batches per epoch / 1epochのバッチ数: 400
  num epochs / epoch数: 10
  batch size per device / バッチサイズ: 1
  gradient accumulation steps / 勾配を合計するステップ数 = 1
  total optimization steps / 学習ステップ数: 4000
steps:   0%|                                                                                                                                                      | 0/4000 [00:00<?, ?it/s]epoch 1/10
steps:  10%|███████████████                                                                                                                                        | 400/4000 [05:33<50:00,  1.20it/s, loss=0.126]epoch 2/10
steps:  20%|██████████████████████████████▏                                                                                                                        | 800/4000 [11:11<44:47,  1.19it/s, loss=0.105]saving checkpoint: ./output\xxxxx-000002.safetensors
epoch 3/10
steps:  30%|█████████████████████████████████████████████                                                                                                         | 1200/4000 [16:51<39:19,  1.19it/s, loss=0.123]epoch 4/10
steps:  40%|████████████████████████████████████████████████████████████                                                                                          | 1600/4000 [22:20<33:30,  1.19it/s, loss=0.128]saving checkpoint: ./output\xxxxx-000004.safetensors
epoch 5/10
steps:  50%|███████████████████████████████████████████████████████████████████████████                                                                           | 2000/4000 [27:48<27:48,  1.20it/s, loss=0.117]epoch 6/10
steps:  60%|██████████████████████████████████████████████████████████████████████████████████████████▌                                                            | 2400/4000 [33:17<22:11,  1.20it/s, loss=0.11]saving checkpoint: ./output\xxxxx-000006.safetensors
epoch 7/10
steps:  70%|█████████████████████████████████████████████████████████████████████████████████████████████████████████                                             | 2800/4000 [38:52<16:39,  1.20it/s, loss=0.112]epoch 8/10
steps:  80%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████                              | 3200/4000 [44:30<11:07,  1.20it/s, loss=0.124]saving checkpoint: ./output\xxxxx-000008.safetensors
epoch 9/10
steps:  90%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████               | 3600/4000 [50:08<05:34,  1.20it/s, loss=0.117]epoch 10/10
steps:  92%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▋            | 3673/4000 [51:48<04:36,  1.18it/s, loss=0.112]

(2.2.4)训练结果

只看loss是不行的,需要避免欠拟合过拟合,但我们又看不出来。
最好用这个章节的方法,对比一下不同阶段输出的模型效果:

(1.2.1.5)插件:可选附加网络(LoRA插件)

但是我感觉和实际生成不太一样,并不是很靠谱。
目前来看,我还不太懂如何训练出比较好的模型,如果人站得远通常五官就很奇怪。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

我在公司彻夜撸码,老板天天开X6夜店蹦迪,到头来工资还拖欠

讲道理&#xff0c;我的学历远达不到BAT等名企大厂的要求&#xff0c;去不了好公司我认了&#xff0c;大专毕业的我在找工作的时候发现留给自己的机会并不多&#xff0c;最后去了一家不知名的小公司。入职后才发现这家公司其实就是个外包公司&#xff0c;里面的业务部门和制度相…

【RPA开发】Selenium 实现网页自动化

开发时有时会遇到网页爬取限制的情况&#xff0c;那么此时可以通过 Selenium 来解决这个问题&#xff0c;因为 Selenium 是模拟浏览器执行网页爬取&#xff0c;相比 Request/API 操作更安全&#xff0c;服务器会完全认为是用户在用浏览器进行操作&#xff0c;如此可以实现网页自…

centos7环境下:DolphinScheduler3.1.5简介和伪集群模式安装部署

centos7环境下&#xff1a;DolphinScheduler3.1.5简介和伪集群模式安装部署 DolphinScheduler简介 Apache DolphinScheduler是一个分布式、易扩展的可视化DAG工作流任务调度平台。致力于解决数据处理流程中错综复杂的依赖关系&#xff0c;使调度系统在数据处理流程中开箱即用…

Quartz定时任务

基本介绍 Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目&#xff0c;可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个、百个、甚至是好几万个Jobs这样复杂的日程序表&#xff0c;Jobs可以做成标准的Java组件或EJBs Qua…

android framework-ActivityManagerService(AMS)下

一、ActivityThread \frameworks\base\core\java\android\app\ActivityThread.java 1.1、main public static void main(String[] args) {Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "ActivityThreadMain");// Install selective syscall interceptionAnd…

java native 方法编写

目录 前言 1、创建 java native 方法 2、创建洞态链接库项目 3、加载 dll 文件 前言 Java 提供了调用 C 或 C 函数的方法&#xff0c;这种方法就是 native 方法&#xff0c;全称 Java Native Interface (JNI) 1、创建 java native 方法 1&#xff09;新建 java 类文件 …

【CMake】如何使用CMake构建一个工程

1.如何使用CMake构建一个工程 1. 使用 CMakelists.txt 构建工程 一个最简单 CMake 的项目是将某个源文件构建成为可执行文件&#xff0c;使用CMake 构建项目时&#xff0c;你需要创建一个 CMakeLists.txt 文件&#xff0c;通常情况下&#xff0c;下面三条命令在每个 CMakeLis…

四结4.20

这俩天实现了分离客服端和服务端&#xff0c; 先将对象序列化&#xff0c;通过socket从客户端发送到服务端&#xff0c;反序列化 进行数据库操作&#xff0c;最后向客户端返回结果&#xff0c;渲染javafx的画面 中途遇到俩种异常&#xff0c;因为一报错弹出一大段红色的英语…

力扣sql中等篇练习(九)

力扣sql中等篇练习(九) 1 电影评分 1.1 题目内容 1.1.1 基本题目信息1 1.1.2 基本题目信息2 1.1.3 示例输入输出 a 示例输入 b 示例输出 1.2 示例sql语句 # 只要一个 可以考虑order by加上 limit的组SELECT子句中子查询的结果 # 电影名称和姓名不可能重复,所以直接Union a…

【RecyclerView】同时刷新和滚动导致,滚动位置异常(一)

前置&#xff1a; 被选中item高度与非选中item高度不一致&#xff0c;且硬件有点卡&#xff0c;运行会有一定卡顿。 可视界面的item为三个&#xff0c;总数据为十个。 期望效果&#xff1a; 》 实际上效果&#xff1a; 代码&#xff1a; mListAdapter.setSelectedPosition(…

学成在线笔记+踩坑(6)——【媒资模块】视频处理。FFmpeg+XXL-JOB

导航&#xff1a; 【黑马Java笔记踩坑汇总】JavaSEJavaWebSSMSpringBoot瑞吉外卖SpringCloud黑马旅游谷粒商城学成在线牛客面试题 目录 1 视频转码需求 1.1 视频编码格式和文件格式 1.2 windows使用编码工具FFmpeg 1.3 视频处理工具类 1.3.1 拼装FFmpeg命令的各工具类 1…

复旦MOSS大模型开源了「中国版ChatGPT」,Github和Hugging Face同时上线

最近&#xff0c;ChatGPT非常火&#xff0c;从ChatGPT3到ChatGPT4&#xff0c;都非常火。无论是否为互联网行业的&#xff0c;多少都听到过关于ChatGPT的消息。虽然百度、阿里等互联网巨头都已经宣布将会推出相关的类ChatGPT产品。但目前还未有成型的产品上线。 而昨日&#x…

94. 二叉树的中序遍历【119】

难度等级&#xff1a;容易 上一篇算法&#xff1a; 102. 二叉树的层序遍历【206】 力扣此题地址&#xff1a; 94. 二叉树的中序遍历 - 力扣&#xff08;Leetcode&#xff09; 1.题目&#xff1a;94. 二叉树的中序遍历 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序…

AlgoC++第四课:逻辑回归

目录 逻辑回归前言1. 鸢尾花分类问题1.1 基于线性回归的思考1.2 损失函数 2. 伯努利分布3. 示例代码3.1 数据可视化3.2 日志信息打印3.3 数据读取和处理3.4 逻辑回归模型3.5 完整示例代码3.6 python实现 4. 思考总结 逻辑回归 前言 手写AI推出的全新面向AI算法的C课程 Algo C&…

InnoDB中必须要了解的几个关键特性

InnoDB引擎在设计中使用了很多技术思想。下面我们主要介绍一些InnoDB的关键特性&#xff0c;帮助你去更好了解 InnoDB。 关键特性 1.预读&#xff08;1&#xff09;预读的两种算法&#xff08;2&#xff09;在InnoDB中相关配置 2.插入缓冲2.1 Insert Buffer2.2 Change Buffer2…

跨域的五种最常见解决方案

这是一篇笔记 什么是跨域&#xff1f; 跨域不是问题&#xff0c;是一种安全机制。浏览器有一种策略名为同源策略&#xff0c;同源策略规定了部分请求不能被浏览器所接受。 值得一提的是&#xff1a;同源策略导致的跨域是浏览器单方面拒绝响应数据&#xff0c;服务器端是处理…

C#基于asp.net的企业人事管理系统的研究与实现

&#xff08;一&#xff09;任务 1.本课题的任务是对人事管理系统的管理过程进行分析&#xff0c;列出逻辑实现过程&#xff0c;对系统进行逻辑设计和数据库设计&#xff1b; 2.主要实现系统管理、档案管理、考勤管理、薪水管理等功能&#xff1b; 3.实现企业员工的相关信息&am…

一篇文章教你解决node-sass 4.12.0 安装失败,一劳永逸

已知&#xff1a; 使用mac电脑使用的node版本是v14.20.0 问题&#xff1a;在安装node-sass 4.12.0的时候报错如下 看到这一堆错误&#xff0c;千万不要立马复制粘贴到浏览器去搜&#xff0c;感觉像无头苍蝇乱撞&#xff0c;好歹稍微看一下什么意思。 显而易见是有一个文档40…

浅析低代码开发的典型应用构建场景v

在数字经济蓬勃发展的大势之下&#xff0c;企业软件开发人员供给不足、开发速度慢、开发成本高、数字化和智能化成效不明显等问题日益凸出&#xff0c;阻碍了企业的数字化转型。 而近年来&#xff0c;低代码的出现推动了经济社会的全面提效&#xff0c;也成为人才供求矛盾的润…

【Docker】限制已运行容器的Cpu和内存

docker限制已运行容器的Cpu和内存 本文首发于 慕雪的寒舍 1.问题描述 最近云服务器的内存经常不够用&#xff0c;而且是莫名其妙的增多&#xff0c;在腾讯云的控制台里面看&#xff0c;4g的内存占用了3.2g&#xff0c;就卡到连ssh都连不上了 PS: 已换过网络和设备&#xff0c…