自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Cangwang的专栏

专注于Android组件化开发和进程化开发

  • 博客(62)
  • 收藏
  • 关注

原创 [Pytorch基础]GPU编译经验

这期分享的是一些GPU编译的初级经验本地GPU配置1.最好使用Linux或者Windows系统,mas系统需要外置N卡2.需要安装Anaconda3.需要安装N卡的Cuda配置(一定要安装,不要pycuda无法使用)4.需要安装pycuda的pytorch这些网上基本都有教程,请一定要使用以上的顺序。第一次没经验,不按这个顺序出问题查问题纠错,弄了我两天显存部分的说明先查看你显卡的显存,低于8G显存的显卡基本跑起来都非常吃力,算力对于深度学习很重要。8G内存连VGG都跑不起来的。下图运行n

2020-09-24 11:45:51 618

原创 [Pytorch基础]免费的Colab使用和经验

入门CV,其实很大程度需要算力,特别是初入门的时候。Google提供了Colab给我们初学运行有很大的帮助,有免费的GPU和TPU资源可以使用。当然要使用前提是要翻墙啦。1.首先要有Google账号,登录Google Drive云盘 Google Drive2.然后安装Colab Notebook,然后就可以新建出Colaboartory3.你可以认为是在线编译的jupyter notebook,已经内置了python以及tensorflow可供调用。如何使用GPU代码执行程序->更改

2020-08-31 17:46:29 1247

原创 [Pytorch基础]线性回归

刚开始入门机器学习,线性回归是肯定躲不过的。特别到之后的神经网络的全连接层也是需要线性回归基础。最简单的公式就是y=wx+by=wx+by=wx+b。x和y是已知量,要求出w和b的值。我们在平面坐标图上看,y=wx+by=wx+by=wx+b,就是一条直线。我们要确认这条直线就只要两个点就可以确定出来。但是现实情况的数据并不是百分百符合y=wx+by=wx+by=wx+b这条直线的,很可能是围绕这条直线变动的。那么y就有可能出现偏差了。实际情况y和符合y’=wx+by’=wx+by’=wx+b预测

2020-08-27 22:31:21 200

原创 [Opencv基础]水印,数字水印,频域水印(隐形水印)

水印,你在很多公司图片都会看到,里面都会加入图片都会有显式水印,或者半隐形水印。平常加水印,只要将两张图片色值混合就没问题了import cv2import numpy as npimport matplotlibimport matplotlib.pyplot as pltimg = cv2.imread("lena.jpg")img= cv2.cvtColor(img, cv2.COLOR_BGR2RGB)wm = cv2.imread("cang_wang.png")wm = cv

2020-08-04 10:10:08 4059

原创 [Opencv基础]灰度变换和直方图

