Praktikum bei Mars Digital Technologies. Wie wir Deep Learning bei M & M angewendet haben



Hallo allerseits!

Jährlich besuchen rund 200 Studenten und Absolventen Mars in Russland als Auszubildende oder Teilnehmer am Leadership-Programm. Dmitry Korzhimanov absolvierte in diesem Sommer ein Praktikum beim Mars IT Hub. In unserem Blog spricht Dmitry über ein Projekt, an dem er während eines Praktikums gearbeitet hat.


Eine Vielzahl von Unternehmen bietet ab dem dritten Studienjahr Praktika für Studierende an. Also machte ich mich, wie viele meiner Klassenkameraden ab dem dritten Schuljahr, auf die Suche nach einem Praktikum für den Sommer. An der Moskauer Staatsuniversität bevorzugen Studenten IT und Bankwesen, was angesichts der zahlreichen mathematischen Probleme nicht verwunderlich ist. Ich habe über Praktika in verschiedenen Unternehmen nachgedacht und mich für Mars entschieden, da ich an der Möglichkeit interessiert war, in IT-Projekten in der realen Produktion zu arbeiten. Darüber hinaus ist Mars ein internationales Unternehmen, was bedeutet, dass die Arbeit in einem Team aus der ganzen Welt vorangebracht wurde.

Nach dem Bestehen von technischen und mündlichen Tests sowie einem Interview mit einem zukünftigen Mentor wurde mir ein Angebot zugesandt, und ich wurde, siehe da, ein Praktikant des Next Generation Technologies-Teams. Diese Abteilung besteht aus 5 Mitarbeitern aus der ganzen Welt und befasst sich hauptsächlich mit der Einführung von Technologien für maschinelles Lernen in verschiedenen Produktions- und Verkaufszyklen des Unternehmens.

Ehrlich gesagt, ich beherrsche keine Algorithmen des maschinellen Lernens und zum Zeitpunkt des Praktikums hatte ich kein vollständiges Verständnis dafür, was ich tun und wie ich Projekte umsetzen würde. Ja, ich hatte einen guten mathematischen Hintergrund und wusste sogar, was Random Forest war, aber hier endete mein Wissen. Unter anderem gibt es auf dem Mars eine Vielzahl von Aufgaben im Zusammenhang mit der Bildverarbeitung, die unser Team erfolgreich löst. Es stellte sich heraus, dass ich in den ersten zwei Wochen des Praktikums herausgefunden habe, wie neuronale Netze funktionieren, was OpenCV ist, welche Metriken existieren, wie man mit PyTorch und TensorFlow arbeitet und vieles mehr. Am Ende jedes Tages brodelte mein Kopf, weil die Informationen in großen Mengen aufgenommen werden mussten und die Ideen einiger Algorithmen nicht trivial waren. Glücklicherweise gibt es im Moment eine Menge wirklich nützlicher Ressourcen wie Neurohive, Medium und das gleiche Habr (Ich bedanke mich bei allen, die hier Artikel zum Thema maschinelles Lernen schreiben, ohne Sie wäre das Eintauchen in das Thema eine viel schwierigere Aufgabe). Dank dieser Ressourcen können Sie ein bestimmtes Thema mit relativ hoher Geschwindigkeit studieren. Coursera, zu dem ich noch Vorträge schaue, bleibt nicht außen vor.

Nachdem ich einige grundlegende Grundlagen des tiefen Lernens kennengelernt und ein wenig gemeistert hatte, wurde mir angeboten, an dem Projekt teilzunehmen. Wir mussten ein Programm implementieren, das Objekte in einem Foto misst. Natürlich stellt sich die Frage: Warum wird dies von der Firma FMCG benötigt? Die Antwort ist jedoch ganz einfach: Statistiken über die Größe der Rohstoffe und Produkte in der Fabrik zu führen. Zum Beispiel produziert Mars M & M's, und ich denke, viele haben M & M's mit Erdnüssen probiert. Damit aber jedes Bonbon nicht zu groß und nicht zu klein ist, sollten Erdnüsse auch eine bestimmte Größe haben.

