Skip to content

Commit

Permalink
use GPU
Browse files Browse the repository at this point in the history
  • Loading branch information
cnpcshangbo committed Jun 30, 2024
1 parent 0660e44 commit fef37f5
Show file tree
Hide file tree
Showing 4 changed files with 165 additions and 7 deletions.
3 changes: 3 additions & 0 deletions configure.sh
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,9 @@ ensure_prereqs() {
echo "Installing tzdata"
sudo $APT_GET install -y -qq tzdata

echo "Installing exiftool"
sudo $APT_GET install -y -qq libimage-exiftool-perl

UBUNTU_VERSION=$(lsb_release -r)
if [[ "$UBUNTU_VERSION" == *"20.04"* ]]; then
echo "Enabling PPA for Ubuntu GIS"
Expand Down
22 changes: 16 additions & 6 deletions opendm/staindetection.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,15 +54,25 @@ def create_overlay(self, original_image, segm_mask):
interpolation=cv2.INTER_NEAREST,
)

# # Create a red color mask for stains
# stain_mask = np.zeros_like(original_image)
# stain_mask[resized_segm_mask > 0] = [0, 0, 255] # Set red color for stains

# # Combine the original image with the stain mask using alpha blending
# alpha = 0.5 # Transparency level (0.5 for 50% transparency)
# overlay_image = cv2.addWeighted(
# original_image, 1 - alpha, stain_mask, alpha, 0
# )

# Create a red color mask for stains
stain_mask = np.zeros_like(original_image)
stain_mask[resized_segm_mask > 0] = [0, 0, 255] # Set red color for stains

# Combine the original image with the stain mask using alpha blending
alpha = 0 # Transparency level (0.5 for 50% transparency)
overlay_image = cv2.addWeighted(
original_image, 1 - alpha, stain_mask, alpha, 0
)
# Directly modify the original image based on the mask
original_image[resized_segm_mask > 0] = stain_mask[resized_segm_mask > 0]

# cv2.imwrite("output_onnx_overlay.jpg", original_image)



return overlay_image
return original_image
145 changes: 145 additions & 0 deletions start-dev-env-stain.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
#!/bin/bash
set -eo pipefail
__dirname=$(cd $(dirname "$0"); pwd -P)
cd "${__dirname}"

if [ "$1" = "--setup" ]; then
export HOME=/home/$2

if [ ! -f .setupdevenv ]; then
echo "Recompiling environment... this might take a while."
bash configure.sh reinstall

touch .setupdevenv
apt update && apt install -y vim git
chown -R $3:$4 /code
chown -R $3:$4 /var/www
fi

echo "Adding $2 to /etc/passwd"
echo "$2:x:$3:$4::/home/$2:/bin/bash" >> /etc/passwd
echo "Adding $2 to /etc/group"
echo "$2:x:$4:" >> /etc/group
echo "Adding $2 to /etc/shadow"
echo "$2:x:14871::::::" >> /etc/shadow
echo "$2 ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
echo "odm ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
echo "echo '' && echo '' && echo '' && echo '###################################' && echo 'ODM Dev Environment Ready. Hack on!' && echo '###################################' && echo '' && cd /code" > $HOME/.bashrc

# Install qt creator
if hash qtcreator 2>/dev/null; then
has_qtcreator="YES"
fi

if [ "$has_qtcreator" != "YES" ] && [ "$5" == "YES" ]; then
apt install -y libxrender1 gdb qtcreator
fi

# Install liquidprompt
if [ ! -e "$HOME/liquidprompt" ]; then
git clone https://github.com/nojhan/liquidprompt.git --depth 1 $HOME/liquidprompt
fi

if [ -e "$HOME/liquidprompt" ]; then
echo "source $HOME/liquidprompt/liquidprompt" >> $HOME/.bashrc
echo "export LP_PS1_PREFIX='(odmdev)'" >> $HOME/.bashrc
fi

# Colors
echo "alias ls='ls --color=auto'" >> $HOME/.bashrc

# Python paths
echo $(python3 /code/opendm/context.py) >> $HOME/.bashrc

