fsdl-text-recognizer-project icon indicating copy to clipboard operation
fsdl-text-recognizer-project copied to clipboard

ValueError: Could not load image at /home/..../fsdl-text-recognizer-project/lab1/text_recognizer/tests/support/emnist/U.png:

Open yasersakkaf opened this issue 5 years ago • 2 comments

In Lab_1 , when I try to run tasks/test_functionality.sh or pytest -s text_recognizer/tests/test_character_predictor.py

I get the error mentioned in the issue title. The entire error is as follows:

========================================================================= FAILURES ==========================================================================
___________________________________________________________ TestCharacterPredictor.test_filename ____________________________________________________________

self = <test_character_predictor.TestCharacterPredictor testMethod=test_filename>

    def test_filename(self):
        """Test that CharacterPredictor correctly predicts on a single image, for serveral test images."""
        predictor = CharacterPredictor()

        for filename in SUPPORT_DIRNAME.glob("*.png"):
>           pred, conf = predictor.predict(str(filename))

text_recognizer/tests/test_character_predictor.py:21:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
text_recognizer/character_predictor.py:20: in predict
    image = util.read_image(image_or_filename, grayscale=True)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

image_uri = '/home/yaser.sakkaf/custom_ocr/fsdl-text-recognizer-project/lab1/text_recognizer/tests/support/emnist/U.png', grayscale = True

    def read_image(image_uri: Union[Path, str], grayscale=False) -> np.array:
        """Read image_uri."""

        def read_image_from_filename(image_filename, imread_flag):
            return cv2.imread(str(image_filename), imread_flag)

        def read_image_from_url(image_url, imread_flag):
            url_response = urlopen(str(image_url))  # nosec
            img_array = np.array(bytearray(url_response.read()), dtype=np.uint8)
            return cv2.imdecode(img_array, imread_flag)

        imread_flag = cv2.IMREAD_GRAYSCALE if grayscale else cv2.IMREAD_COLOR
        local_file = os.path.exists(image_uri)
        try:
            img = None
            if local_file:
                img = read_image_from_filename(image_uri, imread_flag)
            else:
                img = read_image_from_url(image_uri, imread_flag)
            assert img is not None
        except Exception as e:
>           raise ValueError("Could not load image at {}: {}".format(image_uri, e))
E           ValueError: Could not load image at /home/yaser.sakkaf/custom_ocr/fsdl-text-recognizer-project/lab1/text_recognizer/tests/support/emnist/U.png:

text_recognizer/util.py:35: ValueError
===================================================================== warnings summary ======================================================================
/opt/anaconda3/envs/fsdl-text-recognizer/lib/python3.7/site-packages/tensorflow/python/pywrap_tensorflow_internal.py:15
  /opt/anaconda3/envs/fsdl-text-recognizer/lib/python3.7/site-packages/tensorflow/python/pywrap_tensorflow_internal.py:15: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
    import imp

-- Docs: https://docs.pytest.org/en/latest/warnings.html
================================================================== short test summary info ==================================================================
FAILED text_recognizer/tests/test_character_predictor.py::TestCharacterPredictor::test_filename - ValueError: Could not load image at /home/yaser.sakkaf/c...
=============================================================== 1 failed, 1 warning in 1.62s ================================================================

yasersakkaf avatar Jul 23 '20 11:07 yasersakkaf

I encountered the same error. The .png files in emnist/ looks like they are corrupted as they load in as None i.e. it is the assertion that fails here

            if local_file:
                img = read_image_from_filename(image_uri, imread_flag)
            else:
                img = read_image_from_url(image_uri, imread_flag)
            assert img is not None

I resaved three images from data/processed/eminst/byclass.h5 into the directory text_recognizer/tests/support/eminst/ and deleted the original ones and the test passed.

SebStrug avatar Aug 22 '20 17:08 SebStrug

The problem with this is that the image files are stored on Git LFS, and if you do a basic git clone without having LFS installed/configured, it'll simply download the reference text file to the Git LFS location.

A solution is to install Git LFS, and do a git lfs pull from the root directory you did a git clone from. Then it'll reach out to Git LFS and download the images as intended.

szelenka avatar Oct 15 '20 17:10 szelenka