Skip to content

Wacayang is a mobile application that able to identify Indonesian wayang kulit characters. This app uses images uploaded by the user as input, and the information about the name, description, image, and related video about the identified wayang character will be displayed on the app.

Notifications You must be signed in to change notification settings

Wacayang-Bangkit-2022/Wacayang-MobileDev

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Wacayang, Indonesian Wayang App

Team C22-PC383 Contributors

  • Nauval Muhammad Firdaus (A2005F0453) - GitHub@NauvalNC - Mobile Development - Universitas Bina Nusantara
  • Fahrizza Irham Taufany (M2116L1465) - GitHub@fahrizzairham - Machine Learning - Institut Teknologi Kalimantan
  • Muhammad Izzah Alfatih (M2012F1299) - GitHub@IzzahAlfatih - Machine Learning - Universitas Telkom
  • Dimas Aji Permadi (C2152F1678) - GitHub@DimasAji1999 - Cloud Computing - Sekolah Tinggi Teknologi Bandung

About

Wacayang is a mobile application that able to identify Indonesian wayang kulit characters. This app uses images uploaded by the user as input, and the information about the name, description, image, and related video about the identified wayang character will be displayed on the app.

Presentation and Demo Video

https://youtu.be/u1vkZIZzopQ

Android APK File (Minimum Android SDK 21)

Link: https://drive.google.com/file/d/17EXgCPaWJuxIVNsX-qUjfb0lgfdHY-oy/view?usp=sharing
Alternative Link: https://drive.google.com/file/d/1hXyMuBRKxxPgjiQkxqbVkO4Q_6UlPJuB/view?usp=sharing

Wireframe && Mock-Up

https://www.figma.com/file/JG7eT6Ri8gWlf9k0bcldGp/Wacayang

REST API Documentation

https://documenter.getpostman.com/view/20994859/UyxqDPV6

Wayang Content References

This app use wayang images provided by Wikimedia on Public Domain Licences, and videos from YouTube with attribution. For details, please refer to this link.

https://docs.google.com/spreadsheets/d/1wiKW1goLW4FmGMa_j7DgjjLb4kS6Mh9Tbfq9UIT5xsY/edit?usp=sharing

App Features

Feature 1 Feature 2 Feature 3 Feature 4

  • Search various Indonesia wayang by typing on search bar.
  • Upload image from camera or gallery to predict its wayang character using machine learning.
  • Information about Indonesian wayangs inclunding name, story, images, and related wayang shows from local Indonesian puppeter.
  • Personalization to add and remove wayang to/from favorite library.
  • Share thoughts and knowledge through posting comments.
  • Secured account sign in using Google Firebase JWT token.

Technology

  • Android Studio IDE to develop the Android application.
  • Google Cloud Platform as deployment platform for REST API, database, and ML model.
  • Tensorflow and Keras to develop, train, and deploy ML model.

Integration Method

Wacayang consists of three components, Android, Cloud Computing, and Machine Learning. Basically, to integrate these, Cloud Computing acts as service to bridge communication between Android and Machine Learning. Here is a simple illustration on how our integration method works. Integration Method Integration method explanation:

  1. Android app send a network request using Retrofit library. This request has JWT token as Authorization header.
  2. Cloud Run acts as service to serve request from the app. It will verify the token first before proceed.
  3. After token is verified, Cloud Run services will access back-end app depending on the request. If it looking for user or wayang information, it will query to SQL database. If it looking for wayang image prediction, then it will post that image to ML model.
  4. After back-end app finished processing, Cloud Run services will return the result as JSON literals to the Android app.
  5. Android app will process the JSON literals and show relevant information to the user.

Estimate Google Cloud Platform Pricing

GCP Pricing

Android Studio Project Installation

Components

Wacayang Android app is developed using Android Studio IDE. Here are components that we used.

Requirements

  • Android Studio Bumblebee 2021.1.1 Patch 2
  • Minimum Android SDK 21

Workflow

1. Clone The Project and Open It in Android Studio

git clone https://github.com/Wacayang-Bangkit-2022/Wacayang-MobileDev.git

