PhotoDoodle: Learning Artistic Image Editing from Few-Shot Examples 论文解读
目录
一、概述
二、PhotoDoodle
1、OmniEditor的预训练
2、DiT重点
3、无噪声条件范式与CFM
4、EditLoRA
4.1关于LoRA
4.2关于EditLoRA
三、相关工作
一、概述
风格化图像编辑的论文!
介绍了PhotoDoodle,一个基于扩散模型的图像编辑框架,旨在通过少量示例学习艺术家的风格,实现照片的创意涂鸦(如添加装饰元素、艺术化处理),同时保持背景的完整性和一致性。
该论文的动机:将普通图片转换成富有创意的艺术作品(比如添加手绘线条,几何图案,3D效果等),但以往的传统方法依赖于艺术家的手动操作,耗时且门槛高。
现有方法不足之处:
- 全局风格迁移(如风格迁移模型)会全局修改图像纹理和颜色,导致背景内容被破坏,如人脸变成油画风格而失去真实感。
- 局部修复方法(如Inpainting)依赖精确遮罩标注,无法自动生成复杂元素,或者生成结果可能与背景透视或语义不匹配。
- 难以从小样本学习:艺术家的独特风格需要从少量示例(30-50对图像)中高效捕捉,但现有的方法容易产生过拟合或欠拟合。
PhotoDoodle提出的创新点:
- 提出PhotoDoodle框架:一个基于DiT的少样本学习模型,并实现保证背景完整性同时进行特有的风格编辑
- 噪音无关的条件范式:保留原图像的高频细节
- EditLoRA:参数高效的风格微调方法,避免过拟合
- 位置编码克隆:确保生成元素与背景的空间对齐
- 高质量数据集:6种艺术风格、300+ pairs的photoDoodle数据集
二、PhotoDoodle
PhotoDoodle分为两个部分,OmniEditor的预训练,EditorLoRA的微调。

