Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ag-Net: building a customized deep neural network for recognizing crop categories based on spectral characteristics #13

Closed
ZihengSun opened this issue Feb 1, 2019 · 156 comments
Labels
deeplearning deep learning GSoC 2019 GSoC 2019 Project help wanted Extra attention is needed

Comments

@ZihengSun
Copy link
Member

ZihengSun commented Feb 1, 2019

ESIP Member Organization

CSISS/LAITS, George Mason University
Alaska Ocean Observing System (AOOS) and Axiom Data Science

Mentors

Ziheng Sun
Jesse Lopez

Project Ideas

Ag-Net: building a customized deep neural network for recognizing crop categories based on spectral characteristics

Information for students

See ESIP general guidelines

Abstract

How many kinds of crops can you recognize? It is hard to say many. In most time of growing season, they are all green plants. Dent corn and sweet corn, black bean and red bean, barley and wheat, grass and weeds, etc. Distinguishing them takes a ton of knowledge and experiences. Agriculture scientists have struggled for years to figure out an automated way to recognize them. Deep learning is a powerful tool for non-linear classification problems. The critical part for deep learning is training dataset, which can be extracted from the reports and map products of U.S. department of agriculture. However, the existing deep neural networks are not performing as well as expected on crop classification because of their learned representation features in the back propagation are not common enough to tell the small differences among crops with similar external look. A customized network with special filters may help tell those minor differences in high spectral characteristics for more accurate recognition results.

Technical Details

Python; Keras; Geoweaver; numpy; scikit-learn; matplotlib; GDAL.

Helpful Experience

Machine learning knowledge; satellite image manipulation; python programming.

First steps

Start to get familiar with DeeplabV3, U-net or any other state-of-art deep neural network and test them on a sample training dataset.

@ZihengSun ZihengSun added help wanted Extra attention is needed GSoC 2019 GSoC 2019 Project deeplearning deep learning labels Feb 1, 2019
@Juhi-Purswani
Copy link

Sir,
I want to contribute in this project. Please help me to get started.
Thanks.

@ZihengSun
Copy link
Member Author

@Juhi-Purswani Sure. Could you please send me an email (zsun@gmu.edu) and we can start discussion. Thank you!

@hdsingh
Copy link

hdsingh commented Feb 8, 2019

@ZihengSun Sir, I am also very interested in working on this project. I have sent you an email. Can you please check and guide me further? Thank you!

@ZihengSun
Copy link
Member Author

@hdsingh Welcome! Thanks for your response! I have sent some tutorials for you to get started.

@rrishabh145
Copy link

rrishabh145 commented Feb 9, 2019

Hi @ZihengSun ,
I am very interested in working on the project and making a contribution to it. I have sent an email to you stating my interest in the project. Please check the mail and guide me for the project.
Thank You!

@AnirudhDagar
Copy link

Hi! I'm really really interested in this project. This is very in line to one of my previous projects.
Correct me if I'm wrong, the underlying task is to build a robust Semantic Image Segmentation model specific for agriculture land Classification.

I'll get started with the literature below and write summary blogs to keep a track of major contributions and the key points for each paper.

Rethinking Atrous Convolution for Semantic Image Segmentation
U-Net: Convolutional Networks for Biomedical Image Segmentation

I've also sent you an email regarding a few doubts and specific questions, probably we can have detailed discussion on slack or through email.

@ZihengSun
Copy link
Member Author

ZihengSun commented Feb 10, 2019

Thank you very much for your responses!

We are still waiting for Google official announcement on Feb 26. Before that, make sure you read the ESIP participation guidelines. Any additional questions please let @abburgess or me know.

We have a general tutorial for exercising deep learning in agriculture on FigShare. Hope it can help you get started.

@swaroop-nath
Copy link

Hello Sir @ZihengSun, I am really interested in contributing to this project. I have previously worked on projects demanding health status of plants which required a fair bit of knowledge in Image Processing, Classification and working with various standard python libraries.
I have sent you a mail in order to get some context, and understand how to get started. In addition, I shall also be doing work on my side of understanding the technologies, including reading latest papers on Deep Learning.
Thank You.

@navyasingh002
Copy link

I am really interested in this project , and I have already been doing similar kind of work earlier on also........could you please guide me on how I can contribute.

@esip-lab
Copy link
Member

esip-lab commented Feb 14, 2019 via email

@aniruddhgoteti
Copy link

Congrats ESIP!

As it is 26th February, I guess it is okay to discuss ideas now!

Hello Ziheng, Hope you are doing well. I was following this organisation and was quite thinking about the ideas to implement this NN. I have mailed them to you. Please let me know how you feel about them.

Thanks and Regards,
Aniruddh

@Harshit4199
Copy link

