1. Wprowadzenie
ML Kit to mobilny pakiet SDK, który udostępnia w prosty sposób zaawansowane funkcje uczenia maszynowego Google w aplikacjach na Androida i iOS. Niezależnie od tego, czy dopiero zaczynasz, czy masz już doświadczenie w uczeniu maszynowym, możesz łatwo wdrożyć potrzebne funkcje za pomocą kilku linii kodu. Aby zacząć, nie musisz mieć zaawansowanej wiedzy o sieciach neuronowych ani optymalizacji modeli.
Jeśli podczas wykonywania tego laboratorium napotkasz jakiekolwiek 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 laboratorium.
Jak to działa?
ML Kit ułatwia stosowanie technik uczenia maszynowego w aplikacjach, ponieważ łączy technologie uczenia maszynowego Google, takie jak Mobile Vision i TensorFlow Lite, w jednym pakiecie SDK. Niezależnie od tego, czy potrzebujesz funkcji w czasie rzeczywistym, jakie oferują modele Mobile Vision na urządzeniu, czy elastyczności niestandardowych modeli TensorFlow Lite, ML Kit Ci pomoże.
W tych ćwiczeniach z programowania dowiesz się, jak utworzyć własną aplikację na Androida, która może automatycznie wykrywać tekst i cechy twarzy na obrazie.
Co utworzysz
W tym ćwiczeniu z programowania utworzysz aplikację na Androida z ML Kit. Twoja aplikacja będzie:
|
|
Czego się nauczysz
- Jak używać pakietu ML Kit SDK, aby łatwo dodawać zaawansowane funkcje uczenia maszynowego, takie jak rozpoznawanie tekstu i wykrywanie cech twarzy
Czego potrzebujesz
- Najnowsza wersja Androida Studio (3.0 lub nowsza)
- Emulator Androida Studio lub fizyczne urządzenie z Androidem
- Przykładowy kod
- Podstawowa wiedza na temat tworzenia aplikacji na Androida w Javie
- Podstawowa wiedza o modelach uczenia maszynowego
Ten moduł Codelab dotyczy ML Kit. Nieistotne koncepcje i bloki kodu zostały pominięte. Można je po prostu skopiować i wkleić.
2. Przygotowania
Pobieranie kodu
Kliknij ten link, aby pobrać cały kod do tych ćwiczeń:
Rozpakuj pobrany plik ZIP. Spowoduje to rozpakowanie folderu głównego (mlkit-android-master) ze wszystkimi potrzebnymi zasobami. W tym ćwiczeniu potrzebne będą tylko zasoby z podkatalogu vision.
Podkatalog vision w repozytorium mlkit-android-master zawiera 2 katalogi:
starter – kod początkowy, na którym będziesz pracować w tym ćwiczeniu z programowania.
final – ukończony kod gotowej aplikacji przykładowej.
3. Sprawdzanie zależności ML Kit
Sprawdzanie zależności ML Kit
Te wiersze powinny być już dodane na końcu pliku build.gradle w katalogu app projektu (sprawdź, czy tak jest):
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'
}
Są to konkretne zależności ML Kit, które musisz zaimplementować, aby korzystać z funkcji opisanych w tym laboratorium.
4. Uruchamianie aplikacji startowej
Po zaimportowaniu projektu do Android Studio i sprawdzeniu zależności ML Kit możesz po raz pierwszy uruchomić aplikację. Uruchom emulator Android Studio i na pasku narzędzi Android Studio kliknij Uruchom (
).
Aplikacja powinna uruchomić się na emulatorze. Powinien być teraz widoczny podstawowy układ z polem menu, w którym możesz wybrać jeden z 3 obrazów. W następnej sekcji dodasz do aplikacji funkcję rozpoznawania tekstu, aby identyfikować tekst na obrazach.
5. Dodawanie rozpoznawania tekstu na urządzeniu
W tym kroku dodamy do aplikacji funkcję rozpoznawania tekstu na obrazach.
Konfigurowanie i uruchamianie rozpoznawania tekstu na obrazie na urządzeniu
Dodaj do metody runTextRecognition klasy MainActivity te wiersze:
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 na rozpoznawanie tekstu
Dodaj ten kod do elementu 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 na pasku narzędzi Android Studio kliknij Uruchom (
). Po wczytaniu aplikacji sprawdź, czy w menu wyboru jest zaznaczona opcja Test Image 1(Text), a następnie kliknij przycisk FIND TEXT.
Aplikacja powinna teraz wyglądać jak na obrazie poniżej, wyświetlając wyniki rozpoznawania tekstu i ramki ograniczające nałożone na oryginalny obraz.

Zdjęcie: Kai Schreiber / Wikimedia Commons / CC BY-SA 2.0
Gratulacje! Właśnie udało Ci się dodać do aplikacji rozpoznawanie tekstu na urządzeniu za pomocą ML Kit. Rozpoznawanie tekstu na urządzeniu sprawdza się w wielu zastosowaniach, ponieważ działa nawet wtedy, gdy aplikacja nie ma połączenia z internetem, i jest wystarczająco szybkie, aby można było go używać zarówno w przypadku zdjęć, jak i klatek wideo na żywo.
6. Dodawanie wykrywania konturów twarzy na urządzeniu
W tym kroku dodamy do aplikacji funkcję rozpoznawania konturów twarzy na zdjęciach.
Konfigurowanie i uruchamianie na obrazie wykrywania konturów twarzy na urządzeniu
Dodaj do metody runFaceContourDetection klasy MainActivity te wiersze:
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 detektor konturu twarzy i wywołuje funkcję processFaceContourDetectionResult z odpowiedzią.
Przetwarzanie odpowiedzi dotyczącej wykrywania konturów twarzy
Dodaj ten kod do elementu 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 wczytaniu aplikacji sprawdź, czy w menu wyboru jest zaznaczona opcja Test Image 2 (Face), i kliknij przycisk FIND FACE CONTOUR.
Aplikacja powinna teraz wyglądać jak na obrazie poniżej. Powinny być widoczne wyniki wykrywania konturów twarzy oraz kontury twarzy w postaci punktów nałożonych na oryginalny obraz.

Gratulacje! Właśnie udało Ci się dodać do aplikacji wykrywanie konturów twarzy na urządzeniu za pomocą ML Kit. Wykrywanie konturów twarzy na urządzeniu sprawdza się w wielu zastosowaniach, ponieważ działa nawet wtedy, gdy aplikacja nie ma połączenia z internetem, i jest wystarczająco szybkie, aby można było go używać zarówno w przypadku zdjęć, jak i klatek wideo na żywo.
7. Gratulacje!
Udało Ci się użyć ML Kit, aby łatwo dodać do aplikacji zaawansowane funkcje uczenia maszynowego.
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 korzystać z konturu twarzy na urządzeniu w ML Kit do identyfikowania cech twarzy na obrazach
Następne kroki
- Korzystaj z ML Kit w swojej aplikacji na Androida.