'Convert labels according to crop box'

def _update_labels(self, label, crop_box, height, width):

    xmin = (float(crop_box[0]) / width)
    ymin = (float(crop_box[1]) / height)
    w = (float(crop_box[2]) / width)
    h = (float(crop_box[3]) / height)
    out = label.copy()
    out[:, (1, 3)] -= xmin
    out[:, (2, 4)] -= ymin
    out[:, (1, 3)] /= w
    out[:, (2, 4)] /= h
    out[:, 1:5] = np.maximum(0, out[:, 1:5])
    out[:, 1:5] = np.minimum(1, out[:, 1:5])
    coverage = (((self._calculate_areas(out[:, 1:]) * w) * h) / self._calculate_areas(label[:, 1:]))
    valid = np.logical_and((out[:, 3] > out[:, 1]), (out[:, 4] > out[:, 2]))
    valid = np.logical_and(valid, (coverage > self.min_eject_coverage))
    valid = np.where(valid)[0]
    if (valid.size < 1):
        return None
    out = out[valid, :]
    return out
