95 lines
3.4 KiB
Bash
95 lines
3.4 KiB
Bash
#!/bin/bash
|
|
DIR=`dirname $0`
|
|
echo "----------------------------------------"
|
|
echo "-- Installing Yolo Plugin for Shinobi --"
|
|
echo "----------------------------------------"
|
|
if [ -d "/usr/local/cuda" ]; then
|
|
echo "Do you want to install the plugin with CUDA support?"
|
|
echo "Do this if you installed NVIDIA Drivers, CUDA Toolkit, and CuDNN"
|
|
echo "(y)es or (N)o"
|
|
read usecuda
|
|
if [ "$usecuda" = "y" ] || [ "$usecuda" = "Y" ]; then
|
|
export PATH=/usr/local/cuda/bin:$PATH
|
|
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
|
|
fi
|
|
fi
|
|
# echo "-----------------------------------"
|
|
# if ! [ -x "$(command -v opencv_version)" ]; then
|
|
# echo "You need to install OpenCV with CUDA first."
|
|
# echo "inside the Shinobi directory run the following :"
|
|
# echo "sh INSTALL/opencv-cuda.sh"
|
|
# exit 1
|
|
# else
|
|
# echo "OpenCV found... : $(opencv_version)"
|
|
# fi
|
|
bash <(curl -s https://gitlab.com/Shinobi-Systems/supplements/-/raw/master/downgradeGccG++.sh)
|
|
echo "============="
|
|
echo "Shinobi - Do you want to Install Tiny Weights?"
|
|
echo "This is better for Graphics Cards with less than 4GB RAM"
|
|
echo "(y)es or (N)o"
|
|
weightNameExtension=""
|
|
read tinyweights
|
|
if [ "$tinyweights" = "y" ] || [ "$tinyweights" = "Y" ]; then
|
|
weightNameExtension="-tiny"
|
|
fi
|
|
echo "-----------------------------------"
|
|
if [ ! -d "models" ]; then
|
|
echo "Downloading yolov3 weights..."
|
|
mkdir models
|
|
wget -O models/yolov3.weights https://pjreddie.com/media/files/yolov3$weightNameExtension.weights
|
|
else
|
|
echo "yolov3 weights found..."
|
|
fi
|
|
echo "-----------------------------------"
|
|
if [ ! -d "models/cfg" ]; then
|
|
echo "Downloading yolov3 cfg"
|
|
mkdir models/cfg
|
|
wget -O models/cfg/coco.data https://raw.githubusercontent.com/pjreddie/darknet/master/cfg/coco.data
|
|
wget -O models/cfg/yolov3.cfg https://raw.githubusercontent.com/pjreddie/darknet/master/cfg/yolov3$weightNameExtension.cfg
|
|
else
|
|
echo "yolov3 cfg found..."
|
|
fi
|
|
echo "-----------------------------------"
|
|
if [ ! -d "models/data" ]; then
|
|
echo "Downloading yolov3 data"
|
|
mkdir models/data
|
|
wget -O models/data/coco.names https://raw.githubusercontent.com/pjreddie/darknet/master/data/coco.names
|
|
else
|
|
echo "yolov3 data found..."
|
|
fi
|
|
echo "-----------------------------------"
|
|
if [ ! -e "./conf.json" ]; then
|
|
echo "Creating conf.json"
|
|
sudo cp conf.sample.json conf.json
|
|
else
|
|
echo "conf.json already exists..."
|
|
fi
|
|
echo "-----------------------------------"
|
|
echo "Adding Random Plugin Key to Main Configuration"
|
|
node $DIR/../../tools/modifyConfigurationForPlugin.js yolo key=$(head -c 64 < /dev/urandom | sha256sum | awk '{print substr($1,1,60)}')
|
|
echo "-----------------------------------"
|
|
if [ -f /etc/redhat-release ]; then
|
|
yum update
|
|
yum install imagemagick -y
|
|
fi
|
|
|
|
if [ -f /etc/lsb-release ]; then
|
|
apt update -y
|
|
apt install imagemagick -y
|
|
fi
|
|
echo "-----------------------------------"
|
|
echo "Getting node-gyp to build C++ modules"
|
|
npm install node-gyp -g --unsafe-perm
|
|
echo "-----------------------------------"
|
|
echo "Getting C++ module : node-yolo-shinobi"
|
|
echo "https://www.npmjs.com/package/node-yolo-shinobi is a fork of https://github.com/rcaceiro/node-yolo"
|
|
npm install --unsafe-perm
|
|
npm install node-yolo-shinobi --unsafe-perm
|
|
npm audit fix --force
|
|
echo "-----------------------------------"
|
|
echo "Start the plugin with pm2 like so :"
|
|
echo "pm2 start shinobi-yolo.js"
|
|
echo "-----------------------------------"
|
|
echo "Start the plugin without pm2 :"
|
|
echo "node shinobi-yolo.js"
|