深度学习实战:看图说话与微表情识别完整实验资源
简介这套课程设计资料包聚焦‘看图说话’与‘微表情识别’两个计算机视觉任务面向需要完成人工智能导论课程设计的学生以及希望快速上手图像描述与人脸情绪识别的开发者。项目基于Python与TensorFlow/Keras提供了从数据准备、模型构建到训练推理的完整Notebook源码并附带Haar级联人脸检测器可在检测到人脸后进一步判断表情。压缩包共含9个文件以3个Jupyter Notebook为核心辅以Markdown说明文档、Word课程论文报告、XML人脸检测配置及License整体仅5.78MB便于下载后直接运行。已有338人学习浏览适合作为人工智能入门项目参考。通过这份资料包读者能了解图像描述任务中特征提取与序列生成的基本思路掌握基于CNN的人脸表情分类流程并利用课程论文报告梳理实验背景、方法与结论有助于高效完成课程作业或构建项目原型。1. 人工智能导论课程实验看图说话与微表情识别一份能直接跑的 Python 资源期末前一周导师丢来一个导论课大作业让程序看一眼图片先说出一句人话描述再判断图里的人是什么情绪。这份「人工智能导论—看图说话微表情识别.zip」就是我当时用的整套实验资产里面是 Jupyter Notebook 源码、课程论文报告 word、以及 OpenCV 的 haarcascade 人脸检测模型技术栈是 TensorFlow Keras。它解决的问题很具体Image Captioning看图说话和 Facial Expression Recognition微表情识别在一个流水线里串起来先描述画面再锁定人脸给情绪标签。适合正在做课设、需要完整可运行 demo 的学生也适合想把这两个任务组合起来跑一遍的初学者。资源里带着 README 和论文报告模板照着 Notebook 的执行顺序走半天能出结果。2. 把图片变成一句话看图说话的编码器-解码器结构2.1 为什么是 CNN RNN图像特征与语言序列的天然错位看图说话的本质是跨模态翻译输入是二维像素矩阵输出是一维词序列。这两者没法直接对齐所以主流做法是把任务拆成编码和解码两段——用 CNN 把图片压成一个固定维度的语义向量再用 RNN/LSTM 把这个向量展开成句子。这个方案在资源里的实现方式是预训练 CNN 负责提特征Keras 的 LSTM 层负责逐个生成单词。特征提取这一步我一般会去掉预训练模型的全连接层只保留卷积部分的输出。比如 ResNet50 在include_topFalse时输入一张 224x224 的图输出形状是(7, 7, 2048)这 2048 个通道就是图片的语义编码。不要直接拿原始像素喂 RNN像素级信息太稀疏模型很难学到「猫坐在垫子上」这种抽象描述。常见做法是加一个全局平均池化把(7, 7, 2048)压成(2048,)或者保留空间维度做注意力。import tensorflow as tf from tensorflow.keras.applications import ResNet50 from tensorflow.keras.layers import GlobalAveragePooling2D, Dense # 加载预训练 CNN去掉顶部的全连接层 cnn_encoder ResNet50(weightsimagenet, include_topFalse, input_shape(224, 224, 3)) cnn_encoder.trainable False # 编码器冻结只训练后面的语言部分 inputs tf.keras.Input(shape(224, 224, 3)) features cnn_encoder(inputs, trainingFalse) # 把 7x7x2048 的空间特征压成 2048 维向量 pooled GlobalAveragePooling2D()(features) project Dense(512, activationrelu)(pooled) print(project.shape) # (None, 512)这里trainable False是关键冻结编码器能避免在小数据集上把预训练权重冲垮。Dense(512)相当于给解码器一个低维入口512 是经验值显存紧就降到 256。注意trainingFalse要显式传因为 BatchNorm 层在推理和训练时的行为不一致不传会出玄学报错。2.2 从 teacher forcing 到 beam search训练和推理是两套逻辑训练时用 teacher forcing解码器的每一步输入都是上一步的真实单词而不是模型自己预测的词。这样做收敛快但代价是推理阶段没有真实词可用模型得用自己的预测喂给自己误差会累积。这个资源里训练循环和推理循环是分开写的别混在一起。训练阶段的核心是交叉熵损失目标词序列被 one-hot 编码后和 LSTM 输出做对齐from tensorflow.keras.layers import LSTM, Embedding # 词表大小假设是 5000caption 最大长度 20 vocab_size 5000 max_len 20 decoder_inputs tf.keras.Input(shape(max_len,)) # 输入是词索引序列 embedding Embedding(vocab_size, 256, mask_zeroTrue)(decoder_inputs) lstm_out LSTM(512, return_sequencesTrue)(embedding) outputs Dense(vocab_size, activationsoftmax)(lstm_out) model tf.keras.Model(inputs[inputs, decoder_inputs], outputsoutputs) model.compile(optimizeradam, losssparse_categorical_crossentropy)mask_zeroTrue是给 padding 用的caption 长度不一短句要补零到max_len如果不遮住这些零模型会学着输出「无意义词」。推理时就不一样了得用自回归生成最常见的是 beam search维护一个候选序列集合每一步保留概率最高的 Top-K 个分支def greedy_predict(image_feature, start_token, max_len20): sequence [start_token] for _ in range(max_len): # 把当前序列补零到固定长度再喂给模型 padded tf.keras.preprocessing.sequence.pad_sequences( [sequence], maxlenmax_len, paddingpost ) pred model.predict([image_feature, padded], verbose0)[0] next_word int(tf.argmax(pred[len(sequence) - 1])) if next_word end_token: break sequence.append(next_word) return sequencebeam search 比贪心解码好在哪里贪心只看当前一步最优容易卡在重复词上beam search 保留多个候选最后选整体概率最高的那个。数据量小的时候 beam width 设 3 就够设大了推理时间成倍涨效果提升有限。下面这份超参数表是这套实验的常见配置直接抄作业也没问题参数建议值说明CNN 编码器ResNet50 或 VGG16预训练权重冻结训练词嵌入维度256太小学不到语义太大显存撑不住LSTM 单元数512解码器核心容量Beam width3推理阶段的候选分支数Max caption length20超过这个长度的句子直接截断Batch size32Colab 免费版 GPU 的安全值3. 先找到脸再判断情绪两段式微表情流水线3.1 haarcascade 的定位用 20 行代码把脸从画面里抠出来微表情识别和看图说话不一样情绪只跟人脸区域有关背景全是噪声。所以资源里放了一个haarcascade_frontalface_default.xml这是 OpenCV 自带的级联分类器用它先把人脸框出来再送进情绪分类模型。选 haarcascade 而不是 MTCNN 或 RetinaFace理由很实际它是个单文件不依赖额外模型下载CPU 上跑一帧也就几十毫秒课设场景完全够用。import cv2 face_cascade cv2.CascadeClassifier(haarcascade_frontalface_default.xml) img cv2.imread(test.jpg) gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) faces face_cascade.detectMultiScale( gray, scaleFactor1.1, minNeighbors5, minSize(48, 48) ) for (x, y, w, h) in faces: face_roi img[y:yh, x:xw] # 情绪分类模型一般接受 48x48 灰度图 face_resized cv2.resize(face_roi, (48, 48))scaleFactor1.1表示每次缩放 10%值越小检测越慢但召回率越高minNeighbors5是邻居矩形阈值太小会出大量误检框太大会漏掉侧脸。minSize(48, 48)要和后面情绪模型的输入尺寸对上不然裁剪出来还得再拉伸脸会变形。灰度图转换在这里是必需的haar 特征本身就是基于灰度亮度差异设计的直接喂彩色图反而会出问题。3.2 情绪分类与七个类别FER 任务的标签空间人脸情绪识别FER的标准标签空间是 7 类angry、disgust、fear、happy、sad、surprise、neutral。这个资源和多数公开数据集一致用的是 FER2013 的类别划分。分类模型是个小型 CNN输入 48x48 灰度图输出 7 类概率结构上比看图说话的模型简单得多但训练时有个大坑——类别严重不均衡happy 样本是 disgust 的几十倍直接训出来的模型对 disgust 几乎永远预测不对。数据增强是缓解这个问题的常规手段。Keras 里的ImageDataGenerator可以做随机旋转、平移、水平翻转相当于把数据集扩了好几倍。不过水平翻转要小心情绪是有方向性的比如「厌恶」这种表情翻过来可能就不太自然了。推理部分的代码长这样from tensorflow.keras.models import load_model emotion_model load_model(emotion_model.h5) emotion_labels [angry, disgust, fear, happy, sad, surprise, neutral] # face_resized 是 48x48 的 BGR 人脸图 gray_face cv2.cvtColor(face_resized, cv2.COLOR_BGR2GRAY) gray_face gray_face / 255.0 # 归一化到 [0, 1] gray_face gray_face.reshape(1, 48, 48, 1) pred emotion_model.predict(gray_face)[0] label_idx int(tf.argmax(pred)) print(f情绪: {emotion_labels[label_idx]}, 置信度: {pred[label_idx]:.2f})注意gray_face / 255.0这步训练时做过的预处理推理时必须原样做一遍少一步模型输出就全乱。reshape(1, 48, 48, 1)是给 CNN 的输入加 batch 维度和通道维度灰度图通道数是 1如果你训练时用的是 3 通道这里就得改成cv2.cvtColor(..., cv2.COLOR_GRAY2BGR)再 reshape 成(1, 48, 48, 3)。资源里的 Notebook 这两种写法都出现过跑之前先看一眼 README 里写的是哪种预处理。4. 在 Colab 里把 Notebook 完整跑通依赖、路径与执行顺序4.1 从 zip 到可运行环境目录结构与 GPU 选择资源里自带了一个欢迎使用_Colaboratory.ipynb这是 Google Colab 的初始化 notebook提示你把代码和数据上传到云端环境里。Colab 免费版给的 GPU 是 Tesla T4显存 16GB跑这套实验绰绰有余比本地 CPU 快十倍不止。先把 zip 传到 Colab 再解压这一步很多人直接跳过然后路径全乱我建议按下面这个固定顺序来!unzip /content/人工智能导论—看图说话微表情识别.zip -d /content/ai_project !ls -la /content/ai_project解压之后先ls看一眼实际目录结构确认 Notebook 是直接躺在根目录还是套了一层子目录。这个动作能省下后面一堆「file not found」的血泪时间。.ipynb里的相对路径都是基于/content的所以解压到/content/ai_project之后所有读文件的路径都要带上这个前缀。GPU 这边运行时类型要手动切到 GPU。Colab 的默认运行时是 CPU直接跑 LSTM 训练会慢到怀疑人生。切换路径代码执行程序 - 更改运行时类型 - 硬件加速器选 GPU。进去之后可以用一行命令确认import tensorflow as tf print(tf.config.list_physical_devices(GPU))打印出来有PhysicalDevice列表就说明 GPU 生效了。如果没有检查是不是切完运行时没重启会话Colab 切换硬件加速器需要重启内核才生效这是最常见的翻车点。4.2 模型文件的加载与 checkpoint 的使用Notebook 里包含训练和推理两个阶段训练好的模型权重会存成.h5文件推理阶段再加载回来。这里有个执行顺序问题如果直接从推理部分开始跑会找不到权重文件报错。资源里给的正确顺序是先跑训练部分或者直接跳过训练加载预训练权重再跑推理。# 训练完保存权重 model.save_weights(caption_model_weights.h5) # 另一个 notebook 里加载 model.load_weights(caption_model_weights.h5)save_weights只存参数不存结构加载前必须先构建一个结构完全一致的模型。如果你用的是model.save()保存整个模型那加载时就不需要重新构建load_model会自带结构信息。资源里两种方式都有看 README 里的说明区分清楚。checkpoint 建议用ModelCheckpoint回调来做而不是等训练完全结束再手动保存因为 Colab 免费版跑久了会断线连接断开后训练进度全丢没有后悔药。加上回调之后每个 epoch 结束自动存一份权重from tensorflow.keras.callbacks import ModelCheckpoint checkpoint ModelCheckpoint( filepath/content/best_model_{epoch:02d}.h5, monitorval_loss, save_best_onlyTrue, verbose1 ) model.fit( train_dataset, validation_dataval_dataset, epochs30, callbacks[checkpoint] )monitorval_loss表示只在验证集损失下降时才覆盖保存save_best_onlyTrue防止每个 epoch 都存一份把磁盘塞满。遇到 Colab 断线重新打开 notebook 后直接加载best_model_xx.h5继续推理就行不用从头再训。5. 避坑清单六个让实验翻车的常见问题5.1 训练 loss 一直卡在 log(类别数) 附近不动现象情绪分类模型训练了十几个 epochloss 始终在 1.9 左右徘徊accuracy 约等于 1/7跟瞎猜没什么区别。原因这是典型的类别不均衡表现。FER 数据集的 7 类样本数量差异巨大happy 类可能占了 40%disgust 可能只有 2%模型学会了「全部预测成 happy」就能拿到不错的准确率但 loss 被稀有类拖住下不去。解决先对标签做加权给稀有类别更大的惩罚权重。class_weight参数直接传给fitfrom sklearn.utils.class_weight import compute_class_weight class_weights compute_class_weight( class_weightbalanced, classesnp.unique(train_labels), ytrain_labels ) class_weights dict(enumerate(class_weights)) model.fit(..., class_weightclass_weights)class_weightbalanced会自动按样本数量的倒数计算权重比如 disgust 样本少它的 loss 占比就自动放大。这是我们实验室的标配做法不加这个权重稀有类几乎永远学不出来。5.2 加载 .h5 文件时报 Unknown Layer现象用load_model(emotion_model.h5)加载时抛出ValueError: Unknown layer: Attention之类的错误。原因模型里用了自定义层或者其他 notebook 里定义的层但当前运行环境里没有注册这个类。Keras 加载整个模型时需要重建层结构遇到它不认识的类就会直接抛异常。解决把自定义层的定义代码复制到当前 notebook 里先定义类再加载模型from tensorflow.keras.layers import Layer class Attention(Layer): def __init__(self, **kwargs): super().__init__(**kwargs) def call(self, inputs): # 自定义注意力计算逻辑 return inputs # 先定义上面的类再执行 load_model model load_model(emotion_model.h5, custom_objects{Attention: Attention})custom_objects字典就是给 Keras 提供「不认识层的反查表」key 是层名value 是类对象。这个错在注意力机制的模型里出现频率极高每次换电脑跑资源里的代码第一步都是把这几个类定义复制过去。5.3 haarcascade 路径找不到现象cv2.CascadeClassifier(haarcascade_frontalface_default.xml)之后detectMultiScale返回空列表或者构造函数直接报警告说文件不存在。原因相对路径依赖当前工作目录。Notebook 里执行代码时工作目录可能和 xml 文件所在的目录不一致尤其是你从 zip 解压后换过目录、或者手动改过文件位置。解决不要赌相对路径用绝对路径定位文件并在代码里加一行存在性检查import os haar_path /content/ai_project/haarcascade_frontalface_default.xml assert os.path.exists(haar_path), f文件不存在: {haar_path} face_cascade cv2.CascadeClassifier(haar_path)assert一行就能在文件缺失时立刻发现问题而不是等detectMultiScale静默返回空结果。我吃过这个亏当时误检率奇高排查半天才发现 xml 没加载进来级联分类器是个空的。顺便说一句如果 zip 里的 xml 损坏或者版本太老可以直接用当前环境里自带的版本OpenCV 安装包里通常有完整的 haar 级联文件。5.4 Keras 版本的 loss 函数参数变动现象训练时categorical_crossentropy报错提示from_logits参数相关的问题或者 loss 值在验证集上出现负数。原因TensorFlow 2.x 里 Keras 的compile对 loss 函数的输入做了严格约束。如果你的模型输出层用的是softmax那 loss 应该是categorical_crossentropy且from_logitsFalse如果输出层没有 softmax就得设from_logitsTrue。两者设置反了训练过程不会直接崩但数值表现非常诡异。解决统一输出层结构。这里我一般倾向于输出层不带 softmax在 loss 里用from_logitsTrue数值稳定性更好outputs Dense(vocab_size)(lstm_out) # 没有 softmax model.compile( optimizeradam, losstf.keras.losses.SparseCategoricalCrossentropy(from_logitsTrue) )from_logitsTrue让 loss 内部同时完成 softmax 和交叉熵计算Keras 官方文档也推荐这种写法因为数值上更稳定能避免 softmax 之后再取 log 造成的精度损失。5.5 Colab 断线导致训练进度全丢现象训练到第 20 个 epochColab 突然断开连接重连之后发现所有变量全没了模型权重回到初始状态。这是云端 notebook 最容易踩的坑断线后内核重启内存里的模型和训练进度一并清空。原因Colab 免费版有闲置超时机制长时间不操作会自动断开另外浏览器切后台也可能触发掉线。而 notebook 里的变量只存在内存中不掉线怎么都好说一掉线什么都没了。解决训练过程开启 checkpoint 和 TensorBoard 日志。模型每轮保存到云盘里断线后直接加载最后一次保存的权重继续省得重新跑几十个 epoch。另外一个土办法是训练循环里定期把当前 epoch 写到一个文本文件里重连后读取这个文件决定从第几个 epoch 接着跑。5.6 Windows 下中文注释的 Notebook 编码错乱现象在 Windows 本地用 Jupyter 打开资源里的.ipynb中文注释变成乱码甚至直接报UnicodeDecodeError打不开文件。原因.ipynb本质是 JSON 文件内部编码是 UTF-8。Windows 上某些编辑器默认用 GBK 打开把 UTF-8 的多字节中文拆坏了。另外资源文件名自带中文「人工智能导论—看图说话微表情识别.zip」Windows 上解压工具如果用的老版本可能把文件名编码搞乱。解决不要用双击方式打开先在 Jupyter Notebook 里通过上传功能导入或者用代码显式指定编码读取。文件名带中文的话解压后可以先改成纯英文目录名省得后面路径处理一堆编码问题。macOS 和 Linux 上没这个毛病Windows 用户尤其注意。6. 给模型拍 X 光片把注意力权重画回原图到了最后一步模型跑通了指标也报出来了但你怎么跟别人解释「模型确实在看脸」口头说没用得可视化。这里给一个我每次都会用的小技巧把 CNN 最后一个卷积层的输出做加权热力图叠加回原图直观展示模型关注哪些区域。这个方法对微表情识别尤其合适——你应该能看到热力图集中在眼睛和嘴巴周围而不是飘在背景上。import numpy as np import cv2 from tensorflow.keras.models import Model # 取人脸模型的最后一个卷积层输出 last_conv_layer emotion_model.get_layer(conv2d_3) heatmap_model Model( inputsemotion_model.input, outputs[last_conv_layer.output, emotion_model.output] ) # 用梯度计算每个通道的权重 with tf.GradientTape() as tape: conv_output, predictions heatmap_model(face_input) pred_class tf.argmax(predictions[0]) loss predictions[:, pred_class] grads tape.gradient(loss, conv_output) pooled_grads tf.reduce_mean(grads, axis(0, 1, 2)) heatmap tf.reduce_sum(conv_output * pooled_grads, axis-1)[0] heatmap np.maximum(heatmap, 0) heatmap / np.max(heatmap) # 归一化到 [0, 1] # 热力图缩放到原图尺寸后叠加 heatmap cv2.resize(heatmap, (face_resized.shape[1], face_resized.shape[0])) heatmap np.uint8(255 * heatmap) heatmap_color cv2.applyColorMap(heatmap, cv2.COLORMAP_JET) overlay cv2.addWeighted(face_resized, 0.6, heatmap_color, 0.4, 0)这就是 Grad-CAM 的简化版。原理不复杂把预测类别对应的 loss 对卷积层输出求梯度梯度均值代表每个通道对分类决策的贡献拿这个贡献加权求和卷积层输出得到的就是模型眼中的「重点区域」。热力图越红的地方对最终判断影响越大。我习惯把可视化做成一个独立函数输入任意一张人脸图同时输出情绪标签和叠加热力图整个过程 30 秒。如果热力图显示模型在看额头或者下巴基本可以判断预处理有问题——最常见的是人脸对齐没做脸歪了模型就乱看。至此整套资源从「图片到文本」再到「人脸到情绪」的运行机制已经全部打通。从那以后我每次拿到一个课程项目包都会强制自己先跑通 notebook、再读 README、最后才看论文报告——这个顺序能救命的次数太多了。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

