The channel dimension of CNN can be any size. All of the popular models such as Resnet, VGG have 3 channel of input because all of them get  RGB images as a input.
You can build a new model which handle a input that has 16 or 48 channels. There is a very sample model as follow for example.
class SampleModel(nn.Module):
    def __init__(self, num_channel_in=16*3, class_num=None):
        super(SampleModel, self).__init__()
        self.c1 = nn.Conv2d(num_channel_in, 128, kerrnel_size=3, stride=1, padding=1)
        self.c2 = nn.Conv2d(128, 256, kerrnel_size=3, stride=1, padding=1)
        self.c3 = nn.conv2d(256, 512, kernel_size=3, stride=1, padding=1)
        self.gap = nn.AdaptiveAvgPool2d((1, 1))
        self.linear = torch.nn.Linear(512, class_num)

    def forward(self, x):
        x = self.c1(x)
        x = self.c2(x)
        x = self.c3(x)
        x = self.gap(x)
        x = torch.flatten(x, 1)
        x = self.linear(x)
        return x

You can not use standart Imagefolder dataset format. You can write new dataset class and fuse your images in getitem function.