Primer vistazo al computer vision | 4Sessions Feb17
-
Upload
techdencias -
Category
Technology
-
view
327 -
download
3
Transcript of Primer vistazo al computer vision | 4Sessions Feb17
Agenda
Computer Vision
Las diferentes aproximaciones
Benchmarking de API’s en la nube
OpenCV
Consumir clasificador
Detectar vs Identificar
Crear un clasificador
2 cámaras de foto biológicas
Captura de foto cada 200ms
En 3 años un niño ha visto cientos
de millones de “fotografías”
var visionClient = new VisionServiceClient("CLAVE_EXTRAIDA_DEL _PORTAL_DE_MCS");
using (Stream imageFileStream = File.OpenRead("C:\\CODE\\ComputerVisionSamples\\ComputerVision.Wpf\\Images\\catkeyboard.png"))
{var features = new VisualFeature[] { VisualFeature.Adult,VisualFeature.Categories,VisualFeature.Color,VisualFeature.Description,VisualFeature.Faces,VisualFeature.ImageType,VisualFeature.Tags };var result = await visionClient.AnalyzeImageAsync(imageFileStream, features);
}
public static GoogleCredential CreateCredentials(string path){
GoogleCredential credential;using (var stream = new FileStream(path, FileMode.Open,
FileAccess.Read)){
var c = GoogleCredential.FromStream(stream);credential = c.CreateScoped(VisionService.Scope.CloudPlatform);
}
return credential;}
public static VisionService CreateService(string applicationName,IConfigurableHttpClientInitializer credentials)
{var service = new VisionService(new BaseClientService.Initializer(){
ApplicationName = applicationName,HttpClientInitializer = credentials
});
return service;}
public static IList<AnnotateImageResponse> DetectLabels(VisionService vision, string imagePath)
{// Convert image to Base64 encoded for JSON ASCII text based request byte[] imageArray = System.IO.File.ReadAllBytes(imagePath);string imageContent = Convert.ToBase64String(imageArray);// Post label detection request to the Vision APIvar responses = vision.Images.Annotate(
new BatchAnnotateImagesRequest(){
Requests = new[] {new AnnotateImageRequest() {
Features = new [] {new Feature() {Type = "LABEL_DETECTION"},new Feature() {Type = "TEXT_DETECTION"},new Feature() {Type = "FACE_DETECTION"},new Feature() {Type = "LANDMARK_DETECTION"},new Feature() {Type = "LOGO_DETECTION"},new Feature() {Type = "SAFE_SEARCH_DETECTION"},new Feature() {Type = "IMAGE_PROPERTIES"}
},Image = new Image() { Content = imageContent }
}}}).Execute();
return responses.Responses;}
var credentails = CreateCredentials("c:\\archivos\\credenciales.json");var service = CreateService("TEST", credentails);var result = DetectLabels(service, "C:\\archivos\\playoffs2016.jpg");
long detectionTime;Mat image = new Mat("C:\\archivos\\playoffs2016.jpg", LoadImageType.Color); List<System.Drawing.Rectangle> faces = new List<System.Drawing.Rectangle>();using (CascadeClassifier cascadeCla =
new CascadeClassifier("Classifiers\\haarcascade_frontalface_default.xml")){
Rectangle[] faces = cascadeCla.DetectMultiScale(image,1.1,8);
}
long detectionTime;Mat image = new Mat("C:\\archivos\\playoffs2016.jpg", LoadImageType.Color); List<System.Drawing.Rectangle> faces = new List<System.Drawing.Rectangle>();using (CascadeClassifier cascadeCla =
new CascadeClassifier("Classifiers\\haarcascade_frontalface_default.xml")){
Rectangle[] faces = cascadeCla.DetectMultiScale(image,1.1,8);
}
Image<Gray, Byte>[] trainingImages = new Image<Gray, Byte>[5];trainingImages[0] = new Image<Gray, byte>("C:\\Images\\alex.png");trainingImages[1] = new Image<Gray, byte>("C:\\Images\\arturo.png");trainingImages[2] = new Image<Gray, byte>("C:\\Images\\lauree.png");trainingImages[3] = new Image<Gray, byte>("C:\\Images\\javier.png");trainingImages[4] = new Image<Gray, byte>("C:\\maria.png");
Image<Gray, Byte>[] trainingImages = new Image<Gray, Byte>[5];trainingImages[0] = new Image<Gray, byte>("C:\\Images\\alex.png");trainingImages[1] = new Image<Gray, byte>("C:\\Images\\arturo.png");trainingImages[2] = new Image<Gray, byte>("C:\\Images\\lauree.png");trainingImages[3] = new Image<Gray, byte>("C:\\Images\\javier.png");trainingImages[4] = new Image<Gray, byte>("C:\\maria.png");
int[] labels = new int[] { 1, 2, 3, 4, 5 };
Image<Gray, Byte>[] trainingImages = new Image<Gray, Byte>[5];trainingImages[0] = new Image<Gray, byte>("C:\\Images\\alex.png");trainingImages[1] = new Image<Gray, byte>("C:\\Images\\arturo.png");trainingImages[2] = new Image<Gray, byte>("C:\\Images\\lauree.png");trainingImages[3] = new Image<Gray, byte>("C:\\Images\\javier.png");trainingImages[4] = new Image<Gray, byte>("C:\\maria.png");
int[] labels = new int[] { 1, 2, 3, 4, 5 };
var recognizer = new LBPHFaceRecognizer(1, 8, 8, 8, 100);recognizer.Train(trainingImages, labels);
Image<Gray, Byte>[] trainingImages = new Image<Gray, Byte>[5];trainingImages[0] = new Image<Gray, byte>("C:\\Images\\alex.png");trainingImages[1] = new Image<Gray, byte>("C:\\Images\\arturo.png");trainingImages[2] = new Image<Gray, byte>("C:\\Images\\lauree.png");trainingImages[3] = new Image<Gray, byte>("C:\\Images\\javier.png");trainingImages[4] = new Image<Gray, byte>("C:\\maria.png");
int[] labels = new int[] { 1, 2, 3, 4, 5 };
var recognizer = new LBPHFaceRecognizer(1, 8, 8, 8, 100);recognizer.Train(trainingImages, labels);
Image<Gray, Byte> testImage = new Image<Gray, Byte>("C:\\Images\\test.png");
Image<Gray, Byte>[] trainingImages = new Image<Gray, Byte>[5];trainingImages[0] = new Image<Gray, byte>("C:\\Images\\alex.png");trainingImages[1] = new Image<Gray, byte>("C:\\Images\\arturo.png");trainingImages[2] = new Image<Gray, byte>("C:\\Images\\lauree.png");trainingImages[3] = new Image<Gray, byte>("C:\\Images\\javier.png");trainingImages[4] = new Image<Gray, byte>("C:\\maria.png");
int[] labels = new int[] { 1, 2, 3, 4, 5 };
var recognizer = new LBPHFaceRecognizer(1, 8, 8, 8, 100);recognizer.Train(trainingImages, labels);
Image<Gray, Byte> testImage = new Image<Gray, Byte>("C:\\Images\\test.png");
var label = recognizer.Predict(testImage);
Image<Gray, Byte>[] trainingImages = new Image<Gray, Byte>[5];trainingImages[0] = new Image<Gray, byte>("C:\\Images\\alex.png");trainingImages[1] = new Image<Gray, byte>("C:\\Images\\arturo.png");trainingImages[2] = new Image<Gray, byte>("C:\\Images\\lauree.png");trainingImages[3] = new Image<Gray, byte>("C:\\Images\\javier.png");trainingImages[4] = new Image<Gray, byte>("C:\\maria.png");
int[] labels = new int[] { 1, 2, 3, 4, 5 };
var recognizer = new LBPHFaceRecognizer(1, 8, 8, 8, 100);recognizer.Train(trainingImages, labels);
Image<Gray, Byte> testImage = new Image<Gray, Byte>("C:\\Images\\test.png");
var label = recognizer.Predict(testImage);
pos/pos-532.pgm 1 0 0 100 40
pos/pos-166.pgm 1 0 0 100 40
pos/pos-76.pgm 1 0 0 100 40
pos/pos-193.pgm 1 0 0 100 40
pos/pos-0.pgm 1 0 0 100 40
pos/pos-84.pgm 1 0 0 100 40
pos/pos-333.pgm 1 0 0 100 40
pos/pos-15.pgm 1 0 0 100 40
pos/pos-371.pgm 1 0 0 100 40
pos/pos-44.pgm 1 0 0 100 40
pos/pos-172.pgm 1 0 0 100 40
…
cars.info
neg/neg-225.pgm
neg/neg-310.pgm
neg/neg-24.pgm
neg/neg-119.pgm
neg/neg-198.pgm
neg/neg-155.pgm
neg/neg-31.pgm
neg/neg-441.pgm
neg/neg-56.pgm
neg/neg-455.pgm
neg/neg-144.pgm
…
neg.info
cd C:\opencv\build\x86\vc11\bin
opencv_createsamples -info cars.info -num 550 -w 48 -h 24 -vec cars.vec
c:\opencv\build\x64\vc12\bin>opencv_traincascade.exe -data data -vec cars.vec
-bg neg.info -numPos 500 -numNeg 500 -numStages 10 -w 48 -h 24 -featureType LBP
c:\opencv\build\x64\vc12\bin>opencv_traincascade.exe -data data -vec cars.vec
-bg neg.info -numPos 500 -numNeg 500 -numStages 10 -w 48 -h 24 -featureType LBP
http://www.freepik.com/free-vector/abstract-blue-background-with-
triangles_710166.htm#term=glacial&page=1&position=0
http://www.freepik.com/free-vector/computers-and-school-
elements_719102.htm#term=learning&page=1&position=37
http://www.freepik.com/free-vector/colorful-brain-
icons_764996.htm#term=brain&page=1&position=1
http://www.freepik.com/free-vector/five-senses-
icons_837465.htm#term=senses&page=1&position=0
http://www.freepik.com/free-vector/analog-camera-
icon_791929.htm#term=camera&page=1&position=1
http://www.freepik.com/free-vector/photos-and-
cameras_804428.htm#term=picture&page=1&position=0
http://www.freepik.com/free-vector/magnifying-glass-data-
analysis_761448.htm#term=information&page=1&position=4
http://www.freepik.com/free-vector/educational-future-
concept_776917.htm#term=future&page=1&position=3
http://www.freepik.com/free-vector/global-education-
background_780891.htm#term=logic&page=1&position=0