ラベル Programing の投稿を表示しています。 すべての投稿を表示
ラベル Programing の投稿を表示しています。 すべての投稿を表示

水曜日, 1月 11, 2017

Tesla、Swift開発責任者を入手|Tesla Motors

 

アップルのSwift設計者を引き抜き。

自動運転ソフト担当VPにクリス・ラトナーが就任

Tesla Motors

 

Teslaは自動運転の取り組みを率いる新しい副社長を獲得した。Chris Lattnerだ。

https://www.tesla.com/blog/welcome-chris-lattner

そのAppleからの離職は本日(米国時間10日)の早い時間に発表されたばかり。
LattnerはAppleで11年働いた。

その主な貢献はAppleの最新のプログラミング言語であるSwiftの開発。
Swiftは初心者がmacOS、iOSその他のアプリを作成する際に、比較的選びやすく使いやすい言語。

これからLattnerがTeslaで担当する役割は、これまではSpaceX 社のソフトウェア担当副社長であるJinnah Hosseinによって担当されていたもの。

HosseinはこれまでTeslaとSpaceXの両社で同じ役職を担っていた(Elon Muskが両社でCEOを兼ねているのに近い)。

Teslaはその転職を発表したブログ記事の中で、「自動運転の未来を加速する」ことができるLattnerの能力に「興奮している」と書いている。






Lattnerの経歴にはClangコンパイラーの作成やLLVMコンパイラー最適化インフラストラクチャの設計が含まれている。

彼はまた、Objective Cの進化に大きく貢献し、iPhone開発時はAppleのソフトウェア開発ツールXcodeを担当しいてた。



彼はまた、とても美しい木製家具の作り手でもある。







TeslaにとってLattnerの獲得は、ソフトウェア開発と専門知識における彼の影響力の幅広さを考えると、とても重要。Teslaは2016年後半に、この先の全車両が完全な自動運転に必要なすべてのハードウェアを搭載することを発表した。

またElon Muskは、Tesla車による西海岸と東海岸を結ぶ完全自動運転の準備を、今年の末までに整えることを目指している。LattnerはMuskの典型的な攻撃的タイムラインの中で、そうした野心を実現するための大きな力になることだろう。
 

原文
https://techcrunch.com/2017/01/10/tesla-hires-apples-creator-of-swift-as-new-vp-of-autopilot-software/





電気自動車のTeslaが、アップルの重要な開発者クリス・ラトナーを引き抜きました。

ラトナーといえば、アップルが今後のアプリ開発言語として採用したSwiftの設計者。広く使われるコンパイラ基盤技術LLVMおよびClangでも知られる卓越したソフトウェアエンジニアです。

ラトナーは開発環境担当者として11年間務めたアップルを今月退社し、テスラで自動運転ソフトウェア担当のバイスプレジデントに就任します。

アップルが2014年の開発者カンファレンスWWDCで発表した Swift は、従来使われてきたObjective-Cにかわり、今後の iOS / macOS / watchOS 等々アップルのアプリケーション開発に使われる新しいプログラミング言語。

開発者でないアップル製品ユーザーにはあまり縁のない話ですが、要するにクリス・ラトナーは特定の何かのアプリを担当していた人ではなく、今後アップルのプラットフォームで作られるあらゆるアプリのため、基盤となる重要技術のひとつを設計し担当していた人物です。


2005年に20代なかばでアップル入りする前にはイリノイ大学でコンパイラ技術を研究しており、いまや幅広く使われる基盤技術の LLVM を開発したことでも有名です。




 アップルを退社したラトナーがテスラで就任するのは、自動運転ソフトウェア部門を率いるバイスプレジデント。

いくら非凡なエンジニアとはいえ、言語やコンパイラなどコアな計算機科学的分野の専門家が、アプリケーション寄りの自動運転ソフトウェアの開発責任者に就くのはやや意外にも思えます。

しかし大富豪の「リアル トニー・スターク(アイアンマン)」ことイーロン・マスク率いるテスラといえば、単にガソリエンジンをモーターに置き換えただけの電気自動車メーカーでないのはご存知のとおり。

車載バッテリーに留まらずソーラー発電と蓄電技術を通じてエネルギー問題・環境問題の解決を図り、電気自動車を産業用途にも拡大することで物流や交通、ひいては現在の産業構造や文明レベルでの変革まで目論むマスクにとって、自動運転は未来に進むための鍵となる技術。

「環境を意識する金持ち向け自動車の実験的便利機能」程度ではなく、極めて重要な基幹技術と位置付けるからこそ、開発の基盤から設計できチームを率いてきた実績もあるラトナーが選ばれたのかもしれません。

(余談。イーロン・マスク自慢の将来構想では、自動運転技術が成熟した暁にはすべてのクルマが連携して自律無人のままUber的なタクシーや配送業務に参加できるため、自家用車を購入維持するコストは限りなく低く、場合によっては「テスラ買ったら勝手に稼いでくれて儲かった」になる見込み。自家用車よりもむしろバスや輸送トラックへの全面導入が本番です。この調子でSpace Xによる衛星ビジネスと全地球高速ネットインフラ確立、さらに火星植民地まで大真面目に続きます。)

なおアップルも電気自動車への参入を狙い大規模なプロジェクトチームを組織していたことは公然の秘密ですが、最近になって責任者の交代とともに方針を転換し、自動車そのものではなく自動運転を含むソフトウェアおよびサービスに集中するようだと伝えられています。