REA建模框架:用资源-事件-代理重构业务系统数据模型

REA建模框架:用资源-事件-代理重构业务系统数据模型

项目名就叫"rea",一眼看过去像是随手敲的缩写,我接到手的时候差点当成了某个组件库的代号。但认真啃了两天资料之后,我确认它其实是REA 资源事件代理建模框架——一个能把业务系统数据模型讲得清清楚楚的老古董级思想,虽…

2026/10/11 9:49:51 阅读更多 →
基于SpaCy的实体关系抽取与Neo4j知识图谱构建实战

基于SpaCy的实体关系抽取与Neo4j知识图谱构建实战

简介:《知识图谱构建实战:Neo4j与SpaCy实体关系抽取全流程》是一份面向Python开发者与NLP学习者的技术手册,系统讲解从文本中抽取实体与关系、并存入Neo4j完成知识图谱构建的完整链路。文档分十二章循序展开:先介绍知识图谱基础及…

2026/10/11 9:49:51 阅读更多 →
DeepSeek本地部署指南:Ollama+Chatbox构建私人知识库全流程

DeepSeek本地部署指南:Ollama+Chatbox构建私人知识库全流程

简介:面向AI初学者与注重数据安全的用户,这份PDF教程系统讲解DeepSeek本地部署全流程,帮助读者避开官方服务器繁忙限制,防止数据外泄。教程先介绍DeepSeek-Coder、DeepSeek-Chat、DeepSeek-MoE等版本特点及内置提示词库&#xff0…

2026/10/11 9:49:51 阅读更多 →

最新新闻

AI Coding终端失控?cmux会话编排层统一管理Agent与浏览器

AI Coding终端失控?cmux会话编排层统一管理Agent与浏览器

AI Coding一开就是几十个终端,这不只是乱的问题,是根本管不过来的问题。写代码的时候,右边跑着Agent在改文件,左边是LSP日志,中间还挂着前端开发服务器,底下再来几层测试输出,屏幕上密密麻麻全是…

2026/10/11 10:37:15 阅读更多 →
SpringBoot+Vue实战:拖拽式可编辑大屏的架构设计与实时渲染

SpringBoot+Vue实战:拖拽式可编辑大屏的架构设计与实时渲染

做数据可视化这几年,我最怕听到的不是"这个需求做不了",而是"这个图能不能换个位置"。大屏项目上线第一天效果惊艳,第二天需求方就开始围着屏幕指指点点:这个指标挪到右上角,那个颜色换成品牌蓝&a…

2026/10/11 10:37:15 阅读更多 →
9月GitHub开源项目盘点:20个开发者工具与AI生态利器

9月GitHub开源项目盘点:20个开发者工具与AI生态利器

又到了每个月末的惯例时间:我会把 GitHub 上这一个月冒出来的趋势项目整体翻一遍,按自己的标准筛掉水分,挑出真正值得花时间看的“尖货”记进备忘录。9 月这波特别值得写,因为很多暑期的个人项目、实验室预研、还有攒了大半年的内…

