cleardusk/3DDFA_V2

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

zubair-ahmed-ai opened this issue · 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

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

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

I am on Windows 10 FWIW

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)

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

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

if len(boxes) == 0:
  continue

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.

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

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'],

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”被忽略

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

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

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

@JacksonL1
transfer .obj to png

@chenbolinstudent face3d this project will help you.

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

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

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

use trimesh module.

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