Somthing worry in C3D net about pytorch grayscale channel


(linbeibei) #1

I built a C3D network.
self.conv1 = nn.Conv3d(3, 64, kernel_size=(3, 3, 3), padding=(1, 1, 1))
self.pool1 = nn.MaxPool3d(kernel_size=(1, 2, 2), stride=(1, 2, 2))
self.conv2 = nn.Conv3d(64, 128, kernel_size=(3, 3, 3), padding=(1, 1, 1))
self.pool2 = nn.MaxPool3d(kernel_size=(2, 2, 2), stride=(2, 2, 2))

When I enter the color picture sequence can be normal stitching.
clip = np.array([resize(io.imread(frame), output_shape=(112, 200), preserve_range=True) for frame in clip])
clip = clip[:, :, 44:44+112, :]
But when I enter a grayscale image sequence£¬can cause
IndexError: too many indices for array
so I change it
clip = clip[:, :, 44:44+112]
so that can stitching.

Meanwhile I change network
self.conv1 = nn.Conv3d(1, 64, kernel_size=(3, 3, 3), padding=(1, 1, 1))
But still making mistakes
expected stride to be a single integer value or a list of 2 values to match the convolution dimensions, but got stride=[1, 1, 1]
Should I expand the channel and if so, how do I do it?


#2

Your last error message might be a misleading error due to a missing batch dimension in your input.
It has been fixed in master.
Could you unsqueeze at dim0 and try it again?


(linbeibei) #3

yes,l print input shape and find you’re right
unsqueeze can add dim.(1,…)
thanks


(linbeibei) #4

and l have a problem.
l want to build network with siamese and c3d.can you give me some advice about the loss for 2 outputs


#5

Here you can find an implementation of a Siemese-Network.
I’m not sure, what c3d means.


(linbeibei) #7

it’s conv3d.
the demo is conv2d.
I would like to know if the loss function can be used in the same way


#8

The model in the repo flattens the output and applies to criterion on it, so it should work if you do the same using Conv3d.