Skip to content

Instantly share code, notes, and snippets.

@mitmul
Created October 4, 2017 16:47
Show Gist options
  • Save mitmul/b2b00fbefcd217c2962f2b9461044744 to your computer and use it in GitHub Desktop.
Save mitmul/b2b00fbefcd217c2962f2b9461044744 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/shunta/.pyenv/versions/anaconda3-4.4.0/lib/python3.6/site-packages/chainercv/links/model/pspnet/pspnet.py:16: UserWarning: To perform batch normalization with multiple GPUs or multiple nodes, MultiNodeBatchNormalization link is needed. Please install ChainerMN: pip install pip install git+git://github.com/chainer/chainermn.git@distributed-batch-normalization\n",
" warnings.warn('To perform batch normalization with multiple GPUs or '\n"
]
}
],
"source": [
"import sys # NOQA # isort:skip\n",
"sys.path.insert(0, 'PSPNet/build/install/python') # NOQA # isort:skip\n",
"sys.path.insert(0, '../')\n",
"\n",
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"import caffe\n",
"import numpy as np\n",
"import chainer.functions as F\n",
"from chainercv.utils import read_image\n",
"from collections import defaultdict\n",
"\n",
"param_fn = '../weights/pspnet101_cityscapes.caffemodel'\n",
"proto_fn = '../weights/pspnet101_cityscapes_713.prototxt'\n",
"net = caffe.Net(proto_fn, param_fn, caffe.TEST)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def load_image():\n",
" img = read_image('../stuttgart_00_000000_000040_leftImg8bit.png')\n",
" patch = img[:, :713, :713]\n",
"\n",
" plt.imshow(patch.transpose(1, 2, 0) / 255.)\n",
"\n",
" mean = np.array([123.68, 116.779, 103.939])\n",
" patch -= mean[:, None, None]\n",
" patch = patch[::-1, ...]\n",
" print(patch.shape)\n",
" return patch"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(3, 713, 713)\n"
]
},
{
"data": {
"image/png": "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\nAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f0544297fd0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"patch = load_image()\n",
"net.blobs['data'].data[...] = patch[None, ...]\n",
"output = net.forward()\n",
"pred = output['conv6_interp']\n",
"pred_labels = np.argmax(pred, axis=1)[0]\n",
"plt.imshow(pred_labels)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Downloading ...\n",
"From: https://github.com/mitmul/chainer-pspnet/releases/download/ChainerCV_PSPNet/pspnet101_cityscapes_713_reference.npz\n",
"To: /home/shunta/.chainer/dataset/_dl_cache/c38dcf4ce7e1101cdc13a71ca636c72c\n",
" % Total Recv Speed Time left\n",
"100 251MiB 251MiB 5380KiB/s 0:00:00Pre-trained model has been loaded: cityscapes\n"
]
}
],
"source": [
"from chainercv.links import PSPNet\n",
"\n",
"import chainer\n",
"from chainer import serializers\n",
"\n",
"chainer.config.train = False\n",
"model = PSPNet(pretrained_model='cityscapes')"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(3, 713, 713)\n",
"(713, 713)\n",
"(713, 713)\n"
]
},
{
"data": {
"image/png": "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\nM0v5f0t7sCyFTzWvAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f04b80d5668>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"img = read_image('../stuttgart_00_000000_000040_leftImg8bit.png')\n",
"img = img[:, :713, :713]\n",
"\n",
"print(img.shape)\n",
"print(model.input_size)\n",
"pred = model.predict([img], argmax=True)[0]\n",
"print(pred.shape)\n",
"plt.imshow(pred)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.99317031526312582"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.sum(pred_labels == pred) / np.prod(pred.shape)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"defaultdict(<class 'int'>, {'Convolution': 112, 'BN': 111, 'ReLU': 107, 'Pooling': 5, 'Split': 34, 'Eltwise': 33, 'Interp': 5, 'Concat': 1, 'Dropout': 1})\n"
]
}
],
"source": [
"caffe_types = defaultdict(int)\n",
"for l in net.layers:\n",
" caffe_types[l.type] += 1\n",
"print(caffe_types)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"defaultdict(<class 'int'>, {'Convolution2D': 86, 'BatchNormalization': 111, 'DilatedConvolution2D': 26})\n"
]
}
],
"source": [
"chainer_types = defaultdict(int)\n",
"for l in model.links():\n",
" n = l.__class__.__name__\n",
" if n == 'Convolution2D':\n",
" chainer_types['Convolution2D'] += 1\n",
" elif n == 'BatchNormalization':\n",
" chainer_types['BatchNormalization'] += 1\n",
" elif n == 'DilatedConvolution2D':\n",
" chainer_types['DilatedConvolution2D'] += 1\n",
"print(chainer_types)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def show_statistics(A, B, show=True):\n",
" print('A.min:', A.min(), 'A.max:', A.max(), 'A.mean:', A.mean(), 'A.std:', A.std())\n",
" print('B.min:', B.min(), 'B.max:', B.max(), 'B.mean:', B.mean(), 'B.std:', B.std())\n",
" print(np.allclose(A, B, atol=1e-3), np.max(np.abs(A - B)), end='\\n')\n",
"\n",
"def compare_bn_params(A, B):\n",
" show_statistics(A.bn.gamma.data, B[0].data.ravel(), False)\n",
" show_statistics(A.bn.beta.data, B[1].data.ravel(), False)\n",
" show_statistics(A.bn.avg_mean, B[2].data.ravel(), False)\n",
" show_statistics(A.bn.avg_var, B[3].data.ravel(), False)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"A.min: -0.0316032 A.max: 0.032252 A.mean: -9.92642e-05 A.std: 0.00310022\n",
"B.min: -0.0316032 B.max: 0.032252 B.mean: -9.92642e-05 B.std: 0.00310022\n",
"True 0.0\n",
"A.min: 0.779705 A.max: 1.08443 A.mean: 0.944016 A.std: 0.0433944\n",
"B.min: 0.779705 B.max: 1.08443 B.mean: 0.944016 B.std: 0.0433944\n",
"True 0.0\n",
"A.min: -0.299183 A.max: 0.089087 A.mean: -0.0427631 A.std: 0.0484655\n",
"B.min: -0.299183 B.max: 0.089087 B.mean: -0.0427631 B.std: 0.0484655\n",
"True 0.0\n",
"A.min: -0.506264 A.max: 0.220869 A.mean: -0.052699 A.std: 0.0794449\n",
"B.min: -0.506264 B.max: 0.220869 B.mean: -0.052699 B.std: 0.0794449\n",
"True 0.0\n",
"A.min: 0.000913975 A.max: 0.0292159 A.mean: 0.00581705 A.std: 0.00390373\n",
"B.min: 0.000913975 B.max: 0.0292159 B.mean: 0.00581705 B.std: 0.00390373\n",
"True 0.0\n",
"A.min: -0.0182228 A.max: 0.0226495 A.mean: -5.78721e-05 A.std: 0.00196373\n",
"B.min: -0.0182228 B.max: 0.0226495 B.mean: -5.78721e-05 B.std: 0.00196373\n",
"True 0.0\n",
"A.min: 0.955843 A.max: 1.05806 A.mean: 1.00154 A.std: 0.0187329\n",
"B.min: 0.955843 B.max: 1.05806 B.mean: 1.00154 B.std: 0.0187329\n",
"True 0.0\n",
"A.min: -0.056389 A.max: 0.0704847 A.mean: 0.0194897 A.std: 0.0180849\n",
"B.min: -0.056389 B.max: 0.0704847 B.mean: 0.0194897 B.std: 0.0180849\n",
"True 0.0\n",
"A.min: -0.184036 A.max: 0.0945169 A.mean: -0.0328294 A.std: 0.0454607\n",
"B.min: -0.184036 B.max: 0.0945169 B.mean: -0.0328294 B.std: 0.0454607\n",
"True 0.0\n",
"A.min: 0.00115694 A.max: 0.0224768 A.mean: 0.00832251 A.std: 0.00481219\n",
"B.min: 0.00115694 B.max: 0.0224768 B.mean: 0.00832251 B.std: 0.00481219\n",
"True 0.0\n",
"A.min: -0.0159021 A.max: 0.0212945 A.mean: -3.6368e-05 A.std: 0.0017983\n",
"B.min: -0.0159021 B.max: 0.0212945 B.mean: -3.6368e-05 B.std: 0.0017983\n",
"True 0.0\n",
"A.min: 0.968158 A.max: 1.0587 A.mean: 0.999356 A.std: 0.0147664\n",
"B.min: 0.968158 B.max: 1.0587 B.mean: 0.999356 B.std: 0.0147664\n",
"True 0.0\n",
"A.min: -0.0240086 A.max: 0.0612716 A.mean: 0.0077707 A.std: 0.0139303\n",
"B.min: -0.0240086 B.max: 0.0612716 B.mean: 0.0077707 B.std: 0.0139303\n",
"True 0.0\n",
"A.min: -0.164113 A.max: 0.0972972 A.mean: -0.0201131 A.std: 0.0341292\n",
"B.min: -0.164113 B.max: 0.0972972 B.mean: -0.0201131 B.std: 0.0341292\n",
"True 0.0\n",
"A.min: 0.00138761 A.max: 0.0297427 A.mean: 0.00776295 A.std: 0.00491256\n",
"B.min: 0.00138761 B.max: 0.0297427 B.mean: 0.00776295 B.std: 0.00491256\n",
"True 0.0\n",
"A.min: -0.016115 A.max: 0.0170414 A.mean: -8.45463e-05 A.std: 0.00168161\n",
"B.min: -0.016115 B.max: 0.0170414 B.mean: -8.45463e-05 B.std: 0.00168161\n",
"True 0.0\n",
"A.min: 0.965902 A.max: 1.03997 A.mean: 0.993712 A.std: 0.0105154\n",
"B.min: 0.965902 B.max: 1.03997 B.mean: 0.993712 B.std: 0.0105154\n",
"True 0.0\n",
"A.min: -0.0316178 A.max: 0.042745 A.mean: -0.000240056 A.std: 0.0106875\n",
"B.min: -0.0316178 B.max: 0.042745 B.mean: -0.000240056 B.std: 0.0106875\n",
"True 0.0\n",
"A.min: -0.166649 A.max: 0.0794294 A.mean: -0.0368289 A.std: 0.0387701\n",
"B.min: -0.166649 B.max: 0.0794294 B.mean: -0.0368289 B.std: 0.0387701\n",
"True 0.0\n",
"A.min: 0.000976562 A.max: 0.0378037 A.mean: 0.00910104 A.std: 0.00665938\n",
"B.min: 0.000976562 B.max: 0.0378037 B.mean: 0.00910104 B.std: 0.00665938\n",
"True 0.0\n"
]
}
],
"source": [
"model.to_cpu()\n",
"\n",
"show_statistics(model.ppm[3].conv.W.data, net.params['conv5_3_pool1_conv'][0].data)\n",
"assert model.ppm[3].conv.b is None\n",
"compare_bn_params(model.ppm[3], net.params['conv5_3_pool1_conv/bn'])\n",
"\n",
"show_statistics(model.ppm[2].conv.W.data, net.params['conv5_3_pool2_conv'][0].data)\n",
"assert model.ppm[2].conv.b is None\n",
"compare_bn_params(model.ppm[2], net.params['conv5_3_pool2_conv/bn'])\n",
"\n",
"show_statistics(model.ppm[1].conv.W.data, net.params['conv5_3_pool3_conv'][0].data)\n",
"assert model.ppm[1].conv.b is None\n",
"compare_bn_params(model.ppm[1], net.params['conv5_3_pool3_conv/bn'])\n",
"\n",
"show_statistics(model.ppm[0].conv.W.data, net.params['conv5_3_pool6_conv'][0].data)\n",
"assert model.ppm[0].conv.b is None\n",
"compare_bn_params(model.ppm[0], net.params['conv5_3_pool6_conv/bn'])"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"A.min: -0.0395507 A.max: 0.0251846 A.mean: -5.7206e-05 A.std: 0.00109934\n",
"B.min: -0.0395507 B.max: 0.0251846 B.mean: -5.7206e-05 B.std: 0.00109934\n",
"True 0.0\n",
"A.min: 0.486079 A.max: 1.14769 A.mean: 0.840262 A.std: 0.12334\n",
"B.min: 0.486079 B.max: 1.14769 B.mean: 0.840262 B.std: 0.12334\n",
"True 0.0\n",
"A.min: -0.477883 A.max: 0.371617 A.mean: 0.0239925 A.std: 0.115218\n",
"B.min: -0.477883 B.max: 0.371617 B.mean: 0.0239925 B.std: 0.115218\n",
"True 0.0\n",
"A.min: -1.75469 A.max: 0.676093 A.mean: -0.575352 A.std: 0.392881\n",
"B.min: -1.75469 B.max: 0.676093 B.mean: -0.575352 B.std: 0.392881\n",
"True 0.0\n",
"A.min: 0.0757593 A.max: 6.74821 A.mean: 1.01869 A.std: 1.10081\n",
"B.min: 0.0757593 B.max: 6.74821 B.mean: 1.01869 B.std: 1.10081\n",
"True 0.0\n"
]
}
],
"source": [
"# Model parameters should be same\n",
"show_statistics(model.cbr_main.conv.W.data, net.params['conv5_4'][0].data)\n",
"show_statistics(model.cbr_main.bn.gamma.data, net.params['conv5_4/bn'][0].data.ravel())\n",
"show_statistics(model.cbr_main.bn.beta.data, net.params['conv5_4/bn'][1].data.ravel())\n",
"show_statistics(model.cbr_main.bn.avg_mean, net.params['conv5_4/bn'][2].data.ravel())\n",
"show_statistics(model.cbr_main.bn.avg_var, net.params['conv5_4/bn'][3].data.ravel())"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Layer outputs should be same\n",
"show_statistics(model.trunk_out.data, net.blobs['conv5_3'].data)\n",
"show_statistics(model.ppm_out.data, net.blobs['conv5_3_concat'].data)\n",
"show_statistics(model.after_dropout.data, net.blobs['conv5_4'].data)\n",
"show_statistics(model.before_resize.data, net.blobs['conv6'].data)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"h = np.array(net.blobs['conv5_3_concat'].data)\n",
"h = model.cbr_main(h)\n",
"show_statistics(h.data, net.blobs['conv5_4'].data)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"out = model.out_main(h)\n",
"out = F.resize_images(out, (713, 713))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"model.mean"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"plt.imshow(F.argmax(out, axis=1).data[0])\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.1"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment