Giter Club home page Giter Club logo

car-damage-detective's Introduction

Car Damage Detective

Assessing Car Damage with Convolutional Neural Networks

Created a proof of concept to expedite the personal auto claims process with computer vision and deep learning. Identified damage location and severity to accuracies of 79% and 71% respectively, comparable to human performance. Trained a pipeline of convolutional neural networks using transfer learning on VGG16 with Keras and Theano to classify damage. Deployed consumer-facing web app with Flask and Bootstrap for real-time car damage evaluations. Data scraped from Google Images using Selenium, hand-labeled for classification and supplemented with the Stanford Car Image Dataset.

  • Blog post - Coming soon!
  • Web app - Car Damage Detective - Currently unavailable
  • Presentation

Access to the image dataset is made available under the Open Data Commons Attribution License: https://opendatacommons.org/licenses/by/1.0/.

Credit for the Google Images scraper goes to Ian London's fantastic General Image Classifier project.

Demonstration

Demo

car-damage-detective's People

Contributors

neokt avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

car-damage-detective's Issues

Directory flow explanation

Hi Neokt thank you for the great repo you have created. It is helping me a lot to understand the flow.
I am getting a little hard time to understand the flow of the directories you have created. Can you please explain the flow of it if possible. Thanks in advance.

Python version?

What version of Python did you use in this project? If it's 2.7, I can't get Tensorflow to install using this version in Anaconda... Please help!

IOError: [Errno 21] Is a directory: 'data0/.ipynb_checkpoints'

can anybody help ton this issue please.
while calling the function in the python code as:
cat_counter = get_car_categories()

the called function definition is as follows:

def get_car_categories():
d = defaultdict(float)
img_list = os.listdir('data0')
for i, img_path in enumerate(img_list):
path = 'data0/'+img_path
img = prepare_image(path)
out = vgg16.predict(img)
top = get_predictions(out, top=5)
for j in top[0]:
d[j[0:2]] += j[2]
if i % 50 == 0:
print i, '/', len(img_list), 'complete'
return Counter(d)

I am getting error as follows:

IOError Traceback (most recent call last)
in ()
----> 1 cat_counter = get_car_categories()

in get_car_categories()
4 for i, img_path in enumerate(img_list):
5 path = 'data0/'+img_path
----> 6 img = prepare_image(path)
7 out = vgg16.predict(img)
8 top = get_predictions(out, top=5)

in prepare_image(img_path)
1 def prepare_image(img_path):
----> 2 img = load_img(img_path, target_size=(224, 224))
3 x = img_to_array(img)
4 x = np.expand_dims(x, axis=0)
5 x = preprocess_input(x)

/usr/local/lib/python2.7/dist-packages/keras/preprocessing/image.pyc in load_img(path, grayscale, target_size)
294 raise ImportError('Could not import PIL.Image. '
295 'The use of array_to_img requires PIL.')
--> 296 img = pil_image.open(path)
297 if grayscale:
298 img = img.convert('L')

/usr/lib/python2.7/dist-packages/PIL/Image.pyc in open(fp, mode)
1994 if isPath(fp):
1995 filename = fp
-> 1996 fp = builtins.open(fp, "rb")
1997 else:
1998 filename = ""

IOError: [Errno 21] Is a directory: 'data0/.ipynb_checkpoints'

NameError: global name 'Sequential' is not defined

Hello everyone while executing the code in jupyter notebook the following error was occured. please anybody can help.

NameError Traceback (most recent call last)
in ()
1 # do not rerun!!
----> 2 save_bottleneck_features(location)

in save_bottleneck_features(location)
2 datagen = ImageDataGenerator(rescale=1./255)
3
----> 4 model = load_vgg16()
5
6 generator = datagen.flow_from_directory(train_data_dir,

in load_vgg16(weights_path)
1 def load_vgg16(weights_path='../vgg16_weights.h5'):
----> 2 model = Sequential()
3 model.add(ZeroPadding2D((1,1),input_shape=(3, img_width, img_height)))
4 model.add(Convolution2D(64, 3, 3, activation='relu'))
5 model.add(ZeroPadding2D((1,1)))

NameError: global name 'Sequential' is not defined

No d1_ft_model.h5 File

unable to open file: name = 'static/models/d1_ft_model.h5', errno = 2, error message = 'No such file or directory'

Unable to access data from google drive https://goo.gl/ZXBaQa

Hi, I am unable to access dataset from the given Google drive link. It get following error: Your connection is not private
Attackers might be trying to steal your information from goo.gl (for example, passwords, messages, or credit cards). Learn more
NET::ERR_CERT_AUTHORITY_INVALID
Please help me with the data access

Labels for datataset.

Just downloaded the dataset from google drive. However, it seem's the labels are not shipped w/ the bundle. The files are organised with subfolders. Do You have a .mat file for editing labels or something else ?

KeyError: "Can't open attribute (can't locate attribute: 'nb_layers')"

In this code from file 02-second_gate-damaged_or_whole :
f = h5py.File(weights_path)
for k in range(f.attrs['nb_layers']):
if k >= len(model.layers):
# we don't look at the last (fully-connected) layers in the savefile
break
g = f['layer_{}'.format(k)]
weights = [g['param_{}'.format(p)] for p in range(g.attrs['nb_params'])]
model.layers[k].set_weights(weights)
f.close()
print('VGG16 Model with partial weights loaded.')
else:
print('VGG16 Model with no weights Loaded.')

This error is occurring

Value error

ValueError: Layer weight shape (3, 3, 3, 64) not compatible with provided weight shape (64, 3, 3, 3)

some functions are missing

Hello, where can I find one argument version of car_categories_gate ?

number2, bad_list2 = car_categories_gate(cat_list2)

And Where can I get these models?

second_gate = load_model('static/models/d1_ft_model.h5')
print( "Second gate loaded")
location_model = load_model('static/models/d2_ft_model.h5')
print( "Location model loaded")
severity_model = load_model('static/models/d3_ft_model.h5')

There are some bugs in the code, I was struggling to handle them.

Fine tune accuracy

I am trying out this code on my own data. However, my train_top_model() gives very good results with around 84% of accuracy. But while finetuning, my accuracy on validation doesn't change at all even after increasing the size of the data. I also tried reducing learning rate and keeping it very low but doesn't help. Any idea why this happens? Please help @neokt

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.