0


扩散模型diffusion model用于图像恢复任务详细原理 (去雨,去雾等皆可),附实现代码

文章目录

1. 去噪扩散概率模型

扩散模型是一类生成模型, 和生成对抗网络GAN 、变分自动编码器VAE和标准化流模型NFM等生成网络不同的是, 扩散模型在前向扩散过程中对图像逐步施加噪声, 直至图像被破坏变成完全的高斯噪声, 然后在反向采样过程中学习从高斯噪声还原为真实图像。在模型训练完成后,只需要随机给定一个高斯噪声,就可以生成丰富的真实图像。
在这里插入图片描述

2. 前向扩散

前向扩散过程就是向图像不断加高斯噪声,使其逐渐接近一个与输入数据相关的高斯分布。此处将未加噪声的数据记为

  1. x
  2. 0
  3. x_0
  4. x0​,
  5. x
  6. 0
  7. q
  8. (
  9. x
  10. 0
  11. )
  12. x_0\sim q(x_0)
  13. x0​∼q(x0​),
  14. q
  15. (
  16. x
  17. 0
  18. )
  19. q(x_0)
  20. q(x0​)是为被噪声破坏的原始数据分布,则在
  21. t
  22. t
  23. t时刻的噪化状态和上一时刻
  24. t
  25. 1
  26. t-1
  27. t1之间的关系为:
  28. q
  29. (
  30. x
  31. t
  32. x
  33. t
  34. 1
  35. )
  36. =
  37. N
  38. (
  39. x
  40. t
  41. ;
  42. 1
  43. β
  44. t
  45. x
  46. t
  47. 1
  48. ,
  49. β
  50. t
  51. I
  52. )
  53. ,
  54. (1)
  55. q(x_t|x_{t-1})=\mathcal{N}(x_t; \sqrt{1-\beta_t}\cdot x_{t-1}, \beta_t\cdot\textbf{I}), \tag{1}
  56. q(xt​∣xt1​)=N(xt​;1−βt​​⋅xt1​,βt​⋅I),(1)其中:
  57. t
  58. {
  59. 0
  60. ,
  61. 1
  62. ,
  63. .
  64. .
  65. .
  66. ,
  67. T
  68. }
  69. t\in{\{0, 1, ..., T\}}
  70. t∈{0,1,...,T},
  71. N
  72. \mathcal{N}
  73. N表示高斯噪声分布,
  74. β
  75. t
  76. \beta_t
  77. βt​是与时刻t相关的噪声方差调节因子,
  78. I
  79. \textbf{I}
  80. I是一个与初始状态
  81. x
  82. 0
  83. x_0
  84. x0​维度相同的单位矩阵。则输入
  85. x
  86. 0
  87. x_0
  88. x0​的条件下,
  89. x
  90. 1
  91. ,
  92. x
  93. 2
  94. ,
  95. .
  96. .
  97. .
  98. ,
  99. x
  100. T
  101. x_1, x_2, ..., x_T
  102. x1​,x2​,...,xT​的联合分布可以表示为:
  103. q
  104. (
  105. x
  106. 1
  107. ,
  108. x
  109. 2
  110. ,
  111. .
  112. .
  113. .
  114. ,
  115. x
  116. T
  117. x
  118. 0
  119. )
  120. =
  121. t
  122. =
  123. 1
  124. T
  125. q
  126. (
  127. x
  128. t
  129. x
  130. t
  131. 1
  132. )
  133. (2)
  134. q(x_1, x_2, ..., x_T|x_0)=\displaystyle\prod_{t=1}^{T}q(x_t|x_{t-1}) \tag{2}
  135. q(x1​,x2​,...,xT​∣x0​)=t=1Tq(xt​∣xt1​)(2)则根据根据马尔科夫性可以直接得到输入
  136. x
  137. 0
  138. x_0
  139. x0​的条件下
  140. t
  141. t
  142. t时刻的噪化状态为
  143. q
  144. (
  145. x
  146. t
  147. x
  148. 0
  149. )
  150. =
  151. N
  152. (
  153. x
  154. t
  155. ;
  156. α
  157. t
  158. x
  159. 0
  160. ,
  161. (
  162. 1
  163. α
  164. t
  165. )
  166. I
  167. )
  168. ,
  169. (3)
  170. q(x_t|x_0)=\mathcal{N}(x_t; \sqrt{\overline{\alpha}_t}\cdot x_0, (1-\overline{\alpha}_t)\cdot\textbf{I}), \tag{3}
  171. q(xt​∣x0​)=N(xt​;αt​​⋅x0​,(1−αt​)⋅I),(3)其中:
  172. α
  173. t
  174. :
  175. =
  176. 1
  177. β
  178. t
  179. \alpha_t:=1-\beta_t
  180. αt​:=1−βt​,
  181. α
  182. t
  183. :
  184. =
  185. s
  186. =
  187. 0
  188. t
  189. α
  190. s
  191. \overline{\alpha}_t:=\prod_{s=0}^{t}\alpha_s
  192. αt​:=∏s=0t​αs​。根据公式
  193. (
  194. 1
  195. )
  196. (1)
  197. (1)可以得到
  198. t
  199. t
  200. t时刻的噪化状态
  201. x
  202. t
  203. x_t
  204. xt​与
  205. t
  206. 1
  207. t-1
  208. t1时刻的噪化状态
  209. x
  210. t
  211. 1
  212. x_{t-1}
  213. xt1​的关系为:
  214. x
  215. t
  216. =
  217. α
  218. t
  219. x
  220. t
  221. 1
  222. +
  223. 1
  224. α
  225. t
  226. ϵ
  227. t
  228. 1
  229. ,
  230. (4)
  231. x_t=\sqrt{\alpha_t}\cdot x_{t-1}+\sqrt{1-\alpha_t}\cdot\epsilon_{t-1}, \tag{4}
  232. xt​=αt​​⋅xt1​+1−αt​​⋅ϵt1​,(4)其中:
  233. ϵ
  234. t
  235. 1
  236. N
  237. (
  238. 0
  239. ,
  240. I
  241. )
  242. \epsilon_{t-1}\sim\mathcal{N}(\textbf{0}, \textbf{I})
  243. ϵt1​∼N(0,I),通过不断取代递推可以得到
  244. t
  245. t
  246. t时刻的噪化状态
  247. x
  248. t
  249. x_t
  250. xt​与输入
  251. x
  252. 0
  253. x_0
  254. x0​之间的关系为:
  255. x
  256. t
  257. =
  258. α
  259. t
  260. x
  261. t
  262. 1
  263. +
  264. 1
  265. α
  266. t
  267. ϵ
  268. t
  269. 1
  270. =
  271. α
  272. t
  273. α
  274. t
  275. 1
  276. x
  277. t
  278. 2
  279. +
  280. 1
  281. α
  282. t
  283. α
  284. t
  285. 1
  286. ϵ
  287. t
  288. 2
  289. =
  290. α
  291. t
  292. α
  293. t
  294. 1
  295. α
  296. t
  297. 2
  298. x
  299. t
  300. 3
  301. +
  302. 1
  303. α
  304. t
  305. α
  306. t
  307. 1
  308. α
  309. t
  310. 2
  311. ϵ
  312. t
  313. 3
  314. =
  315. α
  316. t
  317. x
  318. 0
  319. +
  320. 1
  321. α
  322. t
  323. ϵ
  324. (5)
  325. \begin{equation*} \begin{aligned} x_t & = \sqrt{\alpha_t}\cdot x_{t-1}+\sqrt{1-\alpha_t}\cdot\epsilon_{t-1} \\ ~ & = \sqrt{\alpha_t\alpha_{t-1}}\cdot x_{t-2}+\sqrt{1-\alpha_t\alpha_{t-1}}\cdot\overline{\epsilon}_{t-2} \\ ~ & = \sqrt{\alpha_t\alpha_{t-1}\alpha_{t-2}}\cdot x_{t-3}+\sqrt{1-\alpha_t\alpha_{t-1}\alpha_{t-2}}\cdot\overline{\epsilon}_{t-3} \\ ~ & \dots \\ ~ & = \sqrt{\overline{\alpha}_t}\cdot x_0+\sqrt{1-\overline{\alpha}_t}\cdot\epsilon \\ \end{aligned} \end{equation*} \tag{5}
  326. xt ​=αt​​⋅xt1​+1−αt​​⋅ϵt1​=αt​αt1​​⋅xt2​+1−αt​αt1​​⋅ϵt2​=αt​αt1​αt2​​⋅xt3​+1−αt​αt1​αt2​​⋅ϵt3​…=αt​​⋅x0​+1−αt​​⋅ϵ​​(5)其中:
  327. ϵ
  328. N
  329. (
  330. 0
  331. ,
  332. I
  333. )
  334. \epsilon\sim\mathcal{N}(\textbf{0}, \textbf{I})
  335. ϵ∼N(0,I),
  336. ϵ
  337. t
  338. 2
  339. \overline{\epsilon}_{t-2}
  340. ϵt2​是两个高斯分布相加后的分布。第一步到第二步的公式推导需要说明一下,根据高斯噪声的特点,对于两个方差不同的高斯分布
  341. N
  342. (
  343. 0
  344. ,
  345. σ
  346. 1
  347. 2
  348. I
  349. )
  350. \mathcal{N}(\textbf{0}, \sigma_1^2\cdot\textbf{I})
  351. N(012​⋅I)和
  352. N
  353. (
  354. 0
  355. ,
  356. σ
  357. 2
  358. 2
  359. I
  360. )
  361. \mathcal{N}(\textbf{0}, \sigma_2^2\cdot\textbf{I})
  362. N(022​⋅I),其相加后的高斯分布为
  363. N
  364. (
  365. 0
  366. ,
  367. (
  368. σ
  369. 1
  370. 2
  371. +
  372. σ
  373. 2
  374. 2
  375. )
  376. I
  377. )
  378. \mathcal{N}(\textbf{0}, (\sigma_1^2+\sigma_2^2)\cdot\textbf{I})
  379. N(0,(σ12​+σ22​)⋅I),表现在公式中,即:
  380. x
  381. t
  382. =
  383. α
  384. t
  385. x
  386. t
  387. 1
  388. +
  389. 1
  390. α
  391. t
  392. ϵ
  393. t
  394. 1
  395. =
  396. α
  397. t
  398. (
  399. α
  400. t
  401. 1
  402. x
  403. t
  404. 2
  405. +
  406. 1
  407. α
  408. t
  409. 1
  410. ϵ
  411. t
  412. 2
  413. )
  414. +
  415. 1
  416. α
  417. t
  418. ϵ
  419. t
  420. 1
  421. =
  422. α
  423. t
  424. α
  425. t
  426. 1
  427. x
  428. t
  429. 2
  430. +
  431. α
  432. t
  433. (
  434. 1
  435. α
  436. t
  437. 1
  438. )
  439. ϵ
  440. t
  441. 2
  442. +
  443. 1
  444. α
  445. t
  446. ϵ
  447. t
  448. 1
  449. =
  450. α
  451. t
  452. α
  453. t
  454. 1
  455. x
  456. t
  457. 2
  458. +
  459. 1
  460. α
  461. t
  462. α
  463. t
  464. 1
  465. ϵ
  466. t
  467. 2
  468. (6)
  469. \begin{equation} \begin{aligned} x_t & = \sqrt{\alpha_t}\cdot x_{t-1}+\sqrt{1-\alpha_t}\cdot\epsilon_{t-1} \\ ~ & = \sqrt{\alpha_t}\cdot( \sqrt{\alpha_{t-1}}\cdot x_{t-2}+\sqrt{1-\alpha_{t-1}}\cdot\epsilon_{t-2})+\sqrt{1-\alpha_t}\cdot\epsilon_{t-1} \\ ~ & = \sqrt{\alpha_t\alpha_{t-1}}\cdot x_{t-2}+ \sqrt{\alpha_t(1-\alpha_{t-1})}\cdot\epsilon_{t-2}+\sqrt{1-\alpha_t}\cdot\epsilon_{t-1} \\ ~ & = \sqrt{\alpha_t\alpha_{t-1}}\cdot x_{t-2}+\sqrt{1-\alpha_t\alpha_{t-1}}\cdot\overline{\epsilon}_{t-2} \end{aligned} \end{equation} \tag{6}
  470. xt ​=αt​​⋅xt1​+1−αt​​⋅ϵt1​=αt​​⋅(αt1​​⋅xt2​+1−αt1​​⋅ϵt2​)+1−αt​​⋅ϵt1​=αt​αt1​​⋅xt2​+αt​(1−αt1​)​⋅ϵt2​+1−αt​​⋅ϵt1​=αt​αt1​​⋅xt2​+1−αt​αt1​​⋅ϵt2​​​(6)其中:两个高斯分布相加后的标准差为:
  471. α
  472. t
  473. (
  474. 1
  475. α
  476. t
  477. 1
  478. )
  479. +
  480. (
  481. 1
  482. α
  483. t
  484. )
  485. =
  486. 1
  487. α
  488. t
  489. α
  490. t
  491. 1
  492. ,
  493. (7)
  494. \sqrt{\alpha_t(1-\alpha_{t-1})+(1-\alpha_t)}=\sqrt{1-\alpha_t\alpha_{t-1}}, \tag{7}
  495. αt​(1−αt1​)+(1−αt​)​=1−αt​αt1​​,(7)依此得到第二步,进而逐渐递推到最后一步。公式
  496. (
  497. 3
  498. )
  499. (3)
  500. (3)和公式
  501. (
  502. 5
  503. )
  504. (5)
  505. (5)的目的就是表明在前向扩散过程中,由于每步加的噪声均是同分布的高斯噪声,因此不需要逐步进行加噪,直接就可以由输入
  506. x
  507. 0
  508. x_0
  509. x0​的到
  510. T
  511. T
  512. T时刻的噪化状态
  513. x
  514. T
  515. x_T
  516. xT​。当
  517. α
  518. T
  519. 0
  520. \overline{\alpha}_T\approx0
  521. αT​≈0
  522. T
  523. T
  524. T时刻的分布
  525. x
  526. t
  527. x_t
  528. xt​则几乎就是一个高斯分布,据此其可以定义为:
  529. q
  530. (
  531. x
  532. T
  533. )
  534. :
  535. =
  536. q
  537. (
  538. x
  539. T
  540. x
  541. 0
  542. )
  543. q
  544. (
  545. x
  546. 0
  547. )
  548. d
  549. x
  550. 0
  551. N
  552. (
  553. x
  554. T
  555. ;
  556. 0
  557. ,
  558. I
  559. )
  560. ,
  561. (5)
  562. q(x_T):=\int q(x_T|x_0)q(x_0)dx_0\approx\mathcal{N}(x_T; \textbf{0}, \textbf{I}), \tag{5}
  563. q(xT​):=∫q(xT​∣x0​)q(x0​)dx0​≈N(xT​;0,I),(5)其中:
  564. \int
  565. ∫表示积分,最终的噪化状态
  566. x
  567. T
  568. x_T
  569. xT​也可以在图像上看出其分布特点。