# Vim
printf "syntax on\nset showmatch\nset ts=4\nset sts=4\nset sw=4\nset autoindent\nset smartindent\nset smarttab\nset expandtab" > $HOME/.vimrc

# Misc aliases
echo "alias pdal=/code/SuperBuild/install/bin/pdal" >> $HOME/.bashrc
echo "alias opensfm=/code/SuperBuild/install/bin/opensfm/bin/opensfm" >> $HOME/.bashrc


su -c bash $2
exit 0
fi

platform="Linux" # Assumed
uname=$(uname)
case $uname in
"Darwin")
platform="MacOS"
;;
MINGW*)
platform="Windows"
;;
esac

if [[ $platform != "Linux" && $platform != "MacOS" ]]; then
echo "This script only works on Linux and MacOS."
exit 1
fi

if hash docker 2>/dev/null; then
has_docker="YES"
fi
if hash nvidia-smi 2>/dev/null; then
has_nvidia_smi="YES"
fi


if [ "$has_docker" != "YES" ]; then
echo "You need to install docker before running this script."
exit 1
fi

IMAGE_SET=NO
if [[ ! -z $IMAGE ]]; then
IMAGE_SET=YES
fi
export PORT="${PORT:=3003}"
export QTC="${QTC:=NO}"
export IMAGE="${IMAGE:=opendronemap/nodeodm}"
export GPU="${GPU:=YES}"

if [ -z "$DATA" ]; then
echo "Usage: DATA=/path/to/datasets [VARS] $0"
echo
echo "VARS:"
echo " DATA Path to directory that contains datasets for testing. The directory will be mounted in /datasets. If you don't have any, simply set it to a folder outside the ODM repository."
echo " PORT Port to expose for NodeODM (default: $PORT)"
echo " IMAGE Docker image to use (default: $IMAGE)"
echo " GPU Enable GPU support (default: $GPU)"
echo " QTC When set to YES, installs QT Creator for C++ development (default: $QTC)"
exit 1
fi


echo "Starting development environment..."
echo "Datasets path: $DATA"
echo "Expose port: $PORT"
echo "QT Creator: $QTC"
echo "Image: $IMAGE"
echo "GPU: $GPU"

if [ ! -e "$HOME"/.odm-dev-home ]; then
mkdir -p "$HOME"/.odm-dev-home
fi

USER_ID=$(id -u)
GROUP_ID=$(id -g)
USER=$(id -un)
GPU_FLAGS=""
if [[ "$GPU" != "NO" ]]; then
if [[ "$IMAGE_SET" = "NO" ]]; then
IMAGE="$IMAGE:gpu"
fi

GPU_FLAGS="--gpus all"
if [[ "$has_nvidia_smi" = "YES" ]]; then
GPU_FLAGS="$GPU_FLAGS --device /dev/nvidia0 --device /dev/nvidia-uvm --device /dev/nvidia-uvm-tools --device /dev/nvidia-modeset --device /dev/nvidiactl"
fi
fi

xhost + || true
docker run -ti --entrypoint bash --name odmdevstain_gpu --hostname odmdevstain_gpu --user root -v $(pwd):/code -v "$DATA":/datasets -p $PORT:3000 $GPU_FLAGS --privileged -e DISPLAY -e LANG=C.UTF-8 -e LC_ALL=C.UTF-8 -v="/tmp/.X11-unix:/tmp/.X11-unix:rw" -v="$HOME/.odm-dev-home:/home/$USER" $IMAGE -c "/code/start-dev-env.sh --setup $USER $USER_ID $GROUP_ID $QTC"
exit 0
2 changes: 1 addition & 1 deletion start-dev-env.sh
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ fi
export PORT="${PORT:=3000}"
export QTC="${QTC:=NO}"
export IMAGE="${IMAGE:=opendronemap/nodeodm}"
export GPU="${GPU:=NO}"
export GPU="${GPU:=YES}"

if [ -z "$DATA" ]; then
echo "Usage: DATA=/path/to/datasets [VARS] $0"
Expand Down

0 comments on commit fef37f5

Please sign in to comment.