diff --git a/python/examples/faster_rcnn/000000570688.jpg b/python/examples/faster_rcnn/000000570688.jpg deleted file mode 100644 index cb304bd56c4010c08611a30dcca58ea9140cea54..0000000000000000000000000000000000000000 Binary files a/python/examples/faster_rcnn/000000570688.jpg and /dev/null differ diff --git a/python/examples/faster_rcnn/000000570688_bbox.jpg b/python/examples/faster_rcnn/000000570688_bbox.jpg deleted file mode 100644 index 39d0230108e238b0dd9624a838c01bf9e6abcd7d..0000000000000000000000000000000000000000 Binary files a/python/examples/faster_rcnn/000000570688_bbox.jpg and /dev/null differ diff --git a/python/examples/faster_rcnn/README.md b/python/examples/faster_rcnn/README.md deleted file mode 100644 index a0167bd112650d4e8873beec29dde6fa4d20e3e8..0000000000000000000000000000000000000000 --- a/python/examples/faster_rcnn/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# Faster RCNN model on Paddle Serving - -([简体中文](./README_CN.md)|English) - -### Get The Faster RCNN Model -``` -wget --no-check-certificate https://paddle-serving.bj.bcebos.com/pddet_demo/2.0/faster_rcnn.tar.gz -wget --no-check-certificate https://paddle-serving.bj.bcebos.com/pddet_demo/infer_cfg.yml -``` -If you want to have more detection models, please refer to [Paddle Detection Model Zoo](https://github.com/PaddlePaddle/PaddleDetection/blob/release/0.2/docs/MODEL_ZOO_cn.md) - -### Start the service -``` -tar xf faster_rcnn.tar.gz -GLOG_v=2 python -m paddle_serving_server_gpu.serve --model serving_server --port 9494 --gpu_ids 0 -``` - -### Perform prediction -``` -python test_client.py serving_client/serving_client_conf.prototxt infer_cfg.yml 000000570688.jpg -``` - -## 3. Result analysis -

-    
- -    
-

-This is the input picture -   -

-    
- -    
-

- -This is the picture after adding bbox. You can see that the client has done post-processing for the picture. In addition, the output/bbox.json also has the number and coordinate information of each box. diff --git a/python/examples/faster_rcnn/README_CN.md b/python/examples/faster_rcnn/README_CN.md deleted file mode 100644 index 3ddccf9e63043e797c9e261c1f26ebe774adb81c..0000000000000000000000000000000000000000 --- a/python/examples/faster_rcnn/README_CN.md +++ /dev/null @@ -1,37 +0,0 @@ -# 使用Paddle Serving部署Faster RCNN模型 - -(简体中文|[English](./README.md)) - -## 获得Faster RCNN模型 -``` -wget https://paddle-serving.bj.bcebos.com/pddet_demo/faster_rcnn_model.tar.gz -wget https://paddle-serving.bj.bcebos.com/pddet_demo/infer_cfg.yml -``` -如果你想要更多的检测模型,请参考[Paddle检测模型库](https://github.com/PaddlePaddle/PaddleDetection/blob/release/0.2/docs/MODEL_ZOO_cn.md) - -### 启动服务 -``` -tar xf faster_rcnn_model.tar.gz -mv faster_rcnn_model/pddet* ./ -GLOG_v=2 python -m paddle_serving_server_gpu.serve --model pddet_serving_model --port 9494 --gpu_ids 0 -``` - -### 执行预测 -``` -python test_client.py pddet_client_conf/serving_client_conf.prototxt infer_cfg.yml 000000570688.jpg -``` - -## 3. 结果分析 -

-
- -
-

-这是输入图片 - -

-
- -
-

