图像处理

1.对深度学习相关神经网络理解深入,如 DNN、CNN、RNN、GAN 等; 2.有深厚的理论研究背景和数据基础,熟悉 EM、MCMC、LR、LDA、PCA、时间序列等数学方法; 4.熟悉一种以上的深度学习的开源框架,如 Caffe、TensorFlow、ARMAILibrary、SNPE、OpenGLES 等。

人工智能代理(Artificial Intelligence Agent)

AI Agent 深度解析:潜力与挑战并存的智能新世界

定义

感知环境、进行决策和执行动作的智能实体

应用

  • ABI/GBI 生成式 BI 或是数据分析
  • Code Agent 代码助手
  • 基于 RAG 技术的知识问答

Coding Agent

aiXcoder 代码大模型在企业的应用实践

PPT

  • 语言模型发展历程

    • 深度神经网络
    • 预训练模型
    • 大语言模型 论文
  • aiXcoder 构建

    • 训练数据收集与筛选

      • Github 数据爬取与过滤
      • 删除低质量项目
      • 相似算法去重
      • 去除敏感数据
      • 去除注释数据
      • 删除语法错误代码
      • 删除静态分析缺陷代码
      • 代码文件顺序重排
    • 训练

      • 任务 随机 Mask 抽象语法树节点
      • 存在问题 项目级代码生成下的长序列依赖
    • 测试 更符合真实场景的测评集

基于 CodeFuse 的下一代研发探索

PPT > Github

  • 数据来源
    • Github
  • 预训练&微调
  • 推理加速&部署
  • 发展
    • 仓库级代码

大模型落地到代码助手场景的探索实践

PPT

  • 提示工程
    • 基本原理
      • 单个、定义明确的任务或问题上
      • 说明明确且详细,最好附带示例
      • 简明扼要

百度大模型驱动下的智能代码助手提效实践

PPT

RAG技术

深度解析 RAG 技术在大模型时代的原理与实践

概念

Alt text

分类

Alt text

朴素 RAG

  • 步骤
    • 索引: 直接将输入数据向量化
    • 检索: 对向量数据库进行匹配
    • 生成: 最后将输入数据与向量数据库匹配结果共同放入大模型中生成最终结果

高级 RAG

  • 步骤
    • 增加了对数据的预筛选,围绕预检索和后检索提出了多种优化策略

模块化 RAG

  • 步骤
    • 引入多个特定的功能模块和替换现有模块上。
    • 整个过程不仅限于顺序检索和生成,还包括迭代和自适应检索等方法

RAG for Code

Code Generation

  • REDCODER 摘要和代码双向生成
  • APICoder
  • COCOGEN

Semantic Segmentation Models

语义分割模型:从 FCN 到 DeepLab V3+的全面解析

2015

FCN(全卷积网络)

2015 年提出,首次将卷积神经网络应用于像素级分类,开创了端到端语义分割的先河。FCN 将最后几层全连接层替换为卷积层,允许任意大小的输入图像,并通过上采样(反卷积)恢复分割图的分辨率。

U-Net

特别适用于医学图像分割,其特征是编码器-解码器结构,解码器层与编码器层之间有跳跃连接,用以恢复细节信息。

2016

SegNet

基于 VGG 网络,改进了 FCN 的上采样部分,使用了编码器-解码器结构,其中解码器的上采样层使用了编码器的池化索引来恢复细节。

DeepLab V1

DeepLab 系列模型是语义分割领域的另一个重要里程碑。DeepLab V1 首次引入了 Atrous Convolution 模块,弥补了删除池化模块后感受野大小的影响。

2017

PSPNet(金字塔场景解析网络)

引入了金字塔池化模块(Pyramid Pooling Module),捕获不同尺度的信息,增强了模型对不同大小物体的分割能力。

DeepLab V2

DeepLab V2 在 ResNet 的基础上引入了 ASPP(Atrous Spatial Pyramid Pooling)模块,进一步扩大了感受野并提高了分割精度。

MobileNet V1

深度可分离卷积的应用

2018

DeepLab V3

而 DeepLab V3 通过增加 ASPP 模块的宽度,进一步提升了模型的性能。DeepLab V3+是 DeepLab 系列的最新版本,它增加了网络深度,将 Xception 网络作为主干,使用深度可分离卷积 Depthwise Separable Convolution, 结合了解码器模块,以恢复细节信息,进一步提升了多尺度处理能力。

