What is the difference between upsampling and bi-linear upsampling in a CNN?
In the context of image processing, upsampling is a technique for increasing the size of an image. 

For example, say you have an image with a height and width of $64$ pixels each (totaling $64 \times 64 = 4096$ pixels). You want to resize this image to a height and width of 256 pixels (totaling $256 \times 256 = 65536$ pixels). In the new, larger image you only know the value of $1$ out of every $16$ pixels. How are you going to calculate the values for the rest?



Well, the methods that do that for you are called upsampling techniques. The most common are:


Nearest-Neighbor: Copies the value from the nearest pixel.
Bilinear: Uses all nearby pixels to calculate the pixel's value, using linear interpolations.
Bicubic: Again uses all nearby pixels to calculate the pixel's values, through polynomial interpolations. Usually produces a smoother surface than the previous techniques, but its harder to compute.
Other more complex resampling algorithms, e.g. Lanczos.


An article explaining the differences among image resampling techniques can be found here.