def generate(self): model_path = os.path.expanduser(self.model_path) assert model_path.endswith( '.h5'), 'Keras model or weights must be a .h5 file.' # 计算总的种类 self.num_classes = len(self.class_names) + 1 # 载入模型,如果原来的模型里已经包括了模型结构则直接载入。 # 否则先构建模型再载入 try: self.ssd_model = tf.keras.models.load_model(model_path, compile=False) except: self.ssd_model = ssd.SSD300(self.model_image_size, self.num_classes) self.ssd_model.load_weights(self.model_path, by_name=True) else: num_anchors = 8753 assert self.ssd_model.layers[-1].output_shape[-1] == \ num_anchors/len(self.ssd_model.output) * (self.num_classes + 5), \ 'Mismatch between model and given anchor and class sizes' #self.ssd_model.summary() print('{} model, anchors, and classes loaded.'.format(model_path)) # 画框设置不同的颜色 hsv_tuples = [(x / len(self.class_names), 1., 1.) for x in range(len(self.class_names))] self.colors = list(map(lambda x: colorsys.hsv_to_rgb(*x), hsv_tuples)) self.colors = list( map(lambda x: (int(x[0] * 255), int(x[1] * 255), int(x[2] * 255)), self.colors))
def generate(self): model_path = os.path.expanduser(self.model_path) assert model_path.endswith( '.h5'), 'Keras model or weights must be a .h5 file.' #-------------------------------# # 计算总的类的数量 #-------------------------------# self.num_classes = len(self.class_names) + 1 #-------------------------------# # 载入模型与权值 #-------------------------------# self.ssd_model = ssd.SSD300(self.input_shape, self.num_classes, anchors_size=self.anchors_size) self.ssd_model.load_weights(self.model_path, by_name=True) print('{} model, anchors, and classes loaded.'.format(model_path)) # 画框设置不同的颜色 hsv_tuples = [(x / len(self.class_names), 1., 1.) for x in range(len(self.class_names))] self.colors = list(map(lambda x: colorsys.hsv_to_rgb(*x), hsv_tuples)) self.colors = list( map(lambda x: (int(x[0] * 255), int(x[1] * 255), int(x[2] * 255)), self.colors))
def generate(self): model_path = os.path.expanduser(self.model_path) assert model_path.endswith('.h5'), 'Keras model or weights must be a .h5 file.' self.num_classes = len(self.class_names) + 1 self.ssd_model = ssd.SSD300(self.model_image_size, self.num_classes) self.ssd_model.load_weights(self.model_path, by_name=True) self.ssd_model.summary() print('{} model, anchors, and classes loaded.'.format(model_path)) hsv_tuples = [(x / len(self.class_names), 1., 1.) for x in range(len(self.class_names))] self.colors = list(map(lambda x: colorsys.hsv_to_rgb(*x), hsv_tuples)) self.colors = list(map(lambda x: (int(x[0] * 255), int(x[1] * 255), int(x[2] * 255)), self.colors))
def generate(self): model_path = os.path.expanduser(self.model_path) assert model_path.endswith( '.h5'), 'Keras model or weights must be a .h5 file.' # all the classes in training set plus background self.num_classes = len(self.class_names) + 1 # load trained model # and their trained parameters of this model self.ssd_model = ssd.SSD300(self.model_image_size, self.num_classes) self.ssd_model.load_weights(self.model_path, by_name=True) self.ssd_model.summary() print('{} model, anchors, and classes loaded.'.format(model_path)) # set different color of different classes of object hsv_tuples = [(x / len(self.class_names), 1., 1.) for x in range(len(self.class_names))] self.colors = list(map(lambda x: colorsys.hsv_to_rgb(*x), hsv_tuples)) self.colors = list( map(lambda x: (int(x[0] * 255), int(x[1] * 255), int(x[2] * 255)), self.colors))