ENet

专为实时应用设计,使用了高效的编码-解码结构和跳过连接。

MobileNet V2

Inverted Residuals 和 Linear Bottleneck

ICNet

多尺度级联输入,深度监督

BiSeNet

结合了两个分支,Spatial 分支和 Context 分支。

2019

HRNet

维持高分辨率流以捕获更多细节,同时进行多尺度融合。

DANet

Spatial Attention 和 Channel Attention

Fast-SCNN:Fast Semantic Segmentation Network

共享下采样权重双分支网络

OCRNet(Object Contextual Representations)

引入了对象上下文表示,使用注意力机制来建模像素间的关系,增强对局部和全局上下文的理解。

CCNet

提出了交叉注意机制(Criss-Cross Attention),允许模型以较低的计算成本建模长距离依赖

MobileNet V3

SE 模块和 Swish

2021

SegFormer

SETR

图像块编码,输入纯 Transformer 网络提取特征,reshape 特征后卷积上采样

MaskFormer

将分割统一为 Mask 分类任务

2023

Segment Anything Model (SAM)

一种通用的分割模型,能够处理多种类型的分割任务,包括语义分割、实例分割和全景分割。

Generative Model

VAE

AE VAE
VAE GAN Diffusion

GAN

DDPM

  • 生成过程被设计成一系列的马尔可夫步骤,其中每一个步骤只依赖于前一步的状态

DDIM

  • 采样
    • DDIM 在每一步都会预测并尝试直接达到最终的清晰状态,而不是仅仅依赖于当前的模糊状态
    • DDPM 通过马尔科夫链推导下一状态,DDIM 通过减少推理步数加速推理

Stable Diffusion

ControlNet

RAG

DIT

指标

MSE

  • 计算公式

PSNR

  • 单位:信噪比

  • 计算公式

SSIM

  • 通过均值和协方差衡量两张图像的 Luminance(亮度)、Contrast(对比度)和 Structure(结构)
  • 计算公式
  • 取值范围:[-1, 1]

opencv

https://segmentfault.com/a/1190000044071469

cv2.imread(path, flag)

  • flag:
1
2
[return]    type: numpy.ndarray
size: (H, W, C), C -> (BGR)

ImageToTensor

1
2
3
4
5
image = cv2.imread(path)
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

image = torch.from_numpy(image_rgb).transpose(1, 2).transpose(0, 1)
image = image.float().div(255)

cv2.imwrite(path, image)

TensorToImage

1
2
3
image = image.mul(255).byte()
image = image.transpose(0, 1).transpose(1, 2)
image = image.cpu().numpy()

通道处理

1
2
b, g, r = cv2.split(image)
image = cv2.merge((b, g, r))

图像处理与计算机视觉基础

二值化

  • cv2.threshold()

边缘检测

  • cv2.Canny()

图像滤波

  • cv2.filter2D()
  • cv2.blur()
  • cv2.GaussianBlur()

图像形态学操作

  • cv2.erode() 腐蚀
  • cv2.dilate() 膨胀
  • cv2.morphologyEx() 开闭运算、形态学梯度、顶帽、黑帽等

Deep Learning

【三年面试五年模拟】算法工程师的求职面试秘籍

分类 Classification

将输入数据划分到预定义的有限标签中,输出为预测的类别标签

  • 常用评价指标

    • 准确率
    • 精确率
    • 召回率
    • F1 分数
  • 应用

    • 花卉图像分类
    • 垃圾邮件拦截

回归 Regression

建立数值型随机自变量的模型并进行连续的因变量预测,输出为数值

  • 常用评价指标
    • 均方误差
    • R2 分数
  • 应用
    • 股票价格预测
    • 房价预测

聚类 Clustering

将无标签的数据分成多个类(簇),确保类内样本相似,类间样本相异,其输出是聚类结果(簇划分,簇标签,簇中心等)

  • 常用评价指标
    • 样本紧密度
    • 样本分隔度
  • 应用
    • 用户分群
    • 异常检测

决策 Decision making

通过神经网络理解给定目标,约束条件和可用信息,预测出最佳或满意的动作决策,其输出是一连串的动作

  • 常用评价指标
    • 最终回报
    • 平均奖励
  • 应用
    • 游戏 AI
    • 自动驾驶

