乐于分享
好东西不私藏

产线上的AI算法:99%的实验室准确率,为何到产线只剩70%?

产线上的AI算法:99%的实验室准确率,为何到产线只剩70%?

各位工程师朋友们,你有没有这样的经历:

实验室里反复调优的AI算法,准确率刷到99.5%,满心欢喜部署到产线,结果……

第一天:95%,还不错

第一周:85%,有点波动

第一个月:70%,现场工程师已经在骂人了

更可怕的是,你不知道为什么下降,也不知道怎么解决

今天,我用7个真实案例告诉你,那30%的准确率到底丢在了哪里,更重要的是——如何把它们找回来。

案例一:光照,算法的“第一杀手”

实验室 vs 工厂,光的差距有多大?

实验室

  • 标准D65光源,5500K色温
  • 照度2000lux,±5%均匀性
  • 恒温恒湿,24小时不变

产线

  • 窗户进来的自然光,从2000lux到80000lux
  • 日光灯、LED灯、设备指示灯杂光
  • 早中晚色温从3000K到6500K
  • 设备运动产生阴影变化

真实数据记录(某汽车零件检测项目):

时间        照度(lux)  准确率08:00早晨   2200       98.3%12:00中午   85000      73.1%  ← 窗户阳光直射14:00阴天   3500       94.7%20:00夜班   1800       97.8%凌晨3点     1800       35.1%  ← 清洁工开错灯

解决光照问题的四个层次

第一层:控制光源(最有效,也最贵)

% 主动光源控制算法classdef LightingController < handle    properties        Camera        TargetIllumination = 2000  % 目标照度        Tolerance = 100           % 容差    end    methods        function adjust_lighting(obj)            % 1. 检测当前照度            current_illum = obj.measure_illumination();            % 2. 计算调整量            if abs(current_illum - obj.TargetIllumination) > obj.Tolerance                % 自动调整光源亮度                adjustment = (obj.TargetIllumination - current_illum) / 100;                obj.set_light_intensity(adjustment);                % 记录日志                log_event('光照调整', ...                    sprintf('从%d调整到%d lux', current_illum, obj.TargetIllumination));            end            % 3. 均匀性检测            uniformity = obj.check_uniformity();            if uniformity < 0.9                warning('光照均匀性不足: %.2f', uniformity);                obj.adjust_light_position();            end        end        function illum = measure_illumination(obj)            % 从图像估计照度            img = obj.Camera.capture();            gray_img = rgb2gray(img);            illum = mean(gray_img(:)) * 10;  % 简单映射        end    endend

现场方案

  • 封闭式光照箱:成本8-15万,效果最好
  • 可调LED光源+光强传感器:成本2-5万
  • 遮光帘+固定光源:成本0.5-1万

第二层:算法鲁棒性

% 光照不变性特征提取function features = illumination_invariant_features(image)    % 1. 归一化消除亮度影响    img_normalized = double(image) / 255;    % 2. 使用梯度特征而非绝对亮度    [gx, gy] = gradient(img_normalized);    gradient_magnitude = sqrt(gx.^2 + gy.^2);    % 3. 局部对比度增强    img_local_contrast = localcontrast(image);    % 4. 颜色不变性变换    img_hsv = rgb2hsv(image);    % 色调(H)和饱和度(S)对光照变化相对稳定    hue_channel = img_hsv(:, :, 1);    saturation_channel = img_hsv(:, :, 2);    % 5. 多特征融合    features = [        extract_lbp_features(gradient_magnitude),  % 纹理特征        extract_color_features(hue_channel, saturation_channel),  % 颜色特征        extract_edge_features(gx, gy)  % 边缘特征    ];end

第三层:数据增强

