SunAhong1993 5 жил өмнө
parent
commit
4f4211efdb

+ 3 - 9
paddlex/cv/datasets/easydata_cls.py

@@ -14,11 +14,11 @@
 
 
 from __future__ import absolute_import
 from __future__ import absolute_import
 import os.path as osp
 import os.path as osp
-import platform
 import random
 import random
 import copy
 import copy
 import json
 import json
 import paddlex.utils.logging as logging
 import paddlex.utils.logging as logging
+from paddlex.utils import path_normalization
 from .imagenet import ImageNet
 from .imagenet import ImageNet
 from .dataset import is_pic
 from .dataset import is_pic
 from .dataset import get_encoding
 from .dataset import get_encoding
@@ -65,18 +65,12 @@ class EasyDataCls(ImageNet):
                 item = line.strip()
                 item = line.strip()
                 self.labels.append(item)
                 self.labels.append(item)
         logging.info("Starting to read file list from dataset...")
         logging.info("Starting to read file list from dataset...")
-        win_sep = "\\"
-        other_sep = "/"
         with open(file_list, encoding=get_encoding(file_list)) as f:
         with open(file_list, encoding=get_encoding(file_list)) as f:
             for line in f:
             for line in f:
                 img_file, json_file = [osp.join(data_dir, x) \
                 img_file, json_file = [osp.join(data_dir, x) \
                         for x in line.strip().split()[:2]]
                         for x in line.strip().split()[:2]]
-                if platform.system() == "Windows":
-                    img_file = win_sep.join(img_file.split(other_sep))
-                    json_file = win_sep.join(json_file.split(other_sep))
-                else:
-                    img_file = other_sep.join(img_file.split(win_sep))
-                    json_file = other_sep.join(json_file.split(win_sep))
+                img_file = path_normalization(img_file)
+                json_file = path_normalization(json_file)
                 if not is_pic(img_file):
                 if not is_pic(img_file):
                     continue
                     continue
                 if not osp.isfile(json_file):
                 if not osp.isfile(json_file):

+ 3 - 9
paddlex/cv/datasets/easydata_det.py

@@ -14,13 +14,13 @@
 
 
 from __future__ import absolute_import
 from __future__ import absolute_import
 import os.path as osp
 import os.path as osp
-import platform
 import random
 import random
 import copy
 import copy
 import json
 import json
 import cv2
 import cv2
 import numpy as np
 import numpy as np
 import paddlex.utils.logging as logging
 import paddlex.utils.logging as logging
+from paddlex.utils import path_normalization
 from .voc import VOCDetection
 from .voc import VOCDetection
 from .dataset import is_pic
 from .dataset import is_pic
 from .dataset import get_encoding
 from .dataset import get_encoding
@@ -84,18 +84,12 @@ class EasyDataDet(VOCDetection):
         from pycocotools.mask import decode
         from pycocotools.mask import decode
         ct = 0
         ct = 0
         ann_ct = 0
         ann_ct = 0
-        win_sep = "\\"
-        other_sep = "/"
         with open(file_list, encoding=get_encoding(file_list)) as f:
         with open(file_list, encoding=get_encoding(file_list)) as f:
             for line in f:
             for line in f:
                 img_file, json_file = [osp.join(data_dir, x) \
                 img_file, json_file = [osp.join(data_dir, x) \
                         for x in line.strip().split()[:2]]
                         for x in line.strip().split()[:2]]
-                if platform.system() == "Windows":
-                    img_file = win_sep.join(img_file.split(other_sep))
-                    json_file = win_sep.join(json_file.split(other_sep))
-                else:
-                    img_file = other_sep.join(img_file.split(win_sep))
-                    json_file = other_sep.join(json_file.split(win_sep))
+                img_file = path_normalization(img_file)
+                json_file = path_normalization(json_file)
                 if not is_pic(img_file):
                 if not is_pic(img_file):
                     continue
                     continue
                 if not osp.isfile(json_file):
                 if not osp.isfile(json_file):

+ 3 - 9
paddlex/cv/datasets/easydata_seg.py

@@ -14,13 +14,13 @@
 
 
 from __future__ import absolute_import
 from __future__ import absolute_import
 import os.path as osp
 import os.path as osp
-import platform
 import random
 import random
 import copy
 import copy
 import json
 import json
 import cv2
 import cv2
 import numpy as np
 import numpy as np
 import paddlex.utils.logging as logging
 import paddlex.utils.logging as logging
+from paddlex.utils import path_normalization
 from .dataset import Dataset
 from .dataset import Dataset
 from .dataset import get_encoding
 from .dataset import get_encoding
 from .dataset import is_pic
 from .dataset import is_pic
@@ -62,8 +62,6 @@ class EasyDataSeg(Dataset):
         from pycocotools.mask import decode
         from pycocotools.mask import decode
         cname2cid = {}
         cname2cid = {}
         label_id = 0
         label_id = 0
