oarriaga/paz

EmotionDetector error

yuanych opened this issue · 1 comments

Code:

class EmotionDetector(pr.Processor):
def init(self):
super(EmotionDetector, self).init()
self.detect = HaarCascadeFrontalFace(draw=False)
self.crop = pr.CropBoxes2D()
self.classify = MiniXceptionFER()
self.draw = pr.DrawBoxes2D(self.classify.class_names)

def call(self, image):
    boxes2d = self.detect(image)['boxes2D']
    cropped_images = self.crop(image, boxes2d)
    results = []
    for cropped_image, box2D in zip(cropped_images, boxes2d):
        result = self.classify(cropped_image)
        box2D.class_name = result['class_name']
        box2D.score = np.amax(result['scores'])
        info = {"name": box2D.class_name, "score": float(box2D.score), "x": int(box2D.coordinates[0]),
                "y": int(box2D.coordinates[1]), "w": int(box2D.width), "h": int(box2D.height)}
        results.append(info)
        # print(f"result: {result} box2D: {box2D}")
    return results

detect = EmotionDetector()
def emotion_classifier(image_bytes, width, height):
numpy_array = np.asarray(image_bytes)
json_detect = detect(numpy_array)

Sometimes it throws an error, and sometimes it is correct.

error1:
boxes2d = self.detect(image)['boxes2D']
^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/paz/abstract/processor.py", line 54, in call
return self.call(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/paz/pipelines/detection.py", line 454, in call
boxes2D = self.predict(image)
^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/paz/abstract/processor.py", line 54, in call
return self.call(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/paz/processors/standard.py", line 247, in call
return predict(x, self.model, self.preprocess, self.postprocess)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/paz/backend/standard.py", line 268, in predict
y = model(x)
^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/paz/models/detection/haar_cascade.py", line 47, in call
boxes = self.model.detectMultiScale(*args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
cv2.error: OpenCV(4.8.1) /Users/xperience/GHA-OpenCV-Python/_work/opencv-python/opencv-python/opencv/modules/objdetect/src/cascadedetect.hpp:46: error: (-215:Assertion failed) 0 <= scaleIdx && scaleIdx < (int)scaleData->size() in function 'getScaleData'

error2:
json_detect = detect(numpy_array)
^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/paz/abstract/processor.py", line 54, in call
return self.call(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/yuanych/research/ZLMediaKit-8.0/ZLMediaKit/Python/emotion_classifier.py", line 18, in call
boxes2d = self.detect(image)['boxes2D']
^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/paz/abstract/processor.py", line 54, in call
return self.call(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/paz/pipelines/detection.py", line 454, in call
boxes2D = self.predict(image)
^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/paz/abstract/processor.py", line 54, in call
return self.call(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/paz/processors/standard.py", line 247, in call
return predict(x, self.model, self.preprocess, self.postprocess)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/paz/backend/standard.py", line 268, in predict
y = model(x)
^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/paz/models/detection/haar_cascade.py", line 47, in call
boxes = self.model.detectMultiScale(*args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
cv2.error: vector

I have similar errors, but mainly regarding the outdated argument 'lr' in the model file. Did you have such error?