Semantic segmentation for grayscale image

How can implement semantic segmentation for gray scale image? How to train that network?

2 Comments

Yes. At worst case, repmat() the grayscale along the third dimension to make it an RGB image.
I have also RGB images. But how to implement the concept ? Means how to train that network?

Sign in to comment.

Answers (2)

Start here:
I'm working on a simplified version where you simply just locate your input images, and labeled images folder but it's not ready to share yet.

2 Comments

Have gone through this link. Is it applicable for any image?
clc; clear all; close all;
data = load('triangleSegmentationNetwork');
net = data.net;
net.Layers;
I = imread('E:\image1.png');
[C,scores] = semanticseg(I,net,'MiniBatchSize',32);
B = labeloverlay(I, C);
figure
imshow(B);
figure
imagesc(scores)
axis square
colorbar
BW = C == 'triangle';
figure
imshow(BW)
Not working
If the Mathworks demo isn't working then make sure your input is correct (whether color image or gray scale, and size of image, if that matters). If it is correct then call tech support and tell them the demo doesn't work.

Sign in to comment.

It may be that my implementation is not right. I just checked. And asked whether I am doing the right thing

12 Comments

Hope you will guide me
Please attach your image1.png
OK, but what did tech support say when you called them?
Walter. Please my attached images.
When I run with your "image 1.png" and your code, I do not see any problem. It just gives an empty final plot, which is what should be expected since there are no triangles in the input image.
That means I can train with this network for segmenting my images
This is the code I used:
filename = 'https://www.mathworks.com/matlabcentral/answers/uploaded_files/1050055/image%201.png';
data = load('triangleSegmentationNetwork');
net = data.net;
net.Layers;
I = imread(filename);
[C,scores] = semanticseg(I,net,'MiniBatchSize',32);
B = labeloverlay(I, C);
figure
imshow(B);
figure
imagesc(scores)
axis square
colorbar
BW = C == 'triangle';
figure
imshow(BW)
The code ran without error. The final image was empty...
Oh wait, the final images BW are not empty. What is happening is that every location is being detected as triangle, so the output is pure white (all locations match.)
This is what I have done. Am I doing the right thing. I am not able to understand this properly. How I will say that it is segmented
In the below example, everything that shows up black is labeled 'background'.
The implication is that the triangle segmentation network is not very specific at all.
Your sign-language images are being segmented... but the segmentation is saying that everything in the image is part of some triangle.
filename = 'baby.jpg';
data = load('triangleSegmentationNetwork');
net = data.net;
net.Layers;
I = imread(filename);
[C,scores] = semanticseg(I,net,'MiniBatchSize',32);
B = labeloverlay(I, C);
figure
imshow(B);
figure
imagesc(scores)
axis square
colorbar
BW = C == 'triangle';
figure
imshow(BW)
In the above example I can see the triangle. But in case of sign languages I am only getting white rectangle region. Apart from using this triangle method is there any way for semantic segmentation? How can only segment hand signs from background in this case?
The pre-trained Triangle Semantic Segmentation Network might simply be too weak for your purposes, especially since your sample sign images are not very triangular.

Sign in to comment.

Categories

Find more on Deep Learning Toolbox in Help Center and File Exchange

Asked:

on 27 Jun 2022

Commented:

on 30 Jun 2022

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!