'Matrix' object has no attribute 'z' in world_to_camera_view
Seems like you are passing a vertex though you named it coord.

verts = current_obj.data.vertices
coords_2d = [world_to_camera_view(scene, cam, verts[index].co) for index in face.vertices ]


face.vertices does not contain a collection of mesh vertices, but a list of vertex indices. You need to retrieve the actual vertex and use its coordinate (v.co).