  Matching sonar images with high accuracy has been a problem for a long time,
as sonar images are inherently hard to model due to reflections, noise and
viewpoint dependence. Autonomous Underwater Vehicles require good sonar image
matching capabilities for tasks such as tracking, simultaneous localization and
mapping (SLAM) and some cases of object detection/recognition. We propose the
use of Convolutional Neural Networks (CNN) to learn a matching function that
can be trained from labeled sonar data, after pre-processing to generate
matching and non-matching pairs. In a dataset of 39K training pairs, we obtain
0.91 Area under the ROC Curve (AUC) for a CNN that outputs a binary
classification matching decision, and 0.89 AUC for another CNN that outputs a
matching score. In comparison, classical keypoint matching methods like SIFT,
SURF, ORB and AKAZE obtain AUC 0.61 to 0.68. Alternative learning methods
obtain similar results, with a Random Forest Classifier obtaining AUC 0.79, and
a Support Vector Machine resulting in AUC 0.66.
