« 2017年12月 | トップページ | 2018年2月 »

2018年1月31日 (水)

Intelのカード型PCが販売中

去年初めごろに登場し、2017年中に売り出されるといわれていたIntelのカード型PCがこのほど日本でも発売されたようです。

Intelのカード型コンピュータ「Compute Card」の店頭販売スタート - AKIBA PC Hotline!

プロセッサがCore m3-7Y30、メモリ4GB、128GB SSDを搭載した「BLKCD1M3128MK」が47300円、Celeron N3450、メモリ4GB、64GB eMMCの「BLKCD1C64GK」が20800円で売られてるそうです。

これ単体では動作せず、ドッキングベイ「BLKDK132EPJR」を併用しなければ使えません。こちらは15800円。

面白そうなPCですが、ちょっと高いですねぇ。本体、ドックがセットで2万円程度なら、手を出してみようかと思うんですけどね。ちなみにこれ、OSなしだそうです。

今やスマホがあるので、わざわざ単体で動かないポケットに入るサイズのPCを買うものでしょうか?どうせなら、VAIO TypePくらいの大きさのPCの方がうれしいですね。

Intel NUC Core i3搭載 小型PCベアボーン 2.5インチ M.2 SSD対応 BOXNUC5I3RYH

2018年1月30日 (火)

”マイルームロビ”2月28日に登場

久々にロビ君の話題です。といっても、2足歩行ではない卓上のロビ君ですが。

デアゴスティーニから、こんなチラシが送られてきました。

Img_0522

こんなものが2月末に発売されるそうです。タカラトミーの”マイルームロビ”

なんだか、ロボット型のAIスピーカーなのかと思いきや、そこまでの機能はないようです。

Img_0523

音声認識はなく、勝手に話しかけるという機能のみ。温度湿度や、人感、TVリモコン、照度といったセンサーを備えて、それぞれのセンサーから反応してくれるというもの。

マイルームロビ|オムニボット|タカラトミー

お値段は9800円。まあ、値段並みの機能といったところでしょうか。ちなみに、首は動きますが、手足は動作不能。腕の角度は自由に変えられます。

こういうAIスピーカーがあるといいんですけど、残念ながらタカラトミーではそこまでのものを作り出せませんね・・・こういうのはGoogleやらAmazonやらに期待するしかないんですかね?

Img_0526

他にも、こんなチラシがついてました。ロビ 1の組み立て済みセット。キャリングケースもついて、なんと15万円ほど。

ロビ君を作るのに20万円以上かかりましたから、これは確かに安いですね。

Img_0527

他にも、こんな広告が入ってました。

Img_0528

ムーミンハウスの広告には、今年のセンター試験でちょっと炎上気味だったあの問題の解答が書かれてましたね。もうちょっと早く送ってくれていれば、あの問題を落さなかった受験生がいたかもしれません。

そういえば、最近はめっきりロビ君で遊ばなくなりましたね。久しぶりに出してみようかな。

マイルームロビ

2018年1月29日 (月)

ニューラルネットワークを作り出すAIが登場

今や”AI”といえばディープラーニングですが、そのディープラーニングの性能を決めているのが、そこに使われるニューラルネットワーク。

で、画像認識などの精度を上げるために、このニューラルネットワークを試行錯誤してチューニングしているのですが、このほどそのニューラルネットワークを作るAIというものが登場しました。

AIを実現する「ニューラルネットワーク」を自動的に構築することが可能なAIが出現 - GIGAZINE

MENNDLと名付けられたそのAI、実験的に作られたAIではなく、フェルミ国立加速器研究所のニュートリノ研究のために、その膨大なセンサーデータを処理するために最適なニューラルネットワークを探し出すために使われているそうです。

といっても、なんのこっちゃかよくわかりませんが・・・ただ、私自身十数層程度のニューラルネットワークのチューニングというのをやってますけど、あれでも結構大変です。

ちなみにこのMENNDLというAIが動いているのは、18,688台のTeslaが搭載されたTitanというスーパーコンピューター。現在TOP500で世界5位に位置するこのスパコンを使って、人間なら数か月かかる作業を、わずか24時間で終わらせることに成功したようです。

こういう記事を見ると、AIがAIを作り出して、ついに人類に対し反旗を翻す・・・なんてことを想像する人がいるかもしれません。でも、このAIはどんなに頑張っても人類に反旗は翻しそうにありませんね。

人間とコンピューターの関係を考えると、人間は創造が可能だが、長時間の労働では疲労が蓄積してミスが増大するという欠点があります。一方、コンピューターはミスなく長時間の労働を行ってくれるが、創造が苦手というもの。お互い得手不得手があるので、AIの終着点とは、結局人と機械の共存じゃないかと私は思ってるんですが。いちいち人間に反旗を翻しても、あまりいいことはなさそうですよね。

ソニー開発のNeural Network Console入門 ―数式なし、コーディングなしのディープラーニング

2018年1月28日 (日)

見た目が少しショッキングなiPhone/Android用鼻毛カッター

サンコーからまたまた想像の斜め上を行く製品が登場です。

シュールだけど意外に便利!? 急な「鼻毛トラブル」を救うスマホ給電の鼻毛カッター | GetNavi web ゲットナビ

スマホから電源をとり作動する鼻毛カッターです。

まあ、必要とされる人がいるもので、スマホの電源を利用することで非常にコンパクトに持ち歩ける、というそのコンセプトはわかります。

が、ちょっと上の写真があまりにショッキングな光景ですね。せめてパジャマ姿の人が使うならまだ許容できますが、背広姿で使っているのはちょっと・・・

お値段は1480円。出張のお供や、急な鼻毛カットが必要な時に便利です。

スマホde鼻毛カッター for Android NSHRCTAD ※日本語マニュアル付き 【16時締切翌日出荷※祝前日・休業日前日を除く】

2018年1月27日 (土)

Linuxが動作する小型ボードPC”PocketBeagle”

Beagle BoardというLinuxボードPCがありますが、あれの小型版が出たようです。

Linuxが動作する超小型ボード「PocketBeagle」が店頭入荷、実売3,480円 - AKIBA PC Hotline!

”PocketBeagle”というボードPC、ごらんのとおりの小型サイズで、Raspberry Pi Zeroよりも小さいです。

1GHzのプロセッサに512MBメモリを搭載したこのボードPC、Raspberry Pi同様汎用性の高い使い道が期待されるボードPCですね。

ただ、お値段が3480円とちょっと高め。Raspberry Pi Zero Wのお値段でさえ1300円ほどなので、ちょっと割高感は否めません。

個人的には、この大きさでディープラーニングの認識処理も動くほどのものが欲しいところですよね。残念ながら、今のところRaspberry Pi 3くらいないとまともに動きません。

Raspberry Pi 3にIntelのあのUSB版のMovidius Neural Compute Stickを組み合わせるのが今のところ一番お手軽なディープラーニング用エッジコンピューターですが、これを一体化したものが欲しいところですね。

Raspberry Pi Zero W Starter Kit

2018年1月26日 (金)

最小の衛星投入ロケットになるか!?小型ロケットSS-520 5号機打ち上げが2月3日に決定

打ち上げロケット自体が電柱ほどの大きさで、価格は5億円という、実現すれば世界最小最安値の衛星用ロケットとなるSS-520の打ち上げが2月3日に決まりました。

小型ロケットSS-5205号機の打上げを実施します(METI/経済産業省)

元々は昨年の12月に予定されてたんですが、不具合により延期。このほどようやく打ち上げ日が決まったようです。

昨年の1月にも衛星投入する目的でSS-520 4号機が打ち上げられましたが、このときは八社20秒後に信号が途切れ、2段目の点火を断念したという結果に終わりました。

思えば、1970年に日本が初の衛星打ち上げを行ったときも4度失敗して5度目でようやく成功したといわれてるわけですから、まだ2度目のチャレンジ。温かく見守りましょう。

それにしても、世の中デスクトップ機からノートPCへ、そして今やスマホへと個人向けコンピューターが移行しているというのに、人工衛星だっていつまでも大型でなきゃいけないわけがないですよね。ダウンサイジングされた人工衛星版の”スマホ”だってあるわけです。

そんな時代にぴったりなロケットになりそうな予感。ぜひともこのチャレンジ、成功させてほしいものです。

なお、搭載されるのは東大の超小型衛星TRICOM-1R(トリコム-ワンアール)という重さ3kgの衛星。衛星分離後には自律的に地球を撮影し、映像を地球に送信してくれるんだとか。そのままTwitterにでも投稿してくれるといいですね。

はやぶさと日本のロケット JAXAの軌跡 [3.イプシロンロケット (1/300スケール)]

2018年1月25日 (木)

