job
APP下载 公众号
返回列表
邀请码:[[treenode.join_code]]

分享或加入:点击“加入思维导图”并输入对应的邀请码

编辑文字:双击

新建子级:制表符tab

新建平级:enter回车

删除:Ctrl/Command + 回退

快捷键
文本展示 高效垂直 结构可变(只读) 拖拽显示(只读)
描述:[[treenode.tree_desc]]
[[ node.label.slice(0,48) ]]...
[[ node.label ]]

返回顶部

反馈

隐藏

确认删除该内容 取 消 确 定 需求反馈 不良举报 故障反馈 改进建议 称赞表扬 私有的 公开的 公开并发布(推荐)
描述:

[[treenode.tree_desc]]

job

科研

主题:野外复杂环境下低像素人脸识别技术研究

问题和解决思路

崩溃问题

过拟合
增大感受野
Transformer(DeiT)
SLaK

动态稀疏

三个小卷积核代替大卷积核(重参数化)

https://zhuanlan.zhihu.com/p/361090497

测试阶段等价不代表训练阶段等价

多样化的连接和训练时的非线性

增加了测试时可合并的参数

黑盒

轻量化部署

增大的感受野带来增大的复杂度
LeViT+MobileViT=LLRFaceFormer

LeViT(轻量化Transformer+CNN也有它的好)

MobileViT

Transformers as convolutions

网络性能提升

在线-离线结合知识蒸馏

身份感知的低像素人脸生成器

GDC

GDC-FPN

效果

高像素(LFW)

降采样LFW(C)

人造类真实环境低像素 xqlfw、lfw(G)

真实环境低像素TinyFace、SCFace

FPS

YOLOv5部署

主题:基于边缘设备的的边境人车检测算法和及闯入检测算法。

技术

PyTorch--ONNX--TensorRT

目标:加速
torch-onnx遵循规则
size值转int
nn.Upsample和nn.functional.interpolate函数指定scale_factor
-1放在bs维度
避免inplace操作
onnx_graphsergeon
解码过程

255*80*80(40*40/20*20)转换为3*85*x*x

tx,ty,tw,th-->bx,by,bw,bh

bx = 2Sigmoid(tx)-0.5+cx

by = 2Sigmoid(ty)-0.5+cy

bw = pw(2Sigmoid(tw))**2

bh = ph(2Sigmoid(th))**2

torch中删除解码部分
onnx_graphsergeon添加算子

加载onnx模型

定义新算子的输出

定义一个字典包括算子的属性

stride

类别数

anchors

预nms

定义插件,将输入输出属性加进去

添加到网络中

onnx-trt步骤
构建:Flags -->builder --> builder_config-->network(onnxparser)-->seralized
运行:deseralized--engine--context-buffer--excute--output
int8:PTQ(used);QAT

calibrator

entropy&minmax

get_batch_size

get_batch

write_calibration_cache

read_calibration_cache

YOLO_decode_plugin

目标:加速
IPluginV2DynamicExt
getOutputDimensions
getOutputDataType
supportsFormatCombination
configurePlugin
enqueue
核函数

1.定位到tx,ty,tw,th和线程的关系

2.通过阈值的用原子操作获得count

3.tx,ty,tw,th转化为bx,by,bh,bw

注意tx ty是中心点,归一化了要再乘以stride=图片宽度/格子宽度

循环类别找到最大概率为类别

4.通过count存储x1,x2,y1,y2,scores,classes

IPluginCreator
构造函数
createPlugin
deserializePlugin
REGISTER_TENSORRT_PLUGIN(对象)
plugin和trt交互
loadlibrary

CUDA_C\C++ 前处理

目标:加速
内容
letterbox、归一化、BGR2RGB、NHWC to NCHW

C++多线程流水线处理

目标:加速
实现
一个队列
互斥锁定义和使用
未满/未空条件变量
条件变量.wait锁并判断条件

生产者条件为队列未满

消费者为队列未空

生产/消费
利用条件变量唤醒另一个
判断条件退出循环
主函数定义threa,thread.join()

在线自学习算法

目标:增加precision精确率
实现
MobilViT

目标闯入算法

任意一个方向射线,偶数交点为外奇数为内

推流

定义一个stream,传入摄像头
运行steam-server
处理后stream推流

Kaggle大数据

主题:知识追踪:基于游戏中学生行为表现预测答题表现。

数据处理

官网下载原始数据,数据格式不一致,利用pandas库矫正

数据清洗

raw中数据要先除去官方数据的session
level!=None
自己找question_id,调整格式
自己分离标签
要数据齐全,满足三个阶段问题数量为3,10,5
drop event
特殊字符的处理。为了json.load字典

官方数据:42.4w添加数据63791w,F1增加0.002

特征工程

拼接["level", "name", "event_name", "room_fqid", "fqid", "text"],数量大于thres的特征中,将count,bdiff,fdiff选为特征

"event_name == 'notification_click'"时,["text_prev", "text"] --> 选择time_between_{text1}_and_{text2}

["last_time", "diff_level_group_0to1", "diff_level_group_1to2"],因为对每个stage分别建模,所以s0-s1和s1-s2的特征分别保存

建模

基于较高学习率对所有特征进行建模,根据信息熵增益选择出前500~800重要的特征,随后基于稍低学习率对筛选后特征进行建模。

利用3个LightGBM模型分别对三个阶段建模

segment

主题:基于少量训练样本的遥感图像耕地语义分割

问题和解决办法

样本过少8张

数据增强:多尺度、多角度
标签一起旋转
预测结果毛躁、联通部分效果不好
1.训练数据类别不平衡,focal loss
2.Attention R2U-Net

Unet

U型结构,左边压缩路径压缩尺寸增加通道数右边对称扩展路径

每个stage压缩路径信息补充到扩展路径,利用pad改变尺寸后cat

R2UNET

recurrent 循环

提取更好的特征

参数量不变获取更大感受野

residual 残差

Attention UNET

加性attention

分别conv1后相加,relu,conv1调整到1通道,sigmoid,乘以左边的

3.集成学习和测试增强

每个尺度下学习

旋转后融合;滑步融合

边界预测不好
Overlap-tile训练尺寸为512+感受野镜像pad为边界提供上下文信息

效果:准确率92%,mathorcup大数据数学建模国家一等奖

面经

Pandas

Python

CUDA_C\C++

GBDT

Transformers

DeiT

SWIN Transformer

LeViT

MobileViT

复杂度计算

常用目标检测系列

nms

YOLO系列

感受野

常用目标分类系列

常用人脸识别网络

低像素人脸识别网络

多线程和多进程

多线程

python中有global interpreter lock
同一时间只有一个线程在运行,只是在不停的切换中
读写的时间会节约
python多线程意义:不显示切换任务情况下让cpu处理若干任务

I/O瓶颈任务

爬虫

c++实现

定义lock,定义队列,定义条件变量

生产者和消费者的函数中按照条件组设线程,通过条件变量激活另一个线程

分别.join加入主线程

c++实现

定义lock,定义队列,定义条件变量
生产者和消费者的函数中按照条件阻塞线程或者激活另者
分别.join加入主线程

多进程