Crack identification through computer vision: from non-learning-based to learning-based methodologies, and from patch-level to pixel-level detections