2. Connect the Project to Your Firebase Auth

  • Head to your Firebase Console.
  • Then create or use your existing Firebase project.
  • Activate Firebase Authentication feature.
  • Open Project Settings -> General, select New App, and choose Android app.
  • Fill debug SHA1 fingerprint. You can find this by execute Gradle -> signingReport on Android Studio.
  • After the new Firebase app added, you will see your debug SHA1 added to that Firebase app. You can add another SHA1 such as your signed app SHA1. You can find your signed app SHA1 by executing this command on terminal. But, you will need to create your Keystore first
keytool -list -v -keystore <your keystore path> -alias <your alias>
  • Install Firebase SDK to your Android Studio project.
  • Download the google-service.json from your Firebase Console, and copy it to the app folder of your Android Studio project.

3. Run or Build The App

After you open the project, wait for the Gradle to finish building first. Then you can choose to build debug app by using Run -> Run'app'. Or you can build signed App by head to Build -> Generate Signed Bundle/APK.

Cloud Computing Project Installation

Components and Requirements

  • SQL database running on Google Cloud Platform
  • REST API developed using Node.JS, Express, and Flask.
  • Deployed REST API running as service on Google Cloud Run.

Workflow

1. Clone The Project and Open It in Your Favorite IDE

git clone https://github.com/Wacayang-Bangkit-2022/Wacayang_CloudComputing.git

2. Get Service Account Key from Firebase

  • Open your last Firebase project used for Android Studio project installation
  • Go to Project Settings -> Service Accounts
  • Choose Generate New Private Key, and your private key JSON file will be downloaded.
  • Rename your private key as serviceAccountKey.json
  • Copy that file to your cloned project, both inside wacayang_general_api and wacayang_ai_api folder.

3. Create SQL Instance on GCP

  • Open your Cloud Console, head to SQL -> MySQL -> Create New Instance
  • Create new database on your newly created SQL instance.
  • Create necessary tables as showed on this schema below. Database Schema
  • Setup your database connection such as DB_USER, DB_PASS on the Connection tab.

4. Deploy REST API to Cloud Run

  • There will be two service running on Cloud Run.
  • First, go to wacayang_general_api folder via terminal. And run gcloud run deploy command. Fill the rest of required fields. When it finish, it should shows your deployed service URL.
  • Do the same for wacayang_ai_api folder, run gcloud run deploy command. Fill the rest of required fields. When it finish, it should shows your deployed service URL.
  • These URL will be used by Android app to send network request. Replace the URL on ApiService.kt inside your Android Studio project to make it works with your deployed API.
  • Go to your Cloud Console then head to your Cloud Run tab.
  • Open your deployed wacayang_general_api service and create new revision by choosing Edit & Deploy New Revision.
  • On Variable and Secrets tab, add new variable for DB_NAME, DB_USER, DB_PASS, and INSTANCE_CONNECTION_NAME. This necessary so your service can connect to your database. Fill these information based on your SQL database instance, then choose Deploy to create new revision.

Our Deployed REST API URL

Please head to this link for our detailed REST API documentation.

https://documenter.getpostman.com/view/20994859/UyxqDPV6

Machine Learning Project Installation

Components

  • Image Pre-processing
  • Image Augmentation
  • Early Stopping
  • Callbacks
  • Model Checkpoint
  • Convolutional Neural Network (CNN)
  • Transfer Learning
    • DenseNet121
    • InceptionV3
    • ResNet152V2
  • Model Evaluate
  • Accuracy and Loss Graph

Requirements

Dataset

Dataset Preview

(Left to right) Bagong, Cepot, Gareng, Petruk, and Semar

Workflow

  1. Generate Kaggle API token to get kaggle.json file
  2. Open the .ipynb file in Google Colab or Jupyter Notebook:
  3. Click Copy to Drive or Click File > Save a copy in Drive. This will allow you to run and edit the .ipynb file in your own Google Drive account
  4. Upload your kaggle.json file (API Token)
  5. Run every cell in the .ipynb file
  6. Download the model .h5 file by left clicking the .h5file in the Colab directory (Automatically saved to /content/ file by Model Checkpoint)

About

Wacayang is a mobile application that able to identify Indonesian wayang kulit characters. This app uses images uploaded by the user as input, and the information about the name, description, image, and related video about the identified wayang character will be displayed on the app.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages