Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

support to chinese in draw_bbox #8581

Merged
merged 1 commit into from
Aug 29, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions ppdet/utils/compact.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import PIL

def imagedraw_textsize_c(draw, text):
def imagedraw_textsize_c(draw, text, font=None):
if int(PIL.__version__.split('.')[0]) < 10:
tw, th = draw.textsize(text)
tw, th = draw.textsize(text, font=font)
else:
left, top, right, bottom = draw.textbbox((0, 0), text)
left, top, right, bottom = draw.textbbox((0, 0), text, font=font)
tw, th = right - left, bottom - top

return tw, th

10 changes: 5 additions & 5 deletions ppdet/utils/download.py
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,7 @@ def create_voc_list(data_dir, devkit_subdir='VOCdevkit'):
years = ['2007', '2012']

# NOTE: since using auto download VOC
# dataset, VOC default label list should be used,
# dataset, VOC default label list should be used,
# do not generate label_list.txt here. For default
# label, see ../data/source/voc.py
create_list(devkit_dir, years, data_dir)
Expand Down Expand Up @@ -296,7 +296,7 @@ def get_path(url, root_dir, md5sum=None, check_exist=True):

# new weights format which postfix is 'pdparams' not
# need to decompress
if osp.splitext(fullname)[-1] not in ['.pdparams', '.yml']:
if osp.splitext(fullname)[-1] not in ['.pdparams', '.yml', '.ttf']:
_decompress_dist(fullname)

return fullpath, False
Expand Down Expand Up @@ -411,7 +411,7 @@ def _download_dist(url, path, md5sum=None):
must_mkdirs(path)

if not osp.exists(fullname):
with open(lock_path, 'w'): # touch
with open(lock_path, 'w'): # touch
os.utime(lock_path, None)
if rank_id_curr_node == 0:
_download(url, path, md5sum)
Expand All @@ -425,7 +425,7 @@ def _download_dist(url, path, md5sum=None):


def _check_exist_file_md5(filename, md5sum, url):
# if md5sum is None, and file to check is weights file,
# if md5sum is None, and file to check is weights file,
# read md5um from url and check, else check md5sum directly
return _md5check_from_url(filename, url) if md5sum is None \
and filename.endswith('pdparams') \
Expand Down Expand Up @@ -525,7 +525,7 @@ def _decompress_dist(fname):
# trainer pipeline in order
# **change this if you have more elegent methods**
if ParallelEnv().current_endpoint in unique_endpoints:
with open(lock_path, 'w'): # touch
with open(lock_path, 'w'): # touch
os.utime(lock_path, None)
_decompress(fname)
os.remove(lock_path)
Expand Down
Binary file added ppdet/utils/simfang.ttf
Binary file not shown.
13 changes: 10 additions & 3 deletions ppdet/utils/visualizer.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,16 @@
from __future__ import print_function
from __future__ import unicode_literals

import os
import numpy as np
from PIL import Image, ImageDraw
from PIL import Image, ImageDraw, ImageFont
import cv2
import math

from .colormap import colormap
from ppdet.utils.logger import setup_logger
from ppdet.utils.compact import imagedraw_textsize_c
from ppdet.utils.download import get_path
logger = setup_logger(__name__)

__all__ = ['visualize_results']
Expand Down Expand Up @@ -86,6 +88,11 @@ def draw_bbox(image, im_id, catid2name, bboxes, threshold):
"""
Draw bbox on image
"""
font_url = "https://paddledet.bj.bcebos.com/simfang.ttf"
font_path , _ = get_path(font_url, "~/.cache/paddle/")
font_size = 18
font = ImageFont.truetype(font_path, font_size, encoding="utf-8")

draw = ImageDraw.Draw(image)

catid2color = {}
Expand Down Expand Up @@ -126,10 +133,10 @@ def draw_bbox(image, im_id, catid2name, bboxes, threshold):

# draw label
text = "{} {:.2f}".format(catid2name[catid], score)
tw, th = imagedraw_textsize_c(draw, text)
tw, th = imagedraw_textsize_c(draw, text, font=font)
draw.rectangle(
[(xmin + 1, ymin - th), (xmin + tw + 1, ymin)], fill=color)
draw.text((xmin + 1, ymin - th), text, fill=(255, 255, 255))
draw.text((xmin + 1, ymin - th), text, fill=(255, 255, 255), font=font)

return image

Expand Down