What type of CNN will be suitable for underwater image processing?Image Processing: Algorithm Improvement for 'Coca-Cola Can' RecognitionWhat is “semantic segmentation” compared to “segmentation” and “scene labeling”?How do I label image segments generated from segmentation algriothm for a Convolutional Neural Network?Why rotation-invariant neural networks are not used in winners of the popular competitions?Comparison of HoG with CNNCNN parameter estimateReduce training time for cnnReal-time Image Processing: Noise in HSV image (openCV)Getting wrong prediction for cnn (Dogs Vs Cat ) KerasImage regression with CNN

Copycat chess is back

Is it possible to make sharp wind that can cut stuff from afar?

Draw simple lines in Inkscape

What is the offset in a seaplane's hull?

How can the DM most effectively choose 1 out of an odd number of players to be targeted by an attack or effect?

How is the claim "I am in New York only if I am in America" the same as "If I am in New York, then I am in America?

How do I create uniquely male characters?

How can I fix this gap between bookcases I made?

Why CLRS example on residual networks does not follows its formula?

How can I hide my bitcoin transactions to protect anonymity from others?

GPS Rollover on Android Smartphones

How to type dʒ symbol (IPA) on Mac?

Do Phineas and Ferb ever actually get busted in real time?

What Brexit solution does the DUP want?

Can I interfere when another PC is about to be attacked?

Why has Russell's definition of numbers using equivalence classes been finally abandoned? ( If it has actually been abandoned).

TGV timetables / schedules?

What would the Romans have called "sorcery"?

How to add power-LED to my small amplifier?

How do we improve the relationship with a client software team that performs poorly and is becoming less collaborative?

Download, install and reboot computer at night if needed

How to make payment on the internet without leaving a money trail?

Patience, young "Padovan"

Why don't electromagnetic waves interact with each other?



What type of CNN will be suitable for underwater image processing?


Image Processing: Algorithm Improvement for 'Coca-Cola Can' RecognitionWhat is “semantic segmentation” compared to “segmentation” and “scene labeling”?How do I label image segments generated from segmentation algriothm for a Convolutional Neural Network?Why rotation-invariant neural networks are not used in winners of the popular competitions?Comparison of HoG with CNNCNN parameter estimateReduce training time for cnnReal-time Image Processing: Noise in HSV image (openCV)Getting wrong prediction for cnn (Dogs Vs Cat ) KerasImage regression with CNN






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;








1















The primary objective (my assigned work) is to do an image segmentation for the underwater images using a convolutional neural network. The camera shots taken from the underwater structure will have poor image quality due to severe noise and bad light exposure. In order to achieve higher classification accuracy, I want to do an automatic image enhancement for the images (see the attached file). So, I want to know, which CNN architecture will be best to do both tasks. Please kindly suggest any possible solutions to achieve the objective.



See the image attached for reference










