yolov3数据集预处理的具体步骤和实现代码
时间: 2024-05-15 10:15:37 浏览: 180
Yolov3数据集预处理的具体步骤如下:
1.读取图片和标签数据,将图片数据转换为RGB格式,标签数据转换为目标类别、中心点坐标、宽高比例的形式。
2.对图片进行缩放操作,将图片缩放到统一大小。
3.对缩放后的图片进行归一化操作,将像素值转换到0-1之间。
4.对标签数据进行归一化操作,将中心点坐标、宽高比例转换为相对于缩放后图片大小的比例。
5.将处理后的图片和标签数据存储到新的文件中。
实现代码如下:
```python
import cv2
import numpy as np
def read_data(img_path, label_path):
img = cv2.imread(img_path)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
with open(label_path, 'r') as f:
label = f.read().splitlines()
return img, label
def resize_img(img, size):
img = cv2.resize(img, size)
return img
def normalize_img(img):
img = img / 255.0
return img
def normalize_label(label, img_size):
class_num = 80
label_info = []
for l in label:
l = l.split()
class_id = int(l[0])
x = float(l[1])
y = float(l[2])
w = float(l[3])
h = float(l[4])
x = x * img_size[1]
y = y * img_size[0]
w = w * img_size[1]
h = h * img_size[0]
x = x / img_size[1]
y = y / img_size[0]
w = w / img_size[1]
h = h / img_size[0]
label_info.append([class_id, x, y, w, h])
return np.array(label_info)
def save_data(img_path, label_path, save_img_path, save_label_path, img_size):
img, label = read_data(img_path, label_path)
img = resize_img(img, img_size)
img = normalize_img(img)
label = normalize_label(label, img_size)
np.save(save_img_path, img)
np.save(save_label_path, label)
```
其中,read_data函数用于读取图片和标签数据,resize_img函数用于缩放图片,normalize_img函数用于归一化图片,normalize_label函数用于归一化标签,save_data函数用于将处理后的图片和标签数据保存到新的文件中。
阅读全文