-        win_sep = "\\"
-        other_sep = "/"
         with open(label_list, encoding=get_encoding(label_list)) as fr:
         with open(label_list, encoding=get_encoding(label_list)) as fr:
             for line in fr.readlines():
             for line in fr.readlines():
                 cname2cid[line.strip()] = label_id
                 cname2cid[line.strip()] = label_id
@@ -74,12 +72,8 @@ class EasyDataSeg(Dataset):
             for line in f:
             for line in f:
                 img_file, json_file = [osp.join(data_dir, x) \
                 img_file, json_file = [osp.join(data_dir, x) \
                         for x in line.strip().split()[:2]]
                         for x in line.strip().split()[:2]]
-                if platform.system() == "Windows":
-                    img_file = win_sep.join(img_file.split(other_sep))
-                    json_file = win_sep.join(json_file.split(other_sep))
-                else:
-                    img_file = other_sep.join(img_file.split(win_sep))
-                    json_file = other_sep.join(json_file.split(win_sep))
+                img_file = path_normalization(img_file)
+                json_file = path_normalization(json_file)
                 if not is_pic(img_file):
                 if not is_pic(img_file):
                     continue
                     continue
                 if not osp.isfile(json_file):
                 if not osp.isfile(json_file):

+ 2 - 7
paddlex/cv/datasets/imagenet.py

@@ -14,10 +14,10 @@
 
 
 from __future__ import absolute_import
 from __future__ import absolute_import
 import os.path as osp
 import os.path as osp
-import platform
 import random
 import random
 import copy
 import copy
 import paddlex.utils.logging as logging
 import paddlex.utils.logging as logging
+from paddlex.utils import path_normalization
 from .dataset import Dataset
 from .dataset import Dataset
 from .dataset import is_pic
 from .dataset import is_pic
 from .dataset import get_encoding
 from .dataset import get_encoding
@@ -64,15 +64,10 @@ class ImageNet(Dataset):
                 item = line.strip()
                 item = line.strip()
                 self.labels.append(item)
                 self.labels.append(item)
         logging.info("Starting to read file list from dataset...")
         logging.info("Starting to read file list from dataset...")
-        win_sep = "\\"
-        other_sep = "/"
         with open(file_list, encoding=get_encoding(file_list)) as f:
         with open(file_list, encoding=get_encoding(file_list)) as f:
             for line in f:
             for line in f:
                 items = line.strip().split()
                 items = line.strip().split()
-                if platform.system() == "Windows":
-                    items[0] = win_sep.join(items[0].split(other_sep))
-                else:
-                    items[0] = other_sep.join(items[0].split(win_sep))
+                items[0] = path_normalization(items[0])
                 if not is_pic(items[0]):
                 if not is_pic(items[0]):
                     continue
                     continue
                 full_path = osp.join(data_dir, items[0])
                 full_path = osp.join(data_dir, items[0])

+ 3 - 9
paddlex/cv/datasets/seg_dataset.py

@@ -14,10 +14,10 @@
 
 
 from __future__ import absolute_import
 from __future__ import absolute_import
 import os.path as osp
 import os.path as osp
-import platform
 import random
 import random
 import copy
 import copy
 import paddlex.utils.logging as logging
 import paddlex.utils.logging as logging
+from paddlex.utils import path_normalization
 from .dataset import Dataset
 from .dataset import Dataset
 from .dataset import get_encoding
 from .dataset import get_encoding
 from .dataset import is_pic
 from .dataset import is_pic
@@ -62,17 +62,11 @@ class SegDataset(Dataset):
                 for line in f:
                 for line in f:
                     item = line.strip()
                     item = line.strip()
                     self.labels.append(item)
                     self.labels.append(item)
-        win_sep = "\\"
-        other_sep = "/"
         with open(file_list, encoding=get_encoding(file_list)) as f:
         with open(file_list, encoding=get_encoding(file_list)) as f:
             for line in f:
             for line in f:
                 items = line.strip().split()
                 items = line.strip().split()
-                if platform.system() == "Windows":
-                    items[0] = win_sep.join(items[0].split(other_sep))
-                    items[1] = win_sep.join(items[1].split(other_sep))
-                else:
-                    items[0] = other_sep.join(items[0].split(win_sep))
-                    items[1] = other_sep.join(items[1].split(win_sep))
+                items[0] = path_normalization(items[0])
+                items[1] = path_normalization(items[1])
                 if not is_pic(items[0]):
                 if not is_pic(items[0]):
                     continue
                     continue
                 full_path_im = osp.join(data_dir, items[0])
                 full_path_im = osp.join(data_dir, items[0])

+ 3 - 9
paddlex/cv/datasets/voc.py

@@ -16,13 +16,13 @@ from __future__ import absolute_import
 import copy
 import copy
 import os
 import os
 import os.path as osp
 import os.path as osp
-import platform
 import random
 import random
 import re
 import re
 import numpy as np
 import numpy as np
 from collections import OrderedDict
 from collections import OrderedDict
 import xml.etree.ElementTree as ET
 import xml.etree.ElementTree as ET
 import paddlex.utils.logging as logging
 import paddlex.utils.logging as logging
