1. A method for generating a three-dimensional (3D) model of an object, comprising: capturing a plurality of images of the object from a plurality of viewpoints, the images comprising a plurality of color images; generating a 3D model of the object from the images, the 3D model comprising a plurality of planar patches; for each patch of the planar patches: mapping a plurality of image regions of the plurality of images to the patch, each image region comprising at least one color vector; and computing, for each patch, at least one minimal color vector among the color vectors of the image regions mapped to the patch; generating a diffuse component of a bidirectional reflectance distribution function (BRDF) for each patch of planar patches of the 3D model in accordance with the at least one minimal color vector computed for each patch; outputting the 3D model with the BRDF for each patch, the BRDF further comprising a specular component separate from the diffuse component; rendering one or more diffuse views of the object; computing a plurality of features based on the one or more diffuse views of the object; and assigning a classification to the object in accordance with the plurality of features, the classification comprising one of: a defective classification and a clean classification, wherein the assigning the classification to the object in accordance with the plurality of features is performed by a convolutional neural network, and wherein the convolutional neural network is trained by: receiving a plurality of training 3D models of objects and corresponding training classifications; rendering a plurality of views of the 3D models with controlled lighting to generate training data; computing a plurality of feature vectors from the views by the convolutional neural network; computing parameters of the convolutional neural network; computing a training error metric between the training classifications of the training 3D models with outputs of the convolutional neural network configured based on the parameters; computing a validation error metric in accordance with a plurality of validation 3D models separate from the training 3D models; in response to determining that the training error metric and the validation error metric fail to satisfy a threshold, rendering additional views of the 3D models with different controlled lighting to generate additional training data; in response to determining that the training error metric and the validation error metric satisfy the threshold, configuring the neural network in accordance with the parameters; receiving a plurality of test 3D models of objects with unknown classifications; rendering a plurality of views of the test 3D models with controlled lighting to generate testing data; and classifying the test 3D models using the rendered views of the test 3D models and the configured convolutional neural network.