-这是实现添加了bbox之后的图片,可以看到客户端已经为图片做好了后处理,此外在output/bbox.json也有各个框的编号和坐标信息。 diff --git a/python/examples/faster_rcnn/benchmark.py b/python/examples/faster_rcnn/benchmark.py deleted file mode 100755 index 543ef3352ea629f5209b7e5252276bda46a4b2ae..0000000000000000000000000000000000000000 --- a/python/examples/faster_rcnn/benchmark.py +++ /dev/null @@ -1,123 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# pylint: disable=doc-string-missing - -from __future__ import unicode_literals, absolute_import -import os -import sys -import time -import json -import requests -from paddle_serving_client import Client -from paddle_serving_client.utils import MultiThreadRunner -from paddle_serving_client.utils import benchmark_args, show_latency -from paddle_serving_app.reader import ChineseBertReader - -from paddle_serving_app.reader import * -import numpy as np - -args = benchmark_args() - - -def single_func(idx, resource): - img = "./000000570688.jpg" - profile_flags = False - latency_flags = False - if os.getenv("FLAGS_profile_client"): - profile_flags = True - if os.getenv("FLAGS_serving_latency"): - latency_flags = True - latency_list = [] - - if args.request == "rpc": - preprocess = Sequential([ - File2Image(), BGR2RGB(), Div(255.0), - Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], False), - Resize(640, 640), Transpose((2, 0, 1)) - ]) - - postprocess = RCNNPostprocess("label_list.txt", "output") - client = Client() - - client.load_client_config(args.model) - client.connect([resource["endpoint"][idx % len(resource["endpoint"])]]) - - start = time.time() - for i in range(turns): - if args.batch_size >= 1: - l_start = time.time() - feed_batch = [] - b_start = time.time() - im = preprocess(img) - for bi in range(args.batch_size): - print("1111batch") - print(bi) - feed_batch.append({ - "image": im, - "im_info": np.array(list(im.shape[1:]) + [1.0]), - "im_shape": np.array(list(im.shape[1:]) + [1.0]) - }) - # im = preprocess(img) - b_end = time.time() - - if profile_flags: - sys.stderr.write( - "PROFILE\tpid:{}\tbert_pre_0:{} bert_pre_1:{}\n".format( - os.getpid(), - int(round(b_start * 1000000)), - int(round(b_end * 1000000)))) - #result = client.predict(feed=feed_batch, fetch=fetch) - fetch_map = client.predict( - feed=feed_batch, fetch=["multiclass_nms"]) - fetch_map["image"] = img - postprocess(fetch_map) - - l_end = time.time() - if latency_flags: - latency_list.append(l_end * 1000 - l_start * 1000) - else: - print("unsupport batch size {}".format(args.batch_size)) - else: - raise ValueError("not implemented {} request".format(args.request)) - end = time.time() - if latency_flags: - return [[end - start], latency_list] - else: - return [[end - start]] - - -if __name__ == '__main__': - multi_thread_runner = MultiThreadRunner() - endpoint_list = ["127.0.0.1:7777"] - turns = 10 - start = time.time() - result = multi_thread_runner.run( - single_func, args.thread, {"endpoint": endpoint_list, - "turns": turns}) - end = time.time() - total_cost = end - start - - avg_cost = 0 - for i in range(args.thread): - avg_cost += result[0][i] - avg_cost = avg_cost / args.thread - - print("total cost: {}s".format(total_cost)) - print("each thread cost: {}s. ".format(avg_cost)) - print("qps: {}samples/s".format(args.batch_size * args.thread * turns / - total_cost)) - if os.getenv("FLAGS_serving_latency"): - show_latency(result[1]) diff --git a/python/examples/faster_rcnn/benchmark.sh b/python/examples/faster_rcnn/benchmark.sh deleted file mode 100755 index 5706fd03c7a0e266bcac18b0544c64f327cbbe9b..0000000000000000000000000000000000000000 --- a/python/examples/faster_rcnn/benchmark.sh +++ /dev/null @@ -1,52 +0,0 @@ -rm profile_log* -export CUDA_VISIBLE_DEVICES=0 -export FLAGS_profile_server=1 -export FLAGS_profile_client=1 -export FLAGS_serving_latency=1 - -gpu_id=0 -#save cpu and gpu utilization log -if [ -d utilization ];then - rm -rf utilization -else - mkdir utilization -fi -#start server -$PYTHONROOT/bin/python3 -m paddle_serving_server_gpu.serve --model $1 --port 7777 --thread 4 --gpu_ids 0 --ir_optim > elog 2>&1 & -sleep 5 - -#warm up -$PYTHONROOT/bin/python3 benchmark.py --thread 4 --batch_size 1 --model $2/serving_client_conf.prototxt --request rpc > profile 2>&1 -echo -e "import psutil\ncpu_utilization=psutil.cpu_percent(1,False)\nprint('CPU_UTILIZATION:', cpu_utilization)\n" > cpu_utilization.py -for thread_num in 1 4 8 16 -do -for batch_size in 1 -do - job_bt=`date '+%Y%m%d%H%M%S'` - nvidia-smi --id=0 --query-compute-apps=used_memory --format=csv -lms 100 > gpu_use.log 2>&1 & - nvidia-smi --id=0 --query-gpu=utilization.gpu --format=csv -lms 100 > gpu_utilization.log 2>&1 & - gpu_memory_pid=$! - $PYTHONROOT/bin/python3 benchmark.py --thread $thread_num --batch_size $batch_size --model $2/serving_client_conf.prototxt --request rpc > profile 2>&1 - kill ${gpu_memory_pid} - kill `ps -ef|grep used_memory|awk '{print $2}'` - echo "model_name:" $1 - echo "thread_num:" $thread_num - echo "batch_size:" $batch_size - echo "=================Done====================" - echo "model_name:$1" >> profile_log_$1 - echo "batch_size:$batch_size" >> profile_log_$1 - $PYTHONROOT/bin/python3 cpu_utilization.py >> profile_log_$1 - job_et=`date '+%Y%m%d%H%M%S'` - awk 'BEGIN {max = 0} {if(NR>1){if ($1 > max) max=$1}} END {print "MAX_GPU_MEMORY:", max}' gpu_use.log >> profile_log_$1 - awk 'BEGIN {max = 0} {if(NR>1){if ($1 > max) max=$1}} END {print "GPU_UTILIZATION:", max}' gpu_utilization.log >> profile_log_$1 - rm -rf gpu_use.log gpu_utilization.log - $PYTHONROOT/bin/python3 ../util/show_profile.py profile $thread_num >> profile_log_$1 - tail -n 8 profile >> profile_log_$1 - echo "" >> profile_log_$1 -done -done - -#Divided log -awk 'BEGIN{RS="\n\n"}{i++}{print > "bert_log_"i}' profile_log_$1 -mkdir bert_log && mv bert_log_* bert_log -ps -ef|grep 'serving'|grep -v grep|cut -c 9-15 | xargs kill -9 diff --git a/python/examples/faster_rcnn/label_list.txt b/python/examples/faster_rcnn/label_list.txt deleted file mode 100644 index d7d43a94adf73208f997f0efd6581bef11ca734e..0000000000000000000000000000000000000000 --- a/python/examples/faster_rcnn/label_list.txt +++ /dev/null @@ -1,81 +0,0 @@ -background -person -bicycle -car -motorcycle -airplane -bus -train -truck -boat -traffic light -fire hydrant -stop sign -parking meter -bench -bird -cat -dog -horse -sheep -cow -elephant -bear -zebra -giraffe -backpack -umbrella -handbag -tie -suitcase -frisbee -skis -snowboard -sports ball -kite -baseball bat -baseball glove -skateboard -surfboard -tennis racket -bottle -wine glass -cup -fork -knife -spoon -bowl -banana -apple -sandwich -orange -broccoli -carrot -hot dog -pizza -donut -cake -chair -couch -potted plant -bed -dining table -toilet -tv -laptop -mouse -remote -keyboard -cell phone -microwave -oven -toaster -sink -refrigerator -book -clock -vase -scissors -teddy bear -hair drier -toothbrush diff --git a/python/examples/faster_rcnn/test_client.py b/python/examples/faster_rcnn/test_client.py deleted file mode 100755 index 0ee1fbbd85a1c86d82f89ae00b03394846ca2446..0000000000000000000000000000000000000000 --- a/python/examples/faster_rcnn/test_client.py +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from paddle_serving_client import Client -from paddle_serving_app.reader import * -import sys -import numpy as np - -preprocess = Sequential([ - File2Image(), BGR2RGB(), Div(255.0), - Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], False), - Resize(640, 640), Transpose((2, 0, 1)) -]) - -postprocess = RCNNPostprocess("yolo_list.txt", "output") -client = Client() - -client.load_client_config(sys.argv[1]) -client.connect(['127.0.0.1:9494']) - -im = preprocess(sys.argv[3]) -fetch_map = client.predict( - feed={ - "image": im, - "im_info": np.array(list(im.shape[1:]) + [1.0]), - "im_shape": np.array(list(im.shape[1:]) + [1.0]) - }, - fetch=["save_infer_model/scale_2.tmp_1", "save_infer_model/scale_3.tmp_1"], - batch=False) -print(fetch_map)