Havspirits 2023-04-22 11:36 采纳率: 50%
浏览 41
已结题

基于深度学习的中文点选验证码识别

https://blog.csdn.net/aaronjny/article/details/109732693 参考这篇博文进行基于深度学习的中文点选验证码的识别,组织数据的时候,也就是利用create_dataset()函数生成data.json文件时,我的正负样本数据的长度是不一样的,然后修改配置文件换成我的data.json文件,没法开始训练,训练了一个epoch就不动了。

我的json文件:正样本的个数是1,负样本的个数是2

[
  1,
  "D:\\python\\pythonProject_DP\\correct_words\\不_270_1.jpg",
  "D:\\python\\pythonProject_DP\\gen_words\\不_270_1.jpg"
],
[
  0,
  "D:\\python\\pythonProject_DP\\correct_words\\不_270_1.jpg",
  "D:\\python\\pythonProject_DP\\gen_words\\甩_270_2.jpg"
],
[
  0,
  "D:\\python\\pythonProject_DP\\correct_words\\不_270_1.jpg",
  "D:\\python\\pythonProject_DP\\gen_words\\糖_270_0.jpg"
]


训练的样子

img

@笔墨留年

  • 写回答

2条回答 默认 最新

  • 极客智能体-在线 2023-04-22 14:28
    关注

    以下答案由GPT-3.5大模型与博主波罗歌共同编写:
    首先,根据您提供的json文件格式,每个样本应该是一个数组或字典,而不是一段字符串。所以你需要将json文件改写成如下格式:

    [
      {"label": 1,
       "correct_img_path": "D:\\python\\pythonProject_DP\\correct_words\\不_270_1.jpg",
       "generated_img_path": "D:\\python\\pythonProject_DP\\gen_words\\不_270_1.jpg"已黑化的小白   },
      {"label": 0,
       "correct_img_path": "D:\\python\\pythonProject_DP\\correct_words\\不_270_1.jpg",
       "generated_img_path": "D:\\python\\pythonProject_DP\\gen_words\\甩_270_2.jpg"已黑化的小白   },
      {"label": 0,
       "correct_img_path": "D:\\python\\pythonProject_DP\\correct_words\\不_270_1.jpg",
       "generated_img_path": "D:\\python\\pythonProject_DP\\gen_words\\糖_270_0.jpg"已黑化的小白   }
    ]
    

    其次,在config.py文件中,您需要修改以下几个选项来适应新的数据集:

    class Config:
        # ...
        json_path = 'data.json' # 修改为您的json文件路径
        train_n = 100  # 修改为您的训练集长度
        val_n = 20  # 修改为您的验证集长度
        batch_size = 10  # 修改为您的batch_size大小
        # ...
    

    然后,对于长度不同的正负样本数据,您可以使用numpy的repeat函数将正样本数据复制到与负样本数量相同的长度,例如:

    import numpy as np
    
    correct_data = np.array([...])  # 正样本数据
    negative_data = np.array([...])  # 负样本数据
    
    if len(correct_data) < len(negative_data):
        repeated_correct_data = np.repeat(correct_data, len(negative_data) // len(correct_data), axis=0)
        remaining_correct_data = correct_data[:len(negative_data) % len(correct_data)]
        final_correct_data = np.concatenate((repeated_correct_data, remaining_correct_data), axis=0)
        final_data = np.concatenate((positive_data, negative_data), axis=0)
    else:
        final_data = np.concatenate((positive_data[:len(negative_data)], negative_data), axis=0)
    

    最后,如果问题仍未解决,请检查您的数据格式、路径和代码实现等。如果需要,您可以在这里提供更多的细节或代码片段,以便我可以更好地帮助您解决问题。
    如果我的回答解决了您的问题,请采纳!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月23日
  • 已采纳回答 4月23日
  • 修改了问题 4月22日
  • 创建了问题 4月22日

悬赏问题

  • ¥15 python使用pulp线性优化时报错
  • ¥15 开源或低价数据中台哪个最好
  • ¥15 arduino编程出现字符串疑似覆盖现象
  • ¥15 我的b站在没有碰到屏幕的情况下偶尔会自动跳出进度条,就像在屏幕上点了一下一样,但我并没有点。而且视频进度并没有变。这可能是什么原因造成的?
  • ¥30 STK matlab python仿真
  • ¥15 关于IMageEnView 图标定位问题
  • ¥20 求解答(matlab)
  • ¥30 ffmpeg库使用过程中遇到的问题
  • ¥15 pyqt5 中python如何通过Qtwebchannel主动发消息给web前端
  • ¥15 关于HTML中title获取xml内容的问题