Qstairs

現役AIベンチャーCTOの知見、画像認識(人工知能、Deep Learning)を中心とした技術ノウハウをアップしていきます

広告

【DeepLearning】Tesla V100はCUDA9.0以上しか対応していない。だったらTensorflow1.5を使おう。

f:id:qstairs:20160601221351j:plain

最近、AI案件でAWSを扱い始めています。

処理速度が必要なので、AWSのp3インスタンスを使用していますが、
困ったことにp3のGPUはTesla V100でCUDA9.0以上しか対応していない!

Tensorflow1.4はターゲットはCUDA8.0なので、
ちゃんと動かないという非常事態が...
有志が作成したソースをビルドすれば良いという記事もあるがなかなかうまくいかず...

そんな時にTensorflow1.5がリリースされました\(^o^)/
Tensorflow1.5はCUDA9をサポートしているので早速インストール!

ちゃんと動きました。

【Python】WindowsでMiniconda, Anacondaで仮想環境を作成する際の注意点

f:id:qstairs:20160601221351j:plain

WindowsでMiniconda, Anaconda等で、
仮想環境を作成する際の注意点

以下コマンドで仮想環境を作成しようとすると、

conda create -n mykeras

以下のエラーが出ました。

Error: too few arguments, must supply command line package specs or --file

何やら引数が足りていないとのこと。

なので、以下のようにするとうまくいきます。

python 2.7を使用する場合

conda create -n mykeras python=2.7

python 3.5を使用する場合

conda create -n mykeras python=2.7

【Web】Laravelにまで手を付け始めました...

f:id:qstairs:20160601221351j:plain

はじめに

これまで、何度かWebアプリのフレームワークである
Ruby on RailsDjango
に関して使い方や実装方法を紹介してきました。

そして、なんと
Laravelにまで手を付け始めました。

知り合いのCTOの方にWebアプリの仕事のご依頼をいただき、
そのアプリがLaravelで動いているということでただいま勉強中です。

ということで、Laravelの環境構築からちょっと動かすところまでを紹介します。
#Ruby on RailsDjangoといったフレームワークを使用したことがある人向けです。

環境構築

今回はWindows10にインストールしているVirtualboxCentOSの6.8を構築し、
そこにPHPとLaravelをインストールしています。

インストールした感想は、
正直言ってわけわからない

というのもLaravelは人気があるようで、
インターネット上に構築方法が転がっているのですが、
どのバージョンでリリースしているのか明確に記載していなかったり、
構築方法の途中でフェードアウトしているサイトがあったり...

そんな中で私が参考にしたサイトは以下になります。
※といっても色々試しながら構築したので不十分かもしれません...

CentOSにPHP5.6をインストールする方法はこちら

CentOSにLaravelをインストールする方法はこちら

ちょっと動かす

Requestクラスの基本(1/5):初心者のためのLaravel入門を参考に
Laravel5.4での動かし方を記載します。


Web画面や処理を追加する際の肝になるのが
Djangoで言うところの「urls.py」に相当する「view.php」です。
ここに「Route::get」や「Route::post」を記載していきます。

// Laravel 5.4
Route::get('/helo/index', 'HeloController@getIndex');
Route::post('/helo/index', 'HeloController@postIndex');

上記の「HeloController」がファイル名で
「getIndex」が処理(メソッド)名になります。
これは「app/Controllers/HeloController.php」のようにファイルを用意し、
以下のように記述します。

<?php
namespace App\Http\Controllers;
 
use Illuminate\Http\Request;
 
use App\Http\Requests;
use App\Http\Controllers\Controller;
 
class HeloController extends Controller
{
    public function getIndex()
    {
        return view('helo', ['message' => 'Hello!']);
    }
    public function postIndex(Request $request)
    {
        $res = "you typed: " . $request->input('str');
        return view('helo', ['message' => $res]);
    }
}

return view('helo', ['message' => 'Hello!']);の
「'helo'」は画面処理のファイル名で
「resource/views/helo.blade.php」でファイルを作成することで紐づきます。
また、ファイル名に「.blade」を追加した目的は、
テンプレートエンジンを使えるようにするためです。
#下記の「{{ csrf_field() }}」がそれにあたります。

helo.blade.phpファイルの中身は以下になります。

<!doctype html>
<html>
<head>
    <title>Sample</title>
    <style>
    body { color:gray; }
    h1 { font-size:18pt; font-weight:bold; }
    </style>
</head>
<body>
<?php echo csrf_field(); ?>
    <h1>Sample</h1>
    <p><?php echo $message; ?></p>
    <form method="post" action="/helo/index">
      {{ csrf_field() }}
        <input type="text" name="str">
        <input type="submit">
    </form>
