Hi - I’m doing the same right now.
Here’s my understanding:

The 1x1 conv is just that, a 1x1 conv.
The “Image Pooling” is the Global Average Pooling.
the dilations do not result in different dimensions but you need to have different padding for  each.

Let me go into a little more detail for the padding issue.  For a normal NxN-Conv (dilation rate=1) choosing a padding of (N-1)//2 will give you the same size output as input. Now consider the a 3x3 Conv with dilation rate=2.  Draw a little picture and you can convince yourself that the field of view is the same as the field of view for a 5x5 Conv and therefore, the padding required to have the same size output as input is not (3-1)//2=1, as with the rate=1 case, but rather (5-1)//2=2
It turns out that the generalized formula for “same” padding for atrous convs is
effective_kernel_size=kernel_size+((kernel_size-1)*(rate-1))
padding=int((effective_kernel_size-1)//2)

Which for kernel_size=3, rate=2 simplifies to (3+2*1-1)/2=(5-1)/2=2 as before.