diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000000000000000000000000000000000000..2ca1beb2a56a4cb45c526deab8306417c095f6fe --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +.git +python/__pycache__ diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..f846f41497510c5d5a5c3e95f187f6d48ac1a6d1 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,167 @@ +##### Configurable Dockerfile with multi-stage build - Author: Vincent Delbar +## Mandatory +ARG BASE_IMG + +# ---------------------------------------------------------------------------- +# Init base stage - will be cloned as intermediate build env +FROM $BASE_IMG AS otbtf-base +WORKDIR /tmp + +### System packages +COPY tools/docker/build-deps-*.txt ./ +ARG DEBIAN_FRONTEND=noninteractive +# CLI +RUN apt-get update -y && apt-get upgrade -y \ + && cat build-deps-cli.txt | xargs apt-get install --no-install-recommends -y \ + && apt-get clean && rm -rf /var/lib/apt/lists/* +# Optional GUI +ARG GUI=false +RUN if $GUI; then \ + apt-get update -y \ + && cat build-deps-gui.txt | xargs apt-get install --no-install-recommends -y \ + && apt-get clean && rm -rf /var/lib/apt/lists/* ; fi + +### Python3 links and pip packages +RUN ln -s /usr/bin/python3 /usr/local/bin/python && ln -s /usr/bin/pip3 /usr/local/bin/pip +# NumPy version is conflicting with system's gdal dep and may require venv +ARG NUMPY_SPEC="~=1.19" +RUN pip install --no-cache-dir -U pip wheel mock six future "numpy$NUMPY_SPEC" \ + && pip install --no-cache-dir --no-deps keras_applications keras_preprocessing + +# ---------------------------------------------------------------------------- +# Tmp builder stage - dangling cache should persist until "docker builder prune" +FROM otbtf-base AS builder +# A smaller value may be required to avoid OOM errors when building OTB GUI +ARG CPU_RATIO=1 + +RUN mkdir -p /src/tf /opt/otbtf/bin /opt/otbtf/include /opt/otbtf/lib +WORKDIR /src/tf + +RUN git config --global advice.detachedHead false + +### TF +ARG TF=v2.4.1 +# Install bazelisk (will read .bazelversion and download the right bazel binary - latest by default) +RUN wget -qO /opt/otbtf/bin/bazelisk https://github.com/bazelbuild/bazelisk/releases/latest/download/bazelisk-linux-amd64 \ + && chmod +x /opt/otbtf/bin/bazelisk \ + && ln -s /opt/otbtf/bin/bazelisk /opt/otbtf/bin/bazel + +ARG BZL_TARGETS="//tensorflow:libtensorflow_cc.so //tensorflow/tools/pip_package:build_pip_package" +# "--config=opt" will enable 'march=native' (otherwise edit CC_OPT_FLAGS in build-env-tf.sh) +ARG BZL_CONFIGS="--config=nogcp --config=noaws --config=nohdfs --config=opt" +# "--compilation_mode opt" is already enabled by default (see tf repo .bazelrc and configure.py) +ARG BZL_OPTIONS="--verbose_failures --remote_cache=http://localhost:9090" + +# Build +ARG KEEP_SRC_TF=false +COPY tools/docker/build-env-tf.sh ./ +RUN git clone --single-branch -b $TF https://github.com/tensorflow/tensorflow.git \ + && cd tensorflow \ + && export PATH=$PATH:/opt/otbtf/bin \ + && export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/otbtf/lib \ + && bash -c '\ + source ../build-env-tf.sh \ + && ./configure \ + && export TMP=/tmp/bazel \ + && BZL_CMD="build $BZL_TARGETS $BZL_CONFIGS $BZL_OPTIONS" \ + && bazel $BZL_CMD --jobs="HOST_CPUS*$CPU_RATIO" ' \ +# Installation - split here if you want to check files ^ +#RUN cd tensorflow \ + && ./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg \ + && pip3 install --no-cache-dir --prefix=/opt/otbtf /tmp/tensorflow_pkg/tensorflow*.whl \ + && ln -s /opt/otbtf/lib/python3.* /opt/otbtf/lib/python3 \ + && cp -P bazel-bin/tensorflow/libtensorflow_cc.so* /opt/otbtf/lib/ \ + && ln -s $(find /opt/otbtf -type d -wholename "*/site-packages/tensorflow/include") /opt/otbtf/include/tf \ + # The only missing header in the wheel + && cp tensorflow/cc/saved_model/tag_constants.h /opt/otbtf/include/tf/tensorflow/cc/saved_model/ \ + # Symlink external libs (required for MKL - libiomp5) + && for f in $(find -L /opt/otbtf/include/tf -wholename "*/external/*/*.so"); do ln -s $f /opt/otbtf/lib/; done \ + # Cleaning + && rm -rf bazel-* \ + && ( $KEEP_SRC_TF || rm -rf /src/tf ) \ + && rm -rf /root/.cache/ /tmp/* + +### OTB +ARG GUI=false +ARG OTB=7.2.0 + +RUN mkdir /src/otb +WORKDIR /src/otb + +# SuperBuild OTB +COPY tools/docker/build-flags-otb.txt ./ +RUN git clone --single-branch -b $OTB https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb.git \ + && mkdir -p build \ + && cd build \ + # Set GL/Qt build flags + && if $GUI; then \ + sed -i -r "s/-DOTB_USE_(QT|OPENGL|GL[UFE][WT])=OFF/-DOTB_USE_\1=ON/" ../build-flags-otb.txt; fi \ + # Possible ENH: superbuild-all-dependencies switch, with separated build-deps-minimal.txt and build-deps-otbcli.txt) + #&& if $OTB_SUPERBUILD_ALL; then sed -i -r "s/-DOTB_USE_SYSTEM_([A-Z0-9]*)=ON/-DOTB_USE_SYSTEM_\1=OFF/"" ../build-flags-otb.txt; fi \ + && OTB_FLAGS=$(cat "../build-flags-otb.txt") \ + && cmake ../otb/SuperBuild -DCMAKE_INSTALL_PREFIX=/opt/otbtf $OTB_FLAGS \ + && make -j $(python -c "import os; print(round( os.cpu_count() * $CPU_RATIO ))") + +### OTBTF - copy (without .git/) or clone repository +COPY . /src/otbtf +#RUN git clone https://github.com/remicres/otbtf.git /src/otbtf +RUN ln -s /src/otbtf /src/otb/otb/Modules/Remote/otbtf + +# Rebuild OTB with module +ARG KEEP_SRC_OTB=false +RUN cd /src/otb/build/OTB/build \ + && export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/otbtf/lib \ + && export PATH=$PATH:/opt/otbtf/bin \ + && cmake /src/otb/otb \ + -DCMAKE_INSTALL_PREFIX=/opt/otbtf \ + -DOTB_WRAP_PYTHON=ON -DPYTHON_EXECUTABLE=/usr/bin/python3 \ + -DOTB_USE_TENSORFLOW=ON -DModule_OTBTensorflow=ON \ + -Dtensorflow_include_dir=/opt/otbtf/include/tf \ + # Forcing TF>=2, this Dockerfile hasn't been tested with v1 + missing link for libtensorflow_framework.so in the wheel + -DTENSORFLOW_CC_LIB=/opt/otbtf/lib/libtensorflow_cc.so.2 \ + -DTENSORFLOW_FRAMEWORK_LIB=/opt/otbtf/lib/python3/site-packages/tensorflow/libtensorflow_framework.so.2 \ + && make install -j $(python -c "import os; print(round( os.cpu_count() * $CPU_RATIO ))") \ + # Cleaning + && ( $GUI || rm -rf /opt/otbtf/bin/otbgui* ) \ + && ( $KEEP_SRC_OTB || rm -rf /src/otb ) \ + && rm -rf /root/.cache /tmp/* + +# Symlink executable python files in PATH +RUN for f in /src/otbtf/python/*.py; do if [ -x $f ]; then ln -s $f /opt/otbtf/bin/; fi; done + +# ---------------------------------------------------------------------------- +# Final stage +FROM otbtf-base +MAINTAINER Remi Cresson <remi.cresson[at]inrae[dot]fr> + +# Copy files from intermediate stage +COPY --from=builder /opt/otbtf /opt/otbtf +COPY --from=builder /src /src + +# System-wide ENV +ENV PATH="/opt/otbtf/bin:$PATH" +ENV LD_LIBRARY_PATH="/opt/otbtf/lib:$LD_LIBRARY_PATH" +ENV PYTHONPATH="/opt/otbtf/lib/python3/site-packages:/opt/otbtf/lib/otb/python:/src/otbtf/python" +ENV OTB_APPLICATION_PATH="/opt/otbtf/lib/otb/applications" + +# Default user, directory and command (bash is the entrypoint when using 'docker create') +RUN useradd -s /bin/bash -m otbuser +WORKDIR /home/otbuser + +# Admin rights without password +ARG SUDO=true +RUN if $SUDO; then \ + usermod -a -G sudo otbuser \ + && echo "otbuser ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers; fi + +# Set /src/otbtf ownership to otbuser (but you still need 'sudo -i' in order to rebuild TF or OTB) +RUN chown -R otbuser:otbuser /src/otbtf + +# This won't prevent ownership problems with volumes if you're not UID 1000 +USER otbuser +# User-only ENV + +# Test python imports +RUN python -c "import tensorflow" +RUN python -c "import otbtf, tricks" +RUN python -c "import otbApplication as otb; otb.Registry.CreateApplication('ImageClassifierFromDeepFeatures')" diff --git a/include/otbTensorflowGraphOperations.cxx b/include/otbTensorflowGraphOperations.cxx index 794a302bf0f8e2e456da82fd95c061b1a843e0bb..8b06bfd8b6614c034efcf12a410565ce8e79cf47 100644 --- a/include/otbTensorflowGraphOperations.cxx +++ b/include/otbTensorflowGraphOperations.cxx @@ -16,10 +16,10 @@ namespace tf { // // Restore a model from a path // -void RestoreModel(const std::string path, tensorflow::SavedModelBundle & bundle) +void RestoreModel(const tensorflow::tstring path, tensorflow::SavedModelBundle & bundle) { tensorflow::Tensor checkpointPathTensor(tensorflow::DT_STRING, tensorflow::TensorShape()); - checkpointPathTensor.scalar<std::string>()() = path; + checkpointPathTensor.scalar<tensorflow::tstring>()() = path; std::vector<std::pair<std::string, tensorflow::Tensor>> feed_dict = {{bundle.meta_graph_def.saver_def().filename_tensor_name(), checkpointPathTensor}}; auto status = bundle.session->Run(feed_dict, {}, {bundle.meta_graph_def.saver_def().restore_op_name()}, nullptr); @@ -32,10 +32,10 @@ void RestoreModel(const std::string path, tensorflow::SavedModelBundle & bundle) // // Restore a model from a path // -void SaveModel(const std::string path, tensorflow::SavedModelBundle & bundle) +void SaveModel(const tensorflow::tstring path, tensorflow::SavedModelBundle & bundle) { tensorflow::Tensor checkpointPathTensor(tensorflow::DT_STRING, tensorflow::TensorShape()); - checkpointPathTensor.scalar<std::string>()() = path; + checkpointPathTensor.scalar<tensorflow::tstring>()() = path; std::vector<std::pair<std::string, tensorflow::Tensor>> feed_dict = {{bundle.meta_graph_def.saver_def().filename_tensor_name(), checkpointPathTensor}}; auto status = bundle.session->Run(feed_dict, {}, {bundle.meta_graph_def.saver_def().save_tensor_name()}, nullptr); @@ -48,7 +48,7 @@ void SaveModel(const std::string path, tensorflow::SavedModelBundle & bundle) // // Load a session and a graph from a folder // -void LoadModel(const std::string path, tensorflow::SavedModelBundle & bundle) +void LoadModel(const tensorflow::tstring path, tensorflow::SavedModelBundle & bundle) { tensorflow::RunOptions runoptions; diff --git a/include/otbTensorflowGraphOperations.h b/include/otbTensorflowGraphOperations.h index 4e30ae46ec68d7049d3a1d81649586e7322d0ed3..e7636539527173c7c68ec6028915ff174309965d 100644 --- a/include/otbTensorflowGraphOperations.h +++ b/include/otbTensorflowGraphOperations.h @@ -27,13 +27,13 @@ namespace otb { namespace tf { // Restore a model from a path -void RestoreModel(const std::string path, tensorflow::SavedModelBundle & bundle); +void RestoreModel(const tensorflow::tstring path, tensorflow::SavedModelBundle & bundle); // Restore a model from a path -void SaveModel(const std::string path, tensorflow::SavedModelBundle & bundle); +void SaveModel(const tensorflow::tstring path, tensorflow::SavedModelBundle & bundle); // Load a session and a graph from a folder -void LoadModel(const std::string path, tensorflow::SavedModelBundle & bundle); +void LoadModel(const tensorflow::tstring path, tensorflow::SavedModelBundle & bundle); // Load a graph from a .meta file tensorflow::GraphDef LoadGraph(std::string filename); diff --git a/python/ckpt2savedmodel.py b/python/ckpt2savedmodel.py old mode 100644 new mode 100755 index b7ae2bcde0d4b7b6dfbb30266b08a95e618f5760..cbb72bb941f4fbe4c06af9e3baa5883ca3646887 --- a/python/ckpt2savedmodel.py +++ b/python/ckpt2savedmodel.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python3 # -*- coding: utf-8 -*- # ========================================================================== # diff --git a/python/create_savedmodel_ienco-m3_patchbased.py b/python/create_savedmodel_ienco-m3_patchbased.py old mode 100644 new mode 100755 index e5ef21031e75cac82e3031b8fa2bdd6441979af4..62c3e7a4922dd045bca47ba226afeff7d69fc0a2 --- a/python/create_savedmodel_ienco-m3_patchbased.py +++ b/python/create_savedmodel_ienco-m3_patchbased.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python3 # -*- coding: utf-8 -*- # ========================================================================== # diff --git a/python/create_savedmodel_maggiori17_fullyconv.py b/python/create_savedmodel_maggiori17_fullyconv.py old mode 100644 new mode 100755 index a88ab1cdca0ba972c88ed7d85edaf83797d4cedb..fa62bd466a8dd1467a0712346427ddc03e986cfb --- a/python/create_savedmodel_maggiori17_fullyconv.py +++ b/python/create_savedmodel_maggiori17_fullyconv.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python3 # -*- coding: utf-8 -*- #========================================================================== # diff --git a/python/create_savedmodel_pxs_fcn.py b/python/create_savedmodel_pxs_fcn.py index f1ddac404c33ad0de91b65493d506001cf87b231..76beac95e2c1a5dde252ed236eb68bb6974bd76f 100755 --- a/python/create_savedmodel_pxs_fcn.py +++ b/python/create_savedmodel_pxs_fcn.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python3 # -*- coding: utf-8 -*- # ========================================================================== # diff --git a/python/create_savedmodel_simple_cnn.py b/python/create_savedmodel_simple_cnn.py index 1bccd92867fce0bc9a223eb198edc15496d9fdf0..ef64791ab6211b79932e6a54e2de9b35855b722c 100755 --- a/python/create_savedmodel_simple_cnn.py +++ b/python/create_savedmodel_simple_cnn.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python3 # -*- coding: utf-8 -*- # ========================================================================== # diff --git a/python/create_savedmodel_simple_fcn.py b/python/create_savedmodel_simple_fcn.py index 94bd1d47b2e2a2e9b0975271dccdb2588fd8c57a..b3363685fabb6c5ff8534377331572a321824214 100755 --- a/python/create_savedmodel_simple_fcn.py +++ b/python/create_savedmodel_simple_fcn.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python3 # -*- coding: utf-8 -*- # ========================================================================== # diff --git a/tools/docker/README.md b/tools/docker/README.md new file mode 100644 index 0000000000000000000000000000000000000000..b3437878ba6d32ac33e8a4a0cee78f18b187b86b --- /dev/null +++ b/tools/docker/README.md @@ -0,0 +1,124 @@ +# Build with Docker +Docker build has to be called from the root of the repository (i.e. `docker build .` or `bash tools/docker/multibuild.sh`). +You can build a custom image using `--build-arg` and several config files : +- Ubuntu : `BASE_IMG` should accept any version, for additional packages see [build-deps-cli.txt](build-deps-cli.txt) and [build-deps-gui.txt](build-deps-gui.txt) +- TensorFlow : `TF` arg for the git branch or tag + [build-env-tf.sh](build-env-tf.sh) and BZL_* arguments for the build configuration +- OrfeoToolBox : `OTB` arg for the git branch or tag + [build-flags-otb.txt](build-flags-otb.txt) to edit cmake flags + +### Base images +```bash +UBUNTU=20.04 # or 16.04, 18.04 +CUDA=11.0.3 # or 10.1, 10.2 +CUDNN=8 # or 7 +IMG=ubuntu:$UBUNTU +GPU_IMG=nvidia/cuda:$CUDA-cudnn$CUDNN-devel-ubuntu$UBUNTU +``` + +### Default arguments +```bash +BASE_IMG # mandatory +CPU_RATIO=0.95 +GUI=false +NUMPY_SPEC="~=1.19" +TF=r2.4.1 +OTB=7.2.0 +BZL_TARGETS="//tensorflow:libtensorflow_cc.so //tensorflow/tools/pip_package:build_pip_package" +BZL_CONFIGS="--config=nogcp --config=noaws --config=nohdfs --config=opt" +BZL_OPTIONS="--verbose_failures --remote_cache=http://localhost:9090" +KEEP_SRC_TF=false +KEEP_SRC_OTB=false +SUDO=true + +# NumPy version requirement : +# TF < 2.4 : "numpy<1.19.0,>=1.16.0" +# TF >= 2.4 : "numpy~=1.19" +``` + +### Bazel remote cache daemon +If you just need to rebuild with different GUI or KEEP_SRC arguments, or may be a different branch of OTB, bazel cache will help you to rebuild everything except TF, even if the docker cache was purged (after `docker [system|builder] prune`). +In order to recycle the cache, bazel config and TF git tag should be exactly the same, any change in [build-env-tf.sh](build-env-tf.sh) and `--build-arg` (if related to bazel env, cuda, mkl, xla...) may result in a fresh new build. + +Start a cache daemon - here with max 20GB but 12GB should be enough to save 2 TF builds (GPU and CPU): +```bash +mkdir -p $HOME/.cache/bazel-remote +docker run --detach -u 1000:1000 -v $HOME/.cache/bazel-remote:/data -p 9090:8080 buchgr/bazel-remote-cache --max_size=20 +``` +Then just add ` --network='host'` to the docker build command, or connect bazel to a remote server - see 'BZL_OPTIONS'. +The other way of docker is a virtual bridge, but you'll need to edit the IP address. + +## Build examples +```bash +# Build for CPU using default Dockerfiles args (without AWS, HDFS or GCP support) +docker build --network='host' -t otbtf:cpu --build-arg BASE_IMG=ubuntu:20.04 . + +# Clear bazel config var (deactivate default optimizations and unset noaws/nogcp/nohdfs) +docker build --network='host' -t otbtf:cpu --build-arg BASE_IMG=ubuntu:20.04 --build-arg BZL_CONFIGS= . + +# Enable MKL +MKL_CONFIG="--config=nogcp --config=noaws --config=nohdfs --config=opt --config=mkl" +docker build --network='host' -t otbtf:cpu-mkl --build-arg BZL_CONFIGS="$MKL_CONFIG" --build-arg BASE_IMG=ubuntu:20.04 . + +# Build for GPU (if you're building for your system only you should edit CUDA_COMPUTE_CAPABILITIES in build-env-tf.sh) +docker build --network='host' -t otbtf:gpu --build-arg BASE_IMG=nvidia/cuda:11.0.3-cudnn8-devel-ubuntu20.04 . + +# Build dev with TF and OTB sources (huge image) + set git branches/tags to clone +docker build --network='host' -t otbtf:gpu-dev-full --build-arg BASE_IMG=nvidia/cuda:11.0.3-cudnn8-devel-ubuntu20.04 \ + --build-arg KEEP_SRC_OTB=true --buid-arg KEEP_SRC_TF=true --build-arg TF=nightly --build-arg OTB=develop . + +# Build old release +docker build --network='host' -t otbtf:oldstable-gpu --build-arg BASE_IMG=nvidia/cuda:10.1-cudnn7-devel-ubuntu18.04 \ + --build-arg TF=r2.1 --build-arg NUMPY_SPEC="<1.19" \ + --build-arg BAZEL_OPTIONS="--noincompatible_do_not_split_linking_cmdline --verbose_failures --remote_cache=http://localhost:9090" . +# You could edit the Dockerfile in order to clone an old branch of the repo instead of copying files from the build context +``` + +### Debug build +If you fail to build, you can log into the last layer and check CMake logs. Run `docker images`, find the latest layer ID and run a tmp container (`docker run -it d60496d9612e bash`). +You may also need to split some multi-command layers in the Dockerfile. +If you see OOM errors during SuperBuild you should decrease CPU_RATIO (e.g. 0.75). + +## Container examples +```bash +# Pull GPU image and create a new container with your home directory as volume (requires apt package nvidia-docker2 and CUDA>=11.0) +docker create --gpus=all --volume $HOME:/home/otbuser/volume -it --name otbtf-gpu mdl4eo/otbtf2.1:gpu + +# Run interactive +docker start -i otbtf-gpu + +# Run in background +docker start otbtf-gpu +docker exec otbtf-gpu python -c 'import tensorflow as tf; print(tf.test.is_gpu_available())' +``` + +### Rebuild OTB with more modules +```bash +docker create --gpus=all -it --name otbtf-gpu-dev mdl4eo/otbtf2.1:gpu-dev +docker start -i otbtf-gpu-dev +``` +```bash +# From the container shell: +sudo -i +cd /src/otb/otb/Modules/Remote +git clone https://gitlab.irstea.fr/raffaele.gaetano/otbSelectiveHaralickTextures.git +cd /src/otb/build/OTB/build +cmake -DModule_OTBAppSelectiveHaralickTextures=ON /src/otb/otb && make install -j +``` + +### Container with GUI +```bash +# GUI is disabled by default in order to save space, and because docker xvfb isn't working properly with OpenGL. +# => otbgui seems OK but monteverdi isn't working +docker build --network='host' -t otbtf:cpu-gui --build-arg BASE_IMG=ubuntu:20.04 --build-arg GUI=true . +docker create -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY -it --name otbtf-gui otbtf:cpu-gui +docker start -i otbtf-gui +$ mapla +``` + +### Common errors +Buid : +`Error response from daemon: manifest for nvidia/cuda:11.0-cudnn8-devel-ubuntu20.04 not found: manifest unknown: manifest unknown` +=> Image is missing from dockerhub + +Run : +`failed call to cuInit: UNKNOWN ERROR (303) / no NVIDIA GPU device is present: /dev/nvidia0 does not exist` +=> Nvidia driver is missing or disabled, make sure to add ` --gpus=all` to your docker run or create command diff --git a/tools/docker/build-deps-cli.txt b/tools/docker/build-deps-cli.txt new file mode 100644 index 0000000000000000000000000000000000000000..5d699cb19db6cd4845acaa909f50e148a172e318 --- /dev/null +++ b/tools/docker/build-deps-cli.txt @@ -0,0 +1,53 @@ +apt-transport-https +ca-certificates +curl +cmake +file +g++ +gcc +git +libc6-dev +libtool +lsb-release +make +nano +patch +pkg-config +python3-dev +python3-pip +python3-setuptools +python3-venv +sudo +swig +unzip +vim +wget +zip + +bison +gdal-bin +python3-gdal +libboost-date-time-dev +libboost-filesystem-dev +libboost-graph-dev +libboost-program-options-dev +libboost-system-dev +libboost-thread-dev +libcurl4-gnutls-dev +libexpat1-dev +libfftw3-dev +libgdal-dev +libgeotiff-dev +libgsl-dev +libinsighttoolkit4-dev +libkml-dev +libmuparser-dev +libmuparserx-dev +libopencv-core-dev +libopencv-ml-dev +libopenthreads-dev +libossim-dev +libpng-dev +libsvm-dev +libtinyxml-dev +zlib1g-dev diff --git a/tools/docker/build-deps-gui.txt b/tools/docker/build-deps-gui.txt new file mode 100644 index 0000000000000000000000000000000000000000..af6f6b8f2403660fc2207ad7b6f43f523600658f --- /dev/null +++ b/tools/docker/build-deps-gui.txt @@ -0,0 +1,13 @@ +freeglut3-dev +libglew-dev +libglfw3-dev +libqt5opengl5-dev +libqwt-qt5-dev +libx11-dev +libgl-dev +libxmu-dev +libxi-dev +qtbase5-dev +qttools5-dev +qttools5-dev-tools +xvfb \ No newline at end of file diff --git a/tools/docker/build-env-tf.sh b/tools/docker/build-env-tf.sh new file mode 100644 index 0000000000000000000000000000000000000000..406b5dd6478cb25588ef3f05b253c0b16e5a558b --- /dev/null +++ b/tools/docker/build-env-tf.sh @@ -0,0 +1,42 @@ +### TF - bazel build env variables + +# As in official TF wheels, you'll need to remove "-march=native" for old CPUs compatibity (no AVX2) +export CC_OPT_FLAGS="-march=native -Wno-sign-compare" +export GCC_HOST_COMPILER_PATH=$(which gcc) +export PYTHON_BIN_PATH=$(which python) +export PYTHON_LIB_PATH="$($PYTHON_BIN_PATH -c 'import site; print(site.getsitepackages()[0])')" +export TF_DOWNLOAD_CLANG=0 +export TF_ENABLE_XLA=1 +export TF_NEED_COMPUTECPP=0 +export TF_NEED_GDR=0 +export TF_NEED_JEMALLOC=1 +export TF_NEED_KAFKA=0 +export TF_NEED_MPI=0 +export TF_NEED_OPENCL=0 +export TF_NEED_OPENCL_SYCL=0 +export TF_NEED_VERBS=0 +export TF_SET_ANDROID_WORKSPACE=0 +# For MKL support BZL_CONFIGS+=" --config=mkl" +#export TF_DOWNLOAD_MKL=1 +#export TF_NEED_MKL=0 +# Needed BZL_CONFIGS=" --config=nogcp --config=noaws --config=nohdfs" +#export TF_NEED_S3=0 +#export TF_NEED_AWS=0 +#export TF_NEED_GCP=0 +#export TF_NEED_HDFS=0 + +## GPU +export TF_NEED_ROCM=0 +export TF_NEED_CUDA=0 +export CUDA_TOOLKIT_PATH=$(find /usr/local -maxdepth 1 -type d -name 'cuda-*') +if [ ! -z $CUDA_TOOLKIT_PATH ] ; then + export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$CUDA_TOOLKIT_PATH/lib64:$CUDA_TOOLKIT_PATH/lib64/stubs" + export TF_CUDA_VERSION=$(echo $CUDA_TOOLKIT_PATH | sed -r 's/.*\/cuda-(.*)/\1/') + export TF_CUDA_COMPUTE_CAPABILITIES="5.2,6.1,7.0,7.5" + export TF_NEED_CUDA=1 + export TF_CUDA_CLANG=0 + export TF_NEED_TENSORRT=0 + export CUDNN_INSTALL_PATH="/usr/" + export TF_CUDNN_VERSION=$(sed -n 's/^#define CUDNN_MAJOR\s*\(.*\).*/\1/p' $CUDNN_INSTALL_PATH/include/cudnn.h) + export TF_NCCL_VERSION=2 +fi diff --git a/tools/docker/build-flags-otb.txt b/tools/docker/build-flags-otb.txt new file mode 100644 index 0000000000000000000000000000000000000000..2c3e0feac4e480cd9f8a0c9969b70c301761e8da --- /dev/null +++ b/tools/docker/build-flags-otb.txt @@ -0,0 +1,32 @@ +-DUSE_SYSTEM_BOOST=ON +-DUSE_SYSTEM_CURL=ON +-DUSE_SYSTEM_EXPAT=ON +-DUSE_SYSTEM_FFTW=ON +-DUSE_SYSTEM_FREETYPE=ON +-DUSE_SYSTEM_GDAL=ON +-DUSE_SYSTEM_GEOS=ON +-DUSE_SYSTEM_GEOTIFF=ON +-DUSE_SYSTEM_GLEW=ON +-DUSE_SYSTEM_GLFW=ON +-DUSE_SYSTEM_GLUT=ON +-DUSE_SYSTEM_GSL=ON +-DUSE_SYSTEM_ITK=ON +-DUSE_SYSTEM_LIBKML=ON +-DUSE_SYSTEM_LIBSVM=ON +-DUSE_SYSTEM_MUPARSER=ON +-DUSE_SYSTEM_MUPARSERX=ON +-DUSE_SYSTEM_OPENCV=ON +-DUSE_SYSTEM_OPENTHREADS=ON +-DUSE_SYSTEM_OSSIM=ON +-DUSE_SYSTEM_PNG=ON +-DUSE_SYSTEM_QT5=ON +-DUSE_SYSTEM_QWT=ON +-DUSE_SYSTEM_TINYXML=ON +-DUSE_SYSTEM_ZLIB=ON +-DUSE_SYSTEM_SWIG=ON + +-DOTB_USE_QT=OFF +-DOTB_USE_OPENGL=OFF +-DOTB_USE_GLUT=OFF +-DOTB_USE_GLEW=OFF +-DOTB_USE_GLFW=OFF diff --git a/tools/docker/multibuild.sh b/tools/docker/multibuild.sh new file mode 100644 index 0000000000000000000000000000000000000000..ad96461ad5905d16caec661adb3479dc4f23dfd2 --- /dev/null +++ b/tools/docker/multibuild.sh @@ -0,0 +1,41 @@ +#!/bin/bash +### Docker multibuild and push, see default args and more examples in tools/docker/README.md +RELEASE=2.1 +UBUNTU=20.04 +CUDA=11.0.3 +CUDNN=8 +IMG=ubuntu:$UBUNTU +GPU_IMG=nvidia/cuda:$CUDA-cudnn$CUDNN-devel-ubuntu$UBUNTU + +## Bazel remote cache daemon +mkdir -p $HOME/.cache/bazel-remote +docker run -d -u 1000:1000 -v $HOME/.cache/bazel-remote:/data -p 9090:8080 buchgr/bazel-remote-cache --max_size=20 + +### CPU (no MKL) +#docker build --network='host' -t mdl4eo/otbtf$RELEASE:-cpu-dev-all --build-arg BASE_IMG=$IMG --build-arg KEEP_SRC_OTB=true --build-arg KEEP_SRC_TF=true . +docker build --network='host' -t mdl4eo/otbtf$RELEASE:cpu-dev --build-arg BASE_IMG=$IMG --build-arg KEEP_SRC_OTB=true . +docker build --network='host' -t mdl4eo/otbtf$RELEASE:cpu --build-arg BASE_IMG=$IMG . +#docker build --network='host' -t mdl4eo/otbtf$RELEASE:-cpu-gui --build-arg BASE_IMG=$IMG --build-arg GUI=true . + +### MKL is enabled with bazel config flag +#MKL_CONF="--config=nogcp --config=noaws --config=nohdfs --config=mkl --config=opt" +#docker build --network='host' -t mdl4eo/otbtf$RELEASE:-cpu-mkl --build-arg BASE_IMG=$IMG --build-arg BZL_CONFIGS="$MKL_CONF" . +#docker build --network='host' -t mdl4eo/otbtf$RELEASE:-cpu-mkl-dev --build-arg BASE_IMG=$IMG --build-arg BZL_CONFIGS="$MKL_CONF" --build-arg KEEP_SRC_OTB=true . + +### GPU support is enabled if CUDA is found in /usr/local +#docker build --network='host' -t mdl4eo/otbtf$RELEASE:-gpu-dev-all --build-arg BASE_IMG=$GPU_IMG --build-arg KEEP_SRC_OTB=true --build-arg KEEP_SRC_TF=true . +docker build --network='host' -t mdl4eo/otbtf$RELEASE:gpu-dev --build-arg BASE_IMG=$GPU_IMG --build-arg KEEP_SRC_OTB=true . +docker build --network='host' -t mdl4eo/otbtf$RELEASE:gpu --build-arg BASE_IMG=$GPU_IMG . +#docker build --network='host' -t mdl4eo/otbtf$RELEASE:-gpu-gui --build-arg BASE_IMG=$GPU_IMG --build-arg GUI=true . + +#docker login +#docker push mdl4eo/otbtf$RELEASE:-cpu-dev-all +docker push mdl4eo/otbtf$RELEASE:-cpu-dev +docker push mdl4eo/otbtf$RELEASE:-cpu +#docker push mdl4eo/otbtf$RELEASE:-cpu-gui +#docker push mdl4eo/otbtf$RELEASE:-cpu-mkl + +#docker push mdl4eo/otbtf$RELEASE:-gpu-dev-all +docker push mdl4eo/otbtf$RELEASE:-gpu-dev +docker push mdl4eo/otbtf$RELEASE:-gpu +#docker push mdl4eo/otbtf$RELEASE:-gpu-gui diff --git a/tools/dockerfiles/r1.6/bionic.tf-r1.14.otb-develop/Dockerfile b/tools/dockerfiles/r1.6/bionic.tf-r1.14.otb-develop/Dockerfile deleted file mode 100644 index dac7c853af399afa487871b7e2436f6def3243d2..0000000000000000000000000000000000000000 --- a/tools/dockerfiles/r1.6/bionic.tf-r1.14.otb-develop/Dockerfile +++ /dev/null @@ -1,218 +0,0 @@ -FROM ubuntu:18.04 - -MAINTAINER Remi Cresson <remi.cresson[at]irstea[dot]fr> - -RUN apt-get update -y \ - && apt-get upgrade -y \ - && apt-get install -y --no-install-recommends \ - sudo \ - ca-certificates \ - curl \ - make \ - cmake \ - g++ \ - gcc \ - git \ - libtool \ - swig \ - xvfb \ - wget \ - autoconf \ - automake \ - pkg-config \ - zip \ - zlib1g-dev \ - unzip \ - && rm -rf /var/lib/apt/lists/* - -# ---------------------------------------------------------------------------- -# OTB and TensorFlow dependencies -# ---------------------------------------------------------------------------- -RUN apt-get update -y \ - && apt-get upgrade -y \ - && apt-get install -y --no-install-recommends \ - freeglut3-dev \ - libboost-date-time-dev \ - libboost-filesystem-dev \ - libboost-graph-dev \ - libboost-program-options-dev \ - libboost-system-dev \ - libboost-thread-dev \ - libcurl4-gnutls-dev \ - libexpat1-dev \ - libfftw3-dev \ - libgdal-dev \ - libgeotiff-dev \ - libglew-dev \ - libglfw3-dev \ - libgsl-dev \ - libinsighttoolkit4-dev \ - libkml-dev \ - libmuparser-dev \ - libmuparserx-dev \ - libopencv-core-dev \ - libopencv-ml-dev \ - libopenthreads-dev \ - libossim-dev \ - libpng-dev \ - libqt5opengl5-dev \ - libqwt-qt5-dev \ - libsvm-dev \ - libtinyxml-dev \ - qtbase5-dev \ - qttools5-dev \ - default-jdk \ - python3-pip \ - python3.6-dev \ - python3.6-gdal \ - python3-setuptools \ - libxmu-dev \ - libxi-dev \ - qttools5-dev-tools \ - bison \ - && rm -rf /var/lib/apt/lists/* - -# ---------------------------------------------------------------------------- -# Python packages -# ---------------------------------------------------------------------------- -RUN ln -s /usr/bin/python3 /usr/bin/python \ - && python3 -m pip install --upgrade pip \ - && python3 -m pip install pip six numpy wheel mock keras future - -# ---------------------------------------------------------------------------- -# Build TensorFlow -# ---------------------------------------------------------------------------- -RUN export TF_ROOT=/work/tf \ - && mkdir -p ${TF_ROOT}/bazel \ - && cd ${TF_ROOT}/bazel \ - && wget https://github.com/bazelbuild/bazel/releases/download/0.24.1/bazel-0.24.1-installer-linux-x86_64.sh \ - && chmod +x bazel-0.24.1-installer-linux-x86_64.sh \ - && ./bazel-0.24.1-installer-linux-x86_64.sh - -RUN export TF_ROOT=/work/tf \ - && export PATH="$PATH:$HOME/bin" \ - && cd $TF_ROOT \ - && git clone https://github.com/tensorflow/tensorflow.git \ - && cd tensorflow \ - && git checkout r1.14 \ - && echo "\n\n\n\n\n\n\n\n\n" | ./configure \ - && bazel build //tensorflow:libtensorflow_framework.so //tensorflow:libtensorflow_cc.so //tensorflow/tools/pip_package:build_pip_package - -RUN export TF_ROOT=/work/tf \ - && cd $TF_ROOT/tensorflow \ - && bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg \ - && pip3 install $(find /tmp/tensorflow_pkg/ -type f -iname "tensorflow*.whl") \ - && ./tensorflow/contrib/makefile/build_all_linux.sh \ - && mkdir -p /work/tf/installdir/lib \ - && mkdir -p /work/tf/installdir/include \ - && cp bazel-bin/tensorflow/libtensorflow_cc.so /work/tf/installdir/lib \ - && cp bazel-bin/tensorflow/libtensorflow_framework.so /work/tf/installdir/lib \ - && cp tensorflow/contrib/makefile/gen/protobuf/lib/libprotobuf.a /work/tf/installdir/lib \ - && cp tensorflow/contrib/makefile/downloads/nsync/builds/default.linux.c++11/*.a /work/tf/installdir/lib \ - && cp -r bazel-genfiles/* /work/tf/installdir/include/ \ - && cp -r tensorflow/cc /work/tf/installdir/include/tensorflow/ \ - && cp -r tensorflow/core /work/tf/installdir/include/tensorflow/ \ - && cp -r third_party /work/tf/installdir/include/ \ - && cp -r tensorflow/contrib/makefile/gen/protobuf/include/* /work/tf/installdir/include/ \ - && cp -r tensorflow/contrib/makefile/downloads/eigen/Eigen /work/tf/installdir/include/ \ - && cp -r tensorflow/contrib/makefile/downloads/eigen/unsupported /work/tf/installdir/include/ \ - && cp -r tensorflow/contrib/makefile/downloads/eigen/signature_of_eigen3_matrix_library /work/tf/installdir/include/ \ - && cd ${TF_ROOT}/tensorflow/tensorflow/contrib/makefile/downloads/absl \ - && find absl/ -name '*.h' -exec cp --parents \{\} /work/tf/installdir/include/ \; \ - && find absl/ -name '*.inc' -exec cp --parents \{\} /work/tf/installdir/include/ \; \ - && find /work/tf/installdir/ -name "*.cc" -type f -delete - -RUN echo "Create symlinks for tensorflow libs" \ - && ln -s /work/tf/installdir/lib/libtensorflow_cc.so /work/tf/installdir/lib/libtensorflow_cc.so.1 \ - && ln -s /work/tf/installdir/lib/libtensorflow_framework.so /work/tf/installdir/lib/libtensorflow_framework.so.1 - -# ---------------------------------------------------------------------------- -# Build OTB -# ---------------------------------------------------------------------------- -RUN mkdir -p /work/otb/build \ - && cd /work/otb \ - && git clone https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb.git otb \ - && cd otb \ - && git checkout 0df44b312d64d6c3890b65d3790d4a17d0fd5f23 \ - && cd /work/otb/build \ - && cmake /work/otb/otb/SuperBuild \ - -DUSE_SYSTEM_BOOST=ON \ - -DUSE_SYSTEM_CURL=ON \ - -DUSE_SYSTEM_EXPAT=ON \ - -DUSE_SYSTEM_FFTW=ON \ - -DUSE_SYSTEM_FREETYPE=ON \ - -DUSE_SYSTEM_GDAL=ON \ - -DUSE_SYSTEM_GEOS=ON \ - -DUSE_SYSTEM_GEOTIFF=ON \ - -DUSE_SYSTEM_GLEW=ON \ - -DUSE_SYSTEM_GLFW=ON \ - -DUSE_SYSTEM_GLUT=ON \ - -DUSE_SYSTEM_GSL=ON \ - -DUSE_SYSTEM_ITK=ON \ - -DUSE_SYSTEM_LIBKML=ON \ - -DUSE_SYSTEM_LIBSVM=ON \ - -DUSE_SYSTEM_MUPARSER=ON \ - -DUSE_SYSTEM_MUPARSERX=ON \ - -DUSE_SYSTEM_OPENCV=ON \ - -DUSE_SYSTEM_OPENTHREADS=ON \ - -DUSE_SYSTEM_OSSIM=ON \ - -DUSE_SYSTEM_PNG=ON \ - -DUSE_SYSTEM_QT5=ON \ - -DUSE_SYSTEM_QWT=ON \ - -DUSE_SYSTEM_TINYXML=ON \ - -DUSE_SYSTEM_ZLIB=ON \ - -DUSE_SYSTEM_SWIG=OFF \ - && cd /work/otb/otb/Modules/Remote \ - && git clone https://github.com/remicres/otbtf.git \ - && cd /work/otb/build/OTB/build \ - && cmake /work/otb/otb \ - -DOTB_WRAP_PYTHON=ON \ - -DModule_Mosaic=ON \ - -DModule_OTBTensorflow=ON \ - -DOTB_USE_TENSORFLOW=ON \ - -Dopencv_INCLUDE_DIR=/usr/include \ - -DTENSORFLOW_CC_LIB=/work/tf/installdir/lib/libtensorflow_cc.so \ - -DTENSORFLOW_FRAMEWORK_LIB=/work/tf/installdir/lib/libtensorflow_framework.so \ - -Dtensorflow_include_dir=/work/tf/installdir/include/ \ - && cd /work/otb/build/ \ - && make -j $(grep -c ^processor /proc/cpuinfo) - -# ---------------------------------------------------------------------------- -# Install GDAL -# ---------------------------------------------------------------------------- -RUN apt-get update -y \ - && apt -y install \ - software-properties-common \ - dirmngr \ - apt-transport-https \ - lsb-release \ - gdal-bin \ - && rm -rf /var/lib/apt/lists/* - -# ---------------------------------------------------------------------------- -# Add user otbuser # Replace 1001 with your user / group id -# ---------------------------------------------------------------------------- - -RUN export uid=1001 gid=1001 && \ - mkdir -p /home/otbuser && \ - echo "otbuser:x:${uid}:${gid}:otbuser,,,:/home/otbuser:/bin/bash" >> /etc/passwd && \ - echo "otbuser:x:${uid}:" >> /etc/group && \ - echo "otbuser ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/otbuser && \ - chmod 0440 /etc/sudoers.d/otbuser && \ - chown ${uid}:${gid} -R /home/otbuser - -USER /home/otbuser -ENV HOME /home/otbuser -ENV OTB_MAX_RAM_HINT=512 -ENV PATH "$PATH:/work/otb/superbuild_install/bin/" -ENV PYTHONPATH="/work/otb/superbuild_install/lib/otb/python:$PYTHONPATH" -ENV OTB_APPLICATION_PATH="/work/otb/superbuild_install/lib/otb/applications" -ENV LD_LIBRARY_PATH "$LD_LIBRARY_PATH:/work/otb/superbuild_install/lib/:/work/tf/installdir/lib/" -WORKDIR /home/otbuser - -# ---------------------------------------------------------------------------- -# Exemple : -# docker build --tag otbtf_image -# docker run -u otbuser -v $(pwd):/home/otbuser otbtf_image otbcli_ExtractROI -# docker run -u otbuser -ti -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY -v $(pwd):/home/otbuser otbtf_image otbgui_ExtractROI -# ---------------------------------------------------------------------------- diff --git a/tools/dockerfiles/r1.7/bionic.tf-r1.14.otb-7.0-GPU/Dockerfile b/tools/dockerfiles/r1.7/bionic.tf-r1.14.otb-7.0-GPU/Dockerfile deleted file mode 100644 index 618635ccd6d6d6be93d026773ae46dfaa869b09b..0000000000000000000000000000000000000000 --- a/tools/dockerfiles/r1.7/bionic.tf-r1.14.otb-7.0-GPU/Dockerfile +++ /dev/null @@ -1,242 +0,0 @@ -FROM nvidia/cuda:10.1-cudnn7-devel-ubuntu18.04 - -MAINTAINER Remi Cresson <remi.cresson[at]irstea[dot]fr> - -RUN apt-get update -y \ - && apt-get upgrade -y \ - && apt-get install -y --no-install-recommends \ - sudo \ - ca-certificates \ - curl \ - make \ - cmake \ - g++ \ - gcc \ - git \ - libtool \ - swig \ - xvfb \ - wget \ - autoconf \ - automake \ - pkg-config \ - zip \ - zlib1g-dev \ - unzip \ - && rm -rf /var/lib/apt/lists/* - -# ---------------------------------------------------------------------------- -# OTB and TensorFlow dependencies -# ---------------------------------------------------------------------------- -RUN apt-get update -y \ - && apt-get upgrade -y \ - && apt-get install -y --no-install-recommends \ - freeglut3-dev \ - libboost-date-time-dev \ - libboost-filesystem-dev \ - libboost-graph-dev \ - libboost-program-options-dev \ - libboost-system-dev \ - libboost-thread-dev \ - libcurl4-gnutls-dev \ - libexpat1-dev \ - libfftw3-dev \ - libgdal-dev \ - libgeotiff-dev \ - libglew-dev \ - libglfw3-dev \ - libgsl-dev \ - libinsighttoolkit4-dev \ - libkml-dev \ - libmuparser-dev \ - libmuparserx-dev \ - libopencv-core-dev \ - libopencv-ml-dev \ - libopenthreads-dev \ - libossim-dev \ - libpng-dev \ - libqt5opengl5-dev \ - libqwt-qt5-dev \ - libsvm-dev \ - libtinyxml-dev \ - qtbase5-dev \ - qttools5-dev \ - default-jdk \ - python3-pip \ - python3.6-dev \ - python3.6-gdal \ - python3-setuptools \ - libxmu-dev \ - libxi-dev \ - qttools5-dev-tools \ - bison \ - software-properties-common \ - dirmngr \ - apt-transport-https \ - lsb-release \ - gdal-bin \ - && rm -rf /var/lib/apt/lists/* - -# ---------------------------------------------------------------------------- -# Python packages -# ---------------------------------------------------------------------------- -RUN ln -s /usr/bin/python3 /usr/bin/python \ - && python3 -m pip install --upgrade pip \ - && python3 -m pip install pip six numpy wheel mock keras future - -# ---------------------------------------------------------------------------- -# Build TensorFlow -# ---------------------------------------------------------------------------- -RUN export TF_ROOT=/work/tf \ - && mkdir -p ${TF_ROOT}/bazel \ - && cd ${TF_ROOT}/bazel \ - && wget https://github.com/bazelbuild/bazel/releases/download/0.24.1/bazel-0.24.1-installer-linux-x86_64.sh \ - && chmod +x bazel-0.24.1-installer-linux-x86_64.sh \ - && ./bazel-0.24.1-installer-linux-x86_64.sh - -RUN export TF_ROOT=/work/tf \ - && export PATH="$PATH:$HOME/bin" \ - && cd $TF_ROOT \ - && git clone https://github.com/tensorflow/tensorflow.git \ - && cd tensorflow \ - && git checkout r1.14 \ - && export PYTHON_BIN_PATH=$(which python) \ - && export PYTHON_LIB_PATH="$($PYTHON_BIN_PATH -c 'import site; print(site.getsitepackages()[0])')" \ - && export PYTHONPATH=/usr/lib/ \ - && export PYTHON_ARG=/usr/lib/ \ - && export CUDA_TOOLKIT_PATH=/usr/local/cuda-10.1/ \ - && export CUDNN_INSTALL_PATH=/usr/ \ - && export TF_NEED_GCP=0 \ - && export TF_NEED_CUDA=1 \ - && export TF_CUDA_VERSION="$($CUDA_TOOLKIT_PATH/bin/nvcc --version | sed -n 's/^.*release \(.*\),.*/\1/p')" \ - && export TF_CUDA_COMPUTE_CAPABILITIES=6.1,5.2,3.5 \ - && export TF_NEED_HDFS=0 \ - && export TF_NEED_OPENCL=0 \ - && export TF_NEED_JEMALLOC=1 \ - && export TF_ENABLE_XLA=0 \ - && export TF_NEED_VERBS=0 \ - && export TF_CUDA_CLANG=0 \ - && export TF_CUDNN_VERSION="$(sed -n 's/^#define CUDNN_MAJOR\s*\(.*\).*/\1/p' $CUDNN_INSTALL_PATH/include/cudnn.h)" \ - && export TF_NEED_MKL=0 \ - && export TF_DOWNLOAD_MKL=0 \ - && export TF_NEED_AWS=0 \ - && export TF_NEED_MPI=0 \ - && export TF_NEED_GDR=0 \ - && export TF_NEED_S3=0 \ - && export TF_NEED_OPENCL_SYCL=0 \ - && export TF_SET_ANDROID_WORKSPACE=0 \ - && export TF_NEED_COMPUTECPP=0 \ - && export GCC_HOST_COMPILER_PATH=$(which gcc) \ - && export CC_OPT_FLAGS="-march=native" \ - && export TF_NEED_KAFKA=0 \ - && export TF_NEED_TENSORRT=0 \ - && export TF_NCCL_VERSION=2.4 \ - && export GCC_HOST_COMPILER_PATH=$(which gcc) \ - && export CC_OPT_FLAGS="-march=native" \ - && ./configure \ - && bazel build //tensorflow:libtensorflow_framework.so //tensorflow:libtensorflow_cc.so //tensorflow/tools/pip_package:build_pip_package - -RUN export TF_ROOT=/work/tf \ - && cd $TF_ROOT/tensorflow \ - && bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg \ - && pip3 install $(find /tmp/tensorflow_pkg/ -type f -iname "tensorflow*.whl") \ - && ./tensorflow/contrib/makefile/build_all_linux.sh \ - && mkdir -p /work/tf/installdir/lib \ - && mkdir -p /work/tf/installdir/include \ - && cp bazel-bin/tensorflow/libtensorflow_cc.so /work/tf/installdir/lib \ - && cp bazel-bin/tensorflow/libtensorflow_framework.so /work/tf/installdir/lib \ - && cp tensorflow/contrib/makefile/gen/protobuf/lib/libprotobuf.a /work/tf/installdir/lib \ - && cp tensorflow/contrib/makefile/downloads/nsync/builds/default.linux.c++11/*.a /work/tf/installdir/lib \ - && cp -r bazel-genfiles/* /work/tf/installdir/include/ \ - && cp -r tensorflow/cc /work/tf/installdir/include/tensorflow/ \ - && cp -r tensorflow/core /work/tf/installdir/include/tensorflow/ \ - && cp -r third_party /work/tf/installdir/include/ \ - && cp -r tensorflow/contrib/makefile/gen/protobuf/include/* /work/tf/installdir/include/ \ - && cp -r tensorflow/contrib/makefile/downloads/eigen/Eigen /work/tf/installdir/include/ \ - && cp -r tensorflow/contrib/makefile/downloads/eigen/unsupported /work/tf/installdir/include/ \ - && cp -r tensorflow/contrib/makefile/downloads/eigen/signature_of_eigen3_matrix_library /work/tf/installdir/include/ \ - && cd ${TF_ROOT}/tensorflow/tensorflow/contrib/makefile/downloads/absl \ - && find absl/ -name '*.h' -exec cp --parents \{\} /work/tf/installdir/include/ \; \ - && find absl/ -name '*.inc' -exec cp --parents \{\} /work/tf/installdir/include/ \; \ - && find /work/tf/installdir/ -name "*.cc" -type f -delete \ - && echo "Create symlinks for tensorflow libs" \ - && ln -s /work/tf/installdir/lib/libtensorflow_cc.so /work/tf/installdir/lib/libtensorflow_cc.so.1 \ - && ln -s /work/tf/installdir/lib/libtensorflow_framework.so /work/tf/installdir/lib/libtensorflow_framework.so.1 - -# ---------------------------------------------------------------------------- -# Build OTB: Stage 1 (clone) -# ---------------------------------------------------------------------------- -RUN mkdir -p /work/otb \ - && cd /work/otb \ - && git clone https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb.git otb \ - && cd otb \ - && git checkout release-7.0 - -# ---------------------------------------------------------------------------- -# Build OTB: Stage 2 (superbuild) -# ---------------------------------------------------------------------------- -RUN mkdir -p /work/otb/build \ - && cd /work/otb/build \ - && cmake /work/otb/otb/SuperBuild \ - -DUSE_SYSTEM_BOOST=ON \ - -DUSE_SYSTEM_CURL=ON \ - -DUSE_SYSTEM_EXPAT=ON \ - -DUSE_SYSTEM_FFTW=ON \ - -DUSE_SYSTEM_FREETYPE=ON \ - -DUSE_SYSTEM_GDAL=ON \ - -DUSE_SYSTEM_GEOS=ON \ - -DUSE_SYSTEM_GEOTIFF=ON \ - -DUSE_SYSTEM_GLEW=ON \ - -DUSE_SYSTEM_GLFW=ON \ - -DUSE_SYSTEM_GLUT=ON \ - -DUSE_SYSTEM_GSL=ON \ - -DUSE_SYSTEM_ITK=ON \ - -DUSE_SYSTEM_LIBKML=ON \ - -DUSE_SYSTEM_LIBSVM=ON \ - -DUSE_SYSTEM_MUPARSER=ON \ - -DUSE_SYSTEM_MUPARSERX=ON \ - -DUSE_SYSTEM_OPENCV=ON \ - -DUSE_SYSTEM_OPENTHREADS=ON \ - -DUSE_SYSTEM_OSSIM=ON \ - -DUSE_SYSTEM_PNG=ON \ - -DUSE_SYSTEM_QT5=ON \ - -DUSE_SYSTEM_QWT=ON \ - -DUSE_SYSTEM_TINYXML=ON \ - -DUSE_SYSTEM_ZLIB=ON \ - -DUSE_SYSTEM_SWIG=OFF \ - -DOTB_WRAP_PYTHON=OFF \ - && make -j $(grep -c ^processor /proc/cpuinfo) - -# ---------------------------------------------------------------------------- -# Build OTB: Stage 3 (bindings) -# ---------------------------------------------------------------------------- -RUN cd /work/otb/otb/Modules/Remote \ - && git clone https://github.com/remicres/otbtf.git \ - && cd /work/otb/build/OTB/build \ - && cmake /work/otb/otb \ - -DOTB_WRAP_PYTHON=ON \ - -DPYTHON_EXECUTABLE=/usr/bin/python3.6 \ - -Dopencv_INCLUDE_DIR=/usr/include \ - -DModule_OTBTensorflow=ON \ - -DOTB_USE_TENSORFLOW=ON \ - -DTENSORFLOW_CC_LIB=/work/tf/installdir/lib/libtensorflow_cc.so \ - -DTENSORFLOW_FRAMEWORK_LIB=/work/tf/installdir/lib/libtensorflow_framework.so \ - -Dtensorflow_include_dir=/work/tf/installdir/include/ \ - && cd /work/otb/build/ \ - && make -j $(grep -c ^processor /proc/cpuinfo) - -# ---------------------------------------------------------------------------- -# Add important environment variables -# ---------------------------------------------------------------------------- -ENV PATH="$PATH:/work/otb/superbuild_install/bin/" -ENV PYTHONPATH="/work/otb/superbuild_install/lib/otb/python:$PYTHONPATH" -ENV OTB_APPLICATION_PATH="/work/otb/superbuild_install/lib/otb/applications" -ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/work/otb/superbuild_install/lib/:/work/tf/installdir/lib/" - -# ---------------------------------------------------------------------------- -# Exemple : -# docker build --tag otbtf_image -# docker run -v /path/to/host/:/path/to/mount/ otbtf_image otbcli_ExtractROI -# docker run -ti -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY otbtf_image otbgui_ExtractROI -# ---------------------------------------------------------------------------- - diff --git a/tools/dockerfiles/r1.7/bionic.tf-r1.14.otb-7.0/Dockerfile b/tools/dockerfiles/r1.7/bionic.tf-r1.14.otb-7.0/Dockerfile deleted file mode 100644 index 7995b0c9bf24a660577b425f2e0b7f961dc8e48e..0000000000000000000000000000000000000000 --- a/tools/dockerfiles/r1.7/bionic.tf-r1.14.otb-7.0/Dockerfile +++ /dev/null @@ -1,209 +0,0 @@ -FROM ubuntu:18.04 - -MAINTAINER Remi Cresson <remi.cresson[at]irstea[dot]fr> - -RUN apt-get update -y \ - && apt-get upgrade -y \ - && apt-get install -y --no-install-recommends \ - sudo \ - ca-certificates \ - curl \ - make \ - cmake \ - g++ \ - gcc \ - git \ - libtool \ - swig \ - xvfb \ - wget \ - autoconf \ - automake \ - pkg-config \ - zip \ - zlib1g-dev \ - unzip \ - && rm -rf /var/lib/apt/lists/* - -# ---------------------------------------------------------------------------- -# OTB and TensorFlow dependencies -# ---------------------------------------------------------------------------- -RUN apt-get update -y \ - && apt-get upgrade -y \ - && apt-get install -y --no-install-recommends \ - freeglut3-dev \ - libboost-date-time-dev \ - libboost-filesystem-dev \ - libboost-graph-dev \ - libboost-program-options-dev \ - libboost-system-dev \ - libboost-thread-dev \ - libcurl4-gnutls-dev \ - libexpat1-dev \ - libfftw3-dev \ - libgdal-dev \ - libgeotiff-dev \ - libglew-dev \ - libglfw3-dev \ - libgsl-dev \ - libinsighttoolkit4-dev \ - libkml-dev \ - libmuparser-dev \ - libmuparserx-dev \ - libopencv-core-dev \ - libopencv-ml-dev \ - libopenthreads-dev \ - libossim-dev \ - libpng-dev \ - libqt5opengl5-dev \ - libqwt-qt5-dev \ - libsvm-dev \ - libtinyxml-dev \ - qtbase5-dev \ - qttools5-dev \ - default-jdk \ - python3-pip \ - python3.6-dev \ - python3.6-gdal \ - python3-setuptools \ - libxmu-dev \ - libxi-dev \ - qttools5-dev-tools \ - bison \ - software-properties-common \ - dirmngr \ - apt-transport-https \ - lsb-release \ - gdal-bin \ - && rm -rf /var/lib/apt/lists/* - -# ---------------------------------------------------------------------------- -# Python packages -# ---------------------------------------------------------------------------- -RUN ln -s /usr/bin/python3 /usr/bin/python \ - && python3 -m pip install --upgrade pip \ - && python3 -m pip install pip six numpy wheel mock keras future - -# ---------------------------------------------------------------------------- -# Build TensorFlow -# ---------------------------------------------------------------------------- -RUN export TF_ROOT=/work/tf \ - && mkdir -p ${TF_ROOT}/bazel \ - && cd ${TF_ROOT}/bazel \ - && wget https://github.com/bazelbuild/bazel/releases/download/0.24.1/bazel-0.24.1-installer-linux-x86_64.sh \ - && chmod +x bazel-0.24.1-installer-linux-x86_64.sh \ - && ./bazel-0.24.1-installer-linux-x86_64.sh - -RUN export TF_ROOT=/work/tf \ - && export PATH="$PATH:$HOME/bin" \ - && cd $TF_ROOT \ - && git clone https://github.com/tensorflow/tensorflow.git \ - && cd tensorflow \ - && git checkout r1.14 \ - && echo "\n\n\n\n\n\n\n\n\n" | ./configure \ - && bazel build //tensorflow:libtensorflow_framework.so //tensorflow:libtensorflow_cc.so //tensorflow/tools/pip_package:build_pip_package - -RUN export TF_ROOT=/work/tf \ - && cd $TF_ROOT/tensorflow \ - && bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg \ - && pip3 install $(find /tmp/tensorflow_pkg/ -type f -iname "tensorflow*.whl") \ - && ./tensorflow/contrib/makefile/build_all_linux.sh \ - && mkdir -p /work/tf/installdir/lib \ - && mkdir -p /work/tf/installdir/include \ - && cp bazel-bin/tensorflow/libtensorflow_cc.so /work/tf/installdir/lib \ - && cp bazel-bin/tensorflow/libtensorflow_framework.so /work/tf/installdir/lib \ - && cp tensorflow/contrib/makefile/gen/protobuf/lib/libprotobuf.a /work/tf/installdir/lib \ - && cp tensorflow/contrib/makefile/downloads/nsync/builds/default.linux.c++11/*.a /work/tf/installdir/lib \ - && cp -r bazel-genfiles/* /work/tf/installdir/include/ \ - && cp -r tensorflow/cc /work/tf/installdir/include/tensorflow/ \ - && cp -r tensorflow/core /work/tf/installdir/include/tensorflow/ \ - && cp -r third_party /work/tf/installdir/include/ \ - && cp -r tensorflow/contrib/makefile/gen/protobuf/include/* /work/tf/installdir/include/ \ - && cp -r tensorflow/contrib/makefile/downloads/eigen/Eigen /work/tf/installdir/include/ \ - && cp -r tensorflow/contrib/makefile/downloads/eigen/unsupported /work/tf/installdir/include/ \ - && cp -r tensorflow/contrib/makefile/downloads/eigen/signature_of_eigen3_matrix_library /work/tf/installdir/include/ \ - && cd ${TF_ROOT}/tensorflow/tensorflow/contrib/makefile/downloads/absl \ - && find absl/ -name '*.h' -exec cp --parents \{\} /work/tf/installdir/include/ \; \ - && find absl/ -name '*.inc' -exec cp --parents \{\} /work/tf/installdir/include/ \; \ - && find /work/tf/installdir/ -name "*.cc" -type f -delete - -RUN echo "Create symlinks for tensorflow libs" \ - && ln -s /work/tf/installdir/lib/libtensorflow_cc.so /work/tf/installdir/lib/libtensorflow_cc.so.1 \ - && ln -s /work/tf/installdir/lib/libtensorflow_framework.so /work/tf/installdir/lib/libtensorflow_framework.so.1 - -# ---------------------------------------------------------------------------- -# Build OTB: Stage 1 (clone) -# ---------------------------------------------------------------------------- -RUN mkdir -p /work/otb \ - && cd /work/otb \ - && git clone https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb.git otb \ - && cd otb \ - && git checkout release-7.0 - -# ---------------------------------------------------------------------------- -# Build OTB: Stage 2 (superbuild) -# ---------------------------------------------------------------------------- -RUN mkdir -p /work/otb/build \ - && cd /work/otb/build \ - && cmake /work/otb/otb/SuperBuild \ - -DUSE_SYSTEM_BOOST=ON \ - -DUSE_SYSTEM_CURL=ON \ - -DUSE_SYSTEM_EXPAT=ON \ - -DUSE_SYSTEM_FFTW=ON \ - -DUSE_SYSTEM_FREETYPE=ON \ - -DUSE_SYSTEM_GDAL=ON \ - -DUSE_SYSTEM_GEOS=ON \ - -DUSE_SYSTEM_GEOTIFF=ON \ - -DUSE_SYSTEM_GLEW=ON \ - -DUSE_SYSTEM_GLFW=ON \ - -DUSE_SYSTEM_GLUT=ON \ - -DUSE_SYSTEM_GSL=ON \ - -DUSE_SYSTEM_ITK=ON \ - -DUSE_SYSTEM_LIBKML=ON \ - -DUSE_SYSTEM_LIBSVM=ON \ - -DUSE_SYSTEM_MUPARSER=ON \ - -DUSE_SYSTEM_MUPARSERX=ON \ - -DUSE_SYSTEM_OPENCV=ON \ - -DUSE_SYSTEM_OPENTHREADS=ON \ - -DUSE_SYSTEM_OSSIM=ON \ - -DUSE_SYSTEM_PNG=ON \ - -DUSE_SYSTEM_QT5=ON \ - -DUSE_SYSTEM_QWT=ON \ - -DUSE_SYSTEM_TINYXML=ON \ - -DUSE_SYSTEM_ZLIB=ON \ - -DUSE_SYSTEM_SWIG=OFF \ - -DOTB_WRAP_PYTHON=OFF \ - && make -j $(grep -c ^processor /proc/cpuinfo) - -# ---------------------------------------------------------------------------- -# Build OTB: Stage 3 (bindings) -# ---------------------------------------------------------------------------- -RUN cd /work/otb/otb/Modules/Remote \ - && git clone https://github.com/remicres/otbtf.git \ - && cd /work/otb/build/OTB/build \ - && cmake /work/otb/otb \ - -DOTB_WRAP_PYTHON=ON \ - -DPYTHON_EXECUTABLE=/usr/bin/python3.6 \ - -Dopencv_INCLUDE_DIR=/usr/include \ - -DModule_OTBTensorflow=ON \ - -DOTB_USE_TENSORFLOW=ON \ - -DTENSORFLOW_CC_LIB=/work/tf/installdir/lib/libtensorflow_cc.so \ - -DTENSORFLOW_FRAMEWORK_LIB=/work/tf/installdir/lib/libtensorflow_framework.so \ - -Dtensorflow_include_dir=/work/tf/installdir/include/ \ - && cd /work/otb/build/ \ - && make -j $(grep -c ^processor /proc/cpuinfo) - -# ---------------------------------------------------------------------------- -# Add important environment variables -# ---------------------------------------------------------------------------- -ENV PATH="$PATH:/work/otb/superbuild_install/bin/" -ENV PYTHONPATH="/work/otb/superbuild_install/lib/otb/python:$PYTHONPATH" -ENV OTB_APPLICATION_PATH="/work/otb/superbuild_install/lib/otb/applications" -ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/work/otb/superbuild_install/lib/:/work/tf/installdir/lib/" - -# ---------------------------------------------------------------------------- -# Exemple : -# docker build --tag otbtf_image -# docker run -v /path/to/host/:/path/to/mount/ otbtf_image otbcli_ExtractROI -# docker run -ti -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY otbtf_image otbgui_ExtractROI -# ---------------------------------------------------------------------------- diff --git a/tools/dockerfiles/r2.0/bionic.tf-r2.1.otb-7.1-CPU-MKL/Dockerfile b/tools/dockerfiles/r2.0/bionic.tf-r2.1.otb-7.1-CPU-MKL/Dockerfile deleted file mode 100644 index 5501a3a509a777e63d153683e7e82b62ed2035f2..0000000000000000000000000000000000000000 --- a/tools/dockerfiles/r2.0/bionic.tf-r2.1.otb-7.1-CPU-MKL/Dockerfile +++ /dev/null @@ -1,254 +0,0 @@ -FROM ubuntu:18.04 - -MAINTAINER Remi Cresson <remi.cresson[at]irstea[dot]fr> - -RUN apt-get update -y \ - && apt-get upgrade -y \ - && apt-get install -y --no-install-recommends \ - sudo \ - ca-certificates \ - curl \ - make \ - cmake \ - g++ \ - gcc \ - git \ - libtool \ - swig \ - xvfb \ - wget \ - autoconf \ - automake \ - pkg-config \ - zip \ - zlib1g-dev \ - unzip \ - && rm -rf /var/lib/apt/lists/* - -# ---------------------------------------------------------------------------- -# OTB and TensorFlow dependencies -# ---------------------------------------------------------------------------- -RUN apt-get update -y \ - && apt-get upgrade -y \ - && apt-get install -y --no-install-recommends \ - freeglut3-dev \ - libboost-date-time-dev \ - libboost-filesystem-dev \ - libboost-graph-dev \ - libboost-program-options-dev \ - libboost-system-dev \ - libboost-thread-dev \ - libcurl4-gnutls-dev \ - libexpat1-dev \ - libfftw3-dev \ - libgdal-dev \ - libgeotiff-dev \ - libglew-dev \ - libglfw3-dev \ - libgsl-dev \ - libinsighttoolkit4-dev \ - libkml-dev \ - libmuparser-dev \ - libmuparserx-dev \ - libopencv-core-dev \ - libopencv-ml-dev \ - libopenthreads-dev \ - libossim-dev \ - libpng-dev \ - libqt5opengl5-dev \ - libqwt-qt5-dev \ - libsvm-dev \ - libtinyxml-dev \ - qtbase5-dev \ - qttools5-dev \ - default-jdk \ - python3-pip \ - python3.6-dev \ - python3.6-gdal \ - python3-setuptools \ - libxmu-dev \ - libxi-dev \ - qttools5-dev-tools \ - bison \ - software-properties-common \ - dirmngr \ - apt-transport-https \ - lsb-release \ - gdal-bin \ - && rm -rf /var/lib/apt/lists/* - -# ---------------------------------------------------------------------------- -# Python packages -# ---------------------------------------------------------------------------- -RUN ln -s /usr/bin/python3 /usr/bin/python \ - && python3 -m pip install --upgrade pip \ - && python3 -m pip install pip six numpy wheel mock keras keras_applications keras_preprocessing future setuptools - -# ---------------------------------------------------------------------------- -# Build TensorFlow -# ---------------------------------------------------------------------------- -RUN export TF_ROOT=/work/tf \ - && mkdir -p ${TF_ROOT}/bazel \ - && cd ${TF_ROOT}/bazel \ - && wget https://github.com/bazelbuild/bazel/releases/download/0.29.1/bazel-0.29.1-installer-linux-x86_64.sh \ - && chmod +x bazel-0.29.1-installer-linux-x86_64.sh \ - && ./bazel-0.29.1-installer-linux-x86_64.sh - -RUN export TF_ROOT=/work/tf \ - && export PATH="$PATH:$HOME/bin" \ - && cd $TF_ROOT \ - && git clone https://github.com/tensorflow/tensorflow.git \ - && cd tensorflow \ - && git checkout r2.1 \ - && export PYTHON_BIN_PATH=$(which python) \ - && export PYTHON_LIB_PATH="$($PYTHON_BIN_PATH -c 'import site; print(site.getsitepackages()[0])')" \ - && export PYTHONPATH=/usr/lib/ \ - && export PYTHON_ARG=/usr/lib/ \ - && export TF_NEED_GCP=0 \ - && export TF_NEED_CUDA=0 \ - && export TF_NEED_HDFS=0 \ - && export TF_NEED_OPENCL=0 \ - && export TF_NEED_JEMALLOC=1 \ - && export TF_ENABLE_XLA=0 \ - && export TF_NEED_VERBS=0 \ - && export TF_NEED_MKL=1 \ - && export TF_DOWNLOAD_MKL=1 \ - && export TF_NEED_AWS=0 \ - && export TF_NEED_MPI=0 \ - && export TF_NEED_GDR=0 \ - && export TF_NEED_S3=0 \ - && export TF_NEED_OPENCL_SYCL=0 \ - && export TF_SET_ANDROID_WORKSPACE=0 \ - && export TF_NEED_COMPUTECPP=0 \ - && export GCC_HOST_COMPILER_PATH=$(which gcc) \ - && export CC_OPT_FLAGS="-march=native" \ - && export TF_NEED_KAFKA=0 \ - && export TF_NEED_TENSORRT=0 \ - && export TF_NCCL_VERSION=2.4 \ - && export GCC_HOST_COMPILER_PATH=$(which gcc) \ - && export CC_OPT_FLAGS="-march=native" \ - && ./configure \ - && bazel build -c opt --copt=-march=native --copt=-mfpmath=both //tensorflow:libtensorflow_framework.so //tensorflow:libtensorflow_cc.so //tensorflow/tools/pip_package:build_pip_package --noincompatible_do_not_split_linking_cmdline - -# ---------------------------------------------------------------------------- -# Build protobuf -# ---------------------------------------------------------------------------- -RUN export TF_ROOT=/work/tf \ - && mkdir -p $TF_ROOT/installdir \ - && cd $TF_ROOT \ - && wget https://github.com/google/protobuf/releases/download/v3.8.0/protobuf-cpp-3.8.0.tar.gz \ - && tar -xvf protobuf-cpp-3.8.0.tar.gz \ - && cd protobuf-3.8.0 \ - && ./configure --prefix=/work/tf/installdir/ \ - && make install -j $(grep -c ^processor /proc/cpuinfo) - -# ---------------------------------------------------------------------------- -# Prepare TF dependencies -# ---------------------------------------------------------------------------- -RUN export TF_ROOT=/work/tf \ - && cd $TF_ROOT/tensorflow \ - && bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg \ - && pip3 install $(find /tmp/tensorflow_pkg/ -type f -iname "tensorflow*.whl") \ - && ./tensorflow/lite/tools/make/download_dependencies.sh \ - && ./tensorflow/lite/tools/make/build_lib.sh \ - && mkdir -p /work/tf/installdir/lib \ - && mkdir -p /work/tf/installdir/include \ - && cp bazel-bin/tensorflow/libtensorflow_cc.so* /work/tf/installdir/lib \ - && cp bazel-bin/tensorflow/libtensorflow_framework.so* /work/tf/installdir/lib \ - && cp -r bazel-genfiles/* /work/tf/installdir/include \ - && cp -r tensorflow/cc /work/tf/installdir/include/tensorflow \ - && cp -r tensorflow/core /work/tf/installdir/include/tensorflow \ - && cp -r third_party /work/tf/installdir/include \ - && cp -r bazel-tensorflow/external/eigen_archive/unsupported /work/tf/installdir/include \ - && cp -r bazel-tensorflow/external/eigen_archive/Eigen /work/tf/installdir/include \ - && cp -r tensorflow/lite/tools/make/downloads/absl/absl /work/tf/installdir/include - -# ---------------------------------------------------------------------------- -# Build OTB: Stage 1 (clone) -# ---------------------------------------------------------------------------- -RUN mkdir -p /work/otb \ - && cd /work/otb \ - && git clone https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb.git otb \ - && cd otb \ - && git checkout release-7.1 - -# ---------------------------------------------------------------------------- -# Build OTB: Stage 2 (superbuild) -# ---------------------------------------------------------------------------- -RUN mkdir -p /work/otb/build \ - && cd /work/otb/build \ - && cmake /work/otb/otb/SuperBuild \ - -DUSE_SYSTEM_BOOST=ON \ - -DUSE_SYSTEM_CURL=ON \ - -DUSE_SYSTEM_EXPAT=ON \ - -DUSE_SYSTEM_FFTW=ON \ - -DUSE_SYSTEM_FREETYPE=ON \ - -DUSE_SYSTEM_GDAL=ON \ - -DUSE_SYSTEM_GEOS=ON \ - -DUSE_SYSTEM_GEOTIFF=ON \ - -DUSE_SYSTEM_GLEW=ON \ - -DUSE_SYSTEM_GLFW=ON \ - -DUSE_SYSTEM_GLUT=ON \ - -DUSE_SYSTEM_GSL=ON \ - -DUSE_SYSTEM_ITK=ON \ - -DUSE_SYSTEM_LIBKML=ON \ - -DUSE_SYSTEM_LIBSVM=ON \ - -DUSE_SYSTEM_MUPARSER=ON \ - -DUSE_SYSTEM_MUPARSERX=ON \ - -DUSE_SYSTEM_OPENCV=ON \ - -DUSE_SYSTEM_OPENTHREADS=ON \ - -DUSE_SYSTEM_OSSIM=ON \ - -DUSE_SYSTEM_PNG=ON \ - -DUSE_SYSTEM_QT5=ON \ - -DUSE_SYSTEM_QWT=ON \ - -DUSE_SYSTEM_TINYXML=ON \ - -DUSE_SYSTEM_ZLIB=ON \ - -DUSE_SYSTEM_SWIG=OFF \ - -DOTB_WRAP_PYTHON=OFF \ - && make -j $(grep -c ^processor /proc/cpuinfo) - -# ---------------------------------------------------------------------------- -# Build OTB: Stage 3 (bindings) -# ---------------------------------------------------------------------------- -RUN cd /work/otb/otb/Modules/Remote \ - && git clone -b release-2.0-rc2 https://github.com/remicres/otbtf.git \ - && cd /work/otb/build/OTB/build \ - && cmake /work/otb/otb \ - -DOTB_WRAP_PYTHON=ON \ - -DPYTHON_EXECUTABLE=/usr/bin/python3.6 \ - -Dopencv_INCLUDE_DIR=/usr/include \ - -DModule_OTBTensorflow=ON \ - -DOTB_USE_TENSORFLOW=ON \ - -DTENSORFLOW_CC_LIB=/work/tf/installdir/lib/libtensorflow_cc.so \ - -DTENSORFLOW_FRAMEWORK_LIB=/work/tf/installdir/lib/libtensorflow_framework.so \ - -Dtensorflow_include_dir=/work/tf/installdir/include/ \ - && cd /work/otb/build/ \ - && make -j $(grep -c ^processor /proc/cpuinfo) - -# ---------------------------------------------------------------------------- -# Add important environment variables -# ---------------------------------------------------------------------------- -ENV PATH="$PATH:/work/otb/superbuild_install/bin/" -ENV PYTHONPATH="/work/otb/superbuild_install/lib/otb/python:/work/otb/otb/Modules/Remote/otbtf/python:$PYTHONPATH" -ENV OTB_APPLICATION_PATH="/work/otb/superbuild_install/lib/otb/applications" -ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/work/otb/superbuild_install/lib/:/work/tf/installdir/lib/" - -# ---------------------------------------------------------------------------- -# Clean -# ---------------------------------------------------------------------------- -RUN rm -rf /tmp/* /root/.cache && apt-get clean - -# ---------------------------------------------------------------------------- -# Add one user -# ---------------------------------------------------------------------------- -RUN useradd -s /bin/bash -m otbuser -USER otbuser -WORKDIR /home/otbuser - -# ---------------------------------------------------------------------------- -# Exemple : -# docker build --tag otbtf_image -# docker run -v /path/to/host/:/path/to/mount/ otbtf_image otbcli_ExtractROI -# docker run -ti -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY otbtf_image otbgui_ExtractROI -# ---------------------------------------------------------------------------- - diff --git a/tools/dockerfiles/r2.0/bionic.tf-r2.1.otb-7.1-CPU/Dockerfile b/tools/dockerfiles/r2.0/bionic.tf-r2.1.otb-7.1-CPU/Dockerfile deleted file mode 100644 index 15a65606932cb608d098d01aadffcdfb7a75ca7b..0000000000000000000000000000000000000000 --- a/tools/dockerfiles/r2.0/bionic.tf-r2.1.otb-7.1-CPU/Dockerfile +++ /dev/null @@ -1,254 +0,0 @@ -FROM ubuntu:18.04 - -MAINTAINER Remi Cresson <remi.cresson[at]irstea[dot]fr> - -RUN apt-get update -y \ - && apt-get upgrade -y \ - && apt-get install -y --no-install-recommends \ - sudo \ - ca-certificates \ - curl \ - make \ - cmake \ - g++ \ - gcc \ - git \ - libtool \ - swig \ - xvfb \ - wget \ - autoconf \ - automake \ - pkg-config \ - zip \ - zlib1g-dev \ - unzip \ - && rm -rf /var/lib/apt/lists/* - -# ---------------------------------------------------------------------------- -# OTB and TensorFlow dependencies -# ---------------------------------------------------------------------------- -RUN apt-get update -y \ - && apt-get upgrade -y \ - && apt-get install -y --no-install-recommends \ - freeglut3-dev \ - libboost-date-time-dev \ - libboost-filesystem-dev \ - libboost-graph-dev \ - libboost-program-options-dev \ - libboost-system-dev \ - libboost-thread-dev \ - libcurl4-gnutls-dev \ - libexpat1-dev \ - libfftw3-dev \ - libgdal-dev \ - libgeotiff-dev \ - libglew-dev \ - libglfw3-dev \ - libgsl-dev \ - libinsighttoolkit4-dev \ - libkml-dev \ - libmuparser-dev \ - libmuparserx-dev \ - libopencv-core-dev \ - libopencv-ml-dev \ - libopenthreads-dev \ - libossim-dev \ - libpng-dev \ - libqt5opengl5-dev \ - libqwt-qt5-dev \ - libsvm-dev \ - libtinyxml-dev \ - qtbase5-dev \ - qttools5-dev \ - default-jdk \ - python3-pip \ - python3.6-dev \ - python3.6-gdal \ - python3-setuptools \ - libxmu-dev \ - libxi-dev \ - qttools5-dev-tools \ - bison \ - software-properties-common \ - dirmngr \ - apt-transport-https \ - lsb-release \ - gdal-bin \ - && rm -rf /var/lib/apt/lists/* - -# ---------------------------------------------------------------------------- -# Python packages -# ---------------------------------------------------------------------------- -RUN ln -s /usr/bin/python3 /usr/bin/python \ - && python3 -m pip install --upgrade pip \ - && python3 -m pip install pip six numpy wheel mock keras keras_applications keras_preprocessing future setuptools - -# ---------------------------------------------------------------------------- -# Build TensorFlow -# ---------------------------------------------------------------------------- -RUN export TF_ROOT=/work/tf \ - && mkdir -p ${TF_ROOT}/bazel \ - && cd ${TF_ROOT}/bazel \ - && wget https://github.com/bazelbuild/bazel/releases/download/0.29.1/bazel-0.29.1-installer-linux-x86_64.sh \ - && chmod +x bazel-0.29.1-installer-linux-x86_64.sh \ - && ./bazel-0.29.1-installer-linux-x86_64.sh - -RUN export TF_ROOT=/work/tf \ - && export PATH="$PATH:$HOME/bin" \ - && cd $TF_ROOT \ - && git clone https://github.com/tensorflow/tensorflow.git \ - && cd tensorflow \ - && git checkout r2.1 \ - && export PYTHON_BIN_PATH=$(which python) \ - && export PYTHON_LIB_PATH="$($PYTHON_BIN_PATH -c 'import site; print(site.getsitepackages()[0])')" \ - && export PYTHONPATH=/usr/lib/ \ - && export PYTHON_ARG=/usr/lib/ \ - && export TF_NEED_GCP=0 \ - && export TF_NEED_CUDA=0 \ - && export TF_NEED_HDFS=0 \ - && export TF_NEED_OPENCL=0 \ - && export TF_NEED_JEMALLOC=1 \ - && export TF_ENABLE_XLA=0 \ - && export TF_NEED_VERBS=0 \ - && export TF_NEED_MKL=0 \ - && export TF_DOWNLOAD_MKL=0 \ - && export TF_NEED_AWS=0 \ - && export TF_NEED_MPI=0 \ - && export TF_NEED_GDR=0 \ - && export TF_NEED_S3=0 \ - && export TF_NEED_OPENCL_SYCL=0 \ - && export TF_SET_ANDROID_WORKSPACE=0 \ - && export TF_NEED_COMPUTECPP=0 \ - && export GCC_HOST_COMPILER_PATH=$(which gcc) \ - && export CC_OPT_FLAGS="-march=native" \ - && export TF_NEED_KAFKA=0 \ - && export TF_NEED_TENSORRT=0 \ - && export TF_NCCL_VERSION=2.4 \ - && export GCC_HOST_COMPILER_PATH=$(which gcc) \ - && export CC_OPT_FLAGS="-march=native" \ - && ./configure \ - && bazel build //tensorflow:libtensorflow_framework.so //tensorflow:libtensorflow_cc.so //tensorflow/tools/pip_package:build_pip_package --noincompatible_do_not_split_linking_cmdline - -# ---------------------------------------------------------------------------- -# Build protobuf -# ---------------------------------------------------------------------------- -RUN export TF_ROOT=/work/tf \ - && mkdir -p $TF_ROOT/installdir \ - && cd $TF_ROOT \ - && wget https://github.com/google/protobuf/releases/download/v3.8.0/protobuf-cpp-3.8.0.tar.gz \ - && tar -xvf protobuf-cpp-3.8.0.tar.gz \ - && cd protobuf-3.8.0 \ - && ./configure --prefix=/work/tf/installdir/ \ - && make install -j $(grep -c ^processor /proc/cpuinfo) - -# ---------------------------------------------------------------------------- -# Prepare TF dependencies -# ---------------------------------------------------------------------------- -RUN export TF_ROOT=/work/tf \ - && cd $TF_ROOT/tensorflow \ - && bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg \ - && pip3 install $(find /tmp/tensorflow_pkg/ -type f -iname "tensorflow*.whl") \ - && ./tensorflow/lite/tools/make/download_dependencies.sh \ - && ./tensorflow/lite/tools/make/build_lib.sh \ - && mkdir -p /work/tf/installdir/lib \ - && mkdir -p /work/tf/installdir/include \ - && cp bazel-bin/tensorflow/libtensorflow_cc.so* /work/tf/installdir/lib \ - && cp bazel-bin/tensorflow/libtensorflow_framework.so* /work/tf/installdir/lib \ - && cp -r bazel-genfiles/* /work/tf/installdir/include \ - && cp -r tensorflow/cc /work/tf/installdir/include/tensorflow \ - && cp -r tensorflow/core /work/tf/installdir/include/tensorflow \ - && cp -r third_party /work/tf/installdir/include \ - && cp -r bazel-tensorflow/external/eigen_archive/unsupported /work/tf/installdir/include \ - && cp -r bazel-tensorflow/external/eigen_archive/Eigen /work/tf/installdir/include \ - && cp -r tensorflow/lite/tools/make/downloads/absl/absl /work/tf/installdir/include - -# ---------------------------------------------------------------------------- -# Build OTB: Stage 1 (clone) -# ---------------------------------------------------------------------------- -RUN mkdir -p /work/otb \ - && cd /work/otb \ - && git clone https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb.git otb \ - && cd otb \ - && git checkout release-7.1 - -# ---------------------------------------------------------------------------- -# Build OTB: Stage 2 (superbuild) -# ---------------------------------------------------------------------------- -RUN mkdir -p /work/otb/build \ - && cd /work/otb/build \ - && cmake /work/otb/otb/SuperBuild \ - -DUSE_SYSTEM_BOOST=ON \ - -DUSE_SYSTEM_CURL=ON \ - -DUSE_SYSTEM_EXPAT=ON \ - -DUSE_SYSTEM_FFTW=ON \ - -DUSE_SYSTEM_FREETYPE=ON \ - -DUSE_SYSTEM_GDAL=ON \ - -DUSE_SYSTEM_GEOS=ON \ - -DUSE_SYSTEM_GEOTIFF=ON \ - -DUSE_SYSTEM_GLEW=ON \ - -DUSE_SYSTEM_GLFW=ON \ - -DUSE_SYSTEM_GLUT=ON \ - -DUSE_SYSTEM_GSL=ON \ - -DUSE_SYSTEM_ITK=ON \ - -DUSE_SYSTEM_LIBKML=ON \ - -DUSE_SYSTEM_LIBSVM=ON \ - -DUSE_SYSTEM_MUPARSER=ON \ - -DUSE_SYSTEM_MUPARSERX=ON \ - -DUSE_SYSTEM_OPENCV=ON \ - -DUSE_SYSTEM_OPENTHREADS=ON \ - -DUSE_SYSTEM_OSSIM=ON \ - -DUSE_SYSTEM_PNG=ON \ - -DUSE_SYSTEM_QT5=ON \ - -DUSE_SYSTEM_QWT=ON \ - -DUSE_SYSTEM_TINYXML=ON \ - -DUSE_SYSTEM_ZLIB=ON \ - -DUSE_SYSTEM_SWIG=OFF \ - -DOTB_WRAP_PYTHON=OFF \ - && make -j $(grep -c ^processor /proc/cpuinfo) - -# ---------------------------------------------------------------------------- -# Build OTB: Stage 3 (bindings) -# ---------------------------------------------------------------------------- -RUN cd /work/otb/otb/Modules/Remote \ - && git clone -b release-2.0-rc2 https://github.com/remicres/otbtf.git \ - && cd /work/otb/build/OTB/build \ - && cmake /work/otb/otb \ - -DOTB_WRAP_PYTHON=ON \ - -DPYTHON_EXECUTABLE=/usr/bin/python3.6 \ - -Dopencv_INCLUDE_DIR=/usr/include \ - -DModule_OTBTensorflow=ON \ - -DOTB_USE_TENSORFLOW=ON \ - -DTENSORFLOW_CC_LIB=/work/tf/installdir/lib/libtensorflow_cc.so \ - -DTENSORFLOW_FRAMEWORK_LIB=/work/tf/installdir/lib/libtensorflow_framework.so \ - -Dtensorflow_include_dir=/work/tf/installdir/include/ \ - && cd /work/otb/build/ \ - && make -j $(grep -c ^processor /proc/cpuinfo) - -# ---------------------------------------------------------------------------- -# Add important environment variables -# ---------------------------------------------------------------------------- -ENV PATH="$PATH:/work/otb/superbuild_install/bin/" -ENV PYTHONPATH="/work/otb/superbuild_install/lib/otb/python:/work/otb/otb/Modules/Remote/otbtf/python:$PYTHONPATH" -ENV OTB_APPLICATION_PATH="/work/otb/superbuild_install/lib/otb/applications" -ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/work/otb/superbuild_install/lib/:/work/tf/installdir/lib/" - -# ---------------------------------------------------------------------------- -# Clean -# ---------------------------------------------------------------------------- -RUN rm -rf /tmp/* /root/.cache && apt-get clean - -# ---------------------------------------------------------------------------- -# Add one user -# ---------------------------------------------------------------------------- -RUN useradd -s /bin/bash -m otbuser -USER otbuser -WORKDIR /home/otbuser - -# ---------------------------------------------------------------------------- -# Exemple : -# docker build --tag otbtf_image -# docker run -v /path/to/host/:/path/to/mount/ otbtf_image otbcli_ExtractROI -# docker run -ti -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY otbtf_image otbgui_ExtractROI -# ---------------------------------------------------------------------------- - diff --git a/tools/dockerfiles/r2.0/bionic.tf-r2.1.otb-7.1-GPU/Dockerfile b/tools/dockerfiles/r2.0/bionic.tf-r2.1.otb-7.1-GPU/Dockerfile deleted file mode 100644 index dc6b63c9e962925482608eef62b5ea773daa6864..0000000000000000000000000000000000000000 --- a/tools/dockerfiles/r2.0/bionic.tf-r2.1.otb-7.1-GPU/Dockerfile +++ /dev/null @@ -1,261 +0,0 @@ -FROM nvidia/cuda:10.1-cudnn7-devel-ubuntu18.04 - -MAINTAINER Remi Cresson <remi.cresson[at]irstea[dot]fr> - -RUN apt-get update -y \ - && apt-get upgrade -y \ - && apt-get install -y --no-install-recommends \ - sudo \ - ca-certificates \ - curl \ - make \ - cmake \ - g++ \ - gcc \ - git \ - libtool \ - swig \ - xvfb \ - wget \ - autoconf \ - automake \ - pkg-config \ - zip \ - zlib1g-dev \ - unzip \ - && rm -rf /var/lib/apt/lists/* - -# ---------------------------------------------------------------------------- -# OTB and TensorFlow dependencies -# ---------------------------------------------------------------------------- -RUN apt-get update -y \ - && apt-get upgrade -y \ - && apt-get install -y --no-install-recommends \ - freeglut3-dev \ - libboost-date-time-dev \ - libboost-filesystem-dev \ - libboost-graph-dev \ - libboost-program-options-dev \ - libboost-system-dev \ - libboost-thread-dev \ - libcurl4-gnutls-dev \ - libexpat1-dev \ - libfftw3-dev \ - libgdal-dev \ - libgeotiff-dev \ - libglew-dev \ - libglfw3-dev \ - libgsl-dev \ - libinsighttoolkit4-dev \ - libkml-dev \ - libmuparser-dev \ - libmuparserx-dev \ - libopencv-core-dev \ - libopencv-ml-dev \ - libopenthreads-dev \ - libossim-dev \ - libpng-dev \ - libqt5opengl5-dev \ - libqwt-qt5-dev \ - libsvm-dev \ - libtinyxml-dev \ - qtbase5-dev \ - qttools5-dev \ - default-jdk \ - python3-pip \ - python3.6-dev \ - python3.6-gdal \ - python3-setuptools \ - libxmu-dev \ - libxi-dev \ - qttools5-dev-tools \ - bison \ - software-properties-common \ - dirmngr \ - apt-transport-https \ - lsb-release \ - gdal-bin \ - && rm -rf /var/lib/apt/lists/* - -# ---------------------------------------------------------------------------- -# Python packages -# ---------------------------------------------------------------------------- -RUN ln -s /usr/bin/python3 /usr/bin/python \ - && python3 -m pip install --upgrade pip \ - && python3 -m pip install pip six numpy wheel mock keras keras_applications keras_preprocessing future setuptools - -# ---------------------------------------------------------------------------- -# Build TensorFlow -# ---------------------------------------------------------------------------- -RUN export TF_ROOT=/work/tf \ - && mkdir -p ${TF_ROOT}/bazel \ - && cd ${TF_ROOT}/bazel \ - && wget https://github.com/bazelbuild/bazel/releases/download/0.29.1/bazel-0.29.1-installer-linux-x86_64.sh \ - && chmod +x bazel-0.29.1-installer-linux-x86_64.sh \ - && ./bazel-0.29.1-installer-linux-x86_64.sh - -RUN export TF_ROOT=/work/tf \ - && export PATH="$PATH:$HOME/bin" \ - && cd $TF_ROOT \ - && git clone https://github.com/tensorflow/tensorflow.git \ - && cd tensorflow \ - && git checkout r2.1 \ - && export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64/:/usr/local/cuda/lib64/stubs/" \ - && export PYTHON_BIN_PATH=$(which python) \ - && export PYTHON_LIB_PATH="$($PYTHON_BIN_PATH -c 'import site; print(site.getsitepackages()[0])')" \ - && export PYTHONPATH=/usr/lib/ \ - && export PYTHON_ARG=/usr/lib/ \ - && export CUDA_TOOLKIT_PATH=/usr/local/cuda-10.1/ \ - && export CUDNN_INSTALL_PATH=/usr/ \ - && export TF_NEED_GCP=0 \ - && export TF_NEED_CUDA=1 \ - && export TF_CUDA_VERSION="$($CUDA_TOOLKIT_PATH/bin/nvcc --version | sed -n 's/^.*release \(.*\),.*/\1/p')" \ - && export TF_CUDA_COMPUTE_CAPABILITIES=7.5,6.1,5.2 \ - && export TF_NEED_HDFS=0 \ - && export TF_NEED_OPENCL=0 \ - && export TF_NEED_JEMALLOC=1 \ - && export TF_ENABLE_XLA=1 \ - && export TF_NEED_VERBS=0 \ - && export TF_CUDA_CLANG=0 \ - && export TF_CUDNN_VERSION="$(sed -n 's/^#define CUDNN_MAJOR\s*\(.*\).*/\1/p' $CUDNN_INSTALL_PATH/include/cudnn.h)" \ - && export TF_NEED_MKL=0 \ - && export TF_DOWNLOAD_MKL=0 \ - && export TF_NEED_AWS=0 \ - && export TF_NEED_MPI=0 \ - && export TF_NEED_GDR=0 \ - && export TF_NEED_S3=0 \ - && export TF_NEED_OPENCL_SYCL=0 \ - && export TF_SET_ANDROID_WORKSPACE=0 \ - && export TF_NEED_COMPUTECPP=0 \ - && export GCC_HOST_COMPILER_PATH=$(which gcc) \ - && export CC_OPT_FLAGS="-march=native" \ - && export TF_NEED_KAFKA=0 \ - && export TF_NEED_TENSORRT=0 \ - && export TF_NCCL_VERSION=2.4 \ - && export GCC_HOST_COMPILER_PATH=$(which gcc) \ - && export CC_OPT_FLAGS="-march=native" \ - && ./configure \ - && bazel build //tensorflow:libtensorflow_framework.so //tensorflow:libtensorflow_cc.so //tensorflow/tools/pip_package:build_pip_package --noincompatible_do_not_split_linking_cmdline - -# ---------------------------------------------------------------------------- -# Build protobuf -# ---------------------------------------------------------------------------- -RUN export TF_ROOT=/work/tf \ - && mkdir -p $TF_ROOT/installdir \ - && cd $TF_ROOT \ - && wget https://github.com/google/protobuf/releases/download/v3.8.0/protobuf-cpp-3.8.0.tar.gz \ - && tar -xvf protobuf-cpp-3.8.0.tar.gz \ - && cd protobuf-3.8.0 \ - && ./configure --prefix=/work/tf/installdir/ \ - && make install -j $(grep -c ^processor /proc/cpuinfo) - -# ---------------------------------------------------------------------------- -# Prepare TF dependencies -# ---------------------------------------------------------------------------- -RUN export TF_ROOT=/work/tf \ - && cd $TF_ROOT/tensorflow \ - && bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg \ - && pip3 install $(find /tmp/tensorflow_pkg/ -type f -iname "tensorflow*.whl") \ - && ./tensorflow/lite/tools/make/download_dependencies.sh \ - && ./tensorflow/lite/tools/make/build_lib.sh \ - && mkdir -p /work/tf/installdir/lib \ - && mkdir -p /work/tf/installdir/include \ - && cp bazel-bin/tensorflow/libtensorflow_cc.so* /work/tf/installdir/lib \ - && cp bazel-bin/tensorflow/libtensorflow_framework.so* /work/tf/installdir/lib \ - && cp -r bazel-genfiles/* /work/tf/installdir/include \ - && cp -r tensorflow/cc /work/tf/installdir/include/tensorflow \ - && cp -r tensorflow/core /work/tf/installdir/include/tensorflow \ - && cp -r third_party /work/tf/installdir/include \ - && cp -r bazel-tensorflow/external/eigen_archive/unsupported /work/tf/installdir/include \ - && cp -r bazel-tensorflow/external/eigen_archive/Eigen /work/tf/installdir/include \ - && cp -r tensorflow/lite/tools/make/downloads/absl/absl /work/tf/installdir/include - -# ---------------------------------------------------------------------------- -# Build OTB: Stage 1 (clone) -# ---------------------------------------------------------------------------- -RUN mkdir -p /work/otb \ - && cd /work/otb \ - && git clone https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb.git otb \ - && cd otb \ - && git checkout release-7.1 - -# ---------------------------------------------------------------------------- -# Build OTB: Stage 2 (superbuild) -# ---------------------------------------------------------------------------- -RUN mkdir -p /work/otb/build \ - && cd /work/otb/build \ - && cmake /work/otb/otb/SuperBuild \ - -DUSE_SYSTEM_BOOST=ON \ - -DUSE_SYSTEM_CURL=ON \ - -DUSE_SYSTEM_EXPAT=ON \ - -DUSE_SYSTEM_FFTW=ON \ - -DUSE_SYSTEM_FREETYPE=ON \ - -DUSE_SYSTEM_GDAL=ON \ - -DUSE_SYSTEM_GEOS=ON \ - -DUSE_SYSTEM_GEOTIFF=ON \ - -DUSE_SYSTEM_GLEW=ON \ - -DUSE_SYSTEM_GLFW=ON \ - -DUSE_SYSTEM_GLUT=ON \ - -DUSE_SYSTEM_GSL=ON \ - -DUSE_SYSTEM_ITK=ON \ - -DUSE_SYSTEM_LIBKML=ON \ - -DUSE_SYSTEM_LIBSVM=ON \ - -DUSE_SYSTEM_MUPARSER=ON \ - -DUSE_SYSTEM_MUPARSERX=ON \ - -DUSE_SYSTEM_OPENCV=ON \ - -DUSE_SYSTEM_OPENTHREADS=ON \ - -DUSE_SYSTEM_OSSIM=ON \ - -DUSE_SYSTEM_PNG=ON \ - -DUSE_SYSTEM_QT5=ON \ - -DUSE_SYSTEM_QWT=ON \ - -DUSE_SYSTEM_TINYXML=ON \ - -DUSE_SYSTEM_ZLIB=ON \ - -DUSE_SYSTEM_SWIG=OFF \ - -DOTB_WRAP_PYTHON=OFF \ - && make -j $(grep -c ^processor /proc/cpuinfo) - -# ---------------------------------------------------------------------------- -# Build OTB: Stage 3 (bindings) -# ---------------------------------------------------------------------------- -RUN cd /work/otb/otb/Modules/Remote \ - && git clone -b release-2.0-rc2 https://github.com/remicres/otbtf.git \ - && cd /work/otb/build/OTB/build \ - && cmake /work/otb/otb \ - -DOTB_WRAP_PYTHON=ON \ - -DPYTHON_EXECUTABLE=/usr/bin/python3.6 \ - -Dopencv_INCLUDE_DIR=/usr/include \ - -DModule_OTBTensorflow=ON \ - -DOTB_USE_TENSORFLOW=ON \ - -DTENSORFLOW_CC_LIB=/work/tf/installdir/lib/libtensorflow_cc.so \ - -DTENSORFLOW_FRAMEWORK_LIB=/work/tf/installdir/lib/libtensorflow_framework.so \ - -Dtensorflow_include_dir=/work/tf/installdir/include/ \ - && cd /work/otb/build/ \ - && make -j $(grep -c ^processor /proc/cpuinfo) - -# ---------------------------------------------------------------------------- -# Add important environment variables -# ---------------------------------------------------------------------------- -ENV PATH="$PATH:/work/otb/superbuild_install/bin/" -ENV PYTHONPATH="/work/otb/superbuild_install/lib/otb/python:/work/otb/otb/Modules/Remote/otbtf/python:$PYTHONPATH" -ENV OTB_APPLICATION_PATH="/work/otb/superbuild_install/lib/otb/applications" -ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/work/otb/superbuild_install/lib/:/work/tf/installdir/lib/" - -# ---------------------------------------------------------------------------- -# Clean -# ---------------------------------------------------------------------------- -RUN rm -rf /tmp/* /root/.cache && apt-get clean - -# ---------------------------------------------------------------------------- -# Add one user -# ---------------------------------------------------------------------------- -RUN useradd -s /bin/bash -m otbuser -USER otbuser -WORKDIR /home/otbuser - -# ---------------------------------------------------------------------------- -# Exemple : -# docker build --tag otbtf_image -# docker run -v /path/to/host/:/path/to/mount/ otbtf_image otbcli_ExtractROI -# docker run -ti -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY otbtf_image otbgui_ExtractROI -# ---------------------------------------------------------------------------- -