Wie Sie wissen, gibt es auf der Welt kein Ideal und die Parteien kommen in einer völlig anderen Qualität in die Fabrik. Daher muss eine spezielle Person manuell (!) Eine Auswahl aus einer Charge von Nüssen treffen und Statistiken darüber erstellen. Irgendwann stellte das Unternehmen natürlich fest, dass der Prozess ziemlich ineffizient war und es wäre schön, ihn zu automatisieren. Die Aufgabe ist in der Tat recht einfach und alles, was erforderlich ist, ist, dem Modell beizubringen, Nüsse oder andere Objekte zu finden, beispielsweise auf einem A4-Blatt, und auch einen Orientierungspunkt bekannter Größe, auf dem die Pixel in reale Einheiten umgewandelt werden. Es klingt ziemlich trivial, aber in der Tat treten normalerweise Schwierigkeiten auf. Ich wurde angewiesen, mich mit der Umsetzung des Teils zu befassen, der sich auf die Erkennung dieses Meilensteins und die Übersetzung von Pixeln in Millimeter bezieht.

Große Unternehmen legen großen Wert auf die Wahrung ihrer Corporate Identity, die in meinem Projekt eine Rolle gespielt hat. Als Referenzpunkt oder Referenzpunkt, der in Fabriken auf der ganzen Welt auf Papier gedruckt wird, wurde ein Kreis mit dem für das Unternehmen charakteristischen Buchstaben „M“ ausgewählt.

Um mein Problem zu lösen, suchte ich sofort nach guten Beispielen für die Implementierung von neuronalen Faltungsnetzen, mit denen sich Objekte auf dem Foto schnell und eindeutig finden lassen. Nach Prüfung der verschiedenen Optionen habe ich eine der Faster R-CNN-Implementierungen ausgewählt und deren Funktionen und Architektur untersucht. Der nächste Schritt war das Trainieren des Modells, für das ungefähr hundert Fotografien mit einer zufälligen Position eines Referenzpunkts und dementsprechend einem Quadrat, das es beschreibt, erzeugt wurden. Zu diesem Zeitpunkt hat mir das reportlab-Paket sehr geholfen. Hierbei handelt es sich um eine Reihe von Tools, die speziell zum Generieren von Dokumenten mit einer benutzerdefinierten Anordnung von Objekten darauf entwickelt wurden.

Für die Erweiterung wurde das Albumentations- Paket ausgewählt, dessen Fähigkeiten sehr beeindruckend sind. Auf Github können Sie mehr darüber lesen, einschließlich eines Vergleichs mit alternativen Bibliotheken. Ich habe versucht, die Transformationen so vielfältig wie möglich zu gestalten, damit keine sogenannten „Black Boxes“ mehr übrig sind. Drehen, Zoomen, Kontrast ändern, Rauschen und andere Standardtechniken hinzufügen. Leider gab es ein Problem mit dem Drehwerkzeug, das für mich notwendig war, da niemand die korrekte Ausrichtung des Buchstabens M auf dem Foto garantierte und das Modell in der Lage sein sollte, verschiedene Optionen für seine Position zu erkennen.

Egal, wie ich versuche, den Fehler zu finden, die Funktion aus dem Paket albumentations führte hartnäckig weiterhin falsche Konvertierungen der Begrenzungsrahmen durch und versetzte sie in den falschen Schlüssel. Aus diesem Grund habe ich mich für das klassische Imgaug- Paket entschieden, mit dem ich keine Probleme hatte.