Hello, I want to contribute myself to this project and want to solve the issues. I have mailed to @ZihengSun and want further comments. Thank you!

@1998at
Copy link

1998at commented Feb 27, 2019

Hello @ZihengSun I am interesting in contributing to the project.I would like to ask you about the dataset that we have to work upon

@ZihengSun
Copy link
Member Author

I created a sample dataset for you to start.
https://github.com/ZihengSun/Ag-Net-Dataset

@AnirudhDagar
Copy link

Thanks for this @ZihengSun, it will be really helpful :)

@thePairedElectron
Copy link

Hello @ZihengSun , I'm Aditya, final year engineering student, I would like to contribute to this project. Please guide me further.

@PariyaPm
Copy link

Hi @ZihengSun , I made my own implementation of U-net and another network called segNet on land change prediction problem (pixel wise semantic segmentation), my paper on that is in the final revisions. I think I'd be able to help on this project. Please let me know if you have patches of labeled data. If I can help at this project I would be glad to.

@sinAshish
Copy link

Hi @ZihengSun, I am interested in contributing towards the project. I have previous worked on a similar problem on Kaggle. I also a fair share of experience with segmentation modelling. Please let me know what do do further!

@ZihengSun
Copy link
Member Author

ZihengSun commented Feb 28, 2019

Hi @PariyaPm ,

Thank you for the response. That was great progress! U-Net and SegNet are both promising networks for land cover classification. I have created a sample training dataset. I believe it is trainable for both nets (I tried it on SegNet a little bit). Let me know if you meet any problems when using them.

Best, Ziheng

@ZihengSun
Copy link
Member Author

Hi @thePairedElectron Please take a look at the sample dataset and general tutorial above to help you get started.

@sinAshish
Copy link

UNet with attention gives better results than SegNet.

@ZihengSun
Copy link
Member Author

@sinAshish It might be true in some cases. However, we need experiment results before making final conclusion statement in general scope.

@sinAshish
Copy link

ok, I'll post the experimental results here after my model gets trained!

@rishi-s8
Copy link

rishi-s8 commented Mar 1, 2019

I would like to contribute to this project. I have some experience with Deep Neural Networks, UNet, Autoencoders, Keras, PyTorch and Tensorflow and with training models. Can you help me get started?

@sankalpmittal1911-BitSian

Respected Sir,
I have sent you an email stating the previous experience I have in the field and have asked for help to get me started further. I have also stated that I have read about U-Net architecture and Image segmentation. I have also seen the dataset which you have posted here.

My email is f20150242@hyderabad.bits-pilani.ac.in.

Can you help me figure out what to do next?

Thank you.

@sarat-svl
Copy link

Hello sir@ZihengSun, I am currently pursuing my pg at IIIT-Hyderabad and I am really interested in working on this project. Can you provide more information about the project and resources so that I can get more familiar?

Mail: sarat.sristi@students.iiit.ac.in

@ZihengSun
Copy link
Member Author

Hi, thank you for the responses! Please start with using the network you are familiar with like unet autoencoder, segnet, yolo, rcnn, etc to test run on the sample dataset above. From the results you will be able to see the drawbacks and think about how to customize the network to improve the accuracy. Write your thought into an application. Any difficulties please let me know.

@1998at
Copy link

1998at commented Mar 26, 2019

@ZihengSun I will Edit the Proposal And get back to you by tomorrow

@ZihengSun
Copy link
Member Author

Open source contributors' experiences will add credit to your proposal. No or less experiences are also fine, as long as you are willing to contribute to open source project in this summer.

@1998at
Copy link

1998at commented Mar 26, 2019

@ZihengSun Thank You for the clarification

@1998at
Copy link

1998at commented Mar 30, 2019

@ZihengSun I tried various methods for a UNet and after 85% it starts to overfit.If i train it for more the training accuracy goes up by 1-2% but then validation accuracy starts jumping between 76-78%.I am going to try FCN and observe if similar things happen.

@1998at
Copy link

1998at commented Mar 30, 2019

@ZihengSun I am also working on the equations and updating my proposal and will be sending the next version in a day or two.Any Suggestions on the above problem ?

@1998at
Copy link

1998at commented Mar 30, 2019

@ZihengSun I was thinking about writing a custom loss function and then multiplying it by some factor to penalise it even more.
lets say loss=1.5 and no.of inaccurate predictions were 34.We can get 34 between a fixed range say[1,4] and multiply the loss by that.The more inaccurate predictions the more heavily the model is penalised and the more accurate predictions it makes the less.Would that work out

@sankalpmittal1911-BitSian
Copy link

@ZihengSun I noticed that the dataset is imbalanced, so I guess we could replace the loss with the weighted loss function. I am trying the same right now. I will also send updated proposal in 1-2 days.