share|improve this question




























    1















    The primary objective (my assigned work) is to do an image segmentation for the underwater images using a convolutional neural network. The camera shots taken from the underwater structure will have poor image quality due to severe noise and bad light exposure. In order to achieve higher classification accuracy, I want to do an automatic image enhancement for the images (see the attached file). So, I want to know, which CNN architecture will be best to do both tasks. Please kindly suggest any possible solutions to achieve the objective.



    See the image attached for reference










    share|improve this question
























      1












      1








      1








      The primary objective (my assigned work) is to do an image segmentation for the underwater images using a convolutional neural network. The camera shots taken from the underwater structure will have poor image quality due to severe noise and bad light exposure. In order to achieve higher classification accuracy, I want to do an automatic image enhancement for the images (see the attached file). So, I want to know, which CNN architecture will be best to do both tasks. Please kindly suggest any possible solutions to achieve the objective.



      See the image attached for reference










      share|improve this question














      The primary objective (my assigned work) is to do an image segmentation for the underwater images using a convolutional neural network. The camera shots taken from the underwater structure will have poor image quality due to severe noise and bad light exposure. In order to achieve higher classification accuracy, I want to do an automatic image enhancement for the images (see the attached file). So, I want to know, which CNN architecture will be best to do both tasks. Please kindly suggest any possible solutions to achieve the objective.



      See the image attached for reference







      python-3.x image-processing computer-vision conv-neural-network image-segmentation






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Mar 8 at 5:34









      oveznovezn

      63




      63






















          1 Answer
          1






          active

          oldest

          votes


















          1














          What do you need to segment? I'd be nice so see some labels of the segmentation.



          You may not need to enhance the image, if all your dataset has that same amount of noise, the network will generalize properly.



          Regarding CNNs architectures, it depends on the constraints you have with processing power and accuracy. If that is not a constrain go with something like MaskRCNN, check that repo as a good starting point, some results are like this:
          enter image description here
          Be mindful it's a bit of a complex architecture so inference times might be a bit too high (but it's doable on realtime depending your gpu).



          Other simple architectures are FCN (Fully Convolutional Networks) with are basically your CNN but instead of fully connected layers:
          enter image description here



          You replace with with Fully Convolutional Layers:
          enter image description here



          Images taken from HERE.



          The advantage of this FCNs are that they are really easy to implement and modify since you can go with simple architectures (FCN-Alexnet), to more complex and more accurate ones (FCN-VGG, FCN-Resnet).



          Also, I think you don't mention framework, there are many to choose from and it depends on your familiarly with languages, most of them you can do them with python:



          • TensorFlow

          • Pytorch

          • MXNet

          But if you are a beginner, try starting with a GUI based one, Nvidia Digits is a great starting point and really easy to configure, it's based on Caffe so it's fairly fast when deploying and can easily be integrated with accelerators like TensorRT.






          share|improve this answer























          • Thank you @bpinaya for your detailed reply. My project is to do automatic detection of faults in hull (main body of the ship) using CNN. I want to segment the faulty areas such as broken structures and cracks in the image. We can assume most of the pictures will be having same amount of noises.

            – ovezn
            Mar 9 at 11:52











          • I am a beginner to neural networks. The basic knowledge I have is how a neural network and cnn works. I have some hands on in python. As of now i am able to build a neural network for classification and regression by editing already written code according to my needs. So I am not a programming person and from core engineering field who was put incharge of doing a automation work. I can get a basic idea from your reply but not able to understand the full meaning because i am in a beginner level. But I will take this as a thread and try to learn from the hints.

            – ovezn
            Mar 9 at 11:52







          • 1





            In that case you need to start from scratch, I'll suggest you take a course regarding CNNs first, since that'll help you understand what you are coding, the best one out there might be this coursera.org/specializations/deep-learning , but then again it's paid, but it's worth it. If you have a hard deadline try Nvidia Digits (the link I posted), install it and fine tune already trained networks.

            – bpinaya
            Mar 10 at 17:16











          • Thank you so much for your valuable suggestions. Since I have enough time, will start with the tutorial you have mentioned.

            – ovezn
            Mar 11 at 1:02












          Your Answer






          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "1"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55057283%2fwhat-type-of-cnn-will-be-suitable-for-underwater-image-processing%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          1














          What do you need to segment? I'd be nice so see some labels of the segmentation.



          You may not need to enhance the image, if all your dataset has that same amount of noise, the network will generalize properly.



          Regarding CNNs architectures, it depends on the constraints you have with processing power and accuracy. If that is not a constrain go with something like MaskRCNN, check that repo as a good starting point, some results are like this:
          enter image description here
          Be mindful it's a bit of a complex architecture so inference times might be a bit too high (but it's doable on realtime depending your gpu).



          Other simple architectures are FCN (Fully Convolutional Networks) with are basically your CNN but instead of fully connected layers:
          enter image description here



          You replace with with Fully Convolutional Layers:
          enter image description here



          Images taken from HERE.



          The advantage of this FCNs are that they are really easy to implement and modify since you can go with simple architectures (FCN-Alexnet), to more complex and more accurate ones (FCN-VGG, FCN-Resnet).



          Also, I think you don't mention framework, there are many to choose from and it depends on your familiarly with languages, most of them you can do them with python:



          • TensorFlow

          • Pytorch

          • MXNet

          But if you are a beginner, try starting with a GUI based one, Nvidia Digits is a great starting point and really easy to configure, it's based on Caffe so it's fairly fast when deploying and can easily be integrated with accelerators like TensorRT.






          share|improve this answer























          • Thank you @bpinaya for your detailed reply. My project is to do automatic detection of faults in hull (main body of the ship) using CNN. I want to segment the faulty areas such as broken structures and cracks in the image. We can assume most of the pictures will be having same amount of noises.

            – ovezn
            Mar 9 at 11:52











          • I am a beginner to neural networks. The basic knowledge I have is how a neural network and cnn works. I have some hands on in python. As of now i am able to build a neural network for classification and regression by editing already written code according to my needs. So I am not a programming person and from core engineering field who was put incharge of doing a automation work. I can get a basic idea from your reply but not able to understand the full meaning because i am in a beginner level. But I will take this as a thread and try to learn from the hints.

            – ovezn
            Mar 9 at 11:52







          • 1





            In that case you need to start from scratch, I'll suggest you take a course regarding CNNs first, since that'll help you understand what you are coding, the best one out there might be this coursera.org/specializations/deep-learning , but then again it's paid, but it's worth it. If you have a hard deadline try Nvidia Digits (the link I posted), install it and fine tune already trained networks.

            – bpinaya
            Mar 10 at 17:16











          • Thank you so much for your valuable suggestions. Since I have enough time, will start with the tutorial you have mentioned.

            – ovezn
            Mar 11 at 1:02
















          1














          What do you need to segment? I'd be nice so see some labels of the segmentation.



          You may not need to enhance the image, if all your dataset has that same amount of noise, the network will generalize properly.



          Regarding CNNs architectures, it depends on the constraints you have with processing power and accuracy. If that is not a constrain go with something like MaskRCNN, check that repo as a good starting point, some results are like this:
          enter image description here
          Be mindful it's a bit of a complex architecture so inference times might be a bit too high (but it's doable on realtime depending your gpu).



          Other simple architectures are FCN (Fully Convolutional Networks) with are basically your CNN but instead of fully connected layers:
          enter image description here



          You replace with with Fully Convolutional Layers:
          enter image description here



          Images taken from HERE.



          The advantage of this FCNs are that they are really easy to implement and modify since you can go with simple architectures (FCN-Alexnet), to more complex and more accurate ones (FCN-VGG, FCN-Resnet).



          Also, I think you don't mention framework, there are many to choose from and it depends on your familiarly with languages, most of them you can do them with python:



          • TensorFlow

          • Pytorch

          • MXNet

          But if you are a beginner, try starting with a GUI based one, Nvidia Digits is a great starting point and really easy to configure, it's based on Caffe so it's fairly fast when deploying and can easily be integrated with accelerators like TensorRT.






          share|improve this answer























          • Thank you @bpinaya for your detailed reply. My project is to do automatic detection of faults in hull (main body of the ship) using CNN. I want to segment the faulty areas such as broken structures and cracks in the image. We can assume most of the pictures will be having same amount of noises.

            – ovezn
            Mar 9 at 11:52











          • I am a beginner to neural networks. The basic knowledge I have is how a neural network and cnn works. I have some hands on in python. As of now i am able to build a neural network for classification and regression by editing already written code according to my needs. So I am not a programming person and from core engineering field who was put incharge of doing a automation work. I can get a basic idea from your reply but not able to understand the full meaning because i am in a beginner level. But I will take this as a thread and try to learn from the hints.

            – ovezn
            Mar 9 at 11:52







          • 1





            In that case you need to start from scratch, I'll suggest you take a course regarding CNNs first, since that'll help you understand what you are coding, the best one out there might be this coursera.org/specializations/deep-learning , but then again it's paid, but it's worth it. If you have a hard deadline try Nvidia Digits (the link I posted), install it and fine tune already trained networks.

            – bpinaya
            Mar 10 at 17:16











          • Thank you so much for your valuable suggestions. Since I have enough time, will start with the tutorial you have mentioned.

            – ovezn
            Mar 11 at 1:02














          1












          1








          1







          What do you need to segment? I'd be nice so see some labels of the segmentation.



          You may not need to enhance the image, if all your dataset has that same amount of noise, the network will generalize properly.



          Regarding CNNs architectures, it depends on the constraints you have with processing power and accuracy. If that is not a constrain go with something like MaskRCNN, check that repo as a good starting point, some results are like this:
          enter image description here
          Be mindful it's a bit of a complex architecture so inference times might be a bit too high (but it's doable on realtime depending your gpu).



          Other simple architectures are FCN (Fully Convolutional Networks) with are basically your CNN but instead of fully connected layers:
          enter image description here



          You replace with with Fully Convolutional Layers:
          enter image description here



          Images taken from HERE.



          The advantage of this FCNs are that they are really easy to implement and modify since you can go with simple architectures (FCN-Alexnet), to more complex and more accurate ones (FCN-VGG, FCN-Resnet).



          Also, I think you don't mention framework, there are many to choose from and it depends on your familiarly with languages, most of them you can do them with python:



          • TensorFlow

          • Pytorch

          • MXNet

          But if you are a beginner, try starting with a GUI based one, Nvidia Digits is a great starting point and really easy to configure, it's based on Caffe so it's fairly fast when deploying and can easily be integrated with accelerators like TensorRT.






          share|improve this answer













          What do you need to segment? I'd be nice so see some labels of the segmentation.



          You may not need to enhance the image, if all your dataset has that same amount of noise, the network will generalize properly.



          Regarding CNNs architectures, it depends on the constraints you have with processing power and accuracy. If that is not a constrain go with something like MaskRCNN, check that repo as a good starting point, some results are like this:
          enter image description here
          Be mindful it's a bit of a complex architecture so inference times might be a bit too high (but it's doable on realtime depending your gpu).



          Other simple architectures are FCN (Fully Convolutional Networks) with are basically your CNN but instead of fully connected layers:
          enter image description here



          You replace with with Fully Convolutional Layers:
          enter image description here



          Images taken from HERE.



          The advantage of this FCNs are that they are really easy to implement and modify since you can go with simple architectures (FCN-Alexnet), to more complex and more accurate ones (FCN-VGG, FCN-Resnet).



          Also, I think you don't mention framework, there are many to choose from and it depends on your familiarly with languages, most of them you can do them with python:



          • TensorFlow

          • Pytorch

          • MXNet

          But if you are a beginner, try starting with a GUI based one, Nvidia Digits is a great starting point and really easy to configure, it's based on Caffe so it's fairly fast when deploying and can easily be integrated with accelerators like TensorRT.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Mar 8 at 9:22









          bpinayabpinaya

          176110




          176110












          • Thank you @bpinaya for your detailed reply. My project is to do automatic detection of faults in hull (main body of the ship) using CNN. I want to segment the faulty areas such as broken structures and cracks in the image. We can assume most of the pictures will be having same amount of noises.

            – ovezn
            Mar 9 at 11:52











          • I am a beginner to neural networks. The basic knowledge I have is how a neural network and cnn works. I have some hands on in python. As of now i am able to build a neural network for classification and regression by editing already written code according to my needs. So I am not a programming person and from core engineering field who was put incharge of doing a automation work. I can get a basic idea from your reply but not able to understand the full meaning because i am in a beginner level. But I will take this as a thread and try to learn from the hints.

            – ovezn
            Mar 9 at 11:52







          • 1





            In that case you need to start from scratch, I'll suggest you take a course regarding CNNs first, since that'll help you understand what you are coding, the best one out there might be this coursera.org/specializations/deep-learning , but then again it's paid, but it's worth it. If you have a hard deadline try Nvidia Digits (the link I posted), install it and fine tune already trained networks.

            – bpinaya
            Mar 10 at 17:16











          • Thank you so much for your valuable suggestions. Since I have enough time, will start with the tutorial you have mentioned.

            – ovezn
            Mar 11 at 1:02


















          • Thank you @bpinaya for your detailed reply. My project is to do automatic detection of faults in hull (main body of the ship) using CNN. I want to segment the faulty areas such as broken structures and cracks in the image. We can assume most of the pictures will be having same amount of noises.

            – ovezn
            Mar 9 at 11:52











          • I am a beginner to neural networks. The basic knowledge I have is how a neural network and cnn works. I have some hands on in python. As of now i am able to build a neural network for classification and regression by editing already written code according to my needs. So I am not a programming person and from core engineering field who was put incharge of doing a automation work. I can get a basic idea from your reply but not able to understand the full meaning because i am in a beginner level. But I will take this as a thread and try to learn from the hints.

            – ovezn
            Mar 9 at 11:52







          • 1





            In that case you need to start from scratch, I'll suggest you take a course regarding CNNs first, since that'll help you understand what you are coding, the best one out there might be this coursera.org/specializations/deep-learning , but then again it's paid, but it's worth it. If you have a hard deadline try Nvidia Digits (the link I posted), install it and fine tune already trained networks.

            – bpinaya
            Mar 10 at 17:16











          • Thank you so much for your valuable suggestions. Since I have enough time, will start with the tutorial you have mentioned.

            – ovezn
            Mar 11 at 1:02

















          Thank you @bpinaya for your detailed reply. My project is to do automatic detection of faults in hull (main body of the ship) using CNN. I want to segment the faulty areas such as broken structures and cracks in the image. We can assume most of the pictures will be having same amount of noises.

          – ovezn
          Mar 9 at 11:52





          Thank you @bpinaya for your detailed reply. My project is to do automatic detection of faults in hull (main body of the ship) using CNN. I want to segment the faulty areas such as broken structures and cracks in the image. We can assume most of the pictures will be having same amount of noises.

          – ovezn
          Mar 9 at 11:52













          I am a beginner to neural networks. The basic knowledge I have is how a neural network and cnn works. I have some hands on in python. As of now i am able to build a neural network for classification and regression by editing already written code according to my needs. So I am not a programming person and from core engineering field who was put incharge of doing a automation work. I can get a basic idea from your reply but not able to understand the full meaning because i am in a beginner level. But I will take this as a thread and try to learn from the hints.

          – ovezn
          Mar 9 at 11:52






          I am a beginner to neural networks. The basic knowledge I have is how a neural network and cnn works. I have some hands on in python. As of now i am able to build a neural network for classification and regression by editing already written code according to my needs. So I am not a programming person and from core engineering field who was put incharge of doing a automation work. I can get a basic idea from your reply but not able to understand the full meaning because i am in a beginner level. But I will take this as a thread and try to learn from the hints.

          – ovezn
          Mar 9 at 11:52





          1




          1





          In that case you need to start from scratch, I'll suggest you take a course regarding CNNs first, since that'll help you understand what you are coding, the best one out there might be this coursera.org/specializations/deep-learning , but then again it's paid, but it's worth it. If you have a hard deadline try Nvidia Digits (the link I posted), install it and fine tune already trained networks.

          – bpinaya
          Mar 10 at 17:16





          In that case you need to start from scratch, I'll suggest you take a course regarding CNNs first, since that'll help you understand what you are coding, the best one out there might be this coursera.org/specializations/deep-learning , but then again it's paid, but it's worth it. If you have a hard deadline try Nvidia Digits (the link I posted), install it and fine tune already trained networks.

          – bpinaya
          Mar 10 at 17:16













          Thank you so much for your valuable suggestions. Since I have enough time, will start with the tutorial you have mentioned.

          – ovezn
          Mar 11 at 1:02






          Thank you so much for your valuable suggestions. Since I have enough time, will start with the tutorial you have mentioned.

          – ovezn
          Mar 11 at 1:02




















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55057283%2fwhat-type-of-cnn-will-be-suitable-for-underwater-image-processing%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          AWS Lex not identifying response if by a variable The 2019 Stack Overflow Developer Survey Results Are In Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) The Ask Question Wizard is Live! Data science time! April 2019 and salary with experienceEnforcing custom enumeration in AWS LEX for slot valuesHow to give response based on user response in Amazon Lex?Intercepting AWS Lambda Response to a AWS Lex QueryLex chat bot error: Reached second execution of fulfillment lambda on the same utteranceamazon lex showing invalid responseLambda response send back to Lex slot?Response card in Amazon lexAmazon Lex - Lambda response return HTML to botHow can I solve 424 (Failed Dependency) (python) obtained from Amazon lex?

          Алба-Юлія

          Захаров Федір Захарович