Add MocapNET

This commit is contained in:
Justin John
2023-12-15 04:22:41 +05:30
parent 8434144ded
commit 65e8934d5e
336 changed files with 100584 additions and 0 deletions
@@ -0,0 +1,410 @@
#!/bin/bash
# Ansi color code variables
red="\e[0;91m"
blue="\e[0;94m"
expand_bg="\e[K"
blue_bg="\e[0;104m${expand_bg}"
red_bg="\e[0;101m${expand_bg}"
green_bg="\e[0;102m${expand_bg}"
green="\e[0;92m"
white="\e[0;97m"
bold="\e[1m"
uline="\e[4m"
reset="\e[0m"
function checkForError
{
RESULT=$?
if [ $RESULT -eq 0 ]; then
echo "Successfully ran the hand pose estimation"
else
echo -e "${red_bg}TERMINATING SCRIPT${reset}"
echo -e "${red}Failed running $1${reset}"
exit 1
fi
}
#We move to the correct directory..
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "$DIR"
cd ..
if [ $# -eq 0 ]
then
echo "No arguments supplied, please run with --quaternions or --euler"
exit 0
fi
#Setting this to qbvh will activate
#quaternion code..!
BVH_TYPE="bvh"
if [ "$1" == "--quaternions" ]; then
BVH_TYPE="qbvh"
elif [ "$1" == "--euler" ]; then
BVH_TYPE="bvh"
else
echo "You gave arguments but where not what we expected.."
exit 0
fi
#FULL SIZE EXPERIMENT
echo "Doing full size experiment"
FULL_RANDOM_POSES="1999999"
ZERO_POSES="199999"
BASE_POSES="599999"
FINGER_POSES="399999"
#SMALL SIZE (1/2) EXPERIMENT
#echo "Doing small (1/2) size experiment"
#FULL_RANDOM_POSES="1000000"
#ZERO_POSES="100000"
#BASE_POSES="300000"
#FINGER_POSES="200000"
#SMALL SIZE (1/10) EXPERIMENT
#echo "Doing small (1/10) size experiment"
#FULL_RANDOM_POSES="199999"
#ZERO_POSES="19999"
#BASE_POSES="59999"
#FINGER_POSES="39999"
#BASE_POSES="99999"
#FINGER_POSES="19999"
USE_OCCLUSIONS="" # Set to "--occlusions" for occlusions #deactivated @ 2021-03-05
USE_END_JOINTS="1" # We need end joints since they are our fingertips..
#Where is our output located
outputDir="dataset/"
# Use --printparams in view commands to view the commands that are given to the utility at stderr
VIEW_COMMANDS=" --printparams "
HIDEBODY=" $DONT_USE_END_JOINTS 8 abdomen chest eye.r eye.l toe1-2.r toe5-3.r toe1-2.l toe5-3.l"
SELECT_RHAND="--selectJoints $USE_END_JOINTS 17 rHand finger5-1.r finger5-2.r finger5-3.r finger4-1.r finger4-2.r finger4-3.r finger3-1.r finger3-2.r finger3-3.r finger2-1.r finger2-2.r finger2-3.r rthumbBase rthumb finger1-2.r finger1-3.r --hide2DLocationOfJoints 0 1 rthumbBase"
#Note on --hide2DLocationOfJoints: We want to contain these joints in the BVH file and solve them, but they do not correspond to the BODY25 format so we hide them as 2D points..
SELECT_LHAND="--selectJoints $USE_END_JOINTS 17 lHand finger5-1.l finger5-2.l finger5-3.l finger4-1.l finger4-2.l finger4-3.l finger3-1.l finger3-2.l finger3-3.l finger2-1.l finger2-2.l finger2-3.l lthumbBase lthumb finger1-2.l finger1-3.l --hide2DLocationOfJoints 0 1 lthumbBase"
#Note on --hide2DLocationOfJoints: We want to contain these joints in the BVH file and solve them, but they do not correspond to the BODY25 format so we hide them as 2D points..
# LEFT RIGHT
MID_THUMBBASE_Y="63" #Thumb Left/Right -56->48 -48->56
MID_FINGER5_1_Y="54" #Pinky Left/Right -10->22 -22->10
MID_FINGER4_1_Y="39" #Ring Left/Right -12->12 -12->12
MID_FINGER3_1_Y="24" #Mid Left/Right -12->12 -12->12
MID_FINGER2_1_Y="24" #Pointer Left/Right -12->12 -12->12
NATURAL_LHAND="--set 12 -5.0 --set 39 5.0 --set 54 10.5 --set 63 -18"
NATURAL_RHAND="--set 12 5.0 --set 39 -5.0 --set 54 -10.5 --set 63 18"
#----------------------------------------------------------------------------------------------------------------------------------------------------
#----------------------------------------------------------------------------------------------------------------------------------------------------
#----------------------------------------------------------------------------------------------------------------------------------------------------
#----------------------------------------------------------------------------------------------------------------------------------------------------
function generateRightHandDataset
{
OUTBASE="$1"
#Make sure file is wiped before
#adding new poses..
#-------------------------
rm $outputDir/2d_$OUTBASE
rm $outputDir/bvh_$OUTBASE
#-------------------------
MIN_HAND_DEPTH="$2"
MAX_HAND_DEPTH="$3" #1500
MIN_RHAND_RZ="$4"
MAX_RHAND_RZ="$7"
MIN_RHAND_RY="$5"
MAX_RHAND_RY="$8"
MIN_RHAND_RX="$6"
MAX_RHAND_RX="$9"
FROM="--haltonerror $VIEW_COMMANDS --from dataset/rhand.$BVH_TYPE"
RANDOM_POSITION_ROTATION="--randomize2D $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_RHAND_RZ $MIN_RHAND_RY $MIN_RHAND_RX $MAX_RHAND_RZ $MAX_RHAND_RY $MAX_RHAND_RX $USE_OCCLUSIONS"
OUT="--csv $outputDir $OUTBASE 2d+bvh "
#RHAND
#./BVHGUI2 --from dataset/rhand.qbvh --set 2 -25 --set 3 0.5 --set 4 -0.5 --set 5 0.5 --set 6 -0.5 --set 12 5.0 --set 39 -5.0 --set 54 -10.5 --set 63 18
echo "TEST?"
#New automatic pose generation based on IK Problem..
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FULL_RANDOM_POSES $SELECT_RHAND --randomizeBasedOnIKConstrains rhand $RANDOM_POSITION_ROTATION $OUT
checkForError "rhand full random"
#Default BVH poses with everything at zero but hand is naturally open
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $BASE_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $OUT
checkForError "rhand naturally open"
#Default BVH poses with everything at zero but hand is not naturally open, it is has fingers touching
./GroundTruthDumper $FROM --repeat $ZERO_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $OUT
checkForError "rhand to zero"
#Default BVH poses with hand naturally open but thumb in the middle
./GroundTruthDumper $FROM $NATURAL_RHAND --set 63 -6.5 --set 64 28.7 --set 65 -8.5 --set 66 -37 --set 67 13 --set 68 -7.6 --set 69 22 --set 70 5 --set 71 -43 --set 72 0 --repeat $ZERO_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $OUT
checkForError "rhand naturally open thumb in the middle"
#Right hand Thumb Movement on default pose
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FINGER_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION --randomizeMID $MID_THUMBBASE_Y -48.0 56.0 $OUT
checkForError "Right hand Thumb Movement on default pose"
#All hand open naturally, only finger 5 (pinky) moving
RANDOMIZE_RIGHT_HAND="--/randomizeJointAngles 3 0 65 1 finger5-1.r finger5-2.r finger5-3.r"
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FINGER_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_RIGHT_HAND $OUT
checkForError "All hand open naturally, only finger 5 (pinky) moving"
#All hand open naturally, only finger 4 (ring) moving
RANDOMIZE_RIGHT_HAND="--randomizeJointAngles 3 0 65 1 finger4-1.r finger4-2.r finger4-3.r"
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FINGER_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_RIGHT_HAND $OUT
checkForError "All hand open naturally, only finger 4 (ring) moving"
#All hand open naturally, only finger 3 (middle) moving
RANDOMIZE_RIGHT_HAND="--randomizeJointAngles 3 0 65 1 finger3-1.r finger3-2.r finger3-3.r"
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FINGER_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_RIGHT_HAND $OUT
checkForError "All hand open naturally, only finger 3 (middle) moving"
#All hand open naturally, only finger 2 (pointer) moving
RANDOMIZE_RIGHT_HAND="--randomizeJointAngles 3 0 65 1 finger2-1.r finger2-2.r finger2-3.r"
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FINGER_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_RIGHT_HAND $OUT
checkForError "All hand open naturally, only finger 2 (pointer) moving"
#All hand open naturally, only finger 1 (thumb) moving
RANDOMIZE_RIGHT_HAND="--randomizeJointAngles 2 -75 75 2 rthumb finger1-2.r --randomizeJointAngles 1 0 45 3 rthumb"
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FINGER_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_RIGHT_HAND $OUT
checkForError "All hand open naturally, only finger 1 (thumb) moving"
#All fingers closed only thumb moving!
RANDOMIZE_RIGHT_HAND="--randomizeJointAngles 15 65 65 1 finger5-1.r finger5-2.r finger5-3.r finger4-1.r finger4-2.r finger4-3.r finger3-1.r finger3-2.r finger3-3.r finger2-1.r finger2-2.r finger2-3.r rthumb finger1-2.r finger1-3.r --randomizeJointAngles 5 90 90 1 finger5-1.r finger4-1.r finger3-1.r finger2-1.r rthumb --randomizeJointAngles 2 -75 75 2 rthumb finger1-2.r --randomizeJointAngles 1 0 45 3 rthumb"
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FINGER_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_RIGHT_HAND $OUT
checkForError "RHand - All fingers closed only thumb moving!"
#All fingers closed except Finger 5 ( pinky )
RANDOMIZE_RIGHT_HAND="--randomizeJointAngles 15 65 65 1 finger5-1.r finger5-2.r finger5-3.r finger4-1.r finger4-2.r finger4-3.r finger3-1.r finger3-2.r finger3-3.r finger2-1.r finger2-2.r finger2-3.r rthumb finger1-2.r finger1-3.r --randomizeJointAngles 5 90 90 1 finger5-1.r finger4-1.r finger3-1.r finger2-1.r rthumb --randomizeJointAngles 2 75 75 2 rthumb finger1-2.r --randomizeJointAngles 1 45 45 3 rthumb --randomizeJointAngles 3 0 65 1 finger5-1.r finger5-2.r finger5-3.r"
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FINGER_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_RIGHT_HAND $OUT
checkForError "RHand - All fingers closed except Finger 5 ( pinky )"
#All fingers closed except Finger 4 ( ring )
RANDOMIZE_RIGHT_HAND="--randomizeJointAngles 15 65 65 1 finger5-1.r finger5-2.r finger5-3.r finger4-1.r finger4-2.r finger4-3.r finger3-1.r finger3-2.r finger3-3.r finger2-1.r finger2-2.r finger2-3.r rthumb finger1-2.r finger1-3.r --randomizeJointAngles 5 90 90 1 finger5-1.r finger4-1.r finger3-1.r finger2-1.r rthumb --randomizeJointAngles 2 75 75 2 rthumb finger1-2.r --randomizeJointAngles 1 45 45 3 rthumb --randomizeJointAngles 3 0 65 1 finger4-1.r finger4-2.r finger4-3.r"
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FINGER_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_RIGHT_HAND $OUT
checkForError "RHand - All fingers closed except Finger 4 ( ring )"
#All fingers closed except Finger 3 ( middle )
RANDOMIZE_RIGHT_HAND="--randomizeJointAngles 15 65 65 1 finger5-1.r finger5-2.r finger5-3.r finger4-1.r finger4-2.r finger4-3.r finger3-1.r finger3-2.r finger3-3.r finger2-1.r finger2-2.r finger2-3.r rthumb finger1-2.r finger1-3.r --randomizeJointAngles 5 90 90 1 finger5-1.r finger4-1.r finger3-1.r finger2-1.r rthumb --randomizeJointAngles 2 75 75 2 rthumb finger1-2.r --randomizeJointAngles 1 45 45 3 rthumb --randomizeJointAngles 3 0 65 1 finger3-1.r finger3-2.r finger3-3.r"
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FINGER_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_RIGHT_HAND $OUT
checkForError "RHand - All fingers closed except Finger 3 ( middle )"
#All fingers closed except Finger 2 ( pointer )
RANDOMIZE_RIGHT_HAND="--randomizeJointAngles 15 65 65 1 finger5-1.r finger5-2.r finger5-3.r finger4-1.r finger4-2.r finger4-3.r finger3-1.r finger3-2.r finger3-3.r finger2-1.r finger2-2.r finger2-3.r rthumb finger1-2.r finger1-3.r --randomizeJointAngles 5 90 90 1 finger5-1.r finger4-1.r finger3-1.r finger2-1.r rthumb --randomizeJointAngles 2 75 75 2 rthumb finger1-2.r --randomizeJointAngles 1 45 45 3 rthumb --randomizeJointAngles 3 0 65 1 finger2-1.r finger2-2.r finger2-3.r"
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FINGER_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_RIGHT_HAND $OUT
checkForError "RHand - All fingers closed except Finger 2 ( pointer )"
#Done
}
#----------------------------------------------------------------------------------------------------------------------------------------------------
#----------------------------------------------------------------------------------------------------------------------------------------------------
#----------------------------------------------------------------------------------------------------------------------------------------------------
#----------------------------------------------------------------------------------------------------------------------------------------------------
function generateLeftHandDataset
{
OUTBASE="$1"
#Make sure file is wiped before
#adding new poses..
#-------------------------
rm $outputDir/2d_$OUTBASE
rm $outputDir/bvh_$OUTBASE
#-------------------------
MIN_HAND_DEPTH="$2"
MAX_HAND_DEPTH="$3" #1500
MIN_LHAND_RZ="$4"
MAX_LHAND_RZ="$7"
MIN_LHAND_RY="$5"
MAX_LHAND_RY="$8"
MIN_LHAND_RX="$6"
MAX_LHAND_RX="$9"
FROM="--haltonerror $VIEW_COMMANDS --from dataset/lhand.$BVH_TYPE"
RANDOM_POSITION_ROTATION="--randomize2D $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_LHAND_RZ $MIN_LHAND_RY $MIN_LHAND_RX $MAX_LHAND_RZ $MAX_LHAND_RY $MAX_LHAND_RX $USE_OCCLUSIONS"
OUT="--csv $outputDir $OUTBASE 2d+bvh "
# ./BVHGUI2 --from dataset/lhand.qbvh --set 2 -25 --set 3 0.5 --set 4 -0.5 --set 5 -0.5 --set 6 0.5 --set 12 -5.0 --set 39 5.0 --set 54 10.5 --set 63 -18
#New automatic pose generation based on IK Problem..
./GroundTruthDumper $FROM --repeat $FULL_RANDOM_POSES $SELECT_LHAND --randomizeBasedOnIKConstrains lhand $RANDOM_POSITION_ROTATION $OUT
checkForError "lhand full random"
#Default BVH poses with everything at zero but hand is naturally open
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $BASE_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $OUT
checkForError "lhand naturally open"
#Default BVH poses with everything at zero but hand is not naturally open, it is has fingers touching
./GroundTruthDumper $FROM --repeat $ZERO_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $OUT
checkForError "lhand to zero"
#Default BVH poses with hand naturally open but thumb in the middle
./GroundTruthDumper $FROM $NATURAL_LHAND --set 63 6.5 --set 64 -28.7 --set 65 8.5 --set 66 37 --set 67 -13 --set 68 7.6 --set 69 -22 --set 70 -5 --set 71 43 --set 72 0 --repeat $ZERO_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $OUT
checkForError "lhand naturally open thumb in the middle"
#Left hand Thumb Movement on default pose
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $FINGER_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION --randomizeMID $MID_THUMBBASE_Y -56.0 48.0 $OUT
checkForError "LHand - Left hand Thumb Movement on default pose"
#All hand open naturally, only finger 5 (pinky) moving
RANDOMIZE_LEFT_HAND="--randomizeJointAngles 3 0 65 1 finger5-1.l finger5-2.l finger5-3.l"
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $FINGER_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_LEFT_HAND $OUT
checkForError "LHand - All hand open naturally, only finger 5 (pinky) moving"
#All hand open naturally, only finger 4 (ring) moving
RANDOMIZE_LEFT_HAND="--randomizeJointAngles 3 0 65 1 finger4-1.l finger4-2.l finger4-3.l"
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $FINGER_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_LEFT_HAND $OUT
checkForError "LHand - All hand open naturally, only finger 4 (ring) moving"
#All hand open naturally, only finger 3 (middle) moving
RANDOMIZE_LEFT_HAND="--randomizeJointAngles 3 0 65 1 finger3-1.l finger3-2.l finger3-3.l"
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $FINGER_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_LEFT_HAND $OUT
checkForError "LHand - All hand open naturally, only finger 3 (middle) moving"
#All hand open naturally, only finger 2 (pointer) moving
RANDOMIZE_LEFT_HAND="--randomizeJointAngles 3 0 65 1 finger2-1.l finger2-2.l finger2-3.l"
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $FINGER_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_LEFT_HAND $OUT
checkForError "LHand - All hand open naturally, only finger 2 (pointer) moving"
#All hand open naturally, only finger 1 (thumb) moving
RANDOMIZE_LEFT_HAND="--randomizeJointAngles 2 -75 75 2 lthumb finger1-2.l --randomizeJointAngles 1 0 45 3 lthumb"
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $FINGER_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_LEFT_HAND $OUT
checkForError "LHand - All hand open naturally, only finger 1 (thumb) moving"
#All fingers closed only thumb Open!
RANDOMIZE_LEFT_HAND="--randomizeJointAngles 15 65 65 1 finger5-1.l finger5-2.l finger5-3.l finger4-1.l finger4-2.l finger4-3.l finger3-1.l finger3-2.l finger3-3.l finger2-1.l finger2-2.l finger2-3.l lthumb finger1-2.l finger1-3.l --randomizeJointAngles 5 90 90 1 finger5-1.l finger4-1.l finger3-1.l finger2-1.l lthumb --randomizeJointAngles 2 -75 75 2 lthumb finger1-2.l --randomizeJointAngles 1 0 45 3 lthumb"
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $FINGER_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_LEFT_HAND $OUT
checkForError "LHand - All fingers closed only thumb Open!"
#All fingers closed except Finger 5 ( pinky )
RANDOMIZE_LEFT_HAND="--randomizeJointAngles 15 65 65 1 finger5-1.l finger5-2.l finger5-3.l finger4-1.l finger4-2.l finger4-3.l finger3-1.l finger3-2.l finger3-3.l finger2-1.l finger2-2.l finger2-3.l lthumb finger1-2.l finger1-3.l --randomizeJointAngles 5 90 90 1 finger5-1.l finger4-1.l finger3-1.l finger2-1.l lthumb --randomizeJointAngles 2 75 75 2 lthumb finger1-2.l --randomizeJointAngles 1 45 45 3 lthumb --randomizeJointAngles 3 0 65 1 finger5-1.l finger5-2.l finger5-3.l"
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $FINGER_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_LEFT_HAND $OUT
checkForError "LHand - All fingers closed except Finger 5 ( pinky )"
#All fingers closed except Finger 4 ( ring )
RANDOMIZE_LEFT_HAND="--randomizeJointAngles 15 65 65 1 finger5-1.l finger5-2.l finger5-3.l finger4-1.l finger4-2.l finger4-3.l finger3-1.l finger3-2.l finger3-3.l finger2-1.l finger2-2.l finger2-3.l lthumb finger1-2.l finger1-3.l --randomizeJointAngles 5 90 90 1 finger5-1.l finger4-1.l finger3-1.l finger2-1.l lthumb --randomizeJointAngles 2 75 75 2 lthumb finger1-2.l --randomizeJointAngles 1 45 45 3 lthumb --randomizeJointAngles 3 0 65 1 finger4-1.l finger4-2.l finger4-3.l"
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $FINGER_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_LEFT_HAND $OUT
checkForError "LHand - All fingers closed except Finger 4 ( ring )"
#All fingers closed except Finger 3 ( middle )
RANDOMIZE_LEFT_HAND="--randomizeJointAngles 15 65 65 1 finger5-1.l finger5-2.l finger5-3.l finger4-1.l finger4-2.l finger4-3.l finger3-1.l finger3-2.l finger3-3.l finger2-1.l finger2-2.l finger2-3.l lthumb finger1-2.l finger1-3.l --randomizeJointAngles 5 90 90 1 finger5-1.l finger4-1.l finger3-1.l finger2-1.l lthumb --randomizeJointAngles 2 75 75 2 lthumb finger1-2.l --randomizeJointAngles 1 45 45 3 lthumb --randomizeJointAngles 3 0 65 1 finger3-1.l finger3-2.l finger3-3.l"
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $FINGER_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_LEFT_HAND $OUT
checkForError "LHand - All fingers closed except Finger 3 ( middle )"
#All fingers closed except Finger 2 ( pointer )
RANDOMIZE_LEFT_HAND="--randomizeJointAngles 15 65 65 1 finger5-1.l finger5-2.l finger5-3.l finger4-1.l finger4-2.l finger4-3.l finger3-1.l finger3-2.l finger3-3.l finger2-1.l finger2-2.l finger2-3.l lthumb finger1-2.l finger1-3.l --randomizeJointAngles 5 90 90 1 finger5-1.l finger4-1.l finger3-1.l finger2-1.l lthumb --randomizeJointAngles 2 75 75 2 lthumb finger1-2.l --randomizeJointAngles 1 45 45 3 lthumb --randomizeJointAngles 3 0 65 1 finger2-1.l finger2-2.l finger2-3.l"
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $FINGER_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_LEFT_HAND $OUT
checkForError "LHand - All fingers closed except Finger 2 ( pointer )"
#Done
#Let's count it and store the numbers so we don't have to spam disk reads on every training..
wc -l $outputDir/2d_$1 > $outputDir/count_$1
#wc -l $outputDir/3d_$1 > $outputDir/count_$1
wc -l $outputDir/bvh_$1 > $outputDir/count_$1
}
#----------------------------------------------------------------------------------------------------------------------------------------------------
#----------------------------------------------------------------------------------------------------------------------------------------------------
#----------------------------------------------------------------------------------------------------------------------------------------------------
#----------------------------------------------------------------------------------------------------------------------------------------------------
# ./BVHGUI2 --from dataset/lhand.$BVH_TYPE --set 3 -90 --set 4 0 --set 5 -135
MIN_HAND_DEPTH="200"
MAX_HAND_DEPTH="2000" #1500
MIN_HAND_RZ="-90"
MAX_HAND_RZ="-90"
MIN_HAND_RY="-50"
MAX_HAND_RY="50"
#If we have a quaternion we can handle all orientations!
if [ "$1" == "--quaternions" ]; then
MIN_HAND_RZ="-179.9"
MAX_HAND_RZ="179.9"
MIN_HAND_RY="-179.9"
MAX_HAND_RY="179.9"
fi
MIN_HAND_RX="-179.9"
MAX_HAND_RX="179.9"
generateLeftHandDataset lhand_all.csv $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_HAND_RZ $MIN_HAND_RY $MIN_HAND_RX $MAX_HAND_RZ $MAX_HAND_RY $MAX_HAND_RX
#./ReshapeCSV --from dataset/bvh_lhand_all.csv --faces 20 > dataset/category_lhand_all.csv
generateRightHandDataset rhand_all.csv $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_HAND_RZ $MIN_HAND_RY $MIN_HAND_RX $MAX_HAND_RZ $MAX_HAND_RY $MAX_HAND_RX
#./ReshapeCSV --from dataset/bvh_rhand_all.csv --faces 20 > dataset/category_rhand_all.csv
echo "Done Generating Hands.."
exit 0
MIN_HAND_RX="-135"
MAX_HAND_RX="-45"
generateRightHandDataset rhand_front.csv $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_HAND_RZ $MIN_HAND_RY $MIN_HAND_RX $MAX_HAND_RZ $MAX_HAND_RY $MAX_HAND_RX
generateLeftHandDataset lhand_front.csv $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_HAND_RZ $MIN_HAND_RY $MIN_HAND_RX $MAX_HAND_RZ $MAX_HAND_RY $MAX_HAND_RX
MIN_HAND_RX="45"
MAX_HAND_RX="135"
generateRightHandDataset rhand_back.csv $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_HAND_RZ $MIN_HAND_RY $MIN_HAND_RX $MAX_HAND_RZ $MAX_HAND_RY $MAX_HAND_RX
generateLeftHandDataset lhand_back.csv $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_HAND_RZ $MIN_HAND_RY $MIN_HAND_RX $MAX_HAND_RZ $MAX_HAND_RY $MAX_HAND_RX
MIN_HAND_RX="-45"
MAX_HAND_RX="45"
generateRightHandDataset rhand_left.csv $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_HAND_RZ $MIN_HAND_RY $MIN_HAND_RX $MAX_HAND_RZ $MAX_HAND_RY $MAX_HAND_RX
generateLeftHandDataset lhand_left.csv $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_HAND_RZ $MIN_HAND_RY $MIN_HAND_RX $MAX_HAND_RZ $MAX_HAND_RY $MAX_HAND_RX
MIN_HAND_RX="135"
MAX_HAND_RX="225"
generateRightHandDataset rhand_right.csv $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_HAND_RZ $MIN_HAND_RY $MIN_HAND_RX $MAX_HAND_RZ $MAX_HAND_RY $MAX_HAND_RX
generateLeftHandDataset lhand_right.csv $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_HAND_RZ $MIN_HAND_RY $MIN_HAND_RX $MAX_HAND_RZ $MAX_HAND_RY $MAX_HAND_RX
#--svg tmp/ --bvh randomRHand.$BVH_TYPE
#----------------------------------------------------------------------------------------------------------------------------------------------------
#----------------------------------------------------------------------------------------------------------------------------------------------------
#----------------------------------------------------------------------------------------------------------------------------------------------------
#----------------------------------------------------------------------------------------------------------------------------------------------------
exit 0
@@ -0,0 +1,320 @@
#!/bin/bash
#Colors for easier output
red=$(printf "\033[31m")
green=$(printf "\033[32m")
yellow=$(printf "\033[33m")
blue=$(printf "\033[34m")
magenta=$(printf "\033[35m")
cyan=$(printf "\033[36m")
white=$(printf "\033[37m")
normal=$(printf "\033[m")
#We can use R to gather statistics about the generated ground truth..
if ! [ -x "$(command -v R)" ]; then
echo 'Warning: R is not installed.' >&2
sudo apt-get install r-base
fi
function getStatistics
{
#use R to generate statistics
#sudo apt-get install r-base
R -q -e "x <- read.csv('$1', header = T); summary(x); sd(x[ , 1])" > $2
cat $1 | wc -l >> $2
}
#We move to the correct directory..
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "$DIR"
cd ..
#Where is our datasets located, compared to the current directory..
datasetDir="dataset/MotionCapture"
#MocapNET1 -> datasetSubDir="01 02 03 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19"
datasetSubDir="h36 01 02 03 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 45 46 47 49 54 55 56 60 61 62 63 64 69 70 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 93 94 102 103 104 105 106 107 108 111 113 114 115 117 118 120 121 122 123 124 125 126 127 128 131 132 133 134 135 136 137 138 139 140 141 142 143 144"
#datasetSubDir="h36"
#Where is our output located
outputDir="dataset/"
# Use --printparams in view commands to view the commands that are given to the utility at stderr
VIEW_COMMANDS=" "
RAND_UPPER_BODY="--perturbJointAngles 2 30.0 rshoulder lshoulder --perturbJointAngles 2 16.0 relbow lelbow --perturbJointAngles 2 10.0 abdomen chest"
RAND_LOWER_BODY="--perturbJointAngles 2 30.0 rhip lhip --perturbJointAngles 4 10.0 lknee rknee lfoot rfoot --perturbJointAngles 2 10.0 abdomen chest"
RANDOMIZE_LEFT_HAND="--randomizeJointAngles 15 -65 0 1 finger5-1.l finger5-2.l finger5-3.l finger4-1.l finger4-2.l finger4-3.l finger3-1.l finger3-2.l finger3-3.l finger2-1.l finger2-2.l finger2-3.l lthumb finger1-2.l finger1-3.l --randomizeJointAngles 5 -90 0 1 finger5-1.l finger4-1.l finger3-1.l finger2-1.l lthumb --randomizeJointAngles 2 -75 75 2 lthumb finger1-2.l --randomizeJointAngles 1 -45 0 3 lthumb"
RANDOMIZE_RIGHT_HAND="--randomizeJointAngles 15 0 65 1 finger5-1.r finger5-2.r finger5-3.r finger4-1.r finger4-2.r finger4-3.r finger3-1.r finger3-2.r finger3-3.r finger2-1.r finger2-2.r finger2-3.r rthumb finger1-2.r finger1-3.r --randomizeJointAngles 5 0 90 1 finger5-1.r finger4-1.r finger3-1.r finger2-1.r rthumb --randomizeJointAngles 2 -75 75 2 rthumb finger1-2.r --randomizeJointAngles 1 0 45 3 rthumb"
FILTER_OUT_POSES_WITH_HANDS_IN_SIDE="--filterout 0 0 -130.0 0 90 0 1920 1080 570.7 570.3 6 rhand lhip 0 120 rhand rhip 0 120 rhand lhand 0 150 lhand rhip 0 120 lhand lhip 0 120 lhand rhand 0 150"
#FILTER_OUT_POSES_WITH_HANDS_IN_SIDE=" "
DONT_USE_END_JOINTS="0"
USE_END_JOINTS="1"
HIDEBODY="--hide2DLocationOfJoints $DONT_USE_END_JOINTS 8 abdomen chest eye.r eye.l toe1-2.r toe5-3.r toe1-2.l toe5-3.l" #We want to contain these joints in the BVH file and solve them, but they do not correspond to the BODY25 format so we hide them as 2D points..
SELECTBODY="--selectJoints $USE_END_JOINTS 23 hip eye.r eye.l abdomen chest neck head rshoulder relbow rhand lshoulder lelbow lhand rhip rknee rfoot lhip lknee lfoot toe1-2.r toe5-3.r toe1-2.l toe5-3.l $HIDEBODY"
HIDEUPPERBODY="--hide2DLocationOfJoints $DONT_USE_END_JOINTS 4 abdomen chest eye.r eye.l" #We want to contain these joints in the BVH file and solve them, but they do not correspond to the BODY25 format so we hide them as 2D points..
SELECTUPPERBODY="--selectJoints $USE_END_JOINTS 13 hip eye.r eye.l abdomen chest neck head rshoulder relbow rhand lshoulder lelbow lhand $HIDEUPPERBODY"
HIDELOWERBODY="--hide2DLocationOfJoints $DONT_USE_END_JOINTS 6 abdomen chest toe1-2.r toe5-3.r toe1-2.l toe5-3.l"
SELECTLOWERBODY="--selectJoints $USE_END_JOINTS 14 hip abdomen chest neck rhip rknee rfoot lhip lknee lfoot toe1-2.r toe5-3.r toe1-2.l toe5-3.l $HIDELOWERBODY"
SELECT_RHAND="--selectJoints $USE_END_JOINTS 16 rhand finger5-1.r finger5-2.r finger5-3.r finger4-1.r finger4-2.r finger4-3.r finger3-1.r finger3-2.r finger3-3.r finger2-1.r finger2-2.r finger2-3.r rthumb finger1-2.r finger1-3.r"
SELECT_LHAND="--selectJoints $USE_END_JOINTS 16 lhand finger5-1.l finger5-2.l finger5-3.l finger4-1.l finger4-2.l finger4-3.l finger3-1.l finger3-2.l finger3-3.l finger2-1.l finger2-2.l finger2-3.l lthumb finger1-2.l finger1-3.l"
#FAR
MIN_DEPTH="900" #1000 original
MAX_DEPTH="4500" #3000 is too small
ITERATIONS="1" #Smallest size..
#ITERATIONS="2" #float32 targeting 16GB RAM
#ITERATIONS="8" #float16 targeting 16GB RAM
#Get number of bytes in RAM
RAM=`free | grep Mem | tr -s ' '| cut -f2 -d ' '`
if [ "$RAM" -gt "11286464" ]; then
echo "More than 12GB";
ITERATIONS="0"
fi
if [ "$RAM" -gt "15297500" ]; then
echo "More than 16GB";
ITERATIONS="1"
fi
if [ "$RAM" -gt "31861780" ]; then
echo "More than 32GB";
ITERATIONS="2"
fi
#Uncomment next line to override settings and make the
#minimum training set for development
#ITERATIONS="0"
totaldatasetsToGo=`echo "$datasetSubDir" | awk '{print NF}'`
function generateDataset
{
datasetsProcessed=0
rm $outputDir/$1
rm $outputDir/count_$1
rm $outputDir/2d_$1
#rm $outputDir/3d_$1
rm $outputDir/bvh_$1
for d in $datasetSubDir
do
if [ -d $datasetDir/$d ]
then
echo "Generating $1 - $green Found $d directory $normal"
datasetFile=`ls $datasetDir/$d | grep bvh`
((datasetsProcessed++))
#-------------------------------------------------------
for f in $datasetFile
do
echo "$green Generating $1 - $datasetsProcessed/$totaldatasetsToGo - $datasetDir/$d/$f file $normal"
#||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BVHFILE="$datasetDir/$d/$f" # --svg $outputDir
./GroundTruthDumper $VIEW_COMMANDS --haltonerror --from $BVHFILE --filtergimballocks 4 $3 --repeat $ITERATIONS $2 --occlusions --csv $outputDir $1 2d+bvh # --bvh $outputDir/$f-random.bvh
#||||||||||||||||||||||||||||||||||||||||||||||||||||||||
done
#-------------------------------------------------------
else
echo "$red Could not find $d directory $normal"
fi
done
#Let's count it and store the numbers so we don't have to spam disk reads on every training..
wc -l $outputDir/2d_$1 > $outputDir/count_$1
#wc -l $outputDir/3d_$1 >> $outputDir/count_$1
wc -l $outputDir/bvh_$1 >> $outputDir/count_$1
}
#------------------------------------------------------------------------------------------------------------
# MocapNET 1
# \ /
# \ BACK /
# \ /
# BACK \ / BACK
# \/
#-----------/\-------------
# / \
# FRONT / \ FRONT
# / FRONT \
# / \
#Old way to do that ( works if you don't go very far in depth )
#------------------------------------------------------------------------------------------------------------
#MINIMUM_POSITION="-1400 -300 $MIN_DEPTH"
#MINIMUM_ROTATION="-25 -178 -35"
#MAXIMUM_POSITION="1400 300 $MAX_DEPTH"
#MAXIMUM_ROTATION="25 178 35"
#generateDataset dataBack.csv "--flipRandomizationOrientation --randomizeranges $MINIMUM_POSITION -35 -179.999999 -35 $MAXIMUM_POSITION 35 -90 35 $MINIMUM_POSITION -35 90 -35 $MAXIMUM_POSITION 35 180 35"
#generateDataset dataAll.csv "--randomize $MINIMUM_POSITION -35 -179.999999 -35 $MAXIMUM_POSITION 35 180 35"
#generateDataset dataFront.csv "--randomize $MINIMUM_POSITION -35 -90 -35 $MAXIMUM_POSITION 35 90 35"
#------------------------------------------------------------------------------------------------------------
#New extra extra fine detail rotated by 45 degrees
# \ /
# \ BACK /
# \ /
# \ /
# \/
# LEFT /\ RIGHT
# / \
# / \
# / FRONT \
# / \
#------------------------------------------------------------------------------------------------------------
MIN_LIM="-45"
MAX_LIM="45"
#I have added 20 degrees on every limit more than the default
#to have some overlap and redundancy when switching between datasets
#---------------------------
FRONT_MIN_ORIENTATION="-55" #-45 default , -55 with 10 deg safety
FRONT_MAX_ORIENTATION="55" # 45 default , 55 with 10 deg safety
#---------------------------
BACK_MIN_ORIENTATION="125" # 135 default , 125 with 10 deg safety
BACK_MAX_ORIENTATION="235" # 225 default , 235 with 10 deg safety
#---------------------------
LEFT_MIN_ORIENTATION="-145" #-135 default
LEFT_MAX_ORIENTATION="-35" #-45 default
#---------------------------
RIGHT_MIN_ORIENTATION="35" # 45 default
RIGHT_MAX_ORIENTATION="145" # 135 default
# $FILTER_OUT_POSES_WITH_HANDS_IN_SIDE
#rm $outputDir/2d_filteredPosesRHand.csv
#rm $outputDir/bvh_filteredPosesRHand.csv
#./GroundTruthDumper --haltonerror --filtergimballocks --from filteredPosesRHand.bvh $SELECTUPPERBODY $RAND_UPPER_BODY --csvOrientation front --randomize2D $MIN_DEPTH $MAX_DEPTH -10 -45 -0 10 45 10 $SELECTUPPERBODY --occlusions --csv $outputDir #filteredPosesRHand.csv 2d+bvh
#exit 0
FILTER_OUT="$FILTER_OUT_POSES_WITH_HANDS_IN_SIDE"
#UPPER BODY
generateDataset upperbody_all.csv "$FILTER_OUT --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM -179.999999 $MIN_LIM $MAX_LIM 180 $MAX_LIM" "$SELECTUPPERBODY"
./ReshapeCSV dataset/bvh_upperbody_all.csv > dataset/category_upperbody_all.csv
echo "Category size = "#cat dataset/category_upperbody_all.csv | wc -c
#-----------------------------------------------
generateDataset upperbody_front.csv "$FILTER_OUT --csvOrientation front --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $FRONT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $FRONT_MAX_ORIENTATION $MAX_LIM" "$SELECTUPPERBODY $RAND_UPPER_BODY"
generateDataset upperbody_back.csv "$FILTER_OUT --csvOrientation back --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $BACK_MIN_ORIENTATION $MIN_LIM $MAX_LIM $BACK_MAX_ORIENTATION $MAX_LIM" "$SELECTUPPERBODY $RAND_UPPER_BODY"
generateDataset upperbody_left.csv "$FILTER_OUT --csvOrientation left --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $LEFT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $LEFT_MAX_ORIENTATION $MAX_LIM" "$SELECTUPPERBODY $RAND_UPPER_BODY"
generateDataset upperbody_right.csv "$FILTER_OUT --csvOrientation right --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $RIGHT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $RIGHT_MAX_ORIENTATION $MAX_LIM" "$SELECTUPPERBODY $RAND_UPPER_BODY"
#LOWER BODY
generateDataset lowerbody_all.csv "--randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM -179.999999 $MIN_LIM $MAX_LIM 180 $MAX_LIM" "$SELECTLOWERBODY"
./ReshapeCSV dataset/bvh_lowerbody_all.csv > dataset/category_lowerbody_all.csv
echo "Category size = "
cat dataset/category_lowerbody_all.csv | wc -c
#-----------------------------------------------
generateDataset lowerbody_front.csv "--csvOrientation front --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $FRONT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $FRONT_MAX_ORIENTATION $MAX_LIM" "$SELECTLOWERBODY $RAND_LOWER_BODY"
generateDataset lowerbody_back.csv "--csvOrientation back --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $BACK_MIN_ORIENTATION $MIN_LIM $MAX_LIM $BACK_MAX_ORIENTATION $MAX_LIM" "$SELECTLOWERBODY $RAND_LOWER_BODY"
generateDataset lowerbody_left.csv "--csvOrientation left --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $LEFT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $LEFT_MAX_ORIENTATION $MAX_LIM" "$SELECTLOWERBODY $RAND_LOWER_BODY"
generateDataset lowerbody_right.csv "--csvOrientation right --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $RIGHT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $RIGHT_MAX_ORIENTATION $MAX_LIM" "$SELECTLOWERBODY $RAND_LOWER_BODY"
exit 0 # <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <>
#This is a better hand dataset generator that ignores poses
./createRandomHandDataset.sh
exit 0 # <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <>
#This hand is just based on CMU poses
#LEFT HAND
generateDataset lhand_front.csv "--csvOrientation front --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $FRONT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $FRONT_MAX_ORIENTATION $MAX_LIM" "$SELECT_LHAND $RANDOMIZE_LEFT_HAND"
generateDataset lhand_back.csv "--csvOrientation back --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $BACK_MIN_ORIENTATION $MIN_LIM $MAX_LIM $BACK_MAX_ORIENTATION $MAX_LIM" "$SELECT_LHAND $RANDOMIZE_LEFT_HAND"
generateDataset lhand_left.csv "--csvOrientation left --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $LEFT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $LEFT_MAX_ORIENTATION $MAX_LIM" "$SELECT_LHAND $RANDOMIZE_LEFT_HAND"
generateDataset lhand_right.csv "--csvOrientation right --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $RIGHT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $RIGHT_MAX_ORIENTATION $MAX_LIM" "$SELECT_LHAND $RANDOMIZE_LEFT_HAND"
#RIGHT HAND
generateDataset rhand_front.csv "--csvOrientation front --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $FRONT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $FRONT_MAX_ORIENTATION $MAX_LIM" "$SELECT_RHAND $RANDOMIZE_RIGHT_HAND"
generateDataset rhand_back.csv "--csvOrientation back --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $BACK_MIN_ORIENTATION $MIN_LIM $MAX_LIM $BACK_MAX_ORIENTATION $MAX_LIM" "$SELECT_RHAND $RANDOMIZE_RIGHT_HAND"
generateDataset rhand_left.csv "--csvOrientation left --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $LEFT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $LEFT_MAX_ORIENTATION $MAX_LIM" "$SELECT_RHAND $RANDOMIZE_RIGHT_HAND"
generateDataset rhand_right.csv "--csvOrientation right --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $RIGHT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $RIGHT_MAX_ORIENTATION $MAX_LIM" "$SELECT_RHAND $RANDOMIZE_RIGHT_HAND"
exit 0 # <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <>
#WHOLE BODY AT ONCE
generateDataset body_all.csv "$FILTER_OUT --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM -179.999999 $MIN_LIM $MAX_LIM 180 $MAX_LIM" "$SELECTBODY"
./ReshapeCSV dataset/bvh_body_all.csv > dataset/category_body_all.csv
echo "Category size = "
cat dataset/category_body_all.csv | wc -c
#-----------------------------------------------
generateDataset body_front.csv "$FILTER_OUT --csvOrientation front --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $FRONT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $FRONT_MAX_ORIENTATION $MAX_LIM" "$SELECTBODY"
generateDataset body_back.csv "$FILTER_OUT --csvOrientation back --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $BACK_MIN_ORIENTATION $MIN_LIM $MAX_LIM $BACK_MAX_ORIENTATION $MAX_LIM" "$SELECTBODY"
generateDataset body_left.csv "$FILTER_OUT --csvOrientation left --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $LEFT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $LEFT_MAX_ORIENTATION $MAX_LIM" "$SELECTBODY"
generateDataset body_right.csv "$FILTER_OUT --csvOrientation right --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $RIGHT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $RIGHT_MAX_ORIENTATION $MAX_LIM" "$SELECTBODY"
exit 0 # <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <>
echo "Getting statistics for front view.."
cat dataset/bvh_body_front.csv | cut -d',' -f 5 > frontOrientations
getStatistics frontOrientations dataset/bvh_body_front_statistics.txt
cat dataset/bvh_body_front_statistics.txt
rm frontOrientations
echo "Getting statistics for back view.."
cat dataset/bvh_body_back.csv | cut -d',' -f 5 > backOrientations
getStatistics backOrientations dataset/bvh_body_back_statistics.txt
cat dataset/bvh_body_back_statistics.txt
rm backOrientations
echo "Getting statistics for left view.."
cat dataset/bvh_body_left.csv | cut -d',' -f 5 > leftOrientations
getStatistics leftOrientations dataset/bvh_body_left_statistics.txt
cat dataset/bvh_body_left_statistics.txt
rm leftOrientations
echo "Getting statistics for right view.."
cat dataset/bvh_body_right.csv | cut -d',' -f 5 > rightOrientations
getStatistics rightOrientations dataset/bvh_body_right_statistics.txt
cat dataset/bvh_body_right_statistics.txt
rm rightOrientations
echo "Getting statistics for all view.."
cat dataset/bvh_body_all.csv | cut -d',' -f 5 > allOrientations
getStatistics allOrientations dataset/bvh_body_all_statistics.txt
cat dataset/bvh_body_all_statistics.txt
rm allOrientations
echo "Done.."
exit 0
@@ -0,0 +1,67 @@
#!/bin/bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "$DIR"
cd ..
red=$(printf "\033[31m")
green=$(printf "\033[32m")
yellow=$(printf "\033[33m")
blue=$(printf "\033[34m")
magenta=$(printf "\033[35m")
cyan=$(printf "\033[36m")
white=$(printf "\033[37m")
normal=$(printf "\033[m")
SELECTBODY="--selectJoints 21 hip abdomen chest neck head rcollar rshoulder relbow rhand lcollar lshoulder lelbow lhand rhip rknee rfoot lhip lknee lfoot toe3-2.r toe3-2.l"
SELECTRHAND="--selectJoints 11 rhand rthumb1 rthumb2 rindex1 rindex2 rmid1 rmid2 rring1 rring2 rpinky1 rpinky2"
SELECTLHAND="--selectJoints 11 lhand lthumb1 lthumb2 lindex1 lindex2 lmid1 lmid2 lring1 lring2 lpinky1 lpinky2"
datasetDir="dataset/MotionCapture"
datasetSubDir="01 02 03 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19"
outputDir="dataset/"
rm $outputDir/2d_body_test.csv
rm $outputDir/3d_body_test.csv
rm $outputDir/bvh_body_test.csv
#create a small test file with one example
#rm $outputDir/testSMALL.csv
# ./GroundTruthDumper --from MotionCapture/01/01_01.bvh --offsetPositionRotation 0 750 2500 0 0 0 --maxFrames 1 --csv $outputDir testSMALL.csv
#PRODUCESVG="--svg $outputDir/svg"
PRODUCESVG=" "
datasetsProcessed=0
totaldatasetsToGo=`echo "$datasetSubDir" | awk '{print NF}'`
rm $outputDir/test.csv
for d in $datasetSubDir
do
if [ -d $datasetDir/$d ]
then
echo "$green Found $d directory $normal"
datasetFile=`ls $datasetDir/$d | grep bvh`
((datasetsProcessed++))
#-------------------------------------------------------
for f in $datasetFile
do
echo "$green Generating Test - $datasetsProcessed/$totaldatasetsToGo - $datasetDir/$d/$f file $normal"
#||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BVHFILE="$datasetDir/$d/$f" # --svg $outputDir
#./GroundTruthDumper --from $BVHFILE --csv $outputDir test.csv# --bvh $outputDir/$f-random.bvh
./GroundTruthDumper --from $BVHFILE $SELECTBODY --offsetPositionRotation 0 750 2000 0 0 0 --occlusions --csv $outputDir body_test.csv 2d+bvh $PRODUCESVG #--to ~/Documents/Programming/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/Scenes/testBVH.conf --bvh $outputDir/$f-random.bvh --svg $outputDir/svg
#exit 0
#./GroundTruthDumper --from $BVHFILE --setPositionRotation 0 400 0 0 0 0 --csv $outputDir test.csv# --bvh $outputDir/$f-random.bvh
#||||||||||||||||||||||||||||||||||||||||||||||||||||||||
done
#-------------------------------------------------------
else
echo "$red Could not find $d directory $normal"
fi
done
exit 0
+37
View File
@@ -0,0 +1,37 @@
#!/bin/bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "$DIR"
cd ..
#Valgrind can also be downloaded..
#https://www.valgrind.org/downloads/current.html
#Simple dependency checker that will apt-get stuff if something is missing
SYSTEM_DEPENDENCIES="valgrind"
for REQUIRED_PKG in $SYSTEM_DEPENDENCIES
do
PKG_OK=$(dpkg-query -W --showformat='${Status}\n' $REQUIRED_PKG|grep "install ok installed")
echo "Checking for $REQUIRED_PKG: $PKG_OK"
if [ "" = "$PKG_OK" ]; then
echo "No $REQUIRED_PKG. Setting up $REQUIRED_PKG."
#If this is uncommented then only packages that are missing will get prompted..
#sudo apt-get --yes install $REQUIRED_PKG
#if this is uncommented then if one package is missing then all missing packages are immediately installed..
sudo apt-get install $SYSTEM_DEPENDENCIES
break
fi
done
#------------------------------------------------------------------------------
valgrind --tool=memcheck --leak-check=yes --show-reachable=yes --track-origins=yes --num-callers=20 --track-fds=yes ./MocapNETLiveWebcamDemo --from shuffle $@ 2>error.txt
exit 0
@@ -0,0 +1,93 @@
#!/bin/bash
DATASET=""
if (( $#<1 ))
then
echo "Please provide arguments first argument is dataset "
exit 1
else
DATASET=$1-data
fi
# $1 holds the video file we want to process ( it should be something like path/to/videofile.mp4 )
#DATASET now holds the output directory we will create ( it should be something like path/to/videofile.mp4-data/ )
#Remember the directory where user started
STARTDIR=`pwd`
#Remember the directory where the script is ( and where MocapNET is :) )
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
#Please give the path to openpose here..
OPENPOSE_DIR="/home/ammar/Documents/3dParty/openpose/"
OPENPOSE_BINARY_DIR="/home/ammar/Documents/3dParty/openpose/build/examples/openpose/"
#Dataset dumping using ffmpeg
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
#Create the new dataset directory
mkdir $DATASET
#Dump the video files using our naming scheme
ffmpeg -i $1 -r 30 -q:v 1 $DATASET/colorFrame_0_%05d.jpg
#Make sure we start at frame 0
cp $DATASET/colorFrame_0_00001.jpg $DATASET/colorFrame_0_00000.jpg
#We now want to grab an absolute path to our dataset
cd $DATASET
FULL_PATH_TO_DATASET=`pwd`
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
#2D pose estimation using OpenPose
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
cd $OPENPOSE_DIR
LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64 $OPENPOSE_BINARY_DIR/openpose.bin -number_people_max 1 --hand --face --write_json $FULL_PATH_TO_DATASET -image_dir $FULL_PATH_TO_DATASET $@
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
#2D pose conversion to CSV using our tool
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
cd "$DIR"
cd ..
./convertOpenPoseJSONToCSV --from $DATASET
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
#3D pose estimation using MocapNET2
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
cd "$DIR"
cd ..
./MocapNET2CSV --from $FULL_PATH_TO_DATASET/2dJoints_v1.4.csv --mt --show 3 --save
cp out.bvh $FULL_PATH_TO_DATASET/predicted.bvh
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
cd $STARTDIR
exit 0
+37
View File
@@ -0,0 +1,37 @@
#!/bin/bash
#This is a script to dump a video file to JPG files
#it uses ffmpeg so make sure you have sudo apt-get install ffmpeg
#If you do ./dump_video.sh yourvideo.mp4
#There should be an output folder yourvideo.mp4-data that has all the frames of the video
#you can then point OpenPose to this directory to convert them to JSON 2D detections
STARTDIR=`pwd`
#Switch to this directory
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "$DIR"
DATASET=""
if (( $#<1 ))
then
echo "Please provide arguments first argument is dataset "
exit 1
else
DATASET=$1-data
fi
THEDATETAG=`date +"%y-%m-%d_%H-%M-%S"`
mkdir $DATASET
ffmpeg -i $1 -r 30 -q:v 1 $DATASET/colorFrame_0_%05d.jpg
cp $DATASET/colorFrame_0_00001.jpg $DATASET/colorFrame_0_00000.jpg
cd $DATASET
cd ..
cd $STARTDIR
exit 0
@@ -0,0 +1,48 @@
#!/bin/bash
#Simple dependency checker that will apt-get stuff if something is missing
# sudo apt-get install gnuplot
SYSTEM_DEPENDENCIES="gnuplot"
for REQUIRED_PKG in $SYSTEM_DEPENDENCIES
do
PKG_OK=$(dpkg-query -W --showformat='${Status}\n' $REQUIRED_PKG|grep "install ok installed")
echo "Checking for $REQUIRED_PKG: $PKG_OK"
if [ "" = "$PKG_OK" ]; then
echo "No $REQUIRED_PKG. Setting up $REQUIRED_PKG."
#If this is uncommented then only packages that are missing will get prompted..
#sudo apt-get --yes install $REQUIRED_PKG
#if this is uncommented then if one package is missing then all missing packages are immediately installed..
sudo apt-get install $SYSTEM_DEPENDENCIES
break
fi
done
#------------------------------------------------------------------------------
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "$DIR"
cd ..
./GroundTruthDumper --from dataset/CMU_Sample_05_01.bvh --selectJoints 0 23 hip eye.r eye.l abdomen chest neck head rshoulder relbow rhand lshoulder lelbow lhand rhip rknee rfoot lhip lknee lfoot toe1-2.r toe5-3.r toe1-2.l toe5-3.l --tuneIterations 130 100 130 0.01 5 30 20 > tuneIterations.dat
#set view 45,45; set view map; set yrange [9:90]; set zrange [30:90];
# set dgrid3d 25,25 qnorm 4;
#splot \"tuneIterations.dat\" using 1:3:2 with points pointsize 3 pointtype 7;
#HCD tuning iteration hyperparameter
GNUPLOT_CMD="set terminal png size 1000,800 font \"Helvetica,34\"; set output \"tuneIterations.png\"; set isosample 160; set pm3d at b; set palette defined (65 \"black\", 70 \"red\", 80 \"yellow\", 90 \"yellow\", 100 \"white\"); set view 30,45; set hidden3d; set xrange [1:25]; set yrange [9:90]; set zrange [30:90]; set style fill solid; set xlabel \"HCD Iterations\" rotate parallel; set ylabel \"Frames per second\" rotate parallel; set zlabel \"Mean average error in mm\" rotate parallel; set ztics 30; set title \"Mean average error in mm\"; set ytics 30; set multiplot; splot \"tuneIterations.dat\" using 1:3:2 with lines palette lw 2 title \" \"; splot \"tuneIterations.dat\" using 1:3:2 with points palette pointsize 1 pointtype 7 title \" \"; "
gnuplot -e "$GNUPLOT_CMD"
echo "Result of experiment is now ready @ tuneIterations.png"
timeout 10 gpicview tuneIterations.png
exit 0
+54
View File
@@ -0,0 +1,54 @@
#/bin/bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "$DIR/../dependencies"
DEPENDENCIES_PATH=`pwd`
sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config ffmpeg libavcodec-dev libavformat-dev libavcodec-dev libavformat-dev libswscale-dev libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff5-dev libdc1394-22-dev libeigen3-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev sphinx-common libtbb-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libopenexr-dev libgstreamer-plugins-base1.0-dev libavutil-dev libavfilter-dev libavresample-dev libpython3-all-dev python3-numpy python3-dev
#cd "$1"
echo "Will Install @ `pwd`"
#Want a different version?
#Check https://opencv.org/releases/ for versions and
#change the OPENCV_VERSION in the next line..
OPENCV_VERSION="3.2.0"
echo "Downloading"
wget http://ammar.gr/programs/opencv-$OPENCV_VERSION.zip
wget http://ammar.gr/programs/opencv_contrib-$OPENCV_VERSION.tar.gz
#wget https://codeload.github.com/opencv/opencv/zip/$OPENCV_VERSION -O opencv-$OPENCV_VERSION.zip
#wget https://codeload.github.com/opencv/opencv_contrib/zip/$OPENCV_VERSION -O opencv_contrib-$OPENCV_VERSION.tar.gz
echo "Extracting"
#tar xvzf opencv_contrib-$OPENCV_VERSION.tar.gz
unzip opencv_contrib-$OPENCV_VERSION.zip
unzip opencv-$OPENCV_VERSION.zip
echo "Building"
cd opencv-$OPENCV_VERSION
mkdir build
cd build
cmake -DOPENCV_ENABLE_NONFREE=ON -DOPENCV_EXTRA_MODULES_PATH=$DEPENDENCIES_PATH/opencv_contrib-$OPENCV_VERSION/modules ..
make -j5
echo "Do you want to install OpenCV to your system ? "
echo
echo -n " (Y/N)?"
read answer
if test "$answer" != "N" -a "$answer" != "n";
then
sudo make install
fi
cd "$DIR"
echo "Done"
exit 0
@@ -0,0 +1,32 @@
#!/bin/bash
#This script should be run after you have dumped a video to a directory using the dump_video.sh utility
#You should give a full path to this utility i.e. ./processDatasetWithOpenpose.sh "~/myDatasets/yourvideo.mp4-data/"
#and also dont forget to change the PATH_TO_OPENPOSE to the directory that has your openpose.bin!
PATH_TO_OPENPOSE="PLEASE/CHANGE/THIS/"
STARTDIR=`pwd`
#Switch to this directory
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
DATASET=""
if (( $#<1 ))
then
echo "Please provide arguments first argument is dataset "
exit 1
else
DATASET=$1
$PATH_TO_OPENPOSE/openpose.bin -number_people_max 1 --hand --face --write_json $DATASET -image_dir $DATASET $@
cd "$DIR"
echo "Went back to $DIR"
echo "Hopefully the path you have given is an absolute path.."
./convertBody25JSONToCSV -i $DATASET
exit 0
+47
View File
@@ -0,0 +1,47 @@
#!/bin/bash
FROMDATASET="$1"
X=0
# sudo apt-get install imagemagick
if (( $# != 1 )); then
echo "Please run giving the path to download and build"
echo "$0 \"DatasetNameSource\" "
exit 0
fi
TOTAL_FRAMES=100000
cd $FROMDATASET
echo "Spliting Dataset $FROMDATASET "
echo "Please wait .. "
for (( i=$X; i<=$TOTAL_FRAMES; i++ ))
do
XNUM=`printf %05u $i`
if [ -f "colorFrame_0_$XNUM.jpg" ]
then
width=$(identify -format "%w" "colorFrame_0_$XNUM.jpg")> /dev/null
height=$(identify -format "%h" "colorFrame_0_$XNUM.jpg")> /dev/null
halfWidth=$((width / 2))
echo "$width x $height -> 2x $halfWidth x $height"
#First crop second half ( before source file gets rewritten )
convert colorFrame_0_$XNUM.jpg -crop "$halfWidth"x$height+$halfWidth+0 colorFrame_1_$XNUM.jpg
convert colorFrame_0_$XNUM.jpg -crop "$halfWidth"x$height+0+0 colorFrame_0_$XNUM.jpg
else
break
fi
echo -n "."
done
echo "Passed TOTAL_FRAMES (!) this is a bug! :S"
cd ..
exit 0
@@ -0,0 +1,135 @@
#!/bin/bash
#Script last updated 25-03-2022
#Script that seems to be able to build bazel/tf2 on Ubuntu 20.04
#I really deeply dislike the bazel build system which is bloated and obfuscated for no reason, just Google "NIH syndrome"
#However Tensorflow2 is a great NN framework
# See this video "How To Make Package Managers Cry" -> https://www.youtube.com/watch?v=NSemlYagjIU#t=19m0s
echo "Check CUDA"
ls /usr/local/cuda/extras/CUPTI/lib64
ls /usr/local/cuda
ls /usr/local/cuda/lib64/ | grep libcudnn.so
nvcc -V
VERSION="2.8"
#Get number of bytes in RAM
RAM=`free | grep Mem | tr -s ' '| cut -f2 -d ' '`
BazelPleaseSlowDown="--local_resources 2048,.5,1.0"
if [ "$RAM" -gt "11286464" ]; then
echo "More than 12GB";
BazelPleaseSlowDown=" "
fi
if [ "$RAM" -gt "15297500" ]; then
echo "More than 16GB";
BazelPleaseSlowDown=" "
fi
if [ "$RAM" -gt "31861780" ]; then
echo "More than 32GB";
BazelPleaseSlowDown=" "
fi
#Tensorflow is a great Neural network library that unfortunately is coupled to the terrible Bazel build system
#This is a download and build script for Ubuntu 20.04, that should work building release 2.8
sudo apt-get install python3-dev python3-pip python3-venv python3-tk
pip3 install -U --user pip numpy wheel packaging
pip3 install -U --user keras_preprocessing --no-deps
cd ~/Documents
mkdir 3dParty
cd 3dParty
#wget https://github.com/bazelbuild/bazel/releases/download/4.2.1/bazel-4.2.1-installer-linux-x86_64.sh
#chmod +x bazel-4.2.1-installer-linux-x86_64.sh
#./bazel-4.2.1-installer-linux-x86_64.sh --user
#r2.8
mkdir -p "$HOME/.bazel/bin" && cd "$HOME/.bazel/bin" && curl -fLO https://releases.bazel.build/4.2.1/release/bazel-4.2.1-linux-x86_64 && chmod +x bazel-4.2.1-linux-x86_64
#Create shared directory
if [ -f ~/.bashrc ]
then
if cat ~/.bashrc | grep -q "BAZEL_CANCER"
then
echo "Bazel includes seem to be set-up.."
else
USER=`whoami`
echo "#BAZEL_CANCER" >> ~/.bashrc
echo "source $HOME/.bazel/bin/bazel-complete.bash" >> ~/.bashrc
echo "export PATH=\"\$PATH:\$HOME/bin\"" >> ~/.bashrc
source ~/.bashrc
fi
fi
if [ ! -d tensorflow ]
then
git clone https://github.com/tensorflow/tensorflow.git
fi
cd tensorflow
git pull
git checkout r$VERSION
#Make sure to check your target CPU and when asked used the correct -march= / -mtune=
# for example for an old intel i7 -march=nehalem is used..
#https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html
echo "Answers to configure questions :"
echo "/usr/bin/python3"
echo "/usr/lib/python3/dist-packages"
echo "cuda Y"
echo "tensorrt Y"
echo "CUDA 11.2"
echo "CuDNN 8"
echo "TensorRT 8"
echo "/usr/local/cuda/,/usr/local/cuda/include/,/usr/local/cuda/bin/,/usr/local/cuda/lib64/,/usr/local/cuda/lib64/,/usr/local/tensorrt-8.2.3/,/usr/local/tensorrt-8.2.3/include/,/usr/local/tensorrt-8.2.3/lib/,"
echo "Compute capability 6.1 ( for GTX 1050 + cards )"
#Attempt to inform the configure script on how to find the CUDA stuff..
export CUDNN_INSTALL_PATH=/usr/local/cuda/,/usr/local/cuda/include/,/usr/local/cuda/bin/,/usr/local/cuda/lib64/,/usr/local/cuda/lib64/,/usr/local/tensorrt-8.2.3/,/usr/local/tensorrt-8.2.3/include/,/usr/local/tensorrt-8.2.3/lib/
./configure
bazel clean --expunge
#You should use CUDA 11.2 and cudnn-11.2-linux-x64-v8.1.1.33 and TensorRT 8.2.3
bazel build --config=opt --config=cuda --config=mkl --config=monolithic $BazelPleaseSlowDown //tensorflow/tools/pip_package:build_pip_package
./bazel-bin/tensorflow/tools/pip_package/build_pip_package ~/Documents/3dParty/
#To install
#pip3 --user install ~/Documents/3dParty/tensorflow-2.4.0-cp36-cp36m-linux_x86_64.whl
bazel build --config opt --config=cuda --config=monolithic //tensorflow/tools/lib_package:libtensorflow
cp bazel-bin/tensorflow/tools/lib_package/libtensorflow.tar.gz ~/Documents/3dParty/libtensorflow-r$VERSION.tar.gz
#Build tensorflow lite
#https://www.tensorflow.org/lite/guide/build_cmake
mkdir tflite_buld
cd tflite_buld/
cmake ../tensorflow/lite
cmake --build . -j
echo "Please visit ~/Documents/3dParty/ to collect your tensorflow python3 wheel, and C Library.."
echo "Will now use : python -c 'import tensorflow as tf;' to test your tensorflow"
python -c 'import tensorflow as tf;'
exit 0
@@ -0,0 +1,93 @@
#!/bin/bash
#Script source repository https://github.com/AmmarkoV/MyScripts/blob/master/Tensorflow/tensorflowBuild.sh
#Script last updated 23-06-2020
#Script that seems to be able to build bazel/tf2 on Ubuntu 20.04
#I really deeply dislike the bazel build system which is bloated and obfuscated for no reason, just Google "NIH syndrome"
#However Tensorflow2 is a great NN framework
# See this video "How To Make Package Managers Cry" -> https://www.youtube.com/watch?v=NSemlYagjIU#t=19m0s
#Get number of bytes in RAM
RAM=`free | grep Mem | tr -s ' '| cut -f2 -d ' '`
BazelPleaseSlowDown="--local_resources 2048,.5,1.0"
if [ "$RAM" -gt "11286464" ]; then
echo "More than 12GB";
BazelPleaseSlowDown=" "
fi
if [ "$RAM" -gt "15297500" ]; then
echo "More than 16GB";
BazelPleaseSlowDown=" "
fi
if [ "$RAM" -gt "31861780" ]; then
echo "More than 32GB";
BazelPleaseSlowDown=" "
fi
#Tensorflow is a great Neural network library that unfortunately is coupled to the terrible Bazel build system
#This is a download and build script for Ubuntu 18.04, that should work building release 1.15
sudo apt-get install python3-dev python3-pip python3-venv python3-tk
pip install -U --user pip six numpy wheel setuptools mock 'future>=0.17.1'
pip install -U --user keras_applications --no-deps
pip install -U --user keras_preprocessing --no-deps
cd ~/Documents
mkdir 3dParty
cd 3dParty
wget http://ammar.gr/mocapnet/bazel-0.24.1-installer-linux-x86_64-for-tensorflow-r1.15.sh
chmod +x bazel-0.24.1-installer-linux-x86_64-for-tensorflow-r1.15.sh
./bazel-0.24.1-installer-linux-x86_64-for-tensorflow-r1.15.sh --user
#Create shared directory
if [ -f ~/.bashrc ]
then
if cat ~/.bashrc | grep -q "BAZEL_CANCER"
then
echo "Bazel includes seem to be set-up.."
else
USER=`whoami`
echo "#BAZEL_CANCER" >> ~/.bashrc
echo "source ~/.bazel/bin/bazel-complete.bash" >> ~/.bashrc
echo "export PATH=\"\$PATH:\$HOME/bin\"" >> ~/.bashrc
source ~/.bashrc
fi
fi
if [ ! -d tensorflow ]
then
git clone https://github.com/tensorflow/tensorflow.git
fi
cd tensorflow
git pull
git checkout r1.15
./configure
bazel clean --expunge
#Flags for bazel if you have gcc<5.0
#--cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0"
#--noincompatible_do_not_split_linking_cmdline
bazel build --config=opt --config=cuda --config=mkl --config=monolithic $BazelPleaseSlowDown //tensorflow/tools/pip_package:build_pip_package
./bazel-bin/tensorflow/tools/pip_package/build_pip_package ~/Documents/3dParty/
bazel build --config opt --config=cuda --config=monolithic //tensorflow/tools/lib_package:libtensorflow
cp bazel-bin/tensorflow/tools/lib_package/libtensorflow.tar.gz ~/Documents/3dParty/libtensorflow-r1.15.tar.gz
echo "Please visit ~/Documents/3dParty/ to collect your tensorflow python3 wheel, and C Library.."
exit 0