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]
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
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]
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, )
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)
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()
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()