diff --git a/.gitignore b/.gitignore
index 485dee6..ac9438d 100755
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,123 @@
-.idea
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+.idea/*
+
+# C extensions
+*.so
+
+
+data/
+downloads/
+fortt/
+logs/
+
+# Distribution / packaging
+.Python
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+lib/
+lib64/
+parts/
+sdist/
+var/
+wheels/
+share/python-wheels/
+*.egg-info/
+.installed.cfg
+*.egg
+MANIFEST
+
+# PyInstaller
+# Usually these files are written by a python script from a template
+# before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.nox/
+.coverage
+.coverage.*
+.cache
+nosetests.xml
+coverage.xml
+*.cover
+.hypothesis/
+.pytest_cache/
+
+# Translations
+*.mo
+*.pot
+
+# Django stuff:
+*.log
+local_settings.py
+db.sqlite3
+
+# Flask stuff:
+instance/
+.webassets-cache
+
+# Scrapy stuff:
+.scrapy
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+target/
+
+# Jupyter Notebook
+.ipynb_checkpoints
+
+# IPython
+profile_default/
+ipython_config.py
+
+# pyenv
+.python-version
+
+# celery beat schedule file
+celerybeat-schedule
+
+# SageMath parsed files
+*.sage.py
+
+# Environments
+.env
+.venv
+env/
+venv/
+ENV/
+env.bak/
+venv.bak/
+
+# Spyder project settings
+.spyderproject
+.spyproject
+
+# Rope project settings
+.ropeproject
+
+# mkdocs documentation
+/site
+
+# mypy
+.mypy_cache/
+.dmypy.json
+dmypy.json
+
+# Pyre type checker
+.pyre/
diff --git a/ModelTraining/1 - ImageGatherer.py b/1 - ImageGatherer.py
old mode 100755
new mode 100644
similarity index 100%
rename from ModelTraining/1 - ImageGatherer.py
rename to 1 - ImageGatherer.py
diff --git a/ModelTraining/2 - FixFileTypes.py b/2 - FixFileTypes.py
old mode 100755
new mode 100644
similarity index 100%
rename from ModelTraining/2 - FixFileTypes.py
rename to 2 - FixFileTypes.py
diff --git a/ModelTraining/3 - TestTrainSplit.py b/3 - TestTrainSplit.py
old mode 100755
new mode 100644
similarity index 100%
rename from ModelTraining/3 - TestTrainSplit.py
rename to 3 - TestTrainSplit.py
diff --git a/ModelTraining/4 - TrainingModelKeras.py b/4 - TrainingModelKeras.py
old mode 100755
new mode 100644
similarity index 100%
rename from ModelTraining/4 - TrainingModelKeras.py
rename to 4 - TrainingModelKeras.py
diff --git a/ModelTraining/4 - TransferLearningKeras.py b/4 - TransferLearningKeras.py
old mode 100755
new mode 100644
similarity index 100%
rename from ModelTraining/4 - TransferLearningKeras.py
rename to 4 - TransferLearningKeras.py
diff --git a/ModelTraining/5 - KerasToTensorflow.py b/5 - KerasToTensorflow.py
old mode 100755
new mode 100644
similarity index 100%
rename from ModelTraining/5 - KerasToTensorflow.py
rename to 5 - KerasToTensorflow.py
diff --git a/ModelTraining/.gitignore b/ModelTraining/.gitignore
deleted file mode 100755
index ac9438d..0000000
--- a/ModelTraining/.gitignore
+++ /dev/null
@@ -1,123 +0,0 @@
-# Byte-compiled / optimized / DLL files
-__pycache__/
-*.py[cod]
-*$py.class
-
-.idea/*
-
-# C extensions
-*.so
-
-
-data/
-downloads/
-fortt/
-logs/
-
-# Distribution / packaging
-.Python
-build/
-develop-eggs/
-dist/
-downloads/
-eggs/
-.eggs/
-lib/
-lib64/
-parts/
-sdist/
-var/
-wheels/
-share/python-wheels/
-*.egg-info/
-.installed.cfg
-*.egg
-MANIFEST
-
-# PyInstaller
-# Usually these files are written by a python script from a template
-# before PyInstaller builds the exe, so as to inject date/other infos into it.
-*.manifest
-*.spec
-
-# Installer logs
-pip-log.txt
-pip-delete-this-directory.txt
-
-# Unit test / coverage reports
-htmlcov/
-.tox/
-.nox/
-.coverage
-.coverage.*
-.cache
-nosetests.xml
-coverage.xml
-*.cover
-.hypothesis/
-.pytest_cache/
-
-# Translations
-*.mo
-*.pot
-
-# Django stuff:
-*.log
-local_settings.py
-db.sqlite3
-
-# Flask stuff:
-instance/
-.webassets-cache
-
-# Scrapy stuff:
-.scrapy
-
-# Sphinx documentation
-docs/_build/
-
-# PyBuilder
-target/
-
-# Jupyter Notebook
-.ipynb_checkpoints
-
-# IPython
-profile_default/
-ipython_config.py
-
-# pyenv
-.python-version
-
-# celery beat schedule file
-celerybeat-schedule
-
-# SageMath parsed files
-*.sage.py
-
-# Environments
-.env
-.venv
-env/
-venv/
-ENV/
-env.bak/
-venv.bak/
-
-# Spyder project settings
-.spyderproject
-.spyproject
-
-# Rope project settings
-.ropeproject
-
-# mkdocs documentation
-/site
-
-# mypy
-.mypy_cache/
-.dmypy.json
-dmypy.json
-
-# Pyre type checker
-.pyre/
diff --git a/android-tflite/.gitignore b/android-tflite/.gitignore
deleted file mode 100755
index c29df47..0000000
--- a/android-tflite/.gitignore
+++ /dev/null
@@ -1,81 +0,0 @@
-# Built application files
-*.apk
-*.ap_
-*.aab
-
-# Files for the ART/Dalvik VM
-*.dex
-
-# Java class files
-*.class
-
-# Generated files
-bin/
-gen/
-out/
-
-# Gradle files
-.gradle/
-build/
-.idea/
-
-# Local configuration file (sdk path, etc)
-local.properties
-
-# Proguard folder generated by Eclipse
-proguard/
-
-# Log Files
-*.log
-
-# Android Studio Navigation editor temp files
-.navigation/
-
-# Android Studio captures folder
-captures/
-
-# IntelliJ
-*.iml
-.idea/workspace.xml
-.idea/tasks.xml
-.idea/gradle.xml
-.idea/assetWizardSettings.xml
-.idea/dictionaries
-.idea/libraries
-.idea/caches
-# Android Studio 3 in .gitignore file.
-.idea/caches/build_file_checksums.ser
-.idea/modules.xml
-
-# Keystore files
-# Uncomment the following lines if you do not want to check your keystore files in.
-#*.jks
-#*.keystore
-
-# External native build folder generated in Android Studio 2.2 and later
-.externalNativeBuild
-
-# Google Services (e.g. APIs or Firebase)
-# google-services.json
-
-# Freeline
-freeline.py
-freeline/
-freeline_project_description.json
-
-# fastlane
-fastlane/report.xml
-fastlane/Preview.html
-fastlane/screenshots
-fastlane/test_output
-fastlane/readme.md
-
-# Version control
-vcs.xml
-
-# lint
-lint/intermediates/
-lint/generated/
-lint/outputs/
-lint/tmp/
-# lint/reports/
\ No newline at end of file
diff --git a/android-tflite/README.md b/android-tflite/README.md
deleted file mode 100755
index 71b633c..0000000
--- a/android-tflite/README.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# TF Lite Android App
-
-## Building from Source with Bazel
-
-1. Follow the [Bazel steps for the TF Demo App](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android#bazel):
-
- 1. [Install Bazel and Android Prerequisites](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android#install-bazel-and-android-prerequisites).
- It's easiest with Android Studio.
-
- - You'll need at least SDK version 23.
- - Bazel requires Android Build Tools `26.0.1` or higher.
- - You also need to install the Android Support Repository, available
- through Android Studio under `Android SDK Manager -> SDK Tools ->
- Android Support Repository`.
-
- 2. [Edit your `WORKSPACE`](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android#edit-workspace)
- to add SDK and NDK targets.
-
- - Make sure the `api_level` in `WORKSPACE` is set to an SDK version that
- you have installed.
- - By default, Android Studio will install the SDK to `~/Android/Sdk` and
- the NDK to `~/Android/Sdk/ndk-bundle`.
-
-2. Build the app with Bazel. The demo needs C++11:
-
- ```shell
- bazel build -c opt --cxxopt='--std=c++11' \
- //tensorflow/contrib/lite/java/demo/app/src/main:TfLiteCameraDemo
- ```
-
-3. Install the demo on a
- [debug-enabled device](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android#install):
-
- ```shell
- adb install bazel-bin/tensorflow/contrib/lite/java/demo/app/src/main/TfLiteCameraDemo.apk
- ```
diff --git a/android-tflite/app/build.gradle b/android-tflite/app/build.gradle
deleted file mode 100755
index 3ea9cca..0000000
--- a/android-tflite/app/build.gradle
+++ /dev/null
@@ -1,59 +0,0 @@
-apply plugin: 'com.android.application'
-
-project.ext.ASSET_DIR = projectDir.toString() + '/src/main/assets'
-
-assert file(project.ext.ASSET_DIR + "/inception.tflite").exists()
-assert file(project.ext.ASSET_DIR + "/labels.txt").exists()
-
-android {
- compileSdkVersion 26
- defaultConfig {
- applicationId "android.example.com.tflitecamerademo"
- minSdkVersion 21
- targetSdkVersion 26
- versionCode 1
- versionName "1.0"
- testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
- }
- lintOptions {
- abortOnError false
- }
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- }
- }
- aaptOptions {
- noCompress "tflite"
- noCompress "lite"
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- }
-}
-
-repositories {
- maven {
- url 'https://google.bintray.com/tensorflow'
- }
- google()
-}
-
-dependencies {
- implementation fileTree(dir: 'libs', include: ['*.jar'])
- androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
- exclude group: 'com.android.support', module: 'support-annotations'
- })
- implementation 'com.android.support:appcompat-v7:25.2.0'
- implementation 'com.android.support.constraint:constraint-layout:1.1.0'
- implementation 'com.android.support:design:25.2.0'
- implementation 'com.android.support:support-annotations:25.3.1'
- implementation 'com.android.support:support-v13:25.2.0'
-
- implementation 'org.tensorflow:tensorflow-lite:+'
-
- testImplementation 'junit:junit:4.12'
-}
diff --git a/android-tflite/app/src/main/AndroidManifest.xml b/android-tflite/app/src/main/AndroidManifest.xml
deleted file mode 100755
index b127731..0000000
--- a/android-tflite/app/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android-tflite/app/src/main/assets/BUILD b/android-tflite/app/src/main/assets/BUILD
deleted file mode 100755
index dd0cd6c..0000000
--- a/android-tflite/app/src/main/assets/BUILD
+++ /dev/null
@@ -1,24 +0,0 @@
-package(default_visibility = ["//visibility:private"])
-
-licenses(["notice"]) # Apache 2.0
-
-exports_files(
- glob(
- ["**/*"],
- exclude = [
- "BUILD",
- ],
- ),
-)
-
-filegroup(
- name = "all_files",
- srcs = glob(
- ["**/*"],
- exclude = [
- "**/METADATA",
- "**/OWNERS",
- ],
- ),
- visibility = ["//tensorflow:__subpackages__"],
-)
diff --git a/android-tflite/app/src/main/assets/Ol/graph.lite b/android-tflite/app/src/main/assets/Ol/graph.lite
deleted file mode 100755
index bd1c83a..0000000
Binary files a/android-tflite/app/src/main/assets/Ol/graph.lite and /dev/null differ
diff --git a/android-tflite/app/src/main/assets/Ol/labels.txt b/android-tflite/app/src/main/assets/Ol/labels.txt
deleted file mode 100755
index fe81123..0000000
--- a/android-tflite/app/src/main/assets/Ol/labels.txt
+++ /dev/null
@@ -1,1001 +0,0 @@
-background
-tench
-goldfish
-great white shark
-tiger shark
-hammerhead
-electric ray
-stingray
-cock
-hen
-ostrich
-brambling
-goldfinch
-house finch
-junco
-indigo bunting
-robin
-bulbul
-jay
-magpie
-chickadee
-water ouzel
-kite
-bald eagle
-vulture
-great grey owl
-European fire salamander
-common newt
-eft
-spotted salamander
-axolotl
-bullfrog
-tree frog
-tailed frog
-loggerhead
-leatherback turtle
-mud turtle
-terrapin
-box turtle
-banded gecko
-common iguana
-American chameleon
-whiptail
-agama
-frilled lizard
-alligator lizard
-Gila monster
-green lizard
-African chameleon
-Komodo dragon
-African crocodile
-American alligator
-triceratops
-thunder snake
-ringneck snake
-hognose snake
-green snake
-king snake
-garter snake
-water snake
-vine snake
-night snake
-boa constrictor
-rock python
-Indian cobra
-green mamba
-sea snake
-horned viper
-diamondback
-sidewinder
-trilobite
-harvestman
-scorpion
-black and gold garden spider
-barn spider
-garden spider
-black widow
-tarantula
-wolf spider
-tick
-centipede
-black grouse
-ptarmigan
-ruffed grouse
-prairie chicken
-peacock
-quail
-partridge
-African grey
-macaw
-sulphur-crested cockatoo
-lorikeet
-coucal
-bee eater
-hornbill
-hummingbird
-jacamar
-toucan
-drake
-red-breasted merganser
-goose
-black swan
-tusker
-echidna
-platypus
-wallaby
-koala
-wombat
-jellyfish
-sea anemone
-brain coral
-flatworm
-nematode
-conch
-snail
-slug
-sea slug
-chiton
-chambered nautilus
-Dungeness crab
-rock crab
-fiddler crab
-king crab
-American lobster
-spiny lobster
-crayfish
-hermit crab
-isopod
-white stork
-black stork
-spoonbill
-flamingo
-little blue heron
-American egret
-bittern
-crane
-limpkin
-European gallinule
-American coot
-bustard
-ruddy turnstone
-red-backed sandpiper
-redshank
-dowitcher
-oystercatcher
-pelican
-king penguin
-albatross
-grey whale
-killer whale
-dugong
-sea lion
-Chihuahua
-Japanese spaniel
-Maltese dog
-Pekinese
-Shih-Tzu
-Blenheim spaniel
-papillon
-toy terrier
-Rhodesian ridgeback
-Afghan hound
-basset
-beagle
-bloodhound
-bluetick
-black-and-tan coonhound
-Walker hound
-English foxhound
-redbone
-borzoi
-Irish wolfhound
-Italian greyhound
-whippet
-Ibizan hound
-Norwegian elkhound
-otterhound
-Saluki
-Scottish deerhound
-Weimaraner
-Staffordshire bullterrier
-American Staffordshire terrier
-Bedlington terrier
-Border terrier
-Kerry blue terrier
-Irish terrier
-Norfolk terrier
-Norwich terrier
-Yorkshire terrier
-wire-haired fox terrier
-Lakeland terrier
-Sealyham terrier
-Airedale
-cairn
-Australian terrier
-Dandie Dinmont
-Boston bull
-miniature schnauzer
-giant schnauzer
-standard schnauzer
-Scotch terrier
-Tibetan terrier
-silky terrier
-soft-coated wheaten terrier
-West Highland white terrier
-Lhasa
-flat-coated retriever
-curly-coated retriever
-golden retriever
-Labrador retriever
-Chesapeake Bay retriever
-German short-haired pointer
-vizsla
-English setter
-Irish setter
-Gordon setter
-Brittany spaniel
-clumber
-English springer
-Welsh springer spaniel
-cocker spaniel
-Sussex spaniel
-Irish water spaniel
-kuvasz
-schipperke
-groenendael
-malinois
-briard
-kelpie
-komondor
-Old English sheepdog
-Shetland sheepdog
-collie
-Border collie
-Bouvier des Flandres
-Rottweiler
-German shepherd
-Doberman
-miniature pinscher
-Greater Swiss Mountain dog
-Bernese mountain dog
-Appenzeller
-EntleBucher
-boxer
-bull mastiff
-Tibetan mastiff
-French bulldog
-Great Dane
-Saint Bernard
-Eskimo dog
-malamute
-Siberian husky
-dalmatian
-affenpinscher
-basenji
-pug
-Leonberg
-Newfoundland
-Great Pyrenees
-Samoyed
-Pomeranian
-chow
-keeshond
-Brabancon griffon
-Pembroke
-Cardigan
-toy poodle
-miniature poodle
-standard poodle
-Mexican hairless
-timber wolf
-white wolf
-red wolf
-coyote
-dingo
-dhole
-African hunting dog
-hyena
-red fox
-kit fox
-Arctic fox
-grey fox
-tabby
-tiger cat
-Persian cat
-Siamese cat
-Egyptian cat
-cougar
-lynx
-leopard
-snow leopard
-jaguar
-lion
-tiger
-cheetah
-brown bear
-American black bear
-ice bear
-sloth bear
-mongoose
-meerkat
-tiger beetle
-ladybug
-ground beetle
-long-horned beetle
-leaf beetle
-dung beetle
-rhinoceros beetle
-weevil
-fly
-bee
-ant
-grasshopper
-cricket
-walking stick
-cockroach
-mantis
-cicada
-leafhopper
-lacewing
-dragonfly
-damselfly
-admiral
-ringlet
-monarch
-cabbage butterfly
-sulphur butterfly
-lycaenid
-starfish
-sea urchin
-sea cucumber
-wood rabbit
-hare
-Angora
-hamster
-porcupine
-fox squirrel
-marmot
-beaver
-guinea pig
-sorrel
-zebra
-hog
-wild boar
-warthog
-hippopotamus
-ox
-water buffalo
-bison
-ram
-bighorn
-ibex
-hartebeest
-impala
-gazelle
-Arabian camel
-llama
-weasel
-mink
-polecat
-black-footed ferret
-otter
-skunk
-badger
-armadillo
-three-toed sloth
-orangutan
-gorilla
-chimpanzee
-gibbon
-siamang
-guenon
-patas
-baboon
-macaque
-langur
-colobus
-proboscis monkey
-marmoset
-capuchin
-howler monkey
-titi
-spider monkey
-squirrel monkey
-Madagascar cat
-indri
-Indian elephant
-African elephant
-lesser panda
-giant panda
-barracouta
-eel
-coho
-rock beauty
-anemone fish
-sturgeon
-gar
-lionfish
-puffer
-abacus
-abaya
-academic gown
-accordion
-acoustic guitar
-aircraft carrier
-airliner
-airship
-altar
-ambulance
-amphibian
-analog clock
-apiary
-apron
-ashcan
-assault rifle
-backpack
-bakery
-balance beam
-balloon
-ballpoint
-Band Aid
-banjo
-bannister
-barbell
-barber chair
-barbershop
-barn
-barometer
-barrel
-barrow
-baseball
-basketball
-bassinet
-bassoon
-bathing cap
-bath towel
-bathtub
-beach wagon
-beacon
-beaker
-bearskin
-beer bottle
-beer glass
-bell cote
-bib
-bicycle-built-for-two
-bikini
-binder
-binoculars
-birdhouse
-boathouse
-bobsled
-bolo tie
-bonnet
-bookcase
-bookshop
-bottlecap
-bow
-bow tie
-brass
-brassiere
-breakwater
-breastplate
-broom
-bucket
-buckle
-bulletproof vest
-bullet train
-butcher shop
-cab
-caldron
-candle
-cannon
-canoe
-can opener
-cardigan
-car mirror
-carousel
-carpenter's kit
-carton
-car wheel
-cash machine
-cassette
-cassette player
-castle
-catamaran
-CD player
-cello
-cellular telephone
-chain
-chainlink fence
-chain mail
-chain saw
-chest
-chiffonier
-chime
-china cabinet
-Christmas stocking
-church
-cinema
-cleaver
-cliff dwelling
-cloak
-clog
-cocktail shaker
-coffee mug
-coffeepot
-coil
-combination lock
-computer keyboard
-confectionery
-container ship
-convertible
-corkscrew
-cornet
-cowboy boot
-cowboy hat
-cradle
-crane
-crash helmet
-crate
-crib
-Crock Pot
-croquet ball
-crutch
-cuirass
-dam
-desk
-desktop computer
-dial telephone
-diaper
-digital clock
-digital watch
-dining table
-dishrag
-dishwasher
-disk brake
-dock
-dogsled
-dome
-doormat
-drilling platform
-drum
-drumstick
-dumbbell
-Dutch oven
-electric fan
-electric guitar
-electric locomotive
-entertainment center
-envelope
-espresso maker
-face powder
-feather boa
-file
-fireboat
-fire engine
-fire screen
-flagpole
-flute
-folding chair
-football helmet
-forklift
-fountain
-fountain pen
-four-poster
-freight car
-French horn
-frying pan
-fur coat
-garbage truck
-gasmask
-gas pump
-goblet
-go-kart
-golf ball
-golfcart
-gondola
-gong
-gown
-grand piano
-greenhouse
-grille
-grocery store
-guillotine
-hair slide
-hair spray
-half track
-hammer
-hamper
-hand blower
-hand-held computer
-handkerchief
-hard disc
-harmonica
-harp
-harvester
-hatchet
-holster
-home theater
-honeycomb
-hook
-hoopskirt
-horizontal bar
-horse cart
-hourglass
-iPod
-iron
-jack-o'-lantern
-jean
-jeep
-jersey
-jigsaw puzzle
-jinrikisha
-joystick
-kimono
-knee pad
-knot
-lab coat
-ladle
-lampshade
-laptop
-lawn mower
-lens cap
-letter opener
-library
-lifeboat
-lighter
-limousine
-liner
-lipstick
-Loafer
-lotion
-loudspeaker
-loupe
-lumbermill
-magnetic compass
-mailbag
-mailbox
-maillot
-maillot
-manhole cover
-maraca
-marimba
-mask
-matchstick
-maypole
-maze
-measuring cup
-medicine chest
-megalith
-microphone
-microwave
-military uniform
-milk can
-minibus
-miniskirt
-minivan
-missile
-mitten
-mixing bowl
-mobile home
-Model T
-modem
-monastery
-monitor
-moped
-mortar
-mortarboard
-mosque
-mosquito net
-motor scooter
-mountain bike
-mountain tent
-mouse
-mousetrap
-moving van
-muzzle
-nail
-neck brace
-necklace
-nipple
-notebook
-obelisk
-oboe
-ocarina
-odometer
-oil filter
-organ
-oscilloscope
-overskirt
-oxcart
-oxygen mask
-packet
-paddle
-paddlewheel
-padlock
-paintbrush
-pajama
-palace
-panpipe
-paper towel
-parachute
-parallel bars
-park bench
-parking meter
-passenger car
-patio
-pay-phone
-pedestal
-pencil box
-pencil sharpener
-perfume
-Petri dish
-photocopier
-pick
-pickelhaube
-picket fence
-pickup
-pier
-piggy bank
-pill bottle
-pillow
-ping-pong ball
-pinwheel
-pirate
-pitcher
-plane
-planetarium
-plastic bag
-plate rack
-plow
-plunger
-Polaroid camera
-pole
-police van
-poncho
-pool table
-pop bottle
-pot
-potter's wheel
-power drill
-prayer rug
-printer
-prison
-projectile
-projector
-puck
-punching bag
-purse
-quill
-quilt
-racer
-racket
-radiator
-radio
-radio telescope
-rain barrel
-recreational vehicle
-reel
-reflex camera
-refrigerator
-remote control
-restaurant
-revolver
-rifle
-rocking chair
-rotisserie
-rubber eraser
-rugby ball
-rule
-running shoe
-safe
-safety pin
-saltshaker
-sandal
-sarong
-sax
-scabbard
-scale
-school bus
-schooner
-scoreboard
-screen
-screw
-screwdriver
-seat belt
-sewing machine
-shield
-shoe shop
-shoji
-shopping basket
-shopping cart
-shovel
-shower cap
-shower curtain
-ski
-ski mask
-sleeping bag
-slide rule
-sliding door
-slot
-snorkel
-snowmobile
-snowplow
-soap dispenser
-soccer ball
-sock
-solar dish
-sombrero
-soup bowl
-space bar
-space heater
-space shuttle
-spatula
-speedboat
-spider web
-spindle
-sports car
-spotlight
-stage
-steam locomotive
-steel arch bridge
-steel drum
-stethoscope
-stole
-stone wall
-stopwatch
-stove
-strainer
-streetcar
-stretcher
-studio couch
-stupa
-submarine
-suit
-sundial
-sunglass
-sunglasses
-sunscreen
-suspension bridge
-swab
-sweatshirt
-swimming trunks
-swing
-switch
-syringe
-table lamp
-tank
-tape player
-teapot
-teddy
-television
-tennis ball
-thatch
-theater curtain
-thimble
-thresher
-throne
-tile roof
-toaster
-tobacco shop
-toilet seat
-torch
-totem pole
-tow truck
-toyshop
-tractor
-trailer truck
-tray
-trench coat
-tricycle
-trimaran
-tripod
-triumphal arch
-trolleybus
-trombone
-tub
-turnstile
-typewriter keyboard
-umbrella
-unicycle
-upright
-vacuum
-vase
-vault
-velvet
-vending machine
-vestment
-viaduct
-violin
-volleyball
-waffle iron
-wall clock
-wallet
-wardrobe
-warplane
-washbasin
-washer
-water bottle
-water jug
-water tower
-whiskey jug
-whistle
-wig
-window screen
-window shade
-Windsor tie
-wine bottle
-wing
-wok
-wooden spoon
-wool
-worm fence
-wreck
-yawl
-yurt
-web site
-comic book
-crossword puzzle
-street sign
-traffic light
-book jacket
-menu
-plate
-guacamole
-consomme
-hot pot
-trifle
-ice cream
-ice lolly
-French loaf
-bagel
-pretzel
-cheeseburger
-hotdog
-mashed potato
-head cabbage
-broccoli
-cauliflower
-zucchini
-spaghetti squash
-acorn squash
-butternut squash
-cucumber
-artichoke
-bell pepper
-cardoon
-mushroom
-Granny Smith
-strawberry
-orange
-lemon
-fig
-pineapple
-banana
-jackfruit
-custard apple
-pomegranate
-hay
-carbonara
-chocolate sauce
-dough
-meat loaf
-pizza
-potpie
-burrito
-red wine
-espresso
-cup
-eggnog
-alp
-bubble
-cliff
-coral reef
-geyser
-lakeside
-promontory
-sandbar
-seashore
-valley
-volcano
-ballplayer
-groom
-scuba diver
-rapeseed
-daisy
-yellow lady's slipper
-corn
-acorn
-hip
-buckeye
-coral fungus
-agaric
-gyromitra
-stinkhorn
-earthstar
-hen-of-the-woods
-bolete
-ear
-toilet tissue
diff --git a/android-tflite/app/src/main/assets/graph.lite b/android-tflite/app/src/main/assets/graph.lite
deleted file mode 100755
index bd1c83a..0000000
Binary files a/android-tflite/app/src/main/assets/graph.lite and /dev/null differ
diff --git a/android-tflite/app/src/main/assets/labels.txt b/android-tflite/app/src/main/assets/labels.txt
deleted file mode 100755
index 79690b2..0000000
--- a/android-tflite/app/src/main/assets/labels.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-abra
-aerodactyl
-aipom
-alakazam
-ampharos
-arbok
-arcanine
-ariados
-articuno
-azumarill
diff --git a/android-tflite/app/src/main/java/com/example/android/tflitecamerademo/AutoFitTextureView.java b/android-tflite/app/src/main/java/com/example/android/tflitecamerademo/AutoFitTextureView.java
deleted file mode 100755
index f204590..0000000
--- a/android-tflite/app/src/main/java/com/example/android/tflitecamerademo/AutoFitTextureView.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Copyright 2017 The TensorFlow Authors. All Rights Reserved.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-==============================================================================*/
-
-package com.example.android.tflitecamerademo;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.view.TextureView;
-
-/** A {@link TextureView} that can be adjusted to a specified aspect ratio. */
-public class AutoFitTextureView extends TextureView {
-
- private int mRatioWidth = 0;
- private int mRatioHeight = 0;
-
- public AutoFitTextureView(Context context) {
- this(context, null);
- }
-
- public AutoFitTextureView(Context context, AttributeSet attrs) {
- this(context, attrs, 0);
- }
-
- public AutoFitTextureView(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- }
-
- /**
- * Sets the aspect ratio for this view. The size of the view will be measured based on the ratio
- * calculated from the parameters. Note that the actual sizes of parameters don't matter, that is,
- * calling setAspectRatio(2, 3) and setAspectRatio(4, 6) make the same result.
- *
- * @param width Relative horizontal size
- * @param height Relative vertical size
- */
- public void setAspectRatio(int width, int height) {
- if (width < 0 || height < 0) {
- throw new IllegalArgumentException("Size cannot be negative.");
- }
- mRatioWidth = width;
- mRatioHeight = height;
- requestLayout();
- }
-
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- super.onMeasure(widthMeasureSpec, heightMeasureSpec);
- int width = MeasureSpec.getSize(widthMeasureSpec);
- int height = MeasureSpec.getSize(heightMeasureSpec);
- if (0 == mRatioWidth || 0 == mRatioHeight) {
- setMeasuredDimension(width, height);
- } else {
- if (width < height * mRatioWidth / mRatioHeight) {
- setMeasuredDimension(width, width * mRatioHeight / mRatioWidth);
- } else {
- setMeasuredDimension(height * mRatioWidth / mRatioHeight, height);
- }
- }
- }
-}
diff --git a/android-tflite/app/src/main/java/com/example/android/tflitecamerademo/Camera2BasicFragment.java b/android-tflite/app/src/main/java/com/example/android/tflitecamerademo/Camera2BasicFragment.java
deleted file mode 100755
index 74737a8..0000000
--- a/android-tflite/app/src/main/java/com/example/android/tflitecamerademo/Camera2BasicFragment.java
+++ /dev/null
@@ -1,708 +0,0 @@
-/* Copyright 2017 The TensorFlow Authors. All Rights Reserved.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-==============================================================================*/
-
-package com.example.android.tflitecamerademo;
-
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.app.DialogFragment;
-import android.app.Fragment;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.content.res.Configuration;
-import android.graphics.Bitmap;
-import android.graphics.ImageFormat;
-import android.graphics.Matrix;
-import android.graphics.Point;
-import android.graphics.RectF;
-import android.graphics.SurfaceTexture;
-import android.hardware.camera2.CameraAccessException;
-import android.hardware.camera2.CameraCaptureSession;
-import android.hardware.camera2.CameraCharacteristics;
-import android.hardware.camera2.CameraDevice;
-import android.hardware.camera2.CameraManager;
-import android.hardware.camera2.CaptureRequest;
-import android.hardware.camera2.CaptureResult;
-import android.hardware.camera2.TotalCaptureResult;
-import android.hardware.camera2.params.StreamConfigurationMap;
-import android.media.ImageReader;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.HandlerThread;
-import android.support.annotation.NonNull;
-import android.support.v13.app.FragmentCompat;
-import android.support.v4.content.ContextCompat;
-import android.util.Log;
-import android.util.Size;
-import android.view.LayoutInflater;
-import android.view.Surface;
-import android.view.TextureView;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-import android.widget.Toast;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-import java.util.concurrent.Semaphore;
-import java.util.concurrent.TimeUnit;
-
-/** Basic fragments for the Camera. */
-public class Camera2BasicFragment extends Fragment
- implements FragmentCompat.OnRequestPermissionsResultCallback {
-
- /** Tag for the {@link Log}. */
- private static final String TAG = "TfLiteCameraDemo";
-
- private static final String FRAGMENT_DIALOG = "dialog";
-
- private static final String HANDLE_THREAD_NAME = "CameraBackground";
-
- private static final int PERMISSIONS_REQUEST_CODE = 1;
-
- private final Object lock = new Object();
- private boolean runClassifier = false;
- private boolean checkedPermissions = false;
- private TextView textView;
- private ImageClassifier classifier;
-
- /** Max preview width that is guaranteed by Camera2 API */
- private static final int MAX_PREVIEW_WIDTH = 1920;
-
- /** Max preview height that is guaranteed by Camera2 API */
- private static final int MAX_PREVIEW_HEIGHT = 1080;
-
- /**
- * {@link TextureView.SurfaceTextureListener} handles several lifecycle events on a {@link
- * TextureView}.
- */
- private final TextureView.SurfaceTextureListener surfaceTextureListener =
- new TextureView.SurfaceTextureListener() {
-
- @Override
- public void onSurfaceTextureAvailable(SurfaceTexture texture, int width, int height) {
- openCamera(width, height);
- }
-
- @Override
- public void onSurfaceTextureSizeChanged(SurfaceTexture texture, int width, int height) {
- configureTransform(width, height);
- }
-
- @Override
- public boolean onSurfaceTextureDestroyed(SurfaceTexture texture) {
- return true;
- }
-
- @Override
- public void onSurfaceTextureUpdated(SurfaceTexture texture) {}
- };
-
- /** ID of the current {@link CameraDevice}. */
- private String cameraId;
-
- /** An {@link AutoFitTextureView} for camera preview. */
- private AutoFitTextureView textureView;
-
- /** A {@link CameraCaptureSession } for camera preview. */
- private CameraCaptureSession captureSession;
-
- /** A reference to the opened {@link CameraDevice}. */
- private CameraDevice cameraDevice;
-
- /** The {@link android.util.Size} of camera preview. */
- private Size previewSize;
-
- /** {@link CameraDevice.StateCallback} is called when {@link CameraDevice} changes its state. */
- private final CameraDevice.StateCallback stateCallback =
- new CameraDevice.StateCallback() {
-
- @Override
- public void onOpened(@NonNull CameraDevice currentCameraDevice) {
- // This method is called when the camera is opened. We start camera preview here.
- cameraOpenCloseLock.release();
- cameraDevice = currentCameraDevice;
- createCameraPreviewSession();
- }
-
- @Override
- public void onDisconnected(@NonNull CameraDevice currentCameraDevice) {
- cameraOpenCloseLock.release();
- currentCameraDevice.close();
- cameraDevice = null;
- }
-
- @Override
- public void onError(@NonNull CameraDevice currentCameraDevice, int error) {
- cameraOpenCloseLock.release();
- currentCameraDevice.close();
- cameraDevice = null;
- Activity activity = getActivity();
- if (null != activity) {
- activity.finish();
- }
- }
- };
-
- /** An additional thread for running tasks that shouldn't block the UI. */
- private HandlerThread backgroundThread;
-
- /** A {@link Handler} for running tasks in the background. */
- private Handler backgroundHandler;
-
- /** An {@link ImageReader} that handles image capture. */
- private ImageReader imageReader;
-
- /** {@link CaptureRequest.Builder} for the camera preview */
- private CaptureRequest.Builder previewRequestBuilder;
-
- /** {@link CaptureRequest} generated by {@link #previewRequestBuilder} */
- private CaptureRequest previewRequest;
-
- /** A {@link Semaphore} to prevent the app from exiting before closing the camera. */
- private Semaphore cameraOpenCloseLock = new Semaphore(1);
-
- /** A {@link CameraCaptureSession.CaptureCallback} that handles events related to capture. */
- private CameraCaptureSession.CaptureCallback captureCallback =
- new CameraCaptureSession.CaptureCallback() {
-
- @Override
- public void onCaptureProgressed(
- @NonNull CameraCaptureSession session,
- @NonNull CaptureRequest request,
- @NonNull CaptureResult partialResult) {}
-
- @Override
- public void onCaptureCompleted(
- @NonNull CameraCaptureSession session,
- @NonNull CaptureRequest request,
- @NonNull TotalCaptureResult result) {}
- };
-
- /**
- * Shows a {@link Toast} on the UI thread for the classification results.
- *
- * @param text The message to show
- */
- private void showToast(final String text) {
- final Activity activity = getActivity();
- if (activity != null) {
- activity.runOnUiThread(
- new Runnable() {
- @Override
- public void run() {
- textView.setText(text);
- }
- });
- }
- }
-
- /**
- * Resizes image.
- *
- * Attempting to use too large a preview size could exceed the camera bus' bandwidth limitation,
- * resulting in gorgeous previews but the storage of garbage capture data.
- *
- * Given {@code choices} of {@code Size}s supported by a camera, choose the smallest one that is
- * at least as large as the respective texture view size, and that is at most as large as the
- * respective max size, and whose aspect ratio matches with the specified value. If such size
- * doesn't exist, choose the largest one that is at most as large as the respective max size, and
- * whose aspect ratio matches with the specified value.
- *
- * @param choices The list of sizes that the camera supports for the intended output class
- * @param textureViewWidth The width of the texture view relative to sensor coordinate
- * @param textureViewHeight The height of the texture view relative to sensor coordinate
- * @param maxWidth The maximum width that can be chosen
- * @param maxHeight The maximum height that can be chosen
- * @param aspectRatio The aspect ratio
- * @return The optimal {@code Size}, or an arbitrary one if none were big enough
- */
- private static Size chooseOptimalSize(
- Size[] choices,
- int textureViewWidth,
- int textureViewHeight,
- int maxWidth,
- int maxHeight,
- Size aspectRatio) {
-
- // Collect the supported resolutions that are at least as big as the preview Surface
- List bigEnough = new ArrayList<>();
- // Collect the supported resolutions that are smaller than the preview Surface
- List notBigEnough = new ArrayList<>();
- int w = aspectRatio.getWidth();
- int h = aspectRatio.getHeight();
- for (Size option : choices) {
- if (option.getWidth() <= maxWidth
- && option.getHeight() <= maxHeight
- && option.getHeight() == option.getWidth() * h / w) {
- if (option.getWidth() >= textureViewWidth && option.getHeight() >= textureViewHeight) {
- bigEnough.add(option);
- } else {
- notBigEnough.add(option);
- }
- }
- }
-
- // Pick the smallest of those big enough. If there is no one big enough, pick the
- // largest of those not big enough.
- if (bigEnough.size() > 0) {
- return Collections.min(bigEnough, new CompareSizesByArea());
- } else if (notBigEnough.size() > 0) {
- return Collections.max(notBigEnough, new CompareSizesByArea());
- } else {
- Log.e(TAG, "Couldn't find any suitable preview size");
- return choices[0];
- }
- }
-
- public static Camera2BasicFragment newInstance() {
- return new Camera2BasicFragment();
- }
-
- /** Layout the preview and buttons. */
- @Override
- public View onCreateView(
- LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
- return inflater.inflate(R.layout.fragment_camera2_basic, container, false);
- }
-
- /** Connect the buttons to their event handler. */
- @Override
- public void onViewCreated(final View view, Bundle savedInstanceState) {
- textureView = (AutoFitTextureView) view.findViewById(R.id.texture);
- textView = (TextView) view.findViewById(R.id.text);
- }
-
- /** Load the model and labels. */
- @Override
- public void onActivityCreated(Bundle savedInstanceState) {
- super.onActivityCreated(savedInstanceState);
- try {
- classifier = new ImageClassifier(getActivity());
- } catch (IOException e) {
- Log.e(TAG, "Failed to initialize an image classifier.");
- }
- startBackgroundThread();
- }
-
- @Override
- public void onResume() {
- super.onResume();
- startBackgroundThread();
-
- // When the screen is turned off and turned back on, the SurfaceTexture is already
- // available, and "onSurfaceTextureAvailable" will not be called. In that case, we can open
- // a camera and start preview from here (otherwise, we wait until the surface is ready in
- // the SurfaceTextureListener).
- if (textureView.isAvailable()) {
- openCamera(textureView.getWidth(), textureView.getHeight());
- } else {
- textureView.setSurfaceTextureListener(surfaceTextureListener);
- }
- }
-
- @Override
- public void onPause() {
- closeCamera();
- stopBackgroundThread();
- super.onPause();
- }
-
- @Override
- public void onDestroy() {
- classifier.close();
- super.onDestroy();
- }
-
- /**
- * Sets up member variables related to camera.
- *
- * @param width The width of available size for camera preview
- * @param height The height of available size for camera preview
- */
- private void setUpCameraOutputs(int width, int height) {
- Activity activity = getActivity();
- CameraManager manager = (CameraManager) activity.getSystemService(Context.CAMERA_SERVICE);
- try {
- for (String cameraId : manager.getCameraIdList()) {
- CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraId);
-
- // We don't use a front facing camera in this sample.
- Integer facing = characteristics.get(CameraCharacteristics.LENS_FACING);
- if (facing != null && facing == CameraCharacteristics.LENS_FACING_FRONT) {
- continue;
- }
-
- StreamConfigurationMap map =
- characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
- if (map == null) {
- continue;
- }
-
- // // For still image captures, we use the largest available size.
- Size largest =
- Collections.max(
- Arrays.asList(map.getOutputSizes(ImageFormat.JPEG)), new CompareSizesByArea());
- imageReader =
- ImageReader.newInstance(
- largest.getWidth(), largest.getHeight(), ImageFormat.JPEG, /*maxImages*/ 2);
-
- // Find out if we need to swap dimension to get the preview size relative to sensor
- // coordinate.
- int displayRotation = activity.getWindowManager().getDefaultDisplay().getRotation();
- // noinspection ConstantConditions
- /* Orientation of the camera sensor */
- int sensorOrientation = characteristics.get(CameraCharacteristics.SENSOR_ORIENTATION);
- boolean swappedDimensions = false;
- switch (displayRotation) {
- case Surface.ROTATION_0:
- case Surface.ROTATION_180:
- if (sensorOrientation == 90 || sensorOrientation == 270) {
- swappedDimensions = true;
- }
- break;
- case Surface.ROTATION_90:
- case Surface.ROTATION_270:
- if (sensorOrientation == 0 || sensorOrientation == 180) {
- swappedDimensions = true;
- }
- break;
- default:
- Log.e(TAG, "Display rotation is invalid: " + displayRotation);
- }
-
- Point displaySize = new Point();
- activity.getWindowManager().getDefaultDisplay().getSize(displaySize);
- int rotatedPreviewWidth = width;
- int rotatedPreviewHeight = height;
- int maxPreviewWidth = displaySize.x;
- int maxPreviewHeight = displaySize.y;
-
- if (swappedDimensions) {
- rotatedPreviewWidth = height;
- rotatedPreviewHeight = width;
- maxPreviewWidth = displaySize.y;
- maxPreviewHeight = displaySize.x;
- }
-
- if (maxPreviewWidth > MAX_PREVIEW_WIDTH) {
- maxPreviewWidth = MAX_PREVIEW_WIDTH;
- }
-
- if (maxPreviewHeight > MAX_PREVIEW_HEIGHT) {
- maxPreviewHeight = MAX_PREVIEW_HEIGHT;
- }
-
- previewSize =
- chooseOptimalSize(
- map.getOutputSizes(SurfaceTexture.class),
- rotatedPreviewWidth,
- rotatedPreviewHeight,
- maxPreviewWidth,
- maxPreviewHeight,
- largest);
-
- // We fit the aspect ratio of TextureView to the size of preview we picked.
- int orientation = getResources().getConfiguration().orientation;
- if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
- textureView.setAspectRatio(previewSize.getWidth(), previewSize.getHeight());
- } else {
- textureView.setAspectRatio(previewSize.getHeight(), previewSize.getWidth());
- }
-
- this.cameraId = cameraId;
- return;
- }
- } catch (CameraAccessException e) {
- e.printStackTrace();
- } catch (NullPointerException e) {
- // Currently an NPE is thrown when the Camera2API is used but not supported on the
- // device this code runs.
- ErrorDialog.newInstance(getString(R.string.camera_error))
- .show(getChildFragmentManager(), FRAGMENT_DIALOG);
- }
- }
-
- private String[] getRequiredPermissions() {
- Activity activity = getActivity();
- try {
- PackageInfo info =
- activity
- .getPackageManager()
- .getPackageInfo(activity.getPackageName(), PackageManager.GET_PERMISSIONS);
- String[] ps = info.requestedPermissions;
- if (ps != null && ps.length > 0) {
- return ps;
- } else {
- return new String[0];
- }
- } catch (Exception e) {
- return new String[0];
- }
- }
-
- /** Opens the camera specified by {@link Camera2BasicFragment#cameraId}. */
- private void openCamera(int width, int height) {
- if (!checkedPermissions && !allPermissionsGranted()) {
- FragmentCompat.requestPermissions(this, getRequiredPermissions(), PERMISSIONS_REQUEST_CODE);
- return;
- } else {
- checkedPermissions = true;
- }
- setUpCameraOutputs(width, height);
- configureTransform(width, height);
- Activity activity = getActivity();
- CameraManager manager = (CameraManager) activity.getSystemService(Context.CAMERA_SERVICE);
- try {
- if (!cameraOpenCloseLock.tryAcquire(2500, TimeUnit.MILLISECONDS)) {
- throw new RuntimeException("Time out waiting to lock camera opening.");
- }
- manager.openCamera(cameraId, stateCallback, backgroundHandler);
- } catch (CameraAccessException e) {
- e.printStackTrace();
- } catch (InterruptedException e) {
- throw new RuntimeException("Interrupted while trying to lock camera opening.", e);
- }
- }
-
- private boolean allPermissionsGranted() {
- for (String permission : getRequiredPermissions()) {
- if (ContextCompat.checkSelfPermission(getActivity(), permission)
- != PackageManager.PERMISSION_GRANTED) {
- return false;
- }
- }
- return true;
- }
-
- @Override
- public void onRequestPermissionsResult(
- int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
- super.onRequestPermissionsResult(requestCode, permissions, grantResults);
- }
-
- /** Closes the current {@link CameraDevice}. */
- private void closeCamera() {
- try {
- cameraOpenCloseLock.acquire();
- if (null != captureSession) {
- captureSession.close();
- captureSession = null;
- }
- if (null != cameraDevice) {
- cameraDevice.close();
- cameraDevice = null;
- }
- if (null != imageReader) {
- imageReader.close();
- imageReader = null;
- }
- } catch (InterruptedException e) {
- throw new RuntimeException("Interrupted while trying to lock camera closing.", e);
- } finally {
- cameraOpenCloseLock.release();
- }
- }
-
- /** Starts a background thread and its {@link Handler}. */
- private void startBackgroundThread() {
- backgroundThread = new HandlerThread(HANDLE_THREAD_NAME);
- backgroundThread.start();
- backgroundHandler = new Handler(backgroundThread.getLooper());
- synchronized (lock) {
- runClassifier = true;
- }
- backgroundHandler.post(periodicClassify);
- }
-
- /** Stops the background thread and its {@link Handler}. */
- private void stopBackgroundThread() {
- backgroundThread.quitSafely();
- try {
- backgroundThread.join();
- backgroundThread = null;
- backgroundHandler = null;
- synchronized (lock) {
- runClassifier = false;
- }
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
-
- /** Takes photos and classify them periodically. */
- private Runnable periodicClassify =
- new Runnable() {
- @Override
- public void run() {
- synchronized (lock) {
- if (runClassifier) {
- classifyFrame();
- }
- }
- backgroundHandler.post(periodicClassify);
- }
- };
-
- /** Creates a new {@link CameraCaptureSession} for camera preview. */
- private void createCameraPreviewSession() {
- try {
- SurfaceTexture texture = textureView.getSurfaceTexture();
- assert texture != null;
-
- // We configure the size of default buffer to be the size of camera preview we want.
- texture.setDefaultBufferSize(previewSize.getWidth(), previewSize.getHeight());
-
- // This is the output Surface we need to start preview.
- Surface surface = new Surface(texture);
-
- // We set up a CaptureRequest.Builder with the output Surface.
- previewRequestBuilder = cameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
- previewRequestBuilder.addTarget(surface);
-
- // Here, we create a CameraCaptureSession for camera preview.
- cameraDevice.createCaptureSession(
- Arrays.asList(surface),
- new CameraCaptureSession.StateCallback() {
-
- @Override
- public void onConfigured(@NonNull CameraCaptureSession cameraCaptureSession) {
- // The camera is already closed
- if (null == cameraDevice) {
- return;
- }
-
- // When the session is ready, we start displaying the preview.
- captureSession = cameraCaptureSession;
- try {
- // Auto focus should be continuous for camera preview.
- previewRequestBuilder.set(
- CaptureRequest.CONTROL_AF_MODE,
- CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE);
-
- // Finally, we start displaying the camera preview.
- previewRequest = previewRequestBuilder.build();
- captureSession.setRepeatingRequest(
- previewRequest, captureCallback, backgroundHandler);
- } catch (CameraAccessException e) {
- e.printStackTrace();
- }
- }
-
- @Override
- public void onConfigureFailed(@NonNull CameraCaptureSession cameraCaptureSession) {
- showToast("Failed");
- }
- },
- null);
- } catch (CameraAccessException e) {
- e.printStackTrace();
- }
- }
-
- /**
- * Configures the necessary {@link android.graphics.Matrix} transformation to `textureView`. This
- * method should be called after the camera preview size is determined in setUpCameraOutputs and
- * also the size of `textureView` is fixed.
- *
- * @param viewWidth The width of `textureView`
- * @param viewHeight The height of `textureView`
- */
- private void configureTransform(int viewWidth, int viewHeight) {
- Activity activity = getActivity();
- if (null == textureView || null == previewSize || null == activity) {
- return;
- }
- int rotation = activity.getWindowManager().getDefaultDisplay().getRotation();
- Matrix matrix = new Matrix();
- RectF viewRect = new RectF(0, 0, viewWidth, viewHeight);
- RectF bufferRect = new RectF(0, 0, previewSize.getHeight(), previewSize.getWidth());
- float centerX = viewRect.centerX();
- float centerY = viewRect.centerY();
- if (Surface.ROTATION_90 == rotation || Surface.ROTATION_270 == rotation) {
- bufferRect.offset(centerX - bufferRect.centerX(), centerY - bufferRect.centerY());
- matrix.setRectToRect(viewRect, bufferRect, Matrix.ScaleToFit.FILL);
- float scale =
- Math.max(
- (float) viewHeight / previewSize.getHeight(),
- (float) viewWidth / previewSize.getWidth());
- matrix.postScale(scale, scale, centerX, centerY);
- matrix.postRotate(90 * (rotation - 2), centerX, centerY);
- } else if (Surface.ROTATION_180 == rotation) {
- matrix.postRotate(180, centerX, centerY);
- }
- textureView.setTransform(matrix);
- }
-
- /** Classifies a frame from the preview stream. */
- private void classifyFrame() {
- if (classifier == null || getActivity() == null || cameraDevice == null) {
- showToast("Uninitialized Classifier or invalid context.");
- return;
- }
- Bitmap bitmap =
- textureView.getBitmap(ImageClassifier.DIM_IMG_SIZE_X, ImageClassifier.DIM_IMG_SIZE_Y);
- String textToShow = classifier.classifyFrame(bitmap);
- bitmap.recycle();
- showToast(textToShow);
- }
-
- /** Compares two {@code Size}s based on their areas. */
- private static class CompareSizesByArea implements Comparator {
-
- @Override
- public int compare(Size lhs, Size rhs) {
- // We cast here to ensure the multiplications won't overflow
- return Long.signum(
- (long) lhs.getWidth() * lhs.getHeight() - (long) rhs.getWidth() * rhs.getHeight());
- }
- }
-
- /** Shows an error message dialog. */
- public static class ErrorDialog extends DialogFragment {
-
- private static final String ARG_MESSAGE = "message";
-
- public static ErrorDialog newInstance(String message) {
- ErrorDialog dialog = new ErrorDialog();
- Bundle args = new Bundle();
- args.putString(ARG_MESSAGE, message);
- dialog.setArguments(args);
- return dialog;
- }
-
- @Override
- public Dialog onCreateDialog(Bundle savedInstanceState) {
- final Activity activity = getActivity();
- return new AlertDialog.Builder(activity)
- .setMessage(getArguments().getString(ARG_MESSAGE))
- .setPositiveButton(
- android.R.string.ok,
- new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialogInterface, int i) {
- activity.finish();
- }
- })
- .create();
- }
- }
-}
diff --git a/android-tflite/app/src/main/java/com/example/android/tflitecamerademo/CameraActivity.java b/android-tflite/app/src/main/java/com/example/android/tflitecamerademo/CameraActivity.java
deleted file mode 100755
index e7161dd..0000000
--- a/android-tflite/app/src/main/java/com/example/android/tflitecamerademo/CameraActivity.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright 2017 The TensorFlow Authors. All Rights Reserved.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-==============================================================================*/
-
-package com.example.android.tflitecamerademo;
-
-import android.app.Activity;
-import android.os.Bundle;
-
-/** Main {@code Activity} class for the Camera app. */
-public class CameraActivity extends Activity {
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_camera);
- if (null == savedInstanceState) {
- getFragmentManager()
- .beginTransaction()
- .replace(R.id.container, Camera2BasicFragment.newInstance())
- .commit();
- }
- }
-}
diff --git a/android-tflite/app/src/main/java/com/example/android/tflitecamerademo/ImageClassifier.java b/android-tflite/app/src/main/java/com/example/android/tflitecamerademo/ImageClassifier.java
deleted file mode 100755
index e95b832..0000000
--- a/android-tflite/app/src/main/java/com/example/android/tflitecamerademo/ImageClassifier.java
+++ /dev/null
@@ -1,222 +0,0 @@
-/* Copyright 2017 The TensorFlow Authors. All Rights Reserved.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-==============================================================================*/
-
-package com.example.android.tflitecamerademo;
-
-import android.app.Activity;
-import android.content.res.AssetFileDescriptor;
-import android.graphics.Bitmap;
-import android.os.SystemClock;
-import android.util.Log;
-import java.io.BufferedReader;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-import java.nio.MappedByteBuffer;
-import java.nio.channels.FileChannel;
-import java.util.AbstractMap;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
-import java.util.PriorityQueue;
-import org.tensorflow.lite.Interpreter;
-
-/** Classifies images with Tensorflow Lite. */
-public class ImageClassifier {
-
- /** Tag for the {@link Log}. */
- private static final String TAG = "TfLiteCameraDemo";
-
- /** Name of the model file stored in Assets. */
- private static final String MODEL_PATH = "inception.tflite";
-
- /** Name of the label file stored in Assets. */
- private static final String LABEL_PATH = "labels.txt";
-
- /** Number of results to show in the UI. */
- private static final int RESULTS_TO_SHOW = 3;
-
- /** Dimensions of inputs. */
- private static final int DIM_BATCH_SIZE = 1;
-
- private static final int DIM_PIXEL_SIZE = 3;
-
- static final int DIM_IMG_SIZE_X = 299;
- static final int DIM_IMG_SIZE_Y = 299;
-
- private static final int IMAGE_MEAN = 128;
- private static final float IMAGE_STD = 128.0f;
-
-
- /* Preallocated buffers for storing image data in. */
- private int[] intValues = new int[DIM_IMG_SIZE_X * DIM_IMG_SIZE_Y];
-
- /** An instance of the driver class to run model inference with Tensorflow Lite. */
- private Interpreter tflite;
-
- /** Labels corresponding to the output of the vision model. */
- private List labelList;
-
- /** A ByteBuffer to hold image data, to be feed into Tensorflow Lite as inputs. */
- private ByteBuffer imgData = null;
-
- /** An array to hold inference results, to be feed into Tensorflow Lite as outputs. */
- private float[][] labelProbArray = null;
- /** multi-stage low pass filter **/
- private float[][] filterLabelProbArray = null;
- private static final int FILTER_STAGES = 3;
- private static final float FILTER_FACTOR = 0.4f;
-
- private PriorityQueue> sortedLabels =
- new PriorityQueue<>(
- RESULTS_TO_SHOW,
- new Comparator>() {
- @Override
- public int compare(Map.Entry o1, Map.Entry o2) {
- return (o1.getValue()).compareTo(o2.getValue());
- }
- });
-
- /** Initializes an {@code ImageClassifier}. */
- ImageClassifier(Activity activity) throws IOException {
- tflite = new Interpreter(loadModelFile(activity));
- labelList = loadLabelList(activity);
- imgData =
- ByteBuffer.allocateDirect(
- 4 * DIM_BATCH_SIZE * DIM_IMG_SIZE_X * DIM_IMG_SIZE_Y * DIM_PIXEL_SIZE);
- imgData.order(ByteOrder.nativeOrder());
- labelProbArray = new float[1][labelList.size()];
- filterLabelProbArray = new float[FILTER_STAGES][labelList.size()];
- Log.d(TAG, "Created a Tensorflow Lite Image Classifier.");
- }
-
- /** Classifies a frame from the preview stream. */
- String classifyFrame(Bitmap bitmap) {
- if (tflite == null) {
- Log.e(TAG, "Image classifier has not been initialized; Skipped.");
- return "Uninitialized Classifier.";
- }
- convertBitmapToByteBuffer(bitmap);
- // Here's where the magic happens!!!
- long startTime = SystemClock.uptimeMillis();
- tflite.run(imgData, labelProbArray);
- long endTime = SystemClock.uptimeMillis();
- Log.d(TAG, "Timecost to run model inference: " + Long.toString(endTime - startTime));
-
- // smooth the results
- applyFilter();
-
- // print the results
- String textToShow = printTopKLabels();
- textToShow = Long.toString(endTime - startTime) + "ms" + textToShow;
- return textToShow;
- }
-
- void applyFilter(){
- int num_labels = labelList.size();
-
- // Low pass filter `labelProbArray` into the first stage of the filter.
- for(int j=0; j loadLabelList(Activity activity) throws IOException {
- List labelList = new ArrayList();
- BufferedReader reader =
- new BufferedReader(new InputStreamReader(activity.getAssets().open(LABEL_PATH)));
- String line;
- while ((line = reader.readLine()) != null) {
- labelList.add(line);
- }
- reader.close();
- return labelList;
- }
-
- /** Memory-map the model file in Assets. */
- private MappedByteBuffer loadModelFile(Activity activity) throws IOException {
- AssetFileDescriptor fileDescriptor = activity.getAssets().openFd(MODEL_PATH);
- FileInputStream inputStream = new FileInputStream(fileDescriptor.getFileDescriptor());
- FileChannel fileChannel = inputStream.getChannel();
- long startOffset = fileDescriptor.getStartOffset();
- long declaredLength = fileDescriptor.getDeclaredLength();
- return fileChannel.map(FileChannel.MapMode.READ_ONLY, startOffset, declaredLength);
- }
-
- /** Writes Image data into a {@code ByteBuffer}. */
- private void convertBitmapToByteBuffer(Bitmap bitmap) {
- if (imgData == null) {
- return;
- }
- imgData.rewind();
- bitmap.getPixels(intValues, 0, bitmap.getWidth(), 0, 0, bitmap.getWidth(), bitmap.getHeight());
- // Convert the image to floating point.
- int pixel = 0;
- long startTime = SystemClock.uptimeMillis();
- for (int i = 0; i < DIM_IMG_SIZE_X; ++i) {
- for (int j = 0; j < DIM_IMG_SIZE_Y; ++j) {
- final int val = intValues[pixel++];
- imgData.putFloat((((val >> 16) & 0xFF)-IMAGE_MEAN)/IMAGE_STD);
- imgData.putFloat((((val >> 8) & 0xFF)-IMAGE_MEAN)/IMAGE_STD);
- imgData.putFloat((((val) & 0xFF)-IMAGE_MEAN)/IMAGE_STD);
- }
- }
- long endTime = SystemClock.uptimeMillis();
- Log.d(TAG, "Timecost to put values into ByteBuffer: " + Long.toString(endTime - startTime));
- }
-
- /** Prints top-K labels, to be shown in UI as the results. */
- private String printTopKLabels() {
- for (int i = 0; i < labelList.size(); ++i) {
- sortedLabels.add(
- new AbstractMap.SimpleEntry<>(labelList.get(i), labelProbArray[0][i]));
- if (sortedLabels.size() > RESULTS_TO_SHOW) {
- sortedLabels.poll();
- }
- }
- String textToShow = "";
- final int size = sortedLabels.size();
- for (int i = 0; i < size; ++i) {
- Map.Entry label = sortedLabels.poll();
- textToShow = String.format("\n%s: %4.2f",label.getKey(),label.getValue()) + textToShow;
- }
- return textToShow;
- }
-}
diff --git a/android-tflite/app/src/main/res/drawable-hdpi/ic_action_info.png b/android-tflite/app/src/main/res/drawable-hdpi/ic_action_info.png
deleted file mode 100755
index e0a7000..0000000
Binary files a/android-tflite/app/src/main/res/drawable-hdpi/ic_action_info.png and /dev/null differ
diff --git a/android-tflite/app/src/main/res/drawable-hdpi/ic_launcher.png b/android-tflite/app/src/main/res/drawable-hdpi/ic_launcher.png
deleted file mode 100755
index c22509d..0000000
Binary files a/android-tflite/app/src/main/res/drawable-hdpi/ic_launcher.png and /dev/null differ
diff --git a/android-tflite/app/src/main/res/drawable-hdpi/tile.9.png b/android-tflite/app/src/main/res/drawable-hdpi/tile.9.png
deleted file mode 100755
index a84e3ef..0000000
Binary files a/android-tflite/app/src/main/res/drawable-hdpi/tile.9.png and /dev/null differ
diff --git a/android-tflite/app/src/main/res/drawable-mdpi/ic_action_info.png b/android-tflite/app/src/main/res/drawable-mdpi/ic_action_info.png
deleted file mode 100755
index 520c2dd..0000000
Binary files a/android-tflite/app/src/main/res/drawable-mdpi/ic_action_info.png and /dev/null differ
diff --git a/android-tflite/app/src/main/res/drawable-mdpi/ic_launcher.png b/android-tflite/app/src/main/res/drawable-mdpi/ic_launcher.png
deleted file mode 100755
index d68af39..0000000
Binary files a/android-tflite/app/src/main/res/drawable-mdpi/ic_launcher.png and /dev/null differ
diff --git a/android-tflite/app/src/main/res/drawable-xhdpi/ic_action_info.png b/android-tflite/app/src/main/res/drawable-xhdpi/ic_action_info.png
deleted file mode 100755
index 1347b09..0000000
Binary files a/android-tflite/app/src/main/res/drawable-xhdpi/ic_action_info.png and /dev/null differ
diff --git a/android-tflite/app/src/main/res/drawable-xhdpi/ic_launcher.png b/android-tflite/app/src/main/res/drawable-xhdpi/ic_launcher.png
deleted file mode 100755
index 15e419b..0000000
Binary files a/android-tflite/app/src/main/res/drawable-xhdpi/ic_launcher.png and /dev/null differ
diff --git a/android-tflite/app/src/main/res/drawable-xxhdpi/ic_action_info.png b/android-tflite/app/src/main/res/drawable-xxhdpi/ic_action_info.png
deleted file mode 100755
index fd93333..0000000
Binary files a/android-tflite/app/src/main/res/drawable-xxhdpi/ic_action_info.png and /dev/null differ
diff --git a/android-tflite/app/src/main/res/drawable-xxhdpi/ic_launcher.png b/android-tflite/app/src/main/res/drawable-xxhdpi/ic_launcher.png
deleted file mode 100755
index 342ce34..0000000
Binary files a/android-tflite/app/src/main/res/drawable-xxhdpi/ic_launcher.png and /dev/null differ
diff --git a/android-tflite/app/src/main/res/layout-land/fragment_camera2_basic.xml b/android-tflite/app/src/main/res/layout-land/fragment_camera2_basic.xml
deleted file mode 100755
index a84f1bb..0000000
--- a/android-tflite/app/src/main/res/layout-land/fragment_camera2_basic.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android-tflite/app/src/main/res/layout/activity_camera.xml b/android-tflite/app/src/main/res/layout/activity_camera.xml
deleted file mode 100755
index 286e549..0000000
--- a/android-tflite/app/src/main/res/layout/activity_camera.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
diff --git a/android-tflite/app/src/main/res/layout/fragment_camera2_basic.xml b/android-tflite/app/src/main/res/layout/fragment_camera2_basic.xml
deleted file mode 100755
index 15305c4..0000000
--- a/android-tflite/app/src/main/res/layout/fragment_camera2_basic.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android-tflite/app/src/main/res/values-sw600dp/template-dimens.xml b/android-tflite/app/src/main/res/values-sw600dp/template-dimens.xml
deleted file mode 100755
index 22074a2..0000000
--- a/android-tflite/app/src/main/res/values-sw600dp/template-dimens.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
-
- @dimen/margin_huge
- @dimen/margin_medium
-
-
diff --git a/android-tflite/app/src/main/res/values-sw600dp/template-styles.xml b/android-tflite/app/src/main/res/values-sw600dp/template-styles.xml
deleted file mode 100755
index 03d1974..0000000
--- a/android-tflite/app/src/main/res/values-sw600dp/template-styles.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
-
diff --git a/android-tflite/app/src/main/res/values-v11/template-styles.xml b/android-tflite/app/src/main/res/values-v11/template-styles.xml
deleted file mode 100755
index 8c1ea66..0000000
--- a/android-tflite/app/src/main/res/values-v11/template-styles.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/android-tflite/app/src/main/res/values-v21/base-colors.xml b/android-tflite/app/src/main/res/values-v21/base-colors.xml
deleted file mode 100755
index 8b6ec3f..0000000
--- a/android-tflite/app/src/main/res/values-v21/base-colors.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
diff --git a/android-tflite/app/src/main/res/values-v21/base-template-styles.xml b/android-tflite/app/src/main/res/values-v21/base-template-styles.xml
deleted file mode 100755
index c778e4f..0000000
--- a/android-tflite/app/src/main/res/values-v21/base-template-styles.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/android-tflite/app/src/main/res/values/base-strings.xml b/android-tflite/app/src/main/res/values/base-strings.xml
deleted file mode 100755
index 0564dfd..0000000
--- a/android-tflite/app/src/main/res/values/base-strings.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-
- TensorDex
-
-
-
-
diff --git a/android-tflite/app/src/main/res/values/colors.xml b/android-tflite/app/src/main/res/values/colors.xml
deleted file mode 100755
index 4b75d2b..0000000
--- a/android-tflite/app/src/main/res/values/colors.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
- #cc4285f4
-
diff --git a/android-tflite/app/src/main/res/values/strings.xml b/android-tflite/app/src/main/res/values/strings.xml
deleted file mode 100755
index a08ec3e..0000000
--- a/android-tflite/app/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
- Picture
- Info
- This sample needs camera permission.
- This device doesn\'t support Camera2 API.
- NN:On
- NN:Off
- Use NNAPI
-
diff --git a/android-tflite/app/src/main/res/values/styles.xml b/android-tflite/app/src/main/res/values/styles.xml
deleted file mode 100755
index 3f3bdfb..0000000
--- a/android-tflite/app/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
diff --git a/android-tflite/app/src/main/res/values/template-dimens.xml b/android-tflite/app/src/main/res/values/template-dimens.xml
deleted file mode 100755
index 39e710b..0000000
--- a/android-tflite/app/src/main/res/values/template-dimens.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
- 4dp
- 8dp
- 16dp
- 32dp
- 64dp
-
-
-
- @dimen/margin_medium
- @dimen/margin_medium
-
-
diff --git a/android-tflite/app/src/main/res/values/template-styles.xml b/android-tflite/app/src/main/res/values/template-styles.xml
deleted file mode 100755
index 6e7d593..0000000
--- a/android-tflite/app/src/main/res/values/template-styles.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android-tflite/build.gradle b/android-tflite/build.gradle
deleted file mode 100755
index 151ee7f..0000000
--- a/android-tflite/build.gradle
+++ /dev/null
@@ -1,24 +0,0 @@
-// Top-level build file where you can add configuration options common to all sub-projects/modules.
-
-buildscript {
- repositories {
- jcenter()
- google()
- }
- dependencies {
- classpath 'com.android.tools.build:gradle:3.3.2'
-
- // NOTE: Do not place your application dependencies here; they belong
- // in the individual module build.gradle files
- }
-}
-
-allprojects {
- repositories {
- jcenter()
- }
-}
-
-task clean(type: Delete) {
- delete rootProject.buildDir
-}
diff --git a/android-tflite/gradle.properties b/android-tflite/gradle.properties
deleted file mode 100755
index aac7c9b..0000000
--- a/android-tflite/gradle.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# Project-wide Gradle settings.
-
-# IDE (e.g. Android Studio) users:
-# Gradle settings configured through the IDE *will override*
-# any settings specified in this file.
-
-# For more details on how to configure your build environment visit
-# http://www.gradle.org/docs/current/userguide/build_environment.html
-
-# Specifies the JVM arguments used for the daemon process.
-# The setting is particularly useful for tweaking memory settings.
-org.gradle.jvmargs=-Xmx1536m
-
-# When configured, Gradle will run in incubating parallel mode.
-# This option should only be used with decoupled projects. More details, visit
-# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
-# org.gradle.parallel=true
diff --git a/android-tflite/gradle/wrapper/gradle-wrapper.jar b/android-tflite/gradle/wrapper/gradle-wrapper.jar
deleted file mode 100755
index 13372ae..0000000
Binary files a/android-tflite/gradle/wrapper/gradle-wrapper.jar and /dev/null differ
diff --git a/android-tflite/gradle/wrapper/gradle-wrapper.properties b/android-tflite/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100755
index e2bdfe9..0000000
--- a/android-tflite/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-#Sun Apr 14 18:55:46 CDT 2019
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip
diff --git a/android-tflite/gradlew b/android-tflite/gradlew
deleted file mode 100755
index 9d82f78..0000000
--- a/android-tflite/gradlew
+++ /dev/null
@@ -1,160 +0,0 @@
-#!/usr/bin/env bash
-
-##############################################################################
-##
-## Gradle start up script for UN*X
-##
-##############################################################################
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS=""
-
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
-
-warn ( ) {
- echo "$*"
-}
-
-die ( ) {
- echo
- echo "$*"
- echo
- exit 1
-}
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-case "`uname`" in
- CYGWIN* )
- cygwin=true
- ;;
- Darwin* )
- darwin=true
- ;;
- MINGW* )
- msys=true
- ;;
-esac
-
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >/dev/null
-APP_HOME="`pwd -P`"
-cd "$SAVED" >/dev/null
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
- if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
- # IBM's JDK on AIX uses strange locations for the executables
- JAVACMD="$JAVA_HOME/jre/sh/java"
- else
- JAVACMD="$JAVA_HOME/bin/java"
- fi
- if [ ! -x "$JAVACMD" ] ; then
- die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
- fi
-else
- JAVACMD="java"
- which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-fi
-
-# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
- MAX_FD_LIMIT=`ulimit -H -n`
- if [ $? -eq 0 ] ; then
- if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
- MAX_FD="$MAX_FD_LIMIT"
- fi
- ulimit -n $MAX_FD
- if [ $? -ne 0 ] ; then
- warn "Could not set maximum file descriptor limit: $MAX_FD"
- fi
- else
- warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
- fi
-fi
-
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
- GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
- APP_HOME=`cygpath --path --mixed "$APP_HOME"`
- CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
- JAVACMD=`cygpath --unix "$JAVACMD"`
-
- # We build the pattern for arguments to be converted via cygpath
- ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
- SEP=""
- for dir in $ROOTDIRSRAW ; do
- ROOTDIRS="$ROOTDIRS$SEP$dir"
- SEP="|"
- done
- OURCYGPATTERN="(^($ROOTDIRS))"
- # Add a user-defined pattern to the cygpath arguments
- if [ "$GRADLE_CYGPATTERN" != "" ] ; then
- OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
- fi
- # Now convert the arguments - kludge to limit ourselves to /bin/sh
- i=0
- for arg in "$@" ; do
- CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
- CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
-
- if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
- eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
- else
- eval `echo args$i`="\"$arg\""
- fi
- i=$((i+1))
- done
- case $i in
- (0) set -- ;;
- (1) set -- "$args0" ;;
- (2) set -- "$args0" "$args1" ;;
- (3) set -- "$args0" "$args1" "$args2" ;;
- (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
- (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
- (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
- (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
- (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
- (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
- esac
-fi
-
-# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
-function splitJvmOpts() {
- JVM_OPTS=("$@")
-}
-eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
-JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
-
-exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/android-tflite/gradlew.bat b/android-tflite/gradlew.bat
deleted file mode 100755
index 8a0b282..0000000
--- a/android-tflite/gradlew.bat
+++ /dev/null
@@ -1,90 +0,0 @@
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto init
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:init
-@rem Get command-line arguments, handling Windowz variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-if "%@eval[2+2]" == "4" goto 4NT_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-goto execute
-
-:4NT_args
-@rem Get arguments from the 4NT Shell from JP Software
-set CMD_LINE_ARGS=%$
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
diff --git a/android-tflite/settings.gradle b/android-tflite/settings.gradle
deleted file mode 100755
index e7b4def..0000000
--- a/android-tflite/settings.gradle
+++ /dev/null
@@ -1 +0,0 @@
-include ':app'
diff --git a/ModelTraining/graphResults.py b/graphResults.py
old mode 100755
new mode 100644
similarity index 100%
rename from ModelTraining/graphResults.py
rename to graphResults.py
diff --git a/iOS-tflite/.gitignore b/iOS-tflite/.gitignore
deleted file mode 100755
index a21ec83..0000000
--- a/iOS-tflite/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/data/*.txt
-/data/*lite
diff --git a/iOS-tflite/AppIcon.xcassets/.gitignore b/iOS-tflite/AppIcon.xcassets/.gitignore
deleted file mode 100755
index 7b0d62b..0000000
--- a/iOS-tflite/AppIcon.xcassets/.gitignore
+++ /dev/null
@@ -1,78 +0,0 @@
-# Xcode
-#
-# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
-
-## Build generated
-build/
-DerivedData/
-
-## Various settings
-*.pbxuser
-!default.pbxuser
-*.mode1v3
-!default.mode1v3
-*.mode2v3
-!default.mode2v3
-*.perspectivev3
-!default.perspectivev3
-xcuserdata/
-
-## Other
-*.moved-aside
-*.xccheckout
-*.xcscmblueprint
-
-## Obj-C/Swift specific
-*.hmap
-*.ipa
-*.dSYM.zip
-*.dSYM
-
-## Playgrounds
-timeline.xctimeline
-playground.xcworkspace
-
-# Swift Package Manager
-#
-# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
-# Packages/
-# Package.pins
-# Package.resolved
-.build/
-
-# CocoaPods
-#
-# We recommend against adding the Pods directory to your .gitignore. However
-# you should judge for yourself, the pros and cons are mentioned at:
-# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
-#
-# Pods/
-#
-# Add this line if you want to avoid checking in source code from the Xcode workspace
-# *.xcworkspace
-
-# Carthage
-#
-# Add this line if you want to avoid checking in source code from Carthage dependencies.
-# Carthage/Checkouts
-
-Carthage/Build
-
-# fastlane
-#
-# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
-# screenshots whenever they are needed.
-# For more information about the recommended setup visit:
-# https://docs.fastlane.tools/best-practices/source-control/#source-control
-
-fastlane/report.xml
-fastlane/Preview.html
-fastlane/screenshots/**/*.png
-fastlane/test_output
-
-# Code Injection
-#
-# After new code Injection tools there's a generated folder /iOSInjectionProject
-# https://github.com/johnno1962/injectionforxcode
-
-iOSInjectionProject/
diff --git a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/Contents.json b/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/Contents.json
deleted file mode 100755
index 1c25084..0000000
--- a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/Contents.json
+++ /dev/null
@@ -1,116 +0,0 @@
-{
- "images": [
- {
- "size": "20x20",
- "idiom": "iphone",
- "filename": "logo-2.png",
- "scale": "2x"
- },
- {
- "size": "20x20",
- "idiom": "iphone",
- "filename": "logo-3.png",
- "scale": "3x"
- },
- {
- "size": "29x29",
- "idiom": "iphone",
- "filename": "logo-4.png",
- "scale": "2x"
- },
- {
- "size": "29x29",
- "idiom": "iphone",
- "filename": "logo-5.png",
- "scale": "3x"
- },
- {
- "size": "40x40",
- "idiom": "iphone",
- "filename": "logo-6.png",
- "scale": "2x"
- },
- {
- "size": "40x40",
- "idiom": "iphone",
- "filename": "logo-7.png",
- "scale": "3x"
- },
- {
- "size": "60x60",
- "idiom": "iphone",
- "filename": "logo-1.png",
- "scale": "2x"
- },
- {
- "size": "60x60",
- "idiom": "iphone",
- "filename": "logo.png",
- "scale": "3x"
- },
- {
- "size": "20x20",
- "idiom": "ipad",
- "filename": "logo-8.png",
- "scale": "1x"
- },
- {
- "size": "20x20",
- "idiom": "ipad",
- "filename": "logo-9.png",
- "scale": "2x"
- },
- {
- "size": "29x29",
- "idiom": "ipad",
- "filename": "logo-10.png",
- "scale": "1x"
- },
- {
- "size": "29x29",
- "idiom": "ipad",
- "filename": "logo-11.png",
- "scale": "2x"
- },
- {
- "size": "40x40",
- "idiom": "ipad",
- "filename": "logo-12.png",
- "scale": "1x"
- },
- {
- "size": "40x40",
- "idiom": "ipad",
- "filename": "logo-13.png",
- "scale": "2x"
- },
- {
- "size": "76x76",
- "idiom": "ipad",
- "filename": "logo-14.png",
- "scale": "1x"
- },
- {
- "size": "76x76",
- "idiom": "ipad",
- "filename": "logo-15.png",
- "scale": "2x"
- },
- {
- "size": "83.5x83.5",
- "idiom": "ipad",
- "filename": "logo-16.png",
- "scale": "2x"
- },
- {
- "size": "1024x1024",
- "idiom": "ios-marketing",
- "filename": "logo-17.png",
- "scale": "1x"
- }
- ],
- "info": {
- "version": 1,
- "author": "xcode"
- }
-}
\ No newline at end of file
diff --git a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-1.png b/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-1.png
deleted file mode 100755
index 7eee5db..0000000
Binary files a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-1.png and /dev/null differ
diff --git a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-10.png b/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-10.png
deleted file mode 100755
index 26e797d..0000000
Binary files a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-10.png and /dev/null differ
diff --git a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-11.png b/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-11.png
deleted file mode 100755
index 10b514b..0000000
Binary files a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-11.png and /dev/null differ
diff --git a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-12.png b/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-12.png
deleted file mode 100755
index a533018..0000000
Binary files a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-12.png and /dev/null differ
diff --git a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-13.png b/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-13.png
deleted file mode 100755
index 9f1e45e..0000000
Binary files a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-13.png and /dev/null differ
diff --git a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-14.png b/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-14.png
deleted file mode 100755
index 3db1736..0000000
Binary files a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-14.png and /dev/null differ
diff --git a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-15.png b/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-15.png
deleted file mode 100755
index 5a8e969..0000000
Binary files a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-15.png and /dev/null differ
diff --git a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-16.png b/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-16.png
deleted file mode 100755
index 4354bf8..0000000
Binary files a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-16.png and /dev/null differ
diff --git a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-17.png b/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-17.png
deleted file mode 100755
index 34cdf5d..0000000
Binary files a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-17.png and /dev/null differ
diff --git a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-2.png b/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-2.png
deleted file mode 100755
index a533018..0000000
Binary files a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-2.png and /dev/null differ
diff --git a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-3.png b/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-3.png
deleted file mode 100755
index 985cbcc..0000000
Binary files a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-3.png and /dev/null differ
diff --git a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-4.png b/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-4.png
deleted file mode 100755
index 10b514b..0000000
Binary files a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-4.png and /dev/null differ
diff --git a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-5.png b/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-5.png
deleted file mode 100755
index 65aa946..0000000
Binary files a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-5.png and /dev/null differ
diff --git a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-6.png b/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-6.png
deleted file mode 100755
index 9f1e45e..0000000
Binary files a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-6.png and /dev/null differ
diff --git a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-7.png b/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-7.png
deleted file mode 100755
index 7eee5db..0000000
Binary files a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-7.png and /dev/null differ
diff --git a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-8.png b/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-8.png
deleted file mode 100755
index b73b2bc..0000000
Binary files a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-8.png and /dev/null differ
diff --git a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-9.png b/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-9.png
deleted file mode 100755
index a533018..0000000
Binary files a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo-9.png and /dev/null differ
diff --git a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo.png b/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo.png
deleted file mode 100755
index 13a71eb..0000000
Binary files a/iOS-tflite/AppIcon.xcassets/AppIcon.appiconset/logo.png and /dev/null differ
diff --git a/iOS-tflite/AppIcon.xcassets/Contents.json b/iOS-tflite/AppIcon.xcassets/Contents.json
deleted file mode 100755
index 121dee6..0000000
--- a/iOS-tflite/AppIcon.xcassets/Contents.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "info": {
- "version": 1,
- "author": "xcode"
- }
-}
\ No newline at end of file
diff --git a/iOS-tflite/CameraExampleAppDelegate.h b/iOS-tflite/CameraExampleAppDelegate.h
deleted file mode 100755
index 55891c3..0000000
--- a/iOS-tflite/CameraExampleAppDelegate.h
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 2017 The TensorFlow Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#import
-
-@interface CameraExampleAppDelegate : UIResponder
-
-@property(strong, nonatomic) UIWindow* window;
-
-@end
diff --git a/iOS-tflite/CameraExampleAppDelegate.m b/iOS-tflite/CameraExampleAppDelegate.m
deleted file mode 100755
index 128266d..0000000
--- a/iOS-tflite/CameraExampleAppDelegate.m
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2017 The TensorFlow Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#import "CameraExampleAppDelegate.h"
-
-@implementation CameraExampleAppDelegate
-
-@synthesize window = _window;
-
-- (BOOL)application:(UIApplication *)application
- didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
- [self.window makeKeyAndVisible];
- return YES;
-}
-
-- (void)applicationWillResignActive:(UIApplication *)application {
- [[UIApplication sharedApplication] setIdleTimerDisabled:NO];
-}
-
-- (void)applicationDidEnterBackground:(UIApplication *)application {
-}
-
-- (void)applicationWillEnterForeground:(UIApplication *)application {
-}
-
-- (void)applicationDidBecomeActive:(UIApplication *)application {
- [[UIApplication sharedApplication] setIdleTimerDisabled:YES];
-}
-
-- (void)applicationWillTerminate:(UIApplication *)application {
-}
-
-@end
diff --git a/iOS-tflite/CameraExampleViewController.h b/iOS-tflite/CameraExampleViewController.h
deleted file mode 100755
index a195d46..0000000
--- a/iOS-tflite/CameraExampleViewController.h
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2017 The TensorFlow Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#import
-#import
-#import
-
-#include
-
-#include "tensorflow/contrib/lite/kernels/register.h"
-#include "tensorflow/contrib/lite/model.h"
-
-typedef struct {
- int width;
- int height;
- int channels;
- std::vector data;
-} image_data;
-
-
-@interface CameraExampleViewController
- : UIViewController {
- IBOutlet UIView* previewView;
- CALayer* previewLayer;
- UIView* flashView;
- NSMutableArray* labelLayers;
-
-
- std::vector labels;
- std::unique_ptr model;
- tflite::ops::builtin::BuiltinOpResolver resolver;
- std::unique_ptr interpreter;
-
- double total_latency;
- int total_count;
-
- int photos_index;
- PHFetchResult *photos;
-
- UIImage* input_image;
- UIImage* display_image;
-}
-@property(strong, nonatomic) CATextLayer* predictionTextLayer;
-
-- (IBAction)takePicture:(id)sender;
-@end
-
diff --git a/iOS-tflite/CameraExampleViewController.mm b/iOS-tflite/CameraExampleViewController.mm
deleted file mode 100755
index 3d3e17f..0000000
--- a/iOS-tflite/CameraExampleViewController.mm
+++ /dev/null
@@ -1,467 +0,0 @@
-// Copyright 2017 The TensorFlow Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#import "CameraExampleViewController.h"
-#import
-#import
-#import
-#import
-
-#include
-#include
-#include
-#include
-
-#include "tensorflow/contrib/lite/kernels/register.h"
-#include "tensorflow/contrib/lite/model.h"
-#include "tensorflow/contrib/lite/string_util.h"
-#include "tensorflow/contrib/lite/mutable_op_resolver.h"
-
-#define LOG(x) std::cerr
-
-// If you have your own model, modify this to the file name, and make sure
-// you've added the file to your app resources too.
-static NSString* model_file_name = @"graph";
-static NSString* model_file_type = @"lite";
-
-// If you have your own model, point this to the labels file.
-static NSString* labels_file_name = @"labels";
-static NSString* labels_file_type = @"txt";
-
-// These dimensions need to match those the model was trained with.
-static const int wanted_input_width = 224;
-static const int wanted_input_height = 224;
-static const int wanted_input_channels = 3;
-
-static NSString* FilePathForResourceName(NSString* name, NSString* extension) {
- NSString* file_path = [[NSBundle mainBundle] pathForResource:name ofType:extension];
- if (file_path == NULL) {
- LOG(FATAL) << "Couldn't find '" << [name UTF8String] << "." << [extension UTF8String]
- << "' in bundle.";
- }
- return file_path;
-}
-
-static void LoadLabels(NSString* file_name, NSString* file_type,
- std::vector* label_strings) {
- NSString* labels_path = FilePathForResourceName(file_name, file_type);
- if (!labels_path) {
- LOG(ERROR) << "Failed to find model proto at" << [file_name UTF8String]
- << [file_type UTF8String];
- }
- std::ifstream t;
- t.open([labels_path UTF8String]);
- std::string line;
- while (t) {
- std::getline(t, line);
- if (line.length()){
- label_strings->push_back(line);
- }
- }
- t.close();
-}
-
-// Returns the top N confidence values over threshold in the provided vector,
-// sorted by confidence in descending order.
-static void GetTopN(const float* prediction, const int prediction_size, const int num_results,
- const float threshold, std::vector>* top_results) {
- // Will contain top N results in ascending order.
- std::priority_queue, std::vector>,
- std::greater>>
- top_result_pq;
-
- const long count = prediction_size;
- for (int i = 0; i < count; ++i) {
- const float value = prediction[i];
- // Only add it if it beats the threshold and has a chance at being in
- // the top N.
- if (value < threshold) {
- continue;
- }
-
- top_result_pq.push(std::pair(value, i));
-
- // If at capacity, kick the smallest value out.
- if (top_result_pq.size() > num_results) {
- top_result_pq.pop();
- }
- }
-
- // Copy to output vector and reverse into descending order.
- while (!top_result_pq.empty()) {
- top_results->push_back(top_result_pq.top());
- top_result_pq.pop();
- }
- std::reverse(top_results->begin(), top_results->end());
-}
-
-@interface CameraExampleViewController (InternalMethods)
-- (void)teardownAVCapture;
-@end
-
-@implementation CameraExampleViewController
-
-- (void) attachPreviewLayer{
- photos_index = 0;
- photos = nil;
- previewLayer = [[CALayer alloc] init];
-
- [previewLayer setBackgroundColor:[[UIColor blackColor] CGColor]];
- CALayer* rootLayer = [previewView layer];
- [rootLayer setMasksToBounds:YES];
- [previewLayer setFrame:[rootLayer bounds]];
- [rootLayer addSublayer:previewLayer];
-
- [self UpdatePhoto];
-}
-
-- (void)UpdatePhoto{
- PHAsset* asset;
- if (photos==nil || photos_index >= photos.count){
- [self updatePhotosLibrary];
- photos_index=0;
- }
- if (photos.count){
- asset = photos[photos_index];
- photos_index += 1;
- input_image = [self convertImageFromAsset:asset
- targetSize:CGSizeMake(wanted_input_width, wanted_input_height)
- mode:PHImageContentModeAspectFill];
- display_image = [self convertImageFromAsset:asset
- targetSize:CGSizeMake(asset.pixelWidth,asset.pixelHeight)
- mode:PHImageContentModeAspectFit];
- [self DrawImage];
- }
-
- if (input_image != nil){
- image_data image = [self CGImageToPixels:input_image.CGImage];
- [self inputImageToModel:image];
- [self runModel];
- }
-}
-
-- (void)DrawImage{
- CGFloat view_height = 800;
- CGFloat view_width = 600;
-
- UIGraphicsBeginImageContextWithOptions(CGSizeMake(view_width, view_height), NO, 0.0);
- CGContextRef context = UIGraphicsGetCurrentContext();
- UIGraphicsPushContext(context);
-
- float scale = view_width/display_image.size.width;
-
- if (display_image.size.height*scale > view_height){
- scale = view_height/display_image.size.height;
- }
-
- CGPoint origin = CGPointMake((view_width - display_image.size.width*scale) / 2.0f,
- (view_height - display_image.size.height*scale) / 2.0f);
- [display_image drawInRect:CGRectMake(origin.x, origin.y,
- display_image.size.width*scale,
- display_image.size.height*scale)];
- UIGraphicsPopContext();
- display_image = UIGraphicsGetImageFromCurrentImageContext();
- UIGraphicsEndImageContext();
- previewLayer.contents = (id) display_image.CGImage;
-}
-
-- (void)teardownAVCapture {
- [previewLayer removeFromSuperlayer];
-}
-
-- (void) updatePhotosLibrary{
- PHFetchOptions *fetchOptions = [[PHFetchOptions alloc] init];
- fetchOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]];
- photos = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options:fetchOptions];
-}
-
-- (UIImage *) convertImageFromAsset:(PHAsset *)asset
- targetSize:(CGSize) targetSize
- mode:(PHImageContentMode) mode{
- PHImageManager * manager = [[PHImageManager alloc] init];
- PHImageRequestOptions * options = [[PHImageRequestOptions alloc] init];
- NSMutableArray * images = [[NSMutableArray alloc] init];
- NSMutableArray * infos = [[NSMutableArray alloc] init];
-
- options.synchronous = TRUE;
-
- [manager requestImageForAsset:asset
- targetSize:targetSize
- contentMode:mode
- options:options
- resultHandler:^(UIImage *image, NSDictionary *info){
- [images addObject:image];
- [infos addObject:info];
- }
- ];
-
- UIImage *result = images[0];
-
- return result;
-}
-
-- (AVCaptureVideoOrientation)avOrientationForDeviceOrientation:
- (UIDeviceOrientation)deviceOrientation {
- AVCaptureVideoOrientation result = (AVCaptureVideoOrientation)(deviceOrientation);
- if (deviceOrientation == UIDeviceOrientationLandscapeLeft)
- result = AVCaptureVideoOrientationLandscapeRight;
- else if (deviceOrientation == UIDeviceOrientationLandscapeRight)
- result = AVCaptureVideoOrientationLandscapeLeft;
- return result;
-}
-
-- (image_data)CGImageToPixels:(CGImage *)image {
- image_data result;
- result.width = (int)CGImageGetWidth(image);
- result.height = (int)CGImageGetHeight(image);
- result.channels = 4;
-
- CGColorSpaceRef color_space = CGColorSpaceCreateDeviceRGB();
- const int bytes_per_row = (result.width * result.channels);
- const int bytes_in_image = (bytes_per_row * result.height);
- result.data = std::vector(bytes_in_image);
- const int bits_per_component = 8;
-
- CGContextRef context =
- CGBitmapContextCreate(result.data.data(), result.width, result.height, bits_per_component, bytes_per_row,
- color_space, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
- CGColorSpaceRelease(color_space);
- CGContextDrawImage(context, CGRectMake(0, 0, result.width, result.height), image);
- CGContextRelease(context);
-
- return result;
-}
-
-
-
-- (IBAction)takePicture:(id)sender {
- [self UpdatePhoto];
-}
-
-- (void)inputImageToModel:(image_data)image{
- float* out = interpreter->typed_input_tensor(0);
-
- const float input_mean = 127.5f;
- const float input_std = 127.5f;
- assert(image.channels >= wanted_input_channels);
- uint8_t* in = image.data.data();
-
- for (int y = 0; y < wanted_input_height; ++y) {
- const int in_y = (y * image.height) / wanted_input_height;
- uint8_t* in_row = in + (in_y * image.width * image.channels);
- float* out_row = out + (y * wanted_input_width * wanted_input_channels);
- for (int x = 0; x < wanted_input_width; ++x) {
- const int in_x = (x * image.width) / wanted_input_width;
- uint8_t* in_pixel = in_row + (in_x * image.channels);
- float* out_pixel = out_row + (x * wanted_input_channels);
- for (int c = 0; c < wanted_input_channels; ++c) {
- out_pixel[c] = (in_pixel[c] - input_mean) / input_std;
- }
- }
- }
-}
-
-- (void)runModel {
- double startTimestamp = [[NSDate new] timeIntervalSince1970];
- if (interpreter->Invoke() != kTfLiteOk) {
- LOG(FATAL) << "Failed to invoke!";
- }
- double endTimestamp = [[NSDate new] timeIntervalSince1970];
- total_latency += (endTimestamp - startTimestamp);
- total_count += 1;
- NSLog(@"Time: %.4lf, avg: %.4lf, count: %d", endTimestamp - startTimestamp,
- total_latency / total_count, total_count);
-
- const int output_size = (int)labels.size();
- const int kNumResults = 5;
- const float kThreshold = 0.1f;
-
- std::vector> top_results;
-
- float* output = interpreter->typed_output_tensor(0);
- GetTopN(output, output_size, kNumResults, kThreshold, &top_results);
-
- std::vector> newValues;
- for (const auto& result : top_results) {
- std::pair item;
- item.first = result.first;
- item.second = labels[result.second];
-
- newValues.push_back(item);
- }
- dispatch_async(dispatch_get_main_queue(), ^(void) {
- [self setPredictionValues:newValues];
- });
-}
-
-- (void)dealloc {
- [self teardownAVCapture];
-}
-
-- (void)didReceiveMemoryWarning {
- [super didReceiveMemoryWarning];
-}
-
-- (void)viewDidLoad {
- [super viewDidLoad];
- labelLayers = [[NSMutableArray alloc] init];
-
- NSString* graph_path = FilePathForResourceName(model_file_name, model_file_type);
- model = tflite::FlatBufferModel::BuildFromFile([graph_path UTF8String]);
- if (!model) {
- LOG(FATAL) << "Failed to mmap model " << graph_path;
- }
- LOG(INFO) << "Loaded model " << graph_path;
- model->error_reporter();
- LOG(INFO) << "resolved reporter";
-
- tflite::ops::builtin::BuiltinOpResolver resolver;
- LoadLabels(labels_file_name, labels_file_type, &labels);
-
- tflite::InterpreterBuilder(*model, resolver)(&interpreter);
- if (!interpreter) {
- LOG(FATAL) << "Failed to construct interpreter";
- }
- if (interpreter->AllocateTensors() != kTfLiteOk) {
- LOG(FATAL) << "Failed to allocate tensors!";
- }
-
- [self attachPreviewLayer];
-}
-
-- (void)viewDidUnload {
- [super viewDidUnload];
-}
-
-- (void)viewWillAppear:(BOOL)animated {
- [super viewWillAppear:animated];
-}
-
-- (void)viewDidAppear:(BOOL)animated {
- [super viewDidAppear:animated];
-}
-
-- (void)viewWillDisappear:(BOOL)animated {
- [super viewWillDisappear:animated];
-}
-
-- (void)viewDidDisappear:(BOOL)animated {
- [super viewDidDisappear:animated];
-}
-
-- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
- return (interfaceOrientation == UIInterfaceOrientationPortrait);
-}
-
-- (BOOL)prefersStatusBarHidden {
- return YES;
-}
-
-- (void)setPredictionValues:(std::vector>)newValues {
-
- const float leftMargin = 10.0f;
- const float topMargin = 10.0f;
-
- const float valueWidth = 48.0f;
- const float valueHeight = 18.0f;
-
- const float labelWidth = 246.0f;
- const float labelHeight = 18.0f;
-
- const float labelMarginX = 5.0f;
- const float labelMarginY = 5.0f;
-
- [self removeAllLabelLayers];
-
- int labelCount = 0;
- for (const auto& item : newValues) {
- std::string label = item.second;
- const float value = item.first;
- const float originY = topMargin + ((labelHeight + labelMarginY) * labelCount);
- const int valuePercentage = (int)roundf(value * 100.0f);
-
- const float valueOriginX = leftMargin;
- NSString* valueText = [NSString stringWithFormat:@"%d%%", valuePercentage];
-
- [self addLabelLayerWithText:valueText
- originX:valueOriginX
- originY:originY
- width:valueWidth
- height:valueHeight
- alignment:kCAAlignmentRight];
-
- const float labelOriginX = (leftMargin + valueWidth + labelMarginX);
-
- NSString *nsLabel = [NSString stringWithCString:label.c_str()
- encoding:[NSString defaultCStringEncoding]];
- [self addLabelLayerWithText:[nsLabel capitalizedString]
- originX:labelOriginX
- originY:originY
- width:labelWidth
- height:labelHeight
- alignment:kCAAlignmentLeft];
-
- labelCount += 1;
- if (labelCount > 4) {
- break;
- }
- }
-}
-
-- (void)removeAllLabelLayers {
- for (CATextLayer* layer in labelLayers) {
- [layer removeFromSuperlayer];
- }
- [labelLayers removeAllObjects];
-}
-
-- (void)addLabelLayerWithText:(NSString*)text
- originX:(float)originX
- originY:(float)originY
- width:(float)width
- height:(float)height
- alignment:(NSString*)alignment {
- CFTypeRef font = (CFTypeRef) @"Menlo-Regular";
- const float fontSize = 12.0;
- const float marginSizeX = 5.0f;
- const float marginSizeY = 2.0f;
-
- const CGRect backgroundBounds = CGRectMake(originX, originY, width, height);
- const CGRect textBounds = CGRectMake((originX + marginSizeX), (originY + marginSizeY),
- (width - (marginSizeX * 2)), (height - (marginSizeY * 2)));
-
- CATextLayer* background = [CATextLayer layer];
- [background setBackgroundColor:[UIColor blackColor].CGColor];
- [background setOpacity:0.5f];
- [background setFrame:backgroundBounds];
- background.cornerRadius = 5.0f;
-
- [[self.view layer] addSublayer:background];
- [labelLayers addObject:background];
-
- CATextLayer* layer = [CATextLayer layer];
- [layer setForegroundColor:[UIColor whiteColor].CGColor];
- [layer setFrame:textBounds];
- [layer setAlignmentMode:alignment];
- [layer setWrapped:YES];
- [layer setFont:font];
- [layer setFontSize:fontSize];
- layer.contentsScale = [[UIScreen mainScreen] scale];
- [layer setString:text];
-
- [[self.view layer] addSublayer:layer];
- [labelLayers addObject:layer];
-}
-
-@end
diff --git a/iOS-tflite/Info.plist b/iOS-tflite/Info.plist
deleted file mode 100755
index 068487f..0000000
--- a/iOS-tflite/Info.plist
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
-
- CFBundleDevelopmentRegion
- en
- CFBundleDisplayName
- tflite_photos_example
- CFBundleExecutable
- ${EXECUTABLE_NAME}
- CFBundleIdentifier
- $(PRODUCT_BUNDLE_IDENTIFIER)
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- ${PRODUCT_NAME}
- CFBundlePackageType
- APPL
- CFBundleShortVersionString
- 1.0
- CFBundleSignature
- ????
- CFBundleVersion
- 1.0
- LSRequiresIPhoneOS
-
- NSCameraUsageDescription
- Capture images to detect object
- NSPhotoLibraryAddUsageDescription
- This app requires access to the photo library.
- NSPhotoLibraryUsageDescription
- This App classifies images from your photos library.
- UIMainStoryboardFile
- MainStoryboard_iPhone
- UIRequiresFullScreen
-
- UIStatusBarHidden
-
- UISupportedInterfaceOrientations
-
- UIInterfaceOrientationPortrait
-
- UISupportedInterfaceOrientations~ipad
-
- UIInterfaceOrientationPortrait
-
-
-
diff --git a/iOS-tflite/MainStoryboard_iPhone.storyboard b/iOS-tflite/MainStoryboard_iPhone.storyboard
deleted file mode 100755
index 1c829e6..0000000
--- a/iOS-tflite/MainStoryboard_iPhone.storyboard
+++ /dev/null
@@ -1,56 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
- Menlo-Regular
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/iOS-tflite/Podfile b/iOS-tflite/Podfile
deleted file mode 100755
index 75323f3..0000000
--- a/iOS-tflite/Podfile
+++ /dev/null
@@ -1,5 +0,0 @@
-platform :ios, '8.0'
-inhibit_all_warnings!
-
-target 'tflite_photos_example'
- pod 'TensorFlowLite'
diff --git a/iOS-tflite/data/.gitignore b/iOS-tflite/data/.gitignore
deleted file mode 100755
index e69de29..0000000
diff --git a/iOS-tflite/main.mm b/iOS-tflite/main.mm
deleted file mode 100755
index 1a9e542..0000000
--- a/iOS-tflite/main.mm
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2017 The TensorFlow Authors. All Rights Reserved.
-
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#import
-
-#import "CameraExampleAppDelegate.h"
-
-int main(int argc, char* argv[]) {
- int retVal = 0;
-
- @autoreleasepool {
- retVal =
- UIApplicationMain(argc, argv, nil, NSStringFromClass([CameraExampleAppDelegate class]));
- }
- return retVal;
-}
diff --git a/iOS-tflite/tflite_photos_example.xcodeproj/project.pbxproj b/iOS-tflite/tflite_photos_example.xcodeproj/project.pbxproj
deleted file mode 100755
index b122682..0000000
--- a/iOS-tflite/tflite_photos_example.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,395 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 46;
- objects = {
-
-/* Begin PBXBuildFile section */
- 1C3C9DCC1ED3AB4200B8B5FA /* main.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1C3C9DCA1ED3AB4200B8B5FA /* main.mm */; };
- 1C99111C1ED3B0E600A6BFB9 /* MainStoryboard_iPhone.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1C99111B1ED3B0E600A6BFB9 /* MainStoryboard_iPhone.storyboard */; };
- 1CA5EB931ED3ABFB00247A34 /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1CA5EB921ED3ABFB00247A34 /* CoreMedia.framework */; };
- 1CB47D491ED3AD1700DF7666 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1CB47D481ED3AD1700DF7666 /* AVFoundation.framework */; };
- 1CDB2D491ED3A9CD007929E9 /* CameraExampleAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1CDB2D431ED3A9CD007929E9 /* CameraExampleAppDelegate.m */; };
- 1CDB2D4A1ED3A9CD007929E9 /* CameraExampleViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1CDB2D451ED3A9CD007929E9 /* CameraExampleViewController.mm */; };
- 1CDB2D4E1ED3AA35007929E9 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 1CDB2D4D1ED3AA35007929E9 /* Info.plist */; };
- 2E12E3C82087CB8600FD9D4A /* graph.lite in Resources */ = {isa = PBXBuildFile; fileRef = 2E12E3C72087CB8600FD9D4A /* graph.lite */; };
- 2E92D8912088011F005F343A /* AppIcon.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 2E92D8902088011F005F343A /* AppIcon.xcassets */; };
- 2ED6BE3A207C23E000D3BF6F /* Photos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2ED6BE39207C23E000D3BF6F /* Photos.framework */; };
- AB30E2C6AA6147C90F25FFD2 /* libPods-tflite_photos_example.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2FF33ED907C01C2D2EA78BBB /* libPods-tflite_photos_example.a */; };
- AC1F82661FBA3CBD0052BA77 /* labels.txt in Resources */ = {isa = PBXBuildFile; fileRef = AC1F82641FBA3CBD0052BA77 /* labels.txt */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXFileReference section */
- 1C0D73481ECCC41B008C1DAB /* CoreImage.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreImage.framework; path = System/Library/Frameworks/CoreImage.framework; sourceTree = SDKROOT; };
- 1C0D734A1ECCC460008C1DAB /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
- 1C3C9DCA1ED3AB4200B8B5FA /* main.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = main.mm; sourceTree = ""; };
- 1C564C0D1ED3A92E00087306 /* tflite_photos_example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = tflite_photos_example.app; sourceTree = BUILT_PRODUCTS_DIR; };
- 1C99111B1ED3B0E600A6BFB9 /* MainStoryboard_iPhone.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = MainStoryboard_iPhone.storyboard; sourceTree = ""; };
- 1CA45FFE1ECCC356002FA6A4 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
- 1CA5EB921ED3ABFB00247A34 /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; };
- 1CB47D481ED3AD1700DF7666 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
- 1CDB2D421ED3A9CD007929E9 /* CameraExampleAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CameraExampleAppDelegate.h; sourceTree = ""; };
- 1CDB2D431ED3A9CD007929E9 /* CameraExampleAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CameraExampleAppDelegate.m; sourceTree = ""; };
- 1CDB2D441ED3A9CD007929E9 /* CameraExampleViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CameraExampleViewController.h; sourceTree = ""; };
- 1CDB2D451ED3A9CD007929E9 /* CameraExampleViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CameraExampleViewController.mm; sourceTree = ""; };
- 1CDB2D4D1ED3AA35007929E9 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
- 2E12E3C72087CB8600FD9D4A /* graph.lite */ = {isa = PBXFileReference; lastKnownFileType = file; path = graph.lite; sourceTree = ""; };
- 2E92D8902088011F005F343A /* AppIcon.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = AppIcon.xcassets; sourceTree = ""; };
- 2ED6BE39207C23E000D3BF6F /* Photos.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Photos.framework; path = System/Library/Frameworks/Photos.framework; sourceTree = SDKROOT; };
- 2FF33ED907C01C2D2EA78BBB /* libPods-tflite_photos_example.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-tflite_photos_example.a"; sourceTree = BUILT_PRODUCTS_DIR; };
- 3BA8BF92C84895BFE59D8236 /* libPods-tflite_camera_example.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-tflite_camera_example.a"; sourceTree = BUILT_PRODUCTS_DIR; };
- 3BC5BE4BBD09374D3E98F082 /* Pods-tflite_camera_example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-tflite_camera_example.debug.xcconfig"; path = "Pods/Target Support Files/Pods-tflite_camera_example/Pods-tflite_camera_example.debug.xcconfig"; sourceTree = ""; };
- 55ED318E8D29C8AFEF03DF1E /* Pods-tflite_camera_example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-tflite_camera_example.release.xcconfig"; path = "Pods/Target Support Files/Pods-tflite_camera_example/Pods-tflite_camera_example.release.xcconfig"; sourceTree = ""; };
- 7B75D9AAB5B7890D81174E26 /* Pods-tflite_photos_example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-tflite_photos_example.release.xcconfig"; path = "Pods/Target Support Files/Pods-tflite_photos_example/Pods-tflite_photos_example.release.xcconfig"; sourceTree = ""; };
- 92A36BF8A50AF5A52BB51EA5 /* Pods-tflite_photos_example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-tflite_photos_example.debug.xcconfig"; path = "Pods/Target Support Files/Pods-tflite_photos_example/Pods-tflite_photos_example.debug.xcconfig"; sourceTree = ""; };
- AC1F82641FBA3CBD0052BA77 /* labels.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = labels.txt; sourceTree = ""; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- 1C564C0A1ED3A92E00087306 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 2ED6BE3A207C23E000D3BF6F /* Photos.framework in Frameworks */,
- 1CB47D491ED3AD1700DF7666 /* AVFoundation.framework in Frameworks */,
- 1CA5EB931ED3ABFB00247A34 /* CoreMedia.framework in Frameworks */,
- AB30E2C6AA6147C90F25FFD2 /* libPods-tflite_photos_example.a in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 24D7686C331131624F4454A0 /* Frameworks */ = {
- isa = PBXGroup;
- children = (
- 2ED6BE39207C23E000D3BF6F /* Photos.framework */,
- 1CB47D481ED3AD1700DF7666 /* AVFoundation.framework */,
- 1CA5EB921ED3ABFB00247A34 /* CoreMedia.framework */,
- 1C0D734A1ECCC460008C1DAB /* CoreGraphics.framework */,
- 1C0D73481ECCC41B008C1DAB /* CoreImage.framework */,
- 1CA45FFE1ECCC356002FA6A4 /* UIKit.framework */,
- 3BA8BF92C84895BFE59D8236 /* libPods-tflite_camera_example.a */,
- 2FF33ED907C01C2D2EA78BBB /* libPods-tflite_photos_example.a */,
- );
- name = Frameworks;
- sourceTree = "";
- };
- 3E9FC355632FB928EA23BEED /* Pods */ = {
- isa = PBXGroup;
- children = (
- 3BC5BE4BBD09374D3E98F082 /* Pods-tflite_camera_example.debug.xcconfig */,
- 55ED318E8D29C8AFEF03DF1E /* Pods-tflite_camera_example.release.xcconfig */,
- 92A36BF8A50AF5A52BB51EA5 /* Pods-tflite_photos_example.debug.xcconfig */,
- 7B75D9AAB5B7890D81174E26 /* Pods-tflite_photos_example.release.xcconfig */,
- );
- name = Pods;
- sourceTree = "";
- };
- 591157921CF4011C00C31E3A = {
- isa = PBXGroup;
- children = (
- 2E92D8902088011F005F343A /* AppIcon.xcassets */,
- 1C99111B1ED3B0E600A6BFB9 /* MainStoryboard_iPhone.storyboard */,
- 1C3C9DCA1ED3AB4200B8B5FA /* main.mm */,
- 1CDB2D4D1ED3AA35007929E9 /* Info.plist */,
- 1CDB2D421ED3A9CD007929E9 /* CameraExampleAppDelegate.h */,
- 1CDB2D431ED3A9CD007929E9 /* CameraExampleAppDelegate.m */,
- 1CDB2D441ED3A9CD007929E9 /* CameraExampleViewController.h */,
- 1CDB2D451ED3A9CD007929E9 /* CameraExampleViewController.mm */,
- 59A3CFF31CF4E68100C4259F /* data */,
- 5911579C1CF4011C00C31E3A /* Products */,
- 3E9FC355632FB928EA23BEED /* Pods */,
- 24D7686C331131624F4454A0 /* Frameworks */,
- );
- sourceTree = "";
- };
- 5911579C1CF4011C00C31E3A /* Products */ = {
- isa = PBXGroup;
- children = (
- 1C564C0D1ED3A92E00087306 /* tflite_photos_example.app */,
- );
- name = Products;
- sourceTree = "";
- };
- 59A3CFF31CF4E68100C4259F /* data */ = {
- isa = PBXGroup;
- children = (
- 2E12E3C72087CB8600FD9D4A /* graph.lite */,
- AC1F82641FBA3CBD0052BA77 /* labels.txt */,
- );
- path = data;
- sourceTree = "";
- };
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
- 1C564C0C1ED3A92E00087306 /* tflite_photos_example */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 1C564C351ED3A92E00087306 /* Build configuration list for PBXNativeTarget "tflite_photos_example" */;
- buildPhases = (
- 66DAEAAEE9EF6550C3A061E0 /* [CP] Check Pods Manifest.lock */,
- 1C564C091ED3A92E00087306 /* Sources */,
- 1C564C0A1ED3A92E00087306 /* Frameworks */,
- 1C564C0B1ED3A92E00087306 /* Resources */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = tflite_photos_example;
- productName = tflite_camera_example;
- productReference = 1C564C0D1ED3A92E00087306 /* tflite_photos_example.app */;
- productType = "com.apple.product-type.application";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- 591157931CF4011C00C31E3A /* Project object */ = {
- isa = PBXProject;
- attributes = {
- LastSwiftUpdateCheck = 0830;
- LastUpgradeCheck = 0830;
- ORGANIZATIONNAME = Google;
- TargetAttributes = {
- 1C564C0C1ED3A92E00087306 = {
- CreatedOnToolsVersion = 8.3.2;
- DevelopmentTeam = EQHXZ8M8AV;
- ProvisioningStyle = Manual;
- };
- };
- };
- buildConfigurationList = 591157961CF4011C00C31E3A /* Build configuration list for PBXProject "tflite_photos_example" */;
- compatibilityVersion = "Xcode 3.2";
- developmentRegion = English;
- hasScannedForEncodings = 0;
- knownRegions = (
- en,
- Base,
- );
- mainGroup = 591157921CF4011C00C31E3A;
- productRefGroup = 5911579C1CF4011C00C31E3A /* Products */;
- projectDirPath = "";
- projectRoot = "";
- targets = (
- 1C564C0C1ED3A92E00087306 /* tflite_photos_example */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
- 1C564C0B1ED3A92E00087306 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 2E92D8912088011F005F343A /* AppIcon.xcassets in Resources */,
- 2E12E3C82087CB8600FD9D4A /* graph.lite in Resources */,
- 1C99111C1ED3B0E600A6BFB9 /* MainStoryboard_iPhone.storyboard in Resources */,
- 1CDB2D4E1ED3AA35007929E9 /* Info.plist in Resources */,
- AC1F82661FBA3CBD0052BA77 /* labels.txt in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXShellScriptBuildPhase section */
- 66DAEAAEE9EF6550C3A061E0 /* [CP] Check Pods Manifest.lock */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputPaths = (
- "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
- "${PODS_ROOT}/Manifest.lock",
- );
- name = "[CP] Check Pods Manifest.lock";
- outputPaths = (
- "$(DERIVED_FILE_DIR)/Pods-tflite_photos_example-checkManifestLockResult.txt",
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
- showEnvVarsInLog = 0;
- };
-/* End PBXShellScriptBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
- 1C564C091ED3A92E00087306 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 1CDB2D4A1ED3A9CD007929E9 /* CameraExampleViewController.mm in Sources */,
- 1CDB2D491ED3A9CD007929E9 /* CameraExampleAppDelegate.m in Sources */,
- 1C3C9DCC1ED3AB4200B8B5FA /* main.mm in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin XCBuildConfiguration section */
- 1C564C361ED3A92E00087306 /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 92A36BF8A50AF5A52BB51EA5 /* Pods-tflite_photos_example.debug.xcconfig */;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
- CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
- DEVELOPMENT_TEAM = EQHXZ8M8AV;
- INFOPLIST_FILE = Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 10.3;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = "com.pf.tf-photos-example";
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
- SWIFT_OPTIMIZATION_LEVEL = "-Onone";
- SWIFT_VERSION = 3.0;
- };
- name = Debug;
- };
- 1C564C371ED3A92E00087306 /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 7B75D9AAB5B7890D81174E26 /* Pods-tflite_photos_example.release.xcconfig */;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
- CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
- DEVELOPMENT_TEAM = EQHXZ8M8AV;
- INFOPLIST_FILE = Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 10.3;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = "com.pf.tf-photos-example";
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
- SWIFT_VERSION = 3.0;
- };
- name = Release;
- };
- 591157B01CF4011D00C31E3A /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
- CLANG_CXX_LIBRARY = "libc++";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_WARN_BOOL_CONVERSION = YES;
- CLANG_WARN_CONSTANT_CONVERSION = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_EMPTY_BODY = YES;
- CLANG_WARN_ENUM_CONVERSION = YES;
- CLANG_WARN_INFINITE_RECURSION = YES;
- CLANG_WARN_INT_CONVERSION = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
- CLANG_WARN_UNREACHABLE_CODE = YES;
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- COPY_PHASE_STRIP = NO;
- DEBUG_INFORMATION_FORMAT = dwarf;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- ENABLE_TESTABILITY = YES;
- GCC_C_LANGUAGE_STANDARD = gnu99;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_NO_COMMON_BLOCKS = YES;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "DEBUG=1",
- "$(inherited)",
- );
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_UNDECLARED_SELECTOR = YES;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GCC_WARN_UNUSED_FUNCTION = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- HEADER_SEARCH_PATHS = (
- "$(inherited)",
- ../../../../../../,
- ../../../downloads/flatbuffers/include/,
- ../../../downloads/eigen/,
- ../../../downloads/,
- );
- IPHONEOS_DEPLOYMENT_TARGET = 8.0;
- MTL_ENABLE_DEBUG_INFO = YES;
- ONLY_ACTIVE_ARCH = YES;
- SDKROOT = iphoneos;
- TARGETED_DEVICE_FAMILY = "1,2";
- };
- name = Debug;
- };
- 591157B11CF4011D00C31E3A /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
- CLANG_CXX_LIBRARY = "libc++";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_WARN_BOOL_CONVERSION = YES;
- CLANG_WARN_CONSTANT_CONVERSION = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_EMPTY_BODY = YES;
- CLANG_WARN_ENUM_CONVERSION = YES;
- CLANG_WARN_INFINITE_RECURSION = YES;
- CLANG_WARN_INT_CONVERSION = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
- CLANG_WARN_UNREACHABLE_CODE = YES;
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- COPY_PHASE_STRIP = NO;
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- ENABLE_NS_ASSERTIONS = NO;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- GCC_C_LANGUAGE_STANDARD = gnu99;
- GCC_NO_COMMON_BLOCKS = YES;
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_UNDECLARED_SELECTOR = YES;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GCC_WARN_UNUSED_FUNCTION = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- HEADER_SEARCH_PATHS = (
- "$(inherited)",
- ../../../../../../,
- ../../../downloads/flatbuffers/include/,
- ../../../downloads/eigen/,
- ../../../downloads/,
- );
- IPHONEOS_DEPLOYMENT_TARGET = 8.0;
- MTL_ENABLE_DEBUG_INFO = NO;
- SDKROOT = iphoneos;
- TARGETED_DEVICE_FAMILY = "1,2";
- VALIDATE_PRODUCT = YES;
- };
- name = Release;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- 1C564C351ED3A92E00087306 /* Build configuration list for PBXNativeTarget "tflite_photos_example" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 1C564C361ED3A92E00087306 /* Debug */,
- 1C564C371ED3A92E00087306 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 591157961CF4011C00C31E3A /* Build configuration list for PBXProject "tflite_photos_example" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 591157B01CF4011D00C31E3A /* Debug */,
- 591157B11CF4011D00C31E3A /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
-/* End XCConfigurationList section */
- };
- rootObject = 591157931CF4011C00C31E3A /* Project object */;
-}
diff --git a/ModelTraining/pokemon.csv b/pokemon.csv
old mode 100755
new mode 100644
similarity index 100%
rename from ModelTraining/pokemon.csv
rename to pokemon.csv