优达学城 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 …...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...
