-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
256 lines (234 loc) · 41.4 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
<!DOCTYPE html><html lang="zh-CN" data-theme="light"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"><title>南极Python - Python|机器学习|深度学习</title><meta name="keywords" content="Python|机器学习|深度学习|生活感悟"><meta name="author" content="雨落诗山山亦奇"><meta name="copyright" content="雨落诗山山亦奇"><meta name="format-detection" content="telephone=no"><meta name="theme-color" content="#ffffff"><meta name="description" content="本站为读研版&工作版博客,大学版移步 --> fuhanshi.github.io">
<meta property="og:type" content="website">
<meta property="og:title" content="南极Python">
<meta property="og:url" content="http://yoursite.com/index.html">
<meta property="og:site_name" content="南极Python">
<meta property="og:description" content="本站为读研版&工作版博客,大学版移步 --> fuhanshi.github.io">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="https://www.cdnjson.com/images/2021/11/27/_20210211193948.png">
<meta property="article:author" content="雨落诗山山亦奇">
<meta property="article:tag" content="Python|机器学习|深度学习|生活感悟">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://www.cdnjson.com/images/2021/11/27/_20210211193948.png"><link rel="shortcut icon" href="https://www.cdnjson.com/images/2021/11/27/_20210211193948.png"><link rel="canonical" href="http://yoursite.com/"><link rel="preconnect" href="//cdn.jsdelivr.net"/><link rel="preconnect" href="//busuanzi.ibruce.info"/><link rel="stylesheet" href="/css/index.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free/css/all.min.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.css" media="print" onload="this.media='all'"><script>const GLOBAL_CONFIG = {
root: '/',
algolia: undefined,
localSearch: undefined,
translate: undefined,
noticeOutdate: undefined,
highlight: {"plugin":"highlighjs","highlightCopy":true,"highlightLang":true,"highlightHeightLimit":false},
copy: {
success: '复制成功',
error: '复制错误',
noSupport: '浏览器不支持'
},
relativeDate: {
homepage: false,
post: false
},
runtime: '',
date_suffix: {
just: '刚刚',
min: '分钟前',
hour: '小时前',
day: '天前',
month: '个月前'
},
copyright: undefined,
lightbox: 'fancybox',
Snackbar: undefined,
source: {
justifiedGallery: {
js: 'https://cdn.jsdelivr.net/npm/flickr-justified-gallery@2/dist/fjGallery.min.js',
css: 'https://cdn.jsdelivr.net/npm/flickr-justified-gallery@2/dist/fjGallery.min.css'
}
},
isPhotoFigcaption: false,
islazyload: false,
isAnchor: false
}</script><script id="config-diff">var GLOBAL_CONFIG_SITE = {
title: '南极Python',
isPost: false,
isHome: true,
isHighlightShrink: false,
isToc: false,
postUpdate: '2024-06-01 18:33:26'
}</script><noscript><style type="text/css">
#nav {
opacity: 1
}
.justified-gallery img {
opacity: 1
}
#recent-posts time,
#post-meta time {
display: inline !important
}
</style></noscript><script>(win=>{
win.saveToLocal = {
set: function setWithExpiry(key, value, ttl) {
if (ttl === 0) return
const now = new Date()
const expiryDay = ttl * 86400000
const item = {
value: value,
expiry: now.getTime() + expiryDay,
}
localStorage.setItem(key, JSON.stringify(item))
},
get: function getWithExpiry(key) {
const itemStr = localStorage.getItem(key)
if (!itemStr) {
return undefined
}
const item = JSON.parse(itemStr)
const now = new Date()
if (now.getTime() > item.expiry) {
localStorage.removeItem(key)
return undefined
}
return item.value
}
}
win.getScript = url => new Promise((resolve, reject) => {
const script = document.createElement('script')
script.src = url
script.async = true
script.onerror = reject
script.onload = script.onreadystatechange = function() {
const loadState = this.readyState
if (loadState && loadState !== 'loaded' && loadState !== 'complete') return
script.onload = script.onreadystatechange = null
resolve()
}
document.head.appendChild(script)
})
win.activateDarkMode = function () {
document.documentElement.setAttribute('data-theme', 'dark')
if (document.querySelector('meta[name="theme-color"]') !== null) {
document.querySelector('meta[name="theme-color"]').setAttribute('content', '#0d0d0d')
}
}
win.activateLightMode = function () {
document.documentElement.setAttribute('data-theme', 'light')
if (document.querySelector('meta[name="theme-color"]') !== null) {
document.querySelector('meta[name="theme-color"]').setAttribute('content', '#ffffff')
}
}
const t = saveToLocal.get('theme')
if (t === 'dark') activateDarkMode()
else if (t === 'light') activateLightMode()
const asideStatus = saveToLocal.get('aside-status')
if (asideStatus !== undefined) {
if (asideStatus === 'hide') {
document.documentElement.classList.add('hide-aside')
} else {
document.documentElement.classList.remove('hide-aside')
}
}
const detectApple = () => {
if(/iPad|iPhone|iPod|Macintosh/.test(navigator.userAgent)){
document.documentElement.classList.add('apple')
}
}
detectApple()
})(window)</script><link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/sviptzk/StaticFile_HEXO@latest/butterfly/css/macblack.css"><meta name="generator" content="Hexo 5.4.0"></head><body><div id="sidebar"><div id="menu-mask"></div><div id="sidebar-menus"><div class="avatar-img is-center"><img src="https://www.cdnjson.com/images/2021/11/27/_20210211193948.png" onerror="onerror=null;src='/img/friend_404.gif'" alt="avatar"/></div><div class="site-data is-center"><div class="data-item"><a href="/archives/"><div class="headline">文章</div><div class="length-num">159</div></a></div><div class="data-item"><a href="/tags/"><div class="headline">标签</div><div class="length-num">11</div></a></div><div class="data-item"><a href="/categories/"><div class="headline">分类</div><div class="length-num">8</div></a></div></div><hr/></div></div><div class="page" id="body-wrap"><header class="full_page" id="page-header" style="background-image: url('/img/tag1.jpg')"><nav id="nav"><span id="blog_name"><a id="site-name" href="/">南极Python</a></span><div id="menus"><div id="toggle-menu"><a class="site-page"><i class="fas fa-bars fa-fw"></i></a></div></div></nav><div id="site-info"><h1 id="site-title">南极Python</h1><div id="site-subtitle"><span id="subtitle"></span></div></div><div id="scroll-down"><i class="fas fa-angle-down scroll-down-effects"></i></div></header><main class="layout" id="content-inner"><div class="recent-posts" id="recent-posts"><div class="recent-post-item"><div class="post_cover left"><a href="/2024/06/01/Transformer%E7%9A%84Decoder%E5%9C%A8%E8%AE%AD%E7%BB%83%E5%92%8C%E6%8E%A8%E7%90%86%E9%98%B6%E6%AE%B5%E7%9A%84%E5%BC%82%E5%90%8C%E7%82%B9%E6%80%BB%E7%BB%93/" title="Transformer的Decoder在训练和推理阶段的异同点总结"><img class="post_bg" src="https://s21.ax1x.com/2024/06/01/pk8xi1x.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Transformer的Decoder在训练和推理阶段的异同点总结"></a></div><div class="recent-post-info"><a class="article-title" href="/2024/06/01/Transformer%E7%9A%84Decoder%E5%9C%A8%E8%AE%AD%E7%BB%83%E5%92%8C%E6%8E%A8%E7%90%86%E9%98%B6%E6%AE%B5%E7%9A%84%E5%BC%82%E5%90%8C%E7%82%B9%E6%80%BB%E7%BB%93/" title="Transformer的Decoder在训练和推理阶段的异同点总结">Transformer的Decoder在训练和推理阶段的异同点总结</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2024-06-01T07:15:20.000Z" title="发表于 2024-06-01 15:15:20">2024-06-01</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/">深度学习笔记</a></span></div><div class="content">在训练阶段,decoder的输入是(seq_length,)的目标序列,也就是训练数据集中的GT,经过OutputEmbedding层和PositionalEmbedding层得到(seq_length,model_dim)的序列。
接下来这个序列会经过一个MHA层,对应的q、k和v都是刚才得到的序列本身,此时如果直接计算注意力,那么序列中每一个词既能看到它前面的词的信息,又能看到它后面的词的信息,这样容易导致模型就不学习了,因为在推理阶段,模型是一个词一个词的采用一种自回归方式进行预测的,如果训练时模型已经看到了其所在序列位置后面的词的信息,那么直接读取这些词就好了,无需学习。
因此,需要对q和k计算得到的attention map添加一个mask操作,以保证序列中的每一个词只能看到位于其前面的词的信息。
在走完第一个MHA层之后,还有第二个MHA层,只不过,这里的k和v来自encoder的输出,q来自decoder刚刚上一个MHA层的输出,而计算attention map是q和k的事,k又是一个全局的encoder的输出,q序列的每一个位置的token都可以访问它,不需要担心未来 ...</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/2024/05/04/Python-Flask%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B/" title="Python-Flask快速上手"><img class="post_bg" src="https://s21.ax1x.com/2024/05/04/pkAljWq.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Python-Flask快速上手"></a></div><div class="recent-post-info"><a class="article-title" href="/2024/05/04/Python-Flask%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B/" title="Python-Flask快速上手">Python-Flask快速上手</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2024-05-04T09:27:57.000Z" title="发表于 2024-05-04 17:27:57">2024-05-04</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/%E7%A5%9E%E5%A5%87%E7%9A%84Python/">神奇的Python</a></span></div><div class="content">在训练好深度学习模型后,可以使用Python的Flask框架快速搭建一个服务,用于模型效果的展示
最近遇到了这个需求,于是在网络上找到了一些资料(主要参考了台大-彭老师的视频),对Flask的基础内容进行了整理总结成此文
下面正文开始
1. URL的组成与运作方式组成通讯协议://主机名称:端口号/路径?要求字串
比如:
https://www.google.com/search?q=test
其中的“要求字串”允许省略,上述例子中的“端口号”省略不写,实际上使用的是默认值
通讯协议:通过后端以及网络环境决定使用http或https
主机名称:购买域名,设定dns记录,应用AWS云端服务决定主机名称
端口号:通过后端程序或设定档决定
路径:通过后端程序或设定档决定
要求字串:通过后端程序决定运作方式浏览器前端根据通讯协议,主机名称、端口号连接到网络上的服务器,服务器根据路径,要求字串决定要采取的动作,并回传给前端
2. 路由基础基本路由决定后端程序要支援的路径
比如
123@app.route("/data"):def getData(): return ...</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/2024/01/07/%E5%9B%BE%E5%83%8F%E9%85%8D%E5%87%86/" title="图像配准小结"><img class="post_bg" src="https://s21.ax1x.com/2024/04/22/pk9mOqf.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="图像配准小结"></a></div><div class="recent-post-info"><a class="article-title" href="/2024/01/07/%E5%9B%BE%E5%83%8F%E9%85%8D%E5%87%86/" title="图像配准小结">图像配准小结</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2024-01-07T11:18:38.000Z" title="发表于 2024-01-07 19:18:38">2024-01-07</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/">深度学习笔记</a></span></div><div class="content">更好的阅读体验,请移步微信公众号:
https://mp.weixin.qq.com/s?__biz=MzU0NzQwMzU1Mw==&mid=2247488765&idx=1&sn=0e7010528fad44ea9fb8cf11493e99da&chksm=fb4fb6b3cc383fa56479dae2e495e80237295356fdd53f16b412d223051bab09e91b394a369f&token=654252831&lang=zh_CN#rd
前置基础:三种图像变换刚体变换刚体变换包括平移和旋转操作,而不会产生形变。
假设某个像素点坐标为$(x,y)$,将其分别在x和y方向上平移了$t_x$和$t_y$,并且绕原点逆时针旋转了$\theta$度,变换后的像素点坐标记作$(x’,y’)$,对应的刚体变换可以用矩阵表示如下:$$p’=M p$$
其中,[p=\begin{bmatrix} x \ y \ 1\end{bmatrix}]
[p’=\begin{bmatrix} x’ \ ...</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/2023/10/25/SAM%E9%AA%A8%E5%B9%B2%E8%BF%81%E7%A7%BB/" title="将SAM编码器迁移到自定义分割子任务中"><img class="post_bg" src="https://s21.ax1x.com/2024/04/22/pk9myG9.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="将SAM编码器迁移到自定义分割子任务中"></a></div><div class="recent-post-info"><a class="article-title" href="/2023/10/25/SAM%E9%AA%A8%E5%B9%B2%E8%BF%81%E7%A7%BB/" title="将SAM编码器迁移到自定义分割子任务中">将SAM编码器迁移到自定义分割子任务中</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2023-10-25T11:18:38.000Z" title="发表于 2023-10-25 19:18:38">2023-10-25</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/">深度学习笔记</a></span></div><div class="content">Segment Anything Model(SAM)是META在今年发布的通用分割大模型。
鉴于ChatGPT可以将自然语言等形式的信息作为提示(prompt)输入到模型中,SAM将这一思想应用到了计算机视觉领域的语义分割任务中。
具体来说,在以前的语义分割方法中,网络的输入通常是待分割的图像,因而网络通常是一个由图像编码器和图像解码器组成的Encoder-Decoder架构,而在SAM中,多了一个提示编码器,可以将额外的提示信息也输入到网络中,同时依托强大的数据引擎生成大量数据集进行训练,使得网络能够对任一图像中可能的目标进行分割。
既然SAM是在海量数据上训练得到的,那么根据以往的迁移学习思路,我们可以将其预训练权重迁移到自己的任务中。
首先看一下SAM的网络结构:
其中:
image encoder: 一个图像编码器,用于提取输入图像的特征,SAM中使用的是ViT;
prompt encoder: 一个提示编码器,用于将输入的提示信息进行编码,这里的提示有多种形式,可以是文字(text),可以是边界框(boxes),可以是点(points),还可以是masks,当然也可以同 ...</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/2023/09/27/ViT%E9%A2%84%E8%AE%AD%E7%BB%83%E6%9D%83%E9%87%8D%E8%BF%81%E7%A7%BB-%E5%AE%9E%E7%8E%B0%E4%BB%BB%E6%84%8F%E5%B0%BA%E5%AF%B8%E8%BE%93%E5%85%A5/" title="ViT预训练权重迁移-实现任意尺寸输入"><img class="post_bg" src="https://z3.ax1x.com/2021/04/10/cajxDs.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="ViT预训练权重迁移-实现任意尺寸输入"></a></div><div class="recent-post-info"><a class="article-title" href="/2023/09/27/ViT%E9%A2%84%E8%AE%AD%E7%BB%83%E6%9D%83%E9%87%8D%E8%BF%81%E7%A7%BB-%E5%AE%9E%E7%8E%B0%E4%BB%BB%E6%84%8F%E5%B0%BA%E5%AF%B8%E8%BE%93%E5%85%A5/" title="ViT预训练权重迁移-实现任意尺寸输入">ViT预训练权重迁移-实现任意尺寸输入</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2023-09-27T11:18:38.000Z" title="发表于 2023-09-27 19:18:38">2023-09-27</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/">深度学习笔记</a></span></div><div class="content">在将基于transformer的视觉模型(比如 ViT, Swin Transformer等)迁移到自己的数据集上进行微调时,往往需要使得自己的数据集中图像尺寸和这些模型的输入图像尺寸一致,这些模型常见的输入尺寸为224x224,284x284,768x768等。
然而,如果自己的数据集中图像尺寸比较大,比如1024x1024,直接resize为224x224等低分辨率图像会造成信息损失。
能不能在迁移预训练权重的同时,使得模型能够适应任意尺寸的输入呢?可以。
接下来以ViT为例,首先通过实验探究一下出现这种限制的原因,然后给出解决方案。
ViT模型定义如下:
12345678model=VisionTransformer( image_size=[224,224],# 预训练模型的输入图像尺寸 patch_size=16, n_layers=1, d_model=768,# token 维度 d_ff=2, n_heads=8, n_cls=99,).cuda()
假设这个ViT已经在大规模数据集上完成了训练,并且训练时的输入图像尺寸为224 ...</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/2023/09/02/%E5%A6%82%E4%BD%95%E5%B0%86PyTorch%E6%9D%83%E9%87%8D%E8%BD%AC%E6%8D%A2%E6%88%90TensorRT%E7%9A%84engine/" title="如何将PyTorch权重转换成TensorRT的engine"><img class="post_bg" src="https://s21.ax1x.com/2024/04/22/pk9nSiQ.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="如何将PyTorch权重转换成TensorRT的engine"></a></div><div class="recent-post-info"><a class="article-title" href="/2023/09/02/%E5%A6%82%E4%BD%95%E5%B0%86PyTorch%E6%9D%83%E9%87%8D%E8%BD%AC%E6%8D%A2%E6%88%90TensorRT%E7%9A%84engine/" title="如何将PyTorch权重转换成TensorRT的engine">如何将PyTorch权重转换成TensorRT的engine</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2023-09-02T11:18:38.000Z" title="发表于 2023-09-02 19:18:38">2023-09-02</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/">深度学习笔记</a></span></div><div class="content">假设你已经训练好了一个基于PyTorch的神经网络模型MyModel,本文将一步一步演示如何将其转换到TensorRT的engine格式,实现高性能模型推理。
代码复制可用,建议收藏~
1. 加载模型权重直接加载训练好的PyTorch权重即可:
12model=MyModel(in_channel=3,out_channel=1)model.load_state_dict(torch.load('my_model.pth'))
2. PyTorch权重转换到ONNXPyTorch本身已经提供了转换接口torch.onnx.export,所以转换起来也很容易:
12345model.cuda()model.eval()dummy_input = torch.randn(1,3, 512,512).cuda()torch.onnx.export(model, dummy_input, "onnx.onnx", opset_version=11,input_names = ['input'],output_names = [&#x ...</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/2023/05/09/%E6%89%A9%E6%95%A3/" title="AI绘画的基石-DDPM"><img class="post_bg" src="https://s21.ax1x.com/2024/04/22/pk9mBaF.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="AI绘画的基石-DDPM"></a></div><div class="recent-post-info"><a class="article-title" href="/2023/05/09/%E6%89%A9%E6%95%A3/" title="AI绘画的基石-DDPM">AI绘画的基石-DDPM</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2023-05-09T11:18:38.000Z" title="发表于 2023-05-09 19:18:38">2023-05-09</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/">深度学习笔记</a></span></div><div class="content">在AI绘画发展历程中,涌现了多种不同的生成模型和算法,其中DDPM(Denoising Diffusion Probabilistic Model)是一种比较有效的图像生成模型之一,也是最近比较热门的AI绘画模型所采用的技术。DDPM的设计巧妙,可以从高斯噪声中生成高逼真度的图像。
DDPM相对于当前诸如stable difussion等AI绘画模型来说,扮演着类似于GAN相对于StyleGAN等模型的角色
因此,DDPM并不是特指某个网络结构,而是一种通用的训练思路
这几天结合着Hung-yi Lee的视频对DDPM的优化目标推导过程进行了梳理,在此记录下,以下是正文内容。
最大化似然函数可以等价于最小化KL散度,因此在生成模型(VAE, DM, Flow)中,目标函数通常使用最大似然函数
VAE的目标是最大化$logP_\theta{(x)}$,而$logP_\theta{(x)}$有下界,所以上述目标等价于最大化这个下界。
下界推导:
在VAE中,$q(z|x)$对应Encoder,也就是在给定输入的训练集x的情况下,得到一个隐向量z。
DDPM要优化的目标函数和VAE是类似的 ...</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/2023/04/20/%E7%9B%AE%E6%A0%87%E6%A3%80%E6%B5%8B/" title="经典目标检测"><img class="post_bg" src="https://s21.ax1x.com/2024/04/22/pk9nFs0.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="经典目标检测"></a></div><div class="recent-post-info"><a class="article-title" href="/2023/04/20/%E7%9B%AE%E6%A0%87%E6%A3%80%E6%B5%8B/" title="经典目标检测">经典目标检测</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2023-04-20T11:18:38.000Z" title="发表于 2023-04-20 19:18:38">2023-04-20</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/">深度学习笔记</a></span></div><div class="content">RCNN首先,使用Selective Search算法,从图片中裁出来N个小区域图像
然后将者N个小区域图像分别使用CNN提取得到D维的特征向量。至此得到了NxD的矩阵,该矩阵包含每个小区域对应的D维特征向量
接着,将NxD的矩阵分别使用k个SVM分类器(Dxk)进行分类,得到Nxk的矩阵,即每个小区域图像的分类结果(k个类别,取概率最大的作为预测类别)。在得到每个小区域图像的预测类别后,可能存在同一个目标被多个小区域图片同时预测到的情况,因此还需要针对每个类别对应的小区域图像做一个NMS后处理。
最后,对于NMS后保留下来M(M<=N)个的小区域图像,先按照这些建议框(小区域图像)与GT之间的IoU做一个过滤,保留IoU大于阈值的建议框,然后将每个建议框对应的D维特征向量输入回归器,得到修正后的建议框位置。这里,和分类器个数一样,总共设置了k个回归器,各自负责不同类别(上一步预测得到的类别)的建议框位置修正。
RCNN存在的问题:
测试速度慢(SS算法提取候选框很慢)
训练速度慢(CNN,SVM分类器,回归器)
训练所需空间大(需要将目标框的小区域提取特征并写入磁盘)
Fa ...</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/2023/02/18/chatGPT%E6%98%AF%E6%80%8E%E6%A0%B7%E7%82%BC%E6%88%90%E7%9A%84/" title="chatGPT是怎样炼成的"><img class="post_bg" src="https://s21.ax1x.com/2024/04/22/pk9mqMt.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="chatGPT是怎样炼成的"></a></div><div class="recent-post-info"><a class="article-title" href="/2023/02/18/chatGPT%E6%98%AF%E6%80%8E%E6%A0%B7%E7%82%BC%E6%88%90%E7%9A%84/" title="chatGPT是怎样炼成的">chatGPT是怎样炼成的</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2023-02-18T11:18:38.000Z" title="发表于 2023-02-18 19:18:38">2023-02-18</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/">深度学习笔记</a></span></div><div class="content">chatGPT会写作业,写代码,写文案,写提示词喂给AI绘画模型来作画,各种各样的玩法,使得chatGPT成为了一个”得力助手”,微软也在自家的搜索引擎Bing中引入了chatGPT,大有要引领搜索引擎新未来的趋势,chatGPT(或者类似的模型)正逐步走向大众视野。
在体验过chatGPT后,可以明显感觉到,对方不再像是各大手机厂商的智能语音助手,而是一个可以结合对话上下文语境实现真正连续对话的”机器人”。
是什么使得chatGPT脱颖而出呢?
这还要从许多年前讲起。
chatGPT的前身是GPT模型,GPT的全称是Generative Pre-trained Transformer,这是一种生成模型,采用自回归的方式来不断的生成新的内容:
$$P_{\theta}(x_{t+1}|x_1,x_2,…,x_{t})$$
将上式中的$x$看作是模型生成的字,那么$x_i$就表示模型生成的第$i$个字,在生成第$t+1$个字时,模型需要将${x_i}^{t}_{i=1}$作为输入。
可以看到,在模型的一次预测中,后面文字的生成依赖于之前生成的内容,chatGPT也继承了这一特点,这也是为 ...</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/2023/01/30/Python%E8%BF%9B%E5%BA%A6%E6%9D%A1/" title="都2023了,你还在用tqdm做进度条吗"><img class="post_bg" src="https://s21.ax1x.com/2024/04/22/pk9mhVO.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="都2023了,你还在用tqdm做进度条吗"></a></div><div class="recent-post-info"><a class="article-title" href="/2023/01/30/Python%E8%BF%9B%E5%BA%A6%E6%9D%A1/" title="都2023了,你还在用tqdm做进度条吗">都2023了,你还在用tqdm做进度条吗</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2023-01-30T11:18:38.000Z" title="发表于 2023-01-30 19:18:38">2023-01-30</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/">深度学习笔记</a></span></div><div class="content">谈到Python的进度条,相信大家用的最多的就是tqdm库了,比如这样:
1234import timefrom tqdm import tqdmfor i in tqdm(range(20)): time.sleep(1)
运行上述代码,便可以看到如下的进度条:
今天要分享的是另外一款Python进度条,相较于老前辈tqdm,在视觉效果上更加炫酷,话不多说,开整!
这款进度条依赖于rich库中的progress模块进行实现,所以第一步就是安装rich库,直接pip install rich即可搞定。
在完成rich库的安装后,就可以实现一个简易的Python进度条啦:
12345import timefrom rich.progress import trackfor i in track(range(20), description="Processing..."): time.sleep(1)
效果如下:
也可以同时展示多个任务进度条:
12345678910111213141516import timefrom rich.progress i ...</div></div></div><nav id="pagination"><div class="pagination"><span class="page-number current">1</span><a class="page-number" href="/page/2/#content-inner">2</a><span class="space">…</span><a class="page-number" href="/page/16/#content-inner">16</a><a class="extend next" rel="next" href="/page/2/#content-inner"><i class="fas fa-chevron-right fa-fw"></i></a></div></nav></div><div class="aside-content" id="aside-content"><div class="card-widget card-info"><div class="is-center"><div class="avatar-img"><img src="https://www.cdnjson.com/images/2021/11/27/_20210211193948.png" onerror="this.onerror=null;this.src='/img/friend_404.gif'" alt="avatar"/></div><div class="author-info__name">雨落诗山山亦奇</div><div class="author-info__description">本站为读研版&工作版博客,大学版移步 --> fuhanshi.github.io</div></div><div class="card-info-data is-center"><div class="card-info-data-item"><a href="/archives/"><div class="headline">文章</div><div class="length-num">159</div></a></div><div class="card-info-data-item"><a href="/tags/"><div class="headline">标签</div><div class="length-num">11</div></a></div><div class="card-info-data-item"><a href="/categories/"><div class="headline">分类</div><div class="length-num">8</div></a></div></div></div><div class="card-widget card-announcement"><div class="item-headline"><i class="fas fa-bullhorn card-announcement-animation"></i><span>公告</span></div><div class="announcement_content">本站内容的最终版本将发布在微信公众号[南极Python]</div></div><div class="sticky_layout"><div class="card-widget card-recent-post"><div class="item-headline"><i class="fas fa-history"></i><span>最新文章</span></div><div class="aside-list"><div class="aside-list-item"><a class="thumbnail" href="/2024/06/01/Transformer%E7%9A%84Decoder%E5%9C%A8%E8%AE%AD%E7%BB%83%E5%92%8C%E6%8E%A8%E7%90%86%E9%98%B6%E6%AE%B5%E7%9A%84%E5%BC%82%E5%90%8C%E7%82%B9%E6%80%BB%E7%BB%93/" title="Transformer的Decoder在训练和推理阶段的异同点总结"><img src="https://s21.ax1x.com/2024/06/01/pk8xi1x.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Transformer的Decoder在训练和推理阶段的异同点总结"/></a><div class="content"><a class="title" href="/2024/06/01/Transformer%E7%9A%84Decoder%E5%9C%A8%E8%AE%AD%E7%BB%83%E5%92%8C%E6%8E%A8%E7%90%86%E9%98%B6%E6%AE%B5%E7%9A%84%E5%BC%82%E5%90%8C%E7%82%B9%E6%80%BB%E7%BB%93/" title="Transformer的Decoder在训练和推理阶段的异同点总结">Transformer的Decoder在训练和推理阶段的异同点总结</a><time datetime="2024-06-01T07:15:20.000Z" title="发表于 2024-06-01 15:15:20">2024-06-01</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/2024/05/04/Python-Flask%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B/" title="Python-Flask快速上手"><img src="https://s21.ax1x.com/2024/05/04/pkAljWq.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Python-Flask快速上手"/></a><div class="content"><a class="title" href="/2024/05/04/Python-Flask%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B/" title="Python-Flask快速上手">Python-Flask快速上手</a><time datetime="2024-05-04T09:27:57.000Z" title="发表于 2024-05-04 17:27:57">2024-05-04</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/2024/01/07/%E5%9B%BE%E5%83%8F%E9%85%8D%E5%87%86/" title="图像配准小结"><img src="https://s21.ax1x.com/2024/04/22/pk9mOqf.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="图像配准小结"/></a><div class="content"><a class="title" href="/2024/01/07/%E5%9B%BE%E5%83%8F%E9%85%8D%E5%87%86/" title="图像配准小结">图像配准小结</a><time datetime="2024-01-07T11:18:38.000Z" title="发表于 2024-01-07 19:18:38">2024-01-07</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/2023/10/25/SAM%E9%AA%A8%E5%B9%B2%E8%BF%81%E7%A7%BB/" title="将SAM编码器迁移到自定义分割子任务中"><img src="https://s21.ax1x.com/2024/04/22/pk9myG9.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="将SAM编码器迁移到自定义分割子任务中"/></a><div class="content"><a class="title" href="/2023/10/25/SAM%E9%AA%A8%E5%B9%B2%E8%BF%81%E7%A7%BB/" title="将SAM编码器迁移到自定义分割子任务中">将SAM编码器迁移到自定义分割子任务中</a><time datetime="2023-10-25T11:18:38.000Z" title="发表于 2023-10-25 19:18:38">2023-10-25</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/2023/09/27/ViT%E9%A2%84%E8%AE%AD%E7%BB%83%E6%9D%83%E9%87%8D%E8%BF%81%E7%A7%BB-%E5%AE%9E%E7%8E%B0%E4%BB%BB%E6%84%8F%E5%B0%BA%E5%AF%B8%E8%BE%93%E5%85%A5/" title="ViT预训练权重迁移-实现任意尺寸输入"><img src="https://z3.ax1x.com/2021/04/10/cajxDs.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="ViT预训练权重迁移-实现任意尺寸输入"/></a><div class="content"><a class="title" href="/2023/09/27/ViT%E9%A2%84%E8%AE%AD%E7%BB%83%E6%9D%83%E9%87%8D%E8%BF%81%E7%A7%BB-%E5%AE%9E%E7%8E%B0%E4%BB%BB%E6%84%8F%E5%B0%BA%E5%AF%B8%E8%BE%93%E5%85%A5/" title="ViT预训练权重迁移-实现任意尺寸输入">ViT预训练权重迁移-实现任意尺寸输入</a><time datetime="2023-09-27T11:18:38.000Z" title="发表于 2023-09-27 19:18:38">2023-09-27</time></div></div></div></div><div class="card-widget card-categories"><div class="item-headline">
<i class="fas fa-folder-open"></i>
<span>分类</span>
</div>
<ul class="card-category-list" id="aside-cat-list">
<li class="card-category-list-item "><a class="card-category-list-link" href="/categories/%E5%91%93%E8%AF%AD%E7%B3%BB%E5%88%97%E8%BF%9E%E8%BD%BD/"><span class="card-category-list-name">呓语系列连载</span><span class="card-category-list-count">8</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/%E6%8E%A8%E8%8D%90%E7%B3%BB%E7%BB%9F/"><span class="card-category-list-name">推荐系统</span><span class="card-category-list-count">18</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/%E6%95%B0%E6%8D%AE%E7%AB%9E%E8%B5%9B/"><span class="card-category-list-name">数据竞赛</span><span class="card-category-list-count">8</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%AE%97%E6%B3%95/"><span class="card-category-list-name">机器学习算法</span><span class="card-category-list-count">7</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/"><span class="card-category-list-name">深度学习笔记</span><span class="card-category-list-count">90</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/%E7%A5%9E%E5%A5%87%E7%9A%84Python/"><span class="card-category-list-name">神奇的Python</span><span class="card-category-list-count">4</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/%E8%B7%A8%E8%80%83%E5%B0%8F%E7%99%BD%E5%AD%A6%E5%88%B7%E9%A2%98/"><span class="card-category-list-name">跨考小白学刷题</span><span class="card-category-list-count">2</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/%E9%9B%B6%E5%9F%BA%E7%A1%80%E5%85%A5%E9%97%A8Python%E7%B3%BB%E5%88%97%E6%95%99%E7%A8%8B/"><span class="card-category-list-name">零基础入门Python系列教程</span><span class="card-category-list-count">15</span></a></li>
</ul></div><div class="card-widget card-tags"><div class="item-headline"><i class="fas fa-tags"></i><span>标签</span></div><div class="card-tag-cloud"><a href="/tags/DL/" style="font-size: 1.5em; color: #99a9bf">DL</a> <a href="/tags/GAN/" style="font-size: 1.42em; color: #99a6b7">GAN</a> <a href="/tags/ML/" style="font-size: 1.26em; color: #999fa8">ML</a> <a href="/tags/Python/" style="font-size: 1.42em; color: #99a6b7">Python</a> <a href="/tags/RL/" style="font-size: 1.1em; color: #999">RL</a> <a href="/tags/Spark/" style="font-size: 1.1em; color: #999">Spark</a> <a href="/tags/Transformer/" style="font-size: 1.1em; color: #999">Transformer</a> <a href="/tags/%E5%91%93%E8%AF%AD/" style="font-size: 1.26em; color: #999fa8">呓语</a> <a href="/tags/%E6%8E%A8%E8%8D%90%E7%AE%97%E6%B3%95/" style="font-size: 1.34em; color: #99a3b0">推荐算法</a> <a href="/tags/%E6%95%B0%E6%8D%AE%E7%AB%9E%E8%B5%9B/" style="font-size: 1.18em; color: #999ca1">数据竞赛</a> <a href="/tags/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/" style="font-size: 1.1em; color: #999">计算机基础</a></div></div><div class="card-widget card-archives"><div class="item-headline"><i class="fas fa-archive"></i><span>归档</span><a class="card-more-btn" href="/archives/" title="查看更多">
<i class="fas fa-angle-right"></i></a></div><ul class="card-archive-list"><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2024/06/"><span class="card-archive-list-date">六月 2024</span><span class="card-archive-list-count">1</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2024/05/"><span class="card-archive-list-date">五月 2024</span><span class="card-archive-list-count">1</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2024/01/"><span class="card-archive-list-date">一月 2024</span><span class="card-archive-list-count">1</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2023/10/"><span class="card-archive-list-date">十月 2023</span><span class="card-archive-list-count">1</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2023/09/"><span class="card-archive-list-date">九月 2023</span><span class="card-archive-list-count">2</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2023/05/"><span class="card-archive-list-date">五月 2023</span><span class="card-archive-list-count">1</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2023/04/"><span class="card-archive-list-date">四月 2023</span><span class="card-archive-list-count">1</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2023/02/"><span class="card-archive-list-date">二月 2023</span><span class="card-archive-list-count">1</span></a></li></ul></div><div class="card-widget card-webinfo"><div class="item-headline"><i class="fas fa-chart-line"></i><span>网站资讯</span></div><div class="webinfo"><div class="webinfo-item"><div class="item-name">文章数目 :</div><div class="item-count">159</div></div><div class="webinfo-item"><div class="item-name">本站总字数 :</div><div class="item-count">312.2k</div></div><div class="webinfo-item"><div class="item-name">本站访客数 :</div><div class="item-count" id="busuanzi_value_site_uv"></div></div><div class="webinfo-item"><div class="item-name">本站总访问量 :</div><div class="item-count" id="busuanzi_value_site_pv"></div></div><div class="webinfo-item"><div class="item-name">最后更新时间 :</div><div class="item-count" id="last-push-date" data-lastPushDate="2024-06-01T10:33:26.461Z"></div></div></div></div></div></div></main><footer id="footer" style="background-image: url('/img/tag1.jpg')"><div id="footer-wrap"><div class="copyright">©2020 - 2024 By 雨落诗山山亦奇</div></div></footer></div><div id="rightside"><div id="rightside-config-hide"><button id="darkmode" type="button" title="浅色和深色模式转换"><i class="fas fa-adjust"></i></button><button id="hide-aside-btn" type="button" title="单栏和双栏切换"><i class="fas fa-arrows-alt-h"></i></button></div><div id="rightside-config-show"><button id="rightside_config" type="button" title="设置"><i class="fas fa-cog fa-spin"></i></button><button id="go-up" type="button" title="回到顶部"><i class="fas fa-arrow-up"></i></button></div></div><div><script src="/js/utils.js"></script><script src="/js/main.js"></script><script src="https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.umd.js"></script><div class="js-pjax"><script>function subtitleType () {
if (true) {
window.typed = new Typed("#subtitle", {
strings: ["期望始终为零,方差交给时间"],
startDelay: 300,
typeSpeed: 150,
loop: true,
backSpeed: 50
})
} else {
document.getElementById("subtitle").innerHTML = '期望始终为零,方差交给时间'
}
}
if (true) {
if (typeof Typed === 'function') {
subtitleType()
} else {
getScript('https://cdn.jsdelivr.net/npm/typed.js/lib/typed.min.js').then(subtitleType)
}
} else {
subtitleType()
}</script></div><canvas class="fireworks" mobile="false"></canvas><script src="https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/dist/fireworks.min.js"></script><script async data-pjax src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script></div></body></html>