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 trzeba mieć dogłębnej wiedzy o sieciach neuronowych ani optymalizacji modeli.
Jeśli w trakcie wykonywania tych ćwiczeń natrafisz na błędy (błędy w kodzie, błędy gramatyczne, niejasne sformułowania itp.), zgłoś je, korzystając z linku 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 działających w czasie rzeczywistym możliwości modeli na urządzeniu Mobile Vision czy elastyczności niestandardowych modeli TensorFlow Lite, ML Kit Ci w tym pomoże.
Dzięki nim dowiesz się, jak utworzyć własną aplikację na Androida, która będzie automatycznie wykrywać tekst i twarze na zdjęciach.
Co utworzysz
W ramach tego ćwiczenia w Codelabs dowiesz się, jak utworzyć aplikację na Androida przy użyciu 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 czy wykrywanie twarzy
Czego potrzebujesz
- najnowszą wersję Android Studio (3.0 lub nowszą),
- Emulator Android Studio lub fizyczne urządzenie z Androidem
- Przykładowy kod
- Podstawowa wiedza o programowaniu na Androida w Javie
- Podstawowa znajomość modeli systemów uczących się
To ćwiczenia w programowaniu koncentrują się na ML Kit. Nieistotne koncepcje i bloki kodu zostały zamaskowane. Można je po prostu skopiować i wkleić.
2. Przygotowanie
Pobieranie kodu
Kliknij poniższy link, aby pobrać cały kod do tego ćwiczenia w Codelabs:
Rozpakuj pobrany plik ZIP. Spowoduje to rozpakowanie folderu głównego (mlkit-android-master
) ze wszystkimi potrzebnymi zasobami. W tym ćwiczeniu w Codelabs będziesz potrzebować tylko zasobów z podkatalogu vision
.
Podkatalog vision
w repozytorium mlkit-android-master
zawiera 2 katalogi:
starter – kod początkowy, który opracujesz w ramach tego ćwiczenia z programowania.
final – kompletny kod gotowej przykładowej aplikacji.
3. Sprawdzanie zależności ML Kit
Sprawdzanie zależności ML Kit
Te wiersze powinny już zostać dodane na końcu pliku build.gradle w katalogu app
projektu (sprawdź, czy chcesz potwierdzić):
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. Uruchom aplikację startową
Po zaimportowaniu projektu do Android Studio i sprawdzeniu zależności 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. Teraz powinien być widoczny układ podstawowy z polem, w którym możesz wybrać 3 obrazy. W następnej sekcji dodasz do swojej aplikacji funkcję rozpoznawania tekstu, aby rozpoznawać tekst na obrazach.
5. Dodaj rozpoznawanie 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 ten kod do metody runTextRecognition
klasy MainActivity
:
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 w odpowiedzi funkcję processTextRecognitionResult
.
Przetwarzanie odpowiedzi z rozpoznawaniem tekstu
Dodaj ten kod do polecenia 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 upewnij się, że w menu wybrana jest opcja
Test Image 1(Text)
, i 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
Gratulujemy. Udało Ci się dodać do aplikacji rozpoznawanie tekstu na urządzeniu za pomocą ML Kit. Rozpoznawanie tekstu na urządzeniu świetnie sprawdza się w wielu przypadkach, ponieważ działa nawet wtedy, gdy aplikacja nie ma połączenia z internetem i jest wystarczająco szybkie, aby obsługiwać zarówno zdjęcia, jak i klatki wideo na żywo.
6. Dodaj wykrywanie konturu twarzy na urządzeniu
W tym kroku dodamy do aplikacji funkcję rozpoznawania konturów 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 w odpowiedzi wywołuje funkcję processFaceContourDetectionResult
.
Przetwarzanie odpowiedzi wykrywania konturów 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 kliknij Uruchom ( ) na pasku narzędzi Android Studio. Po załadowaniu aplikacji upewnij się, że w menu wybrana jest opcja
Test Image 2 (Face)
, i kliknij przycisk FIND FACE CONTOUR
.
Aplikacja powinna teraz wyglądać tak, jak na ilustracji poniżej. Pokazuje wyniki wykrywania konturów twarzy i pokazuje kontury twarzy jako punkty nałożone na oryginalne zdjęcie.
Gratulacje! Właśnie udało Ci się dodać wykrywanie kontur twarzy na urządzeniu za pomocą ML Kit. Funkcja wykrywania konturu twarzy na urządzeniu sprawdza się w wielu przypadkach, ponieważ działa nawet wtedy, gdy aplikacja nie ma połączenia z internetem i działa na tyle szybko, że świetnie sprawdza się zarówno na zdjęciach, jak i na nagraniach 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ć funkcji konturów twarzy na urządzeniu w ML Kit do rozpoznawania cech twarzy na obrazach
Następne kroki
- Użyj ML Kit w swojej aplikacji na Androida.