3. 反向采样

反向采样过程就是根据已有的噪化状态通过学习来估计噪声分布,进一步获得上一时刻的状态,并逐渐从高斯分布中构造出真实数据。根据前向扩散过程的结果,可以认为

  1. T
  2. T
  3. T时刻噪化状态
  4. x
  5. T
  6. x_T
  7. xT​的后验分布
  8. p
  9. (
  10. x
  11. t
  12. )
  13. N
  14. (
  15. x
  16. t
  17. ;
  18. 0
  19. ,
  20. I
  21. )
  22. p(x_t)\sim\mathcal{N}(x_t; \textbf{0}, \textbf{I})
  23. p(xt​)∼N(xt​;0,I),则联和分布
  24. p
  25. θ
  26. (
  27. x
  28. 0
  29. ,
  30. x
  31. 1
  32. ,
  33. .
  34. .
  35. .
  36. ,
  37. x
  38. T
  39. )
  40. p_{\theta}(x_0, x_1, ..., x_T)
  41. pθ​(x0​,x1​,...,xT​)也是一个马尔科夫链,其被定义为:
  42. p
  43. θ
  44. (
  45. x
  46. 0
  47. ,
  48. x
  49. 1
  50. ,
  51. .
  52. .
  53. .
  54. ,
  55. x
  56. T
  57. )
  58. :
  59. =
  60. p
  61. (
  62. x
  63. T
  64. )
  65. t
  66. =
  67. 1
  68. T
  69. p
  70. θ
  71. (
  72. x
  73. t
  74. 1
  75. x
  76. t
  77. )
  78. ,
  79. (6)
  80. p_{\theta}(x_0, x_1, ..., x_T):=p(x_T)\displaystyle\prod_{t=1}^{T}p_{\theta}(x_{t-1}|x_t), \tag{6}
  81. pθ​(x0​,x1​,...,xT​):=p(xT​)t=1Tpθ​(xt1​∣xt​),(6)则
  82. t
  83. 1
  84. t-1
  85. t1时刻的噪状态
  86. x
  87. t
  88. 1
  89. x_{t-1}
  90. xt1​可以由上一时刻
  91. t
  92. t
  93. t的状态
  94. x
  95. t
  96. x_t
  97. xt​得到,其条件分布可以表示为:
  98. p
  99. θ
  100. (
  101. x
  102. t
  103. 1
  104. x
  105. t
  106. )
  107. =
  108. N
  109. (
  110. x
  111. t
  112. 1
  113. ;
  114. μ
  115. θ
  116. (
  117. x
  118. t
  119. ,
  120. t
  121. )
  122. ,
  123. θ
  124. (
  125. x
  126. t
  127. ,
  128. t
  129. )
  130. )
  131. ,
  132. (7)
  133. p_{\theta}(x_{t-1}|x_t)=\mathcal{N}(x_{t-1}; \mu_{\theta}(x_t, t), {\tiny{\sum}}_{\theta}(x_t, t)), \tag{7}
  134. pθ​(xt1​∣xt​)=N(xt1​;μθ​(xt​,t),∑θ​(xt​,t)),(7)其中:
  135. μ
  136. θ
  137. (
  138. x
  139. t
  140. ,
  141. t
  142. )
  143. \mu_\theta(x_t, t)
  144. μθ​(xt​,t)和
  145. θ
  146. (
  147. x
  148. t
  149. ,
  150. t
  151. )
  152. )
  153. {\tiny{\sum}}_{\theta}(x_t, t))
  154. ∑θ​(xt​,t))分别为
  155. t
  156. t
  157. t时刻由噪声估计网络得到的噪声均值和方差,
  158. θ
  159. \theta
  160. θ为噪声估计网络的参数。此时,在输入为
  161. x
  162. 0
  163. x_0
  164. x0​时,
  165. t
  166. 1
  167. t-1
  168. t1时刻的噪状态
  169. x
  170. t
  171. 1
  172. x_{t-1}
  173. xt1​与上一时刻
  174. t
  175. t
  176. t的状态
  177. x
  178. t
  179. x_t
  180. xt​之间的真实条件分布为:
  181. q
  182. (
  183. x
  184. t
  185. 1
  186. x
  187. t
  188. ,
  189. x
  190. 0
  191. )
  192. =
  193. N
  194. (
  195. x
  196. t
  197. 1
  198. ;
  199. μ
  200. ~
  201. t
  202. (
  203. x
  204. t
  205. ,
  206. x
  207. 0
  208. )
  209. ,
  210. β
  211. ~
  212. t
  213. I
  214. )
  215. ,
  216. (8)
  217. q(x_{t-1}|x_t, x_0)=\mathcal{N}(x_{t-1}; \tilde{\mu}_{t}(x_t, x_0), \tilde{\beta}_t\cdot\textbf{I}), \tag{8}
  218. q(xt1​∣xt​,x0​)=N(xt1​;μ~​t​(xt​,x0​),β~​t​⋅I),(8)其中:噪声后验分布参数
  219. μ
  220. ~
  221. t
  222. \widetilde{\mu}_t
  223. μ​t​,
  224. β
  225. ~
  226. t
  227. \tilde{\beta}_t
  228. β~​t​分别为:
  229. μ
  230. ~
  231. t
  232. =
  233. 1
  234. α
  235. t
  236. (
  237. x
  238. t
  239. β
  240. t
  241. 1
  242. α
  243. t
  244. ϵ
  245. t
  246. )
  247. ,
  248. β
  249. ~
  250. t
  251. =
  252. 1
  253. α
  254. t
  255. 1
  256. 1
  257. α
  258. t
  259. β
  260. t
  261. ,
  262. (9)
  263. \tilde{\mu}_t=\frac{1}{\sqrt{\alpha_t}}(x_t-\frac{\beta_t}{\sqrt{1-\overline{\alpha}_t}}\cdot\epsilon_t), \tilde{\beta}_t=\frac{1-\overline{\alpha}_{t-1}}{1-\overline{\alpha}_t}\cdot\beta_t, \tag{9}
  264. μ~​t​=αt​​1​(xt​−1−αt​​βt​​⋅ϵt​),β~​t​=1−αt1−αt1​​⋅βt​,(9)此处认为
  265. θ
  266. (
  267. x
  268. t
  269. ,
  270. t
  271. )
  272. =
  273. σ
  274. t
  275. 2
  276. I
  277. {\small{\sum}}_\theta(x_t, t)=\sigma_t^2\cdot\textbf{I}
  278. ∑θ​(xt​,t)=σt2​⋅I,即
  279. σ
  280. t
  281. 2
  282. =
  283. β
  284. ~
  285. t
  286. \sigma_t^2=\tilde{\beta}_t
  287. σt2​=β~​t​,则预测的后验条件分布变为:
  288. p
  289. θ
  290. (
  291. x
  292. t
  293. 01
  294. x
  295. t
  296. )
  297. =
  298. N
  299. (
  300. x
  301. t
  302. 1
  303. ;
  304. μ
  305. θ
  306. (
  307. x
  308. t
  309. ,
  310. t
  311. )
  312. ,
  313. σ
  314. t
  315. 2
  316. I
  317. )
  318. ,
  319. ,
  320. (10)
  321. p_{\theta}(x_{t-01}|x_t)=\mathcal{N}(x_{t-1}; \mu_\theta(x_t, t), \sigma_t^2\cdot\textbf{I}), \tag{10},
  322. pθ​(xt01​∣xt​)=N(xt1​;μθ​(xt​,t),σt2​⋅I),,(10)即利用噪声估计网络
  323. μ
  324. θ
  325. \mu_\theta
  326. μθ​来估计真实噪声分布均值
  327. μ
  328. ~
  329. t
  330. \tilde{\mu}_t
  331. μ~​t​,则公式
  332. (
  333. 9
  334. )
  335. (9)
  336. (9)中的噪声分布均值可以被估计为:
  337. μ
  338. θ
  339. (
  340. x
  341. t
  342. ,
  343. t
  344. )
  345. =
  346. 1
  347. α
  348. t
  349. (
  350. x
  351. t
  352. β
  353. t
  354. 1
  355. α
  356. t
  357. ϵ
  358. θ
  359. (
  360. x
  361. t
  362. ,
  363. t
  364. )
  365. )
  366. ,
  367. (11)
  368. \mu_\theta(x_t, t)=\frac{1}{\sqrt{\alpha_t}}(x_t-\frac{\beta_t}{\sqrt{1-\overline{\alpha}_t}}\cdot\epsilon_\theta(x_t, t)), \tag{11}
  369. μθ​(xt​,t)=αt​​1​(xt​−1−αt​​βt​​⋅ϵθ​(xt​,t)),(11)而根据公式已知
  370. t
  371. t
  372. t时刻的噪化状态
  373. x
  374. t
  375. x_t
  376. xt​满足
  377. x
  378. t
  379. =
  380. α
  381. t
  382. x
  383. 0
  384. +
  385. 1
  386. α
  387. t
  388. ϵ
  389. x_t=\sqrt{\overline{\alpha}_t}\cdot x_0+\sqrt{1-\overline{\alpha}_t}\cdot\epsilon
  390. xt​=αt​​⋅x0​+1−αt​​⋅ϵ,则网络学习的优化目标就是让估计出的噪声分布接近真实的噪声分布,即:
  391. E
  392. x
  393. 0
  394. ,
  395. t
  396. ,
  397. ϵ
  398. t
  399. N
  400. (
  401. 0
  402. ,
  403. I
  404. )
  405. [
  406. ϵ
  407. t
  408. ϵ
  409. θ
  410. (
  411. α
  412. t
  413. x
  414. 0
  415. +
  416. 1
  417. α
  418. t
  419. ϵ
  420. ,
  421. t
  422. )
  423. 2
  424. ]
  425. ,
  426. (12)
  427. \mathbb{E}_{x_0, t, \epsilon_t\sim\mathcal{N}(0, \textbf{I})}[||\epsilon_t-\epsilon_\theta(\sqrt{\overline\alpha}_t\cdot x_0+\sqrt{1-\overline{\alpha}_t}\cdot\epsilon, t)||^2], \tag{12}
  428. Ex0​,tt​∼N(0,I)​[∣∣ϵt​−ϵθ​(α​t​⋅x0​+1−αt​​⋅ϵ,t)∣∣2],(12)而
  429. t
  430. 1
  431. t-1
  432. t1时刻的噪化状态
  433. x
  434. t
  435. 1
  436. x_{t-1}
  437. xt1​可以表示为 (这块尚没搞清楚这个公式的由来,似乎与原论文中的公式不一样):
  438. x
  439. t
  440. 1
  441. =
  442. α
  443. t
  444. 1
  445. (
  446. x
  447. t
  448. 1
  449. α
  450. t
  451. ϵ
  452. θ
  453. (
  454. x
  455. t
  456. ,
  457. t
  458. )
  459. α
  460. t
  461. )
  462. +
  463. 1
  464. α
  465. t
  466. 1
  467. ϵ
  468. θ
  469. (
  470. x
  471. t
  472. ,
  473. t
  474. )
  475. ,
  476. (13)
  477. x_{t-1}=\sqrt{\overline\alpha_{t-1}}(\frac{x_t-\sqrt{1-\overline{\alpha}_t}\cdot\epsilon_\theta(x_t, t)}{\sqrt{\overline{\alpha}_t}})+\sqrt{1-\overline{\alpha}_{t-1}}\cdot\epsilon_\theta(x_t, t), \tag{13}
  478. xt1​=αt1​​(αt​​xt​−1−αt​​⋅ϵθ​(xt​,t)​)+1−αt1​​⋅ϵθ​(xt​,t),(13)其中:
  479. z
  480. N
  481. (
  482. 0
  483. ,
  484. I
  485. )
  486. z\sim\mathcal{N}(\textbf{0}, \textbf{I})
  487. zN(0,I)。则根据不同时刻噪声估计网络对噪声分布的估计可以依据公式
  488. (
  489. 13
  490. )
  491. (13)
  492. (13)逐渐反向采样得到真实数据分布。

