优达学城 Generative AI 课程3:Computer Vision and Generative AI
文章目录
- 1 官方课程内容自述
- 第 1 课:图像生成简介
- 第 2 课:计算机视觉基础
- 第 3 课:图像生成与生成对抗网络(GANs)
- 第 4 课:基于 Transformer 的计算机视觉模型
- 第 5 课:扩散模型
- 第 6 课(项目):使用补全技术进行 AI 照片编辑
- 2 练习
- 2.1 Introduction to Image Generation
- 1 Face Recognition with Eigenfaces and DLIB.ipynb
- 2 Generative Adversarial Network: training.ipynb
- 3 Using a State-Of-The-Art (SOTA) GANs.ipynb
- 2.2 Transformer-Based Computer Vision Models
- Image Segmentation with SAM (Segment Anything Model).ipynb
- 2.3 Diffusion Models
- 1 build-a-DDPM.ipynb(重点)
- 2 Diffusion models and the diffusers library from hugginface.ipynb
- 3 项目:基于SAM和stable diffusion对图像进行背景替换
1 官方课程内容自述
学习计算机如何处理和理解图像数据,并利用最新的生成式人工智能模型创造新图像的能力。
第 1 课:图像生成简介
在本课中,您将定义图像生成,并理解其在人工智能和机器学习中的相关性。
第 2 课:计算机视觉基础
了解计算机如何“看”图像,并使用经典的图像处理技术,如图像转换、降噪等,执行关键的图像处理任务。
第 3 课:图像生成与生成对抗网络(GANs)
探索计算机视觉领域中的生成式人工智能工具,学习它们如何被评估。了解什么是生成对抗网络(GANs)及其生成图像的方式。
第 4 课:基于 Transformer 的计算机视觉模型
在本课中,我们将探索 Vision Transformers 模型及其工作原理。我们还将研究 DALL-E、DINO 和 SAM 等视觉 Transformers 模型。
第 5 课:扩散模型
学习 Transformer 的基本原理。然后,通过创建扩散算法,并使用 Huggingface Diffusers 生成和处理图像。
第 6 课(项目):使用补全技术进行 AI 照片编辑
在本项目中,您将利用生成式人工智能处理一幅著名画作,替换背景,并与 Stable Diffusion 生成的图像结合进行编辑。
2 练习
2.1 Introduction to Image Generation
1 Face Recognition with Eigenfaces and DLIB.ipynb
内容总结:一个人脸识别项目,评估基于传统视觉的Eigenfaces人脸识别方法与基于深度学习的DLIB库人脸识别方法。人脸数据集是Labeled Faces in the Wild (LFW),13,233 images of 5,749 people。本项目只用1183 images of 22 people这么点人来测试。
Eigenfaces and DLIB 简介:
Eigenfaces: 一种基于主成分分析(PCA)的经典人脸识别方法。通过提取训练集中人脸图像的主要特征,将人脸表示为线性组合的特征脸,用于识别和分类。
DLIB: 一种基于深度学习的人脸识别库。DLIB 提供了预训练模型,可用于检测人脸特征点并提取人脸的 128 维特征嵌入向量,通过比较这些向量的距离进行人脸匹配和识别。
最终结果:Eigenfaces方法精度0.46,DLIB库精度:0.98。
2 Generative Adversarial Network: training.ipynb
内容总结:完整实现一个GAN网络。数据集是CIFAR-10 数据集中的汽车类别,网络结构就是简单的卷积和转置卷积。数据增强和训练技巧用到:颜色变换、平移变换、随机遮挡、随机翻转、label smoothing、DiffAugment。
3 Using a State-Of-The-Art (SOTA) GANs.ipynb
内容总结:下载基于GAN方法的SOTA级生成模型StyleGAN-3,直接使用预训练模型体验一下生成的图像的效果。
2.2 Transformer-Based Computer Vision Models
Image Segmentation with SAM (Segment Anything Model).ipynb
内容总结:调用SAM的预训练模型,学会使用并体验其语义分割功能。
2.3 Diffusion Models
1 build-a-DDPM.ipynb(重点)
内容总结:从零实现2020年经典的DDPM算法,包括训练、生成、可视化。感觉质量非常高,在学习10423课程时,我就用的这个代码练习。
2 Diffusion models and the diffusers library from hugginface.ipynb
内容总结:本代码主要是调用(自动下载预训练模型)hugginface中一些开源生成式模型,展示各种功能和效果,具体展示了如下一些应用:
-
Unconditional generation 无条件生成:调用google/ddpm-celebahq-256模型,输入一个随机噪音图,生成一个人脸图。
a.
-
Text-to-image 文本生成图像:调用stabilityai/sdxl-turbo模型,输入一个文本提示,生成一张高清图像。
a.
-
Image-to-image 图像生成图像:输入一张简练的图像+文本提示,生成一张复杂的图像。
a.
-
Inpainting 图像修补:提供一张原图+mask区域图+文本提示,生成一张新图。
a.
-
视频生成:基于文本提示,直接生成视频。基于一张图片,生成一张该图片的动态视频。
a.
3 项目:基于SAM和stable diffusion对图像进行背景替换
AI-Photo-Editing-with-Inpainting.ipynb
内容概述:虽说是个大项目,但内容不多,跟上个练习大差不差,就是调用hugginface相关库中SAM模型(facebook/sam-vit-base)、stable diffusion模型(diffusers/stable-diffusion-xl-1.0-inpainting-0.1),实现Inpainting 图像修补。流程大概如下:
- 找一张汽车图像
- 用SAM预训练模型把图像中的汽车和背景分割出来。
- 然后把汽车、背景的掩码图、生成新背景的提示词,一起输给stable diffusion预训练模型,从而生成一张新图。效果如下:
a.
b. 提示词:
i. prompt = “a car driving on Mars. Studio lights, 1970s” # 定义正面提示词,描述图像生成的场景为“火星上行驶的汽车,带有摄影棚灯光,70年代风格”
ii. negative_prompt = “artifacts, low quality, distortion” # 定义负面提示词,排除图像中的“失真、低质量或杂乱无章的元素”
相关文章:
优达学城 Generative AI 课程3:Computer Vision and Generative AI
文章目录 1 官方课程内容自述第 1 课:图像生成简介第 2 课:计算机视觉基础第 3 课:图像生成与生成对抗网络(GANs)第 4 课:基于 Transformer 的计算机视觉模型第 5 课:扩散模型第 6 课࿰…...
UE5 C++ 通过绑定编辑器事件实现控制柄顶点编辑
开发中经常会遇到编辑器环境中制作工具拖拽控制柄编辑内容的需求,此时可以通过Editor事件拿到对应回调,进行相应更新: 1.创建Mesh编辑Actor类 创建一个Mesh编辑Actor类,提供Mesh顶点编辑的相关逻辑。 .h: #pragma once#inclu…...
云计算ftp 服务器实验
创建VLAN 10 划分端口 创建VLAN 10 的地址 10.1.1.1 服务器的地址是 10.1.1.2 这是服务上的配置 服务器上选择ftp 启动 ,文件目录选择一下 在 交换机上 ftp 10.1.1.2 服务器的地址 把刚才创建的shenyq txt 文件下载下到本地交换机 我们能看到交换…...
node.js服务器基础
node.js的事件循环 node.js是基于事件驱动的,通常在代码中注册想要等待的事件,设定好回调函数,当事件触发的时候就会调用回调函数。如果node.js没有要处理的事件了,那整个就结束了;事件里面可以继续插入事件,如果有事…...
2-SAT 问题详解:逻辑约束与图论的结合
2-SAT 问题详解:逻辑约束与图论的结合 2-SAT(Two Satisfiability Problem)是布尔可满足性问题(SAT)的特殊形式,它解决的是含有二元子句的布尔表达式的可满足性问题。2-SAT 问题常用于分析系统中的逻辑约束…...
使用NetTopologySuite读写gpkg文件
直接上代码: 优势是什么?纯C#开发,不存在兼容和字符问题。 using NetTopologySuite; using NetTopologySuite.Features; using NetTopologySuite.Geometries; using CdIts.NetTopologySuite.IO; using CdIts.NetTopologySuite.IO.GeoPackag…...
什么是http?列出常见方法并解他们?
HTTP 方法是客户端(通常是浏览器)用来向服务器表明其意图的方式。常见的 HTTP 方法有以下几种: 一、GET 解释:用于请求指定的资源。它是最常见的 HTTP 方法之一。GET 方法应该只用于获取数据,而不应该有任何副作用。例…...
通过修改注册表来提高导出图像的分辨率(PPT尝试)
通过修改注册表来提高 PowerPoint 导出图片的分辨率,可以导致导出的图片尺寸大于您期望的 1920 x 1080 像素。例如,将 ExportBitmapResolution 设置为 300 DPI,可能会导致输出图像的尺寸变得非常大,比如 10240 x 5760 像素。这是因…...
OpenCV 环境配置
首先下载opencv,在opencv官网进行下载。 按照上面的步骤,点击进去 滑至底部,不切换至不同页,选择合适的版本进行下载(Window系统选择Windows版本进行下载)。 接下来以4.1.2版本为例: 点击之后会进入这个页面ÿ…...
使用通义千问模拟ChatGPT-o1进行思考,并以类似于ChatGPT-o1的形式输出
prompt 你是ChatGPT O1,旨在通过第一性原理思维和基于证据的推理来解决用户问题。你的目标是提供清晰、循序渐进的解决方案、基础概念,并从头开始构建答案。 ### 指导原则: 以下是为大模型采用这种方法而设计的系统提示: 1. 理解…...
维生素对于生活的重要性
在探索健康奥秘的旅途中,维生素作为人体不可或缺的微量营养素,扮演着至关重要的角色。它们虽不直接提供能量,却是酶促反应、细胞代谢、免疫功能乃至心理健康的基石。今天,让我们一同深入探讨人体所需补充的维生素,这些…...
STM32学习--4-1 OLED显示屏
接线图 OLED.c #include "stm32f10x.h" #include "OLED_Font.h"/*引脚配置*/ #define OLED_W_SCL(x) GPIO_WriteBit(GPIOB, GPIO_Pin_8, (BitAction)(x)) #define OLED_W_SDA(x) GPIO_WriteBit(GPIOB, GPIO_Pin_9, (BitAction)(x))/*引脚初始化*/ void …...
原生 App 上架 Mac App Store 过程总结
随着 macOS 系统的普及,越来越多的开发者希望将他们的原生应用程序发布到 Mac App Store,以便触达更广泛的用户群体。在这篇文章中,我们将详细总结原生 App 上架 Mac App Store 的整个过程,包括必要的准备工作、开发流程、测试、申…...
[实时计算flink]双流JOIN语句
Flink SQL支持对动态表进行复杂而灵活的连接操作,本文为您介绍如何使用双流JOIN语句。 背景信息 实时计算的JOIN和传统批处理JOIN的语义一致,都用于将两张表关联起来。区别为实时计算关联的是两张动态表,关联的结果也会动态更新,…...
metahuman如何导入UE5
1.启动 通过EPIC启动UE5(UE5内置有Bridge, 但是UE4是需要单独下在Bridge软件) 2.打开Quixel Bridge 在window(窗口)中打开Quixel Bridge 3.Bridge界面 在弹出的Bridge界面选择模型 需要先下载,然后再导入 4.下载模型 点击需要的模型右上方的绿色箭头下载 5.下…...
Python知识点:基于Python技术,如何使用TensorFlow进行自动驾驶模型训练
开篇,先说一个好消息,截止到2025年1月1日前,翻到文末找到我,赠送定制版的开题报告和任务书,先到先得!过期不候! 使用TensorFlow进行自动驾驶模型训练的Python技术详解 自动驾驶技术是人工智能领…...
Django的请求与响应
Django的请求与响应 1、常见的请求2、常见的响应3、案例 1、常见的请求 函数的参数request是一个对象,封装了用户发送过来的所有请求相关数据。 get请求一般用来请求获取数据,get请求也可以传参到后台,但是传递的参数显示在地址栏。 post请求…...
[java]Iterable<Integer> 和Iterator<Integer>的区别和用法
Iterable<Integer> 和 Iterator<Integer> 在 Java 中都是用于处理集合数据的重要接口,但它们的角色和用途有所不同。以下是它们之间的主要区别: 1. 接口角色 Iterable<T>:这是一个接口,它定义了如何获取一个…...
JavaScript进行数据可视化:D3.js入门
在数据驱动的世界中,数据可视化是理解和传达数据信息的重要手段。D3.js是一个强大的JavaScript库,它允许开发者将数据转换为可交互的图形和图表。本文将为您介绍D3.js的基本概念、特点以及如何入门使用它进行数据可视化。 D3.js简介 什么是D3.js&#…...
字符串拼接方法性能对比和分析
对字符串进行拼接主要有三种方法: 1.加号 2.concat方法 3.StringBuilder或者StringBuffer的append方法 下面看下性能对比,测试方法为各循环十万次,对比耗费时间。 测试性能 1.”"拼接 long start System.currentTimeMillis();String …...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