2026/10/11 10:37:15 阅读更多 →
PHP风控体系集成活体识别:架构设计、实操与合规审查

PHP风控体系集成活体识别:架构设计、实操与合规审查

1. 活体识别在风控体系中的定位与整体设计思路1.1 为什么风控场景需要活体识别做过风控系统的人都有一个共识:身份核验是整个风控链路里最容易被攻击、也最不能出错的一环。早些年很多平台做实名认证,用户上传一张身份证照片加一张自拍就完事了&#xff…

2026/10/11 10:37:15 阅读更多 →
TK海外抢单源码实战:前后端分离与抢单并发控制解析

TK海外抢单源码实战:前后端分离与抢单并发控制解析

简介:TK海外抢单源码是一套面向TikTok任务分发场景的完整前后端分离项目,适合有PHP与uniapp基础的开发者,或需要搭建自动抢单平台的运营者参考使用。前端基于uniapp框架,可编译至App、H5及小程序等多端,并采用静态文件…

2026/10/11 10:37:15 阅读更多 →
DeepSeek-R1推理模型提示语设计实战指南

DeepSeek-R1推理模型提示语设计实战指南

简介:清华大学新闻与传播学院新媒体研究中心推出的这份DeepSeek入门到精通指南,聚焦国产大模型DeepSeek及开源推理模型DeepSeek-R1的研发与应用,适合有一定AI基础、希望深入实践推理模型的研究人员和技术爱好者。内容从“DeepSeek是什么”“能…

2026/10/11 10:36:15 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →