机器学习理解
假设我们正在尝试解决一个预测房价的问题。我们的目标是根据房屋的各种特征(如面积、位置、年龄等)来预测其价格。
1. **问题定义**:这是一个回归问题,预测的是连续值(即房价)。
2. **数据收集**:收集售价数据。
3. **数据预处理**:清理和格式化数据集,例如删除缺失值或异常值,将文本数据转换为数值表示形式。
4. **特征工程**:选择有助于预测房价的特征。包括房屋面积、地理位置等。
5. **模型选择**:使用线性回归算法建立预测模型。(用线拟合数据点,使线到数据点的距离差异最小)
6. **训练模型**:使用部分数据集(比如70%的数据)来训练模型。在训练过程中,模型会不断调整参数以最小化预测错误。
7. **评估模型**:使用剩余的30%数据作为测试集,计算模型的预测误差(例如均方误差),以了解模型的表现如何。
8. **模型优化**:如果模型表现不佳,可以尝试增加更多的特征、改变模型类型或者调整超参数,然后重新进行训练和评估。
9. **部署与监控**:当模型性能满意时,将其部署到实际应用中,并持续监控其预测结果是否准确。
想理解的代码
# 定义一个名为 yolo_detect 的函数,用于进行目标检测。
def yolo_detect(self, im):
# 对输入图像(im)执行预处理操作,可能包括调整大小、归一化等。
img = self.preprocess(im)
# 使用模型(self.m)对预处理后的图像进行推理,得到预测结果 pred,并设置增强(augment)为 False。
# 由于返回的预测是一个张量列表,因此取第一个元素 [0]。
pred = self.m(img, augment=False)[0]
# 将预测结果从其他数据类型转换为 float 类型。
pred = pred.float()
# 对预测结果应用非最大抑制(non_max_suppression),以消除重叠的边界框。
# 这里使用了自定义的阈值(conf_thres)和交并比阈值(iou_thres)。
pred = non_max_suppression(pred, self.conf_thres, self.iou_thres )
# 初始化一个空列表 pred_boxes 用于存储最终检测到的边界框及其相关信息。
pred_boxes = []
# 遍历经过非最大抑制后的预测结果 det:
for det in pred:
# 如果 det 不为空且包含至少一个边界框,则将其坐标从相对比例缩放回原始图像尺寸(通过调用 scale_coords 函数),并将结果四舍五入。
if det is not None and len(det):
det[:, :4] = scale_coords(
img.shape[2:], det[:, :4], im.shape).round()
# 再次遍历每个边界框:
for *x, conf, cls_id in det:
# 提取出类别标签 lbl(根据类别ID在名称列表中查找);
lbl = self.names[int(cls_id)]
# 提取出边界框的四个顶点坐标 x1, y1, x2, y2;
x1, y1 = int(x[0]), int(x[1])
x2, y2 = int(x[2]), int(x[3])
# 提取出置信度 conf;
# 将提取出的信息作为一个元组添加到 pred_boxes 列表中。
pred_boxes.append((x1, y1, x2, y2, lbl, conf))
# 返回存储有所有检测到的边界框信息的列表 pred_boxes。
return pred_boxes
非最大抑制(NMS)
置信度
lou
非最大抑制(NMS)算法(包括删除高重叠框的过程):
- 对输入图像进行预测,得到包含多个边界框和相关置信度的列表。
- 按照置信度降序排列该列表。第一个方框具有最高的置信度。
- 创建一个新列表来存储经过 NMS 过滤后的唯一框。
- 定义一个 IOU 阈值,用于判断两个框是否具有高重叠。
重复以下步骤直到处理完所有框:
5. 从原始框列表中取出第一个框(最高置信度),并将其添加到新列表中。
6. 计算该框与剩余框中同类别框的 IOU 值。
7. 如果找到一个或多个框的 IOU 大于预定义阈值,则移除具有较低置信度的框。
DeepSORT车辆跟踪
假设你在观看一场足球比赛,你正在试图跟踪球员的位置。SORT 算法就像一个助手,只能通过球员的运动轨迹来判断哪个球员是哪个。如果两个球员跑得很快并且彼此靠近,这个助手可能会混淆他们。这就是身份切换现象。
现在引入 Deep SORT 算法。Deep SORT 的助手不仅考虑了球员的运动轨迹,还观察了球员的外观特征(比如球衣号码、头发颜色等)。这样一来,即使球员在短时间内快速移动或相互靠近,助手也能更准确地识别和跟踪每个球员。
简而言之,Deep SORT 是一种改进的跟踪算法,它结合了目标的运动信息和外观信息