import os
import os.path as osp
import random
def get_data_list(data_dir):
data_dir='E:/bishe/newdata/'
random.seed(666)
mode = ["train_list", "val_list"]
dir_path = osp.join(data_dir, "JPEGImages")
files = [f.split(".")[0] for f in os.listdir(dir_path)]
random.shuffle(files) # 打乱顺序
with open(osp.join(data_dir, f"{mode[0]}.txt"), "w") as f_tr:
with open(osp.join(data_dir, f"{mode[1]}.txt"), "w") as f_va:
for i, name in enumerate(files):
if (i % 10) == 0: # 训练集与测试集为9:1
f_va.write(f"JPEGImages/{name}.jpg Annotations/{name}.xml\n")
else:
f_tr.write(f"JPEGImages/{name}.jpg Annotations/{name}.xml\n")
labels = ["car"]
txt_str = "\n".join(labels)
with open((data_dir + "/" + f"label_list.txt"), "w") as f:
f.write(txt_str)
print("Finished!")
get_data_list("dataset")
import sys
sys.path.append("PaddleRS")
import os
import os.path as osp
from paddlers.datasets import VOCDetDataset#VOCDetection
from paddlers import transforms as T
# 定义数据增强
train_transforms = T.Compose([
T.RandomDistort(),
T.RandomCrop(),
T.RandomHorizontalFlip(),
T.BatchRandomResize(
target_sizes=[512, 544, 576, 608, 640, 672, 704],
interp='RANDOM'),
T.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])
eval_transforms = T.Compose([
T.Resize(target_size=608, interp='CUBIC'),
T.Normalize(
mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])
# 定义数据集
data_dir = "E:/bishe/newdata/"
train_file_list = osp.join(data_dir, 'train_list.txt')
val_file_list = osp.join(data_dir, 'val_list.txt')
label_file_list = osp.join(data_dir, 'label_list.txt')
train_dataset = VOCDetDataset(
data_dir=data_dir,
file_list=train_file_list,
label_list=label_file_list,
transforms=train_transforms,
shuffle=True)
eval_dataset = VOCDetDataset(
data_dir=data_dir,
file_list=train_file_list,
label_list=label_file_list,
transforms=eval_transforms,
shuffle=False)
# 检查及可视化数据
import numpy as np
import cv2
import matplotlib.pyplot as plt
%matplotlib inline
# 反归一化
def in_normal(img):
mean = np.array([0.485, 0.456, 0.406])
std = np.array([0.229, 0.224, 0.225])
img = (255 * (img * std + mean)).astype("uint8")
return img
问题代码:
# 绘制矩形框
def visual(img, bboxs):
for bbox in bboxs:
x1, y1, x2, y2 = bbox
cv2.rectangle(img, (x1, y1), (x2, y2), (255, 0, 0), 2)
return img
for data in train_dataset:
img = in_normal(data["image"])
vis = visual(img, data["gt_bbox"])
plt.figure(figsize=(10, 10))
plt.imshow(img)
plt.show()
break
问题截图:
有人知道哪里错了吗?
相似问题