「サイズを合わせなくても学習/推定が実行でき、かつ、それなりに良い学習ができる」という質問者様の感覚は正しいと思います。しかし、特に転移学習で精度を上げるには、指定サイズに前処理した方が良いでしょう。
PyTorchのResNetは以下のような層構成になっています。
Python
1ResNet(
2 (conv1): Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False)
3 (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
4 (relu): ReLU(inplace=True)
5 (maxpool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)
6中略
7 (avgpool): AdaptiveAvgPool2d(output_size=(1, 1))
8 (fc): Linear(in_features=512, out_features=1000, bias=True)
9)
最後の全結合層の手前にあるavgpoolが犯人?で、AdaptiveAvgPool2dが任意のサイズの画像をoutput_sizeにpoolingします。内部的には画像サイズとoutput_sizeとの関係でkernel_sizeを自動調整しています。これにより、任意のサイズの入力に対して動作ができます。
参考: Why AvgPool2d instead of AdaptiveAvgPool2d for ResNet?
PyTorch本家とは直接関係無い派生ソフトの質疑ですが、「なぜわざわざResNetのAdaptiveAvgPool2dを(自動サイズ調整の無い)AvgPool2dに入れ替えたのか?」「224×224の画像しか前提としていないからだ」といったやりとりがあります。
しかし、転移学習をする元となるpretrainedされた重みパラメータは、ImageNetをもとに224×224サイズに切り出した画像を学習してできたものです。よって、多少のサイズのズレは吸収されると思いますが、大きくズレてしまうと精度が悪くなると思われます。
参考: ImageNetの訓練時の前処理についてまとめた
ResNetほか代表的モデルの前処理方法を解説しています。単に224×224なら良いというわけではなく、元の前処理の方法をなるべく踏襲しましょう。
なおResNetの記載はデータ拡張を考慮したものですので、推論だけさせる場合はAlexNetの記載にある、「画像の短辺の長さが256になるように画像を再スケーリングし,得られた画像から中央の256×256のパッチを切り取る」で十分です。具体的な前処理コードは以下の記事が参考になります。
参考: Pytorch – 学習済みモデルで画像分類を行う方法