最近读了YOLO系列的论文,读到YOLOv4发现文中的很多trick 都不了解,在开始看YOLOv5代码前,先补充学习一下YOLOv4论文中的trick。
1.Bag of freebies
Bag of freebies:提高网络准确性鲁棒性的方法且仅增加训练成本,不增加网络的推理成本
数据增强
像素级的增强
包围盒的表示方式:
YOLO:[x_center, y_center, width, height]
PASCAL_VOC:[x_min, y_min, x_max, y_max]
COCO:[x_min, y_min, width, height]
调整图片的亮度,对比度,色度,饱和度和噪声 对图片进行翻转,旋转,随机缩放,裁剪 推荐使用albumentations库来增强,几乎都能完成这些常规的像素级增强,且bbox也随之改变
import albumentations as A
import cv2
transform = A.Compose([
# 随机裁剪
A.RandomCrop(width=450, height=450),
# 水平翻转
A.HorizontalFlip(p=0.5),
#随机缩放
A.RandomScale(scale_limit=0.1, interpolation=1, always_apply=False, p=0.5),
# 高斯噪声
A.GaussNoise (var_limit=(10.0, 50.0), mean=0, per_channel=True, always_apply=False, p=0.5),
# 亮度,对比度,色度,饱和度
A.ColorJitter (brightness=0.2, contrast=0.2, saturation=0.2, hue=0.2, always_apply=False, p=0.5)
], bbox_params=A.BboxParams(format='coco', min_area=1024, min_visibility=0.1, label_fields=['class_labels']))
image = cv2.imread("/path/to/image.jpg")
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
bboxes = [
[23, 74, 295, 388, 'dog', 'animal'],
[377, 294, 252, 161, 'cat', 'animal'],