从最基础的数据到模型应用,这个过程可以这样理解:
首先是数据,它就是一些含有目标的图片,比如100张红绿灯照片。但这些照片本身对模型来说毫无意义。
接着是数据集的制作。你需要用LabelImg这类标注工具,手动在每张图片上把红绿灯框出来,并告诉工具“这是红绿灯”。这样,每张图片就附带了一份说明目标位置和类别信息的文件。图片和这些说明文件放在一起,就构成了数据集。可以把它理解为一份带标准答案的“说明书”,告诉模型目标长什么样、在哪儿。
有了数据集,就进入训练模型的环节。模型会先对数据集里的第一张图片“瞎猜”目标的位置和类别,然后立刻去查阅这张图片对应的标注信息(也就是正确答案)。通过对比猜测和正确答案,计算出一个差距,这个差距在专业上叫损失(Loss)。接着,模型会利用数学算法(比如反向传播)根据这个损失值自动调整自己的内部参数,相当于“记住这次教训”。然后它再看第二张图,重复“瞎猜-对答案-算损失-调参数”的过程。就这么循环往复成千上万次,模型猜得会越来越准,损失值也越来越低。
不过,训练不能无限进行下去。我们在开始训练前,会设定一个监控机制,主要看两个东西:一是损失值是否已经降得很低且不再明显下降了;二是模型在验证集(可以理解为没给模型看过的“模拟考卷”)上的表现是否不再提升了。当模型在验证集上的表现连续多次不再变好,训练就会自动停止,这叫做早停法(Early Stopping),防止模型死记硬背过头。
训练结束后,程序会生成一个文件,比如best.pt,这个文件就是模型本身。
这个.pt文件里存的不是图片,也不是代码,而是一串数字。这串数字是模型在上百万次"猜测-对比-修正"循环中,最终确定下来的所有神经元的"权重"和"偏置"参数。可以理解为模型把训练集里所有红绿灯的特征,以数字的形式"记住"了。
当你想让模型实际工作时,流程是这样的:你拿着这个best.pt文件,你用对应的推理框架或程序(比如PyTorch、ONNX Runtime,或者Ultralytics提供的工具),执行一行加载代码,程序会把这个文件读进内存,在内部重建出一个和训练时结构完全一样的神经网络。然后你丢给它一张全新的图片,它不会再去翻看数据集(那样太慢),而是直接用文件里的参数进行计算,告诉你这张图里哪里有红绿灯。这个过程叫"推理"或"预测"。