灰度变换import cv2import sysimport osimport matplotlib.pyplot as pltdef trans2show(img): return cv2.cvtColor(img,cv2.COLOR_BGR2RGB)img=cv2.imread("tangsan.jpg")gray = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)plt.figure(figsize=(11,11))plt.imshow(trans

2020-08-01 09:12:39 740

原创 [Opencv基础]人脸磨皮

我们可以看一下下面一张图片可以看到有很多斑点,女生都想让图片的皮肤好看一点,那我们可以做什么操作呢?1.PS磨皮2.图像处理磨皮我们可以想象一下,我们对图像磨皮是怎么做的?最简单的我们对整张图片进行一个卷积操作import cv2import matplotlib.pyplot as plt//函数是,opencv使用的是BGR格式,屏幕显示的是RGB,显示到屏幕需要进行转换def t2s(img): return cv2.cvtColor(img,cv2.COLOR_BGR2R

2020-07-30 10:09:17 1763

原创 Stable Diffusion 多视图实践

4.描述的人物特征,请尽量详尽,因为有一些元素如果不进行描述,大模型生成的时候会默认出现,所以需要添加多一点没描述。多提示相同的发色,相同的发型,相同的衣服。3.多视图的提示openpose,因为描述的人物整个图,如果提示对人物有遮挡的服饰,例如长裙,这些就非常有可能还是会变成短裙。2.需要添加图片到到controlnet当中,不要选择预处理器,选择模型为openpose的模型,然后需要点选同步图片尺寸。2.有一些模型手部有可能会出现拿着东西的情况,就算编写提示词,他还是会拿着东西。

2023-08-31 11:23:05 1266

原创 Stable Diffusion+Riffusion应用

512*512的像素是5秒左右,那么256个像素,大概是增长2.5秒左右,生成的效果还可以,认真听会有比较明显的拼接感,用于比较随机的创作效果在保持风格的还是能够接受的。3.下载模型,如果你显存够大可以上官网下载,不然只能去可以civitai下个精简版的。512*512尺寸的图片只能生成5秒左右的音频,选择其他分辨率的音频会有非常大的噪音。4.使用启动器,选择模型,填写关键字,然后选择宽高512*512,点生成。如果你讲多个音频图片放在一个文件夹,会给你多生成一个多个音频合成的音乐。

2023-08-22 18:19:31 238

原创 Stable Diffusion+Ebsynth 分割模型无法切换gpu运行解决

3.关键在这个代码,这里会发现找不到gpu运行环境,所以运行在cpu当中,导致运行速度非常缓慢。翻看源码,原来使用的是sbprocess来运行,是主动运行在subprocess当中的虚拟环境,如果虚拟环境没有配置gpu cuda环境,就会运行在cpu当中。1.这里运行会遇到不少问题,如果没有翻墙会遇到下载transparent-background的运行模型,下载失败的情况。2.当然你可以运行一个fast的版本,这个版本会比较粗略一点,运行速度应该能够快一倍。代码是在stage1.py当中。

2023-08-16 10:10:22 957

原创 [NDK]从Opengles到Vulkan-进阶篇(2)-离屏渲染

这里离屏渲染当然是使用不在屏幕上进行渲染。

2023-08-16 10:08:19 280

原创 [NDK]从Opengles到Vulkan-进阶篇(1)-保存图片

这里是最基础的获取帧内字节的数据,指定读取字节为前台或后台(非必须),需要先进行字节对齐(一般客户端是必须的),然后再通过坐标位置来读取指定读取的gpu内存位置。以上四种方式,glReadPixels 使用最方便,HardwareBuffer 实现最复杂,实现复杂度:HardwareBuffer > PBO > ImageReader > glReadPixels。这里对pbo进行初始化,需要字节对齐,不然会截出来会有黑边或者错乱,这里特别需要知道的是*4是因为RGBA。

2023-08-15 09:43:12 142

原创 [NDK]从Opengles到Vulkan-基础篇(10)-混合

混合其实,可以想象为当多个纹理叠加的时候,纹理都是方形图片,深入的纹理叠加肯定是有透明度的叠加,这个时候就需要开启混合,并对透明度和颜色叠加做调整。这里说的颜色混合是在两个不同的shader处理间的混合,如果同一个shader,可以通过fragment shader来做计算处理。颜色混合的应用:混合可以应用在原有的画面的基础上,添加头像,添加其他遮罩贴图这些内容时使用。(Kr, Kg, Kb, Ka)代表缓冲区中各个通道R, G, B, A的最大值。需要创建纹理混合的机制,然后通过渲染管线写入。

2023-08-15 09:41:56 107

原创 [NDK]从Opengles到Vulkan-基础篇(9)-视口相关

这里需要注意的是,如果图片大小实际被屏幕大小要大的情况下,需要将交换链 帧缓冲Framebuffer以及Viewport都设置为图片的大小,然后会出现渲染错位异常的情况。3.视口:即窗口还可以分为若干个区域,称为视口,窗口中用来绘图的区域。在SwapChain交换链上需要设置交换链的窗口,以及显示窗口的大小。EGL设置的是EGLDisplay窗口EGLSurface的大小。4.裁剪窗口:即在视口中让你看到的图形,即显示出来的那部分。当然如果你是采集手机屏幕大小,就只要设置屏幕大小就好了。

2023-08-15 09:41:13 103

原创 [NDK]从Opengles到Vulkan-基础篇(8)-shader参数写入

这里是shader字符串,需要注意的是binding对应的信息,binding = 0,绑定的是UniformBufferObject数据体。对Vulkan来说shader参数绑定的步骤,比Opengles当中复杂很多,需要绑定参数,对参数进行cpu到gpu中的传输。除了绑定更新集的方法外,Vulkan还提供了PushConstant的方式,可以通过声明push_constant对象的方式。这里分别是上面说的binding数据对应的ubo数据体对象,以及纹理贴图的数据,通过描述集来进行更新。

2023-08-15 09:40:29 121

原创 [NDK]从Opengles到Vulkan-基础篇(7)-创建纹理容器

这里采样器的设置和上面说的Opengles有点类似,加入了多重采样maxAnisotropy 的设置, 和EGL环境的MSAA抗锯齿是一致的,坐标系数值的设置等设置。GL_CLAMP_TO_EDGE 纹理坐标会被约束在0到1之间,超出的部分会重复纹理坐标的边缘,产生一种边缘被拉伸的效果。在fragment shader里面定义加载纹理的uTexture,这里如果加载shader在第4节有介绍,可以重新翻阅。这里stbi_load是读取图片的api,这里特别注意最后一个参数是解析图片的通道数。

2023-08-15 09:38:14 98

原创 [NDK]从Opengles到Vulkan-基础篇(6)-顶点索引

这里第一个参数需要填入顶点连接方式, 需要渲染的图元类型,包括 GL_POINTS, GL_LINE_STRIP, GL_LINE_LOOP, GL_LINES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN ,GL_TRIANGLES。在创建渲染管线的时候,需要对顶点buffers和顶点索引buffers,通过渲染管线命令进行提交,进行绑定。这一节顶点索引比较简单,只是指定三角形的排列方向和索引,是上一节顶点着色器的补充。这里需要先将顶点索引的数据从cpu复制到gpu缓冲当中。

2023-08-15 09:35:21 80

原创 [NDK]从Opengles到Vulkan-基础篇(5)-顶点着色器

这个方案也是在上面正常渲染使用的方案。图片坐标系的原点在图片左上角,x轴向右,y轴向下,x和y的取值范围都是0到对应的图片宽高。第一个方案在shader中翻转,我们可以考虑在顶点Shader里面进行翻转,在顶点Shader里面,我们只需要对顶点输入的时候做一次转换,将顶点坐标以及附带的矢量(法线之类)一起翻转,然后将包装之后的属性提供出来使用。是因为在程序中查看解码后的图片,实际上还是在图片坐标系下显示的,图片坐标系和纹理坐标系y是相反的,当你把图片加载到纹理中的那一刻,图片在纹理坐标系下就已经倒了。

2023-08-15 09:34:37 96

原创 [NDK]从Opengles到Vulkan-基础篇(4)-图形管线

渲染管线上的图的每个步骤都能够通过Vulkan来做管理。Vulkan能够更加深入的管理整个渲染管线。以下是Vulkan创建渲染管线,需要纹理附着的描述,纹理索引,管线描述,管线结构体这些基础信息。有了渲染管线后,每个渲染的滤镜就需要一个独立的管道,一个管道每次都需要通过图形管线。Opengles的渲染管线在是由多个着色器处理来完成。

2023-08-15 09:33:50 137

原创 [NDK]从Opengles到Vulkan-基础篇(3)-交换链

交换链,在Opengles就是简单的一句话就能完成前后台显示的刷新和交换,并不需要特定的创建容器,很多细节,并不需要我们进行管理,当然定制性少自由度自然也就不高了。但对于我们真正去了解渲染流程,了解Vulkan交换链上的操作很是必要。

2023-08-15 09:16:27 104

原创 [NDK]从Opengles到Vulkan-基础篇(2)-运行配置

以Android为例,需要使用合适的NDK,如果是用其他NDK,将会有可能编译错误,特别是在windows系统,而且编译速度并不快,需要半小时以上。Android中如果需要Android端窗口,还需要引入扩展库,需要在CMakeList里面引入以下的配置,进行配置AndroidKHR。当我们初始化使用vulkan的时候,需要调用InitVulkan来初始化vulkan的so,还有初始化实例方便调用。需要引入shaderc的库,不然编译vulkan的shader的时候就无法通过。

2023-08-14 22:17:44 299

原创 [NDK]从Opengles到Vulkan-基础篇(1)-基础环境

从业多年之后,你肯定想要更加精进,你发现可以学习的方向有很多,有人选择了网络,有人选择了渲染图像,有人选择了编译器,有人选择了framework,也有人选择了神经网络AI方向。很明显使我着迷的是渲染技术,因为能够直接呈现出来。当你越学越深入后,你发现网上的资料是真的不多很难找,也没有领路人可以找,只有自己去专研,去实践,去探索,直到得到问题的答案。当迷津解开后,那种自我成就感确是比任何行为都更加让人觉得着迷。

2023-08-14 22:16:07 243

原创 Stable Diffusion 插件开发经验

6.如果你考虑使用api做访问,那么最好有自建服务器的心理准备,而且需要有一定长连接或者等待机制的处理,因为图处理是一件非常长时间耗时的功能,单台的gpu算力有限,无法做到太多的并行计算,只能进行请求等待队列堵塞。但是大部分下载都存在一些这样那样的问题,例如支持断点续传啊,是否每次都覆盖下载重复下载这些,我重新封装了一些插件接口,可以使用我提供的github来做下载处理。如果你想要对正在运行的任务使用直接中断或者跳过步骤的操作,如果你直接发送一个中断命令去处理,会发现,你发送的命令是不会被打断的。

2023-08-14 22:01:40 867

原创 Stable Diffusion+Temporal-kit 半虚半实应用

(1)手部有特殊动作将会难以让人识别,无论是openpose,都无法很好的还原,因为有些手部动作有遮挡的情况下就是无法很好还原,这里面可以借用softedge边缘来提示边缘状况。9.使用Ebsynth拖参数生成,把frames文件夹拖到videos的位置,把keys拖到key frames的位置,点击run all。8.Temporal-kit Ebsynth预处理,点击载入预处理,输出分辨率要填视频高度,填写对应参数,点预处理Ebsynth。6.生成想要的效果后,固定seed,然后使用批量生成。

2023-08-14 11:14:15 973

原创 Stable Diffusion + AnimateDiff运用

4.其原理相当于同时生成多个固定的照片,但是有一些参数有所不同,所以加入随风而动的关键词效果会比较好。效果有可能达不到你想要的效果,可能出现抖动感。抽卡完成后固定seed,然后打开这个插件,然后通过填写一下参数,点生成就可以开始生成。6.12G的显存只能勉强生成512*768大小的动画效果,其和帧数也有关系。2.下载对应的模型,最好到c站下载,google colab的资源有可能会出现下载问题。5.一定要官网提供的一些固定的底模才能形成比较好的效果,不然抖动感非常厉害。3.下载完成后,你可以随便抽卡了。

2023-08-14 11:13:08 2053

原创 Stable Diffusion +EbSynth应用实践和经验分享

(1)调整效果是一个非常麻烦的过程,抽帧的时候,步骤二,如果有场景切换,那么就要保证前后的场景的关键帧完整,自行将video_frame中你需要的帧移动到video_key中。5.对应步骤2,设置关键帧,如果你视频中人物动作比较复杂,抖动比较厉害,需要把参数设置小一点,例如最小关键帧间隔为5, 最大间隔为100。4.对应步骤1,运行第一步分割mp4,这里面最好填你需要生成的分割大小,如果填写-1,-1是视频原大小。11.步骤8,是考虑需不需要替换掉背景,如果需要,就运行步骤8,填写背景地址。

2023-08-14 11:05:58 1268 1

原创 Stable Diffusion 插件开发基础讲解

近来Stable diffusion扩散网络大热,跟上时代,简单的文生图,图生图,其实可以满足绝大多数设计师的应用,但是有什么是赛博画手无法做到的呢?那就是他们使用到的stable diffusion的插件开发,他们并不清楚stable diffusino的代码结构,如果遇到一些代码层面的报错问题,他们将无法简单解决。我们想要开发出我想要的stable diffusion插件。那么我们首先要去学习一些gradio的基础知识。Gradio接口文档。

2023-08-14 10:52:26 1522

原创 Stable Diffusion + Deform制作指南

8.这里面需要打开编辑器,把deforum插件里面的代码进行修改,把deforum目录/scripts/colors.py进行修改,修改成截图的样子。这里面我们知道我们初始图是jpg或者png的时候,是因为初始化图片,有可能不能正确识别图片的色值,无法很好转成直方图。下面的参数很清晰,就是xy移动坐标,例如60:(10),如果是前面是对应帧时长,后面像对应的方向运行的速度,x坐标整数是向右,负数向左。这里只要简单调整你需要的fps帧率就好,那么视频的时长就会是最大的帧数/fps帧率。需要安装ffmpeg。

2023-08-14 10:44:30 664

原创 stable diffusion 电商应用技术(插图部分重绘)

主要是底膜和关键字一定要设置好,例如服装的提示词这些控制。9.图片的重绘设置为相反,那么就可以替换带场景和人物。1.下载inpaint anything插件。4.分割模版,获取蒙版。5.发送到图生图重绘制。7.clip反推提示词。

2023-08-14 10:37:39 325

原创 Stable Diffusion+Roop单张图片换头roop安装配置【包含roop破解方法】

stable diffusion 换头roop技术讲解

2023-08-14 10:27:17 1292

原创 [Android]如何做一个崩溃率少于千分之三噶应用app(24)--组件化的Kotlin适配

大家好,我系苍王。以下是我这个系列的相关文章,有兴趣可以参考一下,可以给个喜欢或者关注我的文章。[Android]如何做一个崩溃率少于千分之三噶应用app--章节列表相信大家都有看过今年的Google I/O,估计对我们Android程序员来说,应该是最重磅的消息是Google要将Kotlin作为Android开发的第一语言,并且说Android studi

2017-06-24 12:59:31 569

原创 [Android]如何做一个崩溃率少于千分之三噶应用app(23)-组件化&模块化&插件化演进

大家好,我系苍王。以下是我这个系列的相关文章,有兴趣可以参考一下,可以给个喜欢或者关注我的文章。[Android]如何做一个崩溃率少于千分之三噶应用app--章节列表写了二十多篇的简书,到这里已经写了很多关于很多组件化内容的文章,但是很多对组件化,模块化,插件化的概念还是不理解。很多同学,都觉得如何划分模块,如何划分组件,如何做隔离解耦,如何做分层产

2017-06-24 12:58:39 533

原创 [Android]如何做一个崩溃率少于千分之三噶应用app(22)-组件化路由跳转

大家好,我是苍王。以下是我这个系列的相关文章,有兴趣可以参考一下,可以给个喜欢或者关注我的文章。[Android]如何做一个崩溃率少于千分之三噶应用app--章节列表大家应该有看完我的第十二编简书的页面跳转会清楚跨module的跳转用Android原生来做是,需要使用隐式跳转完成。但是原生跳转方式是有很多的局限性的。这里借用ARouter 对跳转的分析的一张

2017-06-24 12:57:45 726

原创 [Android]如何做一个崩溃率少于千分之三噶应用app(21)-组件化数据分享

大家好,我系苍王。以下是我这个系列的相关文章,有兴趣可以参考一下,可以给个喜欢或者关注我的文章。[Android]如何做一个崩溃率少于千分之三噶应用app--章节列表大家应该期待了很久我更新这个系列的文章了吧,其实我一直都有在更新,只是都是在修复前面的文章讨论群内同学遇到的问题。正好我找到了一些灵感,和在讨论群内遇到一些问题。这一节,要介绍的

2017-06-24 12:56:11 495

原创 [Android]如何做一个崩溃率少于千分之三噶应用app(20)-Gank 组件化实例App

大家好,我系苍王。以下是我这个系列的相关文章,有兴趣可以参考一下,可以给个喜欢或者关注我的文章。[Android]如何做一个崩溃率少于千分之三噶应用app--章节列表很久没有发文,是因为这段时间段都在写一个简单的组件化示例App,因为只能抽在晚上的时间写,很多功能和性能都还没有完善,暂时只能供大家查看一下,基本的架构状态,我会在这个月中不断更新,给大家做一个

2017-06-24 12:55:25 448

原创 [Android]如何做一个崩溃率少于千分之三噶应用app(19)-重新认识AndroidManifest

大家好,我系苍王。以下是我这个系列的相关文章,有兴趣可以参考一下,可以给个喜欢或者关注我的文章。[Android]如何做一个崩溃率少于千分之三噶应用app--章节列表我们最开始开发需要了解的除了Activity,估计就是AndroidMainfest了。但是当你使用组件化运用到你的工程的时候,你真的了解你的AndroidManifest组成吗?

2017-06-24 12:54:41 476

原创 [Android]如何做一个崩溃率少于千分之三噶应用app(18)-组件化与插件化优化

以下是我这个系列的相关文章,有兴趣可以参考一下,可以给个喜欢或者关注我的文章。[Android]如何做一个崩溃率少于千分之三噶应用app--章节列表记得我之前有介绍了一种非常适合于组件化后做插件化的框架,就是Small。我在第九章节的时候就有介绍了Small的使用,还有深入分析Small的运行原理。近来使用Small研发插件中,遇到一些问题,就在这里

2017-06-24 12:53:59 575

原创 [Android]如何做一个崩溃率少于千分之三噶应用app(17)-组件化SDK

组件化SDK

2017-03-07 11:29:01 367

原创 [Android]如何做一个崩溃率少于千分之三噶应用app(16)-Application组件化

组件化Application适配和优化

2017-03-07 11:27:46 563

原创 [Android]如何做一个崩溃率少于千分之三噶应用app(15)-View分发module架构

View分发module架构

2017-03-07 11:26:27 287

原创 [Android]如何做一个崩溃率少于千分之三噶应用app(8)-多渠道模块

以下是我这个系列的相关文章,有兴趣可以参考一下,可以给个喜欢或者关注我的文章。[Android]如何做一个崩溃率少于千分之三噶应用app--章节列表我建立了一个关于Android架构学习的群,里面可以进一步进行组件化学习的交流。群号是316556016,也可以扫码进群。我在这里期待你们的加入!!!你试过多渠道研发?例如插件

2017-01-13 10:13:27 398

空空如也

空空如也

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

TA关注的人

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