the counters are from the perspective of the local device.
ifInOctets is data arriving inbound on the local device.
ifOutOctets is data outbound from the local device.
There is often confusion like this around direction relating to virtual interfaces. The way I remember it is to just think of the virtual interface as a physical interface and apply the same rules.