免责声明-Google Deep Dream - Use classes to "control dreams":相关,但是它不会使这个问题无效(我希望),因为我(天真的)想重新训练网络,所以我比他们更困惑,问题是还开着。在特定的类别中,我的意思是猫,在图像上是指人的图像(但是,如果它在一般情况下可以工作,那就更好了),而且我听说AlexNet更简单,所以我去研究它。
(Windows 7,低于标准的GPU(GTX 860M;计算能力为5.0,所以请不要灰心),很多时间,机器学习新手)
我想做的是让Deep Dream照常做,但要代替建筑物,鱼类,人等,我只希望它在图像中创建猫(理想情况下,能够用上的人)。
我做了什么:只用猫图片训练了一个网络(用于训练和测试的设置不同,但是train.txt和test.txt中只有0类,而train_val.prototxt中的num_output:1类),我不敢看到在Deep Dream中可能会做些什么(可能只是随机噪音?idk)。
我的猜测是,我需要训练网络以识别猫和人,然后最大程度地激活猫。我猜这涉及改变与猫相关的神经元的重量。
Anaconda,CUDA(带有CuDNN),Caffe和Deep Dream似乎都可以正常运行,但是我几乎不知道如何正确地使用它们。在this tutorial之后,我猜只是为了区分猫和狗,我设法进行了caffe训练,没有出现致命的错误……但是网络实际上并没有学到任何有用的东西(我认为)。无论如何,我的问题是:
有没有一种方法可以仅在某个地方更改值,以便bvlc_googlenet仅在我提供的任何图像中都能找到猫? (尽管不是主要问题。)
训练一个可与Deep Dream一起使用的网络,以识别带有人像的图像中的猫(但不能识别人,鱼,建筑物或其他物体),主要是这些图像[BTW,碰巧我有几百张我和我的朋友的照片,这是我真正感兴趣的],我需要什么样的训练和测试数据(各种图像(人,猫,狗,风景) ,图片数量,在训练和测试中猫与非猫的比例等?
train.txt和test.txt应该是什么样的?他们应该有相同数量的课程吗?我应该跳过其中一个课程吗?在train.txt和test.txt中设置类的规则是什么?
我应该如何更改num_output(本教程告诉我仅针对fc8层修改此值)?
solver.prototxt应该使用8GB的RAM和2GB的VRAM系统进行哪些配置?默认是荒谬的,所以我做了(换行)(不是完整文件)lr_policy:“ step”; test_iter:100; test_interval:500;步长:2500(当前仅使用5000张图像,所有猫); max_iter:10000; iter_size:5;重量衰减:0.004; [对于train_val.prototxt中的两个数据层] batch_size:10。 GPU-Z告诉我我仅使用1GB的VRAM。
测试网每个班级应该有2个输出(准确性和损失)吗?和火车网,每节课只有1(亏损)吗? (只有猫,我分别得到2和1)
我真的需要AlexNet的deploy.prototxt吗?该教程没有提及它,我认为文档说它只是train_val.prototxt的副本?
我将如何最大程度地激活猫? (可能与第一个问题有关)
另外,请指出我的设置中的任何明显错误(除了只拥有猫的图像,因为我认为这是合乎逻辑的),与tutorial’s基本相同。
用于创建train.txt和test.txt的python脚本(只列出所有图像,将它们划分在train.txt和test.txt之间,并添加适当的类号[在我的情况下,保证0%的损失:D] )-> convert_imageset.exe创建lmdb文件夹---> compute_image_mean.exe创建平均图像---> caffe训练调用不会导致致命的异常,主要是因为它实际上没有做任何有用的事情
(如果您需要文件/更多信息,请询问。)