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

下载前要以管理员身份运行 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. spring之pom.xml配置

    spring之pom.xml配置 <?xml version="1.0" encoding="UTF-8"?> <project xmlns= ...

  2. 第八周读书笔记(人月神话X月亮与六便士)——到底什么才是一个程序员的自我修养?

    写了这么久的读书笔记,涉及到问题大多是一些如何把软件工程做好,如何把自己的职业生涯做好.但总感觉逻辑链上缺了一环,亦即:我们为什么要把软件工程做好,我们成为一名优秀的职业生涯的意义到底在于什么?我觉得 ...

  3. shell学习第一弹-初识

    1.shell简介: shell是系统的用户界面,提供了用户与内核进行交互的一种接口.可以看做是用户与内核之间的一扇窗户.它接收用户输入的命令并把它送入内核执行. 常见的有bash,tcsh,csh, ...

  4. vue常用方法

    vue移动端ui库: http://mint-ui.github.io/#!/zh-cn vue做app开发使用: weex 官网地址:http://weex.apache.org/cn 1.Vue组 ...

  5. angular 常用写法

    1.ng-repeat 数组数据中,不允许数组中有相同的两个数据,这个时候用下标去管理数据便可以解决这个问题 ng-repeat="item in list track by $index& ...

  6. mysql 锁表查看

    information_schema.INNODB_TRX    一般锁表后查询这个表  把相关的事务执行线程kill就可以了,可以分析sql语句执行场景 ​ INNODB_LOCKS​ PROCES ...

  7. B站真的是一个神奇的地方,初次用Python爬取弹幕。

    "网上冲浪""886""GG""沙发"--如果你用过这些,那你可能是7080后: "杯具"" ...

  8. JS 20180415作业

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. with as递归调用

    一.递归调用--在代码中偶尔看到以记之,便于下次学习 https://blog.csdn.net/johnf_nash/article/details/78681060 --查询节点及其下所有子节点 ...

  10. gradle springboot打包时忽略某个配置文件

    jar { exclude "**/bootstrap.properties" }