1. Wprowadzenie
ML Kit to mobilny pakiet SDK, który udostępnia doświadczenie Google w dziedzinie systemów uczących się w aplikacjach na Androida i iOS w zaawansowanym i łatwym w obsłudze pakiecie. Niezależnie od tego, czy dopiero zaczynasz swoją przygodę z systemami uczącymi się, czy masz już doświadczenie w tej dziedzinie, możesz łatwo wdrożyć potrzebne funkcje za pomocą kilku linijek kodu. Nie musisz mieć szczegółowej wiedzy o sieciach neuronowych ani optymalizacji modeli, aby zacząć korzystać z tej funkcji.
Jeśli podczas wykonywania ćwiczeń z programowania napotkasz jakieś problemy (błędy w kodzie, błędy gramatyczne, niejasne sformułowania itp.), zgłoś je, klikając link Zgłoś błąd w lewym dolnym rogu ćwiczenia.
Jak to działa?
ML Kit ułatwia stosowanie technik ML w aplikacjach dzięki połączeniu technologii ML od Google, takich jak Mobile Vision i TensorFlow Lite, w jednym pakiecie SDK. Niezależnie od tego, czy potrzebujesz możliwości modeli na urządzeniu Mobile Vision w czasie rzeczywistym, czy elastyczności niestandardowych modeli TensorFlow Lite, ML Kit Ci pomoże.
W tym ćwiczeniu z programowania przeprowadzimy Cię przez proces tworzenia własnej aplikacji na Androida, która automatycznie wykrywa tekst i cechy twarzy na obrazie.
Co utworzysz
W tym ćwiczeniu z programowania utworzysz aplikację na Androida za pomocą ML Kit. Twoja aplikacja będzie:
|
Czego się nauczysz
- Jak używać pakietu ML Kit SDK, aby łatwo dodawać zaawansowane funkcje systemów uczących się, takie jak rozpoznawanie tekstu czy wykrywanie twarzy
Czego potrzebujesz
- najnowsza wersja Android Studio (3.0 lub nowsza);
- emulator Android Studio lub fizyczne urządzenie z Androidem,
- Przykładowy kod
- Podstawowa wiedza o programowaniu na Androida w Javie
- podstawowa znajomość modeli uczenia maszynowego,
Ten moduł dotyczy ML Kit. Nieistotne koncepcje i bloki kodu zostały zamaskowane. Można je po prostu skopiować i wkleić.
2. Konfiguracja
Pobieranie kodu
Kliknij poniższy link, aby pobrać cały kod tego ćwiczenia z programowania:
Rozpakuj pobrany plik ZIP. Spowoduje to rozpakowanie folderu głównego (mlkit-android-master
) ze wszystkimi potrzebnymi zasobami. W tym ćwiczeniu będziesz potrzebować tylko zasobów z podkatalogu vision
.
Podkatalog vision
w repozytorium mlkit-android-master
zawiera 2 katalogi:
- starter – kod startowy, na którym możesz budować w tym ćwiczeniu z programowania.
- final – gotowy kod gotowej przykładowej aplikacji.
3. Sprawdź zależności ML Kit
Sprawdzanie zależności ML Kit
Na końcu pliku build.gradle w katalogu app
projektu powinny już znajdować się te wiersze:
build.gradle
dependencies {
// Face features
implementation 'com.google.mlkit:face-detection:16.0.0'
// Text features
implementation 'com.google.android.gms:play-services-mlkit-text-recognition:16.0.0'
}
Oto konkretne zależności ML Kit, które są potrzebne do implementacji funkcji opisanych w tym ćwiczeniu z programowania.
4. Uruchamianie aplikacji startowej
Po zaimportowaniu projektu do Android Studio i sprawdzeniu zależności pakietu ML Kit możesz uruchomić aplikację po raz pierwszy. Uruchom emulator Android Studio i kliknij Uruchom ( ) na pasku narzędzi Android Studio.
Aplikacja powinna uruchomić się w emulatorze. W tym momencie powinien wyświetlić się podstawowy układ z menu, w którym możesz wybrać 1 z 3 obrazów. W następnej sekcji dodasz do swojej aplikacji funkcję rozpoznawania tekstu, aby rozpoznawać tekst na obrazach.
5. Dodawanie rozpoznawania tekstu na urządzeniu
W tym kroku dodamy do Twojej aplikacji funkcję rozpoznawania tekstu na obrazach.
Konfigurowanie i uruchamianie rozpoznawania tekstu na obrazie na urządzeniu
Dodaj do metody runTextRecognition
klasy MainActivity
te elementy:
MainActivity.java
private void runTextRecognition() {
InputImage image = InputImage.fromBitmap(mSelectedImage, 0);
TextRecognizer recognizer = TextRecognition.getClient();
mTextButton.setEnabled(false);
recognizer.process(image)
.addOnSuccessListener(
new OnSuccessListener<Text>() {
@Override
public void onSuccess(Text texts) {
mTextButton.setEnabled(true);
processTextRecognitionResult(texts);
}
})
.addOnFailureListener(
new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// Task failed with an exception
mTextButton.setEnabled(true);
e.printStackTrace();
}
});
}
Powyższy kod konfiguruje detektor rozpoznawania tekstu i wywołuje funkcję processTextRecognitionResult
z odpowiedzią.
Przetwarzanie odpowiedzi rozpoznawania tekstu
Dodaj ten kod do funkcji processTextRecognitionResult
w klasie MainActivity
, aby przeanalizować wyniki i wyświetlić je w aplikacji.
MainActivity.java
private void processTextRecognitionResult(Text texts) {
List<Text.TextBlock> blocks = texts.getTextBlocks();
if (blocks.size() == 0) {
showToast("No text found");
return;
}
mGraphicOverlay.clear();
for (int i = 0; i < blocks.size(); i++) {
List<Text.Line> lines = blocks.get(i).getLines();
for (int j = 0; j < lines.size(); j++) {
List<Text.Element> elements = lines.get(j).getElements();
for (int k = 0; k < elements.size(); k++) {
Graphic textGraphic = new TextGraphic(mGraphicOverlay, elements.get(k));
mGraphicOverlay.add(textGraphic);
}
}
}
}
Uruchamianie aplikacji w emulatorze
Teraz kliknij Uruchom ( ) na pasku narzędzi Android Studio. Po załadowaniu aplikacji sprawdź, czy w polu menu wybrana jest opcja Test Image 1(Text)
, a potem kliknij przycisk FIND TEXT
.
Aplikacja powinna teraz wyglądać tak, jak na ilustracji poniżej. Zobaczysz na niej wyniki rozpoznawania tekstu oraz ramki ograniczające nałożone na obraz.
Zdjęcie: Kai Schreiber / Wikimedia Commons / CC BY-SA 2.0
Gratulacje! Właśnie dodałeś/dodałaś do aplikacji rozpoznawanie tekstu na urządzeniu za pomocą ML Kit. Rozpoznawanie tekstu na urządzeniu jest przydatne w wielu przypadkach, ponieważ działa nawet wtedy, gdy aplikacja nie ma połączenia z internetem. Jest też wystarczająco szybkie, aby wykorzystywać je w przypadku obrazów statycznych i ramek wideo na żywo.
6. Dodaj wykrywanie konturu twarzy na urządzeniu
W tym kroku dodamy do Twojej aplikacji funkcję rozpoznawania kontur twarzy na zdjęciach.
Konfigurowanie i uruchamianie wykrywania konturów twarzy na zdjęciu na urządzeniu
Dodaj ten kod do metody runFaceContourDetection
klasy MainActivity
:
MainActivity.java
private void runFaceContourDetection() {
InputImage image = InputImage.fromBitmap(mSelectedImage, 0);
FaceDetectorOptions options =
new FaceDetectorOptions.Builder()
.setPerformanceMode(FaceDetectorOptions.PERFORMANCE_MODE_FAST)
.setContourMode(FaceDetectorOptions.CONTOUR_MODE_ALL)
.build();
mFaceButton.setEnabled(false);
FaceDetector detector = FaceDetection.getClient(options);
detector.process(image)
.addOnSuccessListener(
new OnSuccessListener<List<Face>>() {
@Override
public void onSuccess(List<Face> faces) {
mFaceButton.setEnabled(true);
processFaceContourDetectionResult(faces);
}
})
.addOnFailureListener(
new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// Task failed with an exception
mFaceButton.setEnabled(true);
e.printStackTrace();
}
});
}
Powyższy kod konfiguruje wykrywacz kontur twarzy i wywołuje funkcję processFaceContourDetectionResult
z odpowiedzią.
Przetwarzanie odpowiedzi na wykrywanie konturu twarzy
Dodaj ten kod do polecenia processFaceContourDetectionResult
w klasie MainActivity
, aby przeanalizować wyniki i wyświetlić je w aplikacji.
MainActivity.java
private void processFaceContourDetectionResult(List<Face> faces) {
// Task completed successfully
if (faces.size() == 0) {
showToast("No face found");
return;
}
mGraphicOverlay.clear();
for (int i = 0; i < faces.size(); ++i) {
Face face = faces.get(i);
FaceContourGraphic faceGraphic = new FaceContourGraphic(mGraphicOverlay);
mGraphicOverlay.add(faceGraphic);
faceGraphic.updateFace(face);
}
}
Uruchamianie aplikacji w emulatorze
Teraz na pasku narzędzi Android Studio kliknij Uruchom ( ). Po załadowaniu aplikacji upewnij się, że w polu menu wybrana jest opcja Test Image 2 (Face)
, a potem kliknij przycisk FIND FACE CONTOUR
.
Aplikacja powinna teraz wyglądać jak na obrazie poniżej. Wyświetlane są na nim wyniki wykrywania kontur twarzy oraz kontury twarzy jako punkty nałożone na oryginalny obraz.
Gratulacje! Właśnie dodałeś/dodałaś do aplikacji wykrywanie konturu twarzy na urządzeniu za pomocą ML Kit. Wykrywanie kontur twarzy na urządzeniu jest przydatne w wielu przypadkach, ponieważ działa nawet wtedy, gdy aplikacja nie ma połączenia z internetem. Jest też wystarczająco szybkie, aby wykorzystywać je w przypadku zdjęć i ramek wideo na żywo.
7. Gratulacje!
Udało Ci się użyć pakietu ML Kit, aby łatwo dodać zaawansowane funkcje systemów uczących się do Twojej aplikacji.
Omówione zagadnienia
- Jak dodać ML Kit do aplikacji na Androida
- Jak używać rozpoznawania tekstu na urządzeniu w ML Kit do znajdowania tekstu na obrazach
- Jak używać na urządzeniu funkcji konturowania twarzy w ML Kit do rozpoznawania cech twarzy na zdjęciach
Następne kroki
- Użyj ML Kit w swojej aplikacji na Androida.