自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(159)
  • 收藏
  • 关注

原创 shader中,向量的三种乘法

两个向量的元素相乘、点乘和叉乘可以使用内建的GLSL(OpenGL Shading Language)函数进行计算。叉乘(Cross product)

2023-06-15 11:02:54 849

原创 docker常用命令记录

重新启动并且重新构建(改了dockerfile之后要用这个)以root进入docker交互界面(容器内要安装bash)

2023-05-07 11:18:05 86

原创 从mixamo导入并重定向人形动画到unity

unity的人形动画重定向的原理为将所有人形动画都转移到一个人形模板AVARTA上,然后再进行动画迁移。选择刚刚下载的模型,选择Rig。这个时候同样使用AVATAR的游戏角色就可以跑这个动画了。直接把下载的动画拖到游戏角色的Animator中即可使用。格式选择fbx,下载后,将fbx文件拖入unity。

2023-02-28 16:36:19 934

原创 git多人协作的日常步骤

1、将远程主分支拉取到本地自己的分支2、commit 代码3、上传到远程自己的分支4、合并到主分支5、切换回自己的本地分支

2022-06-29 11:42:47 256

原创 在unity中使用jieba分词的方法

记录在unity中使用jieba包进行分词词性标注等操作的方法

2022-06-28 17:16:03 785

翻译 Pose Animator 让矢量图捕捉你的动作,然后动起来。(翻译学习)

Pose Animator-

2022-05-20 11:17:18 850

原创 unity摄像机追踪屏幕抖动的问题

原因:物体移动的update函数和摄像机的update函数同时执行,有冲突解决:摄像机跟踪方法改成LateUpdate中执行: private void LateUpdate() { this.transform.position = player.transform.position + offset; }相机脚本一般都写在LateUpdate中,LateUpdate会在所有Update执行之后再执行(包括其他的gameobject)...

2022-03-15 21:48:13 4250

原创 彻底理解unity里的Time.deltatime

前提1:update函数里的内容一帧调用一次前提2:Time.deldatime是一个值,表示一帧的间隔时间。这个值在不同电脑里不一样。为什么乘deltatime:当update里的变化量乘了这个deltatime之后,每秒的变化量就是固定的了。而之前由于一秒钟我们不确定自己的电脑有几帧,变化量不确定。举例:让一个物体向前移动。 void Update() { transform.Translate(0,0,1); }我们设自己的电脑一秒20帧,20fr.

2022-03-11 11:46:59 7087

原创 unity协程coroutine 简明教程

本篇内容基于 https://gamedevbeginner.com/coroutines-in-unity-when-and-how-to-use-them/以及官方教程为什么使用协程协程非常适合设置需要随时间发生变化的游戏逻辑。很自然我们会想到update,update里指出每一帧unity会执行什么操作。协程则可以将代码从update中解放出来,至于为什么要这样做,请看例子:假设我们有一辆坦克,当点击地面时,我希望坦克转向我点击的位置,朝该位置移动,到达后,等待一秒再开火。...

2022-03-07 16:13:30 5348

原创 unity中安装nuget包的方式

参考:https://blog.walterlv.com/post/unity-starter-reference-dlls-and-add-nuget-package-for-unity-csharp-projects.html经测试比较稳定的方法是在vs中安装nuget包,之后会在unity项目的根目录下的packages文件夹中找到下早好的nuget包,然后找到对应.net平台版本的dll文件,放入unity/assets/Plugins文件中。用NuGetForUnity这个插件经常出现版本不匹

2021-11-19 11:03:17 4648

原创 windows下cmake编译项目的方法

windows平台直接用cmake命令的话,由于win是默认使用vs的编译器,不会生成makefile文件,导致无法用make命令生成exe文件。下载mingw,它包含了在linux平台下的一系列工具,包括g++ gcc编译器、make命令等。用cmake生成项目主要用到的工具就是这三个。安装和执行过程1、安装minGW和CMake2、配置minGW和CMake的bin环境变量3、修改minGW bin目录下的mingw32-make.exe为make.exe4、创建编译文件所在的build目

2021-07-27 11:34:01 5443 1

原创 DragonBones+Unity 实现换装

学习自 https://www.zhihu.com/collection/691395675https://gitee.com/afrx_s_projz/change_skin_demo.dragonbones素材来自 https://www.bilibili.com/video/BV1Y7411K7y6龙骨换装的核心函数是 UnityFactory.factory.ReplaceSkin( player.GetComponentInChildren<UnityArma

2021-07-18 18:29:24 1404 3

原创 和弦学习笔记2 顺阶和弦的应用

上一章介绍了顺阶和弦,和弦排列在一起就构成和弦进行,来看下面几个简单的顺阶和弦进行:可以按照上一章的内容,弹出来听听。分别代表明朗、阴暗、飘忽不定的情感。比较收到第一个和弦的影响。和弦进行中第一个和弦的使用频率大概如下:...

2021-06-25 12:56:02 270

转载 循环神经网络-序列表示

自然界种存在很多事物是与时间有关的或者是序列表示的,这种事物我们都可以在pytorch种用tensor进行序列化表示,形式如[seq_len,feature_len]代表一个事物种序列的数量,以及每个序列的长度。举例说明:1、月份-房价对此例,用一个标量就可以表示一个序列。2、图片想象成对其一行行扫描,每一行是一个序列,行数是序列的数量。3、文本信息要表示一个句子,第一个维度表示单词数量,第二个维度是每个单词的编码。one-hot编码,每个向量只有一个1,其余都是0。3.1 one-h

2021-05-30 10:41:46 186

原创 基于StackGAN++、CycleGAN的图像生成工具,开源

image generate tool本项目用于学习图像分割、图像生成、风格迁移等技术,将多种方法汇总,尽量做到易用。源码地址: https://github.com/kisstherain8677/Image_generate一、自动抠图,可选取感兴趣区域,一键扣取前景,可通过标记前景/后景进行迭代微调基于https://github.com/zihuaweng/Interactive-image-segmentation-opencv-qt 修改。使用方法:0、安装requirements

2021-05-27 18:32:43 493

原创 关于零样本学习

一般的机器学习做法是,如果我要训练一个图像分类器(就是给一张图像,机器告诉你类别)我们就要准备很多带有标签的熊猫、狮子等图像丢给神经网络学习。零样本学习的目标是我训练熊猫、狮子之后,给一张机器没见过的斑马的图像,机器能认出这是斑马。其实原理很简单,就是让机器学会更抽象的特征,记住特征而不是具体哪个种类。比如机器知道了白色是啥样的、条纹是啥样的、四条腿的是啥样的,这些属性组合到一起就知道了斑马是啥样的。将图片转化成特征向量。然后我们有一个类别描述向量,用这个取代了原来简单的类别标签。这个类别描述向量,可

2021-05-24 22:24:50 316

原创 和弦学习笔记1顺阶和弦

c大调顺阶和弦:大和弦:C、F、G小和弦:Dm、Em、Am、Bm大和弦根音到三度之间有四个半音;三度到五度之间有三个半音小和弦根音到三度之间有三个半音;三度到五度之间有四个半音(除了Bm)只要将大和弦的三度音降半音就可以得到小和弦了。特殊的,Bm从根音到三度音、从三度音到五度音都是三个半音。...

2021-05-07 23:41:59 999

转载 李宏毅生成对抗网络2021学习笔记

什么是generator?有一个从一个简单分布(这种分布的表达式我们可以写出来)这个网络以这个分布中采样得到的向量作为输入,输出另一个复杂的分布。能够做到这种事情的网络就是生成式网络。为什么要是一个“分布”?视频预测:如果不是分布的话,可能在遇到某一情况下时,向左转和右转的情况同时存在资料库中,精灵就会分裂成两个。如果我们在输入中加入一个分布中的采样,他的输出也就是有概率的一个分布。当下最有名的生成器:generative adversarial network (GAN)uncond

2021-05-05 11:35:53 447

转载 用ResNet对CIFAR数据集进行图像分类

