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

下载前要以管理员身份运行 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. MobX入门

    MobX入门 本文尝试解释MobX是如何运作的.我们将用MobX创建一个小案例.如果你正在找靠谱的MobX文档,可以去看官方文档. 什么是MobX 官方文档的解释:简洁,易扩展的状态管理.简单来说,M ...

  2. Windows 下修改 MySQL 编码为 utf8

    问题 Windows 下安装 MySQL 后,默认编码不全utf8. mysql> show variables like '%char%'; +------------------------ ...

  3. Python框架、库和软件资源大全(整理篇)

    有少量修改,请访问原始链接.PythonWIn的exe安装包;http://www.lfd.uci.edu/~gohlke/pythonlibs/ 原文链接:codecloud.net/python- ...

  4. gitlab安装和汉化

    Centos 7.x 安装 gitlab-ce-8.8.0-ce 一.安装配置依赖项 yum -y install curl unzip policycoreutils git wget # 依赖包 ...

  5. nginx的headers_more模块的使用

    nginx的headers_more模块用于 添加.修改或清除 请求/响应头,该模块不是nginx自带的,默认不包含该模块,需要另外安装.幸运的是openresty默认包含了该模块,可以直接使用. 该 ...

  6. linux 结构需要清理 (structure needs cleaning)

    下面操作会删除挂载点所有文件,注意备份. df -T 查看出错的挂载点对应的文件系统和文件系统类型   然后umount这个文件系统 umount /dev/sda1 然后文件系统类型不同操作不同  ...

  7. nyoj92-图像有用区域【BFS】

    "ACKing"同学以前做一个图像处理的项目时,遇到了一个问题,他需要摘取出图片中某个黑色线圏成的区域以内的图片,现在请你来帮助他完成第一步,把黑色线圏外的区域全部变为黑色.    ...

  8. Windows下PHP服务nginx不能使用file_get_contents的原因

    注意:本文为转载,原文链接:Windows下PHP服务nginx不能使用file_get_contents/curl/fopen的原因! 一.问题说明 在Windows环境下搭建了一个本地开发服务环境 ...

  9. 小松之LINUX 驱动学习笔记(二)

    这两天一直在看字符驱动那块,后来从网上找啦几个例子,自己编译啦下,安装啥的都挺正常,就是用测试程序测试的时候总出问题,现在找到一个能测试的代码,自己先看看和原来的那个代码有啥不同,后面会继续更新,说下 ...

  10. jenkins 自动化部署

    Execute shell Command BUILD_ID=DONTKILLMEif [ ! -d "/usr/jenkins/$JOB_NAME" ]; then mkdir ...