从零搭建动物识别系统:图像分类与迁移学习实战指南
如果你在大学里学过人工智能相关的课程大概率绕不过一个叫“动物识别系统”的实验。它看起来人畜无害给模型一张猫的图片它得说出“猫”给一张狐狸的图片它得说出“狐狸”。现象听起来简单但从零去实现的时候数据准备、模型选型、训练调参、验证逻辑几乎每一步都能把新手按在地上摩擦。我做过几轮类似的图像分类项目也从最开始照着网上的代码都能跑崩走到后来能独立把一套流程从图片目录搭到模型预测。这篇文章不绕弯子直接把项目的原理和实操细节一起拆开讲。这篇文章想帮三种人一是在校做实验课作业、被各种报错卡住的学生二是自学图像分类、想拿一个完整项目练手的开发者三是已经能跑通模型但总觉得结果很“玄学”想搞明白模型为什么好、为什么差的人。下面我用从零搭建动物识别系统的过程作为主线把整个链路从头到尾过一遍。1. 项目破题从像素到标签动物识别系统的底层逻辑1.1 机器看到的不是“动物”是一个数字矩阵人类看到一张狗的照片会瞬间认出这是狗哪怕它角度奇特、背景杂乱、光线昏暗。但计算机没有“狗”的概念它看到的只是一串数字一张224×224的彩色图片展开后是224×224×3150528个像素值每个值在0到255之间分别表示红、绿、蓝三个通道的亮度。识别系统的任务就是让模型从这15万个数字里找出规律最终输出一个类别标签。这就像在机场接人。你不会去记住朋友脸上每个毛孔的位置而是记住眼睛、鼻子、脸型这些关键特征的组合。卷积神经网络做的事情也类似浅层网络学习边缘、线条、纹理等低级特征深层网络把这些组合成“耳朵的形状”“背部的花纹”这类语义部件。动物识别之所以适合入门是因为它的特征既不是抽象到难以调试也不是单调到无聊。动物之间的体型差异、条纹、毛发纹理恰好能让网络一层一层地把特征学出来。1.2 为什么这个题目成了经典实验我见过很多课程实验几乎每年都会出现动物识别系统或者它的变体。核心原因有三点。第一数据容易获得。动物的公开图片非常丰富不管是直接下载整理好的分类数据集还是自己写个小脚本抓图都能在短时间内凑出规模够用的图片集。第二结果直观。模型的输出可以直接可视化一张图丢进去返回“这是熊猫置信度0.92”。哪怕完全不懂深度学习的人也能看懂你在做什么这对实验汇报和自查都特别友好。第三问题复杂度适中。动物类别之间既有明显差异猫和大象又有容易混淆的物种狼和狐狸这意味着模型既能学到有效特征又不会简单到没有挑战。同时它踩的坑——过拟合、类别不均衡、预处理不一致——是图像分类所有任务共通的。做懂了动物识别换个花卉识别、场景识别、表情识别路数一模一样。顺带一提这个题目还天然适合迁移学习演示。因为常规实验拿到的数据量并不大正好能展示出“预训练模型加微调”相对于“从零训练”的优势。这也是我在下面要重点展开的部分。2. 方案选型先定技术路线再写代码才是省时间的做法2.1 从零搭建CNN还是直接迁移学习动手之前得先回答一个问题模型从哪里来是自己在纸上搭一个几层的卷积网络从随机参数开始训练还是借用别人已经在大型数据集上训练好的模型稍微改一改拿来用这两种方案没有绝对的好坏只看你的数据量和算力。假如你手里有几万张动物图片算力也充足从零搭建CNN完全可行。网络能从头开始学习动物特征而且你能亲眼看到每一层卷积核学到的是什么理解更深。但大多数实验场景不是这样。我见过不少人拿几百张图片就尝试从零训练一个深度网络结果训练集准确率能到98%验证集准确率却只有60%。为什么因为模型容量远大于数据量它把训练集的图片“背”下来了而不是从中学到了泛化规则。这就是过拟合是新手最容易撞上的墙。这时候就轮到迁移学习登场了。用通俗的话说预训练模型已经在数千万张通用图像上学过“怎么看图”。它知道怎么识别边缘、纹理、形状这些底层能力在不同任务之间是通用的。我们只需要把模型的最后几层换掉让它学会从通用特征里挑选出“哪些特征组合对应猫”“哪些对应大象”。这等于你请了一位已经很有经验的老师傅只需要告诉他新工作里的分类规则而不是从零教他什么是图片。我的建议很直接实验、练手、个人项目优先考虑迁移学习。具体选哪个预训练模型要看你的运行环境。CPU跑就用MobileNet这种轻量网络速度快效果也不差有GPU可以用ResNet50或EfficientNet精度上限更高。2.2 数据集的三个隐藏问题不均衡、错标与划分混乱模型还没开始训练数据准备工作就先决定了一大半的上限。很多人把整理数据集当成复制文件夹的小事最后模型死活不听话回头排查才发现问题出在数据上。第一个问题是类别不均衡。假设“猫”有1000张图“狐狸”只有50张模型看到狐狸样本的机会太少就会倾向于把所有看起来模棱两可的图都判成猫。因为哪怕全猜猫总体准确率也很高。解决办法有两个方向一是给数量少的类别做数据增强把50张变成200张二是抽样时让每个类别在每个batch里出现的次数尽量接近。第二个问题是标签错误和脏数据。网上抓图和手工整理数据时很容易混入损坏的图片、非动物的风景照、甚至标签标错的情况。这些错误样本会让模型学到错误关联。我在实践中的一个做法是训练之前先对每一类图片随机抽几十张出来肉眼扫一遍发现问题直接删除或重新归类。花十五分钟做这件事能省下好几个小时的训练调试时间。第三个问题是训练集、验证集、测试集的划分。这个我后面还会细说但先把原则立在这里三类数据要严格分开验证集是帮你调模型的测试集是最后才拿出来做最终评估的。如果验证集或测试集和训练集有重叠相当于考试前把答案塞给了学生评估结果就没有意义。3. 完整实操记录从图片目录到训练出能用的识别模型3.1 环境与数据准备把所有图片按目录结构放好我习惯用一个很朴素的目录组织方式把每个类别当作一个文件夹文件夹名字就是类别标签。训练集、验证集、测试集分别放在三个顶层目录下。示意如下animal_dataset/ ├── train/ │ ├── cat/ # 200张猫图 │ ├── dog/ # 200张狗图 │ └── panda/ # 150张熊猫图 ├── val/ │ ├── cat/ │ ├── dog/ │ └── panda/ └── test/ ├── cat/ ├── dog/ └── panda/这样组织的好处是不需要另外维护一张琐碎的标注表框架自带的目录加载工具会直接从路径里读出标签。调用数据加载器时它能自动给每个文件夹下的图片分配标签索引。后面只需要保证训练、验证、测试三个目录里的类别名称一致就行。环境方面Python版本我建议用3.8以上。框架选择TensorFlow/Keras或者PyTorch都行下面示例用Keras因为它的API更直观适合新手理解。第一次做这个项目时我只有一台不带独立显卡的笔记本用MobileNetV2在CPU上训练也能跑得动——每个epoch大概一两分钟坚持十几个epoch完全可接受。所以别被“训练模型必须要有GPU”的说法吓住先把流程跑通再谈加速。数据加载时有一件事容易被忽略训练集可以做数据增强随机翻转、旋转、缩放、调亮度验证集和测试集不需要。原因也很直接数据增强是为了让模型看到更多样的训练样本提升泛化能力但评估模型真实水平时你希望输入是稳定、干净的原始图片。3.2 模型搭建基于迁移学习的关键代码一鼓作气跑通搭模型这一步我推荐用以下思路加载预训练的基础模型去掉它原来的分类层include_topFalse冻结它的全部参数然后在它后面接上我们自己的分类头。代码大概长这样import tensorflow as tf base_model tf.keras.applications.MobileNetV2( input_shape(224, 224, 3), include_topFalse, weightsimagenet ) base_model.trainable False model tf.keras.Sequential([ base_model, tf.keras.layers.GlobalAveragePooling2D(), tf.keras.layers.Dense(128, activationrelu), tf.keras.layers.Dropout(0.5), tf.keras.layers.Dense(3, activationsoftmax) ]) model.compile( optimizertf.keras.optimizers.Adam(learning_rate1e-4), losscategorical_crossentropy, metrics[accuracy] )几个关键点拆开讲。trainableFalse代表冻结。冻结的意思是训练时只更新后面新增的分类层不更新预训练模型内部的参数。为什么不更新因为预训练模型的参数已经学会了通用特征而我们手上的数据量太小用反向传播去动这上百万个参数很容易把它们“改坏”。拿背单词来类比你已经有了一本词典遇到新文章只需要理解哪些词组合表达什么意思而不是重写整本词典。GlobalAveragePooling2D的作用是把卷积层输出的二维特征图压缩成一个长向量。比起直接把特征图展开铺平它更像对每个通道求平均参数量少、不容易过拟合在迁移学习里是标配。Dropout(0.5)是防止分类层过拟合的保险丝。它会随机让一半的神经元在训练时不参与计算强迫网络不要把赌注押在少数几个神经元上。注意最后那个Dense(3)这里的3不是定死的是你的动物类别数。如果项目里有5种动物就改成5。这个数字和数据集里的类别数量必须严格一致。我见过有人改了数据集却忘了改这一层模型能训练但准确率一直上不去就是因为输出维度与标签数量对不上。3.3 训练参数、早停策略与模型保存模型定义好之后训练参数的设置是一道分水岭。参数给得太激进loss会出现震荡给得太保守训练半天毫无进展。先说学习率。使用迁移学习时我推荐初始学习率设小一点比如1e-4而不是常见的1e-3。原因在于分类层的参数是随机初始化的它需要在训练中逐渐学会如何组合特征学习率太大会让梯度更新太猛前期loss直接爆炸或变成NaN。之前用默认的1e-3跑前几步loss居然一路冲到几百改成1e-4之后曲线才稳定下来。这个经验值在不少项目里都适用。然后说epoch和早停。不要一口气设一个很大的epoch数。常见的做法是设20到50同时监控验证集的loss。如果验证集loss连续好几轮不再下降就提前停止训练。对应到Keras里就是EarlyStopping回调监控val_loss设置patience5。这样既能避免训练过头又能自动保存最优模型。模型保存也要养成习惯。训练结束后用model.save(animal_model.h5)存下来后面做预测和部署就不用重新训练一遍。保存的同时最好把类别标签的顺序也记录一份文本文件。否则过两天你拿着模型预测时根本不知道索引0对应的是猫还是狗。3.4 模型评估与单张图片预测流程训练完成后第一件事不是急着拿手机拍一张动物图来试而是先在测试集上算整体准确率和混淆矩阵。混淆矩阵能把“哪两类容易互相认错”直接列出来。举个例子如果“狐狸”被错判成“狼”的比例特别高说明这两类样本在视觉特征上确实接近或者狐狸类的样本量确实太少。这个信息比单一准确率有用得多。单张图片预测的流程看起来简单但细节特别容易出错。完整的预测代码逻辑是读图、调整尺寸、归一化、加批次维度、调用模型。我写一个能直接用的示例from PIL import Image import numpy as np img Image.open(test_panda.jpg).resize((224, 224)) x np.array(img) / 255.0 x np.expand_dims(x, axis0) # 形状从 (224,224,3) 变为 (1,224,224,3) pred model.predict(x) idx int(np.argmax(pred[0])) print(预测类别:, class_names[idx]) print(置信度:, pred[0][idx])这是我踩过最多坑的一步。第一图片尺寸必须和训练时一致训练用了224预测时也得是224否则模型会报错或者干脆输出垃圾结果。第二归一化的方式要一致训练时如果除以了255预测时也要除以255不能训练用归一化、预测却喂原始像素。第三也是最容易出现“玄学错误”的图像库的通道顺序。PIL读出来是RGBOpenCV读出来是BGR。如果你训练时用PIL读图做数据增强预测时却用OpenCV读图颜色通道就全乱了。模型看到的图像色调变得诡异预测自然离谱。我在一次项目里因为这个小失误白折腾了一晚上。4. 高频问题排查实录loss不降、过拟合、预测离谱4.1 训练loss稳定不动或一直很高先查这四件事模型搭好、数据加载也正常但训练到第五轮loss还是纹丝不动或者在一个很高的值附近波动。这时候不要急着换网络结构先按顺序检查四件事。第一数据有没有归一化。很多人在数据加载时忘了除以255导致像素值在0到255的大范围。这么大的数值会让梯度更新不稳定模型很难收敛。这是一个出现率极高的低级错误。第二标签和模型输出维度是否一致。比如你明明有五种动物但模型最后的Dense层写成了3训练时会报错或loss极其难看。检查一下类别文件夹数量和最后一层神经元数量只看一眼就能排除。第三学习率是否过大或过小。学习率太大会让loss上下震荡甚至冲上几位数太小则收敛极慢让人误以为loss“卡住”了。迁移学习场景下先用1e-4起步通常比较稳妥。第四数据增强是否过度。我之前有一次对训练集同时加了旋转90度、随机裁剪、亮度抖动、水平翻转结果模型学了半天连基本的猫狗都分不清。数据增强是手段不是越多越好。增强太狠甚至会给模型制造“错误样本”。如果你开了很激进的数据增强可以暂时全关掉跑几个epoch看loss是否正常下降。4.2 训练集准确率接近99%验证集却只有70%过拟合的处置模板这个现象在动物识别实验里太经典了。模型在它见过的图片上表现完美一遇到没见过的图片就露馅。说白了它不是学会了“什么是猫”而是背熟了训练集每一张猫图的特殊噪声。处置过拟合我有一套固定模板。第一先确认是不是训练时间太长。如果训练曲线显示训练集准确率一路走高验证集准确率在某个点开始下滑那就是典型的过拟合马上早停。第二增加数据增强让模型更难“背图”。第三加大Dropout比例从0.3提到0.5或0.6。第四减少分类层的神经元数量或层数降低模型容量。最后也是最容易被忽略的检查训练集和验证集的图片来源。如果训练集全是同一批次抓取的图片背景高度一致模型很可能学会的是“这张图的背景是草地所以是猫”而不是学动物本身。这种情况再调模型也没用得去丰富数据。4.3 预测单张图片结果错得离谱先排除预处理问题模型在验证集上没有毛病一换新的图片就预测错误很多人第一反应是“模型过拟合了”或者“数据不够”。但在我遇到的情况里预处理不一致才是第一大元凶。排查顺序是这样的先确认预测图片有没有被正确resize到模型输入尺寸再确认归一化方式和训练时是否一致然后确认通道顺序是RGB还是BGR最后检查图片本身是不是合规的动物图。这一套走完大部分“模型像个瞎子”的问题都能解决。还有一个小众但容易出现的问题灰度图。如果你拿到的图片是单通道灰度图而模型训练用的是三通道RGB图直接读入会导致形状不匹配。处理办法是读取时转成RGBImage.open(path).convert(RGB)确保是三个通道。类似的遇到带透明通道的PNG图片也要注意有些图像库会读出四个通道必须弹掉Alpha通道。4.4 相似物种互相混淆找到“难分对”的真正原因当混淆矩阵显示某些类别来回窜——狼和狐狸、海豚和鲸鱼——先别急着说“模型不够聪明”。你要去样本层面找原因。第一步统计这两个类别的样本数量是否接近。如果狐狸只有狼的四分之一模型本来就没见过足够多的狐狸偏了也正常。第二步抽几十张混淆样本出来看。很可能这些图片本身就特别难背着光、距离太远、动物只占画面一角、背景极其杂乱。人眼都要看一阵子才能猜出来模型认错不算意外。第三步针对性地做数据增强让模型见过更多不同角度和光线下的样本。第四步如果条件允许对难分类别单独增加图片收集。我一直觉得“哪些类别容易混淆”本身就是模型给你的宝贵反馈它告诉你数据覆盖还有哪些盲区。带着这个信息去做数据工作比闷头调网络结构更有效。5. 几次实验下来我最想留住的几条经验这篇文章写到这模型已经跑通常见问题的排查思路也整理完了。最后分享几条我在反复实操中印象最深的体会当给第一次做这个项目的朋友一点前置建议。第一条经验把数据整理看成项目的第一优先级而不是“随便搞搞”。我见过太多人花大量时间调整网络结构却对自己手里的数据样本长什么样一无所知。每类图片有几张、有没有重复图、有没有错标、背景是否单一这些信息会在模型结果上放大十倍。第二条经验一切操作都要维持训练和预测的一致性。尺寸、归一化、通道顺序、类别索引映射这四个词值得记在小本子上。模型本身不会“故意作怪”绝大多数诡异结果追到源头都是这几个环节不一致。第三条经验学会看训练日志而不是只盯最后准确率。loss曲线的形状、验证集准确率有没有峰值、哪个类别在混淆矩阵里乱跑这些信息比一个孤零零的准确率数字有价值得多。训练时把日志和混淆矩阵保存下来分析问题时能少走很多弯路。第四条经验别怕项目小。动物识别系统虽然听起来简单但它覆盖了数据工程、模型训练、评估分析、错误排查的完整闭环。把这套流程跑熟再去碰目标检测、语义分割、视频识别这些更复杂的任务你至少不会在最基本的预处理上翻车。我后来做类似项目遇到问题的第一反应都是先回到这套流程里找原因。最后再补一个我屡试不爽的小技巧每次实验开始前先把类别列表写死并保存成文件训练和预测都用同一个文件加载标签顺序。这样模型保存、恢复、部署时索引和类名的对应关系永远不会乱。这个小习惯救过我很多次。动物识别系统真正的收获不是那张漂亮的准确率报表而是你从“模型怎么总不对”到“我能定位它为什么不对”的这个过程。数据比网络重要流程比调参重要——这句话我在多次踩坑之后才真正认同。希望这篇内容能把你的踩坑时间缩短一点。

