diff --git a/.gitignore b/.gitignore index e377bf6..35b492e 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,9 @@ share/python-wheels/ *.egg MANIFEST .idea/ +models/ +models-converting.sh +models-downloading.sh # Prerequisites *.d diff --git a/CMakeLists.txt b/CMakeLists.txt index 44707a4..065f970 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -271,6 +271,10 @@ add_executable(GimbalLandingMarkerDetection samples/demo/gimbal_landing_marker_d target_link_libraries(GimbalLandingMarkerDetection sv_world) add_executable(GimbalUdpDetectionInfoSender samples/demo/gimbal_udp_detection_info_sender.cpp) target_link_libraries(GimbalUdpDetectionInfoSender sv_world) +add_executable(ArucoDetectionWithSingleObjectTracking samples/demo/aruco_detection_with_single_object_tracking.cpp) +target_link_libraries(ArucoDetectionWithSingleObjectTracking sv_world) +add_executable(CarDetectionWithTracking samples/demo/car_detection_with_tracking.cpp) +target_link_libraries(CarDetectionWithTracking sv_world) add_executable(EvalFpsOnVideo samples/test/eval_fps_on_video.cpp) target_link_libraries(EvalFpsOnVideo sv_world) diff --git a/calib_webcam_1280x720.yaml b/calib_webcam_1280x720.yaml new file mode 100644 index 0000000..39df5ce --- /dev/null +++ b/calib_webcam_1280x720.yaml @@ -0,0 +1,20 @@ +%YAML:1.0 +--- +calibration_time: "2021年01月12日 星期二 18时08分01秒" +image_width: 1280 +image_height: 720 +flags: 0 +camera_matrix: !!opencv-matrix + rows: 3 + cols: 3 + dt: d + data: [ 7.9379415710551370e+02, 0., 2.9783879354295328e+02, 0., + 7.9491985564466654e+02, 3.0942416136837386e+02, 0., 0., 1. ] +distortion_coefficients: !!opencv-matrix + rows: 1 + cols: 5 + dt: d + data: [ 2.0950200339181715e-01, -1.1587468096518483e+00, + 5.5342063671841328e-03, 2.2214393775334758e-04, + 1.7127431916651392e+00 ] +avg_reprojection_error: 2.8342964851391211e-01 diff --git a/calib_webcam_640x480.yaml b/calib_webcam_640x480.yaml new file mode 100644 index 0000000..54f1526 --- /dev/null +++ b/calib_webcam_640x480.yaml @@ -0,0 +1,20 @@ +%YAML:1.0 +--- +calibration_time: "2023年07月14日 星期五 16时39分17秒" +image_width: 640 +image_height: 480 +flags: 0 +camera_matrix: !!opencv-matrix + rows: 3 + cols: 3 + dt: d + data: [ 4.5099311307542973e+02, 0., 3.2898947972890943e+02, 0., + 6.0215873600107579e+02, 2.4195307609106428e+02, 0., 0., 1. ] +distortion_coefficients: !!opencv-matrix + rows: 1 + cols: 5 + dt: d + data: [ 1.0737258446369682e-01, -1.2782122264046064e-01, + 1.6844258609297487e-03, -6.6256775118868144e-04, + -3.5333889479158398e-01 ] +avg_reprojection_error: 3.3968000452388564e-01 diff --git a/samples/calib/calibrate_camera_charuco.cpp b/samples/calib/calibrate_camera_charuco.cpp index 7337dd2..d6effe3 100644 --- a/samples/calib/calibrate_camera_charuco.cpp +++ b/samples/calib/calibrate_camera_charuco.cpp @@ -119,6 +119,8 @@ int main(int argc, char *argv[]) { } VideoCapture inputVideo; + + int waitTime; if(!video.empty()) { inputVideo.open(video); @@ -127,6 +129,9 @@ int main(int argc, char *argv[]) { inputVideo.open(camId); waitTime = 10; } + + + aruco::Dictionary dictionary = aruco::getPredefinedDictionary(0); if (parser.has("d")) { @@ -159,6 +164,8 @@ int main(int argc, char *argv[]) { while(inputVideo.grab()) { Mat image, imageCopy; inputVideo.retrieve(image); + cv::resize(image, image, cv::Size(640, 480)); + vector< int > ids; vector< vector< Point2f > > corners, rejected; diff --git a/samples/demo/aruco_detection.cpp b/samples/demo/aruco_detection.cpp index 0229400..83fbabb 100644 --- a/samples/demo/aruco_detection.cpp +++ b/samples/demo/aruco_detection.cpp @@ -9,13 +9,13 @@ int main(int argc, char *argv[]) { // 实例化Aruco检测器类 sv::ArucoDetector ad; // 手动导入相机参数,如果使用Amov的G1等吊舱或相机,则可以忽略该步骤,将自动下载相机参数文件 - ad.loadCameraParams(sv::get_home() + "/SpireCV/calib_webcam_640x480.yaml"); + ad.loadCameraParams(sv::get_home() + "/SpireCV/calib_webcam_1280x720.yaml"); // 打开摄像头 sv::Camera cap; // cap.setWH(640, 480); // cap.setFps(30); - cap.open(sv::CameraType::WEBCAM, 0); // CameraID 0 + cap.open(sv::CameraType::WEBCAM, 2); // CameraID 0 // 实例化OpenCV的Mat类,用于内存单帧图像 cv::Mat img; int frame_id = 0; diff --git a/samples/demo/aruco_detection_with_single_object_tracking.cpp b/samples/demo/aruco_detection_with_single_object_tracking.cpp new file mode 100644 index 0000000..356d55b --- /dev/null +++ b/samples/demo/aruco_detection_with_single_object_tracking.cpp @@ -0,0 +1,173 @@ + +#include +#include +// 包含SpireCV SDK头文件 +#include + +using namespace std; + +// 定义窗口名称 +static const std::string RGB_WINDOW = "Image window"; +// 框选到的矩形 +cv::Rect rect_sel; +// 框选起始点 +cv::Point pt_origin; +// 是否按下左键 +bool b_clicked = false; +// 是否得到一个新的框选区域 +bool b_renew_ROI = false; +// 是否开始跟踪 +bool b_begin_TRACK = false; +// 实现框选逻辑的回调函数 +void onMouse(int event, int x, int y, int, void*); + +int main(int argc, char *argv[]) { + // 定义一个新的窗口,可在上面进行框选操作 + cv::namedWindow(RGB_WINDOW); + // 设置窗口操作回调函数,该函数实现整个框选逻辑 + cv::setMouseCallback(RGB_WINDOW, onMouse, 0); + // 实例化 框选目标跟踪类 + sv::SingleObjectTracker sot; + // 手动导入相机参数,如果使用Amov的G1等吊舱或相机,则可以忽略该步骤,将自动下载相机参数文件 + sot.loadCameraParams(sv::get_home() + "/SpireCV/calib_webcam_640x480.yaml"); + // sot.loadCameraParams(sv::get_home() + "/SpireCV/calib_webcam_1280x720.yaml"); + // sot.loadCameraParams(sv::get_home() + "/SpireCV/calib_webcam_1920x1080.yaml"); + + // 实例化Aruco检测器类 + sv::ArucoDetector ad; + // 手动导入相机参数,如果使用Amov的G1等吊舱或相机,则可以忽略该步骤,将自动下载相机参数文件 + ad.loadCameraParams(sv::get_home() + "/SpireCV/calib_webcam_640x480.yaml"); + + // 打开摄像头 + sv::Camera cap; + cap.setWH(640, 480); + cap.setFps(30); + cap.open(sv::CameraType::WEBCAM, 2); // CameraID 0 + // cv::VideoCapture cap("/home/amov/SpireCV/test/tracking_1280x720.mp4"); + // 实例化OpenCV的Mat类,用于内存单帧图像 + cv::Mat img; + int frame_id = 0; + while (1) + { + // 实例化SpireCV的 单帧检测结果 接口类 TargetsInFrame + sv::TargetsInFrame tgts(frame_id++); + // 读取一帧图像到img + cap.read(img); + cv::resize(img, img, cv::Size(sot.image_width, sot.image_height)); + + // 开始 单目标跟踪 逻辑 + // 是否有新的目标被手动框选 + if (b_renew_ROI) + { + // 拿新的框选区域 来 初始化跟踪器 + sot.init(img, rect_sel); + // std::cout << rect_sel << std::endl; + // 重置框选标志 + b_renew_ROI = false; + // 开始跟踪 + b_begin_TRACK = true; + } + else if (b_begin_TRACK) + { + // 以前一帧的结果继续跟踪 + sot.track(img, tgts); + + // 执行Aruco二维码检测 + ad.detect(img, tgts); + + // 可视化检测结果,叠加到img上 + sv::drawTargetsInFrame(img, tgts); + + // 控制台打印 单目标跟踪 结果 + printf("Frame-[%d]\n", frame_id); + // 打印当前检测的FPS + printf(" FPS = %.2f\n", tgts.fps); + // 打印当前相机的视场角(degree) + printf(" FOV (fx, fy) = (%.2f, %.2f)\n", tgts.fov_x, tgts.fov_y); + // 打印当前输入图像的像素宽度和高度 + printf(" Frame Size (width, height) = (%d, %d)\n", tgts.width, tgts.height); + if (tgts.targets.size() > 0) + { + printf("Frame-[%d]\n", frame_id); + // 打印 跟踪目标 的中心位置,cx,cy的值域为[0, 1],以及cx,cy的像素值 + printf(" Tracking Center (cx, cy) = (%.3f, %.3f), in Pixels = ((%d, %d))\n", + tgts.targets[0].cx, tgts.targets[0].cy, + int(tgts.targets[0].cx * tgts.width), + int(tgts.targets[0].cy * tgts.height)); + // 打印 跟踪目标 的外接矩形框的宽度、高度,w,h的值域为(0, 1],以及w,h的像素值 + printf(" Tracking Size (w, h) = (%.3f, %.3f), in Pixels = ((%d, %d))\n", + tgts.targets[0].w, tgts.targets[0].h, + int(tgts.targets[0].w * tgts.width), + int(tgts.targets[0].h * tgts.height)); + // 打印 跟踪目标 的视线角,跟相机视场相关 + printf(" Tracking Line-of-sight (ax, ay) = (%.3f, %.3f)\n", tgts.targets[0].los_ax, tgts.targets[0].los_ay); + + for (int i=0; i +#include +// 包含SpireCV SDK头文件 +#include + +using namespace std; + +// 定义窗口名称 +static const std::string RGB_WINDOW = "Image window"; +// 框选到的矩形 +cv::Rect rect_sel; +// 框选起始点 +cv::Point pt_origin; + +// 是否得到一个新的框选区域 +bool b_renew_ROI = false; +// 是否开始跟踪 +bool b_begin_TRACK = false; +// 实现框选逻辑的回调函数 +void onMouse(int event, int x, int y, int, void*); + + +struct node { + double x,y; +}; +node p1,p2,p3,p4; +node p; +double getCross(node p1, node p2, node p) { + return (p2.x-p1.x)*(p.y-p1.y)-(p.x-p1.x)*(p2.y-p1.y); +} +bool b_clicked =false; +bool detect_tracking =true; + + +int main(int argc, char *argv[]) { + // 定义一个新的窗口,可在上面进行框选操作 + cv::namedWindow(RGB_WINDOW); + // 设置窗口操作回调函数,该函数实现整个框选逻辑 + cv::setMouseCallback(RGB_WINDOW, onMouse, 0); + // 实例化 框选目标跟踪类 + sv::SingleObjectTracker sot; + // 手动导入相机参数,如果使用Amov的G1等吊舱或相机,则可以忽略该步骤,将自动下载相机参数文件 + sot.loadCameraParams(sv::get_home() + "/SpireCV/calib_webcam_640x480.yaml"); + + + sv::CommonObjectDetector cod; + cod.loadCameraParams(sv::get_home() + "/SpireCV/calib_webcam_640x480.yaml"); + + + // 打开摄像头 + sv::Camera cap; + cap.setWH(640, 480); + cap.setFps(30); + cap.open(sv::CameraType::WEBCAM, 2); // CameraID 0 + // cv::VideoCapture cap("/home/amov/SpireCV/test/tracking_1280x720.mp4"); + // 实例化OpenCV的Mat类,用于内存单帧图像 + cv::Mat img; + int frame_id = 0; + while (1) + { + if (detect_tracking == true) { + // 实例化SpireCV的 单帧检测结果 接口类 TargetsInFrame + sv::TargetsInFrame tgts(frame_id++); + // 读取一帧图像到img + cap.read(img); + cv::resize(img, img, cv::Size(cod.image_width, cod.image_height)); + + // 执行通用目标检测 + cod.detect(img, tgts); + + // 可视化检测结果,叠加到img上 + sv::drawTargetsInFrame(img, tgts); + + // 控制台打印通用目标检测结果 + printf("Frame-[%d]\n", frame_id); + // 打印当前检测的FPS + printf(" FPS = %.2f\n", tgts.fps); + // 打印当前相机的视场角(degree) + printf(" FOV (fx, fy) = (%.2f, %.2f)\n", tgts.fov_x, tgts.fov_y); + for (int i=0; i= 0 && getCross(p2, p3, p) * getCross(p4, p1, p) >= 0) { + b_begin_TRACK = false; + detect_tracking = false; + // pt_origin = cv::Point(nor_x, nor_p_y); + // std::cout << "pt_origin " < 0) + { + printf("Frame-[%d]\n", frame_id); + // 打印 跟踪目标 的中心位置,cx,cy的值域为[0, 1] + printf(" Tracking Center (cx, cy) = (%.3f, %.3f)\n", tgts.targets[0].cx, tgts.targets[0].cy); + // 打印 跟踪目标 的外接矩形框的宽度、高度,w,h的值域为(0, 1] + printf(" Tracking Size (w, h) = (%.3f, %.3f)\n", tgts.targets[0].w, tgts.targets[0].h); + // 打印 跟踪目标 的视线角,跟相机视场相关 + printf(" Tracking Line-of-sight (ax, ay) = (%.3f, %.3f)\n", tgts.targets[0].los_ax, tgts.targets[0].los_ay); + } + } + }//end of tracking + // 显示检测结果img + cv::imshow(RGB_WINDOW, img); + cv::waitKey(1); + } + return 0; +} + +void onMouse(int event, int x, int y, int, void*) +{ + if (b_clicked) + { + // 更新框选区域坐标 + pt_origin.x = 0; + pt_origin.y = 0; + } + // 左键按下 + if (event == cv::EVENT_LBUTTONDOWN) + { + detect_tracking = true; + pt_origin = cv::Point(x, y); + } + + else if (event == cv::EVENT_RBUTTONDOWN) + { + detect_tracking = true; + b_renew_ROI = false; + b_begin_TRACK = false; + b_clicked = true; + } +} diff --git a/samples/demo/common_object_detection.cpp b/samples/demo/common_object_detection.cpp index f051756..544cad2 100644 --- a/samples/demo/common_object_detection.cpp +++ b/samples/demo/common_object_detection.cpp @@ -13,9 +13,9 @@ int main(int argc, char *argv[]) { // 打开摄像头 sv::Camera cap; - // cap.setWH(640, 480); - // cap.setFps(30); - cap.open(sv::CameraType::WEBCAM, 0); // CameraID 0 + cap.setWH(640, 480); + cap.setFps(60); + cap.open(sv::CameraType::WEBCAM, 2); // CameraID 0 // 实例化OpenCV的Mat类,用于内存单帧图像 cv::Mat img; int frame_id = 0; @@ -65,7 +65,7 @@ int main(int argc, char *argv[]) { // 显示检测结果img cv::imshow("img", img); - cv::waitKey(10); + cv::waitKey(1); } return 0; diff --git a/samples/demo/detection_with_clicked_tracking.cpp b/samples/demo/detection_with_clicked_tracking.cpp index 7cefc72..e9c9285 100644 --- a/samples/demo/detection_with_clicked_tracking.cpp +++ b/samples/demo/detection_with_clicked_tracking.cpp @@ -51,7 +51,7 @@ int main(int argc, char *argv[]) { sv::Camera cap; // cap.setWH(640, 480); // cap.setFps(30); - cap.open(sv::CameraType::WEBCAM, 0); // CameraID 0 + cap.open(sv::CameraType::WEBCAM, 2); // CameraID 0 // cv::VideoCapture cap("/home/amov/SpireCV/test/tracking_1280x720.mp4"); // 实例化OpenCV的Mat类,用于内存单帧图像 cv::Mat img; diff --git a/samples/demo/ellipse_detection.cpp b/samples/demo/ellipse_detection.cpp index 596bf2f..d427c47 100644 --- a/samples/demo/ellipse_detection.cpp +++ b/samples/demo/ellipse_detection.cpp @@ -13,8 +13,8 @@ int main(int argc, char *argv[]) { // 打开摄像头 sv::Camera cap; - // cap.setWH(640, 480); - // cap.setFps(30); + cap.setWH(640, 480); + cap.setFps(30); cap.open(sv::CameraType::WEBCAM, 0); // CameraID 0 // 实例化OpenCV的Mat类,用于内存单帧图像 cv::Mat img; @@ -63,7 +63,7 @@ int main(int argc, char *argv[]) { // 显示检测结果img cv::imshow("img", img); - cv::waitKey(10); + cv::waitKey(1); } return 0; diff --git a/sv_algorithm_params.json b/sv_algorithm_params.json index 00abb3a..2d4edb1 100644 --- a/sv_algorithm_params.json +++ b/sv_algorithm_params.json @@ -1,11 +1,23 @@ { "CommonObjectDetector": { +<<<<<<< Updated upstream "dataset": "COCO", "inputSize": 1280, "nmsThrs": 0.6, "scoreThrs": 0.3, "useWidthOrHeight": 1, "withSegmentation": false, +======= + "dataset": "CAR", + "inputSize": 640, + "nmsThrs": 0.6, + "scoreThrs": 0.4, + "useWidthOrHeight": 1, + "withSegmentation": false, + "datasetCAR":{ + "diff_car":[0.12,0.105] + }, +>>>>>>> Stashed changes "datasetPersonVehicle": { "person": [0.5, 1.8], "car": [4.1, 1.5], @@ -114,6 +126,7 @@ "SingleObjectTracker": { "algorithm": "nano", "backend": 0, +<<<<<<< Updated upstream "target": 0, "useWidthOrHeight": 0, "sigleobjectW":2, @@ -125,6 +138,16 @@ }, "EllipseDetector": { "radiusInMeter": 0.1535, +======= + "target": 0 + }, + "LandingMarkerDetector": { + "labels": ["h"], + "maxCandidates": 5 + }, + "EllipseDetector": { + "radiusInMeter": 0.685, +>>>>>>> Stashed changes "preProcessingGaussKernel": 5, "preProcessingGaussSigma": 1.306, "thPosition": 1.0, @@ -132,10 +155,17 @@ "minEdgeLength": 9, "minOrientedRectSide": 2.984, "distanceToEllipseContour": 0.111, +<<<<<<< Updated upstream "minScore": 0.7, "minReliability": 0.470, "ns": 22, "percentNe": 0.99, +======= + "minScore": 0.511, + "minReliability": 0.470, + "ns": 22, + "percentNe": 0.946, +>>>>>>> Stashed changes "T_CNC": 0.121, "T_TCN_L": 0.468, "T_TCN_P": 0.560, @@ -144,8 +174,13 @@ "ArucoDetector": { "dictionaryId": 10, "markerIds": [-1], +<<<<<<< Updated upstream "markerLengths": [0.2], "adaptiveThreshConstant": 35, +======= + "markerLengths": [0.17], + "adaptiveThreshConstant": 7, +>>>>>>> Stashed changes "adaptiveThreshWinSizeMax": 23, "adaptiveThreshWinSizeMin": 3, "adaptiveThreshWinSizeStep": 10, diff --git a/sv_algorithm_params_coco_1280.json b/sv_algorithm_params_coco_1280.json new file mode 100644 index 0000000..13dc7d1 --- /dev/null +++ b/sv_algorithm_params_coco_1280.json @@ -0,0 +1,184 @@ +{ + "CommonObjectDetector": { + "dataset": "COCO", + "inputSize": 1280, + "nmsThrs": 0.6, + "scoreThrs": 0.4, + "useWidthOrHeight": 1, + "withSegmentation": false, + "datasetPersonVehicle": { + "person": [0.5, 1.8], + "car": [4.1, 1.5], + "bus": [10, 3], + "truck": [-1, -1], + "bike": [-1, -1], + "train": [-1, -1], + "boat": [-1, -1], + "aeroplane": [-1, -1] + }, + "datasetDrone": { + "drone": [0.4, 0.2] + }, + "datasetCOCO": { + "person": [-1, -1], + "bicycle": [-1, -1], + "car": [-1, -1], + "motorcycle": [-1, -1], + "airplane": [-1, -1], + "bus": [-1, -1], + "train": [-1, -1], + "truck": [-1, -1], + "boat": [-1, -1], + "traffic light": [-1, -1], + "fire hydrant": [-1, -1], + "stop sign": [-1, -1], + "parking meter": [-1, -1], + "bench": [-1, -1], + "bird": [-1, -1], + "cat": [-1, -1], + "dog": [-1, -1], + "horse": [-1, -1], + "sheep": [-1, -1], + "cow": [-1, -1], + "elephant": [-1, -1], + "bear": [-1, -1], + "zebra": [-1, -1], + "giraffe": [-1, -1], + "backpack": [-1, -1], + "umbrella": [-1, -1], + "handbag": [-1, -1], + "tie": [-1, -1], + "suitcase": [-1, -1], + "frisbee": [-1, -1], + "skis": [-1, -1], + "snowboard": [-1, -1], + "sports ball": [-1, -1], + "kite": [-1, -1], + "baseball bat": [-1, -1], + "baseball glove": [-1, -1], + "skateboard": [-1, -1], + "surfboard": [-1, -1], + "tennis racket": [-1, -1], + "bottle": [-1, -1], + "wine glass": [-1, -1], + "cup": [-1, -1], + "fork": [-1, -1], + "knife": [-1, -1], + "spoon": [-1, -1], + "bowl": [-1, -1], + "banana": [-1, -1], + "apple": [-1, -1], + "sandwich": [-1, -1], + "orange": [-1, -1], + "broccoli": [-1, -1], + "carrot": [-1, -1], + "hot dog": [-1, -1], + "pizza": [-1, -1], + "donut": [-1, -1], + "cake": [-1, -1], + "chair": [-1, -1], + "couch": [-1, -1], + "potted plant": [-1, -1], + "bed": [-1, -1], + "dining table": [-1, -1], + "toilet": [-1, -1], + "tv": [-1, -1], + "laptop": [-1, -1], + "mouse": [-1, -1], + "remote": [-1, -1], + "keyboard": [-1, -1], + "cell phone": [-1, -1], + "microwave": [-1, -1], + "oven": [-1, -1], + "toaster": [-1, -1], + "sink": [-1, -1], + "refrigerator": [-1, -1], + "book": [-1, -1], + "clock": [-1, -1], + "vase": [-1, -1], + "scissors": [-1, -1], + "teddy bear": [-1, -1], + "hair drier": [-1, -1], + "toothbrush": [-1, -1] + } + }, + "AutoFocusObjectDetector": { + "lock_thres": 5, + "unlock_thres": 5, + "lock_scale_init": 12.0, + "lock_scale": 8.0, + "categories_filter": [], + "keep_unlocked": false, + "use_square_region": false + }, + "SingleObjectTracker": { + "algorithm": "siamrpn", + "backend": 0, + "target": 0 + }, + "LandingMarkerDetector": { + "labels": ["x", "h"], + "maxCandidates": 5 + }, + "EllipseDetector": { + "radiusInMeter": 0.5, + "preProcessingGaussKernel": 5, + "preProcessingGaussSigma": 1.306, + "thPosition": 1.0, + "maxCenterDistance": 0.05, + "minEdgeLength": 9, + "minOrientedRectSide": 2.984, + "distanceToEllipseContour": 0.111, + "minScore": 0.511, + "minReliability": 0.470, + "ns": 22, + "percentNe": 0.946, + "T_CNC": 0.121, + "T_TCN_L": 0.468, + "T_TCN_P": 0.560, + "thRadius": 0.202 + }, + "ArucoDetector": { + "dictionaryId": 10, + "markerIds": [-1], + "markerLengths": [0.2], + "adaptiveThreshConstant": 7, + "adaptiveThreshWinSizeMax": 23, + "adaptiveThreshWinSizeMin": 3, + "adaptiveThreshWinSizeStep": 10, + "aprilTagCriticalRad": 0.17453292519, + "aprilTagDeglitch": 0, + "aprilTagMaxLineFitMse": 10.0, + "aprilTagMaxNmaxima": 10, + "aprilTagMinClusterPixels": 5, + "aprilTagMinWhiteBlackDiff": 5, + "aprilTagQuadDecimate": 0.0, + "aprilTagQuadSigma": 0.0, + "cornerRefinementMaxIterations": 30, + "cornerRefinementMethod": 0, + "cornerRefinementMinAccuracy": 0.1, + "cornerRefinementWinSize": 5, + "detectInvertedMarker": false, + "errorCorrectionRate": 0.6, + "markerBorderBits": 1, + "maxErroneousBitsInBorderRate": 0.35, + "maxMarkerPerimeterRate": 4.0, + "minCornerDistanceRate": 0.05, + "minDistanceToBorder": 3, + "minMarkerDistanceRate": 0.05, + "minMarkerLengthRatioOriginalImg": 0, + "minMarkerPerimeterRate": 0.03, + "minOtsuStdDev": 5.0, + "minSideLengthCanonicalImg": 32, + "perspectiveRemoveIgnoredMarginPerCell": 0.13, + "perspectiveRemovePixelPerCell": 4, + "polygonalApproxAccuracyRate": 0.03, + "useAruco3Detection": false + }, + "ColorLineDetector": { + "line_color": "black", + "line_location": 0.5, + "line_location_a1": 0.3, + "line_location_a2": 0.7 + } +} diff --git a/sv_algorithm_params_coco_640.json b/sv_algorithm_params_coco_640.json new file mode 100644 index 0000000..8ccf8a7 --- /dev/null +++ b/sv_algorithm_params_coco_640.json @@ -0,0 +1,184 @@ +{ + "CommonObjectDetector": { + "dataset": "COCO", + "inputSize": 640, + "nmsThrs": 0.6, + "scoreThrs": 0.4, + "useWidthOrHeight": 1, + "withSegmentation": true, + "datasetPersonVehicle": { + "person": [0.5, 1.8], + "car": [4.1, 1.5], + "bus": [10, 3], + "truck": [-1, -1], + "bike": [-1, -1], + "train": [-1, -1], + "boat": [-1, -1], + "aeroplane": [-1, -1] + }, + "datasetDrone": { + "drone": [0.4, 0.2] + }, + "datasetCOCO": { + "person": [-1, -1], + "bicycle": [-1, -1], + "car": [-1, -1], + "motorcycle": [-1, -1], + "airplane": [-1, -1], + "bus": [-1, -1], + "train": [-1, -1], + "truck": [-1, -1], + "boat": [-1, -1], + "traffic light": [-1, -1], + "fire hydrant": [-1, -1], + "stop sign": [-1, -1], + "parking meter": [-1, -1], + "bench": [-1, -1], + "bird": [-1, -1], + "cat": [-1, -1], + "dog": [-1, -1], + "horse": [-1, -1], + "sheep": [-1, -1], + "cow": [-1, -1], + "elephant": [-1, -1], + "bear": [-1, -1], + "zebra": [-1, -1], + "giraffe": [-1, -1], + "backpack": [-1, -1], + "umbrella": [-1, -1], + "handbag": [-1, -1], + "tie": [-1, -1], + "suitcase": [-1, -1], + "frisbee": [-1, -1], + "skis": [-1, -1], + "snowboard": [-1, -1], + "sports ball": [-1, -1], + "kite": [-1, -1], + "baseball bat": [-1, -1], + "baseball glove": [-1, -1], + "skateboard": [-1, -1], + "surfboard": [-1, -1], + "tennis racket": [-1, -1], + "bottle": [-1, -1], + "wine glass": [-1, -1], + "cup": [-1, -1], + "fork": [-1, -1], + "knife": [-1, -1], + "spoon": [-1, -1], + "bowl": [-1, -1], + "banana": [-1, -1], + "apple": [-1, -1], + "sandwich": [-1, -1], + "orange": [-1, -1], + "broccoli": [-1, -1], + "carrot": [-1, -1], + "hot dog": [-1, -1], + "pizza": [-1, -1], + "donut": [-1, -1], + "cake": [-1, -1], + "chair": [-1, -1], + "couch": [-1, -1], + "potted plant": [-1, -1], + "bed": [-1, -1], + "dining table": [-1, -1], + "toilet": [-1, -1], + "tv": [-1, -1], + "laptop": [-1, -1], + "mouse": [-1, -1], + "remote": [-1, -1], + "keyboard": [-1, -1], + "cell phone": [-1, -1], + "microwave": [-1, -1], + "oven": [-1, -1], + "toaster": [-1, -1], + "sink": [-1, -1], + "refrigerator": [-1, -1], + "book": [-1, -1], + "clock": [-1, -1], + "vase": [-1, -1], + "scissors": [-1, -1], + "teddy bear": [-1, -1], + "hair drier": [-1, -1], + "toothbrush": [-1, -1] + } + }, + "AutoFocusObjectDetector": { + "lock_thres": 5, + "unlock_thres": 5, + "lock_scale_init": 12.0, + "lock_scale": 8.0, + "categories_filter": [], + "keep_unlocked": false, + "use_square_region": false + }, + "SingleObjectTracker": { + "algorithm": "siamrpn", + "backend": 0, + "target": 0 + }, + "LandingMarkerDetector": { + "labels": ["x", "h"], + "maxCandidates": 5 + }, + "EllipseDetector": { + "radiusInMeter": 0.5, + "preProcessingGaussKernel": 5, + "preProcessingGaussSigma": 1.306, + "thPosition": 1.0, + "maxCenterDistance": 0.05, + "minEdgeLength": 9, + "minOrientedRectSide": 2.984, + "distanceToEllipseContour": 0.111, + "minScore": 0.511, + "minReliability": 0.470, + "ns": 22, + "percentNe": 0.946, + "T_CNC": 0.121, + "T_TCN_L": 0.468, + "T_TCN_P": 0.560, + "thRadius": 0.202 + }, + "ArucoDetector": { + "dictionaryId": 10, + "markerIds": [-1], + "markerLengths": [0.2], + "adaptiveThreshConstant": 7, + "adaptiveThreshWinSizeMax": 23, + "adaptiveThreshWinSizeMin": 3, + "adaptiveThreshWinSizeStep": 10, + "aprilTagCriticalRad": 0.17453292519, + "aprilTagDeglitch": 0, + "aprilTagMaxLineFitMse": 10.0, + "aprilTagMaxNmaxima": 10, + "aprilTagMinClusterPixels": 5, + "aprilTagMinWhiteBlackDiff": 5, + "aprilTagQuadDecimate": 0.0, + "aprilTagQuadSigma": 0.0, + "cornerRefinementMaxIterations": 30, + "cornerRefinementMethod": 0, + "cornerRefinementMinAccuracy": 0.1, + "cornerRefinementWinSize": 5, + "detectInvertedMarker": false, + "errorCorrectionRate": 0.6, + "markerBorderBits": 1, + "maxErroneousBitsInBorderRate": 0.35, + "maxMarkerPerimeterRate": 4.0, + "minCornerDistanceRate": 0.05, + "minDistanceToBorder": 3, + "minMarkerDistanceRate": 0.05, + "minMarkerLengthRatioOriginalImg": 0, + "minMarkerPerimeterRate": 0.03, + "minOtsuStdDev": 5.0, + "minSideLengthCanonicalImg": 32, + "perspectiveRemoveIgnoredMarginPerCell": 0.13, + "perspectiveRemovePixelPerCell": 4, + "polygonalApproxAccuracyRate": 0.03, + "useAruco3Detection": false + }, + "ColorLineDetector": { + "line_color": "black", + "line_location": 0.5, + "line_location_a1": 0.3, + "line_location_a2": 0.7 + } +}