ためすう
やったこと
“invalid index of a 0-dim tensor. Use tensor.item() to convert a 0-dim tensor to a Python number” というエラーが発生したので、調査します。
確認環境
Google Colaboratory で試しました。
import torch
print(torch.__version__)
1.1.0
調査
問題となったコード <class 'torch.Tensor'>
は0インデックスが使えないようです。
修正前
total_loss += loss.data[0]
修正後
total_loss += loss.data.item()
参考
OpenCV を使って、顔検出してみる
2019-09-23やったこと
OpenCV を使って、顔検出してみます。
確認環境
$ python
Python 3.6.2 |Anaconda custom (64-bit)| (default, Sep 21 2017, 18:29:43)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'3.4.2'
調査
すでに学習済みの分類器を使います。 haarcascade_frontalface_alt.xml
import cv2
import sys
import os
import shutil
cascade_path = "./haarcascade_frontalface_alt.xml"
image_path=('/Users/himejima/Desktop/working/satomi-2/1451685134.jpg')
image = cv2.imread(image_path)
image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cascade = cv2.CascadeClassifier(cascade_path)
facerect = cascade.detectMultiScale(image_gray, scaleFactor=1.2, minNeighbors=2, minSize=(10, 10))
## print("face rectangle")
## print(facerect)
if len(facerect) > 0:
path = os.path.splitext(image_path)
for rect in facerect:
# 顔だけ切り出して保存
x = rect[0]
y = rect[1]
width = rect[2]
height = rect[3]
dst = image[y:y+height, x:x+width]
new_image_path = './' + str(0) + path[1];
# print(new_image_path)
cv2.imwrite(new_image_path, dst)
参考
Python の shutil モジュールを使ってみる
2019-09-17やったこと
shutil モジュールを使ってみます。
確認環境
$ python
Python 3.6.2 |Anaconda custom (64-bit)| (default, Sep 21 2017, 18:29:43)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
調査
shutil モジュールはファイルやファイルの集まりに対する高水準の操作方法を多数提供します。
hoge
ディレクトリがあるとします。
>>> import shutil
>>> shutil.rmtree('hoge')
>>> exit()
参考
Google Colaboratory で Google Drive にアクセスする
2019-09-17やったこと
Google Colaboratory で Google Drive にアクセスしてファイルを読み込んでみます。
調査
# -*- coding: utf-8 -*-
# PyDrive のインストール
!pip install -U -q PyDrive
# ライブラリの読み込み
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth
from oauth2client.client import GoogleCredentials
# GoogleCloudSDK の認証
auth.authenticate_user()
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)
# 共有リンクで取得したもの
id = 'hogehoge'
downloaded = drive.CreateFile({'id': id})
downloaded.GetContentFile('./0.jpg')
ls
0.jpg sample_data/
参考
numpy.savez を使ってみる
2019-09-16やったこと
numpy.savez を使ってみます。
確認環境
$ python
Python 3.6.2 |Anaconda custom (64-bit)| (default, Sep 21 2017, 18:29:43)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> np.__version__
'1.16.4'
調査
>>> a = np.arange(1, 10)
>>> a
array([1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> np.savez('hoge.npz', x=a)
>>> f = np.load('./hoge.npz')
>>> f['x']
array([1, 2, 3, 4, 5, 6, 7, 8, 9])
ファイルを作成して、内容を読み込むこともできました。
参考
os.listdir を使ってみる
2019-09-16やったこと
os.listdir を使ってみます。
確認環境
$ python
Python 3.6.2 |Anaconda custom (64-bit)| (default, Sep 21 2017, 18:29:43)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
調査
準備
$ tree
.
├── aaa.txt
├── bbb.txt
├── ccc.txt
└── test.py
test.py
import os
i = os.listdir('./')
for target_file in i:
print(target_file)
実行
出力結果
$ python test.py
ccc.txt
bbb.txt
test.py
aaa.txt
numpy.random.normal を使ってみる
2019-09-16やったこと
numpy.random.normal を使ってみます。
確認環境
$ python
Python 3.6.2 |Anaconda custom (64-bit)| (default, Sep 21 2017, 18:29:43)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> np.__version__
'1.16.4'
調査
Draw random samples from a normal (Gaussian) distribution
上記によれば、ガウス分布でランダムな値が作られます。
任意の平均、標準偏差で生成することができます。
>>> np.random.normal(0, 1, (2, 3))
array([[ 0.37994701, -0.65873701, -0.60940363],
[-0.14211842, -1.40152253, -0.48017185]])
>>> np.random.normal(0, 1, (2, 3))
array([[ 0.80400563, 0.19123044, -0.75771854],
[ 1.07727344, 0.45275647, -2.22720158]])
>>> np.random.normal(0, 1, (2, 3))
array([[ 0.19913532, 0.70579006, -0.24233281],
[-0.42913376, -0.04703086, 0.62174294]])
>>> np.random.normal(0, 1, (2, 3))
array([[-0.92828659, -0.37335564, 0.41829356],
[ 0.99799035, -1.75828243, 1.1866021 ]])
参考
OpenCV で画像をリサイズする
2019-09-15やったこと
OpenCV ライブラリを使い、画像をリサイズしてみます。
確認環境
$ python
Python 3.6.2 |Anaconda custom (64-bit)| (default, Sep 21 2017, 18:29:43)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
調査
opencv-img-resize.py
import cv2
print(cv2.__version__)
img = cv2.imread('sample.jpg')
width, height = 600, 400
img = cv2.resize(img, (width, height))
cv2.imwrite('sample-resize2.jpg', img)
出力結果
$ python opencv-img-resize.py
3.4.2
参考
OpenCV で画像を読み込んでみる
2019-09-13やったこと
OpenCV ライブラリを使い、画像を読み込んで表示してみます。
確認環境
$ python
Python 3.6.2 |Anaconda custom (64-bit)| (default, Sep 21 2017, 18:29:43)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
調査
opencv-img.py
import cv2
print(cv2.__version__)
img = cv2.imread('sample.jpg')
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
opencv-img2.py
import cv2
from matplotlib import pyplot as plt
print(cv2.__version__)
img = cv2.imread('sample.jpg')
rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(rgb)
plt.show()
参考
PIL で画像をリサイズする
2019-09-11やったこと
PIL ライブラリを使い、画像をリサイズしてみます。
確認環境
$ python
Python 3.6.2 |Anaconda custom (64-bit)| (default, Sep 21 2017, 18:29:43)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
調査
バージョン確認
$ conda list Pillow
# packages in environment at /anaconda3:
#
pillow 6.1.0 py36hb68e598_0
pil-image-resize.py
from PIL import Image
img = Image.open('./sample.jpg')
width, height = 500, 600
img = img.resize((width,height))
img.save('./sample_resize.jpg')