140 likes | 219 Vues
Ferienakademie 2013 – Kurs 5 Multi-Core = Multi-Performance. Sascha Roloff , Frank Hannig , Jürgen Teich Friedrich-Alexander- Universität Erlangen- Nürnberg Erlangen, 10. Juli 2013. Praktischer Teil. 1. Woche : Vornehmlich Vorträge 2. Woche : Programmieraufgabe Programmieraufgabe
E N D
Ferienakademie 2013 – Kurs 5Multi-Core = Multi-Performance SaschaRoloff, Frank Hannig, JürgenTeichFriedrich-Alexander-Universität Erlangen-Nürnberg Erlangen, 10. Juli 2013
PraktischerTeil • 1. Woche: VornehmlichVorträge • 2. Woche: Programmieraufgabe • Programmieraufgabe • Ziel: ImplementierungeinerKette von Bildverarbeitungsalgorithmenin derProgrammiersprache X10 • Bearbeitung in Teams • 2-3 Studenten pro Team • Jedes Team implementiert und testeteinenAlgorithmusseparat • Integration zueinerKette • Teams arbeitengemeinsam an der Integration derAlgorithmen • AbspracheüberAustauschderDatenstrukturen • TestendergesamtenAlgorithmenkette
Die Anwendung: Objekterkennung • TypischesAnwendungsszenarioausderRobotik • RobotererkennteinObjekt und kannihmfolgen(object detection, object tracking) Fehl-Erkennungen ErkanntesObjektimSuchbild ObjektimReferenzbild Merkmale
Die Algorithmen • Harris Corner Detection • ErkennungderEckeneinesBildes • VerwendungalsMerkmale (Features) fürnachfolgendeAlgorithmen • SIFT Feature Description • SIFT – Scale-Invariant Feature Transform • Umwandlungder Harris Corner Features in SIFT Features • SIFT Feature Matching • Vergleichder SIFT Features des Suchbildesmit den SIFT Features des Referenzbildes und Finden des passendstenKandidaten Harris Corner Detection SIFTFeature Description SIFT Feature Matching Camera Image Object Location Object Recognition Algorithm
Die Programmiersprache: X10 • NeuartigeparalleleProgrammiersprache von IBM • Syntax: Mischungaus Java und Scala • BietetSprachkonstruktefürParallelität • Thread-level Parallelität (gemeinsamerSpeicher) • Verteilung von Daten (verteilterSpeicher) • Synchronisation, Atomarität public class Test{ public static def main(args:Array[String](1)) { finish for(p inPlace.places()) async at (p) { Console.OUT.println(„Hello, World from “+here.id); } } }
Implementierung und Integration • ImplementierungderAlgorithmen in X10 • Erstsequentiell, dann parallel (wenngenugZeitvorhanden) • KopplungderAlgorithmenübereine X10 Task (Aktor) Bibliothek SIFTFeature Description in X10 Harris Corner Detection in X10 SIFTFeature Matching in X10 Camera Image Harris Corner Features SIFT Features Object Position actor2 actor1 actor3 channel channel func2 func1 func3 activities
Die Plattform • TestenderAlgorithmenkette auf einerSimulationsplattform SIFT Detection Harris Corner Camera Images SIFT Matching
Vorbereitungenfür die Implementierung • Laptop mitinstalliertem Linux • KeinevirtuelleMaschine • Linux-spezifischeFunktionenfür Simulation benötigt • TestenderProgrammiersprache X10 auf eigenem Laptop • Download von der X10 Webseite (x10-lang.org) • Version 2.3.1 • Eclipse-basierteEntwicklungsumgebung X10DT (x86, x86_64) • Vorkompilierter Compiler (x86, x86_64)
Harris Corner … sobelX calculate autocorrelation matrix get max response thresholding response Harris Corner SIFT Features Image Source sink src sobelY Create corresponding activities for execution on the allocated resources (= claim(actorHarris Corner)) Edges may have FIFO semantic. Pointers can be exchanged instead of concrete data.
Harris Corner sobelX calculate autocorrelation matrix get max response thresholding response sink src sobelY Eigenvaluesof M: 1.) 2.) 3.)
SIFT Feature Descriptor img … keypoints keypoints Harris Corner SIFT features image source calc orientation(s) per keypoint (additional orientations = additional keypoints) based on 36 bin histogram sobelX calc descriptor per keypoint relative to its orientation calc angles and magnitudes of pixels around each keypoint sink src sobelY img
SIFT Feature Descriptor keypoints sobelX calc angles and magnitudes of the gradients of pixels around each keypoint calc orientation(s) per keypoint (additional orientations = additional keypoints) calc descriptor per keypoint relative to its orientation sink src sobelY img Histogram with 36 bins (1 bin represents 10 degrees) build upon angles and magnitudes of pixel gradients in region around the keypoint (e.g. 16x16) Result: maximal orientation; but possibly also further peak orientations new keypoints Angle and magnitudes of pixel orientations (=gradients) can be obtained based on Sobel X/Y (which form x and y of the gradient) descriptor of keypointrelative to its orientation based upon orientations of pixels in 16x16 regions around keypoint collected in 4x4 histograms with 8 bins (128 dimensions)
SIFT Feature Matching … … Feature matching SIFT descriptors Harris Corner SIFT features find nearest neighbor feature in model (represented as kdTree for fast search) for each SIFT descriptor register matches (not on the feature vector but on the coordinates); e.g., using RANSAC SIFT descriptors filter matches; only accept good (close) matches src sink model