Closed YoonaIAN closed 1 year ago
您好,我想直接用您的权重预测DOTA数据集上的结果,是在demo上更改参数的位置,运行就可以吗?
demo.py是用来预测单张图像的例子,修改权重路径即可运行。test.py适用于测试完整的数据集结果并计算mAP用的,也是修改里面的权重路径即可。更多的测试参数,例如输入尺寸、阈值这些在config.py中修改。如果遇到任何bug,都可以在这里给我留言,我会尽快回复。谢谢。
你好,我想直接用你的权重预测 DOTA 数据集上的结果,是在演示上更改参数的位置,就可以运行了吗?
demo.py是使用单张重路径图像的例子,修改路径可以运行。test.py适用于测试完整的数据集结果并计算mAP用的,也是里面的重路径可操作。更多的测试如果遇到配置错误,都可以在这里给我留言,我会尽快回复。
好的,谢谢您。再请教您一个问题,我在安装dcnv2报这个错:error: command '/usr/bin/g++' failed with exit code 1是pytorch版本与dcnv2版本不对应吗?我的pytorch版本是1.12.1.
你好,我想直接用你的权重预测 DOTA 数据集上的结果,是在演示上更改参数的位置,就可以运行了吗?
demo.py是使用单张重路径图像的例子,修改路径可以运行。test.py适用于测试完整的数据集结果并计算mAP用的,也是里面的重路径可操作。更多的测试如果遇到配置错误,都可以在这里给我留言,我会尽快回复。
好的,谢谢您。再请教您一个问题,我在安装dcnv2报这个错:error: command '/usr/bin/g++' failed with exit code 1是pytorch版本与dcnv2版本不对应吗?我的pytorch版本是1.12.1.
不客气。对的,是DCN版本的问题,这个是旧版的,然后在我的主页里面有个1.11版本的DCN您可以试试看能不能用。如果都不行也没关系,您可以把代码中DCN的部分注释掉即可,GGHL里面没有用到,只是在跑NPMMR-Det模型的时候用的,注释掉这些即可。谢谢。
你好,我想直接用你的权重预测 DOTA 数据集上的运行结果,是在演示上更改参数的位置,就可以了吗?
demo.py是使用单张重路径图像的例子,修改路径可以运行。test.py适用于测试完整的数据集结果并计算mAP用的,也是里面的重路径可以操作。有错误,都可以在这里给我留言,我会尽快回复。
好,谢谢您。再请教一个问题,我在安装 dcnv2 时报此错误:error: command '/usr/bin/g++' failed with exit code 1 是 pytorch 版本与 dcnv2 版本不匹配吗?我的 pytorch 版本是1.12.1。
不客气。对的,是DCN的问题,这个是旧版的,然后在我的家里安装1.1版本的DCN你可以试试看不能用。如果没有行关系,你可以把代码中DCN的注释部分可以,GGHL里面没有掉掉模型只是在跑NPM-Det的时候用的,注释可以。谢谢。
谢谢您,感谢您百忙之中回复我的问题。我已经注释了DCN的部分,运行demo.py没有报错。有几个问题想请教一下: 1.我现在demo.py可以运行但是不知道怎么将可视化开启以及怎么得到预测结果的标签呢? 这是我的config以及demo设置: config.py:
DATA_PATH = 'data'#
PROJECT_PATH = "/home/handy/data/CZH/GGHL-main"
DATA = {"CLASSES": ['plane', 'baseball-diamond', 'bridge', 'ground-track-field', 'small-vehicle', 'large-vehicle', 'ship', 'tennis-court', 'basketball-court', 'storage-tank', 'soccer-ball-field', 'roundabout', 'harbor', 'swimming-pool', 'helicopter'], "NUM": 15}
DATASET_NAME = "test" MODEL = {"STRIDES":[8, 16, 32]}
MAX_LABEL = 1000 SHOW_HEATMAP = False SCALE_FACTOR = 2.0 SCALE_FACTOR_A = 2.0
TRAIN = { "EVAL_TYPE": 'VOC', "TRAIN_IMG_SIZE": 800, "TRAIN_IMG_NUM": 63182, "AUGMENT": True, "MULTI_SCALE_TRAIN": True, "MULTI_TRAIN_RANGE": [23, 28, 1], "BATCH_SIZE": 18, "IOU_THRESHOLD_LOSS": 0.6, "EPOCHS": 151, "NUMBER_WORKERS": 8, "MOMENTUM": 0.9, "WEIGHT_DECAY": 0.0005, "LR_INIT": 2e-4, "LR_END": 1e-6, "WARMUP_EPOCHS": 5, "IOU_TYPE": 'GIOU' }
TEST = { "EVAL_TYPE": 'dota', "EVAL_JSON": 'test.json', "EVAL_NAME": 'test', "NUM_VIS_IMG": 0, "TEST_IMG_SIZE": 800, "BATCH_SIZE": 4, "NUMBER_WORKERS": 8, "CONF_THRESH": 0.2, "NMS_THRESH": 0.45, "IOU_THRESHOLD": 0.5, "NMS_METHODS": 'NMS', "MULTI_SCALE_TEST": False, "MULTI_TEST_RANGE": [736, 864, 96], "FLIP_TEST": False } demo.py: import utils.gpu as gpu from modelR.GGHL import GGHL from tensorboardX import SummaryWriter from evalR.evaluator_demo import Evaluator import argparse import os import config.config as cfg import time import logging from utils.utils_coco import * from utils.log import Logger from torch.cuda import amp class Tester(object): def init(self, weight_path=None, gpu_id=0, visiual=True, eval=False): self.img_size = cfg.TEST["TEST_IMG_SIZE"] self.num_class = cfg.DATA["NUM"] self.conf_threshold = cfg.TEST["CONF_THRESH"] self.nms_threshold = cfg.TEST["NMS_THRESH"] self.__device = gpu.select_device(gpu_id, force_cpu=False) self.multi_scale_test = cfg.TEST["MULTI_SCALE_TEST"] self.flip_test = cfg.TEST["FLIP_TEST"] self.classes = cfg.DATA["CLASSES"]
self.__visiual = visiual
self.__eval = eval
self.__model = GGHL().eval().to(self.__device) # Single GPU
self.__load_model_weights(weight_path)
def __load_model_weights(self, weight_path):
print("loading weight file from : {}".format(weight_path))
weight = os.path.join(weight_path)
chkpt = torch.load(weight, map_location=self.__device)
self.__model.load_state_dict(chkpt) #['model']
del chkpt
def test(self):
img_id = '00007' #要测试的图像id
with torch.no_grad():
Evaluator(self.__model).Test_single_img(img_id)
if name == "main": global logger parser = argparse.ArgumentParser() parser.add_argument('--weight_path', type=str, default='GGHL_darknet53_fpn3_76.95.pt', help='weight file path') parser.add_argument('--log_val_path', type=str, default='log/', help='weight file path') parser.add_argument('--visiual', type=str, default=True, help='test data path or None') parser.add_argument('--eval', action='store_true', default=True, help='eval flag') parser.add_argument('--gpu_id', type=int, default=0, help='gpu id') parser.add_argument('--log_path', type=str, default='log/', help='log path') opt = parser.parse_args() writer = SummaryWriter(logdir=opt.log_path + '/event') logger = Logger(log_file_name=opt.log_val_path + '/log_test.txt', log_level=logging.DEBUG, logger_name='GGHL').get_log()
Tester(weight_path=opt.weight_path, gpu_id=opt.gpu_id, eval=opt.eval, visiual=opt.visiual).test()
2.这个demo.py是只能检测一张图片吗?不能检测一个文件夹吗?
o.py可以运行但是不知道怎么将可视化开启以及怎么得到预测结果的标签呢? 这是我的config以及demo设置
检测整个文件夹是用的test.py那个,您试试看能不能运行,结果保存在predictionR文件夹下,在那个文件夹里面新建一个imgs文件夹即可。 这是写入预测结果txt的代码,在evaluatorGGHL.py里面,是test.py调用的,您也许需要换成test.py来运行。demo.py没有这部分只是用来测试单个图像用的。
保存图像结果的代码在这里(demo.py和test.py是一样的这部分), 也就是下面这一行 store_path = os.path.join(self.pred_result_path, 'imgs', img_id + '.png') #保存结果路径 我上传的时候把imgs这个文件夹删掉了,您新建一个即可。
o.py可以运行但是不知道怎么将可视化开启以及怎么得到预测结果的标签呢? 这是我的config以及demo设置
检测整个文件夹是用的test.py那个,您试试看能不能运行,结果保存在predictionR文件夹下,在那个文件夹里面新建一个imgs文件夹即可。 这是写入预测结果txt的代码,在evaluatorGGHL.py里面,是test.py调用的,您也许需要换成test.py来运行。demo.py没有这部分只是用来测试单个图像用的。
保存图像结果的代码在这里(demo.py和test.py是一样的这部分), 也就是下面这一行 store_path = os.path.join(self.pred_result_path, 'imgs', img_id + '.png') #保存结果路径 我上传的时候把imgs这个文件夹删掉了,您新建一个即可。
谢谢您,我已经可以得到单张图片的检测结果了,但是还有一些小问题,麻烦您了: 1.我已经在predictionr新建了一个imgs文件,运行test.py没有报错但是没有对一个文件夹的检测:
这是我在config设置的参数: DATA_PATH = "/home/handy/data/CZH/GGHL-main/data"#
PROJECT_PATH = "/home/handy/data/CZH/GGHL-main" DATASET_NAME = "JPEGImages" MODEL = {"STRIDES":[8, 16, 32]} 这个是我的DOTA数据集的文件: 不知道是不是我这个标签的格式有问题: imagesource:GoogleEarth gsd:0.146343590398 2753 2408 2861 2385 2888 2468 2805 2502 plane 0 3445 3391 3484 3409 3478 3422 3437 3402 large-vehicle 0 3185 4158 3195 4161 3175 4204 3164 4199 large-vehicle 0 2870 4250 2916 4268 2912 4283 2866 4263 large-vehicle 0 630 1674 628 1666 640 1654 644 1666 small-vehicle 0 636 1713 633 1706 646 1698 650 1706 small-vehicle 0 717 76 726 78 722 95 714 90 small-vehicle 0 737 82 744 84 739 101 731 98 small-vehicle 0 658 242 648 237 657 222 667 225 small-vehicle 1 735 122 754 129 750 136 733 128 small-vehicle 0 2.我在制作训练集标签的时候是这样的,不知道这样是否有错? 用DOTA工具包先把DOTA图像和标签裁剪,之后用DOTA2Train.py生成txt文件: 既然生成的这个文件有标签信息是否意味着训练的时候就是读取这个txt文件就好了? 我在运行DOTA2Train.py的时候,代码第六行的store_path路径似乎没有用到?
o.py可以运行但是不知道怎么将可视化开启以及怎么得到预测结果的标签呢? 这是我的config以及demo设置
检测整个文件夹是用的test.py那个,您试试看能不能运行,结果保存在predictionR文件夹下,在那个文件夹里面新建一个imgs文件夹即可。 这是写入预测结果txt的代码,在evaluatorGGHL.py里面,是test.py调用的,您也许需要换成test.py来运行。demo.py没有这部分只是用来测试单个图像用的。 保存图像结果的代码在这里(demo.py和test.py是一样的这部分), 也就是下面这一行 store_path = os.path.join(self.pred_result_path, 'imgs', img_id + '.png') #保存结果路径 我上传的时候把imgs这个文件夹删掉了,您新建一个即可。
谢谢您,我已经可以得到单张图片的检测结果了,但是还有一些小问题,麻烦您了: 1.我已经在predictionr新建了一个imgs文件,运行test.py没有报错但是没有对一个文件夹的检测:
这是我在config设置的参数: DATA_PATH = "/home/handy/data/CZH/GGHL-main/data"# #DATA_PATH = 'F:/Datasets/DroneVehicle/test/' #DATA_PATH = "/opt/datasets/DOTA/" PROJECT_PATH = "/home/handy/data/CZH/GGHL-main" DATASET_NAME = "JPEGImages" MODEL = {"STRIDES":[8, 16, 32]} 这个是我的DOTA数据集的文件: 不知道是不是我这个标签的格式有问题: imagesource:GoogleEarth gsd:0.146343590398 2753 2408 2861 2385 2888 2468 2805 2502 plane 0 3445 3391 3484 3409 3478 3422 3437 3402 large-vehicle 0 3185 4158 3195 4161 3175 4204 3164 4199 large-vehicle 0 2870 4250 2916 4268 2912 4283 2866 4263 large-vehicle 0 630 1674 628 1666 640 1654 644 1666 small-vehicle 0 636 1713 633 1706 646 1698 650 1706 small-vehicle 0 717 76 726 78 722 95 714 90 small-vehicle 0 737 82 744 84 739 101 731 98 small-vehicle 0 658 242 648 237 657 222 667 225 small-vehicle 1 735 122 754 129 750 136 733 128 small-vehicle 0 2.我在制作训练集标签的时候是这样的,不知道这样是否有错? 用DOTA工具包先把DOTA图像和标签裁剪,之后用DOTA2Train.py生成txt文件: 既然生成的这个文件有标签信息是否意味着训练的时候就是读取这个txt文件就好了? 我在运行DOTA2Train.py的时候,代码第六行的store_path路径似乎没有用到? 🦞 🦀🦞 🦀🦞 🦀🦞 🦀🦞 🦀🦞 🦀🦞 🦀🦞 🦀🦞 🦀🦞 🦀🦞 🦀🦞 🦀
- 这个是标签格式的问题,也就是这个的格式不对欸 需要转换成这样: 第一个是类别ID,后面是八个坐标
2.训练转换没错,直接用这个txt就行了
您再试试看现在用新转换后的测试标签可以了吗?谢谢。
o.py可以运行但是不知道怎么将可视化开启以及怎么得到预测结果的标签呢? 这是我的config以及demo设置
检测整个文件夹是用的test.py那个,您试试看能不能运行,结果保存在predictionR文件夹下,在那个文件夹里面新建一个imgs文件夹即可。 这是写入预测结果txt的代码,在evaluatorGGHL.py里面,是test.py调用的,您也许需要换成test.py来运行。demo.py没有这部分只是用来测试单个图像用的。 保存图像结果的代码在这里(demo.py和test.py是一样的这部分), 也就是下面这一行 store_path = os.path.join(self.pred_result_path, 'imgs', img_id + '.png') #保存结果路径 我上传的时候把imgs这个文件夹删掉了,您新建一个即可。
谢谢您,我已经可以得到单张图片的检测结果了,但是还有一些小问题,麻烦您了: 1.我已经在predictionr新建了一个imgs文件,运行test.py没有报错但是没有对一个文件夹的检测: 这是我在config设置的参数: DATA_PATH = "/home/handy/data/CZH/GGHL-main/data"# #DATA_PATH = 'F:/Datasets/DroneVehicle/test/' #DATA_PATH = "/opt/datasets/DOTA/" PROJECT_PATH = "/home/handy/data/CZH/GGHL-main" DATASET_NAME = "JPEGImages" MODEL = {"STRIDES":[8, 16, 32]} 这个是我的DOTA数据集的文件: 不知道是不是我这个标签的格式有问题: imagesource:GoogleEarth gsd:0.146343590398 2753 2408 2861 2385 2888 2468 2805 2502 plane 0 3445 3391 3484 3409 3478 3422 3437 3402 large-vehicle 0 3185 4158 3195 4161 3175 4204 3164 4199 large-vehicle 0 2870 4250 2916 4268 2912 4283 2866 4263 large-vehicle 0 630 1674 628 1666 640 1654 644 1666 small-vehicle 0 636 1713 633 1706 646 1698 650 1706 small-vehicle 0 717 76 726 78 722 95 714 90 small-vehicle 0 737 82 744 84 739 101 731 98 small-vehicle 0 658 242 648 237 657 222 667 225 small-vehicle 1 735 122 754 129 750 136 733 128 small-vehicle 0 2.我在制作训练集标签的时候是这样的,不知道这样是否有错? 用DOTA工具包先把DOTA图像和标签裁剪,之后用DOTA2Train.py生成txt文件: 既然生成的这个文件有标签信息是否意味着训练的时候就是读取这个txt文件就好了? 我在运行DOTA2Train.py的时候,代码第六行的store_path路径似乎没有用到? 🦞 🦀🦞 🦀🦞 🦀🦞 🦀🦞 🦀🦞 🦀🦞 🦀🦞 🦀🦞 🦀🦞 🦀🦞 🦀🦞 🦀
- 这个是标签格式的问题,也就是这个的格式不对欸 需要转换成这样: 第一个是类别ID,后面是八个坐标
2.训练转换没错,直接用这个txt就行了
- store那个没用到,就是和第1个问题有关系,这里本来有一个转换成新测试标签的代码,这个路径就是用来存这个的 后来更新的时候好像被我不小心替换掉了,我更新一下 就是加上这个就行
您再试试看现在用新转换后的测试标签可以了吗?谢谢。
谢谢您百忙之中回复我的问题,我试下看还有没有什么问题。
谢谢您百忙之中回复我的问题,我试下看还有没有什么问题。
不客气,有啥情况随时可以交流~
谢谢您百忙之中回复我的问题,我试下看还有没有什么问题。
不客气,有啥情况随时可以交流~
很抱歉要打扰您一下, 1.我用您更新的代码去运行DOTA2Train.py已经可以得到训练和验证的标签。 这是我存放DOTA数据集的文件: 我用于验证的标签已经是正确的,为什么运行工test.py还是没有生成结果呢?如果是正确的话,是在predictionR/imgs有检测的结果以及预测的标签和map吗? 2.我把正确的train.txt放在dataR里面,但是训练报错,是因为我还有什么参数没有设置吗?
面,但是训练报错,是因为我还有什么参数
谢谢您百忙之中回复我的问题,我试下看还有没有什么问题。
不客气,有啥情况随时可以交流~
很抱歉要打扰您一下, 1.我用您更新的代码去运行DOTA2Train.py已经可以得到训练和验证的标签。 这是我存放DOTA数据集的文件: 我用于验证的标签已经是正确的,为什么运行工test.py还是没有生成结果呢?如果是正确的话,是在predictionR/imgs有检测的结果以及预测的标签和map吗? 2.我把正确的train.txt放在dataR里面,但是训练报错,是因为我还有什么参数没有设置吗?
抱歉刚看到,最近几天有点忙。 第2个问题,修改train_GGHL.py里面的 把true改成false,false表示从头开始训练,也就是预训练开始,true表示断点继续训练,从last.pt开始
第一个问题我没遇到过,您看看这里,evaluator_GGHL里面,测试图片加载进来的路径对不对 然后看看同一个文件的这里 保存的路径和文件夹是否存在,我感觉可能是加载测试图片没加载进来
谢谢
面,但是训练报错,是因为我还有什么参数
谢谢您百忙之中回复我的问题,我试下看还有没有什么问题。
不客气,有啥情况随时可以交流~
很抱歉要打扰您一下, 1.我用您更新的代码去运行DOTA2Train.py已经可以得到训练和验证的标签。 这是我存放DOTA数据集的文件: 我用于验证的标签已经是正确的,为什么运行工test.py还是没有生成结果呢?如果是正确的话,是在predictionR/imgs有检测的结果以及预测的标签和map吗? 2.我把正确的train.txt放在dataR里面,但是训练报错,是因为我还有什么参数没有设置吗?
抱歉刚看到,最近几天有点忙。 第2个问题,修改train_GGHL.py里面的 把true改成false,false表示从头开始训练,也就是预训练开始,true表示断点继续训练,从last.pt开始
第一个问题我没遇到过,您看看这里,evaluator_GGHL里面,测试图片加载进来的路径对不对 然后看看同一个文件的这里 保存的路径和文件夹是否存在,我感觉可能是加载测试图片没加载进来
谢谢
您好,谢谢您这么忙还有空回复我的问题。 1.我按照您的解答现在是可以运行test.py,可以检测一个文件夹的图片,但是在运行test.py测map会报错。 ![F4ABCCCE737BD5C26A6874DD5F190E2C](https://user-images.githubusercontent.com/90537574/196073346-f4c1f937-7d11-4b27-84a9-480865dc90cb.jpg VOC文件夹下的ship.txt是预测的标签,但是为什么会报错没有plane.txt文件呢?预测出来没有飞机这个类别,真实值的标签也没有飞机这个类别。 2.训练的时候报这个错误是为什么呢?我已经改成从0开始训练了。
面,但是训练报错,是因为我还有什么参数
谢谢您百忙之中回复我的问题,我试下看还有没有什么问题。
不客气,有啥情况随时可以交流~
很抱歉要打扰您一下, 1.我用您更新的代码去运行DOTA2Train.py已经可以得到训练和验证的标签。 这是我存放DOTA数据集的文件: 我用于验证的标签已经是正确的,为什么运行工test.py还是没有生成结果呢?如果是正确的话,是在predictionR/imgs有检测的结果以及预测的标签和map吗? 2.我把正确的train.txt放在dataR里面,但是训练报错,是因为我还有什么参数没有设置吗?
抱歉刚看到,最近几天有点忙。 第2个问题,修改train_GGHL.py里面的 把true改成false,false表示从头开始训练,也就是预训练开始,true表示断点继续训练,从last.pt开始 第一个问题我没遇到过,您看看这里,evaluator_GGHL里面,测试图片加载进来的路径对不对 然后看看同一个文件的这里 保存的路径和文件夹是否存在,我感觉可能是加载测试图片没加载进来 谢谢
您好,谢谢您这么忙还有空回复我的问题。 1.我按照您的解答现在是可以运行test.py,可以检测一个文件夹的图片,但是在运行test.py测map会报错。 ![F4ABCCCE737BD5C26A6874DD5F190E2C](https://user-images.githubusercontent.com/90537574/196073346-f4c1f937-7d11-4b27-84a9-480865dc90cb.jpg VOC文件夹下的ship.txt是预测的标签,但是为什么会报错没有plane.txt文件呢?预测出来没有飞机这个类别,真实值的标签也没有飞机这个类别。 2.训练的时候报这个错误是为什么呢?我已经改成从0开始训练了。
请问您是跑的哪个数据集?您自己的吗?在config文件里面,这里的类别和数据集要改成您那边对应的,现在这个是按15类的DOTA写的。谢谢。
您好,我的数据集是DOTA1.0的,我把config.py换成DOTA1.0的类别还是报那样的错误。
您好,我的数据集是DOTA1.0的,我把config.py换成DOTA1.0的类别还是报那样的错误。
嗯嗯,那么好像没检测到飞机欸?您能否看看可视化的结果对不对,然后能不能将转换好的训练数据集txt截个图我康康对不对。谢谢
你好,我的数据是DOTA1.0的,我把config.py换成DOTA1.0的类别还是报那样的错误。
嗯嗯,那么飞机检测到欸?你没能训练好数据能看到康康的结果对不对,我不能将转换转换成对不对。谢谢。
您好, 1.这是我转换的训练的txt,我已经把它放在dataR下了
2.这是我test的真实值的TXT: test之后生成的文件有这些: 不知道为什么会有飞机?
你好,我的数据是DOTA1.0的,我把config.py换成DOTA1.0的类别还是报那样的错误。
嗯嗯,那么飞机检测到欸?你没能训练好数据能看到康康的结果对不对,我不能将转换转换成对不对。谢谢。
您好, 1.这是我转换的训练的txt,我已经把它放在dataR下了
2.这是我test的真实值的TXT: test之后生成的文件有这些: 不知道为什么会有飞机?
收到,谢谢。训练是能收敛的对吧?我一会儿测试一下evaluatorGGHL.py有没有bug。 另外,请问您测试的数据是完整的DOTA数据还是从中挑选的一部分数据?eval这里有个bug是需要15个类别的目标都被检测到,voc文件夹下生成了15个“类别.txt”才能计算mAP,不知道会不会是这里的bug。 还有就是请问可视化的结果对吗?可视化就是错的还是可以正确可视化?
您好,我想直接用您的权重预测DOTA数据集上的结果,是在demo上更改参数的位置,运行就可以吗?