+from paddlex.utils import path_normalization
 from .dataset import Dataset
 from .dataset import Dataset
 from .dataset import is_pic
 from .dataset import is_pic
 from .dataset import get_encoding
 from .dataset import get_encoding
@@ -86,8 +86,6 @@ class VOCDetection(Dataset):
             })
             })
         ct = 0
         ct = 0
         ann_ct = 0
         ann_ct = 0
-        win_sep = "\\"
-        other_sep = "/"
         with open(file_list, 'r', encoding=get_encoding(file_list)) as fr:
         with open(file_list, 'r', encoding=get_encoding(file_list)) as fr:
             while True:
             while True:
                 line = fr.readline()
                 line = fr.readline()
@@ -95,12 +93,8 @@ class VOCDetection(Dataset):
                     break
                     break
                 img_file, xml_file = [osp.join(data_dir, x) \
                 img_file, xml_file = [osp.join(data_dir, x) \
                         for x in line.strip().split()[:2]]
                         for x in line.strip().split()[:2]]
-                if platform.system() == "Windows":
-                    img_file = win_sep.join(img_file.split(other_sep))
-                    xml_file = win_sep.join(xml_file.split(other_sep))
-                else:
-                    img_file = other_sep.join(img_file.split(win_sep))
-                    xml_file = other_sep.join(xml_file.split(win_sep))
+                img_file = path_normalization(img_file)
+                xml_file = path_normalization(xml_file)
                 if not is_pic(img_file):
                 if not is_pic(img_file):
                     continue
                     continue
                 if not osp.isfile(xml_file):
                 if not osp.isfile(xml_file):

+ 3 - 12
paddlex/tools/x2coco.py

@@ -23,6 +23,7 @@ import shutil
 import numpy as np
 import numpy as np
 import PIL.ImageDraw
 import PIL.ImageDraw
 from .base import MyEncoder, is_pic, get_encoding
 from .base import MyEncoder, is_pic, get_encoding
+from paddlex.utils import path_normalization
         
         
         
         
 class X2COCO(object):
 class X2COCO(object):
@@ -101,12 +102,7 @@ class LabelMe2COCO(X2COCO):
         image["height"] = json_info["imageHeight"]
         image["height"] = json_info["imageHeight"]
         image["width"] = json_info["imageWidth"]
         image["width"] = json_info["imageWidth"]
         image["id"] = image_id + 1
         image["id"] = image_id + 1
-        win_sep = "\\"
-        other_sep = "/"
-        if platform.system() == "Windows":
-            json_info["imagePath"] = win_sep.join(json_info["imagePath"].split(other_sep))
-        else:
-            json_info["imagePath"] = other_sep.join(json_info["imagePath"].split(win_sep))
+        json_info["imagePath"] = path_normalization(json_info["imagePath"])
         image["file_name"] = osp.split(json_info["imagePath"])[-1]
         image["file_name"] = osp.split(json_info["imagePath"])[-1]
         return image
         return image
     
     
@@ -194,12 +190,7 @@ class EasyData2COCO(X2COCO):
         image["height"] = img.shape[0]
         image["height"] = img.shape[0]
         image["width"] = img.shape[1]
         image["width"] = img.shape[1]
         image["id"] = image_id + 1
         image["id"] = image_id + 1
-        win_sep = "\\"
-        other_sep = "/"
-        if platform.system() == "Windows":
-            img_path = win_sep.join(img_path.split(other_sep))
-        else:
-            img_path = other_sep.join(img_path.split(win_sep))
+        img_path = path_normalization(img_path)
         image["file_name"] = osp.split(img_path)[-1]
         image["file_name"] = osp.split(img_path)[-1]
         return image
         return image
     
     

+ 1 - 0
paddlex/utils/__init__.py

@@ -17,6 +17,7 @@ from . import logging
 from . import utils
 from . import utils
 from . import save
 from . import save
 from .utils import seconds_to_hms
 from .utils import seconds_to_hms
+from .utils import path_normalization
 from .download import download
 from .download import download
 from .download import decompress
 from .download import decompress
 from .download import download_and_decompress
 from .download import download_and_decompress

+ 9 - 0
paddlex/utils/utils.py

@@ -20,6 +20,7 @@ import numpy as np
 import six
 import six
 import yaml
 import yaml
 import math
 import math
+import platform
 from . import logging
 from . import logging
 
 
 
 
@@ -49,6 +50,14 @@ def get_environ_info():
                 info['num'] = fluid.core.get_cuda_device_count()
                 info['num'] = fluid.core.get_cuda_device_count()
     return info
     return info
 
 
+def path_normalization(path):
+    win_sep = "\\"
+    other_sep = "/"
+    if platform.system() == "Windows":
+        path = win_sep.join(path.split(other_sep))
+    else:
+        path = other_sep.join(path.split(win_sep))
+    return path
 
 
 def parse_param_file(param_file, return_shape=True):
 def parse_param_file(param_file, return_shape=True):
     from paddle.fluid.proto.framework_pb2 import VarType
     from paddle.fluid.proto.framework_pb2 import VarType