Update cnet branch.
This commit splits the demo3D in two demo: one for the 3D object detection and one for the tracking. It renames the files related to CenterTrack. It adds a new parameter to select the tracker mode (2D or 3D). Signed-off-by: Davide Sapienza <sapienza.dav@gmail.com>
This commit is contained in:
+8
-5
@@ -46,9 +46,9 @@ include_directories(${EIGEN3_INCLUDE_DIR})
|
||||
|
||||
find_package(OpenCV REQUIRED)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DOPENCV")
|
||||
if(OpenCV_CUDA_VERSION)
|
||||
add_compile_definitions(OPENCV_CUDACONTRIB)
|
||||
endif()
|
||||
# if(OpenCV_CUDA_VERSION)
|
||||
# add_compile_definitions(OPENCV_CUDACONTRIB)
|
||||
# endif()
|
||||
|
||||
# gives problems in cross-compiling, probably malformed cmake config
|
||||
find_package(yaml-cpp REQUIRED)
|
||||
@@ -120,8 +120,8 @@ target_link_libraries(test_resnet101_cnet3d tkDNN)
|
||||
add_executable(test_dla34_cnet3d tests/centernet/dla34_cnet3d/dla34_cnet3d.cpp)
|
||||
target_link_libraries(test_dla34_cnet3d tkDNN)
|
||||
|
||||
add_executable(test_dla34_cnet3d_track tests/centernet/dla34_cnet3d_track/dla34_cnet3d_track.cpp)
|
||||
target_link_libraries(test_dla34_cnet3d_track tkDNN)
|
||||
add_executable(test_dla34_ctrack tests/centertrack/dla34_ctrack/dla34_ctrack.cpp)
|
||||
target_link_libraries(test_dla34_ctrack tkDNN)
|
||||
|
||||
# DEMOS
|
||||
add_executable(test_rtinference tests/test_rtinference/rtinference.cpp)
|
||||
@@ -136,6 +136,9 @@ target_link_libraries(demo tkDNN)
|
||||
add_executable(demo3D demo/demo/demo3D.cpp)
|
||||
target_link_libraries(demo3D tkDNN)
|
||||
|
||||
add_executable(demoTracker demo/demo/demoTracker.cpp)
|
||||
target_link_libraries(demoTracker tkDNN)
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Install
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
#include <mutex>
|
||||
|
||||
#include "CenternetDetection3D.h"
|
||||
#include "CenternetDetection3DTrack.h"
|
||||
|
||||
bool gRun;
|
||||
bool SAVE_RESULT = false;
|
||||
@@ -55,7 +54,6 @@ int main(int argc, char *argv[]) {
|
||||
SAVE_RESULT = true;
|
||||
|
||||
tk::dnn::CenternetDetection3D cnet;
|
||||
tk::dnn::CenternetDetection3DTrack ctrack;
|
||||
|
||||
tk::dnn::DetectionNN3D *detNN;
|
||||
|
||||
@@ -64,9 +62,6 @@ int main(int argc, char *argv[]) {
|
||||
case 'c':
|
||||
detNN = &cnet;
|
||||
break;
|
||||
case 't':
|
||||
detNN = &ctrack;
|
||||
break;
|
||||
default:
|
||||
FatalError("Network type not allowed (3rd parameter)\n");
|
||||
}
|
||||
|
||||
@@ -0,0 +1,157 @@
|
||||
#include <iostream>
|
||||
#include <signal.h>
|
||||
#include <stdlib.h> /* srand, rand */
|
||||
//#include <unistd.h>
|
||||
#include <mutex>
|
||||
|
||||
#include "CenterTrack.h"
|
||||
|
||||
bool gRun;
|
||||
bool SAVE_RESULT = false;
|
||||
|
||||
void sig_handler(int signo) {
|
||||
std::cout<<"request gateway stop\n";
|
||||
gRun = false;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
|
||||
std::cout<<"detection\n";
|
||||
signal(SIGINT, sig_handler);
|
||||
|
||||
|
||||
std::string net = "dla34_cnet3d_track_fp32.rt";
|
||||
if(argc > 1)
|
||||
net = argv[1];
|
||||
#ifdef __linux__
|
||||
std::string input = "../demo/yolo_test.mp4";
|
||||
#elif _WIN32
|
||||
std::string input = "..\\..\\..\\demo\\yolo_test.mp4";
|
||||
#endif
|
||||
|
||||
if(argc > 2)
|
||||
input = argv[2];
|
||||
char ntype = 'c';
|
||||
if(argc > 3)
|
||||
ntype = argv[3][0];
|
||||
int n_classes = 3;
|
||||
if(argc > 4)
|
||||
n_classes = atoi(argv[4]);
|
||||
int n_batch = 1;
|
||||
if(argc > 5)
|
||||
n_batch = atoi(argv[5]);
|
||||
bool show = true;
|
||||
if(argc > 6)
|
||||
show = atoi(argv[6]);
|
||||
float conf_thresh=0.3;
|
||||
if(argc > 7)
|
||||
conf_thresh = atof(argv[7]);
|
||||
bool t3d = true;
|
||||
if(argc > 8)
|
||||
t3d = atoi(argv[8]);
|
||||
if(n_batch < 1 || n_batch > 64)
|
||||
FatalError("Batch dim not supported");
|
||||
|
||||
if(!show)
|
||||
SAVE_RESULT = true;
|
||||
|
||||
tk::dnn::CenterTrack ctrack;
|
||||
|
||||
tk::dnn::TrackingNN *trackNN;
|
||||
|
||||
switch(ntype)
|
||||
{
|
||||
case 'c':
|
||||
trackNN = &ctrack;
|
||||
break;
|
||||
default:
|
||||
FatalError("Network type not allowed (3rd parameter)\n");
|
||||
}
|
||||
std::vector<cv::Mat> calibs;
|
||||
// cv::Mat calib = cv::Mat::zeros(cv::Size(3,3), CV_32F);
|
||||
// calib.at<float>(0,0) = 864.1243196486207;// * 512.0;//884.081444212;//864.1243196486207 * 512.0;// 633.0;
|
||||
// calib.at<float>(0,2) = 726.7271690557819;// * 512.0;//0.0;//726.7271690557819 * 512.0;// 0.0; //w/2
|
||||
// calib.at<float>(1,1) = 883.6552349216504;// * 512.0;//884.081444212;//883.6552349216504 * 512.0;// 633.0;
|
||||
// calib.at<float>(1,2) = 506.8548506986564;// * 512.0;//0.0;//506.8548506986564 * 512.0;// 0.0; //h/2
|
||||
// calibs.push_back(calib);
|
||||
// calibs.push_back(calib);
|
||||
// calibs.push_back(calib);
|
||||
// calibs.push_back(calib);
|
||||
trackNN->init(net, n_classes, n_batch, conf_thresh, t3d, calibs);
|
||||
|
||||
gRun = true;
|
||||
|
||||
cv::VideoCapture cap(input);
|
||||
if(!cap.isOpened())
|
||||
gRun = false;
|
||||
else
|
||||
std::cout<<"camera started\n";
|
||||
|
||||
cv::VideoWriter resultVideo;
|
||||
if(SAVE_RESULT) {
|
||||
int w = cap.get(cv::CAP_PROP_FRAME_WIDTH);
|
||||
int h = cap.get(cv::CAP_PROP_FRAME_HEIGHT);
|
||||
resultVideo.open("result.mp4", cv::VideoWriter::fourcc('M','P','4','V'), 30, cv::Size(w, h));
|
||||
}
|
||||
cv::Mat frame;
|
||||
if(show)
|
||||
cv::namedWindow("detection", cv::WINDOW_NORMAL);
|
||||
|
||||
std::vector<cv::Mat> batch_frame;
|
||||
std::vector<cv::Mat> batch_dnn_input;
|
||||
|
||||
while(gRun) {
|
||||
batch_dnn_input.clear();
|
||||
batch_frame.clear();
|
||||
|
||||
for(int bi=0; bi< n_batch; ++bi){
|
||||
cap >> frame;
|
||||
if(!frame.data)
|
||||
break;
|
||||
batch_frame.push_back(frame);
|
||||
|
||||
// this will be resized to the net format
|
||||
batch_dnn_input.push_back(frame.clone());
|
||||
}
|
||||
if(!frame.data)
|
||||
break;
|
||||
|
||||
//inference
|
||||
trackNN->update(batch_dnn_input, n_batch, false, nullptr, false);
|
||||
trackNN->draw(batch_frame);
|
||||
|
||||
if(show){
|
||||
for(int bi=0; bi< n_batch; ++bi){
|
||||
cv::imshow("detection", batch_frame[bi]);
|
||||
cv::waitKey(1);
|
||||
}
|
||||
}
|
||||
if(n_batch == 1 && SAVE_RESULT)
|
||||
resultVideo << frame;
|
||||
}
|
||||
|
||||
std::cout<<"detection end\n";
|
||||
double mean = 0;
|
||||
|
||||
std::cout<<COL_GREENB<<"\n\nTime preprocessing stats:\n";
|
||||
std::cout<<"Min: "<<*std::min_element(trackNN->pre_stats.begin(), trackNN->pre_stats.end())<<" ms\n";
|
||||
std::cout<<"Max: "<<*std::max_element(trackNN->pre_stats.begin(), trackNN->pre_stats.end())<<" ms\n";
|
||||
for(int i=0; i<trackNN->pre_stats.size(); i++) mean += trackNN->pre_stats[i]; mean /= trackNN->pre_stats.size();
|
||||
std::cout<<"Avg: "<<mean<<" ms\n"<<COL_END;
|
||||
mean=0;
|
||||
std::cout<<COL_GREENB<<"\n\nTime stats:\n";
|
||||
std::cout<<"Min: "<<*std::min_element(trackNN->stats.begin(), trackNN->stats.end())<<" ms\n";
|
||||
std::cout<<"Max: "<<*std::max_element(trackNN->stats.begin(), trackNN->stats.end())<<" ms\n";
|
||||
for(int i=0; i<trackNN->stats.size(); i++) mean += trackNN->stats[i]; mean /= trackNN->stats.size();
|
||||
std::cout<<"Avg: "<<mean<<" ms\n"<<COL_END;
|
||||
mean=0;
|
||||
std::cout<<COL_GREENB<<"\n\nTime postprocessing stats:\n";
|
||||
std::cout<<"Min: "<<*std::min_element(trackNN->post_stats.begin(), trackNN->post_stats.end())<<" ms\n";
|
||||
std::cout<<"Max: "<<*std::max_element(trackNN->post_stats.begin(), trackNN->post_stats.end())<<" ms\n";
|
||||
for(int i=0; i<trackNN->post_stats.size(); i++) mean += trackNN->post_stats[i]; mean /= trackNN->post_stats.size();
|
||||
std::cout<<"Avg: "<<mean<<" ms\n"<<COL_END;
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#ifndef CENTERNETDETECTION3DTRACK_H
|
||||
#define CENTERNETDETECTION3DTRACK_H
|
||||
#ifndef CENTERTRACK_H
|
||||
#define CENTERTRACK_H
|
||||
|
||||
#include <opencv2/videoio.hpp>
|
||||
#include "opencv2/opencv.hpp"
|
||||
@@ -11,7 +11,7 @@
|
||||
#include <numeric> // std::iota
|
||||
#include <algorithm> // std::sort
|
||||
|
||||
#include "DetectionNN3D.h"
|
||||
#include "TrackingNN.h"
|
||||
|
||||
#include "kernelsThrust.h"
|
||||
|
||||
@@ -49,7 +49,7 @@ struct trackingRes
|
||||
int color;
|
||||
};
|
||||
|
||||
class CenternetDetection3DTrack : public DetectionNN3D
|
||||
class CenterTrack : public TrackingNN
|
||||
{
|
||||
public:
|
||||
tk::dnn::dataDim_t dim;
|
||||
@@ -133,7 +133,7 @@ public:
|
||||
|
||||
std::vector<std::vector<int>> faceId;
|
||||
cv::Scalar trColors[256];
|
||||
bool view2d = false;
|
||||
bool mode3D;
|
||||
|
||||
//processing
|
||||
struct threshold op;
|
||||
@@ -163,9 +163,11 @@ public:
|
||||
|
||||
public:
|
||||
tk::dnn::Network *pre_phase_net = nullptr;
|
||||
CenternetDetection3DTrack() {};
|
||||
~CenternetDetection3DTrack() {};
|
||||
bool init(const std::string& tensor_path, const int n_classes=3, const int n_batches=1, const float conf_thresh=0.3, const std::vector<cv::Mat>& k_calibs=std::vector<cv::Mat>());
|
||||
CenterTrack() {};
|
||||
~CenterTrack() {};
|
||||
bool init(const std::string& tensor_path, const int n_classes=3, const int n_batches=1,
|
||||
const float conf_thresh=0.3, const bool mode_3d=true,
|
||||
const std::vector<cv::Mat>& k_calibs=std::vector<cv::Mat>());
|
||||
void preprocess(cv::Mat &frame, const int bi=0);
|
||||
void postprocess(const int bi=0,const bool mAP=false);
|
||||
void draw(std::vector<cv::Mat>& frames);
|
||||
@@ -176,4 +178,4 @@ public:
|
||||
} // namespace tk
|
||||
|
||||
|
||||
#endif /*CENTERNETDETECTION3DTRACK_H*/
|
||||
#endif /*CENTERTRACK_H*/
|
||||
@@ -0,0 +1,158 @@
|
||||
#ifndef TRACKINGNN_H
|
||||
#define TRACKINGNN_H
|
||||
|
||||
#include <iostream>
|
||||
#include <signal.h>
|
||||
#include <stdlib.h>
|
||||
#ifdef __linux__
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
#include <mutex>
|
||||
#include "utils.h"
|
||||
|
||||
#include <opencv2/core/core.hpp>
|
||||
#include <opencv2/highgui/highgui.hpp>
|
||||
#include <opencv2/imgproc/imgproc.hpp>
|
||||
|
||||
#include "tkdnn.h"
|
||||
|
||||
// #define OPENCV_CUDACONTRIB //if OPENCV has been compiled with CUDA and contrib.
|
||||
|
||||
#ifdef OPENCV_CUDACONTRIB
|
||||
#include <opencv2/cudawarping.hpp>
|
||||
#include <opencv2/cudaarithm.hpp>
|
||||
#endif
|
||||
|
||||
|
||||
namespace tk { namespace dnn {
|
||||
|
||||
class TrackingNN {
|
||||
|
||||
protected:
|
||||
tk::dnn::NetworkRT *netRT = nullptr;
|
||||
dnnType *input_d;
|
||||
|
||||
std::vector<cv::Size> originalSize;
|
||||
|
||||
cv::Scalar colors[256];
|
||||
|
||||
int nBatches = 1;
|
||||
|
||||
#ifdef OPENCV_CUDACONTRIB
|
||||
cv::cuda::GpuMat bgr[3];
|
||||
cv::cuda::GpuMat imagePreproc;
|
||||
#else
|
||||
cv::Mat bgr[3];
|
||||
cv::Mat imagePreproc;
|
||||
dnnType *input;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* This method preprocess the image, before feeding it to the NN.
|
||||
*
|
||||
* @param frame original frame to adapt for inference.
|
||||
* @param bi batch index
|
||||
*/
|
||||
virtual void preprocess(cv::Mat &frame, const int bi=0) = 0;
|
||||
|
||||
/**
|
||||
* This method postprocess the output of the NN to obtain the correct
|
||||
* boundig boxes.
|
||||
*
|
||||
* @param bi batch index
|
||||
* @param mAP set to true only if all the probabilities for a bounding
|
||||
* box are needed, as in some cases for the mAP calculation
|
||||
*/
|
||||
virtual void postprocess(const int bi=0,const bool mAP=false) = 0;
|
||||
|
||||
public:
|
||||
int classes = 0;
|
||||
float confThreshold = 0.3; /*threshold on the confidence of the boxes*/
|
||||
|
||||
std::vector<double> pre_stats, stats, post_stats, visual_stats; /*keeps track of inference times (ms)*/
|
||||
std::vector<std::string> classesNames;
|
||||
|
||||
TrackingNN() {};
|
||||
~TrackingNN(){};
|
||||
|
||||
/**
|
||||
* Method used to initialize the class, allocate memory and compute
|
||||
* needed data.
|
||||
*
|
||||
* @param tensor_path path to the rt file of the NN.
|
||||
* @param n_classes number of classes for the given dataset.
|
||||
* @param n_batches maximum number of batches to use in inference.
|
||||
* @return true if everything is correct, false otherwise.
|
||||
*/
|
||||
virtual bool init(const std::string& tensor_path, const int n_classes=3, const int n_batches=1,
|
||||
const float conf_thresh=0.3, const bool mode_3d=true, const std::vector<cv::Mat>& k_calibs=std::vector<cv::Mat>()) = 0;
|
||||
|
||||
/**
|
||||
* This method performs the whole detection and tracking of the NN.
|
||||
*
|
||||
* @param frames frames to run detection and trcking on.
|
||||
* @param cur_batches number of batches to use in inference.
|
||||
* @param save_times if set to true, preprocess, inference and postprocess times
|
||||
* are saved on a csv file, otherwise not.
|
||||
* @param times pointer to the output stream where to write times.
|
||||
* @param mAP set to true only if all the probabilities for a bounding
|
||||
* box are needed, as in some cases for the mAP calculation.
|
||||
*/
|
||||
void update(std::vector<cv::Mat>& frames, const int cur_batches=1, bool save_times=false,
|
||||
std::ofstream *times=nullptr, const bool mAP=false){
|
||||
if(save_times && times==nullptr)
|
||||
FatalError("save_times set to true, but no valid ofstream given");
|
||||
if(cur_batches > nBatches)
|
||||
FatalError("A batch size greater than nBatches cannot be used");
|
||||
|
||||
originalSize.clear();
|
||||
if(TKDNN_VERBOSE) printCenteredTitle(" TENSORRT detection ", '=', 30);
|
||||
{
|
||||
TKDNN_TSTART
|
||||
for(int bi=0; bi<cur_batches;++bi){
|
||||
if(!frames[bi].data)
|
||||
FatalError("No image data feed to detection");
|
||||
originalSize.push_back(frames[bi].size());
|
||||
preprocess(frames[bi], bi);
|
||||
}
|
||||
TKDNN_TSTOP
|
||||
pre_stats.push_back(t_ns);
|
||||
if(save_times) *times<<t_ns<<";";
|
||||
}
|
||||
|
||||
//do inference
|
||||
tk::dnn::dataDim_t dim = netRT->input_dim;
|
||||
dim.n = cur_batches;
|
||||
{
|
||||
if(TKDNN_VERBOSE) dim.print();
|
||||
TKDNN_TSTART
|
||||
netRT->infer(dim, input_d);
|
||||
TKDNN_TSTOP
|
||||
if(TKDNN_VERBOSE) dim.print();
|
||||
stats.push_back(t_ns);
|
||||
if(save_times) *times<<t_ns<<";";
|
||||
}
|
||||
|
||||
{
|
||||
TKDNN_TSTART
|
||||
for(int bi=0; bi<cur_batches;++bi)
|
||||
postprocess(bi, mAP);
|
||||
TKDNN_TSTOP
|
||||
post_stats.push_back(t_ns);
|
||||
if(save_times) *times<<t_ns<<"\n";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to draw bounding boxes and labels on a frame.
|
||||
*
|
||||
* @param frames original frame to draw bounding box on.
|
||||
*/
|
||||
virtual void draw(std::vector<cv::Mat>& frames){};
|
||||
|
||||
};
|
||||
|
||||
}}
|
||||
|
||||
#endif /* TRACKINGNN_H*/
|
||||
@@ -1,16 +1,17 @@
|
||||
#include "CenternetDetection3DTrack.h"
|
||||
#include "CenterTrack.h"
|
||||
|
||||
|
||||
namespace tk { namespace dnn {
|
||||
|
||||
|
||||
bool CenternetDetection3DTrack::init(const std::string& tensor_path, const int n_classes, const int n_batches,
|
||||
const float conf_thresh, const std::vector<cv::Mat>& k_calibs) {
|
||||
bool CenterTrack::init(const std::string& tensor_path, const int n_classes, const int n_batches,
|
||||
const float conf_thresh, const bool mode_3d, const std::vector<cv::Mat>& k_calibs) {
|
||||
netRT = new tk::dnn::NetworkRT(NULL, (tensor_path).c_str() );
|
||||
dim = netRT->input_dim;
|
||||
dim.c = 3;
|
||||
nBatches = n_batches;
|
||||
confThreshold = conf_thresh;
|
||||
mode3D = mode_3d;
|
||||
inputCalibs = k_calibs;
|
||||
init_preprocessing();
|
||||
init_pre_inf();
|
||||
@@ -18,7 +19,7 @@ bool CenternetDetection3DTrack::init(const std::string& tensor_path, const int n
|
||||
init_visualization(n_classes);
|
||||
}
|
||||
|
||||
bool CenternetDetection3DTrack::init_preprocessing(){
|
||||
bool CenterTrack::init_preprocessing(){
|
||||
//image transformation
|
||||
src = cv::Mat(cv::Size(2,3), CV_32F);
|
||||
dst = cv::Mat(cv::Size(2,3), CV_32F);
|
||||
@@ -60,12 +61,12 @@ bool CenternetDetection3DTrack::init_preprocessing(){
|
||||
checkCuda( cudaMalloc(&d_ptrs, dim.tot() * sizeof(float)) );
|
||||
}
|
||||
|
||||
bool CenternetDetection3DTrack::init_pre_inf(){
|
||||
bool CenterTrack::init_pre_inf(){
|
||||
// initial steps: the first part of the network
|
||||
const char *pre_img_conv1_bin = "dla34_cnet3d_track/layers/base-pre_img_layer-0.bin";
|
||||
const char *pre_hm_conv1_bin = "dla34_cnet3d_track/layers/base-pre_hm_layer-0.bin";
|
||||
const char *conv1_bin = "dla34_cnet3d_track/layers/base-base_layer-0.bin";
|
||||
const char *conv2_bin = "dla34_cnet3d_track/layers/base-level0-0.bin";
|
||||
const char *pre_img_conv1_bin = "dla34_ctrack/layers/base-pre_img_layer-0.bin";
|
||||
const char *pre_hm_conv1_bin = "dla34_ctrack/layers/base-pre_hm_layer-0.bin";
|
||||
const char *conv1_bin = "dla34_ctrack/layers/base-base_layer-0.bin";
|
||||
const char *conv2_bin = "dla34_ctrack/layers/base-level0-0.bin";
|
||||
dim_in0 = tk::dnn::dataDim_t(1, 3, 512, 512, 1);
|
||||
dim_in1 = tk::dnn::dataDim_t(1, 1, 512, 512, 1);
|
||||
|
||||
@@ -82,9 +83,9 @@ bool CenternetDetection3DTrack::init_pre_inf(){
|
||||
dnnType *i0_h, *i1_h, *i2_h;
|
||||
// dnnType *i0_d, *i1_d, *i2_d;
|
||||
|
||||
// const char *input_bin = "dla34_cnet3d_track/debug/input.bin";
|
||||
// const char *pre_img_bin = "dla34_cnet3d_track/debug/pre_imgages.bin";
|
||||
// const char *pre_hm_bin = "dla34_cnet3d_track/debug/pre_hms.bin";
|
||||
// const char *input_bin = "dla34_ctrack/debug/input.bin";
|
||||
// const char *pre_img_bin = "dla34_ctrack/debug/pre_imgages.bin";
|
||||
// const char *pre_hm_bin = "dla34_ctrack/debug/pre_hms.bin";
|
||||
// readBinaryFile(pre_img_bin, dim_in0.tot(), &i0_h, &img_d);
|
||||
// readBinaryFile(pre_hm_bin, dim_in1.tot(), &i1_h, &hm_d);
|
||||
// readBinaryFile(input_bin, dim_in0.tot(), &i2_h, &input_pre_inf_d);
|
||||
@@ -114,7 +115,7 @@ bool CenternetDetection3DTrack::init_pre_inf(){
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CenternetDetection3DTrack::init_postprocessing(){
|
||||
bool CenterTrack::init_postprocessing(){
|
||||
srand(0); //seed = 0 for random colors
|
||||
|
||||
dim_hm = tk::dnn::dataDim_t(1, 10, 128, 128, 1);
|
||||
@@ -203,7 +204,7 @@ bool CenternetDetection3DTrack::init_postprocessing(){
|
||||
trackId.resize(nBatches, 0);
|
||||
}
|
||||
|
||||
bool CenternetDetection3DTrack::init_visualization(const int n_classes){
|
||||
bool CenterTrack::init_visualization(const int n_classes){
|
||||
classes = n_classes;
|
||||
// const char *kitti_class_name[] = {
|
||||
// "person", "car", "bicycle"};
|
||||
@@ -275,11 +276,11 @@ bool CenternetDetection3DTrack::init_visualization(const int n_classes){
|
||||
// ([[0,1,5,4], [1,2,6, 5], [2,3,7,6], [3,0,4,7]]);
|
||||
}
|
||||
|
||||
void CenternetDetection3DTrack::_get_additional_inputs(){
|
||||
void CenterTrack::_get_additional_inputs(){
|
||||
//None no additional input
|
||||
}
|
||||
|
||||
void CenternetDetection3DTrack::pre_inf(const int bi){
|
||||
void CenterTrack::pre_inf(const int bi){
|
||||
TKDNN_TSTART
|
||||
tk::dnn::dataDim_t dim_aus;
|
||||
pre_phase_net->infer(dim_aus, nullptr);
|
||||
@@ -289,7 +290,7 @@ void CenternetDetection3DTrack::pre_inf(const int bi){
|
||||
checkCuda( cudaDeviceSynchronize() );
|
||||
}
|
||||
|
||||
void CenternetDetection3DTrack::preprocess(cv::Mat &frame, const int bi){
|
||||
void CenterTrack::preprocess(cv::Mat &frame, const int bi){
|
||||
cv::Size sz = originalSize[bi];
|
||||
// float scale = 1.0;
|
||||
float new_height = dim.h;//sz.height * scale;
|
||||
@@ -403,7 +404,7 @@ void CenternetDetection3DTrack::preprocess(cv::Mat &frame, const int bi){
|
||||
checkCuda( cudaDeviceSynchronize() );
|
||||
}
|
||||
|
||||
cv::Mat CenternetDetection3DTrack::transform_preds_with_trans(float x1, float x2){
|
||||
cv::Mat CenterTrack::transform_preds_with_trans(float x1, float x2){
|
||||
cv::Mat target_coords(cv::Size(1,3), CV_32F);
|
||||
target_coords.at<float>(0,0) = x1;
|
||||
target_coords.at<float>(0,1) = x2;
|
||||
@@ -411,7 +412,7 @@ cv::Mat CenternetDetection3DTrack::transform_preds_with_trans(float x1, float x2
|
||||
return transOut * target_coords;
|
||||
}
|
||||
|
||||
void CenternetDetection3DTrack::tracking(const int bi) {
|
||||
void CenterTrack::tracking(const int bi) {
|
||||
float item_size[countDet];
|
||||
int item_cl[countDet];
|
||||
float dets[2*countDet];
|
||||
@@ -600,7 +601,7 @@ void CenternetDetection3DTrack::tracking(const int bi) {
|
||||
|
||||
}
|
||||
|
||||
void CenternetDetection3DTrack::postprocess(const int bi, const bool mAP) {
|
||||
void CenterTrack::postprocess(const int bi, const bool mAP) {
|
||||
dnnType *rt_out[9];
|
||||
rt_out[0] = (dnnType *)netRT->buffersRT[1]+ netRT->buffersDIM[1].tot()*bi;
|
||||
rt_out[1] = (dnnType *)netRT->buffersRT[2]+ netRT->buffersDIM[2].tot()*bi;
|
||||
@@ -734,7 +735,7 @@ void CenternetDetection3DTrack::postprocess(const int bi, const bool mAP) {
|
||||
tracking(bi);
|
||||
}
|
||||
|
||||
void CenternetDetection3DTrack::draw(std::vector<cv::Mat>& frames) {
|
||||
void CenterTrack::draw(std::vector<cv::Mat>& frames) {
|
||||
struct trackingRes t;
|
||||
float sc;
|
||||
int id;
|
||||
@@ -755,7 +756,7 @@ void CenternetDetection3DTrack::draw(std::vector<cv::Mat>& frames) {
|
||||
cv::Size text_size = getTextSize(txt, cv::FONT_HERSHEY_SIMPLEX, font_scale, thickness, &baseline);
|
||||
|
||||
if(t.det_res.score > confThreshold){// && t.active!=0) {
|
||||
if(view2d) {
|
||||
if(!mode3D) {
|
||||
cv::rectangle(frames[bi],
|
||||
cv::Point(t.det_res.bb0.at<float>(0,0) * scale_x, t.det_res.bb0.at<float>(0,1) * scale_y),
|
||||
cv::Point(t.det_res.bb1.at<float>(0,0) * scale_x, t.det_res.bb1.at<float>(0,1) * scale_y),
|
||||
@@ -776,7 +777,7 @@ void CenternetDetection3DTrack::draw(std::vector<cv::Mat>& frames) {
|
||||
cv::Scalar(255, 0, 255), 2);
|
||||
}
|
||||
//3d
|
||||
if(!view2d && t.det_res.z > 1){
|
||||
if(mode3D && t.det_res.z > 1){
|
||||
r.at<float>(0,0) = std::cos(t.det_res.rot_y);
|
||||
r.at<float>(0,2) = std::sin(t.det_res.rot_y);
|
||||
r.at<float>(2,0) = -std::sin(t.det_res.rot_y);
|
||||
+111
-111
@@ -1,130 +1,130 @@
|
||||
#include <iostream>
|
||||
#include "tkdnn.h"
|
||||
const char *input_bin = "dla34_cnet3d_track/debug/input_base-level0-0.bin";
|
||||
// const char *input_bin = "dla34_cnet3d_track/debug/input.bin";
|
||||
// const char *pre_img_bin = "dla34_cnet3d_track/debug/pre_imgages.bin";
|
||||
// const char *pre_hm_bin = "dla34_cnet3d_track/debug/pre_hms.bin";
|
||||
const char *input_bin = "dla34_ctrack/debug/input_base-level0-0.bin";
|
||||
// const char *input_bin = "dla34_ctrack/debug/input.bin";
|
||||
// const char *pre_img_bin = "dla34_ctrack/debug/pre_imgages.bin";
|
||||
// const char *pre_hm_bin = "dla34_ctrack/debug/pre_hms.bin";
|
||||
// //pre
|
||||
// const char *pre_img_conv1_bin = "dla34_cnet3d_track/layers/base-pre_img_layer-0.bin";
|
||||
// const char *pre_hm_conv1_bin = "dla34_cnet3d_track/layers/base-pre_hm_layer-0.bin";
|
||||
// const char *conv1_bin = "dla34_cnet3d_track/layers/base-base_layer-0.bin";
|
||||
// const char *pre_img_conv1_bin = "dla34_ctrack/layers/base-pre_img_layer-0.bin";
|
||||
// const char *pre_hm_conv1_bin = "dla34_ctrack/layers/base-pre_hm_layer-0.bin";
|
||||
// const char *conv1_bin = "dla34_ctrack/layers/base-base_layer-0.bin";
|
||||
|
||||
const char *conv2_bin = "dla34_cnet3d_track/layers/base-level0-0.bin";
|
||||
const char *conv3_bin = "dla34_cnet3d_track/layers/base-level1-0.bin";
|
||||
const char *conv2_bin = "dla34_ctrack/layers/base-level0-0.bin";
|
||||
const char *conv3_bin = "dla34_ctrack/layers/base-level1-0.bin";
|
||||
// s - stage, t - tree
|
||||
const char *s1_t1_conv1_bin = "dla34_cnet3d_track/layers/base-level2-tree1-conv1.bin";
|
||||
const char *s1_t1_conv2_bin = "dla34_cnet3d_track/layers/base-level2-tree1-conv2.bin";
|
||||
const char *s1_t1_project = "dla34_cnet3d_track/layers/base-level2-project-0.bin";
|
||||
const char *s1_t2_conv1_bin = "dla34_cnet3d_track/layers/base-level2-tree2-conv1.bin";
|
||||
const char *s1_t2_conv2_bin = "dla34_cnet3d_track/layers/base-level2-tree2-conv2.bin";
|
||||
const char *s1_root_conv1_bin = "dla34_cnet3d_track/layers/base-level2-root-conv.bin";
|
||||
const char *s2_t1_t1_conv1_bin = "dla34_cnet3d_track/layers/base-level3-tree1-tree1-conv1.bin";
|
||||
const char *s2_t1_t1_conv2_bin = "dla34_cnet3d_track/layers/base-level3-tree1-tree1-conv2.bin";
|
||||
const char *s2_t1_t1_project = "dla34_cnet3d_track/layers/base-level3-tree1-project-0.bin";
|
||||
const char *s2_t1_t2_conv1_bin = "dla34_cnet3d_track/layers/base-level3-tree1-tree2-conv1.bin";
|
||||
const char *s2_t1_t2_conv2_bin = "dla34_cnet3d_track/layers/base-level3-tree1-tree2-conv2.bin";
|
||||
const char *s2_t1_root_conv1_bin = "dla34_cnet3d_track/layers/base-level3-tree1-root-conv.bin";
|
||||
const char *s2_t2_t1_conv1_bin = "dla34_cnet3d_track/layers/base-level3-tree2-tree1-conv1.bin";
|
||||
const char *s2_t2_t1_conv2_bin = "dla34_cnet3d_track/layers/base-level3-tree2-tree1-conv2.bin";
|
||||
const char *s2_t2_t2_conv1_bin = "dla34_cnet3d_track/layers/base-level3-tree2-tree2-conv1.bin";
|
||||
const char *s2_t2_t2_conv2_bin = "dla34_cnet3d_track/layers/base-level3-tree2-tree2-conv2.bin";
|
||||
const char *s2_t2_root_conv1_bin = "dla34_cnet3d_track/layers/base-level3-tree2-root-conv.bin";
|
||||
const char *s3_t1_t1_conv1_bin = "dla34_cnet3d_track/layers/base-level4-tree1-tree1-conv1.bin";
|
||||
const char *s3_t1_t1_conv2_bin = "dla34_cnet3d_track/layers/base-level4-tree1-tree1-conv2.bin";
|
||||
const char *s3_t1_t1_project = "dla34_cnet3d_track/layers/base-level4-tree1-project-0.bin";
|
||||
const char *s3_t1_t2_conv1_bin = "dla34_cnet3d_track/layers/base-level4-tree1-tree2-conv1.bin";
|
||||
const char *s3_t1_t2_conv2_bin = "dla34_cnet3d_track/layers/base-level4-tree1-tree2-conv2.bin";
|
||||
const char *s3_t1_root_conv1_bin = "dla34_cnet3d_track/layers/base-level4-tree1-root-conv.bin";
|
||||
const char *s3_t2_t1_conv1_bin = "dla34_cnet3d_track/layers/base-level4-tree2-tree1-conv1.bin";
|
||||
const char *s3_t2_t1_conv2_bin = "dla34_cnet3d_track/layers/base-level4-tree2-tree1-conv2.bin";
|
||||
const char *s3_t2_t2_conv1_bin = "dla34_cnet3d_track/layers/base-level4-tree2-tree2-conv1.bin";
|
||||
const char *s3_t2_t2_conv2_bin = "dla34_cnet3d_track/layers/base-level4-tree2-tree2-conv2.bin";
|
||||
const char *s3_t2_root_conv1_bin = "dla34_cnet3d_track/layers/base-level4-tree2-root-conv.bin";
|
||||
const char *s4_t1_conv1_bin = "dla34_cnet3d_track/layers/base-level5-tree1-conv1.bin";
|
||||
const char *s4_t1_conv2_bin = "dla34_cnet3d_track/layers/base-level5-tree1-conv2.bin";
|
||||
const char *s4_t1_project = "dla34_cnet3d_track/layers/base-level5-project-0.bin";
|
||||
const char *s4_t2_conv1_bin = "dla34_cnet3d_track/layers/base-level5-tree2-conv1.bin";
|
||||
const char *s4_t2_conv2_bin = "dla34_cnet3d_track/layers/base-level5-tree2-conv2.bin";
|
||||
const char *s4_root_conv1_bin = "dla34_cnet3d_track/layers/base-level5-root-conv.bin";
|
||||
const char *s1_t1_conv1_bin = "dla34_ctrack/layers/base-level2-tree1-conv1.bin";
|
||||
const char *s1_t1_conv2_bin = "dla34_ctrack/layers/base-level2-tree1-conv2.bin";
|
||||
const char *s1_t1_project = "dla34_ctrack/layers/base-level2-project-0.bin";
|
||||
const char *s1_t2_conv1_bin = "dla34_ctrack/layers/base-level2-tree2-conv1.bin";
|
||||
const char *s1_t2_conv2_bin = "dla34_ctrack/layers/base-level2-tree2-conv2.bin";
|
||||
const char *s1_root_conv1_bin = "dla34_ctrack/layers/base-level2-root-conv.bin";
|
||||
const char *s2_t1_t1_conv1_bin = "dla34_ctrack/layers/base-level3-tree1-tree1-conv1.bin";
|
||||
const char *s2_t1_t1_conv2_bin = "dla34_ctrack/layers/base-level3-tree1-tree1-conv2.bin";
|
||||
const char *s2_t1_t1_project = "dla34_ctrack/layers/base-level3-tree1-project-0.bin";
|
||||
const char *s2_t1_t2_conv1_bin = "dla34_ctrack/layers/base-level3-tree1-tree2-conv1.bin";
|
||||
const char *s2_t1_t2_conv2_bin = "dla34_ctrack/layers/base-level3-tree1-tree2-conv2.bin";
|
||||
const char *s2_t1_root_conv1_bin = "dla34_ctrack/layers/base-level3-tree1-root-conv.bin";
|
||||
const char *s2_t2_t1_conv1_bin = "dla34_ctrack/layers/base-level3-tree2-tree1-conv1.bin";
|
||||
const char *s2_t2_t1_conv2_bin = "dla34_ctrack/layers/base-level3-tree2-tree1-conv2.bin";
|
||||
const char *s2_t2_t2_conv1_bin = "dla34_ctrack/layers/base-level3-tree2-tree2-conv1.bin";
|
||||
const char *s2_t2_t2_conv2_bin = "dla34_ctrack/layers/base-level3-tree2-tree2-conv2.bin";
|
||||
const char *s2_t2_root_conv1_bin = "dla34_ctrack/layers/base-level3-tree2-root-conv.bin";
|
||||
const char *s3_t1_t1_conv1_bin = "dla34_ctrack/layers/base-level4-tree1-tree1-conv1.bin";
|
||||
const char *s3_t1_t1_conv2_bin = "dla34_ctrack/layers/base-level4-tree1-tree1-conv2.bin";
|
||||
const char *s3_t1_t1_project = "dla34_ctrack/layers/base-level4-tree1-project-0.bin";
|
||||
const char *s3_t1_t2_conv1_bin = "dla34_ctrack/layers/base-level4-tree1-tree2-conv1.bin";
|
||||
const char *s3_t1_t2_conv2_bin = "dla34_ctrack/layers/base-level4-tree1-tree2-conv2.bin";
|
||||
const char *s3_t1_root_conv1_bin = "dla34_ctrack/layers/base-level4-tree1-root-conv.bin";
|
||||
const char *s3_t2_t1_conv1_bin = "dla34_ctrack/layers/base-level4-tree2-tree1-conv1.bin";
|
||||
const char *s3_t2_t1_conv2_bin = "dla34_ctrack/layers/base-level4-tree2-tree1-conv2.bin";
|
||||
const char *s3_t2_t2_conv1_bin = "dla34_ctrack/layers/base-level4-tree2-tree2-conv1.bin";
|
||||
const char *s3_t2_t2_conv2_bin = "dla34_ctrack/layers/base-level4-tree2-tree2-conv2.bin";
|
||||
const char *s3_t2_root_conv1_bin = "dla34_ctrack/layers/base-level4-tree2-root-conv.bin";
|
||||
const char *s4_t1_conv1_bin = "dla34_ctrack/layers/base-level5-tree1-conv1.bin";
|
||||
const char *s4_t1_conv2_bin = "dla34_ctrack/layers/base-level5-tree1-conv2.bin";
|
||||
const char *s4_t1_project = "dla34_ctrack/layers/base-level5-project-0.bin";
|
||||
const char *s4_t2_conv1_bin = "dla34_ctrack/layers/base-level5-tree2-conv1.bin";
|
||||
const char *s4_t2_conv2_bin = "dla34_ctrack/layers/base-level5-tree2-conv2.bin";
|
||||
const char *s4_root_conv1_bin = "dla34_ctrack/layers/base-level5-root-conv.bin";
|
||||
|
||||
//final
|
||||
// const char *fc_bin = "dla34_cnet3d_track/layers/output.bin";
|
||||
// const char *fc_bin = "dla34_ctrack/layers/output.bin";
|
||||
|
||||
const char *ida_0_p_1_dcn_bin = "dla34_cnet3d_track/layers/dla_up-ida_0-proj_1-conv.bin";
|
||||
const char *ida_0_p_1_conv_bin = "dla34_cnet3d_track/layers/dla_up-ida_0-proj_1-conv-conv_offset_mask.bin";
|
||||
const char *ida_0_up_1_deconv_bin = "dla34_cnet3d_track/layers/dla_up-ida_0-up_1.bin";
|
||||
const char *ida_0_n_1_dcn_bin = "dla34_cnet3d_track/layers/dla_up-ida_0-node_1-conv.bin";
|
||||
const char *ida_0_n_1_conv_bin = "dla34_cnet3d_track/layers/dla_up-ida_0-node_1-conv-conv_offset_mask.bin";
|
||||
const char *ida_0_p_1_dcn_bin = "dla34_ctrack/layers/dla_up-ida_0-proj_1-conv.bin";
|
||||
const char *ida_0_p_1_conv_bin = "dla34_ctrack/layers/dla_up-ida_0-proj_1-conv-conv_offset_mask.bin";
|
||||
const char *ida_0_up_1_deconv_bin = "dla34_ctrack/layers/dla_up-ida_0-up_1.bin";
|
||||
const char *ida_0_n_1_dcn_bin = "dla34_ctrack/layers/dla_up-ida_0-node_1-conv.bin";
|
||||
const char *ida_0_n_1_conv_bin = "dla34_ctrack/layers/dla_up-ida_0-node_1-conv-conv_offset_mask.bin";
|
||||
|
||||
const char *ida_1_p_1_dcn_bin = "dla34_cnet3d_track/layers/dla_up-ida_1-proj_1-conv.bin";
|
||||
const char *ida_1_p_1_conv_bin = "dla34_cnet3d_track/layers/dla_up-ida_1-proj_1-conv-conv_offset_mask.bin";
|
||||
const char *ida_1_up_1_deconv_bin = "dla34_cnet3d_track/layers/dla_up-ida_1-up_1.bin";
|
||||
const char *ida_1_n_1_dcn_bin = "dla34_cnet3d_track/layers/dla_up-ida_1-node_1-conv.bin";
|
||||
const char *ida_1_n_1_conv_bin = "dla34_cnet3d_track/layers/dla_up-ida_1-node_1-conv-conv_offset_mask.bin";
|
||||
const char *ida_1_p_2_dcn_bin = "dla34_cnet3d_track/layers/dla_up-ida_1-proj_2-conv.bin";
|
||||
const char *ida_1_p_2_conv_bin = "dla34_cnet3d_track/layers/dla_up-ida_1-proj_2-conv-conv_offset_mask.bin";
|
||||
const char *ida_1_up_2_deconv_bin = "dla34_cnet3d_track/layers/dla_up-ida_1-up_2.bin";
|
||||
const char *ida_1_n_2_dcn_bin = "dla34_cnet3d_track/layers/dla_up-ida_1-node_2-conv.bin";
|
||||
const char *ida_1_n_2_conv_bin = "dla34_cnet3d_track/layers/dla_up-ida_1-node_2-conv-conv_offset_mask.bin";
|
||||
const char *ida_1_p_1_dcn_bin = "dla34_ctrack/layers/dla_up-ida_1-proj_1-conv.bin";
|
||||
const char *ida_1_p_1_conv_bin = "dla34_ctrack/layers/dla_up-ida_1-proj_1-conv-conv_offset_mask.bin";
|
||||
const char *ida_1_up_1_deconv_bin = "dla34_ctrack/layers/dla_up-ida_1-up_1.bin";
|
||||
const char *ida_1_n_1_dcn_bin = "dla34_ctrack/layers/dla_up-ida_1-node_1-conv.bin";
|
||||
const char *ida_1_n_1_conv_bin = "dla34_ctrack/layers/dla_up-ida_1-node_1-conv-conv_offset_mask.bin";
|
||||
const char *ida_1_p_2_dcn_bin = "dla34_ctrack/layers/dla_up-ida_1-proj_2-conv.bin";
|
||||
const char *ida_1_p_2_conv_bin = "dla34_ctrack/layers/dla_up-ida_1-proj_2-conv-conv_offset_mask.bin";
|
||||
const char *ida_1_up_2_deconv_bin = "dla34_ctrack/layers/dla_up-ida_1-up_2.bin";
|
||||
const char *ida_1_n_2_dcn_bin = "dla34_ctrack/layers/dla_up-ida_1-node_2-conv.bin";
|
||||
const char *ida_1_n_2_conv_bin = "dla34_ctrack/layers/dla_up-ida_1-node_2-conv-conv_offset_mask.bin";
|
||||
|
||||
const char *ida_2_p_1_dcn_bin = "dla34_cnet3d_track/layers/dla_up-ida_2-proj_1-conv.bin";
|
||||
const char *ida_2_p_1_conv_bin = "dla34_cnet3d_track/layers/dla_up-ida_2-proj_1-conv-conv_offset_mask.bin";
|
||||
const char *ida_2_up_1_deconv_bin = "dla34_cnet3d_track/layers/dla_up-ida_2-up_1.bin";
|
||||
const char *ida_2_n_1_dcn_bin = "dla34_cnet3d_track/layers/dla_up-ida_2-node_1-conv.bin";
|
||||
const char *ida_2_n_1_conv_bin = "dla34_cnet3d_track/layers/dla_up-ida_2-node_1-conv-conv_offset_mask.bin";
|
||||
const char *ida_2_p_2_dcn_bin = "dla34_cnet3d_track/layers/dla_up-ida_2-proj_2-conv.bin";
|
||||
const char *ida_2_p_2_conv_bin = "dla34_cnet3d_track/layers/dla_up-ida_2-proj_2-conv-conv_offset_mask.bin";
|
||||
const char *ida_2_up_2_deconv_bin = "dla34_cnet3d_track/layers/dla_up-ida_2-up_2.bin";
|
||||
const char *ida_2_n_2_dcn_bin = "dla34_cnet3d_track/layers/dla_up-ida_2-node_2-conv.bin";
|
||||
const char *ida_2_n_2_conv_bin = "dla34_cnet3d_track/layers/dla_up-ida_2-node_2-conv-conv_offset_mask.bin";
|
||||
const char *ida_2_p_3_dcn_bin = "dla34_cnet3d_track/layers/dla_up-ida_2-proj_3-conv.bin";
|
||||
const char *ida_2_p_3_conv_bin = "dla34_cnet3d_track/layers/dla_up-ida_2-proj_3-conv-conv_offset_mask.bin";
|
||||
const char *ida_2_up_3_deconv_bin = "dla34_cnet3d_track/layers/dla_up-ida_2-up_3.bin";
|
||||
const char *ida_2_n_3_dcn_bin = "dla34_cnet3d_track/layers/dla_up-ida_2-node_3-conv.bin";
|
||||
const char *ida_2_n_3_conv_bin = "dla34_cnet3d_track/layers/dla_up-ida_2-node_3-conv-conv_offset_mask.bin";
|
||||
const char *ida_2_p_1_dcn_bin = "dla34_ctrack/layers/dla_up-ida_2-proj_1-conv.bin";
|
||||
const char *ida_2_p_1_conv_bin = "dla34_ctrack/layers/dla_up-ida_2-proj_1-conv-conv_offset_mask.bin";
|
||||
const char *ida_2_up_1_deconv_bin = "dla34_ctrack/layers/dla_up-ida_2-up_1.bin";
|
||||
const char *ida_2_n_1_dcn_bin = "dla34_ctrack/layers/dla_up-ida_2-node_1-conv.bin";
|
||||
const char *ida_2_n_1_conv_bin = "dla34_ctrack/layers/dla_up-ida_2-node_1-conv-conv_offset_mask.bin";
|
||||
const char *ida_2_p_2_dcn_bin = "dla34_ctrack/layers/dla_up-ida_2-proj_2-conv.bin";
|
||||
const char *ida_2_p_2_conv_bin = "dla34_ctrack/layers/dla_up-ida_2-proj_2-conv-conv_offset_mask.bin";
|
||||
const char *ida_2_up_2_deconv_bin = "dla34_ctrack/layers/dla_up-ida_2-up_2.bin";
|
||||
const char *ida_2_n_2_dcn_bin = "dla34_ctrack/layers/dla_up-ida_2-node_2-conv.bin";
|
||||
const char *ida_2_n_2_conv_bin = "dla34_ctrack/layers/dla_up-ida_2-node_2-conv-conv_offset_mask.bin";
|
||||
const char *ida_2_p_3_dcn_bin = "dla34_ctrack/layers/dla_up-ida_2-proj_3-conv.bin";
|
||||
const char *ida_2_p_3_conv_bin = "dla34_ctrack/layers/dla_up-ida_2-proj_3-conv-conv_offset_mask.bin";
|
||||
const char *ida_2_up_3_deconv_bin = "dla34_ctrack/layers/dla_up-ida_2-up_3.bin";
|
||||
const char *ida_2_n_3_dcn_bin = "dla34_ctrack/layers/dla_up-ida_2-node_3-conv.bin";
|
||||
const char *ida_2_n_3_conv_bin = "dla34_ctrack/layers/dla_up-ida_2-node_3-conv-conv_offset_mask.bin";
|
||||
|
||||
const char *ida_up_p_1_dcn_bin = "dla34_cnet3d_track/layers/ida_up-proj_1-conv.bin";
|
||||
const char *ida_up_p_1_conv_bin = "dla34_cnet3d_track/layers/ida_up-proj_1-conv-conv_offset_mask.bin";
|
||||
const char *ida_up_up_1_deconv_bin = "dla34_cnet3d_track/layers/ida_up-up_1.bin";
|
||||
const char *ida_up_n_1_dcn_bin = "dla34_cnet3d_track/layers/ida_up-node_1-conv.bin";
|
||||
const char *ida_up_n_1_conv_bin = "dla34_cnet3d_track/layers/ida_up-node_1-conv-conv_offset_mask.bin";
|
||||
const char *ida_up_p_2_dcn_bin = "dla34_cnet3d_track/layers/ida_up-proj_2-conv.bin";
|
||||
const char *ida_up_p_2_conv_bin = "dla34_cnet3d_track/layers/ida_up-proj_2-conv-conv_offset_mask.bin";
|
||||
const char *ida_up_up_2_deconv_bin = "dla34_cnet3d_track/layers/ida_up-up_2.bin";
|
||||
const char *ida_up_n_2_dcn_bin = "dla34_cnet3d_track/layers/ida_up-node_2-conv.bin";
|
||||
const char *ida_up_n_2_conv_bin = "dla34_cnet3d_track/layers/ida_up-node_2-conv-conv_offset_mask.bin";
|
||||
const char *ida_up_p_1_dcn_bin = "dla34_ctrack/layers/ida_up-proj_1-conv.bin";
|
||||
const char *ida_up_p_1_conv_bin = "dla34_ctrack/layers/ida_up-proj_1-conv-conv_offset_mask.bin";
|
||||
const char *ida_up_up_1_deconv_bin = "dla34_ctrack/layers/ida_up-up_1.bin";
|
||||
const char *ida_up_n_1_dcn_bin = "dla34_ctrack/layers/ida_up-node_1-conv.bin";
|
||||
const char *ida_up_n_1_conv_bin = "dla34_ctrack/layers/ida_up-node_1-conv-conv_offset_mask.bin";
|
||||
const char *ida_up_p_2_dcn_bin = "dla34_ctrack/layers/ida_up-proj_2-conv.bin";
|
||||
const char *ida_up_p_2_conv_bin = "dla34_ctrack/layers/ida_up-proj_2-conv-conv_offset_mask.bin";
|
||||
const char *ida_up_up_2_deconv_bin = "dla34_ctrack/layers/ida_up-up_2.bin";
|
||||
const char *ida_up_n_2_dcn_bin = "dla34_ctrack/layers/ida_up-node_2-conv.bin";
|
||||
const char *ida_up_n_2_conv_bin = "dla34_ctrack/layers/ida_up-node_2-conv-conv_offset_mask.bin";
|
||||
|
||||
const char *hm_conv1_bin = "dla34_cnet3d_track/layers/hm-0.bin";
|
||||
const char *hm_conv2_bin = "dla34_cnet3d_track/layers/hm-2.bin";
|
||||
const char *wh_conv1_bin = "dla34_cnet3d_track/layers/wh-0.bin";
|
||||
const char *wh_conv2_bin = "dla34_cnet3d_track/layers/wh-2.bin";
|
||||
const char *reg_conv1_bin = "dla34_cnet3d_track/layers/reg-0.bin";
|
||||
const char *reg_conv2_bin = "dla34_cnet3d_track/layers/reg-2.bin";
|
||||
const char *track_conv1_bin = "dla34_cnet3d_track/layers/tracking-0.bin";
|
||||
const char *track_conv2_bin = "dla34_cnet3d_track/layers/tracking-2.bin";
|
||||
const char *dep_conv1_bin = "dla34_cnet3d_track/layers/dep-0.bin";
|
||||
const char *dep_conv2_bin = "dla34_cnet3d_track/layers/dep-2.bin";
|
||||
const char *rot_conv1_bin = "dla34_cnet3d_track/layers/rot-0.bin";
|
||||
const char *rot_conv2_bin = "dla34_cnet3d_track/layers/rot-2.bin";
|
||||
const char *dim_conv1_bin = "dla34_cnet3d_track/layers/dim-0.bin";
|
||||
const char *dim_conv2_bin = "dla34_cnet3d_track/layers/dim-2.bin";
|
||||
const char *a_off_conv1_bin = "dla34_cnet3d_track/layers/amodel_offset-0.bin";
|
||||
const char *a_off_conv2_bin = "dla34_cnet3d_track/layers/amodel_offset-2.bin";
|
||||
const char *hm_conv1_bin = "dla34_ctrack/layers/hm-0.bin";
|
||||
const char *hm_conv2_bin = "dla34_ctrack/layers/hm-2.bin";
|
||||
const char *wh_conv1_bin = "dla34_ctrack/layers/wh-0.bin";
|
||||
const char *wh_conv2_bin = "dla34_ctrack/layers/wh-2.bin";
|
||||
const char *reg_conv1_bin = "dla34_ctrack/layers/reg-0.bin";
|
||||
const char *reg_conv2_bin = "dla34_ctrack/layers/reg-2.bin";
|
||||
const char *track_conv1_bin = "dla34_ctrack/layers/tracking-0.bin";
|
||||
const char *track_conv2_bin = "dla34_ctrack/layers/tracking-2.bin";
|
||||
const char *dep_conv1_bin = "dla34_ctrack/layers/dep-0.bin";
|
||||
const char *dep_conv2_bin = "dla34_ctrack/layers/dep-2.bin";
|
||||
const char *rot_conv1_bin = "dla34_ctrack/layers/rot-0.bin";
|
||||
const char *rot_conv2_bin = "dla34_ctrack/layers/rot-2.bin";
|
||||
const char *dim_conv1_bin = "dla34_ctrack/layers/dim-0.bin";
|
||||
const char *dim_conv2_bin = "dla34_ctrack/layers/dim-2.bin";
|
||||
const char *a_off_conv1_bin = "dla34_ctrack/layers/amodel_offset-0.bin";
|
||||
const char *a_off_conv2_bin = "dla34_ctrack/layers/amodel_offset-2.bin";
|
||||
|
||||
const char *output_bin[]={
|
||||
"dla34_cnet3d_track/debug/hm.bin",
|
||||
"dla34_cnet3d_track/debug/wh.bin",
|
||||
"dla34_cnet3d_track/debug/reg.bin",
|
||||
"dla34_cnet3d_track/debug/tracking.bin",
|
||||
"dla34_cnet3d_track/debug/dep.bin",
|
||||
"dla34_cnet3d_track/debug/rot.bin",
|
||||
"dla34_cnet3d_track/debug/dim.bin",
|
||||
"dla34_cnet3d_track/debug/amodel_offset.bin"};
|
||||
// const char *output_bin = "dla34_cnet3d_track/debug/base-level0-2.bin";
|
||||
"dla34_ctrack/debug/hm.bin",
|
||||
"dla34_ctrack/debug/wh.bin",
|
||||
"dla34_ctrack/debug/reg.bin",
|
||||
"dla34_ctrack/debug/tracking.bin",
|
||||
"dla34_ctrack/debug/dep.bin",
|
||||
"dla34_ctrack/debug/rot.bin",
|
||||
"dla34_ctrack/debug/dim.bin",
|
||||
"dla34_ctrack/debug/amodel_offset.bin"};
|
||||
// const char *output_bin = "dla34_ctrack/debug/base-level0-2.bin";
|
||||
int main()
|
||||
{
|
||||
|
||||
downloadWeightsifDoNotExist("dla34_cnet3d_track/debug/input.bin", "dla34_cnet3d_track", "https://cloud.hipert.unimore.it/s/rjNfgGL9FtAXLHp/download");
|
||||
downloadWeightsifDoNotExist("dla34_ctrack/debug/input.bin", "dla34_ctrack", "https://cloud.hipert.unimore.it/s/rjNfgGL9FtAXLHp/download");
|
||||
|
||||
// Network layout
|
||||
// tk::dnn::dataDim_t dim_in0(1, 3, 512, 512, 1);
|
||||
@@ -570,7 +570,7 @@ int main()
|
||||
net.print();
|
||||
|
||||
//convert network to tensorRT
|
||||
tk::dnn::NetworkRT netRT(&net, net.getNetworkRTName("dla34_cnet3d_track"));
|
||||
tk::dnn::NetworkRT netRT(&net, net.getNetworkRTName("dla34_ctrack"));
|
||||
|
||||
tk::dnn::dataDim_t dim1 = dim_in0; //input dim
|
||||
printCenteredTitle(" CUDNN inference ", '=', 30);
|
||||
Reference in New Issue
Block a user