ここでリリースされたハードウェア担当者が移籍するなら分かりやすい話ですが、自動運転に舵を切ったと伝えられた矢先、本業のソフトウェア開発環境のキーパーソンがテスラに移ってしまいました。

ラトナーがアップル内部で自動車開発プロジェクトや自動運転ソフトウェアに関係していたのか、する予定だったのかは不明ながら、いずれにしろアップルにとっては打撃です。

(さらに余談ながら、かつてイーロン・マスクはアップルの自動車開発プロジェクトと人材獲得に触れ、「アップルが雇っているのはウチをクビになった人間」「アップルはテスラの墓地」などと言い放ったのちに謝罪していたことがあります)

アップルはまだSwift シフトの途上ではあるものの、オープンソース化された Swift のプロジェクトリードはクリス・ラトナーの移籍に伴い、Ted Kremenek 氏に引き継がれます。


http://japanese.engadget.com/2017/01/10/swift/





http://www.suzuki.co.jp/swift/




初代MacBook Air、円筒形Mac Proなどに関わったデザイナー、マット・ケースボルト

もテスラへ。

EV外装部分のシニアディレクター職に


 

最近アップルからテスラに乗り換えたのはmacOS/iOS向けプログラミング言語Swiftの開発者だけではありませんでした。

タッチバー搭載MacBook Pro Late 2016 の開発に深く関わり、初代MacBook Airや、円筒形MacProのプロジェクトを率いたマット・ケースボルトもまた、テスラへの移籍。

ケースボルトはここ数年アップルでハードウェア設計部門の役員を務めていましたが、すでに2016年12月からテスラに移り、クロージャー・エンジニアリング部門のシニアディレクター職に就いています。

しかし関わってきたアップル製品は、すべてがユーザーに受け入れられてきたかはともかく「ケーキが切れる」と話題になったMacBook Airや一大コラ祭りを巻き起こしたMac Proなど関わってきたプロジェクトはいずれもインパクト抜群のものばかりと言えるでしょう。

ケースボルトと同様にMacのハードウェア設計部門からテスラに移った人材としては、ダグ・フィールドの名前が思い出されます。アップルも同様にテスラから重要な人材を獲得しており、あまりの攻勢にイーロン・マスクがアップルはテスラ社員の墓場だと吐き捨てたのもの記憶にあたらしいところ。しかしこの発言以降、どちらかと言えばテスラ方面への人材の流れが目立ちます。

なお、テスラはクリス・ラトナーを招き入れるにあたってはブログで歓迎の意向を表明したものの、ケースボルトについてはそのような事はなかった模様。
どちらかと言えばケースボルトはみずからアップルを離れて、テスラのドアを叩いたのかもしれません。

アップルにとっては、ケースボルトの離職によって今後のMacのデザインの方向性になんらかの変化が生じる可能性が考えられます。もちろん、全体的なデザインの取りまとめにはジョナサン・アイブの意向がものを言うはずですが、たとえば新MacBook Proに賛否両論を巻き起こしたタッチバーの将来などは、もしかしたら微妙に変化することもありえそうです。


月曜日, 9月 05, 2016

真鍋 大度 DAITO MANABE|Rhizomatiks(ライゾマティクス)

 

 

テクノロジーがコンテンツだった
時代は終わった──真鍋大度



いま、新しい技術はあっという間に世界に広まり、消費されていく。テクノロジーの目新しさがコンテンツになる時代はもう終わりを告げているのだと、 ライゾマティクスリサーチの真鍋大度は語る。まだ世に出ぬ先端研究から新たな表現を探り出し、異分野の才能を組み合わせていくメディアアーティストの飽くなき挑戦とは。







真鍋 大度|DAITO MANABE

メディアアーティスト、DJ、プログラマー。2006年、Rhizomatiks(ライゾマティクス)設立。15年よりライゾマティクスのなかでもR&D的要素の強いプロジェクトを行うRhizomatiks Research(ライゾマティクスリサーチ)を石橋素と共同主宰。プログラミングとインタラクションデザインを駆使してさまざまなジャンルのアーティストとコラボレーションプロジェクトを行う。






 
メディアアーティストとして、プログラマーとして、常に新たなテクノロジー表現を開拓してきたライゾマティクスリサーチの真鍋大度。世界に先駆けて 送り出してきた作品は数知れず、コラボレーションの相手はPerfume、サカナクションからビョークなど国内外のアーティストから、「Ingress」や「ポケモンGO」を開発したナイアンティックのような企業まで多岐にわたる。

2011年から始動したダンスカンパニーELEVENPLAYとのコラボレーションでは、ドローンを使ったライヴ演出を成功させたかと思えば、その翌年には機械学習技術、コンピューターヴィジョン、VR(仮想現実)、AR(拡張現実)などの技術をいち早く導入して実験を重ね、VR、ARやドローンと生身のダンサーを交錯させるステージを開発し、新たな身体表現のありかたを発明してきた。

しかし、加速度的にテクノロジーが進化する時代、目新しい技術はあっという間に均質化し、誰でも扱えるものになる。真鍋の言葉を借りれば、「テクノ ロジー本体がコンテンツになる時代は終わった」のだという。そんな時代において、真鍋が先駆者たりえる理由はどこにあるのだろうか。







──昨年から、ライゾマティクス内のチームを「リサーチ」「アーキテクチャー」「デザイン」に分けましたね。

 

