In the training set annotations file (training.csv), it seems that the x1,y1, x2, y2 columns specify the upleft point and the downright point of the location of a fish in an image.

But in the 215th row of training.csv, I saw x1= 259, y1=620, x2=432,y2= 621, so the width of fish is just one pixel if use y2 minus y1. I visualize the rectangle on the image and found it was not true. This phenomenon is not unique to the 215th row.

I think if figured it out. If the fish is not horizontal or vertical the (x1,y1) and (x2,y2) defines the up-left and downright points of a rectangle that just covers the fish. Otherwise it is not the case.

If you refer to the Problem Description page, Annotations section, the points are described. They do not represent bounding box locations, but rather endpoints of a line that spans from the head to the tail of the fish.

EDIT: The points are not guaranteed to represent head first / tail second, but the majority of them are represented in that manner.