1、OmniEditor的预训练
对于内部DiT的优化在第二点进行展开介绍。
看上面的图训练过程。
输入:
- 源图像(I_src) → VAE编码 → 源图像隐变量 z_src- 目标图像(I_tar) → VAE编码 → 隐变量 z_0(真实目标隐变量)- 文本指令(T) → CLIP编码 → 文本嵌入 c_text- 前向扩散 对z_0添加随机噪声得到z_t(带噪声的隐变量)- 将源图像隐变量 z_src、带噪声的隐变量z_t、c_text三者concat输入到DiT中
输出:
- 扩散模型(DiT)预测噪声 ε_θ,监督目标是让预测噪声逼近真实噪声 ε。
损失函数:(传统的去噪方式)
最小化预测噪声ε_θ与真实噪声ε之间的MSE:
推理过程:(传统的去噪方式)
- 源图像(I_src) → VAE编码 → 源图像隐变量 z_src- 文本指令(T) → CLIP编码 → 文本嵌入 c_text- 将源图像隐变量 z_src、文本嵌入c_text和高斯噪声z_T三者concat输入到DiT中进行多轮去噪,也就是说DiT预测出噪声ε_θ就要从z_T中去除这一部分,然后重新concat,输入到DiT中,反复去噪,最终将高斯噪声那一部分分离开得到z_0'- 解码生成图像I_tar'=VAEdecoder(z_0')
2、DiT重点
(1)位置编码克隆(PE Cloning)
将源图像隐变量z_src的位置编码(空间坐标信息)复制到带噪声的隐变量z_t上,确保生成内容与源图像对齐。
这一步在哪里做呢?当然是在DiT的自注意力机制后,先接RoPE编码后得到位置编码,再进行位置编码克隆。
(2)交叉注意力机制
就是文中提到的MM attention,也就是在DiT的cross-attention中c_text作为Query,上一部分图像隐变量作为key/value。
我的疑惑?为什么在DiT之前将z_src,z_tar,c_text拼接在一起输入,交叉注意力时是再次引入c_text,还是拆开c_text部分。
后续理解:首先所谓的拼接,应该是均作为DiT的输入的意思(z_src,z_tar拼接在一起,c_text作为交叉注意力部分的输入),而且c_text应该是一维的,z_src和z_tar是二维的本身不能拼接。
3、无噪声条件范式与CFM
(1)CFM
在PhotoDoodle中并没有使用扩散模型的方式,而是条件流的方式。
构建一个线性插值概率路径(从z_src到z_tar):
向量场预测(速度场预测):
目的是预测z_t到z_tar的速度场
真实的速度场:(概率路径对t求导):
损失函数(使用CFM后的损失函数):
(2)无噪声条件
定义一个与z_src相同表达对齐论文符号,也就是源图像经过VAE后的隐变量。
无噪声条件就是指,相比于扩散模型引入了高斯噪声作为隐变量,CFM方法并不需要引入高斯噪声,这样可以确保生成内容与源图像的背景和结构严格对齐,完全依靠z_src和c_text来驱动,或者说是输入图像I_src和文本T的数据引导。
4、EditLoRA
EditLoRA目标是通过少量示例(30-50 pairs)来学习艺术家风格,原理就是LoRA。
4.1关于LoRA
LoRA的位置是并联在原模型某一部分的预训练权重处,在训练过程中冻结左侧原模型预训练权重,训练右侧LoRA,推理过程冻结所有参数,对模型结构不进行修改,不去除预训练模型进行推理。
LoRA的核心思想是,通过在原始权重矩阵旁并联一个低秩的适配矩阵,来对原来模型进行微调,另一个是在SD模型中,可以对A场景下训练一个LoRA,之后将A LoRA植入B模型,可以使B模型学习到A模型的信息。
什么是低秩适配矩阵?
对于一个训练二维图像相关的预训练权重,我们可以看做是一个二维矩阵,比如100*100维,那么我们可以利用一个100*rank的A矩阵和rank*100的矩阵的乘积来代替这个100*100维的矩阵。其中在训练过程中A矩阵作kaiming均匀分布初始化,避免梯度消失或爆炸。B矩阵初始化为0矩阵,确保训练开始时低秩矩阵贡献为0,逐步学习。scale作为这个LoRA与原预训练权重merge时的比例,过大会覆盖原有的权重。
LoRA公式:
一个简单的LoraLInear示例,在这个类中已经把预训练模型(线性层)的结构写入了,但冻结了该部分的权重。
class LoRALinear(nn.Module):def __init__(self, in_features, out_features, merge, rank=16, lora_alpha=16, dropout=0.5):super(LoRALinear, self).__init__()self.in_features = in_featuresself.out_features = out_featuresself.merge = mergeself.rank = rankself.dropout_rate = dropoutself.lora_alpha = lora_alphaself.linear = nn.Linear(in_features, out_features)if rank > 0:# 修正维度:A (in_features, r), B (r, out_features)self.lora_a = nn.Parameter(torch.zeros(in_features, rank))self.lora_b = nn.Parameter(torch.zeros(rank, out_features))self.scale = self.lora_alpha / self.rank #通过lora_alpha计算scaleself.linear.weight.requires_grad = False if self.dropout_rate > 0:self.dropout = nn.Dropout(self.dropout_rate)else:self.dropout = nn.Identity()self.initial_weights()def initial_weights(self):# 初始化 A 和 Bnn.init.kaiming_uniform_(self.lora_a, a=math.sqrt(5)) #kaiming初始化lora_ann.init.zeros_(self.lora_b) #0初始化lora_bdef forward(self, x):if self.rank > 0 and self.merge:# 修正矩阵乘法和转置delta_w = (self.lora_a @ self.lora_b).T * self.scalemerged_weight = self.linear.weight + delta_woutput = F.linear(x, merged_weight, self.linear.bias)output = self.dropout(output)return outputelse:return self.dropout(self.linear(x))
对于原来的fc层(也就是linear层)替换成并联lora的loralinear层。
# 示例:替换预训练模型的线性层为LoRALinear
original_layer = model.fc # 假设原模型有一个全连接层
lora_layer = LoRALinear(in_features=768, out_features=512, merge=False, rank=16, lora_alpha=32
)
model.fc = lora_layer# 训练时:仅训练LoRA参数
optimizer = torch.optim.Adam(lora_layer.parameters(), lr=1e-3)# 推理时:合并权重
lora_layer.merge = True
output = model(input_data)
4.2关于EditLoRA
流程:OmniEditor预训练模型冻结所有参数,在DiT部分的交叉注意力层处并联一个LoRA结构。
重新提一遍OmniEditor的训练过程!
首先VAE是自己训练的,text encoder肯定是预训练好的可能是clip,DIT使用的是Flux.1 Dev模型的DiT部分权重
然后利用SeedEdit数据集在原有DiT权重下,接入一个rank=256的高秩LoRA模型,扩散过程替换成流匹配过程,开始训练。
之后将这个rank=256的LoRA融入这个OmniEditor模块。
EditLoRA微调部分!
再次利用一个小规模风格化数据集(50对)来额外训练一个rank=128的低秩LoRA模块,并冻结以往OmniEditor的所有参数,仅训练低秩LoRA。
将低秩LoRA合并到基础模型中,结束所有训练。
三、相关工作
近期文本引导图像编辑有三个paradigms:全局描述(prompt2prompt、Imagic、EditWorld、ZONE,通过文本描述和图像区域之间跨模态对齐来实现细粒度操作,但需要对目标属性进行细致的文本规范),局部描述引导(Blended Diffusion、Imagen Editor通过显式掩码注释和区域文本提示实现像素级控制,但受到精确空间规范要求限制),instruction-guided形式(instructpix2pix、HIVE通过接受编辑命令,来消除以往详细文本描述和精确的mask依赖,提高用户可访问性)
参考项目:GitHub - showlab/PhotoDoodle: Code Implementation of "PhotoDoodle: Learning Artistic Image Editing from Few-Shot Pairwise Data"
相关文章:
PhotoDoodle: Learning Artistic Image Editing from Few-Shot Examples 论文解读
目录 一、概述 二、PhotoDoodle 1、OmniEditor的预训练 2、DiT重点 3、无噪声条件范式与CFM 4、EditLoRA 4.1关于LoRA 4.2关于EditLoRA 三、相关工作 一、概述 风格化图像编辑的论文! 介绍了PhotoDoodle,一个基于扩散模型的图像编辑框架&#x…...
的pythonAPI文档含义
Open3D的pythonAPI文档含义 Open3D的pythonAPI文档含义1、相关文档1.[Open3D的python文档]2 [Open3D的cpp文档] 2、结论 >> 看了好久的文档,奶奶的什么个意思。1. class Type是一个枚举类,PointCloud等是枚举成员,每个成员在python有 n…...
跟着AI学vue第十三章
第十三章:技术传承与行业影响力塑造 到了这个阶段,你已经在Vue技术领域积累了深厚的经验,拥有了较强的技术实力。此时,你的重点将是把自己的知识和经验传递给更多人,在行业内树立起影响力,推动整个Vue技术…...
实现实时数据仓库开源项目
根据你的需求,以下是一些可以实现类似 ClickHouse 的实时数仓功能的项目,这些项目提供了高性能的数据处理和分析能力,适合实时数据仓库的场景: 1. Apache Doris Apache Doris 是一个开源的实时数据仓库,支持高吞吐量…...
实现了一个自适应的NOC路由机制,包括构建流量图、设计拥塞预测模型、优化路由策略和评估性能
以下是针对设计和实现自适应的网络 - on - chip (NOC) 路由机制的详细步骤及代码示例: 1. 分析NOC路由路径拥塞的原因及传统方法的不足之处 拥塞原因: 动态流量变化:芯片内不同模块的工作负载随时间变化,导致局部流量突然增加。…...
光速解决phpstudy无法启动MySQL服务
问题描述 在初步安装使用phpstudy时,会出现mysql服务启动失败的情况,具体表现为点击一键启动后,mysql启动又立即停止 原因及解决方法: phpstudy数据库无法启动有以下几个原因,可以看看自己是第几种: 服务名…...
2022 年 9 月青少年软编等考 C 语言五级真题解析
目录 T1. 城堡问题思路分析T2. 斗地主大师思路分析T3. 玩具摆放思路分析T4. 哥斯拉大战金刚思路分析T1. 城堡问题 1 2 3 4 5 6 7 ############################# 1 # | # | # | | ######---#####---#---#####---# 2 # # | # # # # ##…...
【原创】Ubuntu 24搭建Ollama+ DeepSeek局域网服务器
安装Ubuntu 服务器 通过ubuntu官网下载ubuntu 24服务器版本 刻录光盘(也可以使用U盘) 用光盘启动PC机器(必须是带显卡的PC机,包括集成Intel显卡的也行,纯CPU计算的服务器基本上不能使用) 最小化安装Ubuntu…...
阿里云ack的创建与实战应用案例
阿里云ack的创建与应用案例 创建前开通ack相关服务:开始创建简单的魔方游戏,熟悉sv与clb自动注册创建部署一个nginx 服务示例:走不同域名访问不同svc资源:为什么需要 Ingress ?创建第一个域名的 Deployment和Service。…...
制造业数字化实践案例丨国内某大型物联网企业数字化项目管理系统,赋能品牌和生态战略落地
30秒快读 该大型物联网企业在规模化和业务扩展过程中,面临项目管理模式单一、供应链与客户端协同不足、项目过程数据透明度低、软硬件项目管理分离等痛点,数字化项目管理系统建设旨在构建以项目制为核心的流程型组织,建立内外部高效协同的项…...
当AI重构认知:技术狂潮下的教育沉思录
备注:文章未Deepseek R1模型辅助生成,如有不妥请谅解。 以下使原文: 我有三个娃,各间隔4到5岁,经历过搜索引擎,短视频,短剧,本身曾经也是教育专业出生,任何事务都有两面性…...
Game Maker 0.11更新:构建社交竞速游戏并增强玩家互动
在这三部分系列中,我们将介绍如何实现Game Maker 0.11中一些最激动人心的新功能。 欢迎来到我们系列文章的第一篇,重点介绍了The Sandbox Game Maker 0.11更新中的新特性。 The Sandbox Game Maker 0.11是一个多功能工具,帮助创作者通过游戏…...
ubuntu配置jmeter
1.前提准备 系统 ubuntu server 22.04 前提条件:服务器更新apt与安装lrzsz:更新apt: sudo apt update安装lrzsz: 命令行下的上传下载文件工具 sudo apt install lrzszsudo apt install zip2.安装jemeter 2.1.下载jdk17 输入命令…...
计算机毕业设计Python+DeepSeek-R1大模型考研院校推荐系统 考研分数线预测 考研推荐系统 考研(源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
字段对比清洗
import pandas as pd import psycopg2 from psycopg2 import sql# 数据库连接配置 DB_CONFIG {"host": "","user": "","password": "","dbname": "","port": , }def get_excel_fi…...
过滤器 二、过滤器详解
过滤器生命周期: init(FilterConfig):在服务器启动时会创建Filter实例,并且每个类型的Filter只创建一个实例,从此不再创建!在创建完Filter实例后,会马上调用init()方法完成初始化工作,这个方法…...
七、Three.jsPBR材质与纹理贴图
1、PBR材质金属度和粗糙度 1、金属度metalness 金属度属性.metalness表示材质像金属的程度, 非金属材料,如木材或石材,使用0.0,金属使用1.0。 threejs的PBR材质,.metalness默认是0.5,0.0到1.0之间的值可用于生锈的金属外观 new THREE.MeshStandardMaterial({met…...
分布式主键生成服务
目录 一、使用线程安全的类——AtomicInteger或者AtomicLong 二、主键生成最简单写法(不推荐) 三、主键生成方法一:Long型id生成——雪花算法 四、主键生成方法二:流水号 (一)流水号概述 (二)添加配置 1.pom.xml 2.application.properties 3.创…...
【Day50 LeetCode】图论问题 Ⅷ
一、图论问题 Ⅷ 1、dijkstra算法 堆优化 采用堆来优化,适合节点多的稀疏图。代码如下: # include<iostream> # include<vector> # include<list> # include<queue> # include<climits>using namespace std;class myco…...
人大金仓KCA | 用户与角色
人大金仓KCA | 用户与角色 一、知识预备1. 用户和角色 二、具体实施1. 用户管理-命令行1.1 创建和修改用户1.2 修改用户密码1.3 修改用户的并发连接数1.4 修改用户的密码有效期 2.用户管理-EasyKStudio2.1 创建和修改用户2.2 修改用户密码2.3 修改用户的并发连接数2.4 修改用户…...
嵌入式开发:傅里叶变换(4):在 STM32上面实现FFT(基于STM32L071KZT6 HAL库+DSP库)
目录 步骤 1:准备工作 步骤 2:创建 Keil 项目,并配置工程 步骤 3:在MDK工程上添加 CMSIS-DSP 库 步骤 5:编写代码 步骤 6:配置时钟和优化 步骤 7:调试与验证 步骤 8:优化和调…...
【AI学习从零至壹】Numpy基础知识
PyTorch基础知识 Numpy基础NumPy 基本数据类型Numpy数组 NumPy 基础数组创建Numpy特殊数组创建Numpy数组的访问NumPy数组的遍历Numpy数组的常用属性比较常用的属性有: Numpy数组的基本操作Numpy数组的数学操作加减乘除 Numpy线性代数Numpy广播机制 Numpy基础 NumPy…...
Day11,Hot100(贪心算法)
贪心 (1)121. 买卖股票的最佳时机 第 i 天卖出的最大利润,即在前面最低价的时候买入 class Solution:def maxProfit(self, prices: List[int]) -> int:min_price prices[0]ans 0for price in prices:ans max(ans, price - min_price…...
Transformer 代码剖析1 - 数据处理 (pytorch实现)
引言 Transformer 架构自《Attention Is All You Need》论文发表以来,在自然语言处理领域引起了巨大的变革。它摒弃了传统的循环结构,完全基于注意力机制,显著提高了处理序列数据的效率和性能。本文将通过对一个具体的项目代码结构进行详细分…...
Python--模块(下)
3. 内置模块 3.1 os模块 常用功能: os.mkdir("new_dir") # 创建目录 os.listdir(".") # 列出当前目录文件 os.path.join("dir", "file.txt") # 路径拼接 os.path.abspath(__file…...
Android Studio超级详细讲解下载、安装配置教程(建议收藏)
博主介绍:✌专注于前后端、机器学习、人工智能应用领域开发的优质创作者、秉着互联网精神开源贡献精神,答疑解惑、坚持优质作品共享。本人是掘金/腾讯云/阿里云等平台优质作者、擅长前后端项目开发和毕业项目实战,深受全网粉丝喜爱与支持✌有…...
PS画笔工具
画笔工具: 画笔工具(B)(原理:单位笔刷的连续填充,文件格式.abr):圆形矢量笔刷、动态矢量画笔(旧版画笔里有 与压感笔有关)、图案填充画笔 shift画笔ÿ…...
[Java基础] JVM常量池介绍(BeanUtils.copyProperties(source, target)中的属性值引用的是同一个对象吗)
文章目录 1. JVM内存模型2. 常量池中有什么类型?3. 常量池中真正存储的内容是什么4. 判断一个字符串(引用)是否在常量池中5. BeanUtils.copyProperties(source, target)中的属性值引用的是同一个对象吗?6. 获取堆内存使用情况、非堆内存使用情况 1. JVM内…...
1.68M 免安装多格式图片批量转 webp 无广告软件推荐
软件介绍 今天要给大家分享一款超实用的图片处理工具,它能实现多格式图片向 webp 格式的转换,无论是 jpg、png、tif、gif 还是 webp 格式自身的图片,都能批量且借助多线程技术进行转换。 直接打开就能用,体积小巧,仅 …...
LeetCode 1472.设计浏览器历史记录:一个数组完成模拟,单次操作均O(1)
【LetMeFly】1472.设计浏览器历史记录:一个数组完成模拟,单次操作均O(1) 力扣题目链接:https://leetcode.cn/problems/design-browser-history/ 你有一个只支持单个标签页的 浏览器 ,最开始你浏览的网页是 homepage ,…...
[笔记.AI]AI知识科普提纲
仅供参考 1.AI基础认知 1.1什么是什么AI 1.2核心概念 1.2.1机器学习、深度学习、神经网络 1.2.2模型:模型、大模型、模型参数 1.2.3多模态 1.2.4生成式AI & 判别式AI 1.3发展与现状 2.大模型 2.1主流大模型 2.1.1分类 2.1.2各…...
学习知识的心理和方法杂记-01
前言: 1 学习新知识要讲究方法,“知识未学 方法先行”,写本系列文章是为了给自己加深大脑“条件反射”的,因为我自己学习新知识的过程中老会被不科学的“杂念”干扰,导致学习效率低下。 2 关于天才和普通人ÿ…...
网页制作10-html,css,javascript初认识の适用XHTML
一、简介: Xhtml是extensible hypertext markup language的缩写。它是由国际W3C组织制定并公布发行的。是一个过渡技术,结合了部分xml的强大功能及大多数html的简单特性。 Advantage. Xhtml提倡更简洁规范的代码。 Xhtml.文档在旧的基于的浏览器中&…...
C++ 中 cin 和 cout 教程
一、概述 在 C 里,cin 和 cout 是标准库 <iostream> 中用于输入输出操作的重要对象,它们基于流的概念,为开发者提供了方便且类型安全的输入输出方式。cin 是标准输入流对象,主要用于从标准输入设备(一般是键盘&…...
Qt for Android下QMessageBox背景黑色、文字点击闪烁
最近在基于Qt开发安卓应用的时候,在红米平板上默认QMessageBox出现之后,背景黑色,并且点击提示文字会出现闪烁,影响用户体验。 问题分析 1、设置QMessageBox样式,设置背景色、文字颜色,如下所示: QMessageBox {background: white;color: white; } 尝试之后,问题仍存…...
C++20的指定初始化器(Designated Initializers)
文章目录 指定初始化器的使用条件语法嵌套结构体的初始化数组的指定初始化注意事项优势 C20引入了**指定初始化器(Designated Initializers)**这一特性,允许在初始化结构体、联合体或类的对象时,明确指定成员变量的初始化值&#…...
Windows 11【1001问】删除Win11左下角小组件的6种方法
在Windows 11中,左下角的小组件功能虽然提供了天气、新闻等实用信息,但对于一些用户来说可能显得多余或干扰视线。因此,微软提供了多种方式让用户能够自定义是否显示这些小组件。以下是 6 种常见的设置方法来隐藏或关闭Windows 11左下角的小组…...
kotlin的函数标准库使用
摘要说明 函数标准库常用的有: 1、apply: apply函数作为一个配置函数,可以传入一个接收者,然后调用一系列函数来配置它以方便使用,如果提供lambda给apply函数执行,它会返回配置好的接收者 使用介绍&#x…...
深入剖析:自定义实现C语言中的atoi函数
在C语言的标准库中, atoi 函数是一个非常实用的工具,它能够将字符串形式的数字转换为对应的整数。然而,当我们深入探究其实现原理时,会发现其中蕴含着许多有趣的编程技巧和细节。本文将详细讲解如何自定义实现一个类似 atoi 功能的…...
Kubernetes (K8S) 核心原理深度剖析:从架构设计到运行机制
Kubernetes(K8S)作为容器编排领域的“操作系统”,其设计和实现原理是开发者进阶的必修课。本文将从架构设计、核心组件协作、关键机制实现三个维度,结合源码逻辑与实战场景,分享 K8S 的底层运行原理。 一、Kubernetes 架构设计 1. 声明式 API 与控制器模式 K8S 的核心设…...
springboot做接口限流
目录 1. 依赖全局配置2. 注解配置 1. 依赖全局配置 引入依赖 <dependency><groupId>com.github.taptap</groupId><artifactId>ratelimiter-spring-boot-starter</artifactId><version>1.2</version></dependency>appl…...
Visual Studio Code 跨平台安装与配置指南(附官方下载链接)
一、软件定位与核心功能 Visual Studio Code(简称VS Code)是微软开发的开源跨平台代码编辑器,支持超过50种编程语言的智能补全、调试和版本控制功能。2025版本新增AI辅助编程模块,可自动生成单元测试代码和API文档注释。 二、下载…...
TaskBuilder设置排序条件
在整个向导的最后一步,可以设置是否按指定字段的值对查询结果进行排序,支持正序和倒序两种排序方式。如果没有设置任何排序字段,则默认按数据库里现有数据记录的实际存储的先后顺序排序。如果设置了多个排序条件,则按这些条件从上…...
挖src实用脚本开发(二)
文章目录 技术原理代码实现一代码实现二总结 这篇文章记录cms识别脚本。 技术原理 1.使用在线平台识别,比如whatcms,fofa等 2.自己写脚本识别,但是指纹库麻烦,需要耗费大量精力 代码实现一 这里我使用的是whatcms接口࿰…...
[ISP] AE 自动曝光
相机通过不同曝光参数(档位快门时间 x 感光度 x 光圈大小)控制进光量来完成恰当的曝光。 自动曝光流程大概分为三部分: 1. 测光:点测光、中心测光、全局测光等;通过调整曝光档位使sensor曝光在合理的阈值内࿰…...
DeepSeek-R1:通过强化学习激发大语言模型的推理能力
注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】 文章目录 DeepSeek大模型技术系列三DeepSeek大模型技术系列三》DeepSeek-…...
002 docker安装rocketmq
docker search rocketmq#拉取镜像 docker pull foxiswho/rocketmq:server-4.3.2 docker pull foxiswho/rocketmq:broker-4.3.2 #创建nameserver容器 docker create -p 9876:9876 --name rmqserver \ -e "JAVA_OPT_EXT-server -Xms128m -Xmx128m -Xmn128m" \ -e "…...
算法训练(leetcode)二刷第三十七天 | *300. 最长递增子序列、674. 最长连续递增序列、*718. 最长重复子数组
刷题记录 *300. 最长递增子序列674. 最长连续递增序列基础解法(非动规)动态规划 718. 最长重复子数组滚动数组 *300. 最长递增子序列 leetcode题目地址 dp数组含义: dp[i]表示以nums[i]结尾的最长递增子序列长度,即以nums[i]结尾…...
LSTM长短期记忆网络-原理分析
1 简介 概念 LSTM(Long Short-Term Memory)也称为长短期记忆网络,是一种改进的循环神经网络(RNN),专门设计用于解决传统RNN的梯度消失问题和长程依赖问题。LSTM通过引入门机制和细胞状态,能够更…...
Java 面试题 20250227
Java 中序列化与反序列化是什么? 序列化:将 Java 对象转化成可传输的字节序列格式(字节流、JSON、XML),以便于传输和存储。 反序列化:将字节序列格式数据转化成 Java 对象的过程。 1、为什么需要序列化和…...