% 生成各种光照条件下的训练数据function augmented_data = augment_illumination(original_images)    augmented_data = [];    for i = 1:length(original_images)        img = original_images{i};        % 模拟不同光照条件        conditions = {            @(x) x * 0.3,   % 昏暗            @(x) x * 0.6,   % 较暗            @(x) x * 1.0,   % 正常            @(x) x * 1.5,   % 较亮            @(x) x * 2.0,   % 过亮            @(x) jitter_illumination(x),  % 不均匀光照            @(x) add_shadow(x, 0.3),       % 添加阴影            @(x) simulate_sunlight(x, 45)  % 模拟斜射阳光        };        for j = 1:length(conditions)            augmented_img = conditions{j}(img);            augmented_data{end+1} = augmented_img;        end    endend

第四层:在线自适应

% 实时光照自适应classdef AdaptiveClassifier < handle    properties        BaseClassifier        CurrentLightingCondition        LightingModels  % 不同光照下的模型    end    methods        function label = predict_adaptive(obj, image)            % 1. 检测当前光照条件            obj.detect_lighting_condition(image);            % 2. 选择或调整模型            if obj.CurrentLightingCondition == "normal"                model = obj.BaseClassifier;            else                model = obj.LightingModels(obj.CurrentLightingCondition);            end            % 3. 可能的光照补偿            compensated_image = obj.compensate_illumination(image);            % 4. 预测            label = model.predict(compensated_image);            % 5. 记录用于后续模型更新            obj.record_prediction(image, label);        end        function update_model(obj)            % 收集在线数据,更新模型            new_data = obj.collect_recent_data();            if size(new_data, 1) > 1000                obj.retrain_model(new_data);            end        end    endend

结果对比

方法            准确率      成本     实施难度什么都不做        70%        0         易数据增强          85%        低        中算法鲁棒性        88%        中        中在线自适应        92%        高        难光照控制硬件      95%+       高        易

案例二:产品变异,意料之外的变化

同一产品,不同“长相”

变异来源

  1. 批次差异:不同批次的原材料

  2. 工艺波动:设备参数微小变化

  3. 模具磨损:生产10万件后的模具

  4. 供应商切换:突然换了螺丝供应商

  5. 工艺改进:生产部门偷偷改了参数

真实故事

我们做一个螺丝检测项目,准确率稳定在99.3%。

突然有一天,准确率掉到80%。

查了3天,发现:供应商换了防锈油,颜色从浅黄变成深黄。

机器认为深黄色是“污渍”,全部判为不良。

产品变异应对方案

方案1:数据监控与预警

classdef ProductMonitor < handle    properties        HistoricalFeatures        ControlLimits        WarningCount = 0    end    methods        function check_variation(obj, current_features)            % 1. 与历史数据比较            historical_mean = mean(obj.HistoricalFeatures1);            historical_std = std(obj.HistoricalFeatures01);            % 2. 计算Z分数            z_scores = abs(current_features - historical_mean) ./ historical_std;            % 3. 检测显著变化            significant_changes = find(z_scores > 3);  % 3σ            if ~isempty(significant_changes)                obj.WarningCount = obj.WarningCount + 1;                % 4. 分析变化类型                change_type = obj.analyze_change_type(significant_changes, z_scores);                % 5. 预警                obj.send_alert(sprintf('产品变异检测: %s', change_type));                % 6. 自动调整                if obj.WarningCount > 5                    obj.trigger_model_adaptation();                end            end            % 7. 更新历史数据            obj.HistoricalFeatures(end+1:) = current_features;            if size(obj.HistoricalFeatures1) > 10000                obj.HistoricalFeatures = obj.HistoricalFeatures(end-9999:end:);            end        end        function change_type = analyze_change_type(obj, changed_indices, z_scores)            % 根据哪些特征变化,判断变异类型            % 特征索引映射            feature_map = {                1:3,   '颜色特征',  '原材料/涂层变化';                4:6,   '纹理特征',  '工艺参数变化';                7:9,   '尺寸特征',  '模具磨损';                10:12'形状特征',  '供应商变更';            };            for i = 1:size(feature_map, 1)                feature_range = feature_map{i, 1};                if any(ismember(changed_indices, feature_range))                    change_type = sprintf('%s(%s)', feature_map{i, 2}, feature_map{i, 3});                    return;                end            end            change_type = '未知变化';        end    endend

