{ "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/9oADAMBAAIRAxEAPwD8IfhL8JfiT8d/iTo3wf8Ag/4NvfEPifxDeraaLounR757udskIgyOcAn8K+1f+IYX/gub/aP9l/8ADDE3m+R5u7/hYnhvy9ucY8z+0dm7P8Od2OcY5r4W8N+JvEng3XbXxR4Q8QX2lanZS+ZZ6jpt28E8D/3kkQhlPuCDX9Xf/BFL9nPxB+y9+yVo8lx/wU5h+Knxh+J3gWTUvB/h3xV8R5dV8O6fO8Iu/wDRLBbhZ7pE3wmecHzNitsMSuQQD+VH4k/Dbx78HfH+sfCz4o+Er7QfEXh/UJbHWdH1KAxz2lxGxV43U9CCPoRyMg5rEr079tXWPi9rv7X3xOvfj947g8T+NY/Hmq23ijxBaTb4L+9hupIZJYTtX90WQ7PlUBNoAAGB5jQBoeFfCfijx14is/CHgrw5favq2oTiGw0zTLR57i5kPREjQFnPsBX7Pa9qvg//AINgf2DtI03wlofh/Wf2z/jbpUx1bX5gLhvh9pDpG4gVHUFZBvi+QgCWYM7744Y0b8gPgH8efiv+zB8ZPD3x/wDgZ4q/sPxd4V1Bb7QdW+wwXP2WcAgP5VwkkT8E8OjDnpVn9o39pL44/tcfGPWv2gP2jfiNfeKvF/iC4E2q6xfqiGQgBVRI41WOGNVAVY41VEAAVQOKAOMvr261K9m1G+mMk1xK0k0jdWZjkn8SaioooA//2Q==\n", "image/png": "iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAABHNCSVQICAgIfAhkiAAAAbFJREFUSInt1q+rwlAUB/Cv8oK4iZoFQW5xoGA0C4KLA8E/weBfIBrsFotLJkHwHzCZRRwTFkzaTKLJVdk9Lznc071t/lh4vAMnbFzOZ+dw77YIAEKIEQ0T+wf/OFgsFtHpdMA5B+ccRITVagVN0+x7nHO0Wq3AKD3KbrdLlmV55vl8pkaj8bDGo/xyewpd1zEcDu3rSqUCSZLu1omiCMbY6x3+TMYYlctlqtfrjg6XyyVlMhnfHfoGAZAkSbTZbBxgqVQKgvkDE4kEqapK+/3ehg6HA+XzeYrFYu8HR6PR3WYxTZP6/X7QcXqDvV6PLpeL6y5dLBaBQM+DLwgColH3Zclk0quEI1yPxTXa7TbS6bRdeDAYoFAoQFVVAICmaYFAINj8SRAE0nX9s7v0mrlczoEZhkHZbPYzYCqVovV6bWPb7ZYYY0Ex/+Dt0TAM41nMH6goCp1OJ7Isi3a73TNj9A/KskymadrdKYryCvY7KIoiTSYTG5vNZhSPxz8DyrJM0+nUxsbjMdVqtVcxd/D2A3w8Hqlarb4D8361AUCz2cR8Pvez1DMi1zbDitD/2r4B9QGiYzfORjUAAAAASUVORK5CYII=\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": [ "Total time: 00:05

\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracy
10.0478180.0123410.997056
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "learn = create_cnn(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.9971)" ] }, "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/9oADAMBAAIRAxEAPwD8CNH0fV/EOr2ugaBpdzfX99cpb2VlZwNLNcTOwVI0RQWdmYgBQCSSAK/QS3/4Nwf2lNP8S6L8KviR+3J+yv4L+JmufZorf4Q+Kfi88fiaC8uI1kt7KW1hs5VSeQPGEXzCrGRQGO4V8R/s9/EH4o/Cn45+EviL8Eddt9L8YaRr9rP4Y1O6W2KWl8JAIZSbkGFdrlW3yfKpAYkYyP19/wCCX/8AwTp/Zl+FX/BRvQfjB+19/wAFPPhJ8Y/j8bmfWfBfww0TxXdamms+L/J8+2Go64Y2iEizkHaA5eUKQX2mNgD8d/jR8HviH+z58XPE3wL+LWgHSvE/hDXLnSNf04zJJ9nu7eRo5EDoSrgMpwykqwwQSCK5mvTf20fHHxo+JX7XfxN8d/tGaQmn+PtT8d6pN4x06O28lbTUvtUguIQn8ISQMgHX5eSTzXmVAHe/sz/sw/Hf9sT4yaX+z9+zZ8OrvxV4v1mOeTTtHs5Y42kSGF5pWLysqIFjjY5ZhnAAySAfoL9gT/glr/wVE+JP7WngA/CP9lj4meFtQ0vxppl0PGuseB720sfDzR3KSC9nmnjSNRHsMmwtl9hVQScV8qeCvG/jT4beLNP8ffDrxfqmga7pF0lzpWtaLqElrd2U6nKyxTRMrxuDyGUgj1r1Xxl/wUk/4KJ/EXQ7jwx8Qf2+PjTrum3cDwXWn6z8U9XuoJonxuR45bhlZTgZBGDgUAeuf8F+/il8BPjL/wAFd/jV4/8A2bjbS+HLnxFFBNf2MqPb6hqMNrDDfXURTKsklzHMwYEhyS+fnr46oooA/9k=\n", "image/png": "iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAABHNCSVQICAgIfAhkiAAAAjpJREFUSIntlrtr6gAUxk9UghEFweKSQXEocdBBKC4OpuDWgg4OruL/4OTqoIt/gQ5SXNw6dPCx2I7tItjFqToIPiEqKPR8d6qXWx9EtN473AMfGb6c/HIeeQhEBLpgGC4J+w/8O0CHw0HFYpE0TSMAxMybY61WI0VRjobikF5eXsDMG/V6PTSbTUwmEzAzRqMRrq6uDl7jm/abuVwOn5+fmE6ncLlcMJvNEEURBoMBsixvoOFw+HSgoihYLpeYTCYIhUJbvsPhwGAwOBq4d4bBYJDe3t5IURR6fn7e8uPxODmdTl0z+x4770QURUiStNPzer2b6srlMkRRPM8Md0mSJDw+PoKZ0e12IcvyUfm6gH6/H5FIBLlcDp1OZ7Oxt7e3x8IOA61WKwqFAtbr9R+PxpcajQbcbvf5gNlsFsyMxWKBh4cHZDIZ3NzcIBqNot/vg5mRTqfPB/T7/YjFYvB4PFteIpEAM2M4HMJisfzc0nzJbrej1+uBmXF3d/fzQCJCqVQCM6PZbF4G6PP5wMyYz+dwuVy6ck76PI3HYyIislgsdH19rSvnJGAqlSIiIk3T6PX1VXfeztJNJtPB7bNareh2u2Bm5PP502ZoNBpRr9fRarUgCMLv/hsMkCQJgUAA1WoVzAxN0+D1enUDTbtKVlWVVFUlQRDo6emJVqsVERHZbDYKh8Ob85iZkskkvb+/627n3pbe399jNpttvc7a7TY+Pj5QqVSgqurRmy189fVS8e/9tZ07fgE2HZxMxtUJEAAAAABJRU5ErkJggg==\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": [ "Total time: 00:04

\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracy
10.0560970.0145360.994802
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "learn = create_cnn(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 }