Does convolution kernel need to be designed in CNN (Convolutional Neural Networks)?
The actual kernel values are learned during the learning process, that's why you only need to set the number of kernels and their size.
What might be confusing is  that the learned kernel values actually mimic things like Gabor and edge detection filters. These are generic to many computer vision applications, but instead of being engineered manually, they are learned from a big classification dataset (like ImageNet).
Also the kernel values are part of a feature hierarchy that can be used directly as features for a variety of computer vision problems. In that terms they are also generic.
I am new to Convolutional Neural Networks. I am reading some tutorial and testing some sample codes using Keras. To add a convolution layer, basically I just need to specify the number of kernels and the size of the kernel. 
My question is what each kernel looks like? Are they generic to all computer vision applications?