3DDFA_V2 icon indicating copy to clipboard operation
3DDFA_V2 copied to clipboard

ValueError: Buffer dtype mismatch, expected 'int_t' but got 'long long'

Open zubair-ahmed-ai opened this issue 4 years ago • 18 comments

In the line xx1 = np.maximum(x1[i], x1[order[1:]]) below it throws this error in FaceBoxes\utils\nms\py_cpu_nms.py

def py_cpu_nms(dets, thresh):
    """Pure Python NMS baseline."""
    x1 = dets[:, 0]
    y1 = dets[:, 1]
    x2 = dets[:, 2]
    y2 = dets[:, 3]
    scores = dets[:, 4]

    areas = (x2 - x1 + 1) * (y2 - y1 + 1)
    order = scores.argsort()[::-1]

    keep = []
    while order.size > 0:
        i = order[0]
        keep.append(i)
        xx1 = np.maximum(x1[i], x1[order[1:]])
        yy1 = np.maximum(y1[i], y1[order[1:]])
        xx2 = np.minimum(x2[i], x2[order[1:]])
        yy2 = np.minimum(y2[i], y2[order[1:]])

        w = np.maximum(0.0, xx2 - xx1 + 1)
        h = np.maximum(0.0, yy2 - yy1 + 1)
        inter = w * h
        ovr = inter / (areas[i] + areas[order[1:]] - inter)

        inds = np.where(ovr <= thresh)[0]
        order = order[inds + 1]

    return keep

zubair-ahmed-ai avatar Sep 23 '20 14:09 zubair-ahmed-ai

It seems that you do not use the cython version of NMS?

cleardusk avatar Sep 23 '20 14:09 cleardusk

I got compilation error so I uncommented this line and commented the next one

I am on Windows 10 FWIW

zubair-ahmed-ai avatar Sep 23 '20 14:09 zubair-ahmed-ai

I changed to the following in FaceBoxes/utils/nms/cpu_nms.pyx after lots of tries and it seems to be working (in progress)

def cpu_nms(np.ndarray[np.float32_t, ndim=2] dets, np.float thresh):
    cdef np.ndarray[np.float32_t, ndim=1] x1 = dets[:, 0]
    cdef np.ndarray[np.float32_t, ndim=1] y1 = dets[:, 1]
    cdef np.ndarray[np.float32_t, ndim=1] x2 = dets[:, 2]
    cdef np.ndarray[np.float32_t, ndim=1] y2 = dets[:, 3]
    cdef np.ndarray[np.float32_t, ndim=1] scores = dets[:, 4]

    cdef np.ndarray[np.float32_t, ndim=1] areas = (x2 - x1 + 1) * (y2 - y1 + 1)
    cdef np.ndarray[np.int64_t, ndim=1] order = scores.argsort()[::-1]

    cdef int ndets = dets.shape[0]
    cdef np.ndarray[np.int64_t, ndim=1] suppressed = \
            np.zeros((ndets), dtype=np.int64)

zubair-ahmed-ai avatar Sep 23 '20 14:09 zubair-ahmed-ai

I have found a similar issue: https://github.com/eragonruan/text-detection-ctpn/issues/380. BTW, good luck : )

cleardusk avatar Sep 23 '20 14:09 cleardusk

I also had to do below in two places in demo_video.py

if len(boxes) == 0:
  continue

zubair-ahmed-ai avatar Sep 23 '20 15:09 zubair-ahmed-ai

I have found a similar issue: eragonruan/text-detection-ctpn#380. BTW, good luck : )

I got the idea from that post myself, my above fix worked.

zubair-ahmed-ai avatar Sep 23 '20 15:09 zubair-ahmed-ai

If this fix works across platforms, welcome for your PR : )

cleardusk avatar Sep 24 '20 07:09 cleardusk

if you got "cl : Command line error D8021 : invalid numeric argument '/Wno-cpp'" error modify 47 line of build.py to extra_compile_args=['std=c99'],

JacksonL1 avatar Nov 20 '20 03:11 JacksonL1

if you got "cl : Command line error D8021 : invalid numeric argument '/Wno-cpp'" error modify 47 line of build.py to extra_compile_args=['std=c99'],

cl: 命令行 warning D9024 :无法识别的源文件类型“std=c99”,假定为对象文件 cl: 命令行 warning D9027 :源文件“std=c99”被忽略

GuoQuanhao avatar Dec 17 '20 21:12 GuoQuanhao

do you know how to generate the 3D render picture with color? thanks. @cleardusk @JacksonL1

ghost avatar Dec 31 '20 05:12 ghost

@chenbolinstudent the first version of 3DDFA has implement code. I think you can refer to that code

JacksonL1 avatar Dec 31 '20 06:12 JacksonL1

@JacksonL1 I want to get such 3D render picture with color. can the code do it ? 103268599-b0ab6a00-49ee-11eb-90e7-686e276a5586

ghost avatar Dec 31 '20 09:12 ghost

@JacksonL1 transfer .obj to png

ghost avatar Dec 31 '20 09:12 ghost

@chenbolinstudent face3d this project will help you.

JacksonL1 avatar Dec 31 '20 09:12 JacksonL1

it only transfer .mat to png ? not transfer .obj to png?

ghost avatar Jan 04 '21 03:01 ghost

@JacksonL1 @cleardusk I can not transfer .obj to png. can you do it ?

ghost avatar Jan 05 '21 08:01 ghost

@JacksonL1 @cleardusk I can not transfer .obj to png. can you do it ?

use trimesh module.

jylovec avatar Feb 16 '23 06:02 jylovec

On windows10, please uncomment extra_compile_args={'gcc': ["-Wno-cpp", "-Wno-unused-function"]}, in FaceBoxes/utils/build.py line 46

dongfeicui avatar May 11 '23 12:05 dongfeicui