我正在分发一个包含tensorflow的python程序。在 OSX、python 2.7 上,我加载库和运行张量流没有错误。当使用 pyinstaller 创建可执行文件时,它会失败并出现 PBR 错误。
我们可以将这个问题简化为一个简单的(希望可重现的)错误。
这是我们的程序。让我们加载张量流并让它打印出一些路径信息。
tf_check.py
import tensorflow
print(tensorflow.__file__)
Run Code Online (Sandbox Code Playgroud)
使用 pyinstaller 运行。
Bens-MacBook-Pro:tests ben$ pyinstaller tf_check.py
66 INFO: PyInstaller: 3.3
66 INFO: Python: 2.7.10
78 INFO: Platform: Darwin-16.7.0-x86_64-i386-64bit
79 INFO: wrote /Users/ben/Documents/DeepMeerkat/tests/tf_check.spec
87 INFO: UPX is not available.
Run Code Online (Sandbox Code Playgroud)
构建没有问题。尝试在 dist/tf_check/ 下运行 tf_check
产量
Last login: Thu Sep 28 12:54:34 on ttys000
Bens-MacBook-Pro:~ ben$ /Users/ben/Documents/DeepMeerkat/tests/dist/tf_check/tf_check ; exit;
Traceback (most recent call last):
File "tf_check.py", line 1, in <module>
File "/Library/Python/2.7/site-packages/PyInstaller-3.3-py2.7.egg/PyInstaller/loader/pyimod03_importers.py", line 396, in load_module
exec(bytecode, module.__dict__) …Run Code Online (Sandbox Code Playgroud) 我正在使用Tensorflow的对象检测API构建RCNN检测网络。
我的目标是在户外视频中检测动物的边界框。大多数框架没有动物,只是具有动态背景。
大多数教程侧重于培训自定义标签,但没有提及负面的培训样本。这类检测器如何处理不包含感兴趣对象的图像?它只会输出低概率,还是会强制尝试在图像内绘制边界框?
我目前的计划是在opencv中使用传统的背景减法来生成潜在帧并将其传递到经过训练的网络。我是否还应将一类“背景”边界框包括为“负数据”?
最终的选择是使用opencv进行背景扣除,使用RCNN生成边界框,然后使用农作物的分类模型来识别动物和背景。
我一直在寻找一种方法,可以将numpy图片划分为类似补丁的网格。
这个任务已经回答了几次。 有效地从python中的图像中提取特定大小的补丁
skleans extract_patches_2d看起来完全正确。
但是,我觉得我不了解这些文档。
我有一个映像,它不是特别大,磁盘上只有几个Mb。OpenCV没问题。
它的尺寸是
self.original_image.shape
(1536, 2048, 3)
Run Code Online (Sandbox Code Playgroud)
因此,让我们将其提取到每个100 X 100的块中。在信封计算的后面,补丁的数量应类似于
(1536 * 2048)/(100 * 100)= 314
patches=extract_patches_2d(self.original_image,(100,100))
Traceback (most recent call last):
Debug Probe, prompt 46, line 1
File "c:\Python27\Lib\site-packages\sklearn\feature_extraction\image.py", line 374, in extract_patches_2d
extraction_step=1)
File "c:\Python27\Lib\site-packages\sklearn\feature_extraction\image.py", line 296, in extract_patches
patches = as_strided(arr, shape=shape, strides=strides)
File "c:\Python27\Lib\site-packages\numpy\lib\stride_tricks.py", line 48, in as_strided
array = np.asarray(DummyArray(interface, base=x))
File "c:\Python27\Lib\site-packages\numpy\core\numeric.py", line 482, in asarray
return array(a, dtype, copy=False, order=order)
ValueError: array is too big; `arr.size * …Run Code Online (Sandbox Code Playgroud) 我正在开发HPC环境,并且没有root访问权限.我从源代码安装了laszip.
module load git
git clone https://github.com/LASzip/LASzip.git
git checkout tags/2.0.2
cd LASzip
Run Code Online (Sandbox Code Playgroud)
在build目录中创建文件.
mkdir build
cd build
module load cmake
module load gcc
cmake .. -DCMAKE_INSTALL_PREFIX=/home/b.weinstein/LASzip/build
make
make install
Run Code Online (Sandbox Code Playgroud)
添加路径
export LD_LIBRARY_PATH="/home/b.weinstein/LASzip/build/lib:$LD_LIBRARY_PATH"
export PATH="/home/b.weinstein/LASzip/build/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)
确保它在本地工作
(pangeo) [b.weinstein@c30a-s26 bin]$ pwd
/home/b.weinstein/LASzip/build/bin
(pangeo) [b.weinstein@c30a-s26 bin]$ laszip-config --version
2.0.2
Run Code Online (Sandbox Code Playgroud)
转到新目录以测试链接
cd ~
(pangeo) [b.weinstein@c30a-s26 ~]$ laszip-config --version
2.0.2
Run Code Online (Sandbox Code Playgroud)
(pangeo) [b.weinstein@c30a-s26 ~]$ python
Python 3.6.4 | packaged by conda-forge | (default, Dec 23 2017, 16:31:06)
[GCC 4.8.2 20140120 (Red Hat 4.8.2-15)] on …Run Code Online (Sandbox Code Playgroud) 我正在使用来自tensorflow对象检测API的本地训练模型.我正在使用faster_rcnn_inception_resnet_v2_atrous_coco_11_06_2017检查站.我重新训练了一个1类模型并将其导出到SavedModel
python object_detection/export_inference_graph.py \
--input_type image_tensor \
--pipeline_config_path ${PIPELINE_CONFIG_PATH} \
--trained_checkpoint_prefix /Users/Ben/Dropbox/GoogleCloud/Detection/train/model.ckpt-186\
--output_directory /Users/Ben/Dropbox/GoogleCloud/Detection/SavedModel/
Run Code Online (Sandbox Code Playgroud)
虽然我知道还有其他较浅的模型,但报告的RCNN运行时间比我看到的快100多倍.任何人都可以在CPU上使用更快的RCNN运行时间来确认吗?我试图告诉我的代码是否存在问题,或者只是转移到较小的模型.
我正在抓住juypter笔记本的代码,几乎没有变化.我正在运行一个干净的virtualenv,只有安装的要求.
detection_predict.py
import numpy as np
import tensorflow as tf
from PIL import Image
import glob
from collections import defaultdict
from io import StringIO
from matplotlib import pyplot as plt
from PIL import Image
from object_detection.utils import label_map_util
from object_detection.utils import visualization_utils as vis_util
import os
import datetime
TEST_IMAGE_PATHS = glob.glob("/Users/Ben/Dropbox/GoogleCloud/Detection/images/validation/*.jpg")
# Size, in inches, of the …Run Code Online (Sandbox Code Playgroud) 我正在恢复这个 github问题,因为我相信它是有效的并且需要解释。tf.keras 有一个掩码层,其文档如下:
对于输入张量中的每个时间步长(张量中的维度#1),如果该时间步长的输入张量中的所有值都等于 mask_value,则该时间步长将在所有下游层中被屏蔽(跳过)(只要它们支持掩蔽)。
如果任何下游层不支持掩码但收到这样的输入掩码,则会引发异常。
# create padded zeros and change two valid entries.
inputs = np.zeros([1,5])
inputs[0,1] = 0.5
inputs[0,2] = 0.1
inputs = tf.Variable(inputs)
masked_inputs = tf.keras.layers.Masking(mask_value=0.0)(inputs)
with_masking = tf.keras.layers.Softmax()(masked_inputs)
without_masking = tf.keras.layers.Softmax()(inputs)
Run Code Online (Sandbox Code Playgroud)
两个结果几乎相同
with_masking
<tf.Tensor: shape=(1, 5), dtype=float32, numpy=
array([[0.1737954 , 0.28654018, 0.19207363, 0.1737954 , 0.1737954 ]],
dtype=float32)>
without_masking
<tf.Tensor: shape=(1, 5), dtype=float64, numpy=array([[0.1737954 , 0.28654017, 0.19207362, 0.1737954 , 0.1737954 ]])>
Run Code Online (Sandbox Code Playgroud)
我希望只对有效条目进行 softmax 处理,类似于
#Assign one large value
inputs = np.zeros([1,2])
inputs[0,0] = …Run Code Online (Sandbox Code Playgroud)