{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "6003f943-4355-446f-a48a-2ceb3b194f35", "metadata": {}, "outputs": [], "source": [ "#| default_exp app" ] }, { "cell_type": "markdown", "id": "120a54e9-3144-4bb7-ba4b-949c80951030", "metadata": {}, "source": [ "# Snake Image Classification" ] }, { "cell_type": "code", "execution_count": 25, "id": "eda4b34e-199c-4358-baf8-235bc0b995c7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "('2.7.12', '0.8.6dev0', '0.10.2', '1.5.2', '1.3.0')" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import toml\n", "import fastai\n", "import timm\n", "import pandas\n", "import albumentations\n", "fastai.__version__, timm.__version__ , toml.__version__, pandas.__version__, albumentations.__version__" ] }, { "cell_type": "code", "execution_count": 3, "id": "dc77cb01-22f1-4d1c-bdd2-ab1caff5123a", "metadata": {}, "outputs": [], "source": [ "#| export\n", "from fastai.vision.all import *\n", "from huggingface_hub import from_pretrained_fastai\n", "import gradio as gr\n", "import wikipedia\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 4, "id": "f8bdf35f-049b-4554-b32c-b07f0095336c", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "f9c510daca78426eb98bc06971fd267f", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Fetching 4 files: 0%| | 0/4 [00:00\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
afghanistanalbaniaalgeriaangolaanguillaantigua and barbudaargentinaarmeniaarubaaustralia...uruguayusauzbekistanvanuatuvenezuelavietnamwestern saharayemenzambiazimbabwe
Acanthophis antarcticus0000000001...0000000000
Acanthophis cryptamydros0000000001...0000000000
Acanthophis hawkei0000000001...0000000000
Acanthophis laevis0000000000...0000000000
Acanthophis praelongus0000000001...0000000000
\n", "

5 rows × 195 columns

\n", "" ], "text/plain": [ " afghanistan albania algeria angola anguilla \\\n", "Acanthophis antarcticus 0 0 0 0 0 \n", "Acanthophis cryptamydros 0 0 0 0 0 \n", "Acanthophis hawkei 0 0 0 0 0 \n", "Acanthophis laevis 0 0 0 0 0 \n", "Acanthophis praelongus 0 0 0 0 0 \n", "\n", " antigua and barbuda argentina armenia aruba \\\n", "Acanthophis antarcticus 0 0 0 0 \n", "Acanthophis cryptamydros 0 0 0 0 \n", "Acanthophis hawkei 0 0 0 0 \n", "Acanthophis laevis 0 0 0 0 \n", "Acanthophis praelongus 0 0 0 0 \n", "\n", " australia ... uruguay usa uzbekistan vanuatu \\\n", "Acanthophis antarcticus 1 ... 0 0 0 0 \n", "Acanthophis cryptamydros 1 ... 0 0 0 0 \n", "Acanthophis hawkei 1 ... 0 0 0 0 \n", "Acanthophis laevis 0 ... 0 0 0 0 \n", "Acanthophis praelongus 1 ... 0 0 0 0 \n", "\n", " venezuela vietnam western sahara yemen zambia \\\n", "Acanthophis antarcticus 0 0 0 0 0 \n", "Acanthophis cryptamydros 0 0 0 0 0 \n", "Acanthophis hawkei 0 0 0 0 0 \n", "Acanthophis laevis 0 0 0 0 0 \n", "Acanthophis praelongus 0 0 0 0 0 \n", "\n", " zimbabwe \n", "Acanthophis antarcticus 0 \n", "Acanthophis cryptamydros 0 \n", "Acanthophis hawkei 0 \n", "Acanthophis laevis 0 \n", "Acanthophis praelongus 0 \n", "\n", "[5 rows x 195 columns]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "countries.head()" ] }, { "cell_type": "code", "execution_count": 8, "id": "f9197faa", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['australia', 'papua new guinea']" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_row = countries.loc[\"Acanthophis antarcticus\"]\n", "# for sample_row, get all columns with a value of 1 and return them in a list\n", "countries.loc[\"Acanthophis antarcticus\"][countries.loc[\"Acanthophis antarcticus\"] == 1].index.tolist()" ] }, { "cell_type": "code", "execution_count": 9, "id": "990423e0", "metadata": {}, "outputs": [], "source": [ "#| export\n", "def get_countries(binomial):\n", " sample_row = countries.loc[binomial]\n", " country_list = sample_row[sample_row == 1].index.tolist()\n", " # title case all items in country_list\n", " country_list = [country.title() for country in country_list]\n", " # return all items in country_list as a string\n", " return \", \".join(country_list)" ] }, { "cell_type": "code", "execution_count": 10, "id": "71ac4e3d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Australia, Papua New Guinea'" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "get_countries(\"Acanthophis antarcticus\")" ] }, { "cell_type": "code", "execution_count": 11, "id": "e19fab29", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Australia'" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "get_countries('Acanthophis hawkei')" ] }, { "cell_type": "code", "execution_count": 12, "id": "60ef514f-54f6-4363-911f-6797b99dbbd2", "metadata": {}, "outputs": [], "source": [ "snakes = get_image_files(path)" ] }, { "cell_type": "code", "execution_count": 13, "id": "fd671a4c-3f16-42d0-9df7-3302ab0da0eb", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "PILImage mode=RGB size=192x146" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "im = PILImage.create(snakes[0])\n", "im.thumbnail((192,192))\n", "im" ] }, { "cell_type": "code", "execution_count": 14, "id": "64f84ded-9fa6-4ad2-a998-5d81274cb253", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Path('demo-images/masticophis.jpg')" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "snakes[0]" ] }, { "cell_type": "code", "execution_count": 15, "id": "364db435-5d30-43af-8814-e953600535b6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Prediction of the genus: Masticophis flagellum\n", "Probability: 97.19%\n", "Countries: Mexico, Turkey, Usa\n", "Masticophis flagellum is a species of nonvenomous colubrid snake, commonly referred to as the coachwhip or the whip snake, which is endemic to the United States and Mexico. Six subspecies are recognized, including the nominotypical subspecies.\n" ] } ], "source": [ "pred,idx,probs = learner.predict(im)\n", "print(f\"Prediction of the genus: {pred}\")\n", "print(f\"Probability: {100*probs[idx].item():.2f}%\")\n", "print(f\"Countries: {get_countries(pred)}\")\n", "print(wikipedia.summary(pred))" ] }, { "cell_type": "code", "execution_count": 16, "id": "1ed7a818-dc3c-4d67-937d-d142caf674f1", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Path('demo-images/agkistrodon.png')" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "snakes[2]" ] }, { "cell_type": "code", "execution_count": 17, "id": "bd71a128-18f4-4bee-a0c1-86e719d941cc", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Prediction of the genus: Agkistrodon contortrix\n", "Probability: 100.00%\n", "Countries: Mexico, Usa\n", "The eastern copperhead (Agkistrodon contortrix), also known as the copperhead, is a species of venomous snake, a pit viper, endemic to eastern North America; it is a member of the subfamily Crotalinae in the family Viperidae.\n", "The eastern copperhead has distinctive, dark brown, hourglass-shaped markings, overlaid on a light reddish brown or brown/gray background. The body type is heavy, rather than slender. Neonates are born with green or yellow tail tips, which progress to a darker brown or black within one year. Adults grow to a typical length (including tail) of 50–95 cm (20–37 in).\n", "In most of North America, it favors deciduous forest and mixed woodlands. It may occupy rock outcroppings and ledges, but is also found in low-lying, swampy regions. During the winter, it hibernates in dens or limestone crevices, often together with timber rattlesnakes and black rat snakes. The eastern copperhead is known to feed on a wide variety of prey, including invertebrates (primarily arthropods) and vertebrates. Like most pit vipers, the eastern copperhead is generally an ambush predator; it takes up a promising position and waits for suitable prey to arrive.\n", "As a common species within its range, it may be encountered by humans. Unlike other viperids, they often \"freeze\" instead of slithering away, due to its habit of relying on excellent camouflage, rather than fleeing. Bites occur due to people unknowingly stepping on or near them.Five subspecies have been recognized in the past, but recent genetic analysis had yielded new species information.\n" ] } ], "source": [ "pred,idx,probs = learner.predict(snakes[2])\n", "print(f\"Prediction of the genus: {pred}\")\n", "print(f\"Probability: {100*probs[idx].item():.2f}%\")\n", "print(f\"Countries: {get_countries(pred)}\")\n", "print(wikipedia.summary(pred))" ] }, { "cell_type": "code", "execution_count": 18, "id": "9fb6688e-ebc8-4718-8793-5f073c46bd89", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Path('demo-images/nerodia.jpg')" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "snakes[7]" ] }, { "cell_type": "code", "execution_count": 19, "id": "bae66287-589f-476d-925c-02ce34aeb70b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Prediction of the genus: Nerodia rhombifer\n", "Probability: 99.91%\n", "Countries: Belize, Guatemala, Mexico, Usa\n", "Nerodia rhombifer, commonly known as the diamondback water snake, is a species of nonvenomous natricine colubrid endemic to the central United States and northern Mexico. There are three recognized subspecies of N. rhombifer, including the nominotypical subspecies.\n" ] } ], "source": [ "pred,idx,probs = learner.predict(snakes[7])\n", "print(f\"Prediction of the genus: {pred}\")\n", "print(f\"Probability: {100*probs[idx].item():.2f}%\")\n", "print(f\"Countries: {get_countries(pred)}\")\n", "print(wikipedia.summary(pred))" ] }, { "cell_type": "code", "execution_count": 20, "id": "797ec0c4-db66-4312-9d67-d4e008fbca0c", "metadata": {}, "outputs": [], "source": [ "#| export\n", "categories = tuple(learner.dls.vocab)\n", "\n", "def classify_image(img):\n", " pred,idx,probs = learner.predict(img)\n", " countries = get_countries(pred)\n", " summary = wikipedia.summary(pred)\n", " wiki_link = f'Learn more: {pred}'\n", " return dict(zip(categories, map(float, probs))), countries, summary, wiki_link" ] }, { "cell_type": "code", "execution_count": 21, "id": "0a9cf1d8-b2ac-44a1-88f3-778814fe69c5", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "({'Agkistrodon contortrix': 7.677707714037751e-08,\n", " 'Agkistrodon piscivorus': 6.286637017183239e-06,\n", " 'Boa imperator': 4.072247179465194e-07,\n", " 'Carphophis amoenus': 5.6490312090318184e-06,\n", " 'Charina bottae': 5.74060948110855e-07,\n", " 'Coluber constrictor': 2.58468026004266e-06,\n", " 'Contia tenuis': 2.7349071842763806e-06,\n", " 'Crotalus adamanteus': 2.228937091786065e-06,\n", " 'Crotalus atrox': 3.808705969277071e-06,\n", " 'Crotalus horridus': 1.1339221828166046e-06,\n", " 'Crotalus pyrrhus': 1.3040776138950605e-06,\n", " 'Crotalus ruber': 5.020022442181471e-08,\n", " 'Crotalus scutulatus': 2.061498662442318e-06,\n", " 'Crotalus viridis': 5.00088333410531e-07,\n", " 'Diadophis punctatus': 7.539652528976148e-07,\n", " 'Haldea striatula': 1.276449802389834e-05,\n", " 'Heterodon platirhinos': 9.317946592091175e-07,\n", " 'Hierophis viridiflavus': 9.718727369545377e-07,\n", " 'Lampropeltis californiae': 5.61221838779602e-07,\n", " 'Lampropeltis getula': 7.406313784485974e-07,\n", " 'Lampropeltis triangulum': 1.079560024663806e-05,\n", " 'Masticophis flagellum': 0.0001101287707570009,\n", " 'Micrurus tener': 7.134622137527913e-07,\n", " 'Natrix natrix': 3.180293560944847e-06,\n", " 'Nerodia erythrogaster': 0.00011079021351179108,\n", " 'Nerodia fasciata': 8.221828466048464e-05,\n", " 'Nerodia rhombifer': 0.9991447925567627,\n", " 'Nerodia sipedon': 5.9943962696706876e-05,\n", " 'Opheodrys aestivus': 1.5374049326055683e-05,\n", " 'Opheodrys vernalis': 6.054739856153901e-07,\n", " 'Pantherophis alleghaniensis': 1.1153425475640688e-05,\n", " 'Pantherophis emoryi': 1.006377146950399e-06,\n", " 'Pantherophis guttatus': 1.3548749848268926e-05,\n", " 'Pantherophis obsoletus': 4.6009528887225315e-05,\n", " 'Pantherophis spiloides': 3.583466423151549e-06,\n", " 'Pantherophis vulpinus': 3.0351711757248268e-05,\n", " 'Pituophis catenifer': 1.9792829334619455e-05,\n", " 'Regina septemvittata': 1.2407269423420075e-05,\n", " 'Rhinocheilus lecontei': 2.616184065118432e-05,\n", " 'Storeria dekayi': 2.0656678316299804e-05,\n", " 'Storeria occipitomaculata': 1.0390400575488457e-06,\n", " 'Thamnophis elegans': 1.6275485904770903e-05,\n", " 'Thamnophis hammondii': 5.79929201194318e-06,\n", " 'Thamnophis marcianus': 0.00016931473510339856,\n", " 'Thamnophis ordinoides': 2.348029283893993e-06,\n", " 'Thamnophis proximus': 1.092971160687739e-05,\n", " 'Thamnophis radix': 2.1167873001104454e-06,\n", " 'Thamnophis sirtalis': 1.695604260021355e-05,\n", " 'Vipera berus': 3.6326639474282274e-06,\n", " 'Zamenis longissimus': 2.3329607756750192e-06},\n", " 'Belize, Guatemala, Mexico, Usa',\n", " 'Nerodia rhombifer, commonly known as the diamondback water snake, is a species of nonvenomous natricine colubrid endemic to the central United States and northern Mexico. There are three recognized subspecies of N. rhombifer, including the nominotypical subspecies.',\n", " 'Learn more: Nerodia rhombifer')" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "classify_image(snakes[7])" ] }, { "cell_type": "code", "execution_count": 22, "id": "21ab9dc4-c665-4847-b255-6e1135ebe716", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Running on local URL: http://127.0.0.1:7860\n", "\n", "To create a public link, set `share=True` in `launch()`.\n" ] }, { "data": { "text/plain": [] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#| export\n", "title = \"Snake Species Identification\"\n", "\n", "description = \"\"\"\n", "This demo is an ongoing iteration of the [Snake Species Identification](https://github.com/jimmiemunyi/the-snake-project-cls) project meant to classify snakes up to the species level (binomial name).\n", "\n", "Currently, it can classify snakes into 50 categories but it is continually updated to support more categories (over 200 for the final version).\n", "\n", "The model can be found here: https://huggingface.co/Jimmie/snake-species-identification.\n", "The model is trained on the following dataset: https://www.aicrowd.com/challenges/snakeclef2021-snake-species-identification-challenge.\n", "\n", "Enjoy!\n", "\"\"\"\n", "\n", "article = \"Blog posts on how the model is being trained: COMING SOON!\"\n", "\n", "\n", "image = gr.Image(shape=(224, 224))\n", "label = gr.Label(num_top_classes=3, label='Binomial')\n", "country = gr.Textbox(label='Countries where the species is found')\n", "summary = gr.Textbox(label='Wikipedia Summary')\n", "link = gr.HTML(label=\"Learn More:\", show_label=True)\n", "examples = list(path.ls())\n", "\n", "\n", "intf = gr.Interface(fn=classify_image, inputs=image, outputs=[label, country, summary, link], examples=examples,\n", " title = title, description = description, article = article, cache_examples=False)\n", "intf.launch(inline=False)" ] }, { "cell_type": "markdown", "id": "4caf8f17-34a7-4c98-ac10-80ac3ff7c08b", "metadata": {}, "source": [ "# export" ] }, { "cell_type": "code", "execution_count": 23, "id": "eabe8427-b99a-415b-ba02-43c80822c118", "metadata": {}, "outputs": [], "source": [ "from nbdev.export import nb_export" ] }, { "cell_type": "code", "execution_count": null, "id": "55d4181b-fb8c-425f-be5e-d52c3d423708", "metadata": {}, "outputs": [], "source": [ "nb_export('app.ipynb', lib_path='.')" ] }, { "cell_type": "code", "execution_count": null, "id": "90e76e03-90aa-414a-b203-ee306cc8c59f", "metadata": {}, "outputs": [], "source": [] } ], "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 }