Nachdem ich das Netzwerk in mehreren Epochen geschult hatte, interessierte ich mich dafür, welches Ergebnis das Modell an realen Beispielen hervorbringen wird. Nachdem ich ein Blatt Papier mit einem Bezugspunkt gedruckt und einige Fotos gemacht hatte, begann ich, das neuronale Netzwerk zu testen. Und ja, sie hat wirklich gelernt, zu finden, was sie brauchte, aber sie hat es alles andere als perfekt gemacht. Die Grenzen, die das Netzwerk zeigte, waren zu ungenau für eine qualitativ hochwertige Messung von Objekten, und hier begann der ziemlich unangenehme Prozess der Anpassung von Parametern auf der Suche nach der idealen Konfiguration. Ich habe den Trainingsschritt geändert, versucht, die Netzwerkarchitektur zu ändern, ihn zu beenden und die Erweiterungseinstellungen zu ändern, aber die durchschnittliche IoU ist nicht über 0,85 gestiegen.

Das Ergebnis des Faster R-CNN



Ach, meine Unerfahrenheit hat mir einen Streich gespielt. Nachdem ich mich nicht mit der Suche nach einfacheren Werkzeugen beschäftigt hatte, war ich zu sehr an Experimenten mit dem neuronalen Netz interessiert, aber egal wie ich es versuchte, es ergab kein akzeptables Ergebnis. Dabei stellte sich heraus, dass in der Produktion einfach keine Farbdrucker zum Einsatz kamen und alle meine Bemühungen umsonst zu sein schienen. Aber dann sagte mir mein Kollege, dass Sie den üblichen schwarzen Kreis und die Hough-Transformation aus dem OpenCV-Paket verwenden können, um ihn zu erkennen. Ich könnte die gleiche einfache Lösung für die ursprüngliche Version verwenden, aber ich habe den klassischen Werkzeugen des Computer-Sehens nicht die gebührende Aufmerksamkeit geschenkt. Nachdem ich ein wenig mit den Parametern gespielt hatte, bekam ich endlich das, was ich wollte und das Problem war gelöst. Der nächste Schritt besteht darin, eine API mithilfe des Flask-Pakets zu erstellen und das Programm auf dem Azure-Server freizugeben. Dies ist jedoch eine völlig andere Geschichte.

Endergebnis mit Hough-Transformation



Zusätzlich zu den Aufgaben des Computer-Sehens hat das Unternehmen Aufgaben aus anderen Bereichen des maschinellen Lernens zu bewältigen - von der Verarbeitung von Tweets zur Überwachung der Wahrnehmung eines bestimmten Produkts bis zur Entwicklung von Programmen, die Tierärzten helfen, Tiere effizienter zu behandeln. Was mich angenehm überrascht hat, ist der recherchierende Teil der Arbeit. Oft klingen die Aufgaben sehr einfach, aber es ist nicht bekannt, wie man eine qualitativ hochwertige Lösung findet. Dazu müssen Sie Artikel und aktuelle Methoden im Bereich Maschinelles Lernen studieren. Ich musste zum Beispiel die Bayes'schen Methoden des maschinellen Lernens verstehen, die zur Lösung medizinischer Probleme sehr beliebt sind. Dank dessen konnte ich medizinische Artikel studieren, die die Anwendung dieser Methoden beschreiben, und dem Team bei der Auswahl des richtigen Entwicklungsvektors helfen.

Im Moment beende ich mein Praktikum. Seit dem neuen Schuljahr bin ich im September auf Teilzeit umgestiegen, was kein Problem ist. Darüber hinaus hat das Unternehmen die Möglichkeit, von zu Hause aus zu arbeiten, und wie sich herausstellte, ist diese Praxis hier weit verbreitet. Jetzt schließt unser Team das Projekt ab, das ich in dem Artikel beschrieben habe, und wechselt zu einem neuen Projekt, das sich mit Computer Vision befasst. Es gibt wirklich viele Aufgaben, und sie sind alle völlig unterschiedlich, sodass Sie sich nicht langweilen.

Ein Praktikum bei Mars ist jetzt offen, Sie können mehr darüber erfahren und sich bei: site bewerben.

Source: https://habr.com/ru/post/de476266/


All Articles