ãéãæ¥ãæãã³ã¹ã§ãã ã¬ããã¼ã ããè¦ã¦ãããã£ãã®ã§ãã£ã¼ãã©ã¼ãã³ã°ããï¼åç·¨ï¼
ã¬ããã¼è¦è´ãæ¯é±ã®æ¥½ãã¿ã«ãã¦ããæ¹ãå¤ãã®ã§ã¯ãªãã§ããããã
ããããç§ããã®ä¸äººã§ãã
ç¾ä»£ç¤¾ä¼ã®èæ³¢ã«æã¾ãã¦ã¯å¿ãèãæ¥ã
ã
ç¼ç±å°çã®ç æ¼ ã«ä¸ããããä¸ç¸·ã®æã¿ããªã¢ã·ã¹ã
ç§ã«ã¨ã£ã¦ãæãã³ã¹ãè¸ãã¬ããã¼ã¨ã¯ãã®ãããªåå¨ã¨ãããã§ãããã
ããããããã§ãè¸ã£ã¦ããã¬ããã¼ãæ¯æ¥ã®ããã«çºãã¦ããããã§ãããããã§ä¸ã¤ä¸é½åãããã¾ãã
ãããã®ã£ã©ãªã¼ãå¤ãããã¨ãããã¨ã
ç§ã¯ãã ã¬ããã¼ã ããè¦ã¦ãããã®ã§ãããæ®å¿µãªããããã¯åå±ãå¸ãã¾ããã ä»ã®æ¹ã ãè¸ã£ã¦ããããææªã®å ´åãã¬ããã¼ãå ¨ãç»é¢ã«åºã¦ããªãã¿ã¤ãã³ã°ãããã¾ãï¼ä½ãèãã¦ç·¨éãã¦ãããã â¦â¦ï¼ã
ã¨ããããã§ããªã¢ã·ã¹ã®æ°´ã濾éãããå¦ããã¬ããã¼ä»¥å¤ã®ç»å ´äººç©ã«ã¯éå ´é¡ããã¨ã¨ãã¾ãã
ä½æ¥ã®æµãã¨ãã¦ã¯ã
- ã¬ããã¼ã®é¡ãããã§ãªãããäºå¤åé¡ããå¤å¥æ©ãã¤ãã
- ã¬ããã¼ä»¥å¤ã®äººã®é¡ãã¬ããã¼ã§ä¸æ¸ããã
ã¨ããæãã«ãªãã¾ãã
éåã¨åå£ä¸ãé·ããªãã¾ããããæ©éåãæããã¾ãã
æ¸ãã®ã¯æ¥ã ãå½¹ã«ç«ã¤
â¦â¦ã¯ãã
注æã¯é ã«ãããå½¹ã«ç«ã¤
- è¨è¼ãã¦ããã½ã¼ã¹ã³ã¼ãã¯ãå ¬éç¨ã«ä¸é¨ä¿®æ£ãã¦è¼ãã¦ããã®ã§ããããããã¨åããªãå ´åãããããããã¾ããã
- ãã£ã¼ãã©ã¼ãã³ã°ããã³ç»åå¦çã«é¢ãã¦ã¯å ¨ãã®ãç´ äººãªã®ã§ã誤ã£ãè¨è¿°ãå«ã¾ãã¦ããæããããã¾ãã
ç°å¢ã¯äººããããéããå½¹ã«ç«ã¤
OpenCV3ã®å°å ¥ã¯é¢åã ãå½¹ã«ç«ã¤
ä¸è¨è¨äºãåèã«OpenCV3ãPythonãã使ç¨ã§ããããã«æºåãã¾ãã
Mac OS X で OpenCV 3 + Python 2/3 の開発環境を整備する方法 – ymyzk’s blog
èªåã®ç°å¢ä¸ã§ã¯ã2016å¹´12æã®æ®µéã§
brew install opencv3 --with-python3
ã®å®è¡æã«ã¨ã©ã¼ãçºçãã¦ãã¾ããã
ããåæ§ã®çç¶ã§ããã°ãä¸è¨è¨äºã®è§£æ±ºçã§è§£æ¶ã§ããã¯ãã§ãã
【macOS Sierra】OpenCV 3をbrewでインストールできない - プログラムは、用いる言葉の選択で決まる
ã¨ããããæçµçã«OpenCV3ãã¤ã³ãã¼ããã¦ãã¼ã¸ã§ã³ã確èªã§ããã°OKã§ãã
$ python >>> import cv2 >>> cv2.__version__ '3.1.0-dev'
容éã¯é£ããå½¹ã«ç«ã¤
ä½ã¯ã¨ããããå¦ç¿ã«ä½¿ç¨ããã¬ããã¼ã®ãé¡ãç¡ããã°å§ã¾ãã¾ããã
ç»ååéã®æ¹æ³ã¯ããã¤ãèãããããã¨æãã¾ãããä»åã¯Tumblr
ã®æ稿ã®ä¸ãããæ°å£çµè¡£
ã®ã¿ã°ãã¤ããç»åä»ãã®æ稿ãåéãããã¨ã«ãã¾ããã
ã¡ãªã¿ã«ãTumblrã«ã©ããªç»åãä¸ãã£ã¦ããã®ããã¨ããã®ã¯å®éã«è¦ã«è¡ãã°ããåããã¾ãã®ã§ããªã³ã¯ãç½®ãã¦ããã¾ãã
https://www.tumblr.com/search/æ°å£çµè¡£
è¦å§ããã¨ä¸æ¥ãçµãã£ã¦ãã¾ãã®ã§æ°ãã¤ãã¦ãã ããã
å®éã®ç»ååéã§ãããä¸è¨ã®2ã¹ãããã§è¡ãã¾ããã
- æ稿ããã¦ããç»åã®URLãä¿å
- URLã®ãªã¹ãããç»åã®ä¿å
ç»åãã¦ã³ãã¼ãã¯ä¸¦è¡ãã¦è¡ã£ã¦ãåé¡ç¡ãã¨ã¯æãã¾ããã念ã®ããå¦çãåãã¾ããã
ç»åURLåå¾ã®ã³ã¼ãã¯ä¸è¨ã®éãã§ãã
Tumblrã®API_KEYãå¿
è¦ãªã®ã§ãåèªã§ãç¨æãã ããã
ã¾ããrequests
ã使ç¨ããã®ã§ãpip install requests
ãäºåã«è¡ã£ã¦ãã ããã
import requests import time num = 50 url = 'https://api.tumblr.com/v2/tagged' payload = { 'api_key': 'YOUR_API_KEY', 'tag': 'æ°å£çµè¡£', 'before': '' } photo_urls = [] for i in range(num): r = requests.get(url, params=payload) r_json = r.json() for data in r_json['response']: if data['type'] != 'photo': continue for photo in data['photos']: photo_urls.append(photo['original_size']['url']) payload['before'] = r_json['response'][len(r_json['response']) - 1]['timestamp'] time.sleep(1) with open('photo_urls.txt', 'w') as file: for url in photo_urls: file.write('%s\n' % url)
ä¸åº¦ã®ãªã¯ã¨ã¹ãã«ã¤ã20件ã®æ稿ãåå¾ã§ããã®ã§ãnum = 50
ã§ããã1000件åã®æ稿ããç»åURLãåå¾ãããã¨ã«ãªãã¾ãã
次ã«ãçæããURLãªã¹ããããå®éã«ç»åãåå¾ãã¾ãã
import requests import time photo_urls = [] with open('photo_urls.txt', 'r') as f: line = f.readline() while line: photo_urls.append(line.strip()) line = f.readline() for i, url in enumerate(photo_urls): extension = url[-3:] if extension != 'jpg' and extension != 'png': continue with open('./TumblrImages/' + str(i) + '.jpg', 'wb') as handler: response = requests.get(url) if not response.ok: continue handler.write(response.content) time.sleep(1)
URLããé 次ç»åãåå¾ããTumblrImagesãã£ã¬ã¯ããªã«æ ¼ç´ãã¾ãã
ã²ã¨ã¾ãããã§ç»åã®åéä½æ¥ã¯çµäºã§ãã
èªåã®å ´åã¯ãæçµçã«1931æã®ç»åãéã¾ãã¾ããã
å¿èã¯è¾ããå½¹ã«ç«ã¤
ä¸çæ¸å½åéãã¦ããç»åã§ããããã®ã¾ã¾ã§ã¯é¡ã®ç¹å¾´ãã¼ã¿ã¨ãã¦ã¯ä½¿ãã¾ããã
ãªã®ã§ãåã
ã®ç»åã«å¯¾ãã¦OpenCVãç¨ãã¦é¡ãæ¤åºããé¡ã®ç¯å²ãåãåºãå¦çãè¡ãã¾ãã
import os import cv2 data_dir_path = './TumblrImages/' image_list = os.listdir(data_dir_path) # æããglobã§åå¾ããæ¹ãè¯ã front_cascade = cv2.CascadeClassifier('/path/to/your/opencv3/haarcascade_frontalface_default.xml') count = 0 for i, image_name in enumerate(image_list): image = cv2.imread(data_dir_path + image_name) gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) frontfaces = front_cascade.detectMultiScale(gray, scaleFactor=1.2, minNeighbors=5) for (x, y, w, h) in frontfaces: dst = image[y:y + h, x:x + w] cv2.imwrite('./FaceImages/' + str(count) + '.jpg', dst) count += 1
detectMultiScale
ã§é¡æ¤åºã®è¨±å®¹åº¦åã大ãããã¦ãã¾ãã¨ãããªãã´ããç´ãè¾¼ãã§ããã®ã§é©å½ãªãã©ã¡ã¼ã¿ãè¨å®ããå¿
è¦ãããã¾ãã
ä½è«ã§ãããå人çã«ã¯OpenCVã®é¡æ¤åºã®ç²¾åº¦ã¯ä½ãé«ããªãããã«æãã¾ããã
åå¦ççã®å·¥å¤«ãå¿
è¦ãªã®ããªãã¨ããå°è±¡ã§ãã
æçµçãªåãæãå¾ã®ç»åã¯ã1839æã§ããã
ãã¦ãããã¾ã§ã®ä½æ¥ãçµããã¨ãFaceImages
ãã£ã¬ã¯ããªã¯ã¬ããã¼ã®é¡ã§æºãããã¦ããã¯ãã§ãã
ãããæ®å¿µãªãã¨ã«ãOpenCVã§ã®èª¤æ¤åºç»åããå¥äººã®é¡ãä¸é¨ç´ãè¾¼ãã§ãããããåãé¤ãä½æ¥ãå¿
è¦ã«ãªãã¾ãã
ä½ãå¹ççãªæ段ãããã°è¯ãã£ãã®ã§ãããæ®å¿µãªããå¦æ¡ãæãæµ®ãã°ãªãã£ãã®ã§ãç®è¦ã§åé¡ãã¾ãã
import glob import shutil import cv2 data_dir_path = './FaceImages/' image_list = glob.glob(data_dir_path + '*.jpg') gakkies = [] others = [] for i, path in enumerate(image_list): image = cv2.imread(path) cv2.imshow('image', image) # Left arrow is not gakky: 63234 # Right arrow is gakky: 63235 key = 0 while key != 63234 and key != 63235: key = cv2.waitKey(0) if key == 63234: others.append(path) else: gakkies.append(path) cv2.destroyAllWindows() for gakky in gakkies: shutil.move(gakky, data_dir_path + 'Gakky/.') for other in others: shutil.move(other, data_dir_path + 'Other/.')
ä¸æãã¤ç»åã表示ãã¤ã¤ãç¢å°ãã¼ã®å
¥åã§ã¬ããã¼ã¨ãã®ä»ãåé¡ãã¾ãã
æçµçã«ãããããGakky
ãã£ã¬ã¯ããªã¨Other
ãã£ã¬ã¯ããªã«ç»åã移åãã¾ãã
åé¡å¾ã®ææ°ã¯ãã¬ããã¼ã887æããã®ä»ã952æã§ããã
åé¡å¾ã¯ãç¡äºã¬ããã¼ã®é¡ã§ãã£ã¬ã¯ããªãæºãããã¦ãããã¨ã確èªã§ãã¾ãã
ããã§ããããå¦ç¿ãã¼ã¿ã®æºåãå®äºã§ãã
NumPyã¯è¦ãããå½¹ã«ç«ã¤
å¦ç¿ãè¡ã£ã¦ããã«ããããç»åãã¼ã¿ãNumPyé åã¨ãã¦ä¿åãã¦ããã¾ãã å®éã®å¦ç¿ã¯ãã®ãã¼ã¿ãåºã«è¡ããã¾ãã
import os import glob import numpy as np import cv2 data_dir_path = './FaceImages/' tmp = os.listdir(data_dir_path) dir_list = sorted([x for x in tmp if os.path.isdir(data_dir_path + x)]) X_data = [] Y_data = [] for i, dir_name in enumerate(dir_list): images = glob.glob(data_dir_path + dir_name + '/*.jpg') for path in images: image = cv2.imread(path) image = cv2.resize(image, (64, 64)) image = image.transpose(2, 0, 1) image = image / 255. X_data.append(image) Y_data.append(i) X_ary = np.array(X_data) np.save('X_data.npy', X_ary) Y_ary = np.array(Y_data) np.save('Y_data.npy', Y_ary)
X_data.npy
ãç»åãã¼ã¿ã®é
åã§ãY_data.npy
ãæ£è§£ã¯ã©ã¹ã®é
åã§ããã
ç»åã®é©åãªãµã¤ãºãåãããªãã£ãã®ã§ãã¨ãããã64*64ã«ãã¦ãã¾ãã
Kerasã¯è§ã ãå½¹ã«ç«ã¤
ãããããæ¬é¡ã®Kerasã使ã£ã深層å¦ç¿ã«å
¥ã£ã¦ããã¾ãã
å¿ç¨ããã ãã®ã¹ãã«ãç¥èãç¡ãã®ã§ãKerasããã¥ã¡ã³ãã®å
¬å¼ã«æ²è¼ããã¦ããVGG風CNNã®ã¢ãã«æ§é ã微修æ£ããªããå©ç¨ããã¦è²°ãã¾ãã
Kerasã§ã¯ãTensorFlowãããã¯ã¨ã³ãã§ä½¿ç¨ãã¾ãã
ä»åã¯GPUã使ããªãã®ã§ãã¤ã³ã¹ãã¼ã«ã¯ã·ã³ãã«ã§ãã
ã¤ãã§ã«ããã¤ãã®å¿
è¦ãªããã±ã¼ã¸ãå
¥ãã¦ãã¾ãã¾ãããã
$ pip install scikit-learn scipy pandas matplotlib $ pip install tensorflow keras h5py $ python >>> import keras Using TensorFlow backend.
ãã®ããã«ããã¯ã¨ã³ããTensorFlowã«ãªã£ã¦ãããã¨ã確èªã§ããã°æºåå®äºã§ãã
ã§ã¯å®éã«å¦ç¿ãè¡ãã¾ãã
from keras.models import Sequential from keras.layers import Dense, Dropout, Activation, Flatten from keras.layers import Convolution2D, MaxPooling2D from keras.optimizers import SGD from keras.callbacks import ModelCheckpoint import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split # å¦ç¿ãã¼ã¿ã®ç¨æ X_data = np.load('X_data.npy') Y_data = np.load('Y_data.npy') X_train, X_test, Y_train, Y_test = train_test_split( X_data, Y_data, test_size=0.15, random_state=42) # ãªãã·ã§ã³æå® batch_size = 32 nb_classes = 2 nb_epoch = 50 # ã¢ãã«å®ç¾© model = Sequential() model.add(Convolution2D(32, 3, 3, border_mode='same', input_shape=X_train.shape[1:])) model.add(Activation('relu')) model.add(Convolution2D(32, 3, 3)) model.add(Activation('relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Dropout(0.25)) model.add(Convolution2D(64, 3, 3, border_mode='same')) model.add(Activation('relu')) model.add(Convolution2D(64, 3, 3)) model.add(Activation('relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Dropout(0.25)) model.add(Flatten()) model.add(Dense(256)) model.add(Activation('relu')) model.add(Dropout(0.5)) model.add(Dense(nb_classes)) model.add(Activation('softmax')) sgd = SGD(lr=2e-2, momentum=0.9, decay=0.0, nesterov=True) model.compile(loss='sparse_categorical_crossentropy', optimizer=sgd, metrics=['accuracy']) checkpointer = ModelCheckpoint(filepath="./Models/gakky_face_model.hdf5", verbose=1, save_best_only=True) # ã¢ãã«å¦ç¿ hist = model.fit(X_train, Y_train, batch_size=batch_size, nb_epoch=nb_epoch, validation_data=(X_test, Y_test), shuffle=True, verbose=1, callbacks=[checkpointer]) # å¦ç¿çµéã®ãããã plt.style.use("ggplot") df = pd.DataFrame(hist.history) df.index += 1 df.index.name = "epoch" df[["acc", "val_acc"]].plot(linewidth=2) plt.savefig("acc_history.pdf") df[["loss", "val_loss"]].plot(linewidth=2) plt.savefig("loss_history.pdf")
ããã
Exception: Error when checking model target: expected activation_ to have shape
ã¨ãããããªã¨ã©ã¼ãåºã¦ããå ´åã~/.keras/keras.json
ãéãã"image_dim_ordering": "th"
ã¨ä¿®æ£ããã¨ä¸æãããããããã¾ããã
ããã¯ã¨ã³ããTensorFlowãªã®ãTheanoãªã®ãäºã
ã§çºçããåé¡ãããã§ããã詳細ã¯åããã¾ããã
ã³ã¼ãã®æ¹ã§ã¯ãã¢ãã«ãå®ç¾©ããå¦ç¿ãããæå¾ã«model.fit
ã®è¿ãå¤ã®history
æ
å ±ã使ã£ã¦ãå¦ç¿çµéãPDFã§ä¿ç®¡ãã¦ãã¾ãã
å¦ç¿æã®callback
ã«ModelCheckpoint
ãæå®ãããã¨ã§ãå
¨ã¨ããã¯ä¸ã§æãè¯ãææ¨ã«ãªã£ãã¢ãã«ãèªåçã«ä¿åããããã«è¨å®ãã¾ããã
ä¿åå
ã®ãã£ã¬ã¯ããªã¯äºåã«ç¨æãã¦ããªãã¨ã¨ã©ã¼ã«ãªãã®ã§ã注æãã ããã
ã¡ãªã¿ã«ãå¦ç¿çµéã¯ãã®ããã«ãªãã¾ããã
ä»åã¯ç¬¬20epochãæãåªç§ã ã£ãããã§ãã
人工ç¥è½ã¯äººé¡ææªã«ãã¦æå¾ã®çºæã ãå½¹ã«ç«ã¤
ã¢ãã«ãå®æããã®ã§ã試ãã«å¯¾è©±ç°å¢ã§ãã¼ããã¦éãã§ã¿ã¾ãã
$ python >>> from keras.models import load_model Using TensorFlow backend. >>> import numpy as np >>> import cv2 >>> model = load_model('./Models/gakky_face_model.hdf5') >>> def predict(path): ... image = cv2.imread(path) ... image = cv2.resize(image, (64, 64)) ... image = image.transpose(2, 0, 1) ... image = image / 255. ... image = image.reshape(1, 3, 64, 64) ... print(model.predict(np.array(image))) >>> predict('gakky.png') [[ 0.96610594 0.03389405]] >>> predict('yama.png') [[ 0.21037847 0.78962159]]
ä¸è¨ã®ãããªé©å½ã«ç¨æããã¬ããã¼ã®é¡ç»åã¨Sierraã®å±±ä¸¦ã¿ï¼ä¸é¨ï¼ï¼ã«å¯¾ãã¦äºæ¸¬ããã¨ã確ãã«çµæã¯æ£ãããã§ãã
åç»å¦çã¯éããå½¹ã«ç«ã¤
ããããã¯ãç¨æããã¢ãã«ã使ç¨ããªãããå®éã«æãã³ã¹åç»ã®å å·¥å¦çãè¡ãã¾ãã
ã¨ããããæãã³ã¹ã®åç»ãå¿
è¦ãªã®ã§ãTBSã®å
¬å¼Youtubeããé æ´ãã¾ãã
åé ããè¿°ã¹ã¦ããéããå¤å¥æ©ãã¬ããã¼ã®é¡ã ã¨å¤æããã°ãã®ã¾ã¾ããã®ä»ã®é¡ã ã¨å¤æããã°ä¸è¨ã®ã¬ããã¼ãã§ã¤ã¹ã§ä¸æ¸ããã¾ãã
åç»å å·¥ã®ããã®ã³ã¼ãã¯ä¸è¨ã®éãã§ãã
import cv2 import datetime import numpy as np from keras.models import load_model # åç»é¢ä¿æºå target = 'input.mp4' # æãã³ã¹åç» result = 'output.m4v' movie = cv2.VideoCapture(target) fps = movie.get(cv2.CAP_PROP_FPS) height = movie.get(cv2.CAP_PROP_FRAME_HEIGHT) width = movie.get(cv2.CAP_PROP_FRAME_WIDTH) fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v') out = cv2.VideoWriter(result, int(fourcc), fps, (int(width), int(height))) # é¡èªèæºå model = load_model('./Models/gakky_face_model.hdf5') cascade_path = '/path/to/your/opencv3/haarcascade_frontalface_default.xml' cascade = cv2.CascadeClassifier(cascade_path) gakky_n = 0 # ã¢ãã«äºæ¸¬æã®ã¯ã©ã¹çªå· # æ¸ãè¾¼ã¿ç»åæºå ol_imgae_path = "gakky.png" ol_image = cv2.imread(ol_imgae_path) # åãã¬ã¼ã ã¸ã®å¦ç if movie.isOpened() is True: ret, frame = movie.read() f_h, f_w = frame.shape[:2] else: ret = False while ret: # é¡æ¤åº gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) frontfaces = cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=2) # é¡èªè for (x, y, w, h) in frontfaces: dst = frame[y:y + h, x:x + w] image = cv2.resize(dst, (64, 64)) image = image.transpose(2, 0, 1) image = image / 255. image = image.reshape(1, 3, 64, 64) face_class = model.predict_classes(np.array(image), verbose=0) # ã¬ããã¼ãããªããã°ä¸æ¸ã if face_class != gakky_n: resized = cv2.resize(ol_image, (h, w)) frame[y:y + h, x:x + w] = resized cv2.rectangle(frame, (x, y), (x + w, y + h), (255, 0, 0), 2) # ãã¬ã¼ã æ¸ã込㿠out.write(frame) ret, frame = movie.read() # 50ãã¬ã¼ã ãã¨ã«çµéãåºå if movie.get(cv2.CAP_PROP_POS_FRAMES) % 50 == 0: print(datetime.datetime.now().strftime('%H:%M:%S'), 'ç¾å¨ãã¬ã¼ã æ°ï¼' + str(int(movie.get(cv2.CAP_PROP_POS_FRAMES)))) # éä¸ã§çµäºããå ´åã³ã¡ã³ãã¤ã³ # if movie.get(cv2.CAP_PROP_POS_FRAMES) > 500: # break
æ¤è¨¼æ®µéã§ã¯ãåãããããããã«é¡æ¤åºããã¨ãªã¢ã«æ ãæåãã¦ãã¾ãã
ã¤ã¾ããæ ã®ã¿ã¯å¤å¥æ©ãã¬ããã¼ã ã¨å¤æããã¨ãªã¢ã§ãæ +ã¬ããã¼ã¯å¤å¥æ©ãã¬ããã¼ã§ãªãã¨å¤æããã¨ãªã¢ã§ãã
å®éã®å¦ççµæã¯ãã®ããã«ãªãã¾ãã
ãªãã¨ãããã¨ã§ãããã
é¡ã®èª¤æ¤åºãå¤ããã¦é
·ãä»ä¸ããã§ãã
æ´ã«ããã¨ãä»ã®äººã®é¡ãã¬ããã¼ã«å¤æããã¨ããå½åã®ç®çããéæã§ãã¦ãã¾ããã
ããã¯ãã¬ããã¼ã®é¡ãããã§ãªããã¨ããäºå¤åé¡ã§ã¯ãªããé¡ã£ã½ããããã§ãªããã¨ããå½¢ã§å¦ç¿ããã¦ãã¾ã£ãããã ã¨èãããã¾ãã
å·éã«èããã°å½ããåã§ããã
ã¾ã¨ãã¯éã ãå½¹ã«ç«ã¤
ãã®è¨äºã§ã¯ãã¬ããã¼ã®é¡ç»åãåéããåé¡ããå¦ç¿ããåç»ãå å·¥ããã¾ã§ã®éç¨ãè¨è¼ãã¾ããã
æ®å¿µãªããè³ããçµæã¯ä¼´ãã¾ããã§ããããåé¡ã®åå ã¯æãããªããã«æããã¾ãã
ã¨ããããã§ããã®è¾ºãã®åé¡ã解æ¶ãã¦ããããã®ã§ãããã ãã¶é·ããªã£ã¦ãã¾ã£ãã®ã§ãç¶ãã¯å¾ç·¨ã§ã
åèã¯å¥ãµã¤ãã ãå½¹ã«ç«ã¤
ã¢ããã¼ã·ã§ã³
新垣結衣 | アーティスト | レプロエンタテインメント
ご注文はDeep Learningですか? - kivantium活動日記
Keras
Keras Documentation
Are there any codes for AlexNet, ZF Net, GoogLeNet, VGGNet in Keras · Issue #1568 · fchollet/keras · GitHub
Error when checking model target: expected activation_2 to have shape (None, 10) but got array with shape (3, 1) · Issue #3109 · fchollet/keras · GitHub
Kerasでアニメキャラの顔認識 - Qiita
続・深層学習でアニメ顔を分類する with Keras - Qiita
åç»
Python + OpenCV で雑コラ動画を作成する③ 雑コラ動画作成 - Qiita
overlay a smaller image on a larger image python OpenCv - Stack Overflow