iPhoneのバッテリーを噛んだら爆発した案件

なぜ、こんなことをしようと思ったのでしょうか?

中国で、iPhoneの交換用バッテリーが偽物でないかを確かめるため噛みついたところ、爆発したという事件が発生しました。

iPhoneのバッテリーをかんだら大爆発が発生 - GIGAZINE

幸いけが人はいなかったようですが・・・いや、それ以前に噛みついちゃいかんでしょ?

何かと話題の絶えないスマホ用バッテリーですが、これはメーカーがどうとか言う以前の問題ですね。

教訓 : バッテリーは、噛んだらいけない

言われなくったって、噛みませんけどね。

でも、バッテリーを粗末に扱うとどうなるかがよくわかる動画ですね。ここまで派手に爆発するとは、言葉だけではわかりませんからね。本当にいい教訓です。

iWALK 超小型 モバイルバッテリー iPhone 3300mAh ライトニング コネクター内蔵 超軽量 直接挿入 充電 器 バッテリー 急速充電 コンパクト iPhone/ipod対応(ホワイト)

2018年1月24日 (水)

FBIがiPhoneのセキュリティを批判!?

FBIがなかなか面白い話をしているようで。

何言ってるんだ…FBIが「iPhone暗号化のせいで犯罪者が捕まえにくい」とキレる | カミアプ

マンハッタンで開かれたサイバーセキュリティの国際会議で、FBIがAppleのiPhoneのセキュリティ強度(暗号化技術)の高さを批判したそうです。

iPhoneのセキュリティが高過ぎて犯人が捕まえられない、けしからん!という話だそうですが・・・

それを、セキュリティを話し合う場でいうか!?というのが正直な気持ちですね。この高いセキュリティのおかげで、サイバー攻撃に合わず助かっているユーザーだっているんですけどね。

ところで、この記事とは別に、こういう話もあるそうです。

「AppleはFBIや警察がiPhoneなどの中身を見るための指南を行っている」との報道 - GIGAZINE

Forbusの報道なため、真実かどうかは不明ながら、こういう話もあるってことで。

しかしもしこれが真実だとしたら、FBIはAppleから指南を受けているにもかかわらずセキュリティ批判をしているということになり、相当なクズ野郎ということになってしまいます。

あるいは、Appleから指南を受けていることを悟られないために、あえてセキュリティ会議でああいう発言をしている、とも捉えられます。

真実は、どっちなんでしょうか?

ただ、私個人としては、今のiPhoneのセキュリティレベルが守られることを願いますね。個人情報流出などに会うのだけはごめんです。

iPhone・iPad企業導入ガイドライン

2018年1月23日 (火)

GPD WIN2の国内予約を近々開始

まるでゲーム機のような外観のWindows端末”GPD WIN”の後継機”GPD WIN2”の国内発売を行う旨が発表されてます。

価格.com - ポータブルWindowsゲーム機「GPD WIN 2」、日本での公式販売が開始へ

予約受付サイト : 株式会社天空、GPD WIN2の日本での公式予約販売を決定 | ニュースリリース | 株式会社天空

すでにIndiegogoでクラウドファンディングされていて、今年の4月には出るという話ですが、ほぼ同じくらいの時期に入手できるそうです。

なんとなく、もっと遅くなるのではないかと思うのですが、いったいいくらくらいなんでしょうね?

GPDは他にもGPD Pocketという端末を売ってますね。あれはあれで魅力的な製品です。

が、こちらの記事にも書かれてましたが、本当に欲しいのは「現代の技術で作られたVAIO type P」なんですよね・・・

2009年の今日、VAIO type Pが発表されました:今日は何の日? - Engadget 日本版

ほんと、せっかくVAIOが分社化したのだから、今こそ出してほしい・・・お願い・・・

SONY VAIO Pシリーズ P119 Win7HomePremium 32bit ホワイト VPCP119KJ/W

2018年1月22日 (月)

Raspberry Pi用4インチタッチパネル液晶

Raspberry Piに取りつけて使える4インチのタッチパネル液晶が販売されているようです。

Raspberry Piに装着できる4型タッチ式液晶の新モデル - AKIBA PC Hotline!

お値段は3500円(税抜き)。上からかぶせるタイプの液晶で、Raspberry Piと一体で使うことができます。

難点といえば、GPIOのコネクタをすべてふさいでしまうため、電子工作と組み合わせて使いたいという人には若干不便なところですが、TensorFlowあたりを入れて画像認識に使おうと考えている人なら、コンパクトに使える便利な液晶です。

私もそろそろ一つ買ってみようかと思っている製品に、このRaspberry Pi用タッチパネル液晶と、AIスピーカーがあります。今年のどこかで買うことになるでしょうね。多分。

cocopar 4インチIPSハイビジョンLCD ディスプレイ タッチパネル タッチペン付

2018年1月21日 (日)

上海問屋からスマホ分解に便利な工具セット発売

私も一つ欲しいですね。

上海問屋、スマホを自分で分解できる工具10点セット - ITmedia PC USER

上海問屋が、スマホ・タブレットを分解する際に便利な工具10点セットを販売し始めました。

ごらんのとおり、ドライバーだけでなく金属製のへらまでついてます。

iPhone 5sのバッテリーをはがすときは苦労しましたけど、これなら楽にできそうですね。

ところで、最近例のiPhone性能低下事件で、バッテリー交換費用が安くなりました。自分で交換しようかと思ってたんですけど、これを機に、私のiPhone 6 Plusもバッテリー交換してもらおうかと思ってます。が、6 Plus、6s Plusはバッテリーが品薄らしいですね。

今年いっぱいは安いので、落ち着いたころには利用してみようかと思っています。そう考えると、うちではこの工具の出番は当面なさそうですね。

分解ツール10点セット(915205)

2018年1月20日 (土)

SONYからスマホサイズのプロジェクター”MP-CD1”春ごろ発売へ

小型プロジェクタってわりとがっかりな製品が多いですが、SONY製だとどうでしょうか?

ソニーがスマホサイズのポータブル・プロジェクター「MP-CD1」を発表 | ギズモード・ジャパン

https://assets.media-platform.com/gizmodo/dist/images/2018/01/11/180112_sony-w960.png

SONYがスマホサイズの小型プロジェクター”MP-CD1”を春ごろに発売する予定だそうです。

解像度は854×480、3mの距離を105ルーメンで照らし、オートフォーカス、オート台形補正を搭載。

重さは280gとスマホよりの倍くらいの重さで、バッテリーで2時間は持つようです。

お値段は399.99ドル(約4.5万円)。今年の春には登場予定。

個人的には、どうせなら短焦点型のモバイルプロジェクターというのを出してほしかったですね。10cmくらいで40インチくらいの画面が出せるやつ、とか。そこはSONYですから、それくらいはこだわってほしかった・・・

AODIN モバイル DLP ミニ プロジェクター VRAM解像度WXGA 1280*800 wifi接続 HDMI入力 日本語モデル 300 ISOルーメン LED 1080P対応 垂直台形補正(32G 炭黒色)

2018年1月19日 (金)

TensorFlow用”DCGAN”で独自データでの画像生成を試みてみる

ディープラーニングといえば「認識」用として使ってましたが、最近は「生成」用のコードも充実しつつあります。

画像生成の手段として”GAN”という手法があります。”Generative Adversarial Networks”の略で、日本語では”敵対的生成ネットワーク”といいます。

敵対的というキーワードがなんだか物騒ですが、下記のサイトなどを参考にその仕組みを勉強してみました。

はじめてのGAN

ディープラーニングでご飯を作ってみる - SunPro 2016技術書典

2つ目のサイトの解説が、わかりやすかったですね。

プログラム的な中身はともかく、こういう動作をしているそうです。

まず、中には”贋作絵師”と”鑑定士”がいます。

まず、鑑定士が登場。この鑑定士に本物の絵(教師データ)と、贋作絵師が作り出した偽物をランダムに与えます。

本物、偽物を正確に見分けられたら、鑑定士に報酬が与えられます。

本物を偽物と認識した場合は、何も得られません。

贋作絵師が作った偽物を本物と鑑定した場合は、贋作絵師に報酬が与えられます。

そうなると、鑑定士は「くそっ!!今度こそ見破ってやる!」となりますし、偽物と判断された贋作絵師は「次こそだましてやる!!」となるわけです。

この2者の壮絶な戦いをプログラム内部にやらせれば、贋作絵師がどんどん”本物”っぽい絵を描いてくるようになる・・・という仕組みです。

このとき、画像の認識や生成に使うニューラルネットワークに畳み込みを使ったものを”DCGAN”(Deep Convolutional Generative Adversarial Networks)というらしいです。

さて、下記のサイトを参考に、早速遊んでみました。

例によって、うちの環境はWindows 10 Home(64ビット)、Anaconda 4.2.0(Python 3.5)+TensorFlow 1.2.0 で実行しております。

DCGAN-tensorflowで自動画像生成をお手軽に試す - Qiita

まず、下記よりTensorFlow版DCGANのコードを入手します。

DCGAN-tensorflow - Github

で、上のサイトのように、セレブな顔生成をやってみたかったら、その名も”CelebA”というデータセットを入手して、上のサイトにあるようにコードを実行するだけで行けます。

まず、コードのあるフォルダに行き、そこで

> python download.py celebA

と打ち込みます。

”requests”だの”tqdm”だのを入れろと言われたら、それぞれpipで入手します。

> pip install tqdm
> pip install requests

download.pyを実行すると、”data”フォルダ内に”celebA”というフォルダができます(約1.3GB)。

この中には約20万枚ものセレブなお方の顔写真が入ってます。これを眺めるだけでもなかなか楽しいデータです。

この状態で、以下のコマンドを実行。

> python main.py --dataset celebA --input_height=108 --train --crop

これで、以下のような画像ができるはず・・・

ちょっと不気味な写真が多いですが、なんとなく顔っぽいものが生成されてます。

ただ、めちゃくちゃ時間がかかる上に、既に結果のわかっているものを実行してもつまらないですね。

というわけで、ここはいきなり独自データセットでトライしました。

使ったのは、”けものフレンズ”動画顔検出器をディープラーニング+OpenCV物体検出で作る(転移学習&メモリ不足対策): EeePCの軌跡でも使ったフレンズさんの顔画像1970枚。

独自データセットで学習させる場合のやり方は簡単で、”data”フォルダ内に”kemo”というフォルダを作って、そこにこの1970枚のデータを入れます。

Dcgan01

そして、次のコマンドを実行。

> python main.py --dataset kemo --input_height=64 --output_height=64 --train

で、待つこと15分ほど。

Dcgan02

”samples”というフォルダに、64×64の画像が8×8個並んだ画像が、大量に生成されます。

ここには生成過程も出力されてます。これを見ると

Train_03_0009

最初はこんな感じ。なんとなく、顔っぽいものがありますが、全然わかりません。

Train_16_0019

だんだん顔っぽくなっていきます。

Train_23_0009

おお!だんだんといい感じに!

・・・なったんですが、この状態から先に進みません。これで終了。なんだか、いまいちな生成結果です。

もしかして、髪の毛の色や顔の特徴がバラバラ過ぎるのがいけないのかと思って、サーバルちゃんのような金髪系の顔に絞って(395枚)再び学習。

今度は、5分ほどで終了。

Train_16_0002

最初はこんな感じ。お、なかなかいい感じです。

Test_arange_98

ですが、それでもここまでしか行けませんでした。さっきよりはましですが、とても耐えられるクオリティではありません。

なんとなく、フレンズさんっぽい絵にはなるんですけどねぇ。

やっぱり、教師データが少なすぎるんでしょうか?わりとうまくいってる先のセレブ顔データ(CelebA)は20万枚ですからね。

なお、このGANによる最新技術はここまで進んでます。Progressive Growing of GANsというらしいです。

40秒あたりから”偽物”の写真が出てくるんですが、もう本物の写真と見分けがつきません。これも先のCelebAというデータセット(ただし高解像度版)を使って作られたもの。いやはや、すごい。

なんとなく、画像生成アルゴリズムで遊んでみました。

さて、こんなものが一体、何の役に立つのでしょう?

例えば、SNSなどで流行っているものをジャンルごと(有名人、食べ物、洋服・・・等)にあつめて、それを使って画像生成をかけると、なんとなく流行りそうなデザインが見えてくるかもしれません。

それをもとに商品をデザインしたら・・・流行り物ができるかどうかは、わかりません。そこは解釈し、創造する人の力が必要です。

でも、創造を刺激することはできそうですね。”GAN”に最も期待されていることは、勝手に画像を作ってくれることではなく、刺激してくれることなのかもしれません。

他にも”文章生成”なんてものがあります。例えば、こんな事例が。

人工知能で画像をRADWIMPSっぽく解説してみた。 - Qiita

こちらも試したいところですけど、いまいちよくわかっていないので、まだ手付かず。

この1、2年で、機械学習、特にディープラーニング周辺の技術が大幅に向上しました。この1年、この分野を追っかけてきましたが、ソフトもハードも予想以上の進化でついていくのが大変です(いや、既についていけてないですが)。

ただ、機械学習技術によって、人の職業が奪われるということはないんじゃないかなぁと思っています。たしかに、単純作業、ルーチンワークというものはなくなると思いますが、創造分野の仕事はむしろAIの発達で活性化するんじゃないかと思ってます。

その創造力を活性化に期待がかかる技術の一つが、こちらのGAN。使い道はなくとも、手軽に試せるので、気になる方は独自データで遊んでみてはいかがでしょうか?

TensorFlowはじめました 実践!最新Googleマシンラーニング (NextPublishing)

2018年1月18日 (木)

ドンキの2万円PCをカスタマイズする

私はドンキの2万円PCを買ってません。買おうかどうしようか悩んでましたが、代わりのものが手に入ってしまったため、見送りです。

が、ちょっとこの記事を読んでいたら、なんだか気になる存在になりつつあります。

塩田紳二のモバイルトレンド - ドンキ2万円PCのチューニングでひと苦労:ITpro

ドンキの2万円PCをカスタマイズして、何とか使えるようにしようという記事です。

常駐する余計なサービスをいくつか停止し、付属ソフトも消して空き容量を開けて、さらにキーボードの割り当てをいくつか変えるというところまでやられてます。

詳しくはリンク先を読んでいただくとして、これを読んで感じたのは、私も10年ほど前にお似たようなことをやったなあということです。

EeePC 4G-Xはもっと悲惨でしたからね。ストレージは4GB。SDカードをつけて何とか使い物になるというレベルの端末だったので、それから見ればこのドンキの2万円PCは動くだけましかなあと思います。

でも、こういうハードルの高いPCって、私などはつい手を出したくなりますね。その時にはこの記事、かなり参考になりそうです。

防気泡・フッ素防汚コート!光沢保護フィルム『Crystal Shield MUGA ストイックPC KNW14FHD-SL』

2018年1月17日 (水)

360度撮影可能なiPhone用カメラ”Insta360 Nano S”国内発売へ

360度カメラというのはまだ買ったことがありませんが、動画を見ると面白そうですね。

iPhone合体版360度カメラの強化版、Insta360 Nano S発売。360度動画チャットやマルチビュー撮影対応 - Engadget 日本版

カメラというのは、狙った方向しか撮影できません。たまたま真横に面白いものが映ってても取り逃してしまいます。まあ、これが当たり前なわけですが。

このカメラは周囲をいっぺんに撮影可能。スマホを使ったVRで周りを見るように後で撮影した周辺の様子を確認することができます。これが360度カメラのいいところですかね?

お値段は税込み31299円。ちょっと高い気もしますけど、旅行先では威力を発揮してくれそうなカメラですね。

Insta360 Nano S

2018年1月16日 (火)

ATRと京大がディープラーニングを用いてfMRIで測定した結果のみで脳内の画像を再構成する技術を開発

ディープラーニングを用いた画像生成技術というのはありますけど、とうとう脳内の画像を表現するところまで来ました。

ATRと京都大学、fMRIで測定した人間の脳活動のみから、その人が見ている画像を機械学習を用いて再構成する提案を発表。心の中でイメージした内容の画像化にも成功 | Seamless

ATR(国際電気通信基礎技術研究所)と京都大学はfMRI(機能的磁気共鳴画像法)のみを用いて、実際に見ている映像を脳内の働きから画像化することに成功したそうです。

といっても、実際に見ているものとはちょっと・・・ものによってはだいぶん違いますが。確かに雰囲気は似てますよね。

画像を見ている時だけでなく、脳内に作り出した画像も構成することに成功してます。

一度見た画像を言葉で表現(左側)して、その画像を思い浮かべてもらった際に脳内にできた画像が右側です。

これがさらに発展すれば、頭の中で考えただけで画像を作りだすことができちゃいますね。

もっとも、そのたびにfMRIなんてものでスキャンしなきゃならないのが現状ですが・・・もうちょっと簡易にできないものでしょうかね?でも、なかなかすごい技術です。

うまく応用すれば、昏睡状態にある人の脳内の画像なども呼び出すことができるんでしょうか?今後の発展が気がかりな技術ですね。

脳内麻薬で成功中毒

2018年1月15日 (月)

お肌のケアはiPhoneで!?お肌の状態を分析する”Neutrogena Skin360”

CES 2018では相変わらず気になる展示が多いようですが、これもその一つ。

CES2018:ジョンソン・エンド・ジョンソン、iPhoneのカメラで肌チェック出来る「Neutrogena Skin360」を展示 | レポート | Macお宝鑑定団 blog(羅針盤)

ジョンソン・エンド・ジョンソンが、iPhoneに30倍の拡大レンズをつけて、お肌の状態を分析、最適な化粧品を提案してくれるという”Neutrogena Skin360”という製品を展示しているそうです。

これで毛穴、しわ、保湿状態をスコア化でき、お肌のケアに活かせるんだとか。

この手の機械は化粧品コーナーなどにもありそうですが、自身でできるというのはいいですね。いちいちお店に行かなくても、毎日把握できます。

これを教えたら、うちの妻も買えって言いますかね?それとも、もうあきらめ年齢か?面白そうなグッズなので、手に入りそうだったら買ってしまうかもしれません。今年の夏ごろに発売予定です。

RAINLAX 毛穴吸引器 毛穴クリーン フェイスケア ニキビ吸引?黒ずみ吸出し美顔器 角質ケア たるみ改善 しわ減少 美肌 ディープクレンジング 自宅エステ可能 USB充電 コンパクト ? (グリーン)

2018年1月14日 (日)

Lenovo G580が我が家にやってきた

最近クラムシェル端末を買いたいなぁと思い、いろいろ探していました。

理想を言えばMacbookなんですが、さすがにあれは高い。かといって、ドンキの2万円PCではメモリが少なすぎる。

メモリが4GB程度あって、64ビットWindowsが動作するクラムシェル端末というのはないかと探していたんですが、ひょんなことから”Lenovo G580”が我が家にやってきました。

Img_1977

これ、実は妻の実家用に2013年に買ったPC。

レノボ G580というノートPCを購入: EeePCの軌跡

G580のエントリーモデル。わけあって、我が家で引き取ることになりました。

上の記事によると、スペックは画面サイズは15.6インチ、Celeron B830(1.8GHz)、メモリ4GB、320GB HDD、無線LAN、DVD-RWドライブ搭載。まあまあの性能です。

画面がとにかく大きいのがいいですね。解像度は1366×768だそうですが、特に荒いとは感じません。

Img_1978

ただ、当時一緒に買ったマウスが劣化しており、左クリックが時々効かなくなるという病状が出たため、急遽こんなマウスを買ってきました。

近所にビックカメラの入ったお店がオープン。そこで買ったマウスです。お値段、498円。

Windowsは8.1で、残念ながら10ではありません。でもまあ、Windows 7よりは長く使えそうです。ただ、スタートメニューがあれなので、使い勝手は非常に悪いですね。電源オフすら、何階層行かないとたどり着けないのやら・・・

さて、LenovoのPCといえば、とりあえずやったのはこちら。

Superfishのアンインストール方法

Lenovoといえば、このSuperfishというマルウェアがひと時大騒ぎになりました。

レノボ、危険なSuperfishアドウェアのプリインストール問題でFTCと和解 - CNET Japan

で、一応上のサイトから削除ツールを落してチェックしたんですが、そもそもこのPCは2013年製で、Superfish(2014年製にプリインストール)は検出されませんでした。

これで一応安心。他にも”Lenovo ~”という名前のプリインストールソフトで、使わなさそうなものは片っ端から消しておきました。また、筆ぐるめもいらないので消去。

当面、私の文書作成PCか、子供用PCにでも使おうかと思ってます。ただ、マイクラが動かないため、子供用PCには向かない模様。結局、私が活用することになるのかなぁ。

レノボ・ジャパン Lenovo G580 (グロッシーブラウン) 268976J

2018年1月13日 (土)

TensorFlow+KerasでSSDを独自データで使えるようにしてみた

物体検出コードといえば以前「ディープラーニングで一般物体検出する手法”YOLO”のTensorFlow版で独自データセットを使えるようにしてみた: EeePCの軌跡」という記事で紹介したYOLOv1という手法を使えるようにしたのですが、このYOLOv1、精度はいまいち。

ということで、最新のSSD or YOLOv2を使えるようにしたいなぁと考え、何とかこのSSD(Single Shot MultiBox Detector)を使えるようにしました。

コードの入手先はこちら。

GitHub - ryokov8/ssd_keras

参考サイトはこちら。

物体検出アルゴリズム(SSD : Single Shot MultiBox Detector)を学習させてみる - Qiita

準備

まず、このコードは”Keras”というのを使います。

実はこいつが曲者で、最新のKeras(バージョンが2.0以降)を入れると動きません。バージョンは”1.2.2”を入れる必要があります。

> pip install --upgrade keras==1.2.2

とすれば、Windows版Anacondaでもインストールできました。

TensorFlowは1.0以降であればOKのようです。我が家は1.2ですが、動きました。

ただ、環境によってはバックエンドがTensorFlowではない場合があります。その場合は以下を参考にバックエンドをTensorFlowに変更しておいてください。

Keras バックエンドの変更 - Qiita

先のGitHubリンクからコードをゲットします。

Windowsの場合は「GitHub - ryokov8/ssd_keras」をクリックして、その中の「Clone or Download」をクリック、「Download ZIP」をクリックしてZIP形式のファイルを落します。

解凍したのち、そのフォルダ内に「checkpoints」という空フォルダを作っておいてください。

Linuxだと、下記のコマンドで一発ですね。

> git clone https://github.com/rykov8/ssd_keras

さて、とりあえず動かすために、Pascal VOCのデータをダウンロードします。

私はVOC2007を使いました。入手の仕方は「The PASCAL Visual Object Classes Challenge 2007 (VOC2007)」のサイトの中ほどにある「Development Kit」の「 training/validation data 」をクリックします。

これを解凍すると、「VOCdevkit」というフォルダができます。これを、上のSSDのコードのあるところ(ssd_keras-master)にそのまま入れます。

他には学習済みデータを入手する必要があります。

https://mega.nz/#F!7RowVLCL!q3cEVRK9jyOSB9el3SssIA」から「weights_SSD300.hdf5」をダウンロードしてください。右クリックして「ダウンロード」-「標準ダウンロード」で入手できます。これもSSDコードのフォルダ(ssd_keras-master)に入れます。

他に、以下のコードを作っておいてください。参考サイトからほぼそのままいただきました。ファイル名は「train_ssd_keras.py」とでもしておいてください。

import cv2
import keras
from keras.applications.imagenet_utils import preprocess_input
from keras.backend.tensorflow_backend import set_session
from keras.models import Model
from keras.preprocessing import image
import matplotlib.pyplot as plt
import numpy as np
import pickle
from random import shuffle
from scipy.misc import imread
from scipy.misc import imresize
import tensorflow as tf

from ssd import SSD300
from ssd_training import MultiboxLoss
from ssd_utils import BBoxUtility

plt.rcParams['figure.figsize'] = (8, 8)
plt.rcParams['image.interpolation'] = 'nearest'

np.set_printoptions(suppress=True)

# 21
NUM_CLASSES = 21 #4
input_shape = (300, 300, 3)

priors = pickle.load(open('prior_boxes_ssd300.pkl', 'rb'))
bbox_util = BBoxUtility(NUM_CLASSES, priors)

# gt = pickle.load(open('gt_pascal.pkl', 'rb'))
gt = pickle.load(open('VOC2007.pkl', 'rb'))
keys = sorted(gt.keys())
num_train = int(round(0.8 * len(keys)))
train_keys = keys[:num_train]
val_keys = keys[num_train:]
num_val = len(val_keys)

class Generator(object):
    def __init__(self, gt, bbox_util,
                 batch_size, path_prefix,
                 train_keys, val_keys, image_size,
                 saturation_var=0.5,
                 brightness_var=0.5,
                 contrast_var=0.5,
                 lighting_std=0.5,
                 hflip_prob=0.5,
                 vflip_prob=0.5,
                 do_crop=True,
                 crop_area_range=[0.75, 1.0],
                 aspect_ratio_range=[3./4., 4./3.]):
        self.gt = gt
        self.bbox_util = bbox_util
        self.batch_size = batch_size
        self.path_prefix = path_prefix
        self.train_keys = train_keys
        self.val_keys = val_keys
        self.train_batches = len(train_keys)
        self.val_batches = len(val_keys)
        self.image_size = image_size
        self.color_jitter = []
        if saturation_var:
            self.saturation_var = saturation_var
            self.color_jitter.append(self.saturation)
        if brightness_var:
            self.brightness_var = brightness_var
            self.color_jitter.append(self.brightness)
        if contrast_var:
            self.contrast_var = contrast_var
            self.color_jitter.append(self.contrast)
        self.lighting_std = lighting_std
        self.hflip_prob = hflip_prob
        self.vflip_prob = vflip_prob
        self.do_crop = do_crop
        self.crop_area_range = crop_area_range
        self.aspect_ratio_range = aspect_ratio_range

    def grayscale(self, rgb):
        return rgb.dot([0.299, 0.587, 0.114])

    def saturation(self, rgb):
        gs = self.grayscale(rgb)
        alpha = 2 * np.random.random() * self.saturation_var
        alpha += 1 - self.saturation_var
        rgb = rgb * alpha + (1 - alpha) * gs[:, :, None]
        return np.clip(rgb, 0, 255)

    def brightness(self, rgb):
        alpha = 2 * np.random.random() * self.brightness_var
        alpha += 1 - self.saturation_var
        rgb = rgb * alpha
        return np.clip(rgb, 0, 255)

    def contrast(self, rgb):
        gs = self.grayscale(rgb).mean() * np.ones_like(rgb)
        alpha = 2 * np.random.random() * self.contrast_var
        alpha += 1 - self.contrast_var
        rgb = rgb * alpha + (1 - alpha) * gs
        return np.clip(rgb, 0, 255)

    def lighting(self, img):
        cov = np.cov(img.reshape(-1, 3) / 255.0, rowvar=False)
        eigval, eigvec = np.linalg.eigh(cov)
        noise = np.random.randn(3) * self.lighting_std
        noise = eigvec.dot(eigval * noise) * 255
        img += noise
        return np.clip(img, 0, 255)

    def horizontal_flip(self, img, y):
        if np.random.random() < self.hflip_prob:
            img = img[:, ::-1]
            y[:, [0, 2]] = 1 - y[:, [2, 0]]
        return img, y

    def vertical_flip(self, img, y):
        if np.random.random() < self.vflip_prob:
            img = img[::-1]
            y[:, [1, 3]] = 1 - y[:, [3, 1]]
        return img, y

    def random_sized_crop(self, img, targets):
        img_w = img.shape[1]
        img_h = img.shape[0]
        img_area = img_w * img_h
        random_scale = np.random.random()
        random_scale *= (self.crop_area_range[1] -
                         self.crop_area_range[0])
        random_scale += self.crop_area_range[0]
        target_area = random_scale * img_area
        random_ratio = np.random.random()
        random_ratio *= (self.aspect_ratio_range[1] -
                         self.aspect_ratio_range[0])
        random_ratio += self.aspect_ratio_range[0]
        w = np.round(np.sqrt(target_area * random_ratio))
          h = np.round(np.sqrt(target_area / random_ratio))
        if np.random.random() < 0.5:
            w, h = h, w
        w = min(w, img_w)
        w_rel = w / img_w
        w = int(w)
        h = min(h, img_h)
        h_rel = h / img_h
        h = int(h)
        x = np.random.random() * (img_w - w)
        x_rel = x / img_w
        x = int(x)
        y = np.random.random() * (img_h - h)
        y_rel = y / img_h
        y = int(y)
        img = img[y:y+h, x:x+w]
        new_targets = []
        for box in targets:
            cx = 0.5 * (box[0] + box[2])
            cy = 0.5 * (box[1] + box[3])
            if (x_rel < cx < x_rel + w_rel and
                y_rel < cy < y_rel + h_rel):
                xmin = (box[0] - x_rel) / w_rel
                ymin = (box[1] - y_rel) / h_rel
                xmax = (box[2] - x_rel) / w_rel
                ymax = (box[3] - y_rel) / h_rel
                xmin = max(0, xmin)
                ymin = max(0, ymin)
                xmax = min(1, xmax)
                ymax = min(1, ymax)
                box[:4] = [xmin, ymin, xmax, ymax]
                new_targets.append(box)
        new_targets = np.asarray(new_targets).reshape(-1, targets.shape[1])
        return img, new_targets

    def generate(self, train=True):
        while True:
            if train:
                shuffle(self.train_keys)
                keys = self.train_keys
            else:
                shuffle(self.val_keys)
                keys = self.val_keys
            inputs = []
            targets = []
            for key in keys:
                img_path = self.path_prefix + key
                img = imread(img_path).astype('float32')
                y = self.gt[key].copy()
                if train and self.do_crop:
                    img, y = self.random_sized_crop(img, y)
                img = imresize(img, self.image_size).astype('float32')

                if train:
                    shuffle(self.color_jitter)
                    for jitter in self.color_jitter:
                        img = jitter(img)
                    if self.lighting_std:
                        img = self.lighting(img)
                    if self.hflip_prob > 0:
                        img, y = self.horizontal_flip(img, y)
                    if self.vflip_prob > 0:
                        img, y = self.vertical_flip(img, y)
                #
                #print(y)
                y = self.bbox_util.assign_boxes(y)
                #print(y)
                inputs.append(img)
                        targets.append(y)
                if len(targets) == self.batch_size:
                    tmp_inp = np.array(inputs)
                    tmp_targets = np.array(targets)
                    inputs = []
                    targets = []
                    yield preprocess_input(tmp_inp), tmp_targets

path_prefix = './VOCdevkit/VOC2007/JPEGImages/'
gen = Generator(gt, bbox_util, 4, path_prefix,
                train_keys, val_keys,
                (input_shape[0], input_shape[1]), do_crop=False)

model = SSD300(input_shape, num_classes=NUM_CLASSES)
model.load_weights('weights_SSD300.hdf5', by_name=True)

freeze = ['input_1', 'conv1_1', 'conv1_2', 'pool1',
          'conv2_1', 'conv2_2', 'pool2',
          'conv3_1', 'conv3_2', 'conv3_3', 'pool3']#,
#           'conv4_1', 'conv4_2', 'conv4_3', 'pool4']

for L in model.layers:
    if L.name in freeze:
        L.trainable = False

def schedule(epoch, decay=0.9):
    return base_lr * decay**(epoch)

callbacks = [keras.callbacks.ModelCheckpoint('./checkpoints/weights.{epoch:02d}-{val_loss:.2f}.hdf5',
                                             verbose=1,
                                             save_weights_only=True),
             keras.callbacks.LearningRateScheduler(schedule)]

base_lr = 3e-4
optim = keras.optimizers.Adam(lr=base_lr)
model.compile(optimizer=optim,
              loss=MultiboxLoss(NUM_CLASSES, neg_pos_ratio=2.0).compute_loss)

nb_epoch = 100
history = model.fit_generator(gen.generate(True), gen.train_batches,
                              nb_epoch, verbose=1,
                              callbacks=callbacks,
                              validation_data=gen.generate(False),
                              nb_val_samples=gen.val_batches,
                              nb_worker=1)

inputs = []
images = []
img_path = path_prefix + sorted(val_keys)[0]
img = image.load_img(img_path, target_size=(300, 300))
img = image.img_to_array(img)
images.append(imread(img_path))
inputs.append(img.copy())
inputs = preprocess_input(np.array(inputs))

preds = model.predict(inputs, batch_size=1, verbose=1)
results = bbox_util.detection_out(preds)

for i, img in enumerate(images):
    # Parse the outputs.
    det_label = results[i][:, 0]
    det_conf = results[i][:, 1]
    det_xmin = results[i][:, 2]
    det_ymin = results[i][:, 3]
    det_xmax = results[i][:, 4]
    det_ymax = results[i][:, 5]

    # Get detections with confidence higher than 0.6.
    top_indices = [i for i, conf in enumerate(det_conf) if conf >= 0.6]

    top_conf = det_conf[top_indices]
    top_label_indices = det_label[top_indices].tolist()
    top_xmin = det_xmin[top_indices]
    top_ymin = det_ymin[top_indices]
    top_xmax = det_xmax[top_indices]
    top_ymax = det_ymax[top_indices]

    colors = plt.cm.hsv(np.linspace(0, 1, NUM_CLASSES)).tolist()

    plt.imshow(img / 255.)
    currentAxis = plt.gca()

    for i in range(top_conf.shape[0]):
        xmin = int(round(top_xmin[i] * img.shape[1]))
        ymin = int(round(top_ymin[i] * img.shape[0]))
        xmax = int(round(top_xmax[i] * img.shape[1]))
        ymax = int(round(top_ymax[i] * img.shape[0]))
        score = top_conf[i]
        label = int(top_label_indices[i])
        # label_name = voc_classes[label - 1]
        display_txt = '{:0.2f}, {}'.format(score, label)
        coords = (xmin, ymin), xmax-xmin+1, ymax-ymin+1
        color = colors[label]
        currentAxis.add_patch(plt.Rectangle(*coords, fill=False, edgecolor=color, linewidth=2))
        currentAxis.text(xmin, ymin, display_txt, bbox={'facecolor':color, 'alpha':0.5})

    plt.show()

コードのあるフォルダ(ssd_keras-master)の中にある「testing_utils」の中の「videotest.py」というコードは、一部修正が必要です。

87、88行目にある以下のコードを

        vidw = vid.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH)
        vidh = vid.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT)

以下のように変えます。

        vidw = vid.get(cv2.CAP_PROP_FRAME_WIDTH)
        vidh = vid.get(cv2.CAP_PROP_FRAME_HEIGHT)

これで、準備完了です。

学習

まず最初に「PASCAL_VOC」というフォルダに「get_data_from_XML.py」というコードがあるはずです。これを一つ上のフォルダ(ssd_keras-master)に移動し、実行します。

> python get_data_from_XML.py

すると「VOC2007.pkl」というファイルができるはずです。

これができたら、いよいよ実行です。

> python train_ssd_keras.py

これで「VOC2007」のデータを使って、学習がはじまるはずです。

100 epochs実行するのに、うちの環境(Corei3 3220 3.3GHz + GeForce 1050Ti 4GB)では約12時間かかりました。

終わると、「checkpoints」というフォルダに学習済みデータが入っているはずです(10 epochs毎)。

これを使って、いよいよ動画の”物体検出”を実行します。

検出(動画)

ここでは、動画を使ったリアルタイム検出を行います。

まず「testing_utils」というフォルダに、物体検出させたい動画を入れます(ホームビデオなど)。

続いて、「videotest_example.py」を開きます。18行目の「model.load_weights('~')」の' '内に学習済みデータのファイル名(ex. ../checkpoints/weights.96-2.83.hdf5)を入れて、24行目の「vid_test.run('~')」の' '内には動画ファイル名を入れます。

以下のような画像が出てくるはずです。

Ssdtest01

うちの環境では、7FPS程度しか出ません。

不思議と元データ「weights_SSD300.hdf5」を使うと、13FPS出るんですけどね。学習データによって倍もフレームレートが変わるという理由がよくわかりませんね。

ともかく、精度はまあまあありそうです。

独自データでの学習

さて、これまVOC2007のデータを使った話。独自データを使うにはどうするのか?

まずは、独自データとなる画像を集めます。これは必須。

続いて、「AnnotationTool.exe」をダウンロードします。

私がとりあえず作った、Windows上で動かすアノテーションデータ作成ソフトです。

使い方は以下。

-----------------------------------------------------------------------

Annotation00

① まずアノテーションファイル(*.xmlと”trainval.txt”)を保存するフォルダ(作業フォルダ)を作りドラッグ&ドロップ

② アノテーションを作成したい画像ファイルをドラッグ&ドロップ

③ 画像ファイルが出てくるので、物体をマウスで囲みます

④ ”ラベル名”のテキストボックスに物体の名前を書きます(半角英数) 

⑤ ”ラベル作成”をクリックすると登録

同一画像内で認識させたい物体の数だけ③~⑤を繰り返します。

⑥ 一通り終わったら「Annotation追加」をクリック

次の画像ファイルを読み込むため、再び②で別の画像を読み込み、⑥までを繰り返します。

すべての画像ファイルのアノテーション登録が終わったら

⑦ ”終了”をクリック

-----------------------------------------------------------------------

これを実行すると、画像ファイル分の「~.xml」ファイルと、「trainval.txt」ができているはずです。

これを、以下のように「VOCdevkit/VOC2007」に反映。

・ 「Annotations」フォルダには作成されたxmlファイルを全部入れます

・ 「ImageSets/Main」にある「trainval.txt」に、上で作られた「trainval.txt」の中身を追記します。

・ 「JPEGImages」フォルダに、独自データの画像ファイルをすべて入れます

そのあと、「get_data_from_XML.py」の中身を書き換えます。

42行目「if name == 'aeroplane':」以降に並んだ20個のラベルを、独自データ分のラベルと置き換えます。

例えば「イノシシ」と「鹿」と「馬」の画像ファイルを加えて、それぞれラベルを「inoshishi」、「shika」、「uma」としたいとします。その場合、42行目以降のコードは

        if name == 'inoshishi':
            one_hot_vector[0] = 1
        elif name == 'shika':
            one_hot_vector[1] = 1
        elif name == 'uma':
            one_hot_vector[2] = 1
         elif name == 'boat':
            one_hot_vector[3] = 1
        elif name == 'bottle':
         ・
         ・
         ・

となります(赤の部分が変更部位)。 ('uma'は'horse'じゃないのか等のツッコミはなしでお願いします)

この状態で

> python get_data_from_XML.py

を実行。

独自データ版の「VOC2007.pkl」ができるはずです。

この状態で、上の「学習」手順に基づき、学習コード(train_ssd_keras.py)を実行。

動画から物体検出させる場合は「testing_utils」の「videotest_example.py」の12行目を、上と同じラベルに書き換えます。あとは「検出(動画)」手順そのまま。

これで、独自データの検出が可能になるはず・・・です。

実は私自身、これを書いている時点ではまだ実行していないのですが、VOC2007のデータを使った学習ができているので、多分可能なはずです。

こちらのサイトでは、実際に動作に成功しているようです。

物体検出用SSD_Kerasで使える学習モデルの作成方法 | AI coordinator

とりあえず、これでSSDを実装することができました。

あとはネットワークを深層化したりしてやれれば万々歳なのですが、まだそこまでは試しておりません。

あと、どういうわけかこのコード、会社では同じようにやっても動かないんですよね。Keras 1.2.2にダウングレードしたのに、Keras 2.0.6で動かしたときのエラーが出ます。理由は不明。

Kerasというのはコードが書きやすくなる半面、学習データがブラックボックス化されるというか、どういう形式で書きこんでいるのかがわからなくなりますね。さらに、1.xから2.0に変えた時の変化点が大きすぎです。おかげで、Kerasのことはあまり好きになれません。

とはいえ、手軽に使える便利なコードなので、このSSD_Keras、おすすめです。

初めてのTensorFlow 数式なしのディープラーニング

2018年1月12日 (金)

カメラ付きのワインセラー”Plum wine system”

私はそこまでワイン通ではありませんが、こんなワインセラーがあるそうです。

いつでも美味しいグラスワインを堪能できるカメラつきワインセラー「Plum wine system」 | Techable(テッカブル)

カメラ付きのワインセラー”Plum wine system”。ワインセラーといえば、ワインを冷やし過ぎずあっため過ぎない適温で保存できるワイン専用の冷蔵庫のこと。

それにカメラがついているとのこと。

それで何ができるというのかといえば、カメラでラベルをスキャンし、その銘柄に合った保存環境で保存してくれるという機能がついてるそうです。

2本しか入らないワインセラーですが、アルゴンガスでボトルを加圧して風味と香りを逃がさないようにしてくれる機能もあるそうで、かなり至れり尽くせりなワインセラーです。

ところで私、実はワインがすごく苦手です。

フルボディの赤ワインが飲みづらくて、家でもビールか発泡酒ばかり飲んでます。

最近は海外製ビールにちょっとはまってて、こんなのばかり飲んでます。

Img_3002

お勧めはドイツビールで、特にビットブルガー、レーベンブロイ、ラーデベルガーはおすすめです。

ドイツビール以外では、タイのシンハー、デンマークのカールスバーグ(日本でサントリーがライセンス生産)が好きですね。缶より瓶の方が、なぜか美味しいです。

そんな私ですが、ワインにもちょっと興味を持ってまして。

数年前に、2005年物のオーパス・ワンを飲ませてもらう機会がありました。

カリフォルニアワインでは割と有名なワイン。これがめっちゃくちゃ飲みやすくて、すっかり気に入ってしまったんですが、これが結構高い。5年物でも4~5万円ほどします。

Opus Oneワイナリー - オフィシャルウェブサイト

ただ、ある一定価格以上のワインならもしかしたら飲みやすいんじゃないかと思って、最近奮発して飲んだのがこの2本。

1本目:ドゥーカ・エンリコ 2008年

Img_0027

お値段は8000円ほど。イタリアのシチリア島のワイン。

味もいいですが、香りが最高でした。

2本目:ドネラン・キュベェ・クリスティーヌ・シラー

Img_0148

カリフォルニアワインで、こちらは1.2万円ほど。味と香りのバランスがなかなか。

どちらかというと、1本目が美味でした。また買いたいですね。

なんですが、ワインセラーがないため、保存が大変。冷蔵庫で冷やすと、確かにワインの香りが格段に落ちます。素人でもわかるくらい。

ワインにこだわるのなら、やっぱりワインセラーは必須ですね。

ハイアール ワインセラー (4本収納)【右開き】ホワイトHaier Joy Series raccolta JL-FP1C12A-W

2018年1月11日 (木)

IntelがAMDのGPUを統合したCoreiシリーズを発表

AMDのRyzenでかなり追い上げられつつあるIntelが、新しいCPUを発表・・・えっ!?AMDのGPU搭載!?

【イベントレポート】Intel、AMD GPUを1パッケージに統合した新CPUを正式発表 ~Core i7-7700HQ+GeForce GTX 1060を上回る性能を実現 - PC Watch

なんと、ライバルであるAMDのGPUを搭載した新しいCPU、Core i7-8809G、Core i7-8709G、Core i7-8706G、Core i7-8705G、Core i5-8305Gが、CES2017でIntelから発表されました。

この新しいCPUは「8th Gen Core Processors with RADEON RX Vega M Graphics」、コードネームは「KBL-G」と呼ばれていたようですが、このCPUはCore i7-7700HQとGeForce GTX1060の組み合わせを上回るほどの性能なようです。

もっともAMDのGPUなので、ディープラーニングなどのGPGPUには向かないようですが、普通にグラフィック性能が必要なゲームならば十分な性能を発揮してくれるものと思われます。

それにしても、ライバル同士が手を組んで製品を出すとは、それだけNVIDIAに対する対抗意識で一致したんですかね?CPU、GPUといえば、最近はARM、そしてNVIDIA GPUですからね。

ちょっとこの組み合わせは衝撃的ですが、魅力ある製品には違いありません。ちょっとやっつけ感のある外観のこのKBL-G、春ごろに登場予定です。

玄人志向 ビデオカード GEFORCE GTX 1060搭載 GF-GTX1060-E6GB/OC2/DF

2018年1月10日 (水)

ルンバにWi-Fiマッピング機能搭載か!?

ルンバといえば自動掃除機。ごちんごちんと壁にぶち当たりながら、フロア中を駆け巡ってお掃除してくれる、今ではすっかりおなじみの掃除機です。

そのルンバ、ごちんごちんとフロア中を駆け巡ってくれるついでに、Wi-Fi強度マップを作成してくれる機能が搭載される予定だそうです。

ルンバがお掃除ついでにWi-Fi強度マップを作ってくれる新機能が登場予定 - GIGAZINE

搭載されるのは、ルンバ960と980の2種類。最初は100~200人のテスターに、続いて10~20%のユーザにベータ版アプリを配信する模様。ただし、当初はアメリカ限定。

Wi-Fiマップを作るアプリというのは使ったことがありますが(Wi-Fiの強度マップが作成できるアプリ”Wi-Fiミレル”: EeePCの軌跡)案外大変な作業で、頻繁に作れるものではありません。

この点、ルンバなら自動的に作成可能。設定やWi-Fiルーターの機器配置を変えた時のマップもすぐに作れるので、便利ですね。

もっとも、ルンバをくまなく走れるように部屋を掃除しないといけませんね。ルンバのために片づけをする。なんだか変な感じですが、Wi-Fi強度を測りたいなら、頑張るしかありません。

iRobot ロボットクリーナー ルンバ960 メッドシルバー R960060

2018年1月 9日 (火)

Interface 2月号はAIチップ・技術特集

最近「AI」という言葉がバズワード化してきて、使うことにためらいを覚える今日この頃ですが、「機械学習」特にディープラーニング用に特化したチップの特集をInterface 2月号ではしてました。

Img_1971

今回のInterface、実は中身が少々難解です。

Img_1972

ですが、いわゆる”AIチップ”にどういう種類のものがあって、どういう特徴があるのかがに止めでわかるレーダーチャートが載せされておりました。

Img_1973

それぞれのチップの特徴なども併記されております。

ちなみにこれは、Intelの「Movidius Neural Compute Stick」に使われているチップ。今私が一番欲しいAIチップの一つです。もう一つはNVIDIAのVoltaなんですが。

しかし、ほかにもいろいろあることがわかります。私の希望は、Raspberry Piをより高速な画像認識器にできるチップが欲しくて(公私ともに)、これに見合ったものが今のところIntelのこれしかないんですよね。価格もまあまあ手頃ですし。

Img_1974

この様々なチップへの対応状況をみると、今のところTensorFlowが一番のようですね。

Img_1975

ちゃんとRaspberry PiをAIサーバーにするという特集もありました。

ただ、ちょっと難解な記事でしたが・・・

Img_1976

相変わらず、きゅうりの識別に関する奮闘記が出てました。まだ続いていたんですね、この方のチャレンジ。

とりあえず、AIチップの比較記事はかなり役に立ちそうな気がします。

もっとも、ハードウェアの寿命なんて1年程度かと思われますが、1000円で1年持つなら十分すぎる情報源かと思いますね。

Interface(インターフェース) 2018年02月号

2018年1月 8日 (月)

ガンダム第1話で出てくるあのマニュアルっぽい汎用スマホケース

「親父が夢中になるわけだ」とあきれられるかもしれませんが。

「こいつ、動くぞ!」アムロが手にした「ガンダム」操作説明書がモチーフの汎用スマホケース : J-CASTトレンド

ガンダムの第1話に出てくる、あのガンダムのマニュアルそっくりなスマホケースが登場です。

プレミアムバンダイのサイトで予約中、発送は2018年2月。

機動戦士ガンダム V作戦マニュアル 汎用スマホケース | プレミアムバンダイ | バンダイ公式通販サイト

V作戦だから「V」という安直なデザイン。よりによって都合よくアムロの前に飛んできたマニュアル。しかし、30年以上たった今でも支持され続けるガンダムシリーズ。すべてはここから始まったんですよね。

そういえばガンダム The Originもいよいよ次回はシャア(キャスバル)が大活躍する話。私もこっそり見てますけど、最近はヤマトよりガンダムの方が気になりますね。このケース同様、盛り上がりそうです。

バンダイ 機動戦士ガンダム メタルプレート付き 汎用手帳型 スマートフォンカバー M レッド GD-37RD

2018年1月 7日 (日)

iPhoneアプリでのアプリレビューお願いを消す方法

11月にiPhone Xを入手したら、このところ今まで使っているアプリからも次々に”レビューお願い”の表示が出てくるようになりました。

すでにレビュー済みのアプリもあるし、レビューするほどいい or 悪いアプリなら言われなくても書くつもりなので、正直言ってこのレビューは邪魔。

ということで、このリンク先を頼りに、設定を変えました。

やり方は「設定」-「iTunes StoreとApp Store」の中にある「アプリ内評価とレビュー」という項目のスイッチをオフにすること。

Img_3173

これで、アプリ内の”レビューお願い”表示が出なくなりました。

もっとも、レビューそのものを批判する気はありません。いいアプリはいいと書くことで、作者の励みにもなります。一応私もプログラマーなんで、自分の成果物がどう思われているかというのは気になるという気持ちはよくわかります。

ということで、レビューや評価はなるべく行うとして、ただ表示からは消えてほしいという場合には覚えておいてほしい項目です。

作って学ぶ iPhoneアプリの教科書 【Swift4&Xcode 9対応】 ~人工知能アプリを作ってみよう! ~(特典PDF付き)

2018年1月 6日 (土)

顔パスでハンバーガーが注文できる!?NECの顔認証システムがこんなところに

カリフォルニア州にあるハンバーガーチェーン店で、NECの顔認証システム「NeoFace」を使った試みを始めているようです。

“顔パス”でハンバーガーを注文! CaliBurger、AIを使ったセルフサービスを試験展開 | Techable(テッカブル)

一度顔を登録すると、来店して顔を大きなタッチパネルの機器に向けるだけで、過去に注文したメニューが出てくるそうです。それをタップすれば、注文完了。

タマネギ抜きといった特注も可能。こういう注文を含めても数秒でオーダーは終わってしまうらしいです。

たくさんお客が来た時には大丈夫かと心配になりますけど、NECの顔認証システムは4万人以上のスタジアムでも機能したって話ですから、大丈夫なんでしょうね。

今はまだ一店舗で試験的に運用されているようですが、今後このチェーン店全店に展開する予定だそうです。

マックなどに行くと、意外と注文って個人ごとに固定されてたりしますからね。数パターンあったとしても、それが一度登録されてしまえばほんと楽になります。

リピーターが増えそうなこの施策、今後他のハンバーガー店にも広がるんでしょうか?

特大ハンバーガーセット (ギフト対応) 【販売元:The Meat Guy(ザ・ミートガイ)】

2018年1月 5日 (金)

PC-98のあの起動音がどこでも楽しめるUSBドングル型デバイス

PC-98の”ピポッ!”という起動音をご存知の方って、どれくらいいるんでしょうね?

そんな人に、一度は聞かせてあげたいあの音。USBドングル型のデバイスとして売られているそうです。

ASCII.jp:PC-98の起動音がどこでも“ピポッ”と楽しめるUSBアダプター

「BEEP on USB ver1.0」というこのUSBアダプター。使い方はただUSBに挿すだけ。モバイルバッテリーでもOK。

基板の裏にはつまみが二つあって、一つはボリューム、もう一つは起動音の速度を変えられるというもの。

PC-98を知っている人しかわかりませんが、本体の動作速度によって起動音の長さが変わります。

昔、バイト先にPC-9801VM2とRXとがあり、VM2が「ピ・ポッ」という感じに対して、RXは「ピポッ」っていう感じ(わかります?)

それが我が家にあったBX(486SX)になると「ピョ!」って感じで。もうほとんど聞き取れません。

それが自分好みに再現できるようですね。なかなかニクいガジェットです。

蘇るPC-9801伝説 永久保存版―月刊アスキー別冊

2018年1月 4日 (木)

Museヘッドバンドの脳波センサーとRaspberry PiのAndroid Thingsを組み合わせた電子工作

こんなセンサーがあったとは知りませんでした。

Android Thingsと脳波センサで眠くなったら部屋の照明を勝手に消す - Qiita

脳波センサーを搭載したMuseヘッドバンドと、Android Thingsを載せたRaspberry Piを組み合わせて、眠くなったら部屋の照明が自動で消えるという工作にトライした人がいます。

具体的な方法はリンク先を見ていただくとして、やり方としてはα波+β波よりもδ波+θ波の値が5秒以上続いたら寝たと判断するようにしたみたいです。

サーボでスイッチを動かして、部屋の照明をオフ。工作自体は単純です。

ただ、Bluetoothの通信が不安定とか、問題はあったようです。最大の問題はこんなヘッドセットをつけて寝られない!というものですが。

でも、脳波がある状態になったらスイッチを入れる/消すという工作に応用できそうですね。ただMuseヘッドセットはちょっと高いのが難点ですが。

Muse ミューズザブレインセンシング頭のトレーニングヘッドバンド  並行輸入品

2018年1月 3日 (水)

週刊アスキー特別編集を買ってみた

週刊アスキーの紙の冊子が出るたびに、なるべく買おうとは思っています。

Img_1958

が、年末の忙しさにかまけて、この冊子の存在を見逃していました。

”2017年総括”と書かれた「週刊アスキー特別編集」号です。

Img_1959

最初は”iPhone Xマンセー!”な記事がありますが、これをスルーして・・・

Img_1960

2017年のベストバイ賞なる記事がありました。16ジャンルに分けて、各分野ごとにガジェット好きの方々が選考するというもの。

Img_1961

ガジェット部門は、やはりというかAIスピーカーが入ってました。

うちはまだ未導入ですが、気になる一品ではあります。

Img_1962

スマホ部門は、やはりというかこの二つ。

個人的には、変化に乏しい年だったと思いますね。2017年。

Img_1964

年末に出てきたCoffielakeコアの特集も出てました。

まあ、性能ではRyzenには勝てるんでしょうけど、価格が・・・個人的に期待したいのは、やはり安いCPUですね。

Img_1965

個人的にためになった記事はこちら。

”iPhone撮影術”というこの記事。

プロっぽい写真をiPhoneで撮るためのテクニックが書かれていました。これだけでもこの本、買う価値あり!

Img_1967

アイリスオーヤマの家電特集なんてものもありました。

ほんと、これくらいでいいんじゃないかって思うものが多いですね。

他にもVR特集や週アス電子版が最大2号無料で読めるクーポンがついていたりと、なかなか読み応えのある冊子でした。

特にiPhoneの撮影術は本当に役立ちそう。現場でぱっと使えるかどうかは別として、覚えておくとよさそうなテクニックが載ってました。気になる方は、ぜひ購入を。

週刊アスキー特別編集 2018冬の超お買物特大号 (アスキームック)

2018年1月 2日 (火)

2018年も恒例のヴィレッジヴァンガード福袋購入

そろそろやめようかとも思ったんですが、結局買ってしまいました。このブログの正月恒例記事、ヴィレッジヴァンガード福袋 2018です。

Img_0496

毎年福袋を買っていたヴィレヴァンが閉店してしまったんですが、その近くにできた新しいイオンにできたヴィレヴァンで購入。

袋絵には1億円札とポプテピピック風のキャラが描かれております。でもヴィレヴァンさん、ここはネットトレンドに乗って5000兆円にしてほしかったところですね・・・

さて、昨年はこんな感じでしたが、今年も期待を裏切ってくれるでしょうか?

Img_0497

早速開封。すでに地雷臭がしますね。

Img_0498

中身はこれだけ。早速一つ一つチェックします。

Img_0499

昨年あたりからこういう広告がついてきますね。今後、恒例になるんでしょうか?

Img_0500

まずはこれ。tedという、外見はテディベア、中身はおっさんという熊。これの”2”の方のグッズのようです。

Img_0501

全部で5種類あるらしいです。要するに、コップのフチ子のようなものでしょうか?

Img_0502

・・・にしてもいやなフチ子だなぁ・・・ビール瓶っぽいものを片手に飲んだくれてそうな奴が当たりました。

この格好でどうやってコップのふちに!?と思ったんですが、おしりの辺りに引っ掛け溝がついてました。

Img_0503

お次はこれ。ドラゴンボール Z キーヘッドカバー。

Img_0504

売れ残り感漂う裏面です。

Img_0505

この青のプラスチック部分をぱかっと外して、キーの頭の部分を挟み込む・・・ようですが、これに合うキーがありませんね。今どきこんな小さなキーヘッドのキーはなさそうな気がします。

Img_0507

つづいて、トートバッグ。これはいたって実用性ありそう。

Img_0508

ちなみに描かれているのは猫。この通り、猫の「ぽんた ミニトートバッグ」だそうです。

戌年なのに猫が当たるとは、幸先がいいですね。嬉しくなっちゃいます。

Img_0509

札にも書かれている通り、内ポケットがついてます。だからなんだという内ポケットですけど。

Img_0510

うちは”こけし”なんていらないんだけど・・・などと思って手に取ったこのパッケージ商品。

Img_0512

何のことはない、中はトイレットペーパーでした。引き出物用でしょうか?

ちなみに包み紙をとると、中身はただの白いトイレットペーパーでした。

Img_0513

さて、文字通りもっとも地雷臭のするのはこれ。

Img_0514

地雷というよりは、爆弾ですが、結論から言うと本当に爆弾でした。

Img_0516

この取説を読む限り、水を入れてスイッチを入れると、一定時間後に水を吹き出す!という水爆弾だそうで。

なお、制限時間は設定不能。ランダムみたいです。

制限時間内で何かをさせるゲームで遊ぶときに、これで回すという使い方が妥当なところでしょうか。

うちでは使わないですね。子供と遊ぶくらいでしょうか?

Img_0517

中身を全て並べて撮影。

去年くらいから、なんだかボリュームが減ってきましたね。以前はもうちょっとあったんですけど。

しかし、私には「はずれが多い年はいい年になる」という不思議なジンクスがあるので、この法則にしたがえばラッキーですね。なにせ使えるものはトイレットペーパーしかありません。

今年は、いい年になるんでしょうか?

びっくりお楽しみ水産福箱X 価値ある訳あり水産品加工品・海産物をギュギュといっぱい詰め込みました。

2018年1月 1日 (月)

2018年明けましておめでとうございます!

新年あけましておめでとうございます!!

Img_3171

2018年もよろしくお願いいたします。

実は今年、このブログを開始して10年になります。開始は2008年3月9日。

当時は”物欲日記”という名目で始めたはずですが・・・今でもそうですね。初心貫徹中です。

なお、このブログ最初の記事はこちら : はじめに: EeePCの軌跡

しかし、この最初の記事を読む限り、私は物欲日記でも、”安物買い”でハッピーライフを送るというのが主眼にあったように思います。

最近どうでしょうか?iPhone Xなんて買いましたけど、あまり安物とは言い難い買い物ですねぇ。

今年こそ、初心に帰ってみましょうかね?そろそろiPhoneにも飽きたところですし。

それはともかく、今年も引き続き”ディープラーニング”に燃えようかと思っています。今年こそ、公私ともに成果を挙げていきたいですね。

何はともあれ、今年もよろしくお願いいたします。

ムトウユニパック 2018年 極上!実用性抜群!カレンダー 卓上 COLORFUL MU-104 B6

« 2017年12月 | トップページ | 2018年2月 »

当ブログ内検索

  • カスタム検索

スポンサード リンク

ブログ村

無料ブログはココログ