示例#1
0
def parse_network_cfg(cfg_path):
	# list of section
	sections = read_cfg(cfg_path)

	if sections[0].type != '[net]':
		print 'Error::cfg first section must be [net], %s' %(sections[0].type)
		exit()

	net = darknet.network()
	parse_net_options(sections[0].options, net)

	params = darknet.network()
	params.h = net.h
	params.w = net.w
	params.c = net.c
	params.inputs = net.inputs
	params.batch = net.batch

	# loop all section except the first one
	net.layers = []
	for s in sections:
		if s.type == '[net]':
			continue
		options = s.options

		# keras model creation
		if s.type == '[crop]':
			l=parse_corp(options, params)
		elif s.type == '[convolutional]':
			l=parse_convolutional(options, params)
		elif s.type == '[maxpool]':
			l=parse_maxpool(options, params)
		elif s.type == '[connected]':
			l=parse_connected(options, params)
		elif s.type == '[dropout]':
			l=parse_dropout(options, params)
		elif s.type == '[detection]':
			l=parse_detection(options, params)
		else:
			print 'Error::Type not recognized: %s' %(s.type)
			exit()

		print s.type
		l.type = s.type
		net.layers.append(l)
		params.h = l.outh
		params.w = l.outw
		params.c = l.outc
		params.inputs = l.outputs
	return net
示例#2
0
def detect_image(image_path):
    net = dn.network(net_cfg, weights)
    meta = dn.metadata(meta_cfg)

    img = cv2.imread(image_path)
    res = dn.detect(net, meta, img)
    img = draw_box(img, res)
    cv2.imshow("frame", img)
    cv2.waitKey(0)

    return res
示例#3
0
def detect_video(video_path):
    net = dn.network(net_cfg, weights)
    meta = dn.metadata(meta_cfg)

    capture = cv2.VideoCapture(video_path)
    read_flag, frame = capture.read()
    while (read_flag):
        res = dn.detect(net, meta, frame)
        img = draw_box(frame, res)
        cv2.imshow("frame", img)
        cv2.waitKey(0)
        read_flag, frame = capture.read()

    capture.release()
示例#4
0
import sys, os
import cv2

sys.path.append(os.path.join(os.getcwd(), 'python/'))
import darknet as dn

# net_cfg="cfg/yolo9000.cfg"
# weights="yolo9000.weights"
# meta_cfg = "cfg/combine9k.data"

net_cfg = "cfg/yolov2.cfg"
weights = "yolov2.weights"
meta_cfg = "cfg/coco.data"

net = dn.network(net_cfg, weights)
meta = dn.metadata(meta_cfg)


def draw_box(img, results):
    for box in results:
        x = box[2][0]
        y = box[2][1]
        box_width = box[2][2]
        box_height = box[2][3]
        x1 = int(x - 1 / 2 * box_width)
        y1 = int(y - 1 / 2 * box_height)
        x2 = int(x + 1 / 2 * box_width)
        y2 = int(y + 1 / 2 * box_height)

        img = cv2.putText(img, box[0], (x1, y1), cv2.FONT_HERSHEY_PLAIN, 1,