1.要点解析
我们前面学的PyTorch是用来搭建神经网络模型的脚手架,即利用一些算子搭建网络结构,并且支持评估推理等全套API。
区别于PyTorch,YOLO包含了丰富的计算机视觉模型库。有了YOLO,就不需要自己从0开始搭建模型了。YOLO内置模型功能强大,且API简单易用,它的定位就是AI落地,专门为AI工程化设计开发。
所以有了YOLO,你就不需要设计模型了,你要做的事情变成了:
- 选模型。YOLO模型自带权重,当然你也可以用自己的数据集+YOLO的模型或纯网络进行训练,训练过程比我们前面训练简单前馈网络简单多了,难的是准备数据。
- 调参数(调参工程师)
- 写业务
YOLO从最初的支持目标检测,到现在支持图像分割、姿态识别等完整的AI视觉开发套件。
YOLO设计了工程化的算法以提高执行速度,比如采用将图像划分多个网格的方式,进行分区域检测。这就导致目标大小和网格大小的比例影响检测结果。YOLO针对此问题采用多尺度特征融合的方式应对此问题。
常用的YOLO版本有YOLOv5,YOLOv8,YOLOv11。
2. 几十行代码实现智能监控算法
def smart_surveillance_system(video_path):
"""智能监控系统:检测+分割+姿态估计"""
# 加载多任务模型
seg_model = YOLO('yolov8n-seg.pt')
pose_model = YOLO('yolov8n-pose.pt')
cap = cv2.VideoCapture(video_path)
while True:
ret, frame = cap.read()
if not ret:
break
# 同时进行分割和姿态估计
seg_results = seg_model(frame, verbose=False)[0]
pose_results = pose_model(frame, verbose=False)[0]
# 合并结果可视化
combined_frame = seg_results.plot()
pose_frame = pose_results.plot()
# 叠加显示
overlay = cv2.addWeighted(combined_frame, 0.7, pose_frame, 0.3, 0)
cv2.imshow('智能监控', overlay)
# 业务逻辑:检测异常情况
people_count = len([box for box in seg_results.boxes
if seg_results.names[int(box.cls)] == 'person'])
if people_count > 5:
print(f"警告:区域人员密集 ({people_count}人)")
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
3.小结
你可以在完全不知道内部网络结构原理的情况下,构建AI视觉应用。YOLO的demo网上资料很多,可以哪来练习,熟悉视觉应用的处理流程。