Looking for Fastest 2D Convolution in Python on a CPU
To provide a more quantitative approach, I have made a jupyter notebook (which can be seen as a web page here. 

The results can be summarized in the following plot:


In practice, I have found that numpy was always faster by a significant amount. However, it seems new alternatives are emerging and I have to include (not exhaustive): architecture specific optimizations (IPP), simplified graphs in deep-learning algorithms (such as pyTorch), and so on. Comments welcome!