在这里插入图片描述

3. 图像条件扩散模型

在图像恢复任务中,必须使用条件扩散模型才能生成我们预期的恢复图像,实际中即将退化的图像作为条件引入到噪声估计网络中来估计条件噪声分布。如图所示:
在这里插入图片描述
图像条件扩散模型与经典扩散模型的前向扩散过程完全一样,区别仅在于反向采样过程中是否引入图像条件。则反向采样过程中

  1. x
  2. 1
  3. ,
  4. x
  5. 2
  6. ,
  7. .
  8. .
  9. .
  10. ,
  11. x
  12. T
  13. x_1, x_2, ..., x_T
  14. x1​,x2​,...,xT​的联合分布变为:
  15. p
  16. θ
  17. (
  18. x
  19. 0
  20. ,
  21. x
  22. 1
  23. ,
  24. .
  25. .
  26. .
  27. ,
  28. x
  29. T
  30. x
  31. ^
  32. )
  33. :
  34. =
  35. p
  36. (
  37. x
  38. T
  39. )
  40. t
  41. =
  42. 1
  43. T
  44. p
  45. θ
  46. (
  47. x
  48. t
  49. 1
  50. x
  51. t
  52. ,
  53. x
  54. ^
  55. )
  56. ,
  57. (14)
  58. p_{\theta}(x_0, x_1, ..., x_T|\hat{x}):=p(x_T)\displaystyle\prod_{t=1}^{T}p_{\theta}(x_{t-1}|x_t, \hat{x}), \tag{14}
  59. pθ​(x0​,x1​,...,xT​∣x^):=p(xT​)t=1Tpθ​(xt1​∣xt​,x^),(14)其中,
  60. x
  61. ^
  62. \hat{x}
  63. x^为作为条件输入噪声估计网络的退化图像。此时,噪声分布估计变为:
  64. ϵ
  65. θ
  66. (
  67. x
  68. t
  69. ,
  70. t
  71. )
  72. ϵ
  73. θ
  74. (
  75. x
  76. t
  77. ,
  78. x
  79. ^
  80. ,
  81. t
  82. )
  83. (15)
  84. \epsilon_\theta(x_t, t)\rightarrow\epsilon_\theta(x_t, \hat{x}, t), \tag{15}
  85. ϵθ​(xt​,t)→ϵθ​(xt​,x^,t),(15)
  86. t
  87. 1
  88. t-1
  89. t1时刻的噪化状态
  90. x
  91. t
  92. 1
  93. x_{t-1}
  94. xt1​也由公式
  95. (
  96. 13
  97. )
  98. (13)
  99. (13)变为:
  100. x
  101. t
  102. 1
  103. =
  104. α
  105. t
  106. 1
  107. (
  108. x
  109. t
  110. 1
  111. α
  112. t
  113. ϵ
  114. θ
  115. (
  116. x
  117. t
  118. ,
  119. x
  120. ^
  121. ,
  122. t
  123. )
  124. α
  125. t
  126. )
  127. +
  128. 1
  129. α
  130. t
  131. 1
  132. ϵ
  133. θ
  134. (
  135. x
  136. t
  137. ,
  138. x
  139. ^
  140. ,
  141. t
  142. )
  143. ,
  144. (16)
  145. x_{t-1}=\sqrt{\overline\alpha_{t-1}}(\frac{x_t-\sqrt{1-\overline{\alpha}_t}\cdot\epsilon_\theta(x_t, \hat{x}, t)}{\sqrt{\overline{\alpha}_t}})+\sqrt{1-\overline{\alpha}_{t-1}}\cdot\epsilon_\theta(x_t, \hat{x}, t), \tag{16}
  146. xt1​=αt1​​(αt​​xt​−1−αt​​⋅ϵθ​(xt​,x^,t)​)+1−αt1​​⋅ϵθ​(xt​,x^,t),(16)

