Spaces:
Runtime error
Runtime error
| # Copyright 2021 The Deeplab2 Authors. | |
| # | |
| # 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. | |
| # Quick start command line to setup deeplab2 (Linux only). | |
| # Example command to run: | |
| # deeplab2/compile.sh ${PATH_TO_PROTOC} | |
| # | |
| # This script assumes that the following folder structure: | |
| # | |
| # + root | |
| # + deeplab2 | |
| # + models | |
| # + orbit | |
| # + cocoapi | |
| # + PythonAPI | |
| # | |
| # Besides, the script also assumes that `protoc` can be accessed from command | |
| # line. | |
| #!/bin/bash | |
| set -e | |
| # cpu or gpu | |
| CONFIG="cpu" | |
| function tolower() { | |
| echo "${1,,}" | |
| } | |
| if [[ ! -z "$1" ]] | |
| then | |
| echo "Setting configuration from argument($1)..." | |
| CONFIG=$(tolower "$1") | |
| if [ "$CONFIG" != "cpu" ] && [ "$CONFIG" != "gpu" ] | |
| then | |
| echo "Configuration must be either \"cpu\" or \"gpu\", exiting..." | |
| exit 1 | |
| fi | |
| fi | |
| echo "Running configuration with $CONFIG." | |
| # Protobuf compilation | |
| # Replace `protoc` with `${PATH_TO_PROTOC}` if protobuf compilier is downloaded | |
| # from web. | |
| echo "-----------------------------------------------------------------------" | |
| echo "Compiling protobuf..." | |
| echo "-----------------------------------------------------------------------" | |
| protoc deeplab2/*.proto --python_out=. | |
| # Compile custom ops | |
| # See details in https://www.tensorflow.org/guide/create_op#compile_the_op_using_your_system_compiler_tensorflow_binary_installation | |
| TF_CFLAGS=( $(python -c 'import tensorflow as tf; print(" ".join(tf.sysconfig.get_compile_flags()))') ) | |
| TF_LFLAGS=( $(python -c 'import tensorflow as tf; print(" ".join(tf.sysconfig.get_link_flags()))') ) | |
| OP_NAME='deeplab2/tensorflow_ops/kernels/merge_semantic_and_instance_maps_op' | |
| if [ "$CONFIG" == "cpu" ] | |
| then | |
| # CPU | |
| echo "-----------------------------------------------------------------------" | |
| echo "Compiling the custom cc op: merge_semantic_and_instance_maps_op (CPU)..." | |
| echo "-----------------------------------------------------------------------" | |
| g++ -std=c++14 -shared \ | |
| ${OP_NAME}.cc ${OP_NAME}_kernel.cc -o ${OP_NAME}.so -fPIC ${TF_CFLAGS[@]} ${TF_LFLAGS[@]} -O2 | |
| else | |
| # GPU | |
| # (https://www.tensorflow.org/guide/create_op#compiling_the_kernel_for_the_gpu_device) | |
| echo "-----------------------------------------------------------------------" | |
| echo "Compiling the custom cc op: merge_semantic_and_instance_maps_op (GPU)..." | |
| echo "-----------------------------------------------------------------------" | |
| nvcc -std=c++14 -c -o ${OP_NAME}_kernel.cu.o \ | |
| ${OP_NAME}_kernel.cu.cc \ | |
| ${TF_CFLAGS[@]} -D GOOGLE_CUDA=1 -x cu -Xcompiler -fPIC --expt-relaxed-constexpr | |
| g++ -std=c++14 -shared -o ${OP_NAME}.so ${OP_NAME}.cc ${OP_NAME}_kernel.cc \ | |
| ${OP_NAME}_kernel.cu.o ${TF_CFLAGS[@]} -fPIC -lcudart ${TF_LFLAGS[@]} | |
| fi | |
| # PYTHONPATH | |
| export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/models:`pwd`/cocoapi/PythonAPI | |
| # Runing test | |
| echo "-----------------------------------------------------------------------" | |
| echo "Running tests for merge_semantic_and_instance_maps_op..." | |
| echo "-----------------------------------------------------------------------" | |
| python deeplab2/tensorflow_ops/python/kernel_tests/merge_semantic_and_instance_maps_op_test.py | |
| # End-to-end tests | |
| echo "-----------------------------------------------------------------------" | |
| echo "Running end-to-end tests..." | |
| echo "-----------------------------------------------------------------------" | |
| # Model training test (test for custom ops, protobug) | |
| python deeplab2/model/deeplab_test.py | |
| # Model evaluation test (test for other packages such as orbit, cocoapi, etc) | |
| python deeplab2/trainer/evaluator_test.py | |
| echo "------------------------" | |
| echo "Done with configuration!" | |
| echo "------------------------" | |