ChatGPT+AI技术项目实战,打造多端智能虚拟数字人

woaiwodejia333 · · 1069 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
ChatGPT+AI技术项目实战,打造多端智能虚拟数字人 分享课程——ChatGPT+AI技术项目实战,打造多端智能虚拟数字人,附源码。 ChatGPT全称为Chat Generative Pre-trained Transformer,一个基于深度学习的大型语言模型,其模型结构使用了Transformer网络 。这个网络可以从输入的文本中学习语言的规律和模式,并用这些规律和模式来预测下一个单词或字符。 在chatGPT的训练过程中,chatGPT接受了海量的文本数据,这些数据包括各种来源,例如维基百科、新闻文章、小说、网页等等。这些庞大的数据集被用来形成一个模仿人脑的深度学习神经网络,在学习过程中,chatGPT试图学习这些数据中的语言规则和模式,预测文本序列中的下一个单词或字符,以提高自己的准确性。 ChatGPT整个工作的核心是“Transformer”,这是一种用于处理自然语言数据的神经网络。神经网络通过互连节点层处理信息来模拟人脑的工作方式。将神经网络想象成一个曲棍球队:每个球员都有一个角色,但他们在具有特定角色的球员之间来回传递冰球,所有人一起努力得分。 AI的算法结构,也是经过了漫长的探索与积累之后,才有了今天Transformer的质变。 第一个阶段:模式匹配,给AI输入一些列的逻辑与规则,AI根据规则来进行判断与推理。代表性有符号逻辑,联结主义等,主要应用在包括象棋和国际象棋等游戏。 第二阶段:机器学习,让计算机不需要显式的程序也可以具备学习的能力,以处理更复杂的任务。代表性的算法包括反向传播、决策树、神经网络和规则引擎等。主要应用在语音识别、图像识别和机器翻译等领域。 第三阶段:人工神经网络,随着数据量的增加和计算能力的提升,一种基于神经网络结构的机器学习算法。这个时期的经典算法包括支持向量机、朴素贝叶斯、卷积神经网络和循环神经网络等。 第四阶段:深度学习神经网络,一种模仿人脑的复杂、多层、加权算法,它能够学习文本数据中的模式和关系,并利用创建类似人类的能力。通过预测任何给定句子中接下来应该出现的文本来做出响应。 代表算法有Transformer。 打开命令行进行交互测试,请使用以下代码进行模型测试,目前使用一些小方法可实现正常对话,这里可能要多尝试几次(已经更新了cli_demo.py和web_demo.py可运行,推荐使用A100含以上的显卡) 解压启动文件到模型存放路径并启动 cd /home/aistudio/data/data203501 unzip chatglm-6b.zip cd python /home/aistudio/work/ChatGLM-6B/cli_demo.py 分析了ChatGLM模型文件的整体结构后,我对整体的模型运行逻辑进行了一个分析,后续如果有能力调整的可参考一下 models ——config.json # 模型的基本信息,包括运行时要调用的py文件和函数,模型的结构参数都放在该json ——configuration_chatglm.py # 设置模型的基本参数的py文件 ——modeling_chatglm.py # 组网程序,也是模型主程序,后续调整环境需要对这个文件进行大幅调整 ——quanitization.py # 量化程序,主要是为了调整Tensor的精度,默认是bfloat16 ——tokenization_chatglm.py # 词嵌入程序,主要是为了将语句输入转化为词嵌入向量(token)形式,之后将其送进模型进行推理 ——tokenizer_config.json # tokenizer的基本设置文件,可查看句子是通过何种方式进行向量化的 虚拟数字人(Digital Human / Meta Human),是运用数字技术创造出来的、与人类形象接近的数字化人物形象。 虚拟数字人系统一般情况下由人物形象、语音生成、动画生成、音视频合成显示、交互等5个模块构成。 3D超写实虚拟数字人制作主要核心技术: 建模设计技术:明确形象设计方向,根据平面形象,进行3D模型搭建; 动捕驱动技术:通过捕捉技术采集真人演员的动作和面部表情数据,之后将这些数据迁移合成到虚拟数字人身上; 渲染技术:将场景、人物、角色、特效已经配音进行后期合成,最后渲染成片。 现实中的机器人技术主要的难点在于能源和控制系统这两方面,原因如下: 1.能源:机器人需要稳定的能源供应来运行和执行任务。然而,为机器人提供高效、持久的能源仍然是一个挑战。机器人通常需要小型而高能量密度的能源来源,以满足其动力需求。电池技术在这方面取得了一些进展,但仍存在容量、充电速度和寿命等方面的限制。为机器人提供长时间的能源供应,特别是在远离电源的环境中,仍然是一个重要难题。 2.控制系统:机器人的控制系统涉及对机器人的感知、决策和执行能力的整合和优化。机器人需要具备高度精确的感知能力来感知和理解周围环境,并能做出适应环境变化的决策。同时,机器人还需要高精度的运动控制能力来实现准确的操作和移动。这就涉及到传感器技术、算法、运动控制和人工智能等方面的复杂问题。确保机器人能够稳定、安全地运行并完成任务需要高度可靠的控制系统,这是目前仍然具有挑战性的领域。 现如今的分布式项目,微服务项目都是通过maven来构建的聚合工程,聚合工程利于维护,利于可扩展,提高项目的可维护性。以下为顶级pom中的相关依赖,可以结合项目进行参考: <packaging>pom</packaging> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.5.RELEASE</version> <relativePath /> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <mysql-connector-java.version>5.1.41</mysql-connector-java.version> <mybatis-spring-boot-starter.version>2.1.0</mybatis-spring-boot-starter.version> <mapper-spring-boot-starter.version>2.1.5</mapper-spring-boot-starter.version> <pagehelper-spring-boot-starter.version>1.2.12</pagehelper-spring-boot-starter.version> <okhttp.version>4.2.2</okhttp.version> <jackson.version>2.10.2</jackson.version> <commons-codec.version>1.11</commons-codec.version> <commons-lang3.version>3.4</commons-lang3.version> <commons-fileupload.version>1.4</commons-fileupload.version> <google-guava.version>28.2-jre</google-guava.version> <springfox-swagger2.version>2.4.0</springfox-swagger2.version> <swagger-bootstrap-ui.version>1.6</swagger-bootstrap-ui.version> <fastdfs.version>1.27.2</fastdfs.version> <slf4j.version>1.7.21</slf4j.version> <joda-time.version>2.10.6</joda-time.version> </properties> <dependencyManagement> <dependencies> <!-- SpringCloud 依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Hoxton.SR3</version> <type>pom</type> <scope>import</scope> </dependency> <!-- 引入 mongodb 依赖 --> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver</artifactId> <!--mongodb-driver.version--> <version>3.11.1</version> </dependency> <!-- mysql 驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql-connector-java.version}</version> </dependency> <!-- mybatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>${mybatis-spring-boot-starter.version}</version> </dependency> <!-- 通用mapper逆向工具 --> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> <version>${mapper-spring-boot-starter.version}</version> </dependency> <!--pagehelper --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>${pagehelper-spring-boot-starter.version}</version> </dependency> <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>${okhttp.version}</version> </dependency> <!-- jackson --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson.version}</version> </dependency> <!-- apache 工具类 --> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>${commons-codec.version}</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>${commons-lang3.version}</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>${commons-fileupload.version}</version> </dependency> <!-- google 工具类 --> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>${google-guava.version}</version> </dependency> <!-- swagger2 配置 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>${springfox-swagger2.version}</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>${springfox-swagger2.version}</version> </dependency> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>swagger-bootstrap-ui</artifactId> <version>${swagger-bootstrap-ui.version}</version> </dependency> <dependency> <groupId>com.github.tobato</groupId> <artifactId>fastdfs-client</artifactId> <version>${fastdfs.version}</version> </dependency> <!-- joda-time 时间工具 --> <dependency> <groupId>joda-time</groupId> <artifactId>joda-time</artifactId> <version>${joda-time.version}</version> </dependency> </dependencies> </dependencyManagement> <build> <finalName>${project.artifactId}</finalName> <plugins> <!-- Java 编译 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build> ![QQ截图20231130142737.png](http://static.itsharecircle.com/231130/d3e0103e3567122c20bc35e510c1cb01.png)
1069 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传