优达学城 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搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...

P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...

SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...