How do we adjust a model to fit our own dataset?
Is this really suitable?


Well, it works.  At least, in some situations.  And in machine learning, there's a sense in which that is the bottom line: is it useful?  And yes, this approach does appear to be useful, in at least some situations.

Beyond that, I'm not sure what you mean by "suitable".


  What if the custom dataset had a lot more images than the original or is detecting completely different classes?


Sure.  There will cases where fine-tuning probably isn't what I'd recommend you try first.  Look at it this way.  Fine-tuning is one thing you can try.  It's not a silver bullet.  It may work well in some situations.  No one is claiming it will work well in all situations.  There are plenty of situations where it might work poorly.

Fine-tuning is probably most useful if your training set is small (or, at least, not very large), and if there is a pre-trained network that solves a task that is somehow similar to the task you're trying to solve.  The classes don't have to be identical -- for instance, if you are solving some kind of object detection task, but your classes aren't identical to ImageNet, then starting with a pre-trained network that was trained on ImageNet can still be useful, as the image features learned for ImageNet are likely to be useful for other object detection tasks as well -- but the task probably needs to be somehow similar.

If your training set is very large, then fine-tuning might not be the best answer.  You might do better to train a network from scratch, yourself.



Finally: Machine learning is ultimately a pragmatic field.  Don't try to look for the one right answer that works in all situations, and don't expect there to be some theory that can predict what the most effective approach to your problem will be.  Instead, understand that it's a bit of an art; trial and error is often needed; and the ultimate metric is whether it works well enough for the particular problem you are facing right now.