实际中,条件的引入由多种方式,最常见的方法是直接通过与噪化状态拼接后作为噪声估计网络的输入。

4. 可以考虑改进的点

以下是我问chatGPT得到的答案:
在这里插入图片描述
我的拙见:

  1. 引入天气退化图像恢复中:虽然扩散模型已经出现众多研究,但在图像去雨、去雾、去雨滴、去雪等方面的研究屈指可数;
  2. 改进噪声估计网络:经典的扩散模型是基于U-Net结构的,主要模块也是卷积 (也包括自注意力),近来有一些研究发现Transformer架构在扩散模型上可以取得更好地效果;
  3. Follow最新的更快地扩散模型:传统的扩散模型要进行图像恢复,一幅图片的处理时长基本都是几十秒,实时性太差,目前有一些研究提出快速反向采样的方法;
  4. 无监督:目前多数给予扩散模型的图像恢复算法仍然是有监督的 (当然不算是监督学习,只是条件生成),可以采用一些无监督策略来利用扩散模型实现图像恢复。

5. 实现代码

完整的用于图像恢复的扩散模型代码见:完整可直接运行代码,其中包括详细的实验操作流程,只需要修改数据集路径即可直接使用。
在这里插入图片描述


本文转载自: https://blog.csdn.net/Wenyuanbo/article/details/128959995
版权归原作者 听 风、 所有, 如有侵权,请联系我们删除。

“扩散模型diffusion model用于图像恢复任务详细原理 (去雨,去雾等皆可),附实现代码”的评论:

还没有评论