Bläddra i källkod

调整代码所有的文件路径,修改绘制text流程

liyan 11 månader sedan
förälder
incheckning
83d4022cff
6 ändrade filer med 21 tillägg och 18 borttagningar
  1. 5 4
      frcnn.py
  2. 5 5
      get_map.py
  3. 4 2
      predict.py
  4. 2 2
      train.py
  5. 2 2
      voc_annotation.py
  6. 3 3
      watermarking.py

+ 5 - 4
frcnn.py

@@ -27,8 +27,8 @@ class FRCNN(object):
         #   验证集损失较低不代表mAP较高,仅代表该权值在验证集上泛化性能较好。
         #   如果出现shape不匹配,同时要注意训练时的model_path和classes_path参数的修改
         #--------------------------------------------------------------------------#
-        "model_path"    : '/root/autodl-tmp/faster-rcnn-pytorch-master/logs_wm/best_epoch_weights.pth',
-        "classes_path"  : '/root/autodl-tmp/faster-rcnn-pytorch-master/model_data/voc_classes.txt',
+        "model_path"    : './logs_wm/best_epoch_weights.pth',
+        "classes_path"  : './model_data/voc_classes.txt',
         #---------------------------------------------------------------------#
         #   网络的主干特征提取网络,resnet50或者vgg
         #---------------------------------------------------------------------#
@@ -159,7 +159,7 @@ class FRCNN(object):
         #---------------------------------------------------------#
         #   设置字体与边框厚度
         #---------------------------------------------------------#
-        font        = ImageFont.truetype(font='/root/autodl-tmp/faster-rcnn-pytorch-master/model_data/simhei.ttf', size=np.floor(3e-2 * image.size[1] + 0.5).astype('int32'))
+        font        = ImageFont.truetype(font='./model_data/simhei.ttf', size=np.floor(3e-2 * image.size[1] + 0.5).astype('int32'))
         thickness   = int(max((image.size[0] + image.size[1]) // np.mean(input_shape), 1))
         #---------------------------------------------------------#
         #   计数
@@ -207,7 +207,8 @@ class FRCNN(object):
 
             label = '{} {:.2f}'.format(predicted_class, score)
             draw = ImageDraw.Draw(image)
-            label_size = draw.textsize(label, font)
+            label_bbox = draw.textbbox((0, 0), label, font=font)
+            label_size = (label_bbox[2] - label_bbox[0], label_bbox[3] - label_bbox[1])
             label = label.encode('utf-8')
             # print(label, top, left, bottom, right)
             

+ 5 - 5
get_map.py

@@ -29,7 +29,7 @@ if __name__ == "__main__":
     #   此处的classes_path用于指定需要测量VOC_map的类别
     #   一般情况下与训练和预测所用的classes_path一致即可
     #--------------------------------------------------------------------------------------#
-    classes_path    = '/root/autodl-tmp/faster-rcnn-pytorch-master/model_data/voc_classes.txt'
+    classes_path    = './/model_data/voc_classes.txt'
     #--------------------------------------------------------------------------------------#
     #   MINOVERLAP用于指定想要获得的mAP0.x,mAP0.x的意义是什么请同学们百度一下。
     #   比如计算mAP0.75,可以设定MINOVERLAP = 0.75。
@@ -68,12 +68,12 @@ if __name__ == "__main__":
     #   指向VOC数据集所在的文件夹
     #   默认指向根目录下的VOC数据集
     #-------------------------------------------------------#
-    VOCdevkit_path  = '/root/autodl-tmp/faster-rcnn-pytorch-master/VOCdevkit/VOC2007'
+    VOCdevkit_path  = './/VOCdevkit/VOC2007'
     #-------------------------------------------------------#
     #   结果输出的文件夹,默认为map_out
     #-------------------------------------------------------#
     map_out_path    = 'map_out'
-    path_temp = "/root/autodl-tmp/faster-rcnn-pytorch-master/VOCdevkit/VOC2007/ImageSets/Main/test.txt"
+    path_temp = ".//VOCdevkit/VOC2007/ImageSets/Main/test.txt"
     image_ids = open(path_temp).read().strip().split()
 
     if not os.path.exists(map_out_path):
@@ -94,7 +94,7 @@ if __name__ == "__main__":
 
         print("Get predict result.")
         for image_id in tqdm(image_ids):
-            img_path = "/root/autodl-tmp/faster-rcnn-pytorch-master/VOCdevkit/VOC2007/JPEGImages/"
+            img_path = ".//VOCdevkit/VOC2007/JPEGImages/"
             image_path  = os.path.join(img_path + image_id+".jpg")
             image       = Image.open(image_path)
             if map_vis:
@@ -106,7 +106,7 @@ if __name__ == "__main__":
         print("Get ground truth result.")
         for image_id in tqdm(image_ids):
             with open(os.path.join(map_out_path, "ground-truth/"+image_id+".txt"), "w") as new_f:
-                root_path = "/root/autodl-tmp/faster-rcnn-pytorch-master/VOCdevkit/VOC2007/Annotations/"
+                root_path = ".//VOCdevkit/VOC2007/Annotations/"
                 root = ET.parse(os.path.join(root_path + image_id+".xml")).getroot()
                 for obj in root.findall('object'):
                     difficult_flag = False

+ 4 - 2
predict.py

@@ -55,8 +55,10 @@ if __name__ == "__main__":
     #   
     #   dir_origin_path和dir_save_path仅在mode='dir_predict'时有效
     #-------------------------------------------------------------------------#
-    dir_origin_path = "/root/autodl-tmp/faster-rcnn-pytorch-master/VOCdevkit/VOC2007_wm_val/JPEGImages/"
-    dir_save_path   = "/root/autodl-tmp/faster-rcnn-pytorch-master/VOCdevkit/VOC2007_wm_val/JPEGImages_out/"
+    # dir_origin_path = "/root/autodl-tmp/faster-rcnn-pytorch-master/VOCdevkit/VOC2007_wm_val/JPEGImages/"
+    # dir_save_path   = "/root/autodl-tmp/faster-rcnn-pytorch-master/VOCdevkit/VOC2007_wm_val/JPEGImages_out/"
+    dir_origin_path = "./img"
+    dir_save_path   = "./img_out2"
 
 
     if mode == "predict":

+ 2 - 2
train.py

@@ -58,7 +58,7 @@ if __name__ == "__main__":
     #   classes_path    指向model_data下的txt,与自己训练的数据集相关 
     #                   训练前一定要修改classes_path,使其对应自己的数据集
     #---------------------------------------------------------------------#
-    classes_path    = '/root/autodl-tmp/faster-rcnn-pytorch-master/model_data/voc_classes.txt'
+    classes_path    = './/model_data/voc_classes.txt'
     #----------------------------------------------------------------------------------------------------------------------------#
     #   权值文件的下载请看README,可以通过网盘下载。模型的 预训练权重 对不同数据集是通用的,因为特征是通用的。
     #   模型的 预训练权重 比较重要的部分是 主干特征提取网络的权值部分,用于进行特征提取。
@@ -76,7 +76,7 @@ if __name__ == "__main__":
     #   一般来讲,网络从0开始的训练效果会很差,因为权值太过随机,特征提取效果不明显,因此非常、非常、非常不建议大家从0开始训练!
     #   如果一定要从0开始,可以了解imagenet数据集,首先训练分类模型,获得网络的主干部分权值,分类模型的 主干部分 和该模型通用,基于此进行训练。
     #----------------------------------------------------------------------------------------------------------------------------#
-    model_path      = '/root/autodl-tmp/faster-rcnn-pytorch-master/model_data/voc_weights_resnet.pth'
+    model_path      = './/model_data/voc_weights_resnet.pth'
     #------------------------------------------------------#
     #   input_shape     输入的shape大小
     #------------------------------------------------------#

+ 2 - 2
voc_annotation.py

@@ -18,7 +18,7 @@ annotation_mode     = 2
 #   那么就是因为classes没有设定正确
 #   仅在annotation_mode为0和2的时候有效
 #-------------------------------------------------------------------#
-classes_path        = "/root/autodl-tmp/faster-rcnn-pytorch-master/model_data/voc_classes.txt"
+classes_path        = ".//model_data/voc_classes.txt"
 #--------------------------------------------------------------------------------------------------------------------------------#
 #   trainval_percent用于指定(训练集+验证集)与测试集的比例,默认情况下 (训练集+验证集):测试集 = 9:1
 #   train_percent用于指定(训练集+验证集)中训练集与验证集的比例,默认情况下 训练集:验证集 = 9:1
@@ -30,7 +30,7 @@ train_percent       = 0.9
 #   指向VOC数据集所在的文件夹
 #   默认指向根目录下的VOC数据集
 #-------------------------------------------------------#
-VOCdevkit_path  = "/root/autodl-tmp/faster-rcnn-pytorch-master/VOCdevkit"
+VOCdevkit_path  = ".//VOCdevkit"
 
 VOCdevkit_sets  = [('2007', 'train'), ('2007', 'val')]
 classes, _      = get_classes(classes_path)

+ 3 - 3
watermarking.py

@@ -96,9 +96,9 @@ def modify_images_with_qrcodes(train_txt_path, original_voc_path, new_voc_path,
 if __name__ == '__main__':
     # 设定路径
     watermarking_dir = '/root/autodl-tmp/yolov5-6.1/datasets/watermarking'
-    dataset_txt_path = '/root/autodl-tmp/faster-rcnn-pytorch-master/2007_train_123.txt'
-    original_voc_path = '/root/autodl-tmp/faster-rcnn-pytorch-master/VOCdevkit/VOC2007_new'
-    new_voc_path = '/root/autodl-tmp/faster-rcnn-pytorch-master/VOCdevkit/VOC2007_wm'
+    dataset_txt_path = './/2007_train_123.txt'
+    original_voc_path = './/VOCdevkit/VOC2007_new'
+    new_voc_path = './/VOCdevkit/VOC2007_wm'
 
     # 修改图像以添加二维码水印并更新XML和train.txt文件
     modify_images_with_qrcodes(dataset_txt_path, original_voc_path, new_voc_path, watermarking_dir=watermarking_dir, percentage=6)