1.【轮子篇】Joystick
2.腾讯T2I-adapter源码分析(1)-运行源码跑训练
3.特效炸裂:Vue3+TypeScript 实现王者荣耀图鉴,王者王已开源!源码源码!分析分析!荣耀
4.å¦ä½ç¨mt管ççè
è£è
5.Axios源码深度剖析 - AJAX新王者
【轮子篇】Joystick
轮子篇Joystick 实现指南
在开发过程中,王者王我曾针对摇杆交互遇到不舒适的源码源码医院预约系统源码问题,决定自定义一个轻量级的分析分析解决方案。目标是荣耀创建一个类似《王者荣耀》风格的摇杆,包括背景、王者王摇杆头以及方向指示。源码源码以下是分析分析整个过程的概述:UI设计与搭建
首先,根据需求草图,荣耀我们使用UGUI构建了一个结构,王者王仅需四个Image组件:Touch区、源码源码背景、分析分析摇杆头和方向指示。Touch区保持透明以接收触控事件,Dir区在摇杆操作时显示方向。事件处理
借鉴NGUI的经验,利用IEventSystemHandler的OnPointerDown、OnDrag和OnPointerUp事件,定义JoystickEvent类,携带一个Vector2方向数据,以及对应的按下、移动和抬起回调函数。摇杆操作逻辑
关键在于计算摇杆的移动,即向量b(摇杆头中心)与向量a(背景中心)之间的差值,形成向量c,这模拟了摇杆操作的实际效果。注意事项
在Drag回调中,确保正确处理向量计算,确保摇杆移动的2048游戏源码准确性。总结与源码分享
这个过程虽然简单,但通过编写代码和分享,我找到了调整心态的方式。最后,我想提醒大家:坚持不易,但放弃就意味着失败。源码已上传至Git,欢迎各位Fork或Star,地址如下: ...腾讯T2I-adapter源码分析(1)-运行源码跑训练
稳定扩散、midjourney等AI绘图技术,为人们带来了令人惊叹的效果,不禁让人感叹技术发展的日新月异。然而,AI绘图的可控性一直不是很好,通过prompt描述词来操控图像很难做到随心所欲。为了使AI绘制的图像更具可控性,Controlnet、T2I-adapter等技术应运而生。本系列文章将从T2I-adapter的源码出发,分析其实现方法。
本篇是第一篇,主要介绍源码的运行方法,后续两篇将以深度图为例,分别分析推理部分和训练部分的代码。分析T2I-Adapter,也是为了继续研究我一直在研究的课题:“AI生成同一人物不同动作”,例如:罗培羽:stable-diffusion生成同一人物不同动作的尝试(多姿势图),Controlnet、T2I-adapter给了我一些灵感,后续将进行尝试。
T2I-Adapter论文地址如下,整站asp源码它与controlnet类似,都是在原模型增加一个旁路,然后对推理结果求和。
T2I-Adapter和controlnet有两个主要的不同点,从图中可见,其一是在unet的编码阶段增加参数,而controlnet主要是解码阶段;其二是controlnet复制unit的上半部结构,而T2I-Adapter使用不同的模型结构。由于采用较小的模型,因此T2I-Adapter的模型较小,默认下占用M左右,而controlnet模型一般要5G空间。
首先确保机器上装有3.6版本以上python,然后把代码clone下来。随后安装依赖项,打开requirements.txt,可以看到依赖项的内容。然后下载示例,下载的会放到examples目录下。接着下载sd模型到model目录下,再下载T2I-Adapter的模型到目录下,模型可以按需到huggingface.co/TencentA...下载。这里我下载了depth和openpose。sd模型除了上述的v1-5,也还下载了sd-v1-4.ckpt。
根据文档,尝试运行一个由深度图生成的例子,下图的左侧是深度图,提示语是"desk, best quality, extremely detailed",右侧是生成出来的。运行过程比较艰辛,方框透视源码一开始在一台8G显存的服务器上跑,显存不够;重新搭环境在一台G显存的服务器上跑,还是不够;最后用一台G显存的服务器,终于运行起来了。
接下来尝试跑openpose的例子,下图左侧是骨架图,提示词为"Iron man, high-quality, high-res",右侧是生成的图像。
既然能跑推理,那么尝试跑训练。为了后续修改代码运行,目标是准备一点点数据把训练代码跑起来,至于训练的效果不是当前关注的。程序中也有训练的脚步,我们以训练深度图条件为例,来运行train_depth.py。
显然,习惯了,会有一些问题没法直接运行,需要先做两步工作。准备训练数据,分析代码,定位到ldm/data/dataset_depth.py,反推它的数据集结构,然后准备对应数据。先创建文件datasets/laion_depth_meta_v1.txt,用于存放数据文件的地址,由于只是测试,我就只添加两行。然后准备,图中的相册系统 源码.png和.png是结果图,.depth.png和.depth.png是深度图,.txt和.txt是对应的文本描述。
文本描述如下,都只是为了把代码跑起来而做的简单设置。设置环境变量,由于T2I-Adapter使用多卡训练,显然我也没这个环境,因此要让它在单机上跑。而代码中也会获取一些环境变量,因此做简单的设置。
做好准备工作,可以运行程序了,出于硬件条件限制,只能把batch size设置为1。在A显卡跑了约8小时,完成,按默认的配置,模型保存experiments/train_depth/models/model_ad_.pth。那么,使用训练出来的模型试试效果,能生成如下(此处只是为了跑起来代码,用训练集来测试),验证了可以跑起来。
运行起来,但这还不够,我们还得看看代码是怎么写法,下一篇见。
PS:《直观理解AI博弈原理》是笔者写的一篇长文,从五子棋、象棋、围棋的AI演进讲起,从深度遍历、MAX-MIN剪枝再到蒙特卡罗树搜索,一步步介绍AI博弈的原理,而后引出强化学习方法,通俗易懂地介绍AlphaGo围棋、星际争霸强化学习AI、王者荣耀AI的一些强化学习要点,值得推荐。
AUTOMATIC的webui是近期很流行的stable-diffusion应用,它集合stable-diffusion各项常用功能,还通过扩展的形式支持controlnet、lora等技术,我们也分析了它的源码实现,写了一系列文章。
特效炸裂:Vue3+TypeScript 实现王者荣耀图鉴,已开源!!!
当您访问网站三分钟后,系统会提示您安装PWA应用,安装后,网站将作为独立的应用运行,提供更流畅的体验。
网站提供游戏素材及数据的下载压缩包,放置于Github上。下载后解压存储于内存中,这样访问时,浏览速度会显著提升。若浏览器刷新,压缩包不会重新下载,但需重新解压。
网站提供分包下载功能,便于更新。资源按照顺序依次下载,设计目的是避免同时下载多个文件,提高下载效率。
在版本更新方面,分为网站部署版本和数据版本。新版本在下载资源前会弹出更新提示。通过请求版本JSON文件获取两个版本号并与本地版本号对比,确认更新后,需刷新浏览器并写入新版本号。
用户数据加密后存储在LocalStorage中。当在个人中心退卡时,会导出召唤师卡片文件,下次登录时,凭此卡可在任何设备上登录。
英雄和皮肤的加载策略为先加载小图,用于模糊预览,大图加载完成后,替换并去除模糊效果。每张皮肤海报包含四种尺寸,以适应不同场景和需求。
英雄列表、商城和皮肤列表采用分页加载和虚拟列表技术,以适应不同屏幕尺寸。图集列表采用瀑布流布局+分页加载,且有适配功能。
列表均使用懒加载技术,仅在进入可视区域后加载,同时设有防抖机制,确保只加载在停留ms内的区域,避免加载快速略过的。
夺宝和开箱机制设定每个普通道具数量为2,稀有道具数量为1,每次夺宝和开箱时,奖池会重新打乱并随机选择。
网站中引入了3D立方体元素,通过CSS拼接六面形成,实现生动的视觉效果。同时,使用JavaScript的Element.animate帧动画技术,为用户带来跳跃动画体验。
网站部署于Github,界面演示和源码可在相应链接中查看。尽管部分页面在手机上可能显示不全,建议使用桌面浏览器访问。
å¦ä½ç¨mt管ççè è£è
å¦ä½ç¨mt管ççè è£èå ³äºMTè¿è¡ç®¡ççè¯ï¼å®é ä¸ä½ è¦æä½ä¸ä¸ªæ¹é¢ï¼æ¯è¿ä¸ªMTçä¸ä¸ªæ´ä½çä¸ä¸ªç®¡çç»æï¼ç®¡çæ¶æï¼è¿æ¯ç¬¬ä¸ä¸ªç¹ã第äºä¸ªæ¹é¢è¿è¦è¿è¡ä»ä¹è¿è¡ä¸ä¸ªæ´ä½çè¿ä¹ä¸ä¸ªæ转å¼çå®æï¼ç»ç¹çè§åï¼ä»¥åæ¯æºä»£ç çæä½å使ç¨ï¼è¿ç¬¬äºç¹ï¼ç¬¬ä¸ç¹æ¥è®²çè¯ï¼è¿è¦è¿è¡ä»ä¹å¢ï¼è¿è¡è¿ä¸ªè¿è¡æ¶é´åç»ææ¶é´ï¼é£ä¹ä»£ç æ§å¶æä½ï¼ä»¥åï¼è¿ä¸ªè¾çåçå©ç对æ¯æ åµæ¥è®²çè¯ï¼è¿ä¸ªæ¥è®²ï¼æåå¦ææ¯ä»¥ä¸æ¥è®²é½è½å®æä¹åï¼å°±å¯ä»¥ç¨MTè¿è¡ç®¡çã
Axios源码深度剖析 - AJAX新王者
Axios 是一个基于 Promise 的 HTTP 请求库,支持浏览器和 Node.js 环境。其源码在 GitHub 上开源,欢迎 fork 使用并提出指正。以下为 Axios 的核心目录结构说明,主要关注在 /lib/ 目录下的文件。
在使用 Axios 时,你可能会遇到多种调用方式,本文将带你深入了解这些方式及其原理。
首先,我们来了解一下 Axios 的基本用法。你可以使用以下几种方式发起请求:
1. `axios(option)`:提供一个配置对象进行调用。
2. `axios(url[, option])`:传入 URL 和配置对象。
3. 对于 GET、DELETE 等方法:`axios[method](url[, option])`。
4. 对于 POST、PUT 等方法:`axios[method](url[, data[, option]])`。
5. 使用默认实例:`axios.request(option)`。
通过以上方式,你可以轻松发起 HTTP 请求。
深入源码分析,你将发现 Axios 的强大之处。通过 `axios.js` 文件的入口,核心在于 `createInstance` 方法,该方法能生成一个指向 `Axios.prototype.request` 的 Function,从而实现多种调用方式。
在 Axios 的核心 `Axios` 类中,`request` 方法是所有功能的中枢,无论是 GET、POST 还是其他方法,最终都通过 `request` 方法实现。
配置项是 Axios 与用户交互的关键,它涵盖了几乎所有功能的配置。配置项从低到高优先级顺序为:默认配置对象、`defaults` 属性、`request` 方法参数。
在使用 Axios 时,配置项是如何生效的?答案在于合并多个配置源,最终得到一个综合配置对象。
此外,Axios 提供了拦截器系统,让你可以控制请求前后的数据处理。每个 Axios 实例都有 `interceptors` 属性,用于管理拦截器,让你实现精细的控制。
核心的 `dispatchRequest` 方法则负责处理请求流程,包括请求适配器、发送请求、数据转换等步骤。最后,通过 Promise,你可以优雅地处理异步请求。
数据转换器让你能轻松地在请求和响应数据之间进行转换,如将对象转换为 JSON 格式。默认情况下,Axios 自动处理 JSON 数据转换。
在使用 Axios 时,你还能灵活地控制超时、取消请求、设置 header、携带 cookie 等功能。通过源码分析,你可以深入理解 Axios 的内部机制。
总结,Axios 以其强大、灵活的功能和简洁的 API 设计,成为现代应用中不可或缺的 HTTP 请求工具。通过本文的深入探讨,你将对 Axios 的运作机制有更深刻的理解,从而更好地利用其功能。
2024-12-28 23:12
2024-12-28 23:01
2024-12-28 22:36
2024-12-28 22:35
2024-12-28 22:34
2024-12-28 21:34
2024-12-28 21:17
2024-12-28 21:15