Skip to content

A brief collections of (minimal) required knowledge for algorithm engineers. Including computer vision, deep learning, machine learning and other basic algorithms

Notifications You must be signed in to change notification settings

jzsherlock4869/algorithm-engineer-prepares

Repository files navigation

Algorithm Engineer Prepares

算法工程师的自我修养

【算法岗相关的常用知识梳理,包括理论、代码、经典模型与新技术】(持续更新ing)

👏🏻👏🏻👏🏻👏🏻👏🏻👏🏻👏🏻👏🏻👏🏻👏🏻👏🏻👏🏻👏🏻👏🏻👏🏻👏🏻👏🏻👏🏻

算法工程师的修炼之路(书单):点击进入

🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉


基础概念

图像分类经典模型(LeNet、AlexNet、VGG、ResNet、GoogLeNet)

语义分割任务经典模型(FCN、Unet、RefineNet、PSPnet、SegNet)

目标检测任务基础模型(两阶段、一阶段,包括R-CNN系列、YOLO系列、SSD)

实例分割基本概念与经典模型:FCIS、YOLCAT、PolarMask、SOLO

计算机视觉任务中常用的loss函数汇总

CNN的轻量化方法基本概念(剪枝、蒸馏、量化、小网络)

模型蒸馏(distillation)的基本原理

YOLO各版本迭代过程与实现细节

DeepLab v3 实现细节

非极大值抑制方法(NMS)及其实现

数据增广与测试时增强(TTA)

RoIAlign算子具体代码实现(以facebook的maskrcnn-benchmark为例)

DeepLab中的CRF的实现

Anchor Free 目标检测方法:CornerNet、CenterNet、FCOS

模型量化策略:PTQ、QAT、LSQ

低层视觉技术(low-level task)

图像与视频去噪经典算法与原理

图像与视频超分辨率:任务与方法

双目超分辨率(Stereo SR)相关模型

无监督超分辨率方法

去雾算法(Dehaze):暗通道先验原理

光流(Optical Flow)计算与应用:传统方法与光流网络

分割与检测

DeepLab系列模型内容梳理

并行的多尺度融合策略:HRNet

多次稠密上采样后融合的unet加强版:Unet++

OCRNet(Object Contextural Representation):基于transformer attention机制的上下文关联策略

Dilated Residual Net(DRN):空洞卷积改进resnet

MS COCO 数据集的实例分割/目标检测的annotation基本格式

anchor-free目标检测模型之:FCOS(多尺度、相对位置、centerness)

COCO数据集的官方api的基本用法(get类别/图像/标注Id、load图像/标注信息)

生成模型(GAN、Diffusion Model etc.)

生成对抗网络GAN基本原理与问题

Wasserstein GAN:log微操防止JS散度的梯度消失和logD trick的模式坍塌

CycleGAN:循环一致性约束的无监督domain transfer方案

StyleGAN 和 StarGAN

Diffusion Model:扩散模型原理

Stable Diffusion Model

Diffusion的应用:去噪、超分、图像生成

神经网络鲁棒性与攻击

神经网络的鲁棒性(clever Hans效应)

轻量化模型

Mobilenet系列模型梳理

Shufflenet v1&v2:分组卷积加通道shuffle信息交互

Squeezenet:压缩通道学特征与膨胀

Ghostnet:ghost特征加简单变换生成丰富feature map

Efficientnet:通道数、深度、分辨率的复合NAS搜索优化

轻量化超分网络:IMDN、ECBNet、RFDN

小样本学习

小样本基本概念

小样本分割经典模型梳理

  • OSLSM 2017 (Pascal 5i做交叉验证,weight hashing,sup和que最终特征logistic回归)
  • SG-One 2018 (mask pooling + cosine sim)
  • Prototype Alignment Network (PANet) 2019 (alignment,一种类cycle loss)
  • FSS-1000(relation net) 2019 (主要是数据集FSS-1000,适用于小样本分割的数据集)
  • CANet: Class-Agnostic Segmentation 2019(对结果进行 refinement)
  • BMVC 2018 2018(网络设计较复杂)
  • Prototype Mixture Models(PMM) 2020 (将prototype拆成多个)
  • Prior Guided Feature Enrichment Network(PFENet) 2020(先生成无须训练的prior,后接多特征融合)
  • FSIL(Few shot Seg Image Level) 2020 (利用image-level的弱监督信息做few shot seg)

弱监督学习

Image-level label 语义分割基本思路

小目标检测

小目标检测常见处理思路

多尺度特征学习思路相关模型

context-based 相关模型

训练策略、loss函数、data augment思路相关方法汇总

骨干网络(backbone)发展

Resnet变体

SENet:squeeze and excitation

DenseNet

Inceptions

51x51 SLaK(Sparse Large Kernel)More ConvNets in the 2020s: Scaling up Kernels Beyond 51x51 using Sparsity

重参数化策略

RepVGG:make VGG great again!

ECB(Edge-oriented Conv Block):Sobel与Laplacian强化边缘的重参数化策略

ACNet(Asymmetric Conv):1x3、3x1、3x3的非对称重参数化

DBB(Diverse Branch Block):不同排列组合的多分支block

SLaK中的重参数化:极端大核如何训练?


基础概念

数据处理和评估中的常用度量指标(AUC/KS/Gain/Lift)

特征分箱原则与策略(等频分箱、等距分箱、卡方分箱、bestKS分箱)

特征分析之单变量分析(WOE/IV/PSI)


损失函数

最常用的损失函数(BCE、交叉熵、MSE、MAE)

PyTorch中定义的其他几种损失函数(NLL、Multi-label、Huber、Triplet Loss等)

分割和检测任务中的损失函数(IoU loss、Dice loss、Lovasz loss)