いまでは考えにくいんだけど、ライゾマを立ち上げたころの「インタラクティヴ」って、ほとんどが「ウェブ」のことだったんですよ。

当時は、東京芸大の先端芸術表現科の同僚たちでつくった「DGN」というユニットで動くことが多かったのですが、コミッションワーク(クライアントから委託され、制作されたアートワーク)はいまと比べると全然存在してなくて、DVDを持って営業周りなんかをやってました。

そんな感じだったので立ち上げてしばらくは、ライゾマ内ではぼくしか実空間のインタラクティヴはやってなかったんですよね。それがYouTubeの登場によってぼくらの作品や実験が映像で広まるようになり、いまではウェブよりも実空間のインスタレーションや演出の仕事の方が多くなりました。

そこからコンサルやプロデュース的なことをやるスタッフも増え、だんだんと仕事の幅が広がっていったので、小さなチームに分けようという感じにな り、メディアアートやエンジニアリング出身のスタッフで構成されているチームは「リサーチ」という名前でぼくと石橋(素)さんが主宰してます。元々「アンカーズラボ」名義でラボを運営していたのですが、どこもかしこも「ラボ」だらけになってきたので、そうしたネーミングにしたという経緯もあります。



──ライゾマティクスリサーチでは、今後どんなことを目指していくのでしょうか?

 

ぼくたちがやっているコミッションワークは、先端研究とファッションや音楽などセンスが求められるカルチャー領域との接点をつくり、研究をいいかたちで社会に出していく作業が多いんです。

例えば、いま手がけているプロジェクトの多くは、企業や研究室から提供された先端技術を用いて作品やデモをつくるというもの。APIやツールキットを自らつくる段階から始めて、最終的に作品として世の中に発表します。現段階ではまだ発表できる環境が限られていたり、莫大なコストがかかる研究であっても、3年後には大きな舞台で実現できるようになる。それを先駆けて、表現に落とし込み、プロジェクト化していくのがぼくらの仕事です。
ELEVENPLAYやPerfumeの演出に使っているドローンショーのシステムも、ほんの数年前までは研究室の中や設営時間が潤沢にあるミュージックビデオ撮影でしか使えなかったものでした。それを、一昨年の時点では、楽曲の転換が1分しかない紅白の舞台でも扱えるようにつくり上げました。

そうしたエンタメの大舞台で発表するためには、技術的な問題だけでなく、コンテンツとしての魅力を生み出すことも必要ですし、コラボレーターとの関係を築くことも重要になってきます。また人とドローンがどうやってインタラクションすると面白く見えるかという研究は、人間の側にもスキルや訓練が要求されます。

そうなると、訓練されたパフォーマーや、(ELEVENPLAYの)MIKIKOさんのようなステージ専門の演出家と組む必要がある。とくに生中継されるライヴでは、要求されるスキルもリスクヘッジも、映像やインスタレーションとはまったく異なっていて、それこそ5段階くらい難易度が高くなります。だからこそ、あえて参入障壁が高いライヴ作品のチャレンジを選んでやっているのですが。

また、最近ではディープラーニング(深層学習)周辺の技術をアートとして表現するような事例が増えてきていますが、いまだ研究として評価されにくいものを作品として発表するのはメディアアートの常套手段でもあります。







──真鍋さんは昔から、論文などの情報を常にリサ—チされていますよね。

 

10年ほど前であれば、学会に参加して論文を手に入れたりもしていたけど、いまはTwitterとGoogleがあればたいていの情報はすぐ手に入るし、審査基準が厳しいクローズドないくつかのメーリングリストに入ることで特別な情報を仕入れることもできます。論文はArxiv(さまざまな論文が保存・公開されているウェブサイト)、実装はGithub(ソフトウェア開発のための共有ウェブサーヴィス)に公開されていて、すぐにリーチできます。あとは、(ライゾマティクス)リサーチの登本悠介くんや花井裕也くんは、それこそ色んな研究を知っているのでふたりから教えてもらったり。


──そうして見つけ出した研究が作品のアイデアにつながるのでしょうか?

 

最近はそう簡単にもいきません。例えばCNNでイラストを描いたり画風を真似たりするような、実用性は低くても面白いネタがあったとき、昔だったら学会やメディアアートの展示でしか発表できなかったことでも、いまはネットやSNSで多くの人に見てもらうことができますよね。

個人的に好きな画像生成ネタなどは常に追いかけていますが、去年発表されたネタですら、いつの間にか『Prisma』(写真加工アプリ)のようなアプリが登場して、あっという間に拡散されて、すぐに古いものと感じてしまう。


──メディアアートもテクノロジーも、その新しさばかりが注目されがちです。だからこそ、本質的に「古くなる」という宿命も抱えていますね。

 

古くなるっていいところもあると思うんです。音楽や絵画は、古びるのにも時間がかかるし、ずっと新鮮なままだったりもする。ぼくはもともと音楽をつ くっていたからこそ、先人が残した傑作と同様のフォーマットで勝負しなければならない厳しさを実感します。でも、メディアアートは常にネタが更新されていくし、フォーマットも定まらないから息詰まることがない。すごく面白いアートフォームだと思います。


──新しい技術がどんどんと登場し、誰でもそれが扱えるようになるスピードは早まってきていますよね。

 

テクノロジーがコンテンツだった時代は終わってきましたね。テクノロジーを使ったアートには、技術的なハードルが高くてほかの人が参入できない分、「先駆者ボーナス」期間みたいなものがあるんですよ。

