Esempio n. 1
0
def test_train(setup_tf_eager, setup_darknet_weights, setup_generator):

    # 1. create generator
    generator = setup_generator

    # 2. create model
    model = Yolonet(n_classes=1)
    model.load_darknet_params(setup_darknet_weights, True)

    # 3. training
    loss_history = train_fn(model,
                            generator,
                            valid_generator=setup_generator,
                            num_epoches=3)
    assert loss_history[0] > loss_history[-1]
Esempio n. 2
0
def test_detect(setup_tf_eager, setup_darknet_weights):
    
    darknet_weights = setup_darknet_weights
    image_path   = os.path.join(PROJECT_ROOT, "tests", "samples", "sample.jpeg")

    # 1. create yolo model & load weights
    yolov3 = Yolonet()
    yolov3.load_darknet_params(darknet_weights)

    # 2. preprocess the image
    image = cv2.imread(image_path)
    image = image[:,:,::-1]

    d = YoloDetector(yolov3, COCO_ANCHORS, net_size=416)
    boxes, labels, probs = d.detect(image)
    assert len(boxes) == 31
Esempio n. 3
0
def test_train(setup_tf_eager, setup_darknet_weights, setup_train_dirs):

    ann_fnames, image_root = setup_train_dirs
    darknet_weights = setup_darknet_weights

    # 1. create generator
    generator = BatchGenerator(ann_fnames,
                               image_root,
                               batch_size=2,
                               labels_naming=["raccoon"],
                               jitter=False)
    valid_generator = BatchGenerator(ann_fnames,
                                     image_root,
                                     batch_size=2,
                                     labels_naming=["raccoon"],
                                     jitter=False)

    # 2. create model
    model = Yolonet(n_classes=1)
    model.load_darknet_params(darknet_weights, True)

    # 3. training
    loss_history = train_fn(model, generator, valid_generator, num_epoches=3)
    assert loss_history[0] > loss_history[-1]
Esempio n. 4
0
import tensorflow as tf
import json
import os
tf.config.gpu.set_per_process_memory_growth(True)
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'

opt = Options()
args = opt.opt
os.environ['CUDA_VISIBLE_DEVICES'] = args.gpu
args.experiment_name = 'yolov3_coco'
args.total_epoch = 100
args.dataset_root='/home/gwl/datasets/coco2017'
args.dataset_name='COCO'
# args.resume = 'load_yolov3'
# args.net_size=608
net = Yolonet(n_classes=80,freeze_backbone=args.freeze_darknet)

#the total size of your dataset
lensVOC=117266
lr_schedule = keras.experimental.CosineDecay(
  initial_learning_rate=args.lr_initial,
  decay_steps=args.total_epoch*(lensVOC//args.batch_size),
  alpha=0.01
)
optimizer = keras.optimizers.SGD(learning_rate=lr_schedule,
                                 momentum=args.momentum)

_Trainer = Trainer(args=args,
                   model=net,
                   optimizer=optimizer,
                   )
Esempio n. 5
0
    def _read_bytes(self, size):
        self.offset = self.offset + size
        return self.all_weights[self.offset - size:self.offset]

    def _load_1d_var(self, variable):
        size = np.prod(variable.shape)
        value = self._read_bytes(size)  # bias
        variable.assign(value)

    def _load_4d_var(self, variable):
        size = np.prod(variable.shape)
        value = self._read_bytes(size)  # scale
        value = value.reshape(list(reversed(variable.shape)))
        value = value.transpose([2, 3, 1, 0])
        variable.assign(value)


if __name__ == '__main__':
    from yolo.net.yolonet import Yolonet
    from yolo import YOLOV3_WEIGHTS
    yolonet = Yolonet(18)
    reader = WeightReader(YOLOV3_WEIGHTS)
    reader.load_weights(yolonet, True)

    yolonet.load_darknet_params(YOLOV3_WEIGHTS, skip_detect_layer=True)

    yolonet = Yolonet(255)
    yolonet.load_darknet_params(YOLOV3_WEIGHTS, skip_detect_layer=True)
    yolonet.load_darknet_params(YOLOV3_WEIGHTS, skip_detect_layer=False)
Esempio n. 6
0
                       help='path to image file')

if __name__ == '__main__':
    args = argparser.parse_args()
    image_path = args.image

    import json
    with open(args.config) as data_file:
        config = json.load(data_file)

    # Download if not exits weight file
    download_if_not_exists(config["pretrained"]["darknet_format"],
                           "https://pjreddie.com/media/files/yolov3.weights")

    # 1. create yolo model & load weights
    yolov3 = Yolonet()
    yolov3.load_darknet_params(config["pretrained"]["darknet_format"])

    # 2. preprocess the image
    image = cv2.imread(image_path)
    image = image[:, :, ::-1]

    d = YoloDetector(yolov3)
    boxes = d.detect(image, COCO_ANCHORS, net_size=416)

    # 4. draw detected boxes
    image = draw_boxes(image, boxes, config["model"]["labels"], obj_thresh=0.5)

    # 5. plot
    plt.imshow(image)
    plt.show()
Esempio n. 7
0
    image_path = args.image

    # set some parameters
    labels = ["person", "bicycle", "car", "motorbike", "aeroplane", "bus", "train", "truck", \
              "boat", "traffic light", "fire hydrant", "stop sign", "parking meter", "bench", \
              "bird", "cat", "dog", "horse", "sheep", "cow", "elephant", "bear", "zebra", "giraffe", \
              "backpack", "umbrella", "handbag", "tie", "suitcase", "frisbee", "skis", "snowboard", \
              "sports ball", "kite", "baseball bat", "baseball glove", "skateboard", "surfboard", \
              "tennis racket", "bottle", "wine glass", "cup", "fork", "knife", "spoon", "bowl", "banana", \
              "apple", "sandwich", "orange", "broccoli", "carrot", "hot dog", "pizza", "donut", "cake", \
              "chair", "sofa", "pottedplant", "bed", "diningtable", "toilet", "tvmonitor", "laptop", "mouse", \
              "remote", "keyboard", "cell phone", "microwave", "oven", "toaster", "sink", "refrigerator", \
              "book", "clock", "vase", "scissors", "teddy bear", "hair drier", "toothbrush"]

    # 1. create yolo model & load weights
    yolov3 = Yolonet()
    yolov3.load_darknet_params(weights_path)

    # 2. preprocess the image
    image = cv2.imread(image_path)
    image = image[:, :, ::-1]

    d = YoloDetector(yolov3)
    boxes = d.detect(image, COCO_ANCHORS, net_size=416)

    # 4. draw detected boxes
    image = draw_boxes(image, boxes, labels, obj_thresh=0.5)

    # 5. plot
    plt.imshow(image)
    plt.show()