(下载的时候没有提示 不知道是正在下 还是出现错误 卡着了)。。一直没有反应

下载前要以管理员身份运行 sudo su 再 python examples/finetune_flickr_style/assemble_data.py --workers=1 --images=2000 --seed 831486

或者在命令前加sudo

参考了 http://blog.csdn.net/lujiandong1/article/details/50495454

在使用这个教程时,主要遇到了两个问题:

1、数据下不下来。

  1. python examples/finetune_flickr_style/assemble_data.py --workers=1 --images=2000 --seed 831486

运行上述指令时,程序莫名其妙就不动了,也不下载文件,程序也没有挂掉,好像进入了死锁状态。

查看源程序:assemble_data.py,可以看出assemble_data.py用了大量多线程,多进程。我的解决方案就是改源程序,不使用进程来下载了。并且,对下载进行了超时限定,超过6s就认为超时,进而不下载。

====================================================================================================

assemble_data.py中使用多线程,多进程的源代码如下:

  1. pool = multiprocessing.Pool(processes=num_workers)
  2. map_args = zip(df['image_url'], df['image_filename'])
  3. results = pool.map(download_image, map_args)

===================================================================================================

我修改后的源码如下:

  1. #!/usr/bin/env python3
  2. """
  3. Form a subset of the Flickr Style data, download images to dirname, and write
  4. Caffe ImagesDataLayer training file.
  5. """
  6. import os
  7. import urllib
  8. import hashlib
  9. import argparse
  10. import numpy as np
  11. import pandas as pd
  12. from skimage import io
  13. import multiprocessing
  14. import socket
  15. # Flickr returns a special image if the request is unavailable.
  16. MISSING_IMAGE_SHA1 = '6a92790b1c2a301c6e7ddef645dca1f53ea97ac2'
  17. example_dirname = os.path.abspath(os.path.dirname(__file__))
  18. caffe_dirname = os.path.abspath(os.path.join(example_dirname, '../..'))
  19. training_dirname = os.path.join(caffe_dirname, 'data/flickr_style')
  20. def download_image(args_tuple):
  21. "For use with multiprocessing map. Returns filename on fail."
  22. try:
  23. url, filename = args_tuple
  24. if not os.path.exists(filename):
  25. urllib.urlretrieve(url, filename)
  26. with open(filename) as f:
  27. assert hashlib.sha1(f.read()).hexdigest() != MISSING_IMAGE_SHA1
  28. test_read_image = io.imread(filename)
  29. return True
  30. except KeyboardInterrupt:
  31. raise Exception()  # multiprocessing doesn't catch keyboard exceptions
  32. except:
  33. return False
  34. def mydownload_image(args_tuple):
  35. "For use with multiprocessing map. Returns filename on fail."
  36. try:
  37. url, filename = args_tuple
  38. if not os.path.exists(filename):
  39. urllib.urlretrieve(url, filename)
  40. with open(filename) as f:
  41. assert hashlib.sha1(f.read()).hexdigest() != MISSING_IMAGE_SHA1
  42. test_read_image = io.imread(filename)
  43. return True
  44. except KeyboardInterrupt:
  45. raise Exception()  # multiprocessing doesn't catch keyboard exceptions
  46. except:
  47. return False
  48. if __name__ == '__main__':
  49. parser = argparse.ArgumentParser(
  50. description='Download a subset of Flickr Style to a directory')
  51. parser.add_argument(
  52. '-s', '--seed', type=int, default=0,
  53. help="random seed")
  54. parser.add_argument(
  55. '-i', '--images', type=int, default=-1,
  56. help="number of images to use (-1 for all [default])",
  57. )
  58. parser.add_argument(
  59. '-w', '--workers', type=int, default=-1,
  60. help="num workers used to download images. -x uses (all - x) cores [-1 default]."
  61. )
  62. parser.add_argument(
  63. '-l', '--labels', type=int, default=0,
  64. help="if set to a positive value, only sample images from the first number of labels."
  65. )
  66. args = parser.parse_args()
  67. np.random.seed(args.seed)
  68. # Read data, shuffle order, and subsample.
  69. csv_filename = os.path.join(example_dirname, 'flickr_style.csv.gz')
  70. df = pd.read_csv(csv_filename, index_col=0, compression='gzip')
  71. df = df.iloc[np.random.permutation(df.shape[0])]
  72. if args.labels > 0:
  73. df = df.loc[df['label'] < args.labels]
  74. if args.images > 0 and args.images < df.shape[0]:
  75. df = df.iloc[:args.images]
  76. # Make directory for images and get local filenames.
  77. if training_dirname is None:
  78. training_dirname = os.path.join(caffe_dirname, 'data/flickr_style')
  79. images_dirname = os.path.join(training_dirname, 'images')
  80. if not os.path.exists(images_dirname):
  81. os.makedirs(images_dirname)
  82. df['image_filename'] = [
  83. os.path.join(images_dirname, _.split('/')[-1]) for _ in df['image_url']
  84. ]
  85. # Download images.
  86. num_workers = args.workers
  87. if num_workers <= 0:
  88. num_workers = multiprocessing.cpu_count() + num_workers
  89. print('Downloading {} images with {} workers...'.format(
  90. df.shape[0], num_workers))
  91. #pool = multiprocessing.Pool(processes=num_workers)
  92. map_args = zip(df['image_url'], df['image_filename'])
  93. #results = pool.map(download_image, map_args)
  94. socket.setdefaulttimeout(6)
  95. results = []
  96. for item in map_args:
  97. value = mydownload_image(item)
  98. results.append(value)
  99. if value == False:
  100. print 'Flase'
  101. else:
  102. print '1'
  103. # Only keep rows with valid images, and write out training file lists.
  104. print len(results)
  105. df = df[results]
  106. for split in ['train', 'test']:
  107. split_df = df[df['_split'] == split]
  108. filename = os.path.join(training_dirname, '{}.txt'.format(split))
  109. split_df[['image_filename', 'label']].to_csv(
  110. filename, sep=' ', header=None, index=None)
  111. print('Writing train/val for {} successfully downloaded images.'.format(
  112. df.shape[0]))
 

