Upvote:1
Since Rome to Amsterdam is a "domestic" flight within Schengen, yes, you will need a visa to transit.
Upvote:2
As @jpatokal wrote, you will need a regular type C Schengen visa and not an “airport transit visa”. In practice, it does not make much of a difference though as the form to apply and the costs are the same. Just check “transit/transito” instead of “airport transit/transito aeroportuale”.
It might be a bit confusing since you don't intend to leave the airport but the reason for all this is that the flight from Rome to Amsterdam is a flight between two Schengen countries so it will depart from another part of the airport than flights to non-Schengen destinations. There is no passport check on arrival in Amsterdam for this flight, so no way to ensure you don't stay in the Netherlands instead of taking your flight to Canada.
The Canadian residency permit could exempt you from the airport transit visa requirement if you would only have one layover in the Schengen area but it does not exempt you from the need to get a visa in this case. See Do I need a visa to transit (or layover) in the Schengen area? for a full explanation of the rules.