- 博客(198)
- 收藏
- 关注
原创 【无标题】
与bert对比,从模型预测任务的难易程度讲,gpt预测开放式的未来数据难度更大,技术路线更难,天花板更高。一两个月后bert基于gpt1(12层768宽的decoder-only),将gpt1的transformer解码器替换为编码器,基于更大的无标注数据做预训练,效果好于gpt1。gpt3 -> instruct gpt -> gpt3.5 -> chat gpt ,chat gpt在gpt3.5微调而来,gpt3.5是在gpt3的基础上通过instruct gpt的方法训练而来。那gpt2如何回应?
2025-01-23 20:00:00
938
原创 从几条简单的线段生成路网
输入:随手画几条线,格式为[LineString(1...),LineString(2...).....]输出:link、node 两个(geo)dataframe。
2024-12-26 19:59:05
258
原创 图像自监督学习——mae
③decoder时按照原始图像排列,把masked掉的path加回去(只有位置编码信息),没有被masked掉的path去encoder对应的编码特征即可。图像像素冗余信息较多,假如掩码掉的比例非常少,可以通过图像插值等操作拟合出来,对于模型而言生成的意义就少了。6.迁移任务中,编码器怎么用?重点在于随机mask的预处理是否保留,答案是不保留,将预训练模型参数加载到标准的vit中进行应用。2.关于bert是纯编码器的理解,李沐表示任何模型都有编码器和解码器,只不过bert的解码器就是最后的全连接层。
2024-11-23 16:30:00
459
原创 对比学习——moco
这样会遇到新的问题,即如何保证队列内多个batch之间的模型参数相近,本文就提出了动量对比学习的方式,每个batch更新模型参数时不仅依赖当前输入,还要依赖上一个batch的模型参数,使其缓慢平稳的进行参数更新,其中动量使用0.999效果最好。7.下游任务:linear classification protocol,在分类任务上应用,把网络当成特征提取器,冻住moco的编码器(resnet),加一个mlp分类头,用30的学习率(超级大)进行微调。info NCE loss见simCLR解析。
2024-11-23 16:30:00
354
原创 对比学习——入门SimCLR
3.训练时一对正样本计算loss流程:采样一个样本x,进行两种不同方式的图像增强得到xi和xj(应用三种增强:随机裁剪然后调整回原始大小(random cropping and resize back)、随机颜色失真、随机高斯模糊),然后通过编码器f(resnet)得到高纬度的表示特征(下游任务的迁移时用该层特征),然后经过projection(mlp)层g映射到低纬空间zi和zj,计算两个向量的余弦相似度使其最大。1)对比学习中数据增强很重要,需要拿不同的数据增强作为正负样本对,相比监督学习要做的更重。
2024-11-23 16:00:00
421
原创 生成模型——vqgan
AE结构,引入codebook(embeddiing初始化可学习的)将图像编码特征离散化(encoder特征就近邻查询到码本特征,然后对应位置替换成码本特征),然后送入解码器生产图像。基于vqgan的图像生成:VQGAN+gpt/transformer将图像编码转成长序列token,gpt式训练transformer学习离散特征组合生成图像。基于vqgan-clip的文生图:利用clip训练codebook,在生成时输入文本,寻找离其最近的encoder查表组合送到decoder中生成图像。
2024-11-23 15:45:00
287
原创 多模态——vilt
为什么一些方法在图像模态特征提取时引入目标检测:①图像特征编码本质是离散化图像的过程,一般目标检测出的每个object的bbox对应到离散化的物体,将每个bbox内容提取固定的向量,在某种程度上多个object的特征向量可以代表整张图的离散特征。Whole Word Masking,一般一个word单词会被tokenize成多个词根等token,但在某种情况下若干词根组成的单词确定性较强,随机掩码token意义不大,因此论文用0.15的概率随机掩码token和word两个维度,以此来做文本的数据增强。
2024-11-23 15:30:00
946
原创 多模态——clip
(①解决单个单词多个意思的歧义,②训练时都是句子,避免出现分布差异out-of-distribution。多模态融合前TE和IE都连一个project层,一是将不同模态的特征维度整合成相同维度(clip是线性层,但大部分是非线形层),二是做特征归一化方便后续计算余弦相似度。few-shot指冻住大量的参数,从中抽取部分层(一般指单纯训练分类头)在待迁移的数据集做微调(linear probe);基于nlp里gpt的通用能力,通过对比学习,将zero-shot能力关联到图像。开源api,可以直接调用。
2024-11-23 15:00:00
329
原创 目标检测综述
anchor可以认为是提前预设好的检测框,anchor的提出一方面通过ratio和scale的先验组合表示目标数量N,另一方面通过anchor的中心(配合IOU)map到ground truth(GT)。当待检测的目标多样性较强,缺少先验信息时,anchor-free的适用性就突出起来。(最早的anchor是2-stage的faster rcnn提出)在1-stage模型中无RP参考,但模型的设计需要固定tensor的size,及需要设定超参数最大目标数量N,以及解决好map的问题使得模型稳定优化。
2024-11-23 14:30:00
589
原创 生成模型初探
G与D都会看到输入x,在G中,x作为输入来通过编码-解码结构获得G(x,z)(参考传统GAN模型,我们需要引进服从标准正态分布的随机向量z来增添其随机性),而在D中,x作为指导条件(conditions)来辅助鉴别器进行判断。但codebook的引入导致反向传播中断(近邻采样无法反向传播),论文引入一个直通器,在前向传播时正常计算loss,反向传播时直接用编码特征替换码本离散后的特征,这样可以正常优化编码器和解码器。AE:将图像编码(压缩成向量)再还原,其从压缩的向量还原至图像这一步可以视为图像生成过程。
2024-11-23 14:00:00
575
原创 实例分割——mask rcnn
1.mask rcnn 实例分割 = “faster rcnn” + “mask 分割”,即在faster rcnn基础上,对每个bbox/ROI单独做mask分割得到一个实例,再结合faster rcnn的分类可以组成语义分割或者是实例分割。6.训练时,faster rcnn的二阶段和mask分支是并行,RPN通过两个ROI Align分别送到faster rcnn 和 mask分支,此时mask分支的输入是一阶段质量不太好的正样本,在一定程度上算为数据增强。2.FPN 特征金字塔。
2024-11-23 12:15:00
475
原创 AI换脸—SimSwap
对于任务②,首先需要一个AE结构来重建人脸,然后将①中源图像的id信息融入编码特征(下图中IIM模块),解码出的图像再送入arcface提出身份信息,通过余弦损失来约束生成的目标图像的身份信息与源图像一致。对于任务③,保留目标图像原本的背景和表情。设置判别器,对于待替换的目标图像认为是真样本,生成的替换图像以及源图像都认为是假样本。目标:输入两张图像,将源图像的人脸信息替换到目标图像,同时保留目标图像的背景及表情。(任务②结构图,其中adaIN模块是styleGAN里的,将特征标准化后重新缩放)
2024-11-23 12:00:00
240
原创 大模型微调系列之:大模型低秩适配器LoRA
3)但微调模型时derta_W未知,无法直接用svd分解,所以我们直接拿模型来预测A、B两个低秩矩阵。(同时给出一个验证lora思路,拿微调训练得到的derta_W做svd分解验证低秩思想正确性)(A、B矩阵初始化时一个为全0矩阵,另一个为高斯分布,利于模型微调过程中各参数的稳定性)维度方面,derta_W=n*n,B=n*d,A=d*n,d<<n。4)关于超参数a和r,r代表A、B低秩矩阵的秩,最开始时a=r,然后逐渐降低r,使得所需微调的参数降低,同时a/r的比值(可视为学习率)增大。
2024-11-23 11:45:00
272
原创 大模型低秩适配器LoRA改进版AdaLoRA(Adaptive Low-Rank Adaptation)
1)lora对每层网络的attention都做了相同r秩的压缩,但现实是不同层、不同模块其秩都不同,论文距离attention中Wq和Wv的秩就不同。我们期望Adaptive自适应调整r。2)lora用BA两个矩阵相乘模拟svd分解,缺乏svd分解的三个矩阵的性质,如首尾正交、中间对角矩阵。因此AdaLoRA用三个学习的矩阵相乘表示,通过自适应调整中间对角矩阵的秩来控制参数量。
2024-11-23 11:45:00
348
原创 LLM-微调入门
举例,语言大模型chatgpt是在通用大模型GPT3(Generative Pre-trained Transformer)基础上微调而来。lora的另一个好处是可以定制化微调训练:对于不同任务可以添加不同的lora块,再推理时选择性的add进base model,有关lora介绍见二。②输入:通用大模型对输入数据有着一定的限制,通常以提示词出现,对输入长度有上限;A0 大模型微调一种是想办法更新全量参数,另一种像传统模型微调一样进更新头部/other参数。③模型:通用大模型模型参数庞大;
2024-11-23 11:30:00
601
原创 人脸识别-arcface
在分类任务中,输出层激活函数都是softmax,所有基于softmax loss改进的损失都有相同的想法:最大化类间方差和最小化类内方差。概述:arcface = resnet+改进的softmax。
2024-11-23 10:30:00
159
原创 大规模优化问题,Scipy?Ceres?PyTorch!
优化问题一般通过scipy.optimize或者Ceres Solver优化器求解。但在参数量较大的优化问题上,scipy提供的BFGS、L-BFGS-B、CG、SLSQP等梯度优化算法其复杂度和存储需求指数级上升,无法满足计算效率;而Ceres需要额外的语言来支持,当前算法工程师一般以python为主,学习成本较大。且项目环境需要多语言混编,配置与部署难度较大。本文使用PyTorch/TensorFlow等机器学习框架,通过自动求导高效计算梯度,避免手动计算梯度复杂性,利用CPU/CPU来加速求解优化
2024-07-17 11:33:37
363
1
原创 python列表self append无限嵌套的原理
示例一:self append 形成无限嵌套原理:变量a指向一个列表,列表的第一个元素为0;执行了append操作后,第二个元素又反过来指向a,即指向了a所指向的列表,因此形成了一个无限嵌套的循环:[0, [0, [0, [0, …]]]]。如下图所示:虽然a是无限嵌套的列表,但a.append(a)的操作,并不会递归遍历其中的每一个元素。它只是扩充了原列表的第二个元素,并将其指向a,因此不会出现stack overflow的问题,自然不会报错。但是判断两个自嵌套列表是否相等时,需要遍历
2021-12-09 20:43:02
2449
原创 Python中的浅拷贝(shallow copy)和深度拷贝(deep copy)区别
先上结论:①浅拷贝,是指重新分配一块内存,创建一个新的对象。里面的元素是原对象中子对象的引用。因此,如果原对象中的元素不可变,那倒无所谓;但如果元素可变,浅拷贝通常会带来一些"联动"。②深度拷贝,是指重新分配一块内存,创建一个新的对象,并且将原对象中的元素,以递归的方式,通过创建新的子对象拷贝到新对象中。因此,新对象和原对象没有任何关联。一句话结论:浅拷贝是对原对象中子对象的引用,而深拷贝对位子对象间无任何关联。例子:浅拷贝l1 = [[1, 2], (30, 40)]l2 =
2021-12-08 17:09:26
386
原创 轨迹平滑python
sg滤波:# =============================================================================# Savitzky-Golay滤波拟合法# =============================================================================def optimizePoints(inPoint): """ 5点1阶段轨迹平滑算法 i
2021-08-18 15:47:35
1234
原创 图像矢量化
python将图像目标区域转换为LineString、Polygon数据格式。import osimport numpy as npimport cv2from PIL import Imageimport matplotlib.pyplot as pltfrom tqdm import tqdmimport sknwfrom skimage.morphology import skeletonize, medial_axisimport pandas as pdimport geo
2021-08-06 16:46:03
954
原创 LineString、Polygon矢量坐标读取
python 中 shapely.geometry库常用linestring、polygon、point等矢量数据结构,在多坐标系转换过程中需要提取每个数据结构单点坐标,提取方式如下:def get_linestring_coords(linestring): return linestring.coords[:]def get_polygon_coords(polygon): return shapely.wkt.loads(polygon.wkt.replace("POLYGO
2021-08-06 16:34:14
3619
原创 按颜色提取图像区域
import cv2import numpy as npdef split_color(path): img = cv2.imread(path) hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) # range of red lower_red = np.array([160, 60, 60]) upper_red = np.array([180, 255, 255]) lower_red2 = np.array.
2021-08-06 16:25:30
363
原创 centos 环境安装 open3d-python
(需要获取centos服务器的root权限)一、conda新建虚拟环境 1.conda create -n py37 python=3.7二、安装步骤 1.进入虚拟环境:source activate py37 2.安装open3d-python库:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple open3d-python 3.安装libgl.so依赖:yum whatprovideslibGL...
2021-05-18 11:45:27
1333
原创 ubuntu安装python-pcl点云库、open3d库
pcl点云库在C++中经常使用,而在python python-pcl集成了pcl库中的一部分功能,本文给出python-pcl库在Ubuntu16.04中的安装教程0.系统准备申请Ubuntu系统开发机,anaconda配置教程如前述文章 https://blog.youkuaiyun.com/qq_38742161/article/details/110921649 1.pcl安装sudo apt-get install libpcl-dev pcl-tools2.python-pcl安..
2021-01-07 16:51:06
766
2
原创 python 常用的世界坐标系互相转化
from coord_convert.transform import wgs2gcj, wgs2bd, gcj2wgs, gcj2bd, bd2wgs, bd2gcj"""1.coord-convert库,pip install coord-convert2.wgs2gcj : convert WGS-84 to GCJ-02wgs2bd : convert WGS-84 to DB-09gcj2wgs : convert GCJ-02 to WGS-84gcj2bd : conv.
2020-12-09 21:27:02
1807
原创 python list转geojson
本篇介绍如何将列表转化正geojson,在qgis上进行可视化。代码:import pandas as pdfrom shapely.wkt import dumps, loadsimport geopandas as gpdfrom shapely.geometry import LineString# geoDataFrame对象写入geojson文件def geoDataframe2geojson(data, geojson_path): data.to_file..
2020-12-09 21:22:45
945
原创 linux开发环境配置之:安装anaconda并配置jupyter
在公司新申请一台服务器,需要配置python开发的一系列环境。下面展示anaconda的安装和jupyter的配置过程。一、熟悉资源查看物理内存#shellcd /df -h熟悉资源后,我们挑选一块磁盘data2,将安装anaconda安装在其中(避免安装在home下,导致服务器资源占满后崩溃)。shell中输入pwd,保存安装路径备后续使用。二、安装anaconda1.在安装路径下下载anaconda.sh文件: Anaconda3镜像:https:/...
2020-12-09 14:46:03
872
原创 经纬度与墨卡托坐标转化
处理经纬度数据时,经常需要计算欧式空间下的若干特征,比如长度、距离、角度等。本文介绍经纬度与墨卡托坐标系下的两两转换。import math#经纬度转墨卡托坐标def ls(lng,lat): # list=ll_wl.split(',') lat=float(lat) lng=float(lng) x = lng* 20037508.34 / 180 y = math.log(math.tan((90 + lat) * math.pi / 360)).
2020-12-06 17:20:44
5359
1
原创 mac pycharm2019.3版本Matplotlib弹窗显示
pycharm从2017.3版之后,Matplotlib默认内嵌显示,相比弹窗显示的风格,内嵌显示有诸多功能缺失,比如在画布中随鼠标移动显示像素位置,以及三维图像的旋转等操作。本教程展示如何更改plot的默认内嵌至弹窗显示。一、pycharm版本确认:2019.03,其它版本的设置请随个人版本相应更改即可。二、设置步骤PyCharm | Preferences | Tools | Python Scientific |界面下:Show plots in tool window 选.
2020-11-23 14:28:40
660
原创 leetcode 2. 两数相加
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807# Definition for singly-..
2020-11-20 20:34:44
185
原创 python中的print信息写入文件
调试code中,在循环体经常需要将当前epoch的信息print出来进行校验。当epoch过多时难以查阅,因此我们将print内容输出到文件中保存。一、demo练习sys.out对象默认为当前屏幕输出,可以通过变量改为文件写入,同样也可以重新指定回当前屏幕,代码如下。"""write the infos of print to filesauthor:huangrui"""import sysprint("hello, i come first!")__console = .
2020-11-19 11:48:48
5264
原创 多进程编程demo
在服务器资源丰富的情况下,可以启用多进程加速大规模数据的处理过程。本节以demo展示,输入1000个数组成的列表,以列表的形式对应输出其平方结果。定义基础func功能函数:输入一个数,输出其平方结果。开启10个进程,每个进程执行一遍func函数。设置1000次循环,每次循环调用一个进程,执行一步func功能。import multiprocessing as mpdef func(x): return x**2def generate_data(size): .
2020-11-18 20:18:56
218
原创 mac下python anaconda根据项目建立虚拟环境
1. 新建虚拟环境创建环境conda create -n linenet python=3.5进入环境source activate linenetconda activate linenet退出环境source deactivateconda deactivate列出环境conda env listconda info --envconda info -e删除环境conda remove -n linenet --all安装模块conda install lx
2020-10-26 15:37:44
685
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人