方案2:增量学习与模型更新

function adapt_to_variation(base_model, new_data, variation_type)    % 根据变异类型采取不同适应策略    switch variation_type        case 'gradual'  % 渐变,如模具磨损            % 滑动窗口增量学习            window_size = 1000;            if size(new_data, 1>= window_size                % 用最近的数据重新训练                recent_data = new_data(end-window_size+1:end, :);                model = incremental_train(base_model, recent_data);            end        case 'abrupt'  % 突变,如供应商更换            % 建立新类别或新模型            new_cluster = cluster_analysis(new_data);            if is_significantly_different(new_cluster, base_model)                % 创建新模型分支                create_model_branch(base_model, new_cluster);            end        case 'periodic'  % 周期性,如早晚班差异            % 时间感知模型            time_aware_model = add_time_context(base_model);        case 'mixed'  % 混合变化            % 集成学习,多个专家模型            ensemble_model = create_ensemble(base_model, new_data);    endend

方案3:人机协同标注

classdef HumanInTheLoop < handle    properties        ConfidenceThreshold = 0.95        UncertaintySamples = []        HumanFeedback = []    end    methods        function [label, confidence] = predict_with_fallback(obj, image)            % 模型预测            [label, confidence] = obj.model.predict(image);            if confidence < obj.ConfidenceThreshold                % 低置信度,请求人工确认                obj.request_human_review(image, label);                % 加入不确定样本集                obj.UncertaintySamples{end+1} = struct(...                    'image', image, ...                    'predicted_label', label, ...                    'confidence', confidence, ...                    'timestamp', datetime);            end            % 定期用人工反馈重新训练            if mod(length(obj.UncertaintySamples), 100) == 0                obj.update_with_human_feedback();            end        end        function request_human_review(obj, image, predicted_label)            % 在实际系统中,这里会:            % 1. 在HMI上弹出对话框            % 2. 发送到质检员Pad            % 3. 或者发送到远程标注平台            % 简化的演示            fprintf('需要人工确认: 预测为 %s,置信度 %.2f\n', ...                predicted_label, confidence);            % 模拟人工输入            actual_label = input('请输入正确标签: ''s');            % 记录反馈            obj.HumanFeedback{end+1} = struct(...                'image', image, ...                'predicted', predicted_label, ...                'actual', actual_label);        end    endend

变异管理策略总结

变异类型       检测方法          应对策略渐变变异      统计过程控制(SPC)  增量学习突变变异      聚类分析          模型分支/新模型周期性变异    时间序列分析      时间感知模型未知变异      不确定性估计      人机协同

案例三:设备老化,算法的“慢性病”

硬件不会永远年轻

老化清单

  1. 相机镜头:划痕、污渍、霉斑

  2. 光源:LED衰减、色温漂移

  3. 机械部分:对焦偏移、位置偏差

  4. 传感器:响应衰减、噪声增加

  5. 连接件:松动、氧化

老化速度实测(24/7运行的检测设备):

时间        镜头清晰度  光源亮度  对焦精度  准确率新设备      100%       100%     100%     99.5%3个月后     98%        95%      99%      98.7%6个月后     92%        88%      97%      96.1%1年后       85%        80%      94%      92.3%2年后       73%        70%      89%      85.4%

设备老化补偿系统

自动老化检测与补偿

classdef AgingCompensationSystem < handle    properties        BaselinePerformance        CurrentPerformance        AgingFactors        CompensationParameters    end    methods        function monitor_aging(obj)            % 每日自动老化检测流程            % 1. 标定板检测            calibration_results = obj.run_calibration();            % 2. 性能基准测试            performance_metrics = obj.measure_performance();            % 3. 计算老化程度            aging_levels = obj.calculate_aging(calibration_results, performance_metrics);            % 4. 判断是否需要补偿            if any(aging_levels > obj.Thresholds)                % 自动调整参数                obj.apply_compensation(aging_levels);                % 记录维护需求                obj.schedule_maintenance(aging_levels);            end            % 5. 更新老化模型            obj.update_aging_model(aging_levels);            % 6. 预测剩余寿命            remaining_life = obj.predict_remaining_life();            if remaining_life < 30  % 少于30                obj.send_alert(sprintf('设备寿命剩余%.0f天', remaining_life));            end        end        function apply_compensation(obj, aging_levels)            % 根据老化类型应用不同补偿            % 镜头模糊补偿            if aging_levels.lens > 0.1                obj.apply_deblurring(aging_levels.lens);            end            % 亮度衰减补偿            if aging_levels.light > 0.15                obj.adjust_exposure(aging_levels.light);                obj.boost_light_source(aging_levels.light);            end            % 对焦偏移补偿            if aging_levels.focus > 0.05                obj.adjust_focus(aging_levels.focus);            end            % 色彩漂移补偿            if aging_levels.color > 0.08                obj.apply_color_correction(aging_levels.color);            end            % 更新算法参数            obj.adjust_algorithm_parameters(aging_levels);        end    endend

预防性维护计划

项目          检查周期    阈值      维护动作镜头清洁      1周        清晰度<95% 酒精擦拭光源检查      2周        亮度<90%   清洁或更换对焦校准      1个月      偏移>0.1mm 自动重校准色彩校正      1个月      色差>5ΔE   重新标定全面标定      3个月      任意>10%   完整标定深度清洁      6个月      -          专业清洁

案例四:对抗攻击,当工人“欺骗”机器

人比机器聪明,特别是想偷懒时

常见对抗手段

  1. 贴标签:在缺陷上贴白色胶带

  2. 涂改:用马克笔涂抹缺陷

  3. 遮挡:手或工具挡住摄像头

  4. 角度作弊:倾斜产品通过

  5. 光线欺骗:用手电筒照射特定位置

真实案例

某工厂质检站,工人发现机器会把某个位置的划痕判为不良。

工人解决方案:在那个位置贴上一小块白色胶带。

机器识别结果:白色区域,无划痕 → OK

漏检率:从0.5%飙升到15%

对抗攻击检测与防御

多层防御体系

classdef AntiCheatingSystem < handle    properties        SuspicionScore = 0        RecentDetections = []    end    methods        function [result, is_suspicious] = detect_with_anti_cheat(obj, image)            % 主检测流程            primary_result = obj.primary_detector(image);            % 并行执行多个防作弊检查            cheat_checks = {                @() obj.check_uniform_background(image),      % 背景一致性                @() obj.check_expected_features(image),      % 预期特征                @() obj.check_tampering_signs(image),         % 篡改痕迹                @() obj.check_physical_possibility(primary_result), % 物理可能性                @() obj.check_statistical_anomaly(primary_result)  % 统计异常            };            cheat_flags = zeros(1, length(cheat_checks));            for i = 1:length(cheat_checks)                cheat_flags(i) = cheat_checks{i}();            end            % 计算可疑度            suspicion = sum(cheat_flags);            obj.SuspicionScore = obj.SuspicionScore * 0.9 + suspicion * 0.1;            % 记录            obj.RecentDetections{end+1} = struct(...                'result', primary_result, ...                'suspicion', suspicion, ...                'time', datetime);            % 判断是否可疑            is_suspicious = obj.SuspicionScore > obj.Threshold;            if is_suspicious                result = 'SUSPICIOUS';                obj.handle_suspicious_case(image, primary_result, cheat_flags);            else                result = primary_result;            end        end        function uniform = check_uniform_background(obj, image)            % 检测背景是否异常均匀(可能被贴纸覆盖)            background_mask = obj.extract_background(image);            background_region = image(background_mask);            % 计算背景区域的标准差            std_value = std(double(background_region(:)));            % 如果过于均匀,可疑            uniform = std_value < 5;  % 阈值可调        end        function possible = check_physical_possibility(obj, detection_result)            % 检查检测结果是否符合物理规律            % 例如:划痕通常有一定方向性            % 斑点通常有圆形特征            % 缺陷不会瞬间出现又消失            % 获取历史检测结果            recent_results = obj.get_recent_results(10);  % 最近10            % 时空一致性检查            time_consistency = obj.check_time_consistency(recent_results);            space_consistency = obj.check_space_consistency(detection_result);            possible = time_consistency && space_consistency;        end        function handle_suspicious_case(obj, image, result, cheat_flags)            % 处理可疑情况            % 1. 保存证据            evidence_id = obj.save_evidence(image, result, cheat_flags);            % 2. 触发警报            obj.trigger_alert(evidence_id, cheat_flags);            % 3. 可能的应对措施            if sum(cheat_flags) >= 3  % 高度可疑                % 停止生产线                obj.stop_production_line();                % 通知主管                obj.notify_supervisor('HIGH_SUSPICION');                % 需要人工干预                obj.request_human_intervention();            else                % 记录但不停止                obj.log_suspicion(evidence_id);                % 可能需要增加抽样检查                obj.increase_sampling_rate();            end        end    endend

防作弊的物理方案

  1. 多角度相机:一个角度被遮挡,还有其他角度

  2. 多光谱成像:可见光看不见的,红外/紫外能看见

  3. 随机抽检:不定时、不定位置的人工抽检

  4. 防篡改设计:相机和光源在封闭箱体内

案例五:算法退化,模型也需要“进化”

为什么模型会“变笨”?

退化原因

  1. 概念漂移:产品定义变了,模型没变

  2. 数据分布变化:新类型缺陷出现

  3. 反馈偏差:只标注困难的样本

  4. 过拟合历史:对新变化不敏感

退化检测

classdef ModelDegradationMonitor < handle    properties        PerformanceHistory        ConfidenceTrend        DataDistributionHistory    end    methods        function check_degradation(obj, recent_results)            % 检查模型是否退化            metrics = obj.calculate_metrics(recent_results);            % 1. 准确率下降            accuracy_drop = obj.check_accuracy_drop(metrics.accuracy);            % 2. 置信度下降            confidence_drop = obj.check_confidence_drop(metrics.confidence);            % 3. 不确定性增加            uncertainty_increase = obj.check_uncertainty(metrics.uncertainty);            % 4. 数据分布变化            distribution_shift = obj.check_distribution_shift();            % 综合判断            degradation_score = accuracy_drop * 0.4 + ...                               confidence_drop * 0.3 + ...                               uncertainty_increase * 0.2 + ...                               distribution_shift * 0.1;            if degradation_score > 0.7                degradation_type = obj.diagnose_degradation_type(...                    accuracy_drop, confidence_drop, uncertainty_increase, distribution_shift);                obj.trigger_retraining(degradation_type);            end        end        function degradation_type = diagnose_degradation_type(obj, ...                acc_drop, conf_drop, unc_inc, dist_shift)            % 诊断退化类型            if dist_shift > 0.8                if unc_inc > 0.6                    degradation_type = 'CONCEPT_DRIFT';  % 概念漂移                else                    degradation_type = 'DATA_DRIFT';     % 数据分布变化                end            elseif acc_drop > 0.7 && conf_drop > 0.7                degradation_type = 'MODEL_STALENESS';    % 模型过时            elseif unc_inc > 0.8                degradation_type = 'AMBIENT_CHANGE';     % 环境变化            else                degradation_type = 'GRADUAL_DEGRADATION'% 渐进退化            end        end        function trigger_retraining(obj, degradation_type)            % 触发重新训练            fprintf('检测到模型退化: %s\n', degradation_type);            switch degradation_type                case 'CONCEPT_DRIFT'                    % 概念漂移:需要重新标注数据                    obj.collect_new_data(1000);  % 收集新数据                    obj.request_relabeling();     % 请求重新标注                    obj.retrain_full_model();      % 完整重训练                case 'DATA_DRIFT'                    % 数据分布变化:增量学习                    new_data = obj.collect_recent_data(500);                    obj.incremental_learning(new_data);                case 'MODEL_STALENESS'                    % 模型过时:更新模型                    obj.transfer_learning();                case 'AMBIENT_CHANGE'                    % 环境变化:调整参数                    obj.adjust_parameters();                case 'GRADUAL_DEGRADATION'                    % 渐进退化:正常更新                    obj.scheduled_retraining();            end            % 记录维护日志            obj.log_maintenance(sprintf('模型重训练: %s', degradation_type));        end    endend

案例六:样本不平衡,真实世界没有“均衡”

工厂里的数学现实

典型分布

  • 合格品:98.5%
  • 轻微缺陷:1.0%
  • 严重缺陷:0.5%
  • 致命缺陷:0.05%

问题:如果只看准确率,模型只要把所有东西都判为“合格”,就有98.5%准确率!

不平衡学习策略

策略1:代价敏感学习

function cost_sensitive_model = train_with_cost_sensitive(X, y)    % 不同类别的误分类代价    % 漏检致命缺陷的代价 >> 误判合格品的代价    cost_matrix = [        0   1   10  100;  % 预测为合格        5   0   20  50;   % 预测为轻微缺陷        20  5   0   30;   % 预测为严重缺陷        50  20  5   0     % 预测为致命缺陷    ];    % 行: 真实类别, 列: 预测类别    % 代价敏感训练    cost_sensitive_model = fitcsvm(...        X, y, ...        'Cost', cost_matrix, ...        'ClassNames', {'OK''Minor''Major''Critical'});end

策略2:分层采样与数据增强

function balanced_data = balance_dataset(original_data, original_labels)    % 获取各类别数量    [class_counts, class_names] = histcounts(categorical(original_labels));    % 确定目标数量(中位数或最大值)    target_count = max(class_counts);    balanced_data = {};    balanced_labels = {};    for i = 1:length(class_names)        class_name = class_names{i};        class_indices = find(strcmp(original_labels, class_name));        class_data = original_data(class_indices);        current_count = length(class_indices);        if current_count < target_count            % 少数类:过采样+数据增强            augmented_data = augment_minority_class(...                class_data, target_count - current_count);            balanced_data = [balanced_data; class_data; augmented_data];            balanced_labels = [balanced_labels; ...                repmat({class_name}, current_count + length(augmented_data), 1)];        else            % 多数类:欠采样            if current_count > target_count                selected_indices = randperm(current_count, target_count);                class_data = class_data(selected_indices);            end            balanced_data = [balanced_data; class_data];            balanced_labels = [balanced_labels; repmat({class_name}, length(class_data), 1)];        end    endend

策略3:集成多个专门模型

function ensemble_model = create_ensemble_for_imbalanced_data(training_data)    % 训练多个专门模型    models = {};    % 模型1: 专门检测致命缺陷(高召回率)    model1 = train_specialist_model(training_data, ...        'focus_class''Critical', ...        'recall_weight'0.9);  % 侧重召回率    % 模型2: 高精度模型(减少误报)    model2 = train_specialist_model(training_data, ...        'focus_class''all', ...        'precision_weight'0.7);  % 侧重精确率    % 模型3: 处理边界情况    model3 = train_specialist_model(training_data, ...        'focus_class''borderline', ...        'focus_on_uncertain'true);    % 集成策略    ensemble_model = struct(...        'models', {models}, ...        'voting_strategy'@weighted_voting, ...        'confidence_calibration'@calibrate_confidence);endfunction final_prediction = weighted_voting(predictions, confidences, labels)    % 根据类别重要性加权投票    class_weights = struct(...        'OK'1.0, ...        'Minor'2.0, ...        'Major'5.0, ...        'Critical'10.0);    weighted_votes = containers.Map;    for i = 1:length(predictions)        pred = predictions{i};        conf = confidences(i);        weight = class_weights.(pred) * conf;        if isKey(weighted_votes, pred)            weighted_votes(pred) = weighted_votes(pred) + weight;        else            weighted_votes(pred) = weight;        end    end    % 选择权重最高的    [max_weight, final_prediction] = max(cell2mat(values(weighted_votes)));end

案例七:持续学习,让算法越用越聪明

从静态模型到生长模型

持续学习架构

classdef ContinualLearningSystem < handle    properties        BaseModel        ExperienceMemory        Plasticity  % 可塑性,控制学习速度        Stability   % 稳定性,防止遗忘    end    methods        function online_learning(obj, new_data, new_labels, feedback)            % 在线学习循环            % 1. 评估新数据            [predictions, confidences] = obj.BaseModel.predict(new_data);            % 2. 识别有价值样本            valuable_samples = obj.select_valuable_samples(...                new_data, new_labels, predictions, confidences, feedback);            % 3. 添加到经验记忆            obj.update_experience_memory(valuable_samples);            % 4. 平衡稳定-可塑性困境            if obj.should_update_now()                % 计算更新强度                update_strength = obj.Plasticity * obj.calculate_need_to_learn(feedback);                % 控制遗忘                forgetting_prevention = obj.Stability * obj.calculate_importance_of_old_knowledge();                % 执行更新                obj.update_model(update_strength, forgetting_prevention);            end            % 5. 知识整合            obj.integrate_knowledge();            % 6. 模型自评估            obj.self_evaluation();        end        function valuable_samples = select_valuable_samples(obj, ...                new_data, new_labels, predictions, confidences, feedback)            % 选择有学习价值的样本            valuable_mask = false(size(new_data, 1), 1);            for i = 1:size(new_data, 1)                sample_value = 0;                % 误分类样本                if ~strcmp(predictions{i}, new_labels{i})                    sample_value = sample_value + 0.4;                end                % 低置信度样本                if confidences(i) < 0.7                    sample_value = sample_value + 0.3;                end                % 人类反馈修正的样本                if ~isempty(feedback) && ~strcmp(predictions{i}, feedback{i})                    sample_value = sample_value + 0.5;                end                % 新颖性(与记忆中的样本不同)                novelty = obj.calculate_novelty(new_data(i, :));                sample_value = sample_value + novelty * 0.3;                % 添加到有价值样本                if sample_value > 0.5                    valuable_mask(i) = true;                end            end            valuable_samples = struct(...                'data', new_data(valuable_mask, :), ...                'labels', new_labels(valuable_mask), ...                'value_score', sample_value(valuable_mask));        end        function update_model(obj, update_strength, forgetting_prevention)            % 执行模型更新            % 从经验记忆中采样            batch = obj.sample_from_experience();            % 计算损失(包含防止遗忘的正则化)            loss = obj.calculate_loss(batch) + ...                   forgetting_prevention * obj.calculate_forgetting_penalty();            % 更新模型参数            obj.BaseModel = obj.update_parameters(...                obj.BaseModel, loss, update_strength);            % 更新可塑性和稳定性            obj.adapt_plasticity_stability();        end    endend

下期预告

解决了准确率问题,下一步是速度

《从秒级到毫秒级:工业AI推理的极限优化实战》

我们将深入:

  • 模型剪枝:如何砍掉90%参数,只损失1%精度
  • 量化部署:INT8量化实战,速度提升3倍的秘密
  • 算子融合:手动改写CUDA核函数,性能再提升50%
  • 流水线优化:从单帧处理到流水线,吞吐量提升5倍
  • 硬件极限:如何把GPU算力榨干到99%

关注我,每周一篇工业AI实战干货,从理论到产线,我们一起走通最后1公里。

工业AI #机器学习 #计算机视觉 #质量控制 #智能制造 #深度学习 #模型部署

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