City Detector 🏙️

computer_vision
side-quest
Author

Jaekang Lee

Published

October 27, 2020

City Detector 🏙️

Coquitlam Paris Seoul and New York.

Let’s make app that recognizes Coquitlam!

Let’s get the images of each city

(#596) [Path('cities/coquitlam/00000000.jpg'),Path('cities/coquitlam/00000001.jpg'),Path('cities/coquitlam/00000002.png'),Path('cities/coquitlam/00000003.jpg'),Path('cities/coquitlam/00000004.jpg'),Path('cities/coquitlam/00000005.jpg'),Path('cities/coquitlam/00000006.jpg'),Path('cities/coquitlam/00000007.jpg'),Path('cities/coquitlam/00000008.jpg'),Path('cities/coquitlam/00000009.jpg')...]
(#16) [Path('cities/coquitlam/00000067.jpg'),Path('cities/coquitlam/00000077.JPG'),Path('cities/coquitlam/00000079.jpg'),Path('cities/coquitlam/00000135.jpg'),Path('cities/new york city/00000010.jpg'),Path('cities/new york city/00000014.jpg'),Path('cities/new york city/00000020.jpg'),Path('cities/new york city/00000026.jpg'),Path('cities/new york city/00000029.jpg'),Path('cities/new york city/00000037.jpg')...]
(#16) [None,None,None,None,None,None,None,None,None,None...]

Let’s load the data

Let’s scale and augment the datas

Let’s build and run a CNN model

epoch train_loss valid_loss error_rate time
0 2.187395 1.315027 0.482759 00:42
epoch train_loss valid_loss error_rate time
0 1.307873 0.871226 0.336207 00:41
1 1.064780 0.831430 0.241379 00:41
2 0.876646 0.767134 0.215517 00:41
3 0.784991 0.738216 0.224138 00:49

Let’s look at the confusion matrix

We got an accuracy of 26/90 = 71% (rounded)

Let’s try to clean up the dataset

epoch train_loss valid_loss error_rate time
0 1.933403 1.322945 0.460870 00:38
epoch train_loss valid_loss error_rate time
0 1.258363 0.800413 0.347826 00:37
1 1.014135 0.660854 0.243478 00:38
2 0.851025 0.609896 0.243478 00:38
3 0.725140 0.591347 0.217391 00:37
4 0.623130 0.582418 0.226087 00:37

Valid_loss doesn’t decrease so we stop

It looks like it has a hard time highlighting seoul city’s characteristics as most error comes from seoul images. Suspected factors include seoul having new york like buildings, mountains like coquitlam and brick structures like paris city.

Ignore Below (Deployment IPR)

(#1) [Path('export.pkl')]
['coquitlam', 'new york city', 'paris city', 'seoul city']

Classify Button & Event Handler