</body>

以上により、
localhost:8000/helo/indexへのアクセス
画面内の入力フォームの処理と結果の表示までが実現できます。


最後に

Laravelはバージョンによってフォルダ構成が大きく異なるので注意が必要です。
インターネットで調べる際はバージョンを確認しないとわけわからないことになります。

例えばLaravel5.1では存在したroutes.php
Laravel5.4ではroutesフォルダが設けられapi.phpやview.phpで分けられています。

5.1→Requestクラスの基本(1/5):初心者のためのLaravel入門
5.4→Laravel 5.4 (3)ルーティング基礎(認証) | ほぼWebエンジニアリング


これからさらに勉強していきます。

以上

【フリーランス】自宅作業になっての感想と1週間の活動について

f:id:qstairs:20171102004518j:plain

はじめに

自宅で作業するフリーランスのITエンジニアになって1週間以上たちました。

自宅作業はどんな感じか、どういう活動をしているのかつらつら書きます。

自宅作業

これまでは決められた時間にオフィスに行くために準備し、
オフィスに着き椅子に座りPCを立ち上げて仕事をすることが日常でした。

そんな日常から一転
今は決められた時間はなく、
オフィスは自宅で椅子に座りPCをスリープから起動し仕事をしています。

何が変わったか。
・行かなきゃいけないがない
・人に会う場合を除いて移動がない
  究極的に言えば起きてすぐ仕事できる!(良いことなのか!?)
・割り込み作業がないからやりたいようにできる
・パジャマで仕事
・歌いながら仕事
・いつでも休憩できる
・コンビニ店員にしか会わない


一歩間違えればニートですね。。。


自律的に行動できないと自宅作業はやめたほうがいいです。
自律的になるためには目標をちゃんと設定しなきゃですね。

目標がその日その日を支配する

横浜高校の野球部 渡辺前監督の言葉です。




活動

この一週間は慣れないことが多く大変でした。
ピッチイベントをはじめとし、
そこで出会った方々と改めてあってお話しすることが多かったです。
これまで仕事の中で面識の浅い人としっかり話すことが少なく、かつ人見知りなのでへとへとです。

でも、いろいろな方との繋がりを持てることはほんとにありがたいことです。
事業の進展にお力を貸してくれる方や、
これまでの経験を見込んで仕事を依頼してくれる方などに会うことでモチベーションが上がります。

現在SNS等が発展して直接会わなくてもコミュニケーションをとることはできますが、
だからこそ直接会うことの価値が高くなっているのではないでしょうか。

ITエンジニアの方には特にいろんな方に直接会ってほしいと思っています。
仕事取れますよ。

こんな私にお会いいただける方はTwitterでご連絡ください。
#東京、神奈川あたりになります。

以上

【AI】国際宝飾展秋に来た②

f:id:qstairs:20171027122420j:plain

下記の続きです。

qstairs.hatenablog.com


◯Automagi株式会社
Automagi株式会社はシステム開発会社で、
AIを使用したシステムも開発している。

事業開発部 AIビジネスコンサルタント 相馬氏が登壇。

「事例からみるAIの現状と活用法について」というテーマで講演。

内容は大きく4つ。
◯AIのこれまでと現状
◯AI活用ユースケース
◯AIの導入について
◯AMYについて

◯AIのこれまでと現状
AIの歴史と現状、これからの盛り上がりとともに、
どういった技術かを説明。
日経新聞で2015年から一年ごとの10月のAI関連の記事の数値を紹介。
 2015年10月:30件
 2016年10月:300件
 2017年10月:500件

◯AI活用ユースケース
幾つかの事例を紹介。
その中の一部が以下になります。

住信SBIネット銀行 バナー広告配信の最大利得化
 金融商品の広告
  買った、買ってない、与信通った、通ってないの情報を元にさらにAIを強化

・デンタルサポート
 歯の欠損から自動CAD

野村不動産
 チャットボットで営業

JINS
 メガネリコメンド:似合っているかどうか

◯AIの導入について
AIの導入時に気をつけるべきポイントを説明。

AI導入までは約4-6ヶ月を目安に。

AI導入時のチェックポイント
 何を解決したいのか
 データはあるのか、作るのか
 スケジュールは大丈夫か
 情報の取り扱い、セキュリティは問題ないか

AIで気をつけるべきポイント
 AIは100%ではない
 データは質が重要
 自動的に賢くなるとは限らない
 ディープラーニングは最強ではない
 AIは統計である
 