修改主要有以下几点:

1、#!/usr/bin/env python3 使用python3

2、

  1. #pool = multiprocessing.Pool(processes=num_workers)
  2. map_args = zip(df['image_url'], df['image_filename'])
  3. #results = pool.map(download_image, map_args)
  4. socket.setdefaulttimeout(6)
  5. results = []
  6. for item in map_args:
  7. value = mydownload_image(item)
  8. results.append(value)
  9. if value == False:
  10. print 'Flase'
  11. else:
  12. print '1'
  13. # Only keep rows with valid images, and write out training file lists.
  14. print len(results)

只使用单线程下载,不使用多线程,多进程下载。并且,设定连接的超时时间为6s,socket.setdefaulttimeout(6)。

经过上述改进,就可以把数据下载下来。

===================================================================================================

2、

在运行命令:

  1. ./build/tools/caffe train -solver models/finetune_flickr_style/solver.prototxt -weights models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel

时遇到错误:

Failed to parse NetParameter file: models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel

出错的原因是我们传入的数据bvlc_reference_caffenet.caffemodel 并不是二进制的。

原因:因为我是在win7下,把bvlc_reference_caffenet.caffemodel下载下来,再使用winSCP传输到服务器上,直接在服务器上使用wget下载,速度太慢了,但是在传输的过程中winSCP就把bvlc_reference_caffenet.caffemodel的格式给篡改了,导致bvlc_reference_caffenet.caffemodel不是二进制的。

解决方案,把winSCP的传输格式设置成二进制,那么就可以解决这个问题。

详情见博客:http://blog.chinaunix.net/uid-20332519-id-5585964.html

