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

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

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日

悬赏问题

  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统