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)
Example #2
0
 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
Example #3
0
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 [(
        'data/MOT20/train/MOT20-03/manifest.txt', 'MOT20-03.txt'
Example #4
0
base = './data/'
import os

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=512, interp='RANDOM'),
    transforms.RandomHorizontalFlip(),
    transforms.Normalize(),
])

eval_transforms = transforms.Compose([
    transforms.Resize(target_size=512, interp='CUBIC'),
    transforms.Normalize(),
])
train_dataset = pdx.datasets.VOCDetection(data_dir=base,
                                          file_list=os.path.join(
                                              base, 'train.txt'),
                                          label_list='./data/labels.txt',
                                          transforms=train_transforms,
                                          shuffle=True)
eval_dataset = pdx.datasets.VOCDetection(data_dir=base,
                                         file_list=os.path.join(
                                             base, 'valid.txt'),
                                         transforms=eval_transforms,
                                         label_list='./data/labels.txt')
Example #5
0
base = './data/'
import os

import paddlex as pdx
from paddlex.det import transforms

train_transforms = transforms.Compose([
    transforms.RandomHorizontalFlip(),
    transforms.Normalize(),
    transforms.ResizeByShort(short_size=800, max_size=1333),
    transforms.Padding(coarsest_stride=32)
])

eval_transforms = transforms.Compose([
    transforms.Normalize(),
    transforms.ResizeByShort(short_size=800, max_size=1333),
    transforms.Padding(coarsest_stride=32), ])
train_dataset = pdx.datasets.VOCDetection(
    data_dir=base,
    file_list=os.path.join(base, 'train_all_1.txt'),
    label_list='./data/labels.txt',
    transforms=train_transforms,
    shuffle=True)
eval_dataset = pdx.datasets.VOCDetection(
    data_dir=base,
    file_list=os.path.join(base, 'valid_all_1.txt'),
    transforms=eval_transforms,
    label_list='./data/labels.txt')

num_classes = len(train_dataset.labels) + 1
print('class num:', num_classes)
Example #6
0
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:
Example #7
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
    count = 0
Example #8
0
# ])


# train_transforms = t.Compose([t.ComposedYOLOv3Transforms("train")])
# eval_transforms = t.Compose([t.ComposedYOLOv3Transforms("eval")])

width = 480
height = 270
mean=[0.485, 0.456, 0.406]
std=[0.229, 0.224, 0.225]
epoch_num = 20

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_153212_1611125306/Images',
    ann_file='/home/aistudio/data/data67498/DatasetId_153212_1611125306/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',
Example #9
0
import paddlex as pdx
from paddlex.det import transforms

eval_transforms = transforms.Compose([
    transforms.Normalize(),
    transforms.ResizeByShort(short_size=800, max_size=1333),
    transforms.Padding(coarsest_stride=32), ])
model = pdx.load_model('./FasterRCNN/best_model')
image_name = './test.jpg'
result = model.predict(image_name, eval_transforms)
pdx.det.visualize(image_name, result, threshold=0.1)
Example #10
0
    ymin, xmin, ymax, xmax = b
    lines = [[(xmin, ymin), (xmin, ymax)], [(xmax, ymin), (xmax, ymax)],
             [(xmin, ymin), (xmax, ymin)], [(xmin, ymax), (xmax, ymax)]]
    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()])

people_det = pdx.load_model("./model/person/50")
people_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))
    vid_name = vid_name.split(".")[0]
Example #11
0
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)
Example #12
0
# 3

#6.训练。训练过程中可点击侧边栏的可视化,启动VisualDL,支持可视化训练过程
# 环境变量配置,用于控制是否使用GPU
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0'

from paddlex.det import transforms
import paddlex as pdx

train_transforms = transforms.Compose([
    transforms.RandomDistort(),
    transforms.RandomCrop(),
    transforms.RandomHorizontalFlip(),
    transforms.ResizeByShort(short_size=[800], max_size=1333),
    transforms.Normalize(mean=[0.5], std=[0.5]),
    transforms.Padding(coarsest_stride=32)
])

eval_transforms = transforms.Compose([
    transforms.ResizeByShort(short_size=800, max_size=1333),
    transforms.Normalize(),
    transforms.Padding(coarsest_stride=32),
])

# 定义训练和验证所用的数据集
train_dataset = pdx.datasets.VOCDetection(
    data_dir='D:/code/datasets/cz/tile_round1_train_20201231',
    file_list='D:/code/datasets/cz/tile_round1_train_20201231/train.txt',
    label_list='D:/code/datasets/cz/tile_round1_train_20201231/labels.txt',
    transforms=train_transforms,
Example #13
0
# 设置使用0号GPU卡(如无GPU,执行此代码后仍然会使用CPU训练模型)
import matplotlib
matplotlib.use('Agg')
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0'
import paddlex as pdx
from paddlex.det import transforms

train_transforms = transforms.Compose([
    transforms.RandomHorizontalFlip(),
    transforms.Padding(coarsest_stride=32),
    transforms.RandomDistort(contrast_prob=0.01,
                             hue_prob=0,
                             saturation_prob=0.01),
    transforms.Normalize()
])

eval_transforms = transforms.Compose([
    transforms.RandomDistort(),
    transforms.Padding(coarsest_stride=32),
    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',
Example #14
0
from tqdm import tqdm

from deep_sort import DeepSort
from evaluation.CsvEvalWriter import CsvEvalWriter

sort = DeepSort('models/deep_sort/checkpoint_static/net', n_init=2)
base = './data/'
import os

import paddlex as pdx
from paddlex.det import transforms

INTERACTIVE = False
WRITE_CSV = True
eval_transforms = transforms.Compose([
    transforms.Resize(target_size=512, interp='CUBIC'),
    transforms.Normalize(),
])
eval_dataset = pdx.datasets.VOCDetection(
    data_dir=base,
    file_list=os.path.join(base, 'valid_all_1.txt'),
    label_list='./data/labels.txt')

model = pdx.load_model('./YOLOv3/best_model')
evaluator = CsvEvalWriter()
for i in tqdm(eval_dataset.file_list):
    image_name = i[0]
    start = time.time()
    result = model.predict(image_name)
    # print('infer time:{:.6f}s'.format(time.time()-start))
    # print('detected num:', len(result))
    # paddle.disable_static()