import numpy as np def parse_model_cfg(path): # Parses the yolo-v3 layer configuration file and returns module definitions file = open(path, 'r') lines = file.read().split('\n') lines = [x for x in lines if x and not x.startswith('#')] lines = [x.rstrip().lstrip() for x in lines] # get rid of fringe whitespaces mdefs = [] # module definitions for line in lines: if line.startswith('['): # This marks the start of a new block mdefs.append({}) mdefs[-1]['type'] = line[1:-1].rstrip() if mdefs[-1]['type'] == 'convolutional': mdefs[-1]['batch_normalize'] = 0 # pre-populate with zeros (may be overwritten later) else: key, val = line.split("=") key = key.rstrip() if 'anchors' in key: mdefs[-1][key] = np.array([float(x) for x in val.split(',')]).reshape((-1, 2)) # np anchors else: mdefs[-1][key] = val.strip() return mdefs def parse_data_cfg(path): # Parses the data configuration file options = dict() with open(path, 'r') as fp: lines = fp.readlines() for line in lines: line = line.strip() if line == '' or line.startswith('#'): continue key, val = line.split('=') options[key.strip()] = val.strip() return options