例えばぼくらの場合は、スキャンデータを使ったハイブリッドなARやドローンを複数台で飛行させる技術などがそれにあたります。実装の難易度もさることながら、実案件をつくるチャンスが少ないのでまだ世の中に数えるくらいしか実施例がない。

でも、そんなボーナス時期は1、2年ほどしか続きません。15年前だったら、スクリーンの前で手を動かしたら映像が反応して動くようなインタラクティヴネタがまさにそれで、画像解析のノウハウと映像生成の技術がないと実現できない表現だったため、一部の人が特権的にやっていた。しかし、最近ではゲームエンジンの「Unity」や「openFrameworks」といったプラットフォームの登場によって、誰でもできるようになりました。結果的に、いま、テクノロジーの新しさではなくコンテンツで勝負していく時代になったわけです。







──参入障壁が下がった結果、表現が均質化したとも言えますよね。

 

新しいテクノロジーを用いて、それを色々試してみても、可能な表現は本当に限られています。だから、最後はみんな同じようなものになるんです。早い者勝ち、もしくはスケールアップさせて、いち早く大衆化させたほうが勝つ。これらはぼくらにも常に付きまとう問題ですね。


──そうした時代に、ライゾマティクスが独自性を貫き続けられるいちばんの特性は何だと思いますか。

 

ポップな表現で大衆化させながらも、コアな人たち、つまり技術分野のコミュニティの人たちが見ても唸るものをつくる、ということでしょうか。

例えばカンヌライオンズやSXSWで行ったPerfumeの演出は「超ポップ」ですが、支えている技術はその筋の研究者や玄人が手を尽くしてもなかなかできないくらい特殊なものです。前者は衣装のパーツを解析する部分に特殊な手法が入っているので、専門家がパッとみてもわからないものだし、後者も、事前に 会場やメンバーの身体を3Dスキャンしていないと実現できない、モーフィングの新しいアイデアが盛り込まれています。

コンピューターヴィジョンの世界的な第一人者であるカーネギーメロン大学の金出武雄先生に「あのCannesでの仕組みはどうなってるんですか?」と聞いてもらえたり、いまをときめくARアプリ「ポケモン GO」の開発者ジョン・ハンケがライゾマに遊びに来たときに「あのSXSWで披露したARにはインスパイアされたよ!」と言ってもらえたりとか。そうした人たちにも刺激を与えられるプロジェクトをつくれたらいいなと思ってやってますよ。



──それほどの影響力をもった作品を生み出すためには、どんな要素が必要なのでしょう。

 

ぼくらの仕事って、基本は職人芸の世界なんです。そこにイノヴェイティヴな要素があるとすれば、チームの構成要因でしょうね。

わかりやすい例を挙げるなら、ドローンやARの技術でステージをつくろうとしたとき、ひとりの天才エンジニアが頑張っても、絶対につくれないんです。振付家はもちろん、コンピューターヴィジョン、ハードウェアエンジニアリング、ソフトウェアエンジニアリング、プロダクトデザイン、3DCG、作曲家といった領域のスペシャリストが作品のために集結してチームをつくる必要があります。あとは、制作過程。例えばドローンの飛行パターンは、通常だとソフト ウェアのエンジニアか3DCGのデザイナーがつくると思いますが、ぼくらは独自ツールを開発して振付家にパターンをつくってもらいます。その方が人間とド ローンのインタラクションの演出をつくりこめて、パフォーマンスとしての完成度が高まる。
ぼくらがやっている表現は、フォーマット自体がまだ世に出たばかりのものであるがゆえに、新しいチーム編成が必須。だからこそ世界に先駆けていくことができているんだと思います。



──そうした優秀なスペシャリストは、意識的に集めてこられたのでしょうか。

 

それは、すごくありますね。「こういう技術をもった人が絶対必要になる」と思ったら、ピンポイントで探して声をかけたりもしています。

ぼくのバックグラウンドは数学と音楽、あとメディアアートの知識はオタクと言われるほど詳しいですが、AR(拡張現実)やVRには花井くんのようなカメラエンジニアが必要だし、AI分野にも登本くんのような専門家が必要です。ドローンはハードウェアの問題がでかいので石橋さんを中心としたチームがいないと実現できない。

最近では衣装の仕事も多いですが、これは柳澤(知明)くんのようにデザインもエンジニアリングもできる人でないと実現できない。ライゾマリサーチはそういった職人が集まるチームとして構成されています。異分野間の才能や技術を組み合わせたときにどんな新しいことができるかを考えるのが、ぼくの役割とも言えますね。







──最近、「コンピューター持ち込み禁止」を謳ったクラブイヴェント「ANALOG」を始められたのは、テクノロジーで均質化する表現への打開策だったりするんでしょうか。

 

デジタルのDJはさくっとやろうとすると簡単すぎるし、本気で色々やろうとすると無限に準備ができてしまうので、楽しむことだけでいうとアナログがちょうどいいんですよ。
数分の表現を実現するために、開発に1年以上かけることもざらになってきているため、その反動で身体能力や瞬発力を必要とする表現 への回帰が出てきているのかもしれないですね。

