V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Richard14
V2EX  ›  问与答

想要训练输出像素的神经网络,具体实现上是怎么样的?

  •  
  •   Richard14 · 2022-05-10 21:10:38 +08:00 · 1699 次点击
    这是一个创建于 687 天前的主题,其中的信息可能已经有所发展或是发生改变。

    深度学习入门教材里看了蛮多分类,还有线性回归之类的例子,比如一个神经网络做成 10 个输出,这个很好理解,但是比如想要实现自动识别并涂白漫画的对话框这种,需要输出一个跟原图一样大的图片,它的输出和评价效果的函数应该怎么设计呢?论坛老哥们有没有什么好上手的例子推荐的,不是很理解这个过程。

    15 条回复    2022-05-20 16:47:02 +08:00
    Ediacaran
        1
    Ediacaran  
       2022-05-10 21:13:22 +08:00
    像素标注?识别目标并识别出所有目标所在像素
    lonewolfakela
        3
    lonewolfakela  
       2022-05-10 21:30:35 +08:00
    当然上述的 GAN 适合诸如“生成人脸”这种比较倾向于彻底“无中生有”的任务……像你说的那种涂白之类的对原图做一些小修改的模型,可能会更适合用生成结果和标准答案求 PSNR 或者类似的东西作为损失函数直接训
    zcf0508
        4
    zcf0508  
       2022-05-10 22:12:19 +08:00
    直接用原图和一张标记了对话框的黑白二值图做训练就可以了,损失用分类交叉熵,不过如果你要求精度的话可能会需要比较大量的图片。
    Richard14
        5
    Richard14  
    OP
       2022-05-11 02:27:36 +08:00
    @zcf0508 分类交叉熵是指,比如一般漫画现在都是 800 万或者 1000 万像素一张图,然后那么神经网络输出 800 万结果然后做交叉熵这种感觉吗?

    @lonewolfakela psnr 这类在 torch 里有自带的实现么,还是要我自己去实现,感觉很难搞啊
    Liyiw
        6
    Liyiw  
       2022-05-11 07:27:38 +08:00
    你需要的是 gan
    zcf0508
        7
    zcf0508  
       2022-05-11 09:56:22 +08:00
    @Richard14 是的,你可以理解成给这 800 万的每个像素点做分类。但是这个精度实在太高了,你还是需要把图片压缩到合理的精度,比如 224px 宽度,然后再去做训练,最后再把结果放大会 800 万像素的精度。
    Richard14
        8
    Richard14  
    OP
       2022-05-11 22:10:44 +08:00
    @zcf0508 现在想要实现的效果就是把漫画对话框自动涂白(并且普适性强一些,网上漫画很多不是数字版),感觉缩到 224 再放大的方案不太能满足需求,边缘处理的不是很好,我的 cv 方面的知识也不知道有什么可以配套的算法能做到放大后再提高精度
    shm7
        9
    shm7  
       2022-05-19 16:50:00 +08:00
    干 GAN !
    ppppppp123
        10
    ppppppp123  
       2022-05-19 21:03:52 +08:00
    漫画对话框自动涂白 这个是为了啥?不明白楼主的用意,我对这个应用场景倒是很好奇的。
    ruxuan1306
        11
    ruxuan1306  
       2022-05-19 21:08:39 +08:00
    不用 GAN 那么端到端,我感觉是一个目标检测或语义分割任务,网络只负责输出文字区域,之后其它程序涂白即可。

    https://github.com/facebookresearch/detectron2
    https://github.com/PaddlePaddle/PaddleHub/blob/release/v2.2/modules/README_ch.md#%E5%9B%BE%E5%83%8F
    c0xt30a
        12
    c0xt30a  
       2022-05-19 23:14:26 +08:00
    自己手工标注几千张估计就差不多能训练了吧。你的网络输入是这张图片,输出可以是同样大小的只有 0 和 1 两种数值的图片。
    网络很简单,感觉随便一个 U-Net 或者 U-Net++ 就可以了。
    输出可以先试试交叉熵。表现不好的话再试下 weighted cross entropy ,balanced cross entropy , focal loss 之类的。
    如果上边 distribution based loss 表现不行的话,还有 region based loss/boundary based loss/compounded loss 等等在等着你去尝试。
    Richard14
        13
    Richard14  
    OP
       2022-05-20 11:26:09 +08:00
    @ppppppp123 这有什么不明白的,太常见的需求了,日文漫画涂白换成中文啊
    ppppppp123
        14
    ppppppp123  
       2022-05-20 15:10:23 +08:00
    @Richard14 我知道了,是生番的本地化是吧?
    InvincibleDream
        15
    InvincibleDream  
       2022-05-20 16:47:02 +08:00
    建议查询一下图像语义分割相关工作
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3818 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 10:34 · PVG 18:34 · LAX 03:34 · JFK 06:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.