def train(model_dir, sensitivities_file, eval_metric_loss): # 定义训练和验证时的transforms train_transforms = transforms.Compose([ transforms.MixupImage(mixup_epoch=250), transforms.RandomDistort(), transforms.RandomExpand(), transforms.RandomCrop(), transforms.Resize(target_size=608, interp='RANDOM'), transforms.RandomHorizontalFlip(), transforms.Normalize() ]) eval_transforms = transforms.Compose([ transforms.Resize(target_size=608, interp='CUBIC'), transforms.Normalize() ]) # 定义训练和验证所用的数据集 train_dataset = pdx.datasets.VOCDetection( data_dir='dataset', file_list='dataset/train_list.txt', label_list='dataset/labels.txt', transforms=train_transforms, shuffle=True) eval_dataset = pdx.datasets.VOCDetection(data_dir='dataset', file_list='dataset/val_list.txt', label_list='dataset/labels.txt', transforms=eval_transforms) if model_dir is None: # 使用imagenet数据集上的预训练权重 pretrain_weights = "IMAGENET" else: assert os.path.isdir(model_dir), "Path {} is not a directory".format( model_dir) pretrain_weights = model_dir save_dir = "output/yolov3_mobile" if sensitivities_file is not None: if sensitivities_file != 'DEFAULT': assert os.path.exists( sensitivities_file), "Path {} not exist".format( sensitivities_file) save_dir = "output/yolov3_mobile_prune" num_classes = len(train_dataset.labels) model = pdx.det.YOLOv3(num_classes=num_classes) model.train(num_epochs=400, train_dataset=train_dataset, train_batch_size=10, eval_dataset=eval_dataset, learning_rate=0.0001, lr_decay_epochs=[310, 350], pretrain_weights=pretrain_weights, save_dir=save_dir, use_vdl=True, sensitivities_file=sensitivities_file, eval_metric_loss=eval_metric_loss)
def __init__(self, model_path, bs=4, thresh=0.9, autoflush=True): self.model = pdx.load_model(model_path) self.transform = dT.Compose([dT.Resize(), dT.Normalize()]) self.bs = bs self.thresh = thresh self.imgs = [] self.infos = [] self.autoflush = autoflush
with open('MOT20-03.txt', newline='') as csvfile: reader = csv.reader(csvfile) for row in reader: if int(row[0]) not in bboxes: bboxes[int(row[0])] = [] bboxes[int(row[0])].append(row[1:]) import paddlex as pdx from paddlex.det import transforms INTERACTIVE = True WRITE_CSV = False USE_YOLO = False if USE_YOLO: eval_transforms = transforms.Compose([ transforms.Resize(target_size=512, interp='CUBIC'), transforms.Normalize(), ]) else: eval_transforms = transforms.Compose([ transforms.Normalize(), transforms.ResizeByShort(short_size=800, max_size=1333), transforms.Padding(coarsest_stride=32), ]) loop_gen = ((pdx.datasets.VOCDetection( data_dir=base, file_list=k, transforms=eval_transforms, label_list='./data/labels.txt'), v) for k, v in [(
parser.add_argument("-o", "--output", type=str, default="/home/aistudio/test/frame", help="结果帧存放路径") parser.add_argument("-m", "--model", type=str, default="/home/aistudio/pdx/output/yolov3/best_model", help="起落架检测模型路径") args = parser.parse_args() people_det = hub.Module(name="yolov3_resnet50_vd_coco2017") flg_det = pdx.load_model(args.model) transforms = transforms.Compose([transforms.Resize(), transforms.Normalize()]) for vid_name in tqdm(os.listdir(args.input)): print("processing {}".format(vid_name)) vidcap = cv2.VideoCapture(osp.join(args.input, vid_name)) idx = 0 while True: vidcap.set(1, idx) success, image = vidcap.read() if not success: break flg = flg_det.predict(image, transforms=transforms) print(flg) if len(flg) == 0:
elif color == "B": color = (255, 0, 0) for l in lines: cv2.line(img, l[0], l[1], color, 2) cls_model = pdx.load_model('output/gear_clas/') cls_trans = cls_transforms.Compose([ # cls_transforms.Resize(), cls_transforms.Normalize() ]) det_model = pdx.load_model('output/gear_det/') det_trans = det_transforms.Compose([ det_transforms.Resize(), det_transforms.Normalize() ]) vid_dir = "/home/aistudio/plane/vid-split/train/" itv = 5 bs = 4 for vid_name in tqdm(os.listdir(vid_dir)): print(vid_name) vidcap = cv2.VideoCapture(osp.join(vid_dir, vid_name)) frame_data = [] index = [] frame_idx = 0 success = True
#开始模型的训练 # 设置使用0号GPU卡 import os os.environ['CUDA_VISIBLE_DEVICES'] = '0' import paddlex as pdx # 图像预处理+数据增强 from paddlex.det import transforms train_transforms = transforms.Compose([ transforms.MixupImage(mixup_epoch=250), transforms.RandomDistort(), transforms.RandomExpand(), transforms.RandomCrop(), transforms.Resize(target_size=500, interp='RANDOM'), transforms.RandomHorizontalFlip(), transforms.Normalize(), ]) eval_transforms = transforms.Compose([ transforms.Resize(target_size=500, interp='CUBIC'), transforms.Normalize(), ]) # 数据迭代器的定义 train_dataset = pdx.datasets.VOCDetection(data_dir='dataset', file_list='dataset/train_list.txt', label_list='dataset/labels.txt', transforms=train_transforms, shuffle=True)
] if color == "R": color = (0, 0, 255) elif color == "G": color = (0, 255, 0) elif color == "B": color = (255, 0, 0) for l in lines: cv2.line(img, l[0], l[1], color, 2) flg_det = pdx.load_model("../model/new_flg/") flg_trans = transforms.Compose([ transforms.Resize(), transforms.Normalize() ]) def sort_key(p): return (int(p['bbox'][0]), int(p['bbox'][1])) for vid_name in tqdm(os.listdir(vid_dir)): print(vid_name) vidcap = cv2.VideoCapture(osp.join(vid_dir, vid_name)) frame_count = vidcap.get(cv2.CAP_PROP_FRAME_COUNT) print(frame_count) vid_length = frame_count/25 # input("here")
from tqdm import tqdm from deep_sort import DeepSort from evaluation.CsvEvalWriter import CsvEvalWriter base = './data/' import paddlex as pdx from paddlex.det import transforms INTERACTIVE = True WRITE_CSV = True USE_YOLO = False if USE_YOLO: eval_transforms = transforms.Compose([ transforms.Resize( target_size=608, interp='CUBIC'), transforms.Normalize() ]) model = pdx.load_model('./PPYOLO/best_model') else: eval_transforms = transforms.Compose([ transforms.Normalize(), transforms.ResizeByShort(short_size=800, max_size=1333), transforms.Padding(coarsest_stride=32), ]) model = pdx.load_model('./models/det/FasterRCNN/epoch_48') evaluator = CsvEvalWriter() loop_gen = ((pdx.datasets.VOCDetection( data_dir=base, file_list=k, transforms=eval_transforms, label_list='./data/labels.txt'), v) for k, v in [
# train_transforms = t.Compose([t.ComposedYOLOv3Transforms("train")]) # eval_transforms = t.Compose([t.ComposedYOLOv3Transforms("eval")]) width = 255 height = 255 mean = [0.485, 0.456, 0.406] std = [0.229, 0.224, 0.225] epoch_num = 100 train_transforms = t.Compose([ t.RandomHorizontalFlip(), t.RandomExpand(), t.RandomDistort(), # t.MixupImage(mixup_epoch=int(epoch_num * 0.5)), t.Resize(target_size=width, interp='RANDOM'), t.Normalize(mean=mean, std=std), ]) # 定义训练和验证所用的数据集 # API说明:https://paddlex.readthedocs.io/zh_CN/develop/apis/datasets.html#paddlex-datasets-vocdetection train_dataset = pdx.datasets.CocoDetection( data_dir='/home/aistudio/data/data67498/DatasetId_153862_1611403574/Images', ann_file= '/home/aistudio/data/data67498/DatasetId_153862_1611403574/Annotations/coco_info.json', transforms=train_transforms, num_workers=8, buffer_size=256, parallel_method='process', shuffle=True) # eval_dataset = pdx.datasets.CocoDetection( # data_dir='/home/aistudio/data/data67498/DatasetId_152881_1610856374/Images',
import os os.environ['CUDA_VISIBLE_DEVICES'] = '0' import paddlex as pdx import paddle.fluid as fluid from paddlex.det import transforms train_transforms = transforms.Compose([ transforms.MixupImage(alpha=1.5, beta=1.5, mixup_epoch=-1), transforms.RandomExpand(), transforms.RandomCrop(), transforms.Resize(target_size=480), transforms.RandomHorizontalFlip(prob=0.5), transforms.Normalize() ]) eval_transforms = transforms.Compose([ #transforms.Resize(target_size=480, interp='RANDOM'), transforms.Resize(target_size=480), transforms.Normalize() ]) #读取数据 train_dataset = pdx.datasets.VOCDetection( data_dir='./dataset', file_list='./dataset/train_list.txt', label_list='./dataset/label_list.txt', transforms=train_transforms) eval_dataset = pdx.datasets.VOCDetection(data_dir='./dataset', file_list='./dataset/dev_list.txt', label_list='./dataset/label_list.txt', transforms=eval_transforms)