Fine-tuning CaffeNet for Style Recognition on “Flickr Style” Data 数据下载遇到的问题的更多相关文章

  1. CaffeNet用于Flickr Style数据集上的风格识别

    转自 http://blog.csdn.net/liumaolincycle/article/details/48501423 微调是基于已经学习好的模型的,通过修改结构,从已学习好的模型权重中继续训 ...

  2. (原)caffe中fine tuning及使用snapshot时的sh命令

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5946041.html 参考网址: http://caffe.berkeleyvision.org/tu ...

  3. Fine Tuning

    (转载自:WikiPedia) Fine tuning is a process to take a network model that has already been trained for a ...

  4. L23模型微调fine tuning

    resnet185352 链接:https://pan.baidu.com/s/1EZs9XVUjUf1MzaKYbJlcSA 提取码:axd1 9.2 微调 在前面的一些章节中,我们介绍了如何在只有 ...

  5. style="visibility: hidden" 和 style=“display:none”区别

    大多数人很容易将CSS属性display和visibility混淆,它们看似没有什么不同,其实它们的差别却是很大的. visibility属性用来确定元素是显示还是隐藏的,这用visibility=& ...

  6. Html style="visibility:hidden"与style="display:none"的区别

    style="visibility:hidden": 使对象在网页上隐藏,但该对象在网页上所占的空间没有改变. style="display:none": 使对 ...

  7. ckplayer 中的style.swf 中的 style.xml 中的修改方法

    style.swf ---- > style.zip ---- > 解压成文件夹 ---- > 打开style.xml ---- > 修改 最重要的是修改保存style.xml ...

  8. matplotlib 可视化 —— 定制画布风格 Customizing plots with style sheets(plt.style)

    Customizing plots with style sheets - Matplotlib 1.5.1 documentation 1. 使用和显示其他画布风格 >> import ...

  9. style="visibility: hidden"和 style=“display:none”之间的区别

    style=“display:none” 隐藏页面元素: <html> <head> <script type="text/javascript"&g ...

随机推荐

  1. Python 3 print 函数用法总结

    Python 3 print 函数用法总结 1. 输出字符串和数字 print("runoob")    # 输出字符串 runoob print(100)            ...

  2. parent() parents() parentsUntil()三者之间的对比

    $(document).ready(function(){ $("span").parent(); });只拿到span的父级标签 $(document).ready(functi ...

  3. VMware虚拟机共享文件夹问题: /mnt下没有hgfs文件夹

    在使用vmware虚拟机共享文件夹功能的时候,发现在/mnt目录下面没有hgfs文件夹,但是vmware-tool的命令vmhgfs-fuse确实存在于系统中.在使用vmhgfs-fuse建立宿主机到 ...

  4. SPOJ DISQUERY LCA + 倍增

    裸题,如此之水- Code: #include<cstdio> #include<algorithm> using namespace std; const int maxn ...

  5. 关闭浏览器 清除session

    捕获关闭浏览器的事件 关于关闭IE清空session的总结 Session过期会清楚session 还可以手动清除session实现关闭浏览器时清除session的方法

  6. nginx全局查看进程

    1. 查看nginx的PID,以常用的80端口为例: [root@rbtnode1 nginx-1.14.2]# netstat -anop | grep 0.0.0.0:80tcp 0 0 0.0. ...

  7. Java 习惯用法总结

    转自:http://www.importnew.com/15605.html 首页 所有文章 资讯 Web 架构 基础技术 书籍 教程 我要投稿 更多频道 » Java 习惯用法总结 2015/04/ ...

  8. webpack学习笔记(2)--webpack.config.js

    3 模式 mode mode 参数设置为 development(开发模式), production(生产模式) 或 none(无),可以启用对应环境下 webpack 内置的优化.默认值为 prod ...

  9. Linux磁盘分区--GPT分区

    MBR分区表有一定的局限性,最大支持2.1tb硬盘,单块硬盘最多4个主分区. 这里就要引入GPT分区表,可以支持最大18EB的卷,最多支持128个主分区,所以如果使用大于2tb的卷,就必须使用GTP分 ...

  10. volatile可见性和指令重排

    volatile关键字的2个作用 1.线程的可见性 2.防止指令重排 什么是线程的可见性? 线程的可见性 就是一个线程对一个变量进行更改操作 其他线程获取会获得最新的值. 线程在执行的行 操作主线程的 ...