Hey everyone, new student here.
The PILImage.create()
function requires the image we’re trying to upload. From the docs I read
>>> import ipywidgets as widgets
>>> uploader = widgets.FileUpload()
# After displaying `uploader` and uploading a file:
>>> uploader.value
[
{
'name': 'example.txt',
'type': 'text/plain',
'size': 36,
'last_modified': datetime.datetime(2020, 1, 9, 15, 58, 43, 321000, tzinfo=datetime.timezone.utc),
'content': <memory at 0x10c1b37c8>
}
]
>>> uploader.value[0].content.tobytes()
That’s what we need to pass to PILImage.create()
. Here’s the final code
def on_click_classify(change):
img = fastbook.PILImage.create(btn_upload.value[0].content.tobytes())
out_pl.clear_output()
with out_pl: display(img.to_thumb(128,128))
pred,pred_idx,probs = learn.predict(img)
lbl_pred.value = f"Prediction: {pred}; Probability: {probs[pred_idx]:.04f}"