CIFAR数据集的导入CIFAR-10数据集有60000张32*32的彩色图片,总共10类,每一类有6000张图片。分为50000张训练集和10000张测试集在torchvision包中可以非常方便地直接导入cifar数据集输入dataroot,是否是训练集,transform等参数。transform参数一般传入transforms.Compose([])进行一些变换这里就可以从网上下载得到CIFAR的原始数据集了cifar_train=datasets.CIFAR10('cifar',Tr

2021-04-26 21:24:54 1269

转载 卷积神经网络-Data Argumentation

为了使得训练效果更好,需要尽可能多的数据集。如果数据有限,可以用一些方法提高训练效果。采样参数更少的网络;数据增强翻转、裁剪、旋转、随机移动缩放,用GAN来生成新样本。数据增强有作用,但是不宜过多。...

2021-04-19 21:46:48 217

转载 卷积神经网络-nn.Module

nn.Module是所有神经网络层的父类。要实现自己的类的话,要先继承他。特性:1、有很多内置的函数可以直接调用:2、Container 可以用nn.Sequential类3、对网络内的参数更加高效的管理

2021-04-19 21:22:42 287

转载 卷积神经网络-ResNet

当网络变的较深时,会出现梯度离散现象,训练效果不增反降。加入一个短路层,允许不经过一部分层直接输出由网络自己选择退化哪一层变成短路层。ResNet在2015年取得了非常大的效果提升。主要是因为他使得训练更深层的网络成为可能。性能对比,计算量较小,同时准确率较高的网络有ResNet-101、Inception-v4。VGG网络的性能尚可,但是计算量较大,因为其卷积核不够小...

2021-04-18 21:50:42 114

转载 卷积神经网络概念

线性层的局限图片通常输入维度较大,一个28*28的图片就有784个输入,一个有四个隐含层的网络,就有多达390K个参数。

2021-04-02 12:30:26 343

原创 交叉熵损失cross entropy loss

除了均方差,在神经网络中很常用的一个损失函数是交叉熵损失cross entropy loss。这里记录一下它的概念。Entropy熵,衡量不确定性。信息熵越大,混乱程度越大,信息量越大。当概率均等的时候信息熵最大,这时系统对取什么态没有偏向性,所以混乱度最大。Cross Entropy交叉熵,是与两个分布有关的概念KL Divergence 散度,衡量两个分布的差别大小:对于0-1的情况H§=0所以优化H(p,q)就是直接优化散度举例五分类问题真实分布:P1[1 0 0 0 0]

2021-03-22 10:12:06 2927

原创 pytorch 寻找二元函数的最小值

定义函数定义函数,用matplotlib画图import numpy as npimport matplotlib.pyplot as pltdef himmelblau(x): return (x[0] ** 2 + x[1] - 11) ** 2 + (x[0] + x[1] ** 2 - 7) ** 2x=np.arange(-6,6,0.1)y=np.arange(-6,6,0.1)print('x,y range:',x.shape,y.shape)X,Y=np.m

2021-03-21 17:34:30 1419

原创 北欧神话人物关系图—原始之战

参考自茅盾著作《北欧神话)

2021-03-21 12:02:16 3822

转载 pytorch实现感知机

单层感知机模型,每一个输入x与其权值w相乘求和然后加上一个偏置权值w的编号,第一位是上一层的层数索引,第二位是下一层的索引单层感知机的梯度推导损失函数E:对各个权值求导:一步步向前求导可以得到关于x的导数...

2021-03-20 10:52:11 690

转载 常见的Loss函数

主要有均方差和交叉熵损失MSE目标与计算之间差的平方和。注意norm2是要开根号的用norm调用如下:torch.norm(y-pred,2).pow(2)用pytorch可以自动求导方法一:用autograd.grad()方法二:用backward函数,会自动计算所有的梯度大小,用grad可以调用...

2021-03-19 11:14:45 302

转载 pytorch与随机梯度下降

