{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"id": "c5b9a2d9-e80e-4403-aaef-699ae62a674c",
"metadata": {},
"outputs": [],
"source": [
"#|default_exp app"
]
},
{
"cell_type": "markdown",
"id": "206a72c3-6024-4f2f-9dc1-5eaea0aaf2b4",
"metadata": {},
"source": [
"## Dog vs Cat"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "da75dbb1-afe6-4be2-bcb4-cf93f3232b2f",
"metadata": {},
"outputs": [],
"source": [
"#|export\n",
"import gradio as gr\n",
"from fastai.vision.all import *\n",
"\n",
"def is_cat(x): return x[0].isupper() "
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "044e2714-f758-4376-a023-db7aed76df9b",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"PILImage mode=RGB size=185x123"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"img = PILImage.create('puppy.jpeg')\n",
"img.thumbnail((192, 192))\n",
"img "
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "686a17b6-a4a0-480e-9f84-0f2c14f47a8c",
"metadata": {},
"outputs": [],
"source": [
"#|export\n",
"learn = load_learner('model.pkl')"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "fb6a1c33-de42-44ed-98c6-51b79b7ddd84",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 1.71 s, sys: 477 ms, total: 2.18 s\n",
"Wall time: 342 ms\n"
]
},
{
"data": {
"text/plain": [
"('False', tensor(0), tensor([9.9999e-01, 1.3130e-05]))"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%time learn.predict(img)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "0cf1d03f-30b7-4451-9a21-f01943afa7c5",
"metadata": {},
"outputs": [],
"source": [
"#|export\n",
"categories = ('Dog', 'Cat')\n",
"\n",
"def classify_image(img):\n",
" pred,pred_idx,probs = learn.predict(img)\n",
" return dict(zip(categories, map(float, probs)))\n",
" # return {labels[i]: float(probs[i]) for i in range(len(labels))}"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "4a7dcc01-6fe8-421e-8896-6ba8e286a13c",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"{'Dog': 0.9999868869781494, 'Cat': 1.3129938452038914e-05}"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"classify_image(img)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "8131d659-f862-4294-b683-c5c9ee1d111d",
"metadata": {},
"outputs": [],
"source": [
"#|export\n",
"image = gr.inputs.Image(shape=(512, 512))\n",
"label = outputs=gr.outputs.Label()\n",
"examples=[]"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.8"
}
},
"nbformat": 4,
"nbformat_minor": 5
}