分野を絞る
 全てAIは難しい。人とのハイブリットが好ましい。

◯AMYについて
AutomagiのAI「AMY」について紹介。
「AMY」は大きく分けて、
自然言語
・データ分析
・画像認識
領域で対応可能。

製品としては、
チャットボットの「AMY AGENT」
居酒屋で沈黙が訪れたらぼそっとつぶやく「AMY TALK」などがあるとのこと。
 

個人的に「AMY TALK」使ってみたい。

【AI】国際宝飾展秋に来た①

f:id:qstairs:20171027122420j:plain

はじめに

今日国際宝飾展秋に来ています。

ITエンジニアの私がなぜ宝飾展に??
という感じですが、
実はこの宝飾展で特別セミナーとして
人工知能×宝飾ビジネスのセミナーが開かれているのです!


このブログでも人工知能に関して様々取り上げているように、
人工知能に対して関心があるのでこれは聴きに行こうと思いセミナーを聴講しています。
【AI】日本初のAI・人工知能EXPOに行ってきた! - Qstairs
【AI】日本初のAI・人工知能EXPO 出展内容 - Qstairs

今日は以下3社のAI関連企業がセミナーを開催しています。
カラフル・ボード株式会社
Automagi株式会社
株式会社チャモ

全社のセミナーを聞く予定なので、
このブログでご紹介できればと思います。

※どこまで具体的な情報を記載して良いのかわからないので、
 若干抽象的になります。

カラフル・ボード株式会社

渡辺CEOが登壇。
どういう活動を行っており、どういった成果が出ているのかを説明。

パーソナライズをテーマに人の感性をAIで学習し、
「AIを使って個人にマッチした商品と出会う」ことを目指している。

現状はアパレル業界へ注力しており、
マーケティング、生産/仕入に関するソリューションを提供しているとのこと。
特にマーケティングについては強く、
効果が数値に出ているとのことでした。

AIを活用した対応としては、以下を行っています。
・見込み客の明確化、広告のパーソナライズ
・セグメンテーションし、どうすれば購入まで持っていけるのか
・メールやクーポンのパーソナライズ


この他にも「SENSY CLOSET」というアプリを開発し、
コーディネートの記録、AIリコメンド機能を搭載し、
販売した商品が着られているのか、どういう組み合わせで着られているのかのデータを取得。
そのデータを用いて商品企画につなげるとのこと。


また、様々な企業から相談を受けた経験から得た
AI新規ビジネスを成功に導く鍵
についても説明し、
事業戦略の深い洞察、最先端技術の適切な活用をセットに考え、
LEANな事業開発プロセスで展開するべきとのこと。
プロセスとしては、
事業策定→サンプル検証→トライアル→本格展開
で進めるのが良いだろうとおっしゃっていました。

私の率直な感想は、
データの集め方、使い方、それを活用したAIによるビジネスの広げ方のセンスがとてもすごい
と思いました。


qstairs.hatenablog.com

【Django】テンプレートフィルタを自作する!

f:id:qstairs:20160601221351j:plain

はじめに

DjangoWEBサービスをガリガリ開発しています。
開発している中で、
views.pyから画面に渡されたリストデータを
インデックス指定して値を取得したい事態になりました。

予め用意してあるDjangoのテンプレートフィルタの中に、
リストデータからインデックス指定して値を取得する機能はありません。

そこで、今回以下のサイトを参考に、
テンプレートフィルタを自作しました。

テンプレートタグやフィルタを自作する — Django 1.4 documentation

完成ソース

リストAとBがあった際に、
Aをループで回しながらBの値を取得する処理です。
#インデックスオーバーになったらどうすの?とか辞書型を使えば?とかは置いておいてください...

「index」というテンプレートを読み込んでインデックスを指定してリストBから取得します。

{% load index %}
{% for val in A %}
<tr class="even">
  <td>{{ val }}</td>
  <td>{{ B|index:forloop.counter0 }}</td>
</tr>
{% endfor %}

フィルタの作り方

まずは必要なフォルダ「templatetags」を作成
models.pyやviews.pyと同じ階層に作ります。

・フォルダ構成
templates
templatetags
models.py
views.py


templatetagsフォルダ内に
「__init__.py」と「index.py」を作成
「__init__.py」の中身は空で良いです。


・index.py
以下のようにリストからインデックス指定で値を返すindex関数を作成します。

from django import template
register = template.Library()

@register.filter
def index(List, i):
    return List[int(i)]


以上で出来上がりです。
index.pyやその中の関数名等は適当に皆さんのやりたいことに合わせて変えてもらえれば大丈夫です。


以上

広告