一方で、デジタルのDJの可能性はまだあると思っていて、AIを使って選曲の幅を拡張する実験イヴェント「2045」も続けています。会場内のセンサーやお客さんのアプリなどから取得したデータをもとにAIがベストの選曲をするというシステムを実験中なのですが、これは近々Spotify(スウェーデン発の音楽ストリーミング配信サーヴィス)が日本に上陸したらもっと面白いことができると思っていて。

Spotifyのアルゴリズムを使って自動でプレイリストを生成して、どの曲順がいちばんユーザーに好まれるか、みたいなテストをやってるのですが、そういった実験はDJ的に考えても非常に面白いなと思います。過去のDJingもGracenoteに協力してもらってやっていましたが、個人でやるよりも企業と組んでやった方が面白い分野ですね。



──そうしたなかで、これからは何を目指していくのでしょうか。

 

長期プロジェクトのゴールが見えてきたこともあり、いまは長期休暇を取るということ以外に目標はないんですよね。スタッフに「真鍋さんのヴィジョン は何ですか」って聞かれることがあるのですが、わざわざ抽象的なヴィジョンをつくる必要はないと思っているのが正直なところです。 ”人間をテクノロジーの力で拡張する” と言った発言も、今回みたいな取材やプレゼンでしか使えないんですよ。



先日建築家の方と対談があって、「大きな扉をつくるとは言わず、その扉があることで空間が大きくなる、と言っておけば扉のサイズは関係無くなる。建築は諸事情によってつくるものが変わっていくから、ある程度の抽象化が必要」とおっしゃっていて、なるほどなと思いました。ぼくがヴィジョニスト気取りで壮大なことを語っているのをみたら、「何か事情があったんだな」と思ってください(笑)。



パフォーマンスのケースで考えると、ダンサーと共に踊るものが映像、ロボットアーム、ドローン、そしてAIに展開して行きましたが、それを具体的なお題にすれば”テクノロジーを用いて、新しい振付制作のルールをつくり出せるか”ということだろうし、抽象化すれば”テクノロジーが身体表現にどこまで寄 与しうるか”ということになるでしょう。

ぼくらのプロジェクトはすべて繋がっているので、それを見てもらえれば、この先に目指す方向も見えてくるのではと思います。ですので、最新作だけでなく、過去の作品もチェックしてもらえると嬉しいです。





木曜日, 12月 24, 2015

【全自動】水玉コラ生成マシーン

全自動水玉コラ生成マシーン


聖なる夜なので表題のものを作った。


https://github.com/onk/auto_circle_collage



processing で書いたアプリだけど、この記事の内容はほぼ OpenCV の話です。

 

仕組み

  1. 水着を自動認識して「隠す」とマーク
  2. 顔を自動認識して「見せる」とマーク
  3. マークに沿って円充填

 

 

水着領域の自動認識

最初のアプローチ

  • OpenCV を使って肌色認識
  • 選択領域を膨張 -> 収縮させる
  • 肌色との差分を取れば水着領域が完成

 

肌色認識

先人が大量に居た。RGB 色空間ではなく HSV 色空間を使うというのがコツなようだ。




HSV色空間 - Wikipedia


HSV 色空間なら影になっている部分も抽出できる。
今回は Hue: 7..15 を肌色として定義した。

PImage detectHada() {
  // 作業用に hue で grayscale にする
  opencv.loadImage(img);
  opencv.useColor(HSB);
  opencv.setGray(opencv.getH().clone());
  // 肌色は 7..15 と定義。inRange で取り出す
  opencv.inRange(7, 15);

  // ノイズ除去 MORPH_OPEN
  opencv.erode();
  opencv.dilate();

  return opencv.getSnapshot();
}
 

 

 

膨張・収縮

欲しいのは肌色領域ではなく水着領域なので、肌と肌の間の空間を選択する必要がある。
膨張 -> 収縮し、最初との差分を取ることで取得できるのではないかと考えた。


// 輪郭を広げて戻す
for (int i = 0; i < 10; i++) { opencv.dilate(); }
for (int i = 0; i < 10; i++) { opencv.erode(); }
が、膨張する際に水着領域を上手に隠せないパターンが多い。
問題はループで 10 回回しているところにあり、本来は膨張・収縮時にパラメータを渡して解決すべきである。 デフォルトのパラメータのまま無理やりループで代替したところ、望むような膨張効果が得られていない。
opencv-processing でパラメータを渡す方法を調べるのに時間がかかりそうだったので次善の策に頼ることにした。

 

彩度の高いもの=水着と仮定する

グラビアの水着はなぜか彩度の高いものが採用されていることが多いので「彩度の高いもの」という条件で水着が抽出できる。
いくつかパラメータを変えつつ試したが、
  • Saturation: 180..255 (彩度の高いものを水着と仮定する)
  • Brightness: 8..247 (あまりに暗いもの、明るすぎるものを除外する)
という絞り込みで、一定の条件の水着に対しては判定が効くようになった。



void detectMizugi() {
  // 水着を彩度 180..255, 明度 8..247 と定義。inRange で取り出す
  opencv.loadImage(img);
  opencv.useColor(HSB);
  opencv.setGray(opencv.getS().clone());
  opencv.inRange(180, 255);
  PImage s = opencv.getSnapshot();

  opencv.loadImage(img);
  opencv.useColor(HSB);
  opencv.setGray(opencv.getB().clone());
  opencv.inRange(8, 247);
  PImage b = opencv.getSnapshot();

  // TODO: 無駄に PImage に一度変換して blend しているが
  // おそらく OpenCV のみで可能
  s.blend(b, 0, 0, width, height, 0, 0, width, height, MULTIPLY);

  opencv.loadImage(s);
  opencv.erode();
  opencv.dilate();

  ArrayList<Contour> contours = opencv.findContours();
  for (Contour contour : contours) {
    // 面積が小さすぎるものはノイズと判断して弾く
    if (contour.area() > 25) {
      mizugiAreaList.add(contour);
    }
  }
}

 

顔領域の自動認識


OpenCV に任せて 2 行で解決した。
opencv.loadCascade(OpenCV.CASCADE_FRONTALFACE);
Rectangle[] faces = opencv.detect();


デフォルトだと誤認識率が 30% ぐらいあるが、OpenCV に同梱されている分類器を複数重ね合わせて使う のように、認識率を上げる手段がまだあるようだ。

 

円充填

ここまでで「隠す領域」と「隠してはいけない領域」が抽出できたので、 いい感じに円で埋めていく作業をする。

等で勉強したのだが、美しい水玉コラを作るには
  • 水着を全て隠す
  • 顔は必ず見せる
  • 水玉は重ねない
  • 水玉の数は多くても 15 個まで。少なければ少ないほど良い

といった標準的なルールの他に
  • 穴が直線上に並ばないようにする
    • 隠された領域が水着っぽく見えてしまい、「らしさ」が薄れる
  • 肩、くびれを見せる
    • ボディラインを強調することができ、より完成度が高く見える
  • 谷間・アゴを見せる
    • 「らしさ」が一層高まる

といったテクニックがあるようだ。
とはいえ「くびれを学習させた教師データ」なるものは存在しないので、右上、左上から先に開けることでなるべく肩が含まれることを期待するにとどめた。
ここでゲームで培った当たり判定の技術 (OBB と点の当たり判定、凸包と点の当たり判定等) が生きたんだが、 処理を簡便化するために水着領域を凸包にしたことで谷間を見せることができなくなってしまった。



 (黄色の部分が当たり判定になるので谷間は必ず隠れてしまう)
ここは今後改善したい。

 

 

おまけ (曇りガラス効果)

OpenCV には inpaint という演算があり、これを用いると「選択領域を取り除き、付近のピクセルを利用していい感じに埋める」ということができる。
と、いうことは「水着を取り除き」「ガウスボカし」で曇りガラス表現ができるのでは……!


 

まとめ

OpenCV 超便利。
全自動で水玉を適用できるようになったので「動画に適用できるのでは?」とか「Chrome 拡張等で全 web ページに適用できる?」とか夢が広がっている。
また、人間が頭で考えている手順はだいたい自動化できるというのも再認識した。

 

偉大なる先人たち

 

http://blog.onk.ninja/2015/12/24/auto_circle_collage

「妄想マッピングコレクション」

 

木曜日, 9月 24, 2015

Googleのソースコード管理

20億行のコードを保存し、毎日4万5000回のコミットを発行しているGoogleが、単一のリポジトリで全社のソースコードを管理している理由

Googleは検索サービスやGoogle Apps、Google Cloud Platformなど巨大なサービスを多数運営しています。その同社は、20億行にもおよぶソースコードの管理をサービスやプロジェクトごとに分けず、す べて単一のリポジトリで管理しているそうです。
先週9月14日にサンノゼで開催されたイベント「@Scale」 で、Googleによるセッション「The Motivation for a Monolithic Codebase: Why Google Stores Billions of Lines of Code in a Single Repsitory」(単一コードベースへの取り組み:なぜGoogleは単一リポジトリに数十億行ものコードを保存しているのか)」が行われ、その模様 がYouTubeで公開されています
なぜGoogleは単一のリポジトリでソースコード管理を行っているのか。セッションの要点をまとめました。

Why Google Stores Billions of Lines of Code in a Single Repsitory

Googleにおけるソースコードマネジメントストラテジについて。
Googleではソースコードをモノリシックな単一のリポジトリに保存している。これまで何度も複数のリポジトリにするかどうか議論してきたが、そのたびに単一のリポジトリの方がよいという結論に達してきた。
なぜそうしてきたのかを紹介する。
その前に、Googleのコードの規模を紹介しよう。いくつかは初めて発表する数字だ。

fig

ファイル数は10億、ソースコードは900万ファイルで、これにドキュメントファイルやコンフィグレーションファイルなどが別にある。コードは全部で20億行。
リポジトリのユーザーは世界中に約2万5000人。コードに対して1日約4万5000回のコミットが行われており、約1万5000が人によるもので、約3万が自動化によるもの。
特に2004年にGmailをローンチしてからコードの変更が急速に増えてきている。特に、最近は自動化に伴うコミット数が急激に成長している。
Googleのデベロッパーは、クラウド上のパーソナルなワークスペースにコードをコピーし、プログラミングし、レビューを受け、コミットする。
コードの自動分析、自動テストはこの作業のさまざまな段階で行われている。

単一レポジトリの利点

fig
  • 統一的なバージョンと、唯一の正当なコード
共有されるライブラリのフォークがない、どのバージョンのファイルが信頼すべきものなのかといった混乱が生じない。
  • コードの共有と再利用が容易
デベロッパーは社内のすべてのコードを自分たちのツールで触ることができるため、必要なライブラリや関数を見つけやすい。
コンパイラチームでは、社内の最新コードを使ってコンパイルやコード生成を試すことができる。
古いAPIを自信を持って削除できる
死蔵されているコードを見つけ、削除するツールを利用して、コードの健全性を高めている
  • アトミックな変更が可能
数千ファイルの同時変更でも1回のコミットで確実に実行できるため、ファイル更新などの問題が発生しにくい。


関連記事

火曜日, 11月 04, 2014

女性プログラマーの数が少ないのはなぜなのか?


女性プログラマーの数が少ないのはなぜなのか?




ビル・ゲイツ氏やスティーブ・ジョブズ氏、マーク・ザッカーバーグ氏などIT業界のビッグネームはみな男性です。しかし、コンピューター分野の先駆者の中にはElsie Shutt氏のような女性もいたそうで、1984年までは彼女のような女性プログラマーを目指してコンピューターサイエンスを大学で専攻する女性の数は徐々に増えていました。

Ministry of Truth » Blog Archive » So where did all the women coders go?
http://www.ministryoftruth.me.uk/2014/10/23/so-where-did-all-the-women-coders-go/


1984年に突如コンピューターサイエンスを専攻する女性の割合が激減しており、その割合は現代に至るまで減り続けています。その様子がよく分かるグラフが以下のもので、「Medical School(医大)」「Law School(ロースクール)」「Physical Sciences(物理科学)」「Computer science(コンピューターサイエンス)」といった4つの分野を専攻する学生の女性比率を図示したものとなっています。他の分野では年々全体における女性の割合が大きくなっているのに対して、コンピューターサイエンスだけは1984年から女性の比率が減少傾向にあり、現在では20%を切ってしまっている、という悲惨な結果。アメリカのナショナル・パブリック・ラジオ(NPR)は「When Women Stopped Coding(女性がコーディングを辞めた瞬間)」としてこのグラフをピックアップしています。


とは言っても比率が減少しているだけで、コンピューターサイエンスを専攻する女性の数は徐々に増加している可能性もあります。そこで登場するのが、1970年から2011年までの期間にコンピューターサイエンスおよび情報科学分野の学位を取得した人数を、National Center for Education Statisticsのデータから明らかにした以下のグラフ。


上のグラフを見ると、コンピューターサイエンスおよび情報科学分野の学位を取得する学生の数は1970年から増えており、これは男性と女性のどちらにもみられるものであることが分かります。そして、1976年から1985年にかけて男性の学位取得者の数は女性の学位取得者よりも急増しており、これにより男女比が男性側に大きく傾いていったことも分かります。

この理由について、1980年代にコンピューターサイエンスおよび情報科学分野の学位取得者数が急増しているのは、男性がコンピューター関連の広告のメインターゲットになる場合が多かったからでは、とNPRは推測しています。なぜ80年代の広告代理店がコンピューターを男性に売り込んでいったのかは不明ですが、80年代からコンピューターオタクが登場する映画や雑誌や小説などは複数あり、これらにより「コンピューターは男性向けのもの」という思い込みのようなものが形成されていったのかもしれない、とのこと。

実際に80年代のテレビコマーシャルを見てみると、コンピューターが「男性向けの端末」といった位置づけで市場で売り込まれていることがよく分かります。

80's Radio Shack Color Computer Commercial - YouTube


Apple computer ad 1985 JH - YouTube


そして、1986年からはコンピューターサイエンスおよび情報科学という分野全体の学位取得者数が減少しており、この減少現象が1993年まで続いているのがグラフを見ると一発で分かります。なお、1993年のコンピューターサイエンスおよび情報科学分野の女性学位取得者数は、それまでのピークであった1985~86年度の約52%しかなかったそうです。


その後の1997年から2003年までの期間、再びコンピューターサイエンスおよび情報科学分野の学位取得者数は急激に増加しており、第2次ブーム(1997~2003)が巻き起こっていることがよく分かります。第1次ブーム(1976~1985)と第2次ブームの大きな違いは、ブームが始まる時点で既に男女の学位取得者数の間には大きな溝があった、という点。第2次ブームでは男性の学位取得者数が毎年143%ずつ増加していったのに対して、女性は毎年124%ずつしか増加しなかった、とのこと。なお、第2次ブームはドットコムバブルの時期と重なっており、ドットコムバブルがIT業界への興味関心をかきたてた結果、コンピューターサイエンスおよび情報科学分野の学位取得者の数が増え、バブルがはじけると同時に取得者の数が減少していった、ということのようです。


さらにその後は、2003年から2009年にかけては再び学位取得者数が減少。男性の場合は2004年のピーク時から単位取得者の数が36%減少しており、女性に至っては2003年のピーク時から50%以上も単位取得者が減っています。

なお、初めはIT業界でプログラマーとして働くにはコンピューターサイエンスの学位を取得するのがほぼ唯一の道であったそうですが、現在ではさまざまな方法でプログラマーになることが可能です。さらに、プログラマーといっても、学術的なことを研究する人からゲームプログラマーやITサービスを開発するプログラマーまでその種類は多種多様なので、80年代中頃からはコンピューターサイエンスの学位を取ることだけがプログラマーになるための道ではないと判明し、コンピューターサイエンスおよび情報科学分野の学位取得者数が減少していったと考えられるそうです。

水曜日, 9月 03, 2014

Web制作で使える使えた!jQueryプラグインまとめ

Web制作で使える使えた!jQueryプラグインまとめ

jquery_plugin_gallery
今回は「Web制作で使いたい使える」jQueryプラグインやスクリプトなどをまとめました。WordPressテーマを作るときに使うもの、検索でヒットしにくいプラグインも多数ご紹介。