相关新闻

Python接入腾讯云OCR:验证码识别实战与踩坑记录

Python接入腾讯云OCR:验证码识别实战与踩坑记录

做后端这几年,我处理过不少让人血压上升的需求,验证码识别绝对排得上前三。最近在给内部运营系统做自动化回归测试,登录页的图形验证码卡住了整个流程——测试脚本跑到登录就断,真的很急人。当时手头没有现成的识别模型,也不想为了一个登录环节去专门训练一套深度学习方案,于是…

2026/10/16 12:41:18 阅读更多 →
EMC DS5100B光纤交换机管理环境搭建与Zone配置实战

EMC DS5100B光纤交换机管理环境搭建与Zone配置实战

简介:《EMC DS5100B光纤交换机使用维护手册》面向数据中心与企业网络运维场景,系统整理了对该SAN交换设备进行初始配置与日常运维所需的要点。文档以华建高科实际项目资料为背景,从操作准备讲起,明确管理主机系统、JRE版本、IP网段…

2026/10/16 12:41:18 阅读更多 →
WebSocket协议逆向分析:从定位连接到Python模拟客户端全流程

WebSocket协议逆向分析:从定位连接到Python模拟客户端全流程

一提到WebSocket协议逆向分析,很多人的第一反应是:这不就是抓个包、看下报文、照着发一遍不就完事了吗?真做起来完全不是那么回事。我最近集中处理过一个某网站的WebSocket协议逆向项目,它的HTTP接口防护做得一般,但所…

2026/10/16 12:41:18 阅读更多 →

最新新闻

Perplexity 给运通会员发“商务技能“:AI 大厂开始把 Skills 当会员权益卖了

Perplexity 给运通会员发“商务技能“:AI 大厂开始把 Skills 当会员权益卖了

Perplexity 给运通会员发"商务技能":AI 大厂开始把 Skills 当会员权益卖了 【免费下载链接】marketingskills Marketing skills for Claude Code and AI agents. CRO, copywriting, SEO, analytics, and growth engineering. 项目地址: https://gitcode…

2026/10/16 13:08:08 阅读更多 →
C++学生类设计:从语法练习到面向对象思维训练

C++学生类设计:从语法练习到面向对象思维训练

1. 这道题不是考语法,是考“人怎么想清楚一件事”刚看到这个标题时,我下意识皱了眉头——不是因为难,而是因为它太典型:表面是C类定义练习,实则是一次对“抽象能力”的现场压力测试。很多学生写完代码跑通了&#xff0…

2026/10/16 13:08:08 阅读更多 →
Seurat FindMarkers单细胞差异表达分析全流程解读

Seurat FindMarkers单细胞差异表达分析全流程解读

很多朋友做单细胞转录组分析,走到FindMarkers这一步常常卡壳:跑是能跑出来,但出来的结果怎么解读、P值为什么飘忽不定、QC指标阈值怎么选,心里其实没底。这篇文章我直接从实际使用角度出发,聊透Seurat包的FindMarkers函…

2026/10/16 13:08:08 阅读更多 →
论文文献分析怎么才靠谱?从AI辅助到可复现的学术综述流程

论文文献分析怎么才靠谱?从AI辅助到可复现的学术综述流程

搞学术的人大概都经历过这样的场景:文献下载了一整屏,PDF开了十几个窗口,重要段落标满高亮,最后脑子里只剩模糊印象。导师随口问一句“你刚才说近三年这个方向趋势明显,依据是哪几篇?”你翻遍笔记本&#x…

2026/10/16 13:08:08 阅读更多 →
汤国安ArcGIS教学资源包:含ArcPy脚本、分层数据与排错指南

汤国安ArcGIS教学资源包:含ArcPy脚本、分层数据与排错指南

简介:本资源是面向GIS初学者与高校地理信息科学专业学生的ArcGIS实践教学配套实验数据包,聚焦汤国安教授经典GIS教学体系中的核心操作训练。资源以ArcGIS软件实操为主线,涵盖矢量数据(点线面要素,用于边界管理、网络分…

2026/10/16 13:08:08 阅读更多 →
free-claude-code:低成本使用AI代码助手的合规降本路径与实操指南

free-claude-code:低成本使用AI代码助手的合规降本路径与实操指南

1. 从"free-claude-code"这个名字说起:它到底想解决什么问题第一次看到"free-claude-code"这个项目名,我的直觉是:这大概率是一个围绕代码生成能力做"降本增效"的工具或方案集合。名字里的三个词各有指向——&…

2026/10/16 13:07:07 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

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

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 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/15 0:14:36 阅读更多 →
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/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练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/15 9:49:14 阅读更多 →