Android Virtual Device Manager
突然出现了/dev/kvm is not found这个错误,我猜测大概Hardware_Accelerated_Execution_Manager
丢失了某些文件,或者没安装好HAXM
。
分类: macOS
Mac是苹果自1984年起以“Macintosh”开始的个人消费型计算机,如:iMac、Mac mini、Macbook air、Macbook pro、Mac pro等计算机。使用独立的Mac os系统,最新的OS X系列基于NeXT系统开发,不支持兼容。是一套完备而独立的生态系统。
macOS Sierra (10.12.4)下Caffe执行Python代码报告错误“Mean shape incompatible with input shape”
在执行macOS Sierra (10.12.4)下Caffe通过Python接口加载binaryproto格式的均值文件的时候,最后报告错误:
1 2 3 4 5 6 7 8 |
Traceback (most recent call last): File "analysis_memnet.py", line 29, in <module> detector = caffe.Detector(model_def, pretrained_model, mean=means) File "/Users/Source/caffe/distribute/python/caffe/detector.py", line 46, in __init__ self.transformer.set_mean(in_, mean) File "/Users/Source/caffe/distribute/python/caffe/io.py", line 259, in set_mean raise ValueError('Mean shape incompatible with input shape.') ValueError: Mean shape incompatible with input shape. |
这个错误发生的原因是由于memnet
提供的均值文件是256*256
的,但是提供的配置文件却是227*227
的,导致在io.py
里面的代码在进行判断的时候发生异常。调整源代码中的python/caffe/io.py
里面的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
def set_mean(self, in_, mean): """ Set the mean to subtract for centering the data. Parameters ---------- in_ : which input to assign this mean. mean : mean ndarray (input dimensional or broadcastable) """ self.__check_input(in_) ms = mean.shape if mean.ndim == 1: # broadcast channels if ms[0] != self.inputs[in_][1]: raise ValueError('Mean channels incompatible with input.') mean = mean[:, np.newaxis, np.newaxis] else: # elementwise mean if len(ms) == 2: ms = (1,) + ms if len(ms) != 3: raise ValueError('Mean shape invalid') if ms != self.inputs[in_][1:]: raise ValueError('Mean shape incompatible with input shape.') self.mean[in_] = mean |
调整为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
def set_mean(self, in_, mean): """ Set the mean to subtract for centering the data. Parameters ---------- in_ : which input to assign this mean. mean : mean ndarray (input dimensional or broadcastable) """ self.__check_input(in_) ms = mean.shape if mean.ndim == 1: # broadcast channels if ms[0] != self.inputs[in_][1]: raise ValueError('Mean channels incompatible with input.') mean = mean[:, np.newaxis, np.newaxis] else: # elementwise mean if len(ms) == 2: ms = (1,) + ms if len(ms) != 3: raise ValueError('Mean shape invalid') if ms != self.inputs[in_][1:]: in_shape = self.inputs[in_][1:] m_min, m_max = mean.min(), mean.max() normal_mean = (mean - m_min) / (m_max - m_min) mean = resize_image(normal_mean.transpose((1,2,0)),in_shape[1:]).transpose((2,0,1)) * (m_max - m_min) + m_min #raise ValueError('Mean shape incompatible with input shape.') self.mean[in_] = mean |
调整完成后,需要重新编译Caffe
:
1 2 3 4 |
$ make clean $ make $ make pycaffe $ make distribute |
参考链接
macOS Sierra (10.12.4)下Caffe通过Python接口加载binaryproto格式的均值文件
macOS Sierra
(10.12.4
)下Caffe
通过Python
接口加载均值文件的时候,都是加载的.npy
格式的文件,这个格式是Python
存储的格式,跟我们经常下载到的.binaryproto
格式的均值文件是不同的,这样就导致了加载问题。
.binaryproto
是Google
的Protocol Buffer
序列化后的数据,而.npy
格式是Python
的numpy
模块序列化后的数据。
之所以会出现两种不同的存储格式,目前猜测是由于目前Python 3
不能很好的支持Protocol Buffer
导致的。
Python
下是不能直接加载.binaryproto
格式的数据的,必须进行一次转换才行,示例代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
#coding=utf-8 #加载必要的库 import numpy as np import sys,os #设置当前目录 caffe_root = '/Users/Source/caffe/distribute/' sys.path.append(caffe_root + 'python') import caffe os.chdir(caffe_root) memnet_root = '/Users/Source/caffe/' model_def =memnet_root + 'models/memnet/deploy.prototxt' pretrained_model=memnet_root + 'models/memnet/memnet.caffemodel' means_file=memnet_root + 'models/memnet/mean.binaryproto' caffe.set_mode_cpu() blobProto=caffe.io.caffe_pb2.BlobProto() binProtoFile=open(means_file,'rb') blobProto.ParseFromString(binProtoFile.read()) means = caffe.io.blobproto_to_array(blobProto)[0] binProtoFile.close() # Make detector. detector = caffe.Detector(model_def, pretrained_model, mean=means) |
参考链接
macOS Sierra (10.12.4)编译pycaffe成功后,执行时候崩溃,错误“Segmentation fault: 11”
参照 macOS Sierra (10.12.3)编译Caffe 编译成功 Caffe
后,开始尝试使用 Caffe
的 Python
接口,执行如下命令:
1 |
$ make pycaffe |
编译一切成功,但是当执行
1 |
import caffe |
的时候,程序崩溃,提示如下内容:
1 |
Segmentation fault: 11 |
继续阅读macOS Sierra (10.12.4)编译pycaffe成功后,执行时候崩溃,错误“Segmentation fault: 11”
macOS Sierra (10.12.4)下Python通过PyAV调用FFMPEG操作视频
macOS Sierra
(10.12.4
)下使用Python
操作视频,FFMPEG
是目前来说最好的一个选择,但是没有为Python
专门提供适配接口,网上搜索了比较长时间,才找到PyAV
来操作FFMPEG
。
PyAV
的文档地址在:https://mikeboers.github.io/PyAV/
代码地址在:https://github.com/mikeboers/PyAV
首先需要通过HomeBrew
安装FFMPEG
:
1 |
$ brew install ffmpeg |
接下来安装PyAV
,安装方式两种:
一种是直接通过PIP
来安装:
1 |
$ pip install av |
另外一种是通过下载代码来手工安装
1 2 3 |
$ git clone https://github.com/mikeboers/PyAV.git $ cd PyAV $ python setup.py install |
安装好后的例子如下:
1 2 3 4 5 6 7 8 9 10 11 |
import av from av.frame import Frame from av.packet import Packet from av.stream import Stream from av.utils import AVError from av.video import VideoFrame container = av.open('san.mp4') for frame in container.decode(video=0): frame.to_image().save('./pyav/frame-%04d.jpg' % frame.index) |
macOS Sierra (10.12.4)系统上Caffe借助现有的模型训练自己的数据集
Caffe
代码中自带一些模型的例子,这些例子在源代码的models
目录下,这些都是其他项目中用来训练的配置文件,学习的时候,我们没有必要完全自己从头到尾搭建自己的网络模型,而是直接使用例子中的模型,后期在这些模型上简单调整一下,一般可以满足大多数的需求。
下面我们以models/bvlc_alexnet
目录下的模型配置文件为例子,训练我们自己的神经网络。
macOS Sierra (10.12.4)优酷客户端下载后的视频文件位置
macOS Sierra (10.12.4)优酷客户端下载后的视频文件位置在:
1 |
/Users/你的用户名/Library/Containers/com.youku.mac/Data |
可以在命令行下执行:
1 |
$ open ~/Library/Containers/com.youku.mac/Data |
打开这个目录。
macOS Sierra (10.12.3)使用Eclipse IDE for C/C++ Developers结合CMake Editor编辑Linux MakeFile项目
使用macOS Sierra
(10.12.3)开发C/C++
项目,经常用到网上的开源项目,很多项目是直接用MakeFile
来管理项目的,导致在调试,编辑项目的时候,比较麻烦,搜索了半天,才找到目前看来比较方便的方式,就是结合Eclipse IDE for C/C++ Developers
, CMake Editor
的方式来进行处理。
继续阅读macOS Sierra (10.12.3)使用Eclipse IDE for C/C++ Developers结合CMake Editor编辑Linux MakeFile项目
macOS Sierra (10.12.3)利用aria2解决CUDA下载失败问题
macOS Sierra
(10.12.3)上尝试下载Nvidia
的CUDA,但是由于国内网络问题,导致使用浏览器下载的时候,不仅慢,而且还经常失败,基本上没办法下载成功。尝试使用迅雷的话,如果不是会员,貌似也没有太多的用处。另外一个比较麻烦的问题是,Nvidia
下载服务器,随着下载时间的延长,会强制限制下载速度,导致越来越慢,到最后只有若干KB
的速度。
继续阅读macOS Sierra (10.12.3)利用aria2解决CUDA下载失败问题
Mac自带的录屏工具
这个一般是指QuickTimePlayer,用这种方法对Mac屏幕录像,很多人会反应说“没有声音”,到底是怎么回事呢?让我们使用一遍就知道了。
- 右击Mac下排的QuickTimePlayer,选择“新建屏幕录制”
- 在弹出来的小窗口中,点击中间的红点,选择是否录制麦克风的声音和显示鼠标点
- 再点击小红点就可以开始录制了
- 可以按一下录制全屏,也可以拖动录制屏幕的一部分
- 点击选择录制区域中间的“开始录制”
- 屏幕中高亮部分就是正在录制的区域,点击电脑最上面的菜单上的“停止键”结束录制
- 在自动跳出来的视频中,就可以看到刚刚录制的内容
- 单击左上角的叉号,就可以选择是否储存刚刚录制的视频,以及编辑视频的名称和储存的位置