概率密度估计 Probability density estimation

使用深度神经网络来估计一个随机变量或一组随机变量的概率密度函数,其输出是数据的概率分布

  • 常用评价指标衡量分布差异
    • 对数似然损失
    • KL 散度
  • 应用
    • 数据生成
    • 样本采样

hpc

GPU 编程与性能优化

CUDA 与 cuDNN

GPU 编程基本原理

特别是如何使用 CUDA 进行并行计算,以及 cuDNN 库在加速深度学习中的应用

内存管理

核函数设计

性能监控与调优

性能优化

掌握一些基本的性能分析工具和方法,比如使用 nvprof 或 TensorFlow Profiler 分析模型运行瓶颈,并实施相应的优化措施。

计算机视觉 Computer Vision

【三年面试五年模拟】算法工程师的求职面试秘籍 > 从 ReLU 到 GELU,一文概览神经网络的激活函数

  • https://github.com/DWCTOD/interview/blob/master/detail/%E4%BD%9C%E4%B8%9A%E5%B8%AE%20%E8%A7%86%E8%A7%89%E7%AE%97%E6%B3%95%E5%B7%A5%E7%A8%8B%E5%B8%88%20%E9%9D%A2%E7%BB%8F%EF%BC%882020%E5%B1%8A%EF%BC%89.md

  • https://github.com/GYee/CV_interviews_Q-A

图像处理与计算机视觉基础

基本概念

原理

图像预处理

特征提取

对象检测

图像分类

图像分割

OpenCV 库

读写图像

图像滤波

几何变换

特征检测与描述

深度学习基础

梯度下降

滑动平均

模型微调(Fine-tuning)

基础模块

池化层 Pooling Layer

归一化层 Normalization Layer

  • BN,Batch Normalization
  • IN,Instance Normalization
  • LN,Layer Normalization
  • GN,Group Normalization

BN 是怎么做,作用是什么

激活层

  1. 常见激活函数

    • Sigmoid
    • Tanh
    • ReLU
    • LeakyReLU
    • SoftPlus
    • ELU
    • SELU,自归一化
    • Swish,类 Sigmoid 作为开关
    • GELU
    • GLU
  2. 特性

    • 梯度消失 存在偏导过小
    • 梯度爆炸 偏导累乘过大
    • 梯度裁剪
    • 输出均值为 0 能避免每次权重只能往单一反向变化
    • ReLU 计算复杂度低
    • ReLU 的负半轴为输出值增加稀疏性,减少计算量,但同时会让一些神经元不能更新
    • SoftPlus,ReLU 的平滑

全连接层 Linear

嵌入层 Embedding

卷积层 Convolution

  • 特征

    • 局部感知、权值共享、平移不变、多核
  • 1×1 卷积

    • 特征增强
    • 特征融合
    • 改变通道数
    • 分类
  • 空洞卷积

  • 分组卷积

转置卷积层 Transpose Convolution

优化模块

残差结构 Residual Connection

将输入与层输出相加

  • 优势

    • 缓解梯度消失,增加网络深度
    • 保留信息,特征重用

空间金字塔池化(Spatial Pyramid Pooling,SPP)

空洞空间金字塔池化(Atrous Spatial Pyramid Pooling,ASPP)

HDC

可变形卷积 Deformable Convolution

可分离卷积 Separable Convolution

Transformer

  • 模块结构

    • 多头自注意力机制(Multi-Head Self-Attention Mechanism)
    • 前馈神经网络(Feed-Forward Neural Network)
    • 层归一化(Layer Normalization)
    • 残差连接(Residual Connections)
  • Self-Attention

  • 除以的原因

    • 矩阵计算导致的元素值整体偏大,从而引发梯度消失
    • 计算后的数据平方差为,除以,将分布的方差纠正回接近 1
  • 并行化的体现

    • 序列计算多头注意力
  • 影响计算量的因素

    • 序列长度:点积、矩阵乘
    • 头数量
  • 优势

    • 并行处理整个序列
    • 长距离依赖
  • 缺点

    • 计算量大
    • 超参调优
    • 超长序列处理能力

Cross-Attention

Convolutional Attention

  • SENet -CBAM

基础模型

前馈神经网络

卷积神经网络(CNN)

循环神经网络(RNN)

长短时记忆网络(LSTM)

Inception

模型调优

