diff --git a/.gitignore b/.gitignore index cf573af1e97..de1330fdeb7 100644 --- a/.gitignore +++ b/.gitignore @@ -53,3 +53,6 @@ __pycache__ *.pyd *.egg-info/ python/setup.py + +# Clangd +.cache/ diff --git a/examples/fasterrcnn.cpp b/examples/fasterrcnn.cpp index 733acf18ad4..5d78526f4de 100644 --- a/examples/fasterrcnn.cpp +++ b/examples/fasterrcnn.cpp @@ -127,8 +127,10 @@ static int detect_fasterrcnn(const cv::Mat& bgr, std::vector& objects) // https://dl.dropboxusercontent.com/s/o6ii098bu51d139/faster_rcnn_models.tgz?dl=0 // ZF_faster_rcnn_final.caffemodel // the ncnn model https://github.com/nihui/ncnn-assets/tree/master/models - fasterrcnn.load_param("ZF_faster_rcnn_final.param"); - fasterrcnn.load_model("ZF_faster_rcnn_final.bin"); + if (!fasterrcnn.load_param("ZF_faster_rcnn_final.param")) + exit(-1); + if (!fasterrcnn.load_model("ZF_faster_rcnn_final.bin")) + exit(-1); // hyper parameters taken from // py-faster-rcnn/lib/fast_rcnn/config.py diff --git a/examples/mobilenetssd.cpp b/examples/mobilenetssd.cpp index 7095ccc6eff..e24b84aa440 100644 --- a/examples/mobilenetssd.cpp +++ b/examples/mobilenetssd.cpp @@ -40,8 +40,10 @@ static int detect_mobilenet(const cv::Mat& bgr, std::vector& objects) // model is converted from https://github.com/chuanqi305/MobileNet-SSD // and can be downloaded from https://drive.google.com/open?id=0ByaKLD9QaPtucWk0Y0dha1VVY0U // the ncnn model https://github.com/nihui/ncnn-assets/tree/master/models - mobilenet.load_param("mobilenet_ssd_voc_ncnn.param"); - mobilenet.load_model("mobilenet_ssd_voc_ncnn.bin"); + if (!mobilenet.load_param("mobilenet_ssd_voc_ncnn.param")) + exit(-1); + if (!mobilenet.load_model("mobilenet_ssd_voc_ncnn.bin")) + exit(-1); const int target_size = 300; diff --git a/examples/mobilenetv2ssdlite.cpp b/examples/mobilenetv2ssdlite.cpp index c1e998f9c90..82fcc9cfc46 100644 --- a/examples/mobilenetv2ssdlite.cpp +++ b/examples/mobilenetv2ssdlite.cpp @@ -47,8 +47,10 @@ static int detect_mobilenetv2(const cv::Mat& bgr, std::vector& objects) // original pretrained model from https://github.com/chuanqi305/MobileNetv2-SSDLite // https://github.com/chuanqi305/MobileNetv2-SSDLite/blob/master/ssdlite/voc/deploy.prototxt // the ncnn model https://github.com/nihui/ncnn-assets/tree/master/models - mobilenetv2.load_param("mobilenetv2_ssdlite_voc.param"); - mobilenetv2.load_model("mobilenetv2_ssdlite_voc.bin"); + if (!mobilenetv2.load_param("mobilenetv2_ssdlite_voc.param")) + exit(-1); + if (!mobilenetv2.load_model("mobilenetv2_ssdlite_voc.bin")) + exit(-1); const int target_size = 300; diff --git a/examples/mobilenetv3ssdlite.cpp b/examples/mobilenetv3ssdlite.cpp index 9c97ffc18c6..747fa36627c 100644 --- a/examples/mobilenetv3ssdlite.cpp +++ b/examples/mobilenetv3ssdlite.cpp @@ -51,8 +51,10 @@ static int detect_mobilenetv3(const cv::Mat& bgr, std::vector& objects) #endif // NCNN_VULKAN // converted ncnn model from https://github.com/ujsyehao/mobilenetv3-ssd - mobilenetv3.load_param("./mobilenetv3_ssdlite_voc.param"); - mobilenetv3.load_model("./mobilenetv3_ssdlite_voc.bin"); + if (!mobilenetv3.load_param("./mobilenetv3_ssdlite_voc.param")) + exit(-1); + if (!mobilenetv3.load_model("./mobilenetv3_ssdlite_voc.bin")) + exit(-1); const int target_size = 300; diff --git a/examples/nanodet.cpp b/examples/nanodet.cpp index 8da7c4abdea..a616520288b 100644 --- a/examples/nanodet.cpp +++ b/examples/nanodet.cpp @@ -226,8 +226,10 @@ static int detect_nanodet(const cv::Mat& bgr, std::vector& objects) // original pretrained model from https://github.com/RangiLyu/nanodet // the ncnn model https://github.com/nihui/ncnn-assets/tree/master/models - nanodet.load_param("nanodet_m.param"); - nanodet.load_model("nanodet_m.bin"); + if (!nanodet.load_param("nanodet_m.param")) + exit(-1); + if (!nanodet.load_model("nanodet_m.bin")) + exit(-1); int width = bgr.cols; int height = bgr.rows; diff --git a/examples/nanodetplus_pnnx.cpp b/examples/nanodetplus_pnnx.cpp index 95936981c77..13fe6bd06d3 100644 --- a/examples/nanodetplus_pnnx.cpp +++ b/examples/nanodetplus_pnnx.cpp @@ -226,8 +226,10 @@ static int detect_nanodet(const cv::Mat& bgr, std::vector& objects) // the ncnn model https://github.com/nihui/ncnn-assets/tree/master/models // nanodet.load_param("nanodet-plus-m_320.torchscript.ncnn.param"); // nanodet.load_model("nanodet-plus-m_320.torchscript.ncnn.bin"); - nanodet.load_param("nanodet-plus-m_416.torchscript.ncnn.param"); - nanodet.load_model("nanodet-plus-m_416.torchscript.ncnn.bin"); + if (!nanodet.load_param("nanodet-plus-m_416.torchscript.ncnn.param")) + exit(-1); + if (!nanodet.load_model("nanodet-plus-m_416.torchscript.ncnn.bin")) + exit(-1); int width = bgr.cols; int height = bgr.rows; diff --git a/examples/p2pnet.cpp b/examples/p2pnet.cpp index c3a6032003e..54b46ae569e 100644 --- a/examples/p2pnet.cpp +++ b/examples/p2pnet.cpp @@ -156,8 +156,10 @@ static int detect_crowd(const cv::Mat& bgr, std::vector& crowd_point // model is converted from // https://github.com/TencentYoutuResearch/CrowdCounting-P2PNet // the ncnn model https://pan.baidu.com/s/1O1CBgvY6yJkrK8Npxx3VMg pwd: ezhx - net.load_param("p2pnet.param"); - net.load_model("p2pnet.bin"); + if (!net.load_param("p2pnet.param")) + exit(-1); + if (!net.load_model("p2pnet.bin")) + exit(-1); int width = bgr.cols; int height = bgr.rows; diff --git a/examples/peleenetssd_seg.cpp b/examples/peleenetssd_seg.cpp index 5ee393f6ba8..20285f0876e 100644 --- a/examples/peleenetssd_seg.cpp +++ b/examples/peleenetssd_seg.cpp @@ -40,8 +40,10 @@ static int detect_peleenet(const cv::Mat& bgr, std::vector& objects, ncn // model is converted from https://github.com/eric612/MobileNet-YOLO // and can be downloaded from https://drive.google.com/open?id=1Wt6jKv13sBRMHgrGAJYlOlRF-o80pC0g // the ncnn model https://github.com/nihui/ncnn-assets/tree/master/models - peleenet.load_param("pelee.param"); - peleenet.load_model("pelee.bin"); + if (!peleenet.load_param("pelee.param")) + exit(-1); + if (!peleenet.load_model("pelee.bin")) + exit(-1); const int target_size = 304; diff --git a/examples/retinaface.cpp b/examples/retinaface.cpp index 342d5661d63..827222f530e 100644 --- a/examples/retinaface.cpp +++ b/examples/retinaface.cpp @@ -248,8 +248,10 @@ static int detect_retinaface(const cv::Mat& bgr, std::vector& faceob // the ncnn model https://github.com/nihui/ncnn-assets/tree/master/models // retinaface.load_param("retinaface-R50.param"); // retinaface.load_model("retinaface-R50.bin"); - retinaface.load_param("mnet.25-opt.param"); - retinaface.load_model("mnet.25-opt.bin"); + if (!retinaface.load_param("mnet.25-opt.param")) + exit(-1); + if (!retinaface.load_model("mnet.25-opt.bin")) + exit(-1); const float prob_threshold = 0.8f; const float nms_threshold = 0.4f; diff --git a/examples/rfcn.cpp b/examples/rfcn.cpp index 71fe74d6764..e2349d96b5a 100644 --- a/examples/rfcn.cpp +++ b/examples/rfcn.cpp @@ -126,8 +126,10 @@ static int detect_rfcn(const cv::Mat& bgr, std::vector& objects) // https://github.com/YuwenXiong/py-R-FCN/blob/master/models/pascal_voc/ResNet-50/rfcn_end2end/test_agnostic.prototxt // https://1drv.ms/u/s!AoN7vygOjLIQqUWHpY67oaC7mopf // resnet50_rfcn_final.caffemodel - rfcn.load_param("rfcn_end2end.param"); - rfcn.load_model("rfcn_end2end.bin"); + if (!rfcn.load_param("rfcn_end2end.param")) + exit(-1); + if (!rfcn.load_model("rfcn_end2end.bin")) + exit(-1); const int target_size = 224; diff --git a/examples/rvm.cpp b/examples/rvm.cpp index 24ed0686f59..b5df893fbf1 100644 --- a/examples/rvm.cpp +++ b/examples/rvm.cpp @@ -47,8 +47,10 @@ static int detect_rvm(const cv::Mat& bgr, cv::Mat& pha, cv::Mat& fgr) net.opt.use_vulkan_compute = false; //original pretrained model from https://github.com/PeterL1n/RobustVideoMatting //ncnn model https://pan.baidu.com/s/11iEY2RGfzWFtce8ue7T3JQ password: d9t6 - net.load_param("rvm_512.param"); - net.load_model("rvm_512.bin"); + if (!net.load_param("rvm_512.param")) + exit(-1); + if (!net.load_model("rvm_512.bin")) + exit(-1); //if you use another input size,pleaze change input shape ncnn::Mat r1i = ncnn::Mat(128, 128, 16); diff --git a/examples/scrfd.cpp b/examples/scrfd.cpp index 5dc188cbea5..1eff2051971 100644 --- a/examples/scrfd.cpp +++ b/examples/scrfd.cpp @@ -228,8 +228,10 @@ static int detect_scrfd(const cv::Mat& bgr, std::vector& faceobjects // model is converted from // https://github.com/deepinsight/insightface/tree/master/detection/scrfd // the ncnn model https://github.com/nihui/ncnn-assets/tree/master/models - scrfd.load_param("scrfd_500m-opt2.param"); - scrfd.load_model("scrfd_500m-opt2.bin"); + if (!scrfd.load_param("scrfd_500m-opt2.param")) + exit(-1); + if (!scrfd.load_model("scrfd_500m-opt2.bin")) + exit(-1); int width = bgr.cols; int height = bgr.rows; diff --git a/examples/scrfd_crowdhuman.cpp b/examples/scrfd_crowdhuman.cpp index c3aa04c4f01..0fbb72d8d59 100644 --- a/examples/scrfd_crowdhuman.cpp +++ b/examples/scrfd_crowdhuman.cpp @@ -229,8 +229,10 @@ static int detect_scrfd(const cv::Mat& bgr, std::vector& faceobjects // but I have one for detecing cat face, you can have a try here: // https://drive.google.com/file/d/1JogkKa0f_09HkENbCnXy9hRYxm35wKTn - scrfd.load_param("scrfd_crowdhuman.param"); - scrfd.load_model("scrfd_crowdhuman.bin"); + if (!scrfd.load_param("scrfd_crowdhuman.param")) + exit(-1); + if (!scrfd.load_model("scrfd_crowdhuman.bin")) + exit(-1); int width = bgr.cols; int height = bgr.rows; diff --git a/examples/shufflenetv2.cpp b/examples/shufflenetv2.cpp index 5dd31abcf40..d65dfd9be66 100644 --- a/examples/shufflenetv2.cpp +++ b/examples/shufflenetv2.cpp @@ -32,8 +32,10 @@ static int detect_shufflenetv2(const cv::Mat& bgr, std::vector& cls_score // https://github.com/miaow1988/ShuffleNet_V2_pytorch_caffe // models can be downloaded from https://github.com/miaow1988/ShuffleNet_V2_pytorch_caffe/releases - shufflenetv2.load_param("shufflenet_v2_x0.5.param"); - shufflenetv2.load_model("shufflenet_v2_x0.5.bin"); + if (!shufflenetv2.load_param("shufflenet_v2_x0.5.param")) + exit(-1); + if (!shufflenetv2.load_model("shufflenet_v2_x0.5.bin")) + exit(-1); ncnn::Mat in = ncnn::Mat::from_pixels_resize(bgr.data, ncnn::Mat::PIXEL_BGR, bgr.cols, bgr.rows, 224, 224); diff --git a/examples/simplepose.cpp b/examples/simplepose.cpp index 0589f017d9f..8d718a08a17 100644 --- a/examples/simplepose.cpp +++ b/examples/simplepose.cpp @@ -44,8 +44,10 @@ static int detect_posenet(const cv::Mat& bgr, std::vector& keypoints) // pose_net.export('pose') // then mxnet2ncnn // the ncnn model https://github.com/nihui/ncnn-assets/tree/master/models - posenet.load_param("pose.param"); - posenet.load_model("pose.bin"); + if (!posenet.load_param("pose.param")) + exit(-1); + if (!posenet.load_model("pose.bin")) + exit(-1); int w = bgr.cols; int h = bgr.rows; diff --git a/examples/squeezenet.cpp b/examples/squeezenet.cpp index ec86d71e61e..d2c5e6c9c17 100644 --- a/examples/squeezenet.cpp +++ b/examples/squeezenet.cpp @@ -31,8 +31,10 @@ static int detect_squeezenet(const cv::Mat& bgr, std::vector& cls_scores) squeezenet.opt.use_vulkan_compute = true; // the ncnn model https://github.com/nihui/ncnn-assets/tree/master/models - squeezenet.load_param("squeezenet_v1.1.param"); - squeezenet.load_model("squeezenet_v1.1.bin"); + if (!squeezenet.load_param("squeezenet_v1.1.param")) + exit(-1); + if (!squeezenet.load_model("squeezenet_v1.1.bin")) + exit(-1); ncnn::Mat in = ncnn::Mat::from_pixels_resize(bgr.data, ncnn::Mat::PIXEL_BGR, bgr.cols, bgr.rows, 227, 227); diff --git a/examples/squeezenet_c_api.cpp b/examples/squeezenet_c_api.cpp index 01add23d182..0064b93b319 100644 --- a/examples/squeezenet_c_api.cpp +++ b/examples/squeezenet_c_api.cpp @@ -34,8 +34,10 @@ static int detect_squeezenet(const cv::Mat& bgr, std::vector& cls_scores) ncnn_net_set_option(squeezenet, opt); // the ncnn model https://github.com/nihui/ncnn-assets/tree/master/models - ncnn_net_load_param(squeezenet, "squeezenet_v1.1.param"); - ncnn_net_load_model(squeezenet, "squeezenet_v1.1.bin"); + if (!ncnn_net_load_param(squeezenet, "squeezenet_v1.1.param")) + exit(-1); + if (!ncnn_net_load_model(squeezenet, "squeezenet_v1.1.bin")) + exit(-1); ncnn_mat_t in = ncnn_mat_from_pixels_resize(bgr.data, NCNN_MAT_PIXEL_BGR, bgr.cols, bgr.rows, bgr.cols * 3, 227, 227, NULL); diff --git a/examples/squeezenetssd.cpp b/examples/squeezenetssd.cpp index 64d461bf396..db1f3c059dd 100644 --- a/examples/squeezenetssd.cpp +++ b/examples/squeezenetssd.cpp @@ -41,8 +41,10 @@ static int detect_squeezenet(const cv::Mat& bgr, std::vector& objects) // squeezenet_ssd_voc_deploy.prototxt // https://drive.google.com/open?id=0B3gersZ2cHIxdGpyZlZnbEQ5Snc // the ncnn model https://github.com/nihui/ncnn-assets/tree/master/models - squeezenet.load_param("squeezenet_ssd_voc.param"); - squeezenet.load_model("squeezenet_ssd_voc.bin"); + if (!squeezenet.load_param("squeezenet_ssd_voc.param")) + exit(-1); + if (!squeezenet.load_model("squeezenet_ssd_voc.bin")) + exit(-1); const int target_size = 300; diff --git a/examples/yolact.cpp b/examples/yolact.cpp index faf38ee369f..ffc0c021ba5 100644 --- a/examples/yolact.cpp +++ b/examples/yolact.cpp @@ -127,8 +127,10 @@ static int detect_yolact(const cv::Mat& bgr, std::vector& objects) // original model converted from https://github.com/dbolya/yolact // yolact_resnet50_54_800000.pth // the ncnn model https://github.com/nihui/ncnn-assets/tree/master/models - yolact.load_param("yolact.param"); - yolact.load_model("yolact.bin"); + if (!yolact.load_param("yolact.param")) + exit(-1); + if (!yolact.load_model("yolact.bin")) + exit(-1); const int target_size = 550; diff --git a/examples/yolov2.cpp b/examples/yolov2.cpp index d9488f75659..396950cc8bd 100644 --- a/examples/yolov2.cpp +++ b/examples/yolov2.cpp @@ -41,8 +41,10 @@ static int detect_yolov2(const cv::Mat& bgr, std::vector& objects) // https://github.com/eric612/MobileNet-YOLO/blob/master/models/yolov2/mobilenet_yolo_deploy.prototxt // https://github.com/eric612/MobileNet-YOLO/blob/master/models/yolov2/mobilenet_yolo_deploy_iter_80000.caffemodel // the ncnn model https://github.com/nihui/ncnn-assets/tree/master/models - yolov2.load_param("mobilenet_yolo.param"); - yolov2.load_model("mobilenet_yolo.bin"); + if (!yolov2.load_param("mobilenet_yolo.param")) + exit(-1); + if (!yolov2.load_model("mobilenet_yolo.bin")) + exit(-1); const int target_size = 416; diff --git a/examples/yolov3.cpp b/examples/yolov3.cpp index fd581376b5e..a4decb338c6 100644 --- a/examples/yolov3.cpp +++ b/examples/yolov3.cpp @@ -41,8 +41,10 @@ static int detect_yolov3(const cv::Mat& bgr, std::vector& objects) // param : https://drive.google.com/open?id=1V9oKHP6G6XvXZqhZbzNKL6FI_clRWdC- // bin : https://drive.google.com/open?id=1DBcuFCr-856z3FRQznWL_S5h-Aj3RawA // the ncnn model https://github.com/nihui/ncnn-assets/tree/master/models - yolov3.load_param("mobilenetv2_yolov3.param"); - yolov3.load_model("mobilenetv2_yolov3.bin"); + if (!yolov3.load_param("mobilenetv2_yolov3.param")) + exit(-1); + if (!yolov3.load_model("mobilenetv2_yolov3.bin")) + exit(-1); const int target_size = 352; diff --git a/examples/yolov4.cpp b/examples/yolov4.cpp index da65c6ec947..77406628c48 100644 --- a/examples/yolov4.cpp +++ b/examples/yolov4.cpp @@ -73,17 +73,10 @@ static int init_yolov4(ncnn::Net* yolov4, int* target_size) *target_size = 608; #endif - ret = yolov4->load_param(yolov4_param); - if (ret != 0) - { - return ret; - } - - ret = yolov4->load_model(yolov4_model); - if (ret != 0) - { - return ret; - } + if (!yolov4->load_param(yolov4_param)) + exit(-1); + if (!yolov4->load_model(yolov4_model)) + exit(-1); return 0; } diff --git a/examples/yolov5.cpp b/examples/yolov5.cpp index 0b0850d3983..1b114726aff 100644 --- a/examples/yolov5.cpp +++ b/examples/yolov5.cpp @@ -276,13 +276,17 @@ static int detect_yolov5(const cv::Mat& bgr, std::vector& objects) // original pretrained model from https://github.com/ultralytics/yolov5 // the ncnn model https://github.com/nihui/ncnn-assets/tree/master/models #if YOLOV5_V60 - yolov5.load_param("yolov5s_6.0.param"); - yolov5.load_model("yolov5s_6.0.bin"); + if (!yolov5.load_param("yolov5s_6.0.param")) + exit(-1); + if (!yolov5.load_model("yolov5s_6.0.bin")) + exit(-1); #else yolov5.register_custom_layer("YoloV5Focus", YoloV5Focus_layer_creator); - yolov5.load_param("yolov5s.param"); - yolov5.load_model("yolov5s.bin"); + if (!yolov5.load_param("yolov5s.param")) + exit(-1); + if (!yolov5.load_model("yolov5s.bin")) + exit(-1); #endif const int target_size = 640; diff --git a/examples/yolov5_pnnx.cpp b/examples/yolov5_pnnx.cpp index 415867804cd..0e62f176b1f 100644 --- a/examples/yolov5_pnnx.cpp +++ b/examples/yolov5_pnnx.cpp @@ -207,8 +207,10 @@ static int detect_yolov5(const cv::Mat& bgr, std::vector& objects) // original pretrained model from https://github.com/ultralytics/yolov5 // the ncnn model https://github.com/nihui/ncnn-assets/tree/master/models - yolov5.load_param("yolov5s.ncnn.param"); - yolov5.load_model("yolov5s.ncnn.bin"); + if (!yolov5.load_param("yolov5s.ncnn.param")) + exit(-1); + if (!yolov5.load_model("yolov5s.ncnn.bin")) + exit(-1); const int target_size = 640; const float prob_threshold = 0.25f; diff --git a/examples/yolox.cpp b/examples/yolox.cpp index 0155aff5382..25e63c19e77 100644 --- a/examples/yolox.cpp +++ b/examples/yolox.cpp @@ -261,8 +261,10 @@ static int detect_yolox(const cv::Mat& bgr, std::vector& objects) // ncnn model param: https://github.com/Megvii-BaseDetection/YOLOX/releases/download/0.1.1rc0/yolox_s_ncnn.tar.gz // NOTE that newest version YOLOX remove normalization of model (minus mean and then div by std), // which might cause your model outputs becoming a total mess, plz check carefully. - yolox.load_param("yolox.param"); - yolox.load_model("yolox.bin"); + if (!yolox.load_param("yolox.param")) + exit(-1); + if (!yolox.load_model("yolox.bin")) + exit(-1); int img_w = bgr.cols; int img_h = bgr.rows;