• 从无到有跑通KAPAO


    kapao工程:https://github.com/wmcnally/kapao

    论文地址:https://arxiv.org/abs/2111.08557

    由于之前没有接触过关键点的工作,所以我选择先下载作者提到的数据,将数据按照他要求的方式存放,然后通过运行的代码来查看整个工程的结果;

    使用kapao进行托盘目标检测和托盘目标的四个角点的检测;原理都还没有来得及查看,然后直接进行模型训练;

    处理过程的整体流程:

    1.将整个样本分成训练集和验证集合,通过txt文件,记载相关的的名字;

    1. """
    2. 将所有样本分拣为训练样本和测试样本
    3. """
    4. import argparse
    5. import os
    6. import math
    7. import random
    8. import shutil
    9. from tqdm import tqdm
    10. class Process:
    11. def __init__(self,args):
    12. self.imgs_dir = args.imgs_dir
    13. self.save_dir = args.save_dir
    14. self.ratio = args.ratio
    15. def check_path(self, chpath):
    16. if not os.path.exists(chpath):
    17. os.mkdir(chpath)
    18. def check_path_(self, chpath):
    19. if not os.path.exists(chpath):
    20. os.mkdir(chpath)
    21. else:
    22. paths = os.listdir(chpath)
    23. for path in paths:
    24. del_path = os.path.join(chpath, path)
    25. os.remove(del_path)
    26. def process_data(self):
    27. """
    28. 遍历所有文件夹随机挑取一定比例的样本作为测试样本,剩余的作为训练样本
    29. """
    30. paths = os.listdir(self.imgs_dir)
    31. txt_train = os.path.join(self.save_dir, 'trainval.txt')
    32. txt_test = os.path.join(self.save_dir, 'test.txt')
    33. f_train = open(txt_train, 'w', encoding='utf-8')
    34. f_test = open(txt_test, 'w', encoding='utf-8')
    35. num_paths = len(paths)
    36. test_num = math.floor(self.ratio*num_paths)
    37. list2 = [i for i in range(num_paths)]
    38. dic_num_path = {str(i): path for (i, path) in zip(range(num_paths), paths)}
    39. choice_num_list = random.sample(list2, test_num)
    40. for num_i, path in dic_num_path.items():
    41. img_path = dic_num_path[str(num_i)]
    42. old_img_path = os.path.join(self.imgs_dir, img_path)
    43. if int(num_i) in choice_num_list:
    44. f_test.write(old_img_path+'\n')
    45. else:
    46. f_train.write(old_img_path+'\n')
    47. f_test.close()
    48. f_train.close()
    49. def parse_args():
    50. parser = argparse.ArgumentParser()
    51. parser.add_argument('--imgs_dir',
    52. default='/home/XXXX/4tdisk/data/key_point/tray/ori/1672/imageset',
    53. help='图片文件所在文件夹')
    54. parser.add_argument('--save_dir',
    55. default='/home/XXXX/4tdisk/data/key_point/tray/process_ok/1672',
    56. help='结果存储路径'
    57. )
    58. parser.add_argument('--ratio',
    59. default=0.2,
    60. help='测试样本占所有图片的比例'
    61. )
    62. return parser.parse_args()
    63. def main(args):
    64. G = Process(args)
    65. G.process_data()
    66. if __name__ == '__main__':
    67. main(parse_args())
  • 相关阅读:
    DNS、HTTP与HTTPS
    搜索二叉树实现(非递归版本)
    Edge Drawing: A combined real-time edge and segment detector 翻译
    JVM学习三
    SpringMVC
    CodeWhisperer proxy代理连不上(解决)
    CentOS8部署Zabbix
    新概念英语第二册(88)
    【Http】大文件传输 | 与tcp的关系
    java的面向对象基础(1) —— 封装
  • 原文地址:https://blog.csdn.net/qq_22764813/article/details/126761775