Hi Matt,
If you have a list of tag URIs you might simply issue multiple DELETE requests to those tags. This will work although will create many requests. If these tags belong to different images there's not much else you can do.
Although if they do belong to the same image you could fetch a resource, remove tags of interest and the PUT the resource back effectively replacing it with your version. Which will remove all the tags deleted in your version. The only issue here might be in concurrent editing, if somebody else made changes to the document then your PUT will overwrite those.
It is easy to remove things using simply etree API, basically you can fetch a resource with
result = session.fetchxml(uri + "?view=deep")
and then remove nodes form interest and later PUT the xml back. There's not exact reason to parse the document and get BQ objects out as you do in: images = factory.from_etree(result). Although if you need it for some reason you can simply remove a tag from the list of tags in that resource (.tags). Most important is not to forget the do a PUT at the end in order to replace the document.
The POST operation is defined as a merge/update and PUT and a replace.
-d