Coder Social home page Coder Social logo

satinder147 / image_deionising_auto_encoder Goto Github PK

View Code? Open in Web Editor NEW
39.0 1.0 9.0 18.51 MB

Noise removal from images using Convolutional autoencoder

Python 100.00%
keras tensorflow opencv opencv-python convolutional-neural-networks autoencoder encoder decoder deep-learning deep-neural-networks encoder-decoder encoder-decoder-model python3 gpu

image_deionising_auto_encoder's Introduction

Image_deionising_auto_encoder

This projects tries to replicate a popular technique known as Image deionising .i.e noise removal from images.It uses a convolutional autoencoder which is able to remove noise from the image.

Autoencoders

Autoencoders is an unsupervised learning technique which learns pixel to pixel mapping. It consists of an encoder-decoder network, out of which encoder tries to compress the image to extract usefull features and the decoder reconstructs the image. The problem with autoencoders is that, the quality of output image is not very detailed. The reasons for the image being not very detailed is that the we are forcing the encoder(the last layers) to learn features of the entire image, the decoder uses this encoding to reconstruct the image. As the features provided were less so is the quality. A very good tutorial for autoencoders

How Does the approach work

I tool my stone paper scissor game dataset(Although I have provided the dataset in this repo but you can have a look at my "game of stone paper scissors vs man" if you want to know how the data was generated) for training the model. We take those image resize them and add noise to them, the image containg noise is fed as input and the same images without noise are used for y_labels.
We can add noise to the images using opencv
For loading, resizing, saving of images I used opencv
I have used keras for training the autoencoder model.

Have a look at the input and ouput yourself

scissor paper stone

Requirements for the project

  1. Python 3.x
  2. Tensorflow 1.5
  3. Keras
  4. OpenCV 3.4(for loading,resizing images)
  5. h5py(for saving trained model)
  6. pyttsx3
  7. A good grasp over convolutional neural networks. For online resources refer to standford cs231n, deeplearning.ai on coursera or cs231n by standford university
  8. A good CPU (preferably with a GPU).
  9. Time
  10. datetime
  11. Patience.... A lot of it.

Installing the requirements

  1. Start your terminal of cmd depending on your os.
  2. If you have a NVidia GPU then make sure you have the prerequisites for Tensorflow GPU installation (Refer to official site). Then use this commmand
pip install -r requirements_gpu.txt
  1. In case you do not have a GPU then use this command
pip install -r requirements_cpu.txt

steps to run the repo

1)Clone the repo
2)Extract the data folders
3)Install the requirements
4)You can change the name of test image in runner.py
5)Run "runner.py"

Liked it

If you liked it you will surely like my other repos as well. You can also have a look at my youtube channel "reactor science". If you have any doubts you can contact me on my facebook page "reactor science"

References

1)Deep learning with python by Francois Chollet
2)keras.io
3)Deeplearning.ai by coursera(prof Andrew Ng)
4)CS231n by stanford
5)Pyimagesearch.com(Adrian Rosenberg)

image_deionising_auto_encoder's People

Contributors

satinder147 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

Watchers

 avatar

image_deionising_auto_encoder's Issues

Just a suggestion

Hi,
Not an ML expert, your code is well formatted and easy to understand but I have a few questions.
First is why you'd use LeakyRelu, I know what it does is prevent vanishing gradient to 0 but I thought there's other optimizers that can do this efficiently, funny enough I can't remember one of head, likely wrong there.
2. You didn't use a deep network with Dense so wouldn't that help make it smarter?
3. What if you could use opencv to add noise and stream a video of rock paper scissors to your autoencoder using time distributed believe that would converge quicker.
4. You called your model "Models" which is a bit confusing.
5. You called the auto encoder twice in the training section.

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.