下降方法与学习率策略

梯度下降法及其变体(Momentum、Nesterov、RMSprop、Adagrad、Adam、AdamW等)

牛顿法和拟牛顿法:二阶优化的策略

Gradient Clipping:梯度裁剪,防止梯度爆炸的手段

L1 norm下的优化;ISTA&FISTA;学习率策略;ADMM;

EMA(Exponential Moving Average)

激活函数

常见激活函数(sigmoid/ReLU/Maxout 等)

RELU6:适应低精度计算的有界激活函数

GELU:依据高斯分布cdf计算设计的激活函数

Swish:光滑非单调下有界的self-gating函数

卷积层设计

分组卷积

deformable(可变)卷积

初始化方法

常用初始化方法(随机初始化、xavier初始化、kaiming初始化)


必备基础

SVM、逻辑回归、决策树的关键内容整理

kNN与k-d树:简单算法的工程优化

集成学习方法(bagging、boosting、stacking)、梯度提升原理

进阶模型与算法

隐马尔科夫模型(HMM)

蒙特卡洛方法

MCMC:马尔科夫链蒙特卡洛算法

Viterbi算法

无权重二部图最大匹配的匈牙利算法(Hungarian Algorithm)、赋权图Kuhn-Munkres算法

宽表数据建模常用集成模型:XGBoost、GBDT、LightGBM,原理与区别


基础概念

注意力机制的原理、应用与局限

视觉Transformer与MLP(非CNN结构)

ViT模型基本原理:image=16x16 words

DETR:基于transformer的端到端目标检测(bbox集合预测、二分匹配)

Swin Transformer

SETR

DeiT

CaiT

Segmenter

SegFormer

MLP-Mixer(非transformer)


必备基础

文本数据预处理:分词、去停用词、tfidf编码

主题模型(topic model)

基本NLP模型

最基础的词嵌入模型Word2vec(skip-gram & cbow)

GloVe词嵌入:基于共现矩阵学习词间关系差别的嵌入方法

ELMo:基于语言模型的bi-LSTM的基于上下文动态嵌入的模型,处理一词多义(芝麻街命名模型第一弹)

FastText:Facebook开源的文本分类和词嵌入工具包

GPT系列:Generative Pre-Training,单向Transformer,非监督预训练+下游任务微调

BERT:谷歌开放的基于bidirectional Transformer的最强语言模型,BERT yyds !

NLP模型实现的相关tricks

Negative Sampling:词嵌入训练中的负采样操作

Hierachical Softmax:基于Huffman编码的高输出维度(词典大小)的优化方法


0x006 信息论

信息论基本概念与定义:信息量、信息熵、条件熵、相对熵

香农三大定理:变长无失真信源编码、有噪信道、有损信源编码


0x007 矩阵论

矩阵与线性代数基础概念与定义

图像处理与图形学中的矩阵变换

基变换与坐标变换

矩阵的对角化


贝叶斯定理与应用

最大似然估计与最大后验估计

古典概型例题汇总


并行化策略(DataParalle和DistributedDataParallel)与多机多卡训练

PyTorch中的Dataset处理逻辑

PyTorch模型量化与onnx转换处理流程


数据结构:单调栈(MonoStack)基本原理

Huffman树与Huffman编码:最优权重路径的无损压缩编码算法

跳表(skiplist):基于多级别索引的查找复杂度log(n)的链表

并查集(union-find):近乎常数操作复杂度的不相交集合查询

Trie(字典树/前缀树)字符串前缀匹配查询

自平衡的二叉查找树:AVL树(平衡因子,左旋、右旋)

位图算法与布隆过滤器(Bloom Filter)


强化学习的基本概念

Q-learning模型与SARSA模型

深度强化学习概述


经典推荐算法:协同过滤(Collaborative Filtering,CF)

Matrix Factorization:从用户-物品矩阵中分解出用户和物品的特征隐向量

LR模型及其改进版MLR(piece-wise LR):一阶特征建模的CTR预估

POLY2:二阶特征交叉

FM(因子分解机)和FFM(Field-aware FM):隐向量内积实现特征交叉权重


图嵌入方法DeepWalk:利用random walk将图嵌入转为词嵌入

LINE:基于一阶相似度和二阶(邻域)相似度的图嵌入方法

node2vec:通过参数整合BFS和DFS的游走采样

PyTorchBigGraph:一种分块的处理大图的方法和框架,Facebook出品


频域分析、傅里叶变换与FFT

连续信号、离散信号,采样与奈奎斯特定理


光、颜色与颜色空间

ISP基本处理流程

图像变换:平移、旋转、缩放;仿射变换与投影变换

计算机图形学基本概念


>> Git相关

Git基本原理

Git常用操作指令

>> 大数据处理 (hadoop、SQL、Hive、Spark)

hadoop基本原理简介

SQL基本操作

Hive表基本格式与原理

Spark基本原理简介

>> Docker相关

Docker基本原理

Docker常用指令

>> 编程语言相关

==== Python相关

Python的反射机制及其使用方法

Python中的深拷贝和浅拷贝

Python中的类(class)的原理与特点

Python中常用的魔法方法

Python的垃圾回收机制(Garbage Collection)

Python的with语句执行原理

Python中的函数wrapper和装饰器(decorator)

Python的线程、进程,与协程(Corountine)的基本概念

==== C/C++ 相关

C/C++基本常识、编译链接过程

C++中的常用修饰符:static、const 等

C++中的指针和引用;值传递、指针传递和引用传递

CMake的使用方法

==== Java相关

Java虚拟机基本原理

Java常用语法结构

About

A brief collections of (minimal) required knowledge for algorithm engineers. Including computer vision, deep learning, machine learning and other basic algorithms

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published