当前位置:首页>老电影>8万帧真实胶片数据集:老电影修复终于不再靠假退化自嗨

8万帧真实胶片数据集:老电影修复终于不再靠假退化自嗨

  • 2026-07-25 05:10:25
8万帧真实胶片数据集:老电影修复终于不再靠假退化自嗨

论文:AbsoluteDegradation: A Physics-Inspired Synthetic Film-Degradation Pipeline and Archival Film Restoration Benchmark

日期:2026-07-02

来源:[arXiv](https://arxiv.org/abs/2607.02131)

作者与单位:Mikolaj Jastrzebski、Dawid Glinkowski、Dawid Zielinski、Daniel Borkowski、Wojciech Kozlowski、Kamil Adamczewski;Wroclaw University of Science and Technology。

这篇文章最值得看的地方,不是又提出一个更大的 restoration backbone,而是把老电影修复里一个长期被低估的问题摆到台前:训练退化不真实,评测数据不标准,模型在论文指标上看似进步,到了真实档案胶片上却可能把划痕 sharpen 成“细节”。

AbsoluteDegradation 做了两件事:第一,提出一个 physics-inspired 的合成胶片退化流水线,把颗粒、划痕、尘点、负片链路、gate weave、压缩与色彩漂移放进同一套可控退化系统;第二,整理了一个来自 Library of Congress 的真实老电影 benchmark,包含 81,576 帧高分辨率 lossless PNG,用来测试模型是否真的能处理真实胶片退化。

1. 一句话读懂

如果把普通图像复原里的退化看成“给干净图加噪声、压缩、模糊”,那么老电影修复的退化更像是一条历史链路:拍摄时的胶片颗粒、冲印时的负片/正片响应、放映和保存时的划痕尘点、扫描时的抖动和数字压缩,会在一个视频 clip 内持续存在并随时间演化。

这篇论文的核心判断是:老电影修复不能只靠自然图像退化 proxy;必须把 analog-to-digital film pipeline 本身建模出来。

2. 为什么这件事重要

老电影修复最难的是没有成对数据。真实档案胶片只有 degraded footage,没有对应的 clean ground truth。于是很多方法用合成退化训练:拿干净视频,加一些噪声、模糊、压缩、划痕,再让模型学恢复。

问题在于,合成退化如果太简单,模型学到的是“去掉实验室噪声”,不是“修复真实胶片”。比如划痕在真实电影里往往跨多帧存在,位置可能缓慢漂移;胶片颗粒不是独立高斯噪声,而是有频谱结构、和亮度相关;gate weave 是整帧轻微抖动,不是随机裁剪。若这些没有建模,训练出来的模型会在真实视频上出现过平滑、闪烁、划痕增强、局部曝光不一致等问题。

3. 先看 Table 1:它到底比旧退化多了什么

Table 1:退化流水线能力对比

这张表是论文的动机压缩版。横向看,作者用四列比较不同 synthetic degradation pipeline:Domain 表示是图像还是视频;TC 是 temporal coherence,也就是退化是否跨帧一致;FA 是 film-specific artifacts,是否包含胶片特有退化;AFC 是 artifact-family coverage,统计覆盖了多少类退化。

从行上看,Real-ESRGAN 和 BSRGAN 主要是 image-domain 的通用退化,覆盖模糊、颗粒、压缩等低层退化,但没有时间一致性,也不是为胶片设计。Bringing Old Films 是更接近老电影修复的 baseline,进入 video domain,也有部分 temporal coherence 和 film artifact,但 coverage 只有 4。AbsoluteDegradation 的行最关键:Video、TC 为 yes、FA 为 yes、AFC 为 7。也就是说它不是把 old film restoration 简化成“图像噪声更重”,而是把旧胶片里的多个物理退化族一起纳入。

表下注释也很重要:AFC 的 7 类包括 optical blur、film grain、parametric scratches、dust/texture overlays、negative-film distortions、camera gate-weave、compression and photometric shifts。后文所有方法设计基本都围绕这 7 类展开。

4. 方法总览:六阶段流水线不是装饰图

Figure 1:AbsoluteDegradation 六阶段退化流水线

Figure 1 是整篇的方法主图。最上方粉色横条写着 per-clip parameter lock:退化强度、退化参数、随机排列顺序不是每帧重采样,而是每个 clip 采样一次并固定。这个设计决定了它和普通 per-frame augmentation 的根本差别:真实胶片的一些退化会在整段镜头中持续存在,模型必须学会利用时间信息,而不是逐帧瞎猜。

图的第一行从左到右是输入和前三个阶段。Input 是干净视频 clip,记为 x1:T。Stage 1 是 Frame Crop with Motion Padding,先裁出带额外边界的工作区域,为后续 gate weave 抖动预留空间。Stage 2 是 Dust & Texture Overlay,把尘点、乳剂纹理、放映痕迹叠加到画面上,并允许这些污染物持续若干帧。Stage 3 是 Negative-Film Emulation,在负片域中做轻量退化,再反转回正片域,模拟真实胶片捕获和冲印过程。

第二行是核心退化、收尾和输出。Stage 4 是 Stochastic Core,包含 blur、grain、JPEG、resolution change、gamma、horizontal/vertical motion,并以 clip-level 的随机顺序组合。Stage 5 是 Finalize,把尺寸、颜色扰动和 8-bit 量化收束到最终数字图像。Stage 6 是 Vertical Scratches,加入跨多帧的纵向机械划痕。最右侧输出是 degraded / ground-truth pair,也就是退化 clip 和原始 clean clip 保持对齐。

图中底部虚线很容易被忽略:它表示 ground truth x1:T 被原样传递到输出端。这意味着作者不仅合成 degraded video,也保留了逐像素对齐监督,供 restoration 模型训练。

5. Stage 1:为什么先 crop 还要留 padding

Stage 1 看起来很普通,但它解决的是视频退化里的对齐问题。后续 gate weave 会让画面产生水平或垂直抖动,如果直接在原图边界上平移,就会出现黑边或缺内容。作者先裁一个更大的工作区域,再在其中做几何扰动,最后裁回目标分辨率。

这里的重点是:crop location 按 clip 固定。这样 degraded sequence 和 ground truth video 仍然空间对齐,训练时不会把“人为随机裁剪”误当成真实运动。

6. Stage 2:尘点和纹理为什么要跨帧持续

真实老胶片上的灰尘、污渍、乳剂纹理不会每一帧随机刷新。很多污染物会挂在扫描/放映链路里,连续几帧甚至几十帧都可见。论文从 Bringing Old Films 的 scanned emulsion texture library 中取 texture assets,并转换成带 alpha 的 RGBA PNG,再用多 slot persistence model 控制它们的生命周期。

这一步的训练含义很直接:如果一条污渍连续出现,视频 restoration 模型可以跨帧判断它是 artifact,而不是画面内容。反过来,如果训练时每帧都随机加尘点,模型会被迫当成 image denoising 做,难以学会时序一致性。

7. Stage 3:负片链路公式怎么读

公式 1:负片域退化链路

这个公式描述的是 Negative-Film Emulation。x_t 是第 t 帧的干净图像,1 - x_t 表示把正片图像反转到负片域。F_pi 是一个随机排列后的轻量退化子流水线,里面包含 blur、grain、downsampling、gamma 等操作。最外层的 1 - F_pi(...) 再把负片域结果反转回正片域,clip 则保证像素值落在 0 到 1 之间。

它的意义不是数学炫技,而是物理顺序:有些退化发生在负片捕获/冲印阶段,不等价于在最终正片上直接加噪声。尤其是 gamma 和 grain 的先后顺序不同,会改变噪声被亮度放大的方式。

8. Stage 4:5040 种顺序带来的组合多样性

核心退化阶段有七个 operator:blur、grain、JPEG、resolution change、gamma,以及 horizontal/vertical gate-weave。作者从 7 个操作的全排列中采样顺序,所以一共有 7! = 5040 种组合。

这比“固定顺序加退化”更贴近真实情况。比如 gamma 在 grain 前,表示先改变曝光响应再注入颗粒;grain 在 gamma 前,表示颗粒先出现在 raw/capture 域,然后被后续亮度映射放大。两者视觉结果不同。作者没有为每种物理链路写独立规则,而是通过随机排列覆盖更大的退化空间。

9. 胶片颗粒:不是高斯噪声这么简单

公式 2:信号相关胶片颗粒

这条公式是胶片颗粒建模的核心。左边的 x_tilde_t 是退化后的第 t 帧;x_t 是原始帧;k 控制颗粒强度,可以理解成和 ISO 或胶片感光程度相关;x_t 的 gamma 次方表示颗粒强度会随图像亮度变化;u 是 blue-noise basis,提供高频但更结构化的颗粒模式;w 是白噪声项,用来模拟扫描传感器噪声。

为什么要引入 blue noise?因为真实胶片颗粒不是每个像素独立抖动的白噪声,它有空间结构和高频分布。如果只用 Gaussian grain,模型容易把真实细节和噪声混在一起,最后输出过平滑。后面的 ablation 也说明,高斯颗粒虽然可能让无参考指标更好看,但视觉上更容易损伤眼睛、帽子纹理、细小标记等真实结构。

10. Gate weave:老电影里那种整帧轻微晃动怎么建模

公式 3:水平 gate weave 的 OU 过程

Gate weave 是胶片在扫描或放映机械结构中轻微漂移导致的整帧抖动。这个公式用 Ornstein-Uhlenbeck 过程建模水平位移 X_t。theta 控制回到中心位置的速度,sigma 控制平稳分布的标准差,epsilon 是标准高斯随机扰动。

通俗说,它不是让画面每帧乱跳,而是让画面像真实机械系统一样“有惯性地晃动,并且会往中心回拉”。这点对视频 restoration 很关键,因为模型要学的是稳定的、连续的机械抖动,而不是独立帧变换。

公式 4:垂直 gate weave 的二阶 OU 过程

垂直方向更复杂。作者让 theta_y 本身也随时间变化,再用它控制 Y_t 的位移更新。kappa 表示 theta_y 回到平均值的速度,theta_avg 是均值,s 是 theta_y 随机波动的尺度。这样可以模拟真实胶片中“某段时间抖得更厉害,某段时间又变弱”的现象。

11. 机械划痕:为什么公式里会出现 sinc

公式 5:机械划痕的软边缘核

Mechanical scratches 是纵向细线,来自投影机、扫描器或胶片表面摩擦。公式里的 w 是划痕宽度,sinc^2 项模拟窄缝衍射形状,Gaussian 项让边缘柔和衰减。作者还让划痕宽度沿纵向随机游走、强度随帧 flicker,并给每条划痕设置 20 到 70 帧的 lifespan。

这比“随机画几条白线”更重要。真实划痕通常不是一帧闪现,而是跨帧存在、位置缓慢漂移、亮度有变化。模型如果只见过随机短线,就很容易在真实视频里把划痕当成结构边缘增强。

12. Figure 7:逐个退化 operator 到底长什么样

Figure 7:退化 operator atlas

Figure 7 是 Appendix 里的 operator atlas,非常适合读方法。第一行从左到右是 Ground truth、Negative-film chain、Texture overlays、Optical blur。负片链路整体对比度和灰度响应改变;texture overlays 在天空和画面边缘加入明显污点;optical blur 则让车牌、车身边缘和远处树木变软。

第二行是 Film grain、JPEG、Resampling、Photometric。Film grain 的变化比较细,需要看天空和车身平坦区域;JPEG 主要影响块状压缩和高频边缘;Resampling 会让局部纹理和边界产生插值损失;Photometric gamma 改变全局亮度响应。

第三行是 Gate weave、Scratches、Color jitter、All degradations。Gate weave 静态图中不容易看出,因为它主要体现在帧间位移;Scratches 是最明显的纵向亮线;Color jitter 让整体灰度和色调发生轻微漂移;All degradations 把这些因素叠加后,画面同时出现模糊、颗粒、污点、划痕和亮度变化。这张图证明作者不是只做一个 abstract pipeline,而是把每类退化都可视化到了同一 reference crop 上。

13. Figure 2:AbsoluteDegradation 是否真的更难

Figure 2:合成退化与旧方法对比

Figure 2 左侧是视觉对比。每一行是同一 REDS 场景,三列分别是 GT、Bringing Old Films 和 Ours。中间列的旧方法更像普通黑白退化:整体变灰、有噪声,但许多胶片结构性问题不明显。右侧 Ours 则加入更强的划痕、纹理、亮度变化和局部污染,视觉上更接近难修复的档案胶片。

Figure 2 右侧是两个分布图。SSIM 图中,AbsoluteDegradation 的蓝色分布整体向低 SSIM 移动,说明它和 clean ground truth 差异更大;LPIPS 图中,蓝色分布整体向更高 LPIPS 移动,说明感知差异也更强。这里要注意,作者不是在说“退化越重越好”,而是在说:旧 synthetic pipeline 对真实老电影修复任务太温和,训练难度不足。

14. 真实 benchmark:81,576 帧从哪里来

作者从 Library of Congress 选取 1896 到 1918 年间的 30 部 public-domain films,保存为 1440x1080 到 1920x1080 的 lossless PNG。然后通过 SuperPoint + LightGlue 做 scene splitting,再人工筛掉 title cards、blank frames 和无信息片段,得到适合时序 restoration 评测的真实档案视频数据。

最终有三个版本:Full scene-split dataset 有 81,576 帧,适合测试连续镜头内的时序一致性;Compact subset 有 13,252 帧,用于高效评测;Multi-scene dataset 有 121,200 帧,用固定长度切分,保留真实场景切换,适合测试更复杂的视频 restoration 系统。

15. Figure 3:新 benchmark 和 SRWOV 的区别

Figure 3:真实档案数据集对比

Figure 3 左边是 SRWOV 样例,右边是作者构建的数据集样例。SRWOV 中可以看到更低分辨率、压缩痕迹、水印或内容混杂问题;作者的新数据集更聚焦真实老电影 footage,分辨率更高,且以 lossless PNG 保存,避免把 JPEG 压缩噪声混进评测结论。

最右侧的定量图比较 BRISQUE 和 MUSIQ。作者数据集在 BRISQUE 上更高,在 MUSIQ 上更低,表示无参考质量指标认为它更“差”、更难。这不是缺点,反而说明它更接近真实老电影修复任务的挑战:模型不能只在干净自然图像退化上刷分。

16. Table 2:合成退化和真实分布是否更接近

Table 2:FID 分布对齐对比

Table 2 用 FID 比较 synthetic degradation 和真实数据分布的距离。列分成 SRWOV 和 Our Dataset 两个真实目标域。Bringing Old Films 在 SRWOV 上是 193.84,在新数据集上是 166.04;AbsoluteDegradation 分别降到 185.78 和 154.27。

解读时不要只看“赢了多少”。更关键的是,这说明 AbsoluteDegradation 生成的 synthetic data 与真实档案胶片分布更接近,尤其在作者自己的高分辨率档案 benchmark 上差距更明显。这支撑了它作为训练 proxy 和评测辅助工具的合理性。

17. Figure 4:指标为什么可能奖励错误修复

Figure 4:无参考指标与视觉失败模式

Figure 4 是论文里最有启发的一张结果图。左半部分和右半部分各是一组案例,每组都有三列:Input、Ours、Bringing Old Films。图中红框标出需要关注的局部退化。

左侧案例中,输入画面有持续线状 artifact。Ours 的结果更倾向于把它压下去,画面更干净;Bringing Old Films 训练出的模型反而保留或锐化这些线。右侧案例同理,输入中有 specks 和局部退化,Ours 更像修复,baseline 更像增强了脏点。

这张图底部的 C 和 M 分别是 CLIP-IQA+ 与 MUSIQ。吊诡之处在于,baseline 有时指标更高,但视觉上明显更糟。作者借此说明:老电影修复不能盲信无参考指标,因为这些指标可能把“更锐利的划痕、更强的局部边缘”误判为更高质量。

补充案例:两组 restoration failure crop

这张补充图把两组 crop 单独放大。左侧一组里,旧 pipeline 训练模型对线状 artifact 更自信,容易把 artifact 当成结构;右侧一组里,旧方法保留了更多脏点和过锐边缘。AbsoluteDegradation 的价值不是让画面一定更锐,而是让模型更保守地处理不确定退化,减少把历史污损伪装成细节的风险。

18. Table 3:四个模型、两个数据集、两种训练退化

Table 3:restoration 结果主表

Table 3 的读法要分三层。

第一层看列:左半是 Our dataset,右半是 SRWOV dataset。每个数据集下有 BRISQUE、CLIPIQA+、MUSIQ、MANIQA 四个无参考指标。BRISQUE 越低越好,后三个越高越好。

第二层看每个模型块。MambaOFR 和 BasicVSR++ 在使用 AbsoluteDegradation 训练后,多数指标明显提升。比如 BasicVSR++ 在作者数据集上 BRISQUE 从 30.62 降到 21.94,MUSIQ 从 32.55 升到 40.27,说明更强的视频架构能够利用更复杂、时序一致的退化分布。

第三层看例外。RTN 和 RVRT 并不是所有指标都变好。RTN 在某些列上变化较小,RVRT 在作者数据集上甚至有指标下降。作者的解释是:AbsoluteDegradation 更复杂,轻量旧架构或面向通用 deblurring/denoising 的模型未必能直接吃下这套分布,需要架构或训练策略配合。

因此 Table 3 的结论不是“所有模型无脑涨分”,而是:更真实的训练退化能帮助高容量/适配的视频 restoration 模型泛化,但也暴露了旧模型和不可靠指标的局限。

19. Figure 6:三档 severity 有什么差别

Figure 6:Light / Medium / Heavy severity 对比

Figure 6 左侧是 RGB ground truth,右侧是 2 行 3 列退化结果。上排是 AbsoluteDegradation,下排是 Bringing Old Films;列从左到右是 Light、Medium、Heavy。

从上排看,AbsoluteDegradation 的 severity 增加并不只是“整体更黑或更糊”。Light 已经有可见颗粒和轻微纹理;Medium 增加强划痕、污点、对比变化;Heavy 中竖向划痕、局部污染和曝光变化更明显。下排的 Bringing Old Films 相比之下更像同一类灰度退化强度变化,结构性胶片 artifact 更少。

这张图说明 severity curriculum 的价值:模型可以从轻退化逐步适应重退化,而不是只见到一个固定强度的 synthetic corruption。

20. 这篇论文对 restoration 研究的真正启发

AbsoluteDegradation 的贡献不在于提出一个新网络,而在于把“训练数据分布”从附属问题变成方法核心。对 old film restoration 这种缺少 paired clean target 的任务,合成退化就是隐式监督。如果退化模型错了,模型再大也可能学偏。

它还提醒我们,很多 low-level vision 任务正在从“设计 backbone”转向“设计数据生成机制、评测协议和真实退化接口”。尤其是视频复原、手机影像、档案修复、RAW/ISP 类任务,真实退化链路往往比单个网络模块更决定上限。

21. 局限性也很明确

第一,退化 pipeline 仍然依赖有限的 texture asset 和人工设定参数,遇到罕见胶片化学损伤、霉斑、严重撕裂、手工修补痕迹时可能不足。

第二,真实 benchmark 没有 clean ground truth,因此评测仍然依赖 BRISQUE、CLIPIQA+、MUSIQ、MANIQA 等无参考指标,而论文自己也证明这些指标会奖励错误锐化。后续需要更适合 archival restoration 的 reference-free metric。

第三,online degradation 和视频模型训练成本不低。论文里多模型训练和 ablation 本身就很昂贵,这也意味着社区复现和扩展需要更工程化的数据管线。

22. 后续值得做的方向

一个方向是做 domain-specific restoration metric。老电影修复里的“好”不等于现代摄影图像的锐利干净,而是要区分真实历史纹理、可接受胶片颗粒和破坏性划痕/污点。评价模型如果继续奖励过锐 artifact,训练目标也会被带偏。

另一个方向是把这套 physics-inspired degradation 扩展到更广的真实视频退化:比如彩色胶片褪色、霉斑、硝酸片基变形、扫描器条纹、低码率二次压缩等。它也可以和 diffusion restoration 或 video foundation model 结合,让生成先验服务于“保真修复”,而不是凭空重绘历史画面。

23. 总结

AbsoluteDegradation 的价值可以概括成一句话:老电影修复缺的不是又一个模型榜单,而是一套足够接近真实胶片链路的训练和评测基础设施。

它用六阶段退化 pipeline 把胶片颗粒、负片链路、划痕、尘点、gate weave、压缩和色彩漂移组织到同一框架里;又用 81,576 帧真实档案 benchmark 检验模型是否真的泛化。更重要的是,它指出无参考指标可能奖励错误修复,这对整个 restoration 领域都是一个警告:如果评测不懂真实退化,模型很容易把损伤修成“细节”。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-30 16:04:36 HTTP/2.0 GET : https://f.sjds.net/a/483665.html
  2. 运行时间 : 0.087941s [ 吞吐率:11.37req/s ] 内存消耗:4,410.24kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=2e209da4b590b1eb6d45e3fcd1684994
  1. /yingpanguazai/ssd/ssd1/www/f.sjds.net/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.sjds.net/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.sjds.net/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.sjds.net/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.sjds.net/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.sjds.net/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.sjds.net/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.sjds.net/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.sjds.net/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.sjds.net/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.sjds.net/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.sjds.net/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.sjds.net/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.sjds.net/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.sjds.net/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.sjds.net/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.sjds.net/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.sjds.net/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.sjds.net/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.sjds.net/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.sjds.net/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.sjds.net/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.sjds.net/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.sjds.net/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.sjds.net/runtime/temp/515214ef16c88a93e5374c9e895e8d02.php ( 12.06 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.sjds.net/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000580s ] mysql:host=127.0.0.1;port=3306;dbname=f_sjds;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000717s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000287s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000279s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000493s ]
  6. SELECT * FROM `set` [ RunTime:0.000199s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000585s ]
  8. SELECT * FROM `article` WHERE `id` = 483665 LIMIT 1 [ RunTime:0.000449s ]
  9. UPDATE `article` SET `lasttime` = 1785398676 WHERE `id` = 483665 [ RunTime:0.007734s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 65 LIMIT 1 [ RunTime:0.000281s ]
  11. SELECT * FROM `article` WHERE `id` < 483665 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000415s ]
  12. SELECT * FROM `article` WHERE `id` > 483665 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.003163s ]
  13. SELECT * FROM `article` WHERE `id` < 483665 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001124s ]
  14. SELECT * FROM `article` WHERE `id` < 483665 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001392s ]
  15. SELECT * FROM `article` WHERE `id` < 483665 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.005222s ]
0.089555s