It's very quick to start a scene segmentation server. Main code are showed below
Scene Segmentation Server Code Snappit
The executable binary file was built in $PROJECT_ROOT/_bin/bisenetv2_segmentation_server.out Simply run
cd $PROJECT_ROOT/_bin
./bisenetv2_segmentation_server.out ../conf/server/scene_segmentation/bisenetv2/bisenetv2_server_config.ini
When server successfully start on http:://localhost:8091
you're supposed to see worker_nums
workers were called up and occupied your GPU resources. By default 4 model workers will be created you may enlarge it if you have enough GPU memory.
Local python client test is similiar with mobilenetv2 classification server you may read toturials_of_classfication_model_server.md for details.
To use test python client you may run
cd $PROJECT_ROOT/scripts
export PYTHONPATH=$PWD:$PYTHONPATH
python server/test_server.py --server bisenetv2 --mode single
Scene Segmentation model's output is a class map with the same image size of origin input image. Each pixel was assigned with a unique class label. Server's response is a json like
resp = {
'req_id': '',
'code': 1,
'msg': 'success',
'data': {
'segment_result': base64_image_content
}
}
segmentation_result
contains the model's output encoded with base64. If you want to save the model's output info local file you may do
with open(src_image_path, 'rb') as f:
image_data = f.read()
base64_data = base64.b64encode(image_data)
post_data = {
'img_data': base64_data.decode(),
'req_id': 'demo',
}
resp = requests.post(url=url, data=json.dumps(post_data))
output = json.loads(resp.text)['data']['segment_result']
out_f = open('result.png', 'wb')
out_f.write(base64.b64decode(output))
out_f.close()
BisenetV2 🔥 model was designed for fast scene segmentation task. You may refer to repo https://github.com/MaybeShewill-CV/bisenetv2-tensorflow for details about training details.