もくじ

動画

WP管理画面

テキストエフェクト

エフェクト

メニュー

スライド


動画

1.動画をブラウザの背景全体に再生させる

background-video-browser_jquery
最近ではサイズ大きめの通信が可能になりつつあり、動画を使いインパクトを出すページが増えてきました。こちらはYouTubeにアップロードされた動画を背景全体に表示させるtubularというプラグイン。動画を背景にするならこれがイチオシです。

2.動画を綺麗に表示させる

nicely-video_jquery
YouTubeをページにそのまま埋め込むと、上下に黒のバーがつき、YouTube感が出るので見栄えが今ひとつです。こちらは動画をシンプルに表示させるためのPrettyEmbedというプラグイン。もう一つは動画をポップアップさせるプラグイン。


WP管理画面

WordPressの管理画面をカスタマイズするときにフロントページの配色(カラーピッカーでの)の変更やファイルをアップロードしたりする機能を付けたい。そんな一歩進んだカスタマイズをしたいときに知っておくと便利なものをメモしておきます。

3.カラーピッカー

color-picker_jquery
管理画面にて背景色やメインカラーをユーザーに選択してもらいたい場合、カラーコードを入力させるより、カラーピッカーでの選択をさせたい。そんな時はこちらのFarbtastic Color Pickerを使います。

4.ドラッグ&ドロップでファイルをアップロード

upload-file-drag-and-drop_jquery
管理画面からロゴ画像やファビコンなどを直接アップロードさせられるようにカスタマイズしたい。そんなときはこちらのPluploadというファイルアップローダが便利。

5.並べ替え+DBに保存

sorting_jQuery_jquery
ドラッグ&ドロップで並べ替えを行えるようにします。並べ替えた順番を保存・再現する方法と並び順をデータベースに保存も合わせてチェック。


テキストエフェクト

6.文字を動かしならがテキスト表示

move-text_jquery
国産のコーポレートサイトを見ているとたまにみかける、文字を動かしながら表示するエフェクト。

7.フォントサイズを変更

change-font-size_jquery
スクリーンサイズに応じてフォントサイズを変更させるレスポンシブなプラグインfontFlex。ブラウザのサイズに応じて自動でサイズを調整してくれます。

8.文字の拡大・縮小

scaling-character_jquery
来訪者に文字のサイズ調整を選択させるには、Text Resizerを使うと実現できます。スタイルが古めなのでCSSで今風に調整しましょう。

9.数字のカウントアップ

count-up-number_jquery
指定した数字までエフェクトをかけながらカウントしてくれるライブラリcountUp。WP有料テーマなどでよく見かけます。

10.読み込み時に文字を動かす

move-character_jquery
FlashのようにJavaScriptでアニメーションを実現する書き方でsetTimeoutを使っています。jQueryでフェードインなどを○秒後に実行する場合はsetTimeoutopacityを使います。


エフェクト

11.波紋

moire_jquery
マテリアルデザインで採用されている波紋エフェクトを実装できるtwinkle

12.ドラッグで画像を回転

image-dragging_jquery
画像を掴むと動かした方向へ回転させることが可能になるThreeSixtyRotate

13.ボタンを3Dで回転

rotate-3d_jquery
クリックすることで上下左右と立体的に回転させることができるTURNBOX。縦横幅、回転軸、アニメーションの時間、回転方向などを指定可能です。

14.要素が見えたタイミングでイベントを発生

スクロールされた箇所でイベントを発生させるinviewを使い、ブラウザ上で見えたときに処理を実行させます。


メニュー

15.メニュー以外を暗くするメガドロップダウン

megadrop-dark_jquery
ナビゲーションメニューの大カテゴリをマウスホバーしたときに、サブメニューをamazonメガドロップのように見せたい。こちらはメニュー以外を暗くするオーバーレイエフェクトつき。

16.簡単にナビゲーションメニューをレスポンシブへ

responsive-navigation-easily_jquery
筆者が使った中で一番簡単に実装可能だったのでオススメ。

17.タブからアコーディオンに切り替え

switch-accordion-tab_jquery
スマホ表示の際、タブのままだと使いにくそうだと感じたら、ブレークポイントでタブをアコーディオンに変更させるResponsive-Tabsを使います。

18.クリックすると上部に拡大画像/フォトギャラリー

enlarge-image_jquery
写真をクリックすると上部に拡大画像を表示します。開閉時のエフェクトが気持ちよいですよ。


スライド

19.4分割表示

split-display_jquery
4つのタイル型スライドのチュートリアル。こういった見せ方もあるんだなということでメモしておきます。

20.マウス操作でスライドを移動させる

move-mouse_jquery
画像をマウス操作で移動させるチュートリアル。以下で使われているDragdealer.js – drag provider, the good stuffではドラッグで要素を移動させることが可能です。


21.IE8以下でもCSS3のbackground-sizeを使えるように

background-size-ie8_jquery
横幅ピッタリなページが増えてきましたが、IE8以下でもbackground-sizeプロパティを使えるようにしたい。そんな時はこちら。

22.要素を上下左右中央にフィットさせる

vertical-horizontal_jquery
画像などを上下、左右、中央にフィットさせるJSライブラリ。





  Web制作者のためのCSS設計の教科書 モダンWeb開発に欠かせない「修正しやすいCSS」の設計手法