1、梯度的概念偏导数 :函数在某一点某方向的变化率是一个标量,给定一个方向后,得到这个方向的变化率大小 梯度:某一点的梯度是这个点各个方向的偏导数组成的一个向量梯度的意义大小代表变化率,方向指向函数增长的方向。更新参数的公式:每次减去梯度大小来求取目标函数的最小值:凸函数、局部最小类似一个碗的形状(二维视角)凸函数总可以找到一个全局最优解。现实中遇到的函数却一般是这样的:这是loss关于很多参数三维可视化后的结果。由于有很多局部最小解,较难找到全局最小解。鞍点(saddle

2021-03-18 20:32:36 128

转载 pytorch Tensor基础操作汇总

1、数据类型在python中的各种数据类型都用Tensor进行概括:对于string类型,pytorch中要计算string类型的数据,需要先将其也转化为可以处理的Tensor类型one-hot 编码[0,1,0,0],[1,0,0,0]…Embeddingword2vec,glovepytorch中的数据类型如下所列:在程序中可以用.type()和isinstance()检验类型注意部署在CPU和GPU上是不一样的注意pytorch里标量是0维的,生成方法如下:注意py

2021-03-18 12:06:05 1138

原创 用pytorch梯度下降实现线性回归

原理我们得到一系列数据,最先试用的方法一般就是尝试用一条直线进行拟合,也就是线性回归。寻找一条直线,可以描述这一系列点的关系。我们有采样得到的实际值y和根据回归直线方程计算得到的wx+b。那么目标就是使这两个值的差距最小化loss=(wx+b−y)2loss=(wx+b-y)^2loss=(wx+b−y)2在本次实验中,在直线方程中引入一个高斯噪声生成了100个随机点。如下:具体来说,优化函数如下:利用梯度下降算法,可以迭代优化参数,使得目标函数逐渐减小。pytorch实现1、计算总误

2021-03-13 19:37:00 472

原创 关于神经网络中梯度概念的浅显易懂解释

梯度是神经网络里绕不开的一个概念,看到一个视频,解释得很简单明了:一句话:梯度是一个向量,用来指明在函数的某一点,沿着哪个方向函数值上升最快,这个向量的大小指明函数值上升程度(速度)的大小。接下来举例所以本质上,梯度就是一个向量,如果函数是n元函数,这个向量就是由n个元素组成。如果是二元函数,这个向量就是:在(1,1)这一点,沿着方向(3,1)函数值上升速度最快。如图,红色是函数C(x,y)的图像,在(1,1)这一点,可以看到沿着(3,1)移动,函数值是上升最快的。在机神经网络种,我们经

2021-02-15 18:04:24 10224

原创 双系统用Gparted调整Ubuntu 18.4分区

由于要跑数据,发现之前分给Ubuntu的容量不够用了。。。个人习惯把数据放在/home里,于是想设法从windows里再扣一点空间出来给他。主要用到Gparted这个工具,注意,直接在活动的Ubuntu里是不好用的,因为不能对挂载目录进行移动压缩等操作,接下来有两个办法。1、制作Ubuntu启动u盘,用试用模式进入(不安装)然后用Gparted进行操作2、直接用Gparted live u盘(这里面集成了debian操作系统)尝试了第一种方法,不知道为啥找到不121什么的,一直卡在系统启动那里,网上说

2021-01-17 12:27:55 1114

原创 pycharm中根据requirements.txt建立虚拟环境

由于经常用pycharm写python和学习项目,这里把配置环境的步骤写一遍加深印象方便查阅1、新建虚拟环境setting中,选择添加解释器选择新的虚拟环境,目录最好建在项目下面不然容易乱,取名venv,注意要是空目录。基础解释器选择安装python的路径。2、根据requirements.txt文件自动安装依赖包一般项目作者会把依赖文件附到项目中一起上传,将这个文件移动到venv文件夹中,打开pycharm中的命令行,这里注意,要在命令行里激活当前的虚拟环境,用的pip才是这个环境的,pi

2020-12-17 19:00:04 9530 3

转载 m个球放进n个盒子中-暴力法和递归

1、盒子不同暴力法 枚举所有位上0-m-1的数,每次对数列求和看总数满不满足等于m#include<iostream>using namespace std;const int maxn = 1000000;int m, n;int a[maxn];int main() { cin >> m >> n;//m个球,n个盒 while (!a[n]) {//循环直到最高位出现1 //求和 int s = 0; for (int i = 0;

2020-10-08 21:37:17 2160

转载 learnopengl学习笔记——帧缓冲

到目前为止,我们已经使用了很多屏幕缓冲了:用于写入颜色值的颜色缓冲、用于写入深度信息的深度缓冲和允许我们根据一些条件丢弃特定片段的模板缓冲。这些缓冲结合起来叫做帧缓冲(Framebuffer),它被储存在内存中。OpenGL允许我们定义我们自己的帧缓冲,也就是说我们能够定义我们自己的颜色缓冲,甚至是深度缓冲和模板缓冲。我们目前所做的所有操作都是在默认帧缓冲的渲染缓冲上进行的。默认的帧缓冲是在你创建窗口的时候生成和配置的(GLFW帮我们做了这些)。有了我们自己的帧缓冲,我们就能够有更多方式来渲染了。你可能

2020-09-20 15:44:41 217

原创 堆的建立、调整和排序

#include<vector>#include<iostream>#include<queue>#include<vector>using namespace std;const int maxn = 100;//int heap[maxn];int n = 10;void downAdjust(int low, int high) { int i = low, j = i * 2;//欲调整节点与其左孩子。 while (j &

2020-09-17 16:01:29 223

转载 learnopengl学习笔记——面剔除(face culling)

尝试在脑子中想象一个3D立方体,数数你从任意方向最多能同时看到几个面。如果你的想象力不是过于丰富了,你应该能得出最大的面数是3。你可以从任意位置和任意方向看向这个球体,但你永远不能看到3个以上的面。所以我们为什么要浪费时间绘制我们不能看见的那3个面呢?如果我们能够以某种方式丢弃这几个看不见的面,我们能省下超过50%的片段着色器执行数!我们如何知道一个物体的某一个面不能从观察者视角看到呢?如果我们想象任何一个闭合形状,它的每一个面都有两侧,每一侧要么面向用户,要么背对用户。如果我们能够只绘制面向观察者的面

2020-09-14 16:26:11 592

转载 learnopengl学习笔记——混合

在OpenGl中,混合(Blending)是实现物体透明度(Transparency)的一种技术。透明的意思是一个物体不是纯色(Solid Color)的,其颜色是物体本身的颜色和它背后其他物体颜色的不同强度结合。决定物体透明度的颜色分量是alpha值,alpha=1时完全不透明,alpha=0时完全透明。alpha=0.5时物体的颜色一半来自自身的颜色,一半来自背后物体的颜色。丢弃片段有些图片并不需要半透明,只需要根据纹理颜色值,显示一部分,或者不显示一部分,没有中间情况。比如说草,如果想不太费劲

2020-09-14 13:32:43 165

原创 树相关(二叉树、多叉树、二叉查找树、平衡二叉树)

基本操作

2020-09-06 17:50:18 119

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除