模型优化

正则化

  • L1 正则化
  • L2 正则化

损失函数

已知 softmax 输出概率序列与实际分布概率序列,计算两者交叉熵

超参数调整

在深度学习中,超参数(Hyperparameters)是指在训练开始前设置的模型参数,不是通过训练学习得到的。超参数的选择对模型性能有很大的影响,不同的超参数设置可能导致显著不同的训练结果。

优化器选择

  • SGD
  • AdaGrad
  • RMSProp
  • Adam

学习率衰减

LR 中的连续值特征是如何处理的 为什么 LR 要先对数据进行归一化处理 LR 用了 sigmoid 函数,那么 LR 是线性模型还是非线性模型,为什么

  • 线性
  • 分段
  • 余弦
  • WarmUp
  • 周期性

缩放法则 Scaling-Law

在 AI 领域中,描述模型性能如何随着模型规模(如参数数量、训练数据量、计算资源等)变化而变化的一组经验法则

  • 应用

    1. 设计更大规模的模型

      指导研究人员如何设计和训练更大规模的模型,以实现更高的性能

    2. 优化资源分配

      如确定是否应增加模型参数数量、增加训练数据量,还是增加计算资源,以实现最优的性能提升

    3. 预测性能

      根据现有模型的性能和缩放法则,可以预测更大规模模型的性能

常见模型评估指标

准确率

召回率

F1 分数

浮点数运算次数 FLOPs

帧每秒 FPS

深度学习框架

训练范式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 加载数据
dataloader = DataLoader()

# 加载模型
model = MyModel()

# 损失函数
criterion = nn.CrossEntropyLoss()

# 优化器
optimizer = optim.Adam(model.parameters(), lr=0.001)
# 学习率衰减策略

# 训练num_epochs
for epoch in range(num_epochs):
# 遍历完整数据集
for inputs, labels in dataloader:
# 梯度置零
optimizer.zero_grad()
# 模型推理
outputs = model(inputs)
# 计算损失
loss = criterion(outputs, labels)
# 累加梯度
loss.backward()
# 梯度更新
optimizer.step()

评估范式

1
2
3
4
5
6
7
# 设置模型评估模式
model.eval()
# 取消梯度更新
with torch.no_grad():
for inputs, labels in test_dataloader:
outputs = model(inputs)
# 计算准确率或其他指标

PyTorch

Tensor

  • 存储

    • 头信息区(Tensor):tensor 的形状(size)、步长(stride)、数据类型(type)等
    • 存储区(Storage):数据
  • stride 属性

    指定维度中一个元素到下一个元素的步长

  • 维度变换

    类型 方法 描述
    维度顺序 permute 指定维度重排,返回共享存储区的 tensor
    transpose 交换维度,返回共享存储区的 tensor
    形状变换 view 返回共享存储区 tensor,要求存储连续,否则调用 contiguous
    contiguous 开辟新的存储区构建连续 tensor
    reshape 若连续则返回原 tensor,否则创建新 tensor
    广播 broadcast_to
    冗余维度 squeeze 压缩维度
    unsqueeze 展开维度
    扩展维度 expand 扩展大小为 1 的维度
    repeat 按照指定维度重复 tensor
    展平维度 flatten
    ravel
    维度剪裁 narrow
    维度展开 unfold
  • 张量乘法

    方法 应用
    torch.matmul() 多维矩阵相乘
    torch.mm() 2 维矩阵相乘
    torch.bmm() 批矩阵相乘
    torch.dot() 点积
    torch.mv() 矩阵向量相乘
    torch.einsum() 复杂张量运算 torch.einsum('ij,jk->ik', a, b)
  • 张量合并与拆分

    • stack 扩展维度拼接
    • cat 根据维度拼接
    • split 按大小分
    • chunk 按块分

nn.Module

模块基类

nn.Sequential

线性模块容器

  • 计算图
  • 环境搭建
  • 数据加载
  • 模型定义
  • 训练
  • 验证
  • 保存
  • 加载模型

PytorchLightning

逻辑思维与项目经验

逻辑思维

准备通过解决实际问题来展示你的逻辑思维能力和数据分析洞察力,可以是以往项目中的案例分析。

团队合作与挑战接受度

思考并准备实例说明你如何在团队中有效沟通、协作解决问题,以及面对技术挑战时的态度和解决策略。

p