Add tensorflow model and test file to development image #39

This commit is contained in:
Michael Mayer 2018-11-08 16:41:14 +01:00
parent ac31141669
commit 133c7964ad
10 changed files with 34 additions and 19 deletions

View file

@ -1,4 +1,4 @@
FROM photoprism/development:20181107 FROM photoprism/development:20181108
# Set up project directory # Set up project directory
WORKDIR "/go/src/github.com/photoprism/photoprism" WORKDIR "/go/src/github.com/photoprism/photoprism"

View file

@ -13,7 +13,7 @@ GOIMPORTS=goimports
BINARY_NAME=photoprism BINARY_NAME=photoprism
DOCKER_TAG=`date -u +%Y%m%d` DOCKER_TAG=`date -u +%Y%m%d`
all: tensorflow-model dep js build all: download dep js build
install: install-bin install-assets install-config install: install-bin install-assets install-config
install-bin: install-bin:
cp $(BINARY_NAME) /usr/local/bin/$(BINARY_NAME) cp $(BINARY_NAME) /usr/local/bin/$(BINARY_NAME)
@ -50,8 +50,8 @@ test-coverage:
clean: clean:
$(GOCLEAN) $(GOCLEAN)
rm -f $(BINARY_NAME) rm -f $(BINARY_NAME)
tensorflow-model: download:
scripts/download-tf-model.sh scripts/download-inception.sh
deploy-photoprism: deploy-photoprism:
scripts/docker-build.sh photoprism $(DOCKER_TAG) scripts/docker-build.sh photoprism $(DOCKER_TAG)
scripts/docker-push.sh photoprism $(DOCKER_TAG) scripts/docker-push.sh photoprism $(DOCKER_TAG)

View file

@ -70,6 +70,12 @@ ENV NODE_ENV production
RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 777 "$GOPATH" RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 777 "$GOPATH"
# Download TensorFlow model and test files
RUN rm -rf /tmp/* && mkdir -p /tmp/photoprism
RUN wget "https://storage.googleapis.com/download.tensorflow.org/models/inception5h.zip" -O /tmp/photoprism/inception.zip
RUN wget "https://www.dropbox.com/s/na9p9wwt98l7m5b/import.zip?dl=1" -O /tmp/photoprism/testdata.zip
# Install goimports
RUN env GO111MODULE=off /usr/local/go/bin/go get golang.org/x/tools/cmd/goimports RUN env GO111MODULE=off /usr/local/go/bin/go get golang.org/x/tools/cmd/goimports
# Expose HTTP port # Expose HTTP port

View file

@ -1,4 +1,4 @@
FROM photoprism/development:20181107 as build FROM photoprism/development:20181108 as build
# Set up project directory # Set up project directory
WORKDIR "/go/src/github.com/photoprism/photoprism" WORKDIR "/go/src/github.com/photoprism/photoprism"

View file

@ -1,4 +1,4 @@
FROM photoprism/development:20181107 FROM photoprism/development:20181108
# Install Python and TensorFlow # Install Python and TensorFlow
RUN apt-get update && apt-get install -y --no-install-recommends \ RUN apt-get update && apt-get install -y --no-install-recommends \

2
go.mod
View file

@ -50,5 +50,5 @@ require (
gopkg.in/go-playground/assert.v1 v1.2.1 // indirect gopkg.in/go-playground/assert.v1 v1.2.1 // indirect
gopkg.in/go-playground/validator.v8 v8.18.2 // indirect gopkg.in/go-playground/validator.v8 v8.18.2 // indirect
gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce // indirect gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce // indirect
gopkg.in/yaml.v2 v2.2.1 gopkg.in/yaml.v2 v2.2.1 // indirect
) )

View file

@ -19,11 +19,11 @@ import (
const testDataPath = "testdata" const testDataPath = "testdata"
const testDataURL = "https://www.dropbox.com/s/na9p9wwt98l7m5b/import.zip?dl=1" const testDataURL = "https://www.dropbox.com/s/na9p9wwt98l7m5b/import.zip?dl=1"
const testDataHash = "ed3bdb2fe86ea662bc863b63e219b47b8d9a74024757007f7979887d" const testDataHash = "1a59b358b80221ab3e76efb683ad72402f0b0844"
const testConfigFile = "../../configs/photoprism.yml" const testConfigFile = "../../configs/photoprism.yml"
var darktableCli = "/usr/bin/darktable-cli" var darktableCli = "/usr/bin/darktable-cli"
var testDataZip = GetExpandedFilename(testDataPath + "/import.zip") var testDataZip = "/tmp/photoprism/testdata.zip"
var assetsPath = GetExpandedFilename("../../assets") var assetsPath = GetExpandedFilename("../../assets")
var thumbnailsPath = GetExpandedFilename(testDataPath + "/thumbnails") var thumbnailsPath = GetExpandedFilename(testDataPath + "/thumbnails")
var originalsPath = GetExpandedFilename(testDataPath + "/originals") var originalsPath = GetExpandedFilename(testDataPath + "/originals")
@ -213,6 +213,8 @@ func unzip(src, dest string) ([]string, error) {
} }
func downloadFile(filepath string, url string) (err error) { func downloadFile(filepath string, url string) (err error) {
os.MkdirAll("/tmp/photoprism", os.ModePerm)
// Create the file // Create the file
out, err := os.Create(filepath) out, err := os.Create(filepath)
if err != nil { if err != nil {

View file

@ -93,7 +93,7 @@ func (t *TensorFlow) loadModel() error {
} }
// Load inception model // Load inception model
model, err := ioutil.ReadFile(t.modelPath + "/tensorflow_inception_graph.pb") model, err := ioutil.ReadFile(t.modelPath + "/inception/tensorflow_inception_graph.pb")
if err != nil { if err != nil {
return err return err
} }
@ -103,7 +103,7 @@ func (t *TensorFlow) loadModel() error {
} }
// Load labels // Load labels
labelsFile, err := os.Open(t.modelPath + "/imagenet_comp_graph_label_strings.txt") labelsFile, err := os.Open(t.modelPath + "/inception/imagenet_comp_graph_label_strings.txt")
if err != nil { if err != nil {
return err return err
} }

15
scripts/download-inception.sh Executable file
View file

@ -0,0 +1,15 @@
#!/usr/bin/env bash
FILENAME="/tmp/photoprism/inception.zip"
if [[ ! -e assets/tensorflow/inception/tensorflow_inception_graph.pb ]]; then
if [[ ! -e ${FILENAME} ]]; then
mkdir -p /tmp/photoprism
wget "https://storage.googleapis.com/download.tensorflow.org/models/inception5h.zip" -O ${FILENAME}
fi
mkdir -p assets/tensorflow/inception
unzip ${FILENAME} -d assets/tensorflow/inception
else
echo "TensorFlow InceptionV3 model already downloaded."
fi

View file

@ -1,8 +0,0 @@
#!/usr/bin/env bash
if [[ ! -e assets/tensorflow/tensorflow_inception_graph.pb ]]; then
wget "https://storage.googleapis.com/download.tensorflow.org/models/inception5h.zip" -O assets/tensorflow/inception.zip &&
unzip assets/tensorflow/inception.zip -d assets/tensorflow
else
echo "TensorFlow InceptionV3 model already downloaded."
fi