DeepFlowest

Darknet 프레임 워크를 Python3 환경에서 Object Detection 본문

Computer Vision/실습, 세미 프로젝트

Darknet 프레임 워크를 Python3 환경에서 Object Detection

Orange57 2020. 11. 12. 14:12
728x90
반응형
SMALL

eehoeskrap.tistory.com/355

 

[Object Detection] Darknet python

Darknet 프레임 워크를 이용하여 Python3 환경에서 Video 영상을 입력으로 Object Detection을 하는 방법이다. 이 때, Darknet 소스코드에 있는 darknet/python/darknet.py 파일을 이용하여 바로 video 영상을 입..

eehoeskrap.tistory.com

1. 에러 1

libdarknet.so : undefined symbol : ndarray_to_image 에러 발생!!

파이썬 버전 문제인 줄 알았지만 

darknet.py 파일에서 다음 코드들 대신에

아래 코드 삽입 후 다시 돌리면 돌아간다.

def array_to_image(arr):
    # need to return old values to avoid python freeing memory
    arr = arr.transpose(2,0,1)
    c, h, w = arr.shape[0:3]
    arr = np.ascontiguousarray(arr.flat, dtype=np.float32) / 255.0
    data = arr.ctypes.data_as(POINTER(c_float))
    im = IMAGE(w,h,c,data)
    return im, arr

def detect(net, meta, image, thresh=.5, hier_thresh=.5, nms=.45):
    """if isinstance(image, bytes):  
        # image is a filename 
        # i.e. image = b'/darknet/data/dog.jpg'
        im = load_image(image, 0, 0)
    else:  
        # image is an nparray
        # i.e. image = cv2.imread('/darknet/data/dog.jpg')
        im, image = array_to_image(image)
        rgbgr_image(im)
    """
    im, image = array_to_image(image)
    rgbgr_image(im)
    num = c_int(0)
    pnum = pointer(num)
    predict_image(net, im)
    dets = get_network_boxes(net, im.w, im.h, thresh, 
                             hier_thresh, None, 0, pnum)
    num = pnum[0]
    if nms: do_nms_obj(dets, num, meta.classes, nms)

    res = []
    for j in range(num):
        a = dets[j].prob[0:meta.classes]
        if any(a):
            ai = np.array(a).nonzero()[0]
            for i in ai:
                b = dets[j].bbox
                res.append((meta.names[i], dets[j].prob[i], 
                           (b.x, b.y, b.w, b.h)))

    res = sorted(res, key=lambda x: -x[1])
    if isinstance(image, bytes): free_image(im)
    free_detections(dets, num)
    return res

2. 에러 2

Gtk-ERROR **: GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+ 3 in the same process is not supported

 

==> OpenCV를 설치할 때 윈도우를 생성하여 이미지나 비디오를 보여주기 위해 gtk를 설치했었는데, 

gtk 2로 설치했던 게 문제가 생긴 것 같다.

 

지금 코드를 돌리기 위해서는 gtk 3이 필요한 것이다.

 

728x90
반응형
LIST
Comments