They have derived it for MNIST dataset: keras-team/keras#2115

I can try to derive it for this dataset. Also, I think we already have predefined function in tf.

@sankalpmittal1911-BitSian

I am also going to try PSPNet or LinkNet because for UNet I cannot go beyond 80% training and 73% validation.

@ZihengSun
Copy link
Member Author

If the network starts to overfit when validation accuracy is ~80%, I would say its capability cap is already reached. Customization is the only way to go beyond that line.

@ZihengSun
Copy link
Member Author

The dataset is imbalanced because the land cover is naturally biased. The pixels of roads are much fewer than the pixels of crop fields. You could try class weight.

@esip-lab
Copy link
Member

esip-lab commented Apr 2, 2019

Hi all - a friendly reminder that there is ONE WEEK LEFT to submit your proposals for this project! Best of luck and we're excited to see what is submitted!

@sankalpmittal1911-BitSian

@ZihengSun I know that very less time is left. I will send you updated proposal by today's end. Shall I also share that on the portal or wait for it?

@ZihengSun
Copy link
Member Author

@abburgess Hi Annie, where should the proposals be submitted to?

@CaptainDredge
Copy link

@ZihengSun please check your email. I've sent something regarding proposal 😄

@esip-lab
Copy link
Member

esip-lab commented Apr 4, 2019 via email

@sankalpmittal1911-BitSian

@ZihengSun Please check your email for updated draft proposal. What can I do to improve it further?

@sankalpmittal1911-BitSian

Also shall I share it with the organization?

@ghost
Copy link

ghost commented Apr 5, 2019

Hi @ZihengSun !
I am very excited to contribute to this project. I know that it's way too late to get started, but I think that I can understand much in this one week.
So, can you please provide me with the required details to get started.
Thanks.

@sankalpmittal1911-BitSian

@ZihengSun Also, I found a very interesting publication: https://www.mdpi.com/2072-4292/10/8/1217/pdf

It makes use of temporal dependencies, as in it uses GRUs to classify crops. Maybe I can make use of that. Right now I am trying to find segmentation models which can achieve accuracy greater than 80% and I am thinking of accomplishing this by the end of 6th May (Pre-GSoC).

@1998at
Copy link

1998at commented Apr 5, 2019

@ZihengSun I have Sent you the Updated Proposal.Can you please go through it and please provide me with FeedBack before i upload it on the official GSOC Site.ThankYou

@1998at
Copy link

1998at commented Apr 7, 2019

@ZihengSun I trained my model for about 100 epochs(takes about an hour ) and while my training loss started going down very slowly but my validation loss started Stabilising to 78%.I will add The Custom Layer and Try On some more Customisation Itself.Meanwhile Can you please help me on with the proposal .Thanks

@sankalpmittal1911-BitSian

@ZihengSun I have already tried using custom lambda layer and it doesn't seem to make any difference. I have already used UNet. I will FPN/PSPNet/LinkNet and get back with the result as soon as I can.

Also please give feedback to the draft proposal.

@ZihengSun
Copy link
Member Author

Hi @ZihengSun !
I am very excited to contribute to this project. I know that it's way too late to get started, but I think that I can understand much in this one week.
So, can you please provide me with the required details to get started.
Thanks.

Most information is available in this thread.

@CaptainDredge
Copy link

@ZihengSun I've sent the proposal for review on your mail 😄

@1998at
Copy link

1998at commented Apr 8, 2019

@ZihengSun I have Updated The Proposal Added Some Things.Can you please go through it.I understand that at this point you might be flooded with reviewing proposals so make things simpler I have Highlighted Whatever Changes I Made So You wont have to Go through Entire Document.I really Hope That you can Give it One Final Read Before I submit on the portal tomorrow

@1998at
Copy link

1998at commented Apr 9, 2019

@ZihengSun Should I give link to the Visualization Notebook Used in the proposal?

@1998at
Copy link

1998at commented Apr 9, 2019

@ZihengSun I have submitted My Final Proposal To The GSoC Site After Modifying it according to your Last Feedback.I would Like To Thank You For Helping Me Out With the Proposals.And Will Continue Working On it Trying Various Ways And Communicating With You the results

@sankalpmittal1911-BitSian

@ZihengSun I have uploaded the final proposal. Please see other sections like training steps where I have delved deeper regarding eliminating overfitting, underfitting etc. Under current approach, I have added reasons why approach is not working and possible steps to eliminate the issues. I hope I have covered mathematically and logically the schedule. Thank you.

@ZihengSun
Copy link
Member Author

Thank you all for your efforts!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
deeplearning deep learning GSoC 2019 GSoC 2019 Project help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests