VGGベースの顔認識

Kerasで顔認識をしたかったので、人のコード見ながら処理の流れを理解した。
参考にしたのはこれ↓

VGG-Face model for keras · GitHub

上のはバックエンドにTheanoを使っていたが、TensorFlowにした。 と言っても、画像の配列の順番を変えるだけなんで、Inputの部分を変えた。

畳み込みのBlock あたりは同じfilterとMaxPoolingを変えるだけなのでクラスでウェイとやった。

そんだけ。

あと、argparseとか導入した。

そんだけ

コード

VGG-Face model for keras · GitHub

もやっとすること

当たり前の話だけど、環境構築の際にエラーが発生した際に、レポジトリに行って同じ問題のissueがないか探す。
よほどのことがない限り該当のissueを見つけるのだけど、Docker Imageを渡して解決っていうのをたまに見かける。 ああいうの駆逐してほしい。

Deep Learningを学び始めた

卒業研究のために、Deep Learningを学び始めました。 手始めにUdacityのDeep learningコースの動画を見ています。現在、From Machine Learning to Deep Learningの半分までやりました。 Udacityいいですよね。無料で受けられるのは非常にありがたい話です。

https://www.udacity.com/course/deep-learning–ud730www.udacity.com

上のと並行して、ゼロから作るDeep Learningも勉強します。こちらは今週の木曜までに全部終わらせたいなぁ。

www.oreilly.co.jp

剣術体験してみたぞい!

タイトルの通り、古武術 是風会の元で剣術の体験をさせていただきました。 ささっと経緯と感想だけ書きます。

roots-of-japan.wixsite.com

経緯

  • 元々剣術とか習ってみたかった
  • FGOで是風会のTwitterを知る
  • これだと思い連絡
  • 実際体験

以上。なお、FGOはやったことがない模様

感想

超楽しい

袈裟斬りとか二刀を使った素振りするのすごい楽しい(小並感)木刀ずっと握っていたら少し痺れた
今まで剣術、剣道に触れたことがない素人でしたが不安もありましたが、やってみたら不安とかすっかり抜け落ちるぐらいに楽しかったです。

アメブロのブログ記事をスクレイピングで全件取得する方法

www.adventar.org

1日遅れてしまいましたがアドベントカレンダー22日目です。タイトルの通り、ある特定のユーザーのブログ記事全てを取得する方法について書きたいと思います。よろしくお願いします。

目的

  1. 声優のブログ自動生成を行う為、ブログ記事全てを取得する必要がある
  2. 下記の記事で方法は書いてあったが、それだけだと学びがないのでPython3で行う

qiita.com

結果

まず初めに、麻倉もものブログで試しましたが、↓の記事のタイトルにある"/"によって指定したパスがおかしくなりエラーが出る。

ameblo.jp

次に雨宮天で試すも、同じくタイトルに"/"のある記事が存在するためエラーが発生する。

ameblo.jp

最後に夏川椎菜で試したところ、タイトルに"/"を使用した記事がなかったようで、全件取得することができました。

コード

稚拙なコードでありますが、コピペして実行すると夏川椎菜のブログ記事全てを取得することができます。お試しください。

  • Scraping.py
# coding:utf-8
import re

import requests
from bs4 import BeautifulSoup


def get_entry_list(html):
    url_list = [html]
    while True:
        html = requests.get(html).content
        soup = BeautifulSoup(html, "lxml")
        next_page = soup.find("a", {"class", "skinSimpleBtn pagingNext"})
        if isinstance(next_page, type(None)):
            print("finish")
            return url_list
        else:
            url_list.append(next_page["href"])
            html = next_page["href"]


def get_url(entry_list):
    page_list = []
    for html in entry_list:
        html = requests.get(html).content
        soup = BeautifulSoup(html, "lxml")
        text = soup.find_all("a", {"class", "contentTitle"})
        page_list.append(text)
    print("finish")
    return page_list


def cleanhtml(raw_html):
    cleanr = re.compile("<.*?>")
    cleantext = re.sub(cleanr, "", raw_html)
    return cleantext


def scraping(all_entry_list, BASE_DIRE):
    for entry_list in all_entry_list:
        for url in entry_list:
            title = url.string
            with open("{dir}{title}.txt".format(dir=BASE_DIRE, title=title), "w") as file:
                html = requests.get(url["href"]).content
                soup = BeautifulSoup(html, "lxml")
                div_text = soup.find("div", {"class", "articleText"})
                text = cleanhtml(str(div_text)).strip()
                print("Written file: {0}.txt".format(title))
                file.write(text)
    print("finish")


  • createFiles
from Scraping import get_url, get_entry_list, scraping

name_list = {"Asakura_Momo": "asakuramomoblog", "Amamiya_Sora": "amamiyasorablog",
             "Natukawa_Shiina": "natsukawashiinablog"}
blog_id = name_list["Natukawa_Shiina"]
url = "http://ameblo.jp/{0}/entrylist.html".format(blog_id)
BASE_DIRE = "/Users/username/XXXXXXXXXXXXXX/data/{0}/".format("Natukawa_Shiina")
all_entry_list = get_entry_list(url)
page_list = get_url(all_entry_list)
scraping(page_list, BASE_DIRE)

追記(2017/01/12)

結局、re.subを使ってtitleからスラッシュをとる方法で他の二人も全件取得しました。

def cleanslash(blog_title):
    cleanr = re.compile("/")
    cleantext = re.sub(cleanr, "", blog_title)
    return cleantext