I am building an image processing classifier and this code is an API to predict the image class of the image the whole code is running except this line (pred = model.predict_classes(test_image)) this API is made in Django framework and am using python 2.7
here is a point if I am running this code like normally ( without making an API) it’s running perfectly
def classify_image(request):
if request.method == 'POST' and request.FILES['test_image']:
fs = FileSystemStorage()
fs.save(request.FILES['test_image'].name, request.FILES['test_image'])
test_image = cv2.imread('media/'+request.FILES['test_image'].name)
if test_image is not None:
test_image = cv2.resize(test_image, (128, 128))
test_image = np.array(test_image)
test_image = test_image.astype('float32')
test_image /= 255
print(test_image.shape)
else:
print('image didnt load')
test_image = np.expand_dims(test_image, axis=0)
print(test_image)
print(test_image.shape)
pred = model.predict_classes(test_image)
print(pred)
return JsonResponse(pred, safe=False)
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
Your test_image and input of tensorflow model is not match.
# Your image shape is (, , 3)
test_image = cv2.imread('media/'+request.FILES['test_image'].name)
if test_image is not None:
test_image = cv2.resize(test_image, (128, 128))
test_image = np.array(test_image)
test_image = test_image.astype('float32')
test_image /= 255
print(test_image.shape)
else:
print('image didnt load')
# Your image shape is (, , 4)
test_image = np.expand_dims(test_image, axis=0)
print(test_image)
print(test_image.shape)
pred = model.predict_classes(test_image)
The above is just assumption. If you want to debug, i guess you should print your image size and compare with first layout of your model definition. And check whe the size (width, height, depth) is match
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0