{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": { "hide_input": false }, "outputs": [], "source": [ "from fastai.vision import * # Quick access to computer vision functionality" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Vision example" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Images can be in labeled folders, or a single folder with a CSV." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "PosixPath('/home/ubuntu/.fastai/data/mnist_sample')" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "path = untar_data(URLs.MNIST_SAMPLE)\n", "path" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Image folder version" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Create a `DataBunch`, optionally with transforms:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/jpeg": "/9j/4AAQSkZJRgABAQEAZABkAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCAAcABwDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+f+vp79kD/gjR/wAFL/29fhdd/Gr9lD9lrUPFXhazuntpNZbXtNsIpZkzvjhF7cwtOy4wwjDYJUHBYZ+Ya/Rb/g3V/Z++JX7XX7Vsnw7k/wCCh/ib4LeEPBGmPr15beHfHcmmX9+zyCLZZRs4iB3ODLKVYqrKNpLgqAeAftkf8Eef+Ckf/BP/AOHGl/F39rf9l/UfCnhrV70Wdpq663p2oRJOU3rHN9iuJjbswztEoTcVYDJBA+aK/oP/AODvbxn8WNQ/Ys+DN58GP2hfDOv/AAE1LWY9OEOm65LqWp69qsEE5ju570ySJe28SW7gtuDid2aQyFlMf8+FABX3p/wQz/4JNW37fHxquPjR+0pIfDn7P/w2jXVviD4k1RpbS21JEY7dOguNu3c7LiQqwZYw20h2SvguvZ9O/wCChX7ZOj/scT/sAaN8cb6y+EV3rDaneeELLT7SEXNwzB2825SIXMsZYBjC0pjyqnblRgA9o/4LL/8ABVq8/wCCkPxX0TwR8LvAWm+Cvgp8LIZtI+EfgvTLGOFbWy+SM3MgUALJKkMP7pcJEiIgBIZ3+MKKKAP/2Q==\n", "image/png": "iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAABHNCSVQICAgIfAhkiAAAAa5JREFUSIntlrGKwkAQhufkCjERtRYE2caAgqW1IJgyIPgIFj6BaGFvY2MqK0HwBaysRQwRUlhpZyVamVay/1UGPdFs9k6bu4Epssw/387uDNkPIgK90SLvhP0D/xiwUChQu90mzjlxzgkALZdLsizLX+OcU7PZDMwFEe90OvA8L9BPpxPq9frDPJ+iFdq2TYPBwP8ul8ukadpdnKqqxBj7eYXfnTGGUqmEWq12U+FisUA6nX6mlQMSETRNw3q9vgEWi8UgXXhQPB6HaZrY7XY+aL/fI5fLIRqN/j5wOBzeNYvruuj1ekHHGR7Y7XZxPp8fdul8Pn+qDz34iqJQJPJYlkgknuqFx+JirVaLUqmUn7jf71M+nyfTNImIyLKswBzSXUpEUBQFtm2/tksvns1mb2CO4yCTybwGmEwmsVqtfNhmswFjTEQrB7weDcdxRGFyQMMwcDwe4XkettutyDHKA3Vdh+u6fnWGYYTdsHiwqqoYj8c+bDqdIhaLvQao6zomk4kPG41GqFarMvcvFnj9Az4cDqhUKlLNJvWmaTQaNJvNZKT0cSnzXfb2V9sXF0CiY/TP1uMAAAAASUVORK5CYII=\n", "text/plain": [ "Image (3, 28, 28)" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = ImageDataBunch.from_folder(path, ds_tfms=(rand_pad(2, 28), []), bs=64)\n", "data.normalize(imagenet_stats)\n", "img,label = data.train_ds[0]\n", "img" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Create and fit a `Learner`:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracytime
00.0463500.0083950.99754700:06
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "learn = cnn_learner(data, models.resnet18, metrics=accuracy)\n", "learn.fit_one_cycle(1, 0.01)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "tensor(0.9975)" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "accuracy(*learn.get_preds())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### CSV version" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Same as above, using CSV instead of folder name for labels" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/jpeg": "/9j/4AAQSkZJRgABAQEAZABkAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCAAcABwDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD8AER5XEcaFmY4VVGST6V7Nrv/AATi/wCChvhfwPcfE7xN+wb8Z9O8NWlh9tuvEN98LtWhsYbbbu8953txGse3neW245zTP2Bfj9F+y9+1X4X+Odl+z/YfE3XdBnkl8G+FNUEr20muMhSwuJIYlL3Pk3DRyrApQu8aAOvWv2T/AOCZ2lf8Fp/hB8W/iD/wVz/4K0ePvjppvw1+GvhbWdbf4c6xqt43/CS3l0kka2MGjbytpaRNIJMtCkURSIjCI7IAfgRRV7xNqtvrviTUNctNPW0ivL6WeK1QgrCruWCDAAwAcdB06VRoA6H4U/FT4lfBH4h6V8Wfg94z1Hw74m0G5+06PrekzmK5s5QpHmRuOVOCefevuj/ghX+2H+1z42/4LH/DIeKfHXiz4lt8RdWuPDnjzS/EmvT3y6not5FKL1rgTswkjgQvdFTxmDA618w/sMft1/Ez9gj4ka58QPh58O/Ani628UeE7zw34n8MfETw0NS03VNMuQvmwSKrxyoCUQkxSoTtAbcuVP0Hpn/Bf39ob4a+FNa0P9lP9jr9mz4HatrenS2M/jT4T/C17LXLeGVSsghvLm7uHi3KR0+6VDJtbLEA+YP22vhP4B+A/wC2J8U/gp8K/E8eteGvCfxB1fSdB1SKTeLi0t7yWKJt3RzsUAsOGIJGQRXmFPnnnup3ubmZ5JJHLSSSMSzMTkkk9ST3plAH/9k=\n", "image/png": "iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAABHNCSVQICAgIfAhkiAAAAjlJREFUSIntlT9P8lAUxk+RNLapiUmJC0OJg2kHOpAYFwdqwgYJDA6shO/g5OpQFz8BDsa4sDEwCCziqAsJLEzUwQQsJAUSTDyPk7x5LbyvIDJ5kid3OPfkd8+fe69ARKA1WmCdsF/gL3D1QFVVqVAokOd5BICYebre3t6SrutLQTFP9/f3YOapHMdBrVaD67pgZvR6PYRCobnxczTbYds23t7e0O/3oWkaNjc3IYoiAoEAwuHwFBqPx78P1HUd4/EYruvi8PDQ51dVFc/Pz0sBZ/bw4OCAHh8fSdd1qtfrPv/x8THt7Ox8uWefzXcKURQhSdLMExqGMc3u6uoKoiiupoezJEkSSqUSmBntdhvhcHhR2P+BpmkikUjAtm00m83pxB4dHS0Dmw9UFAUXFxd4fX3962p8qFqtIhKJrA54dnYGZsZoNML19TVOT0+xv7+PdDqNp6cnMDNOTk5WBzRNE5lMBru7uz5fNpsFM6Pb7UKW5Z8bmg9tb2/DcRwwM5LJ5M8DiQiXl5dgZtRqtfUAo9EomBnD4RCapn05bunv6eXlhYiIZFmmvb29L8ctDczn80RE5HkePTw8LBTrSzsYDP5z+hRFQbvdBjPj/Pz8ez3c2NhApVLB3d0dBEH4U/tAAJIkIRaLoVgsgpnheR4Mw1gIGPycrmVZZFkWCYJA5XKZJpMJERFtbW1RPB6f7mNmyuVy1Gq1FirnzJKmUikMBgPfc9ZoNNDpdHBzcwPLspaabuGjruuydySsnEwSMpccAAAAAElFTkSuQmCC\n", "text/plain": [ "Image (3, 28, 28)" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = ImageDataBunch.from_csv(path, ds_tfms=(rand_pad(2, 28), []), bs=64)\n", "data.normalize(imagenet_stats)\n", "img,label = data.train_ds[0]\n", "img" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracytime
00.0555030.0079560.99688100:05
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "learn = cnn_learner(data, models.resnet18, metrics=accuracy)\n", "learn.fit_one_cycle(1, 0.01)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" } }, "nbformat": 4, "nbformat_minor": 2 }