日々適当

hibitekitou

6月30日

与太話 |2022-06-30

今年ももう半分終わりかよ。早いよ。
という今日、冷蔵庫が納品されました。というのも自宅冷蔵庫が壊れました。冷蔵室が全く冷えなくなった。それに気付いたのが28日です。うちの冷蔵庫は2002年9月発売のモデルだから型落ちで買ったとしても2003年から2004年購入ってことになりましょう。ってことで、18年以上稼働していた可能性があるってことですね。それは流石に古いわけで(部品も手に入るか怪しいのではないか)、だから翌29日、家の近くの家電量販店に会社休んで買いに行きました。

幸いにも在庫ありでまあまあ良さげな物品が売られていたので、それを購入。で、今日30日、納品されてきたわけです。

納品にあたって、業者さんは古い冷蔵庫の搬出作業と新しい冷蔵庫の設置作業をしてくれました。で、新しい冷蔵庫について、うちの冷蔵庫の設置場所に入れることはできるけど、出すことはできないよっておっしゃられました。
新しい冷蔵庫、古い冷蔵庫の背の高さと比較して4センチ弱高くなってます。なので、設置場所の引き戸の開口部を通すにあたり、出すのは無理ということみたいです(入れることはできる。冷蔵庫を動かす時の姿勢の問題なのでしょう)。まあその課題は遥か先の時の自分に託すとしますが、冷蔵庫の売り場を見ると、大体みんな同じサイズなんですよね。18年前と比べて冷蔵庫の背が高くなったでしょう。それはイコール、今時の家の部屋の扉のサイズがそれを許容する値になっているということなんでしょうね。

ちなみに幅は75mm狭いものを選びました。これは片開きの扉のモデルが良かったという理由で、それ以上幅が広いモデルは両開きしか見当たらなかったからです。結果、背がちょっと高くなって幅が大きく狭まった。まあ奥行きは16mm大きくなってますが、幅の狭まり具合のインパクトを覆すほどじゃない、と思う。それなのに定格内容量と呼ばれる数値は大きくなっているのですね。壁の厚さが薄くなっているということでしょうか。断熱素材の進歩なんでしょうな。

年間消費電力量の数字も下がってます。計測基準が同じかはわからないので本当に下がっているかはわかりませんが、気分は良いです。

そんな時の移り変わりを感じた2022年の半分すぎる日でありました。

あ、いい機会だから前の冷蔵庫が壊れたのに気付いた日、冷蔵庫の中の食材保管のための悪あがきを名目に、前からちょっと欲しかったポータブル冷蔵庫をお急ぎ便で購入しました。こちらは昨晩から今日の入れ替えまで冷凍庫として活躍してくれました。こっちも今後活用していきたいですな。

コメント ( 0 )|Trackback ( )

顔の回転角度の推定

cg |2022-06-17

ってのをしばらくやっているのですけど、よくわからん。いや、数式的なところはとりあえず置いておいて(俺には理解できないと思うw)、openCVを使ってやってみたりとか云々。

花畑に座っている女性 · 無料の写真素材[Pexels] を使って、OpenCV の solvepnp()関数を使用して PnP の問題を解決する [Delft スタック] という解説をそのまま適用したら当然ちゃんとした結果が表示されました。
ちなみに画像上の特徴点はPhotoshopで手動で拾ってます。

2D上の特徴点に対応する元となる3Dのメッシュの頂点座標の値が重要なんだと思います。(つまり、顔の3D空間での形をできるだけ正しく数値で持っておく必要がある)

で、世の解説記事で見かける、無料で配布されている68点の特徴点で学習させた結果を使ってリアルタイムで顔の向きを推定させる記事に書いてる顔の形状の数値を使って、先の記事のコードの特徴点情報を書き換えたのが下です。

import cv2
import numpy as np

img = cv2.imread('woman-portrait-meadow-dandelions-157604.jpeg')
size = img.shape
image_points = np.array(   [[1066, 423], # 27 left brow left corner
			[1011,433], # 23 left brow right corner
			[977,436], # 22 right brow left corner
			[946,454], # 18 right brow right corner
			[1070,445], # 46 left eye left corner
			[1025,458], # 43 left eye right corner
			[983, 466], # 40 right eye left corner
			[955,478], # 37 right eye right corner
			[1021,496], # 36 nose left corner
			[982,506], # 32 nose right corner
			[1042,538], # 55 mouth left corner
			[982,549], # 49 mouth right corner
			[1006,563], # 58 mouth central bottom corner
			[1006,591] ] ,# 6 chin corner
			 dtype=np.float32)

# https://pyimagesearch.com/2017/04/03/facial-landmarks-dlib-opencv-python/
# https://myuon.github.io/posts/juniq/
object_points = np.array(   [[6.825897, 6.760612, 4.402142], # 27 left brow left corner
			[1.330353, 7.122144, 6.903745], # 23 left brow right corner
			[-1.330353, 7.122144, 6.903745], # 22 right brow left corner
			[-6.825897, 6.760612, 4.402142], # 18 right brow right corner
			[5.311432, 5.485328, 3.987654], # 46 left eye left corner
			[1.789930, 5.393625, 4.413414], # 43 left eye right corner
			[-1.789930, 5.393625, 4.413414], # 40 right eye left corner
			[-5.311432, 5.485328, 3.987654], # 37 right eye right corner
			[2.005628, 1.409845, 6.165652], # 36 nose left corner
			[-2.005628, 1.409845, 6.165652], # 32 nose right corner
			[2.774015, -2.080775, 5.048531], # 55 mouth left corner
			[-2.774015, -2.080775, 5.048531], # 49 mouth right corner
			[0.000000, -3.116408, 6.097667], # 58 mouth central bottom corner
			[0.000000, -7.415691, 4.070434] ] , # 6 chin corner
			dtype=np.float32)									
object_points = 10 * object_points #スケールを10倍しないといい感じにならない。mm単位かな。

chainPos = 10* np.array( [0.000000, -7.415691, 4.070434] )				
										 
distortion_coeffs = np.zeros(( 4, 1 ))
focal_length = size[1]

camera_matrix = np.array([ [focal_length, 0, size[1]//2 ],
			 [ 0, focal_length, size[0]//2 ],
			 [ 0, 0, 1] ], dtype = 'double')
										  
success, rotation_vector, translation_vector = cv2.solvePnP( object_points, image_points,  
			 camera_matrix, distortion_coeffs, 
			 flags=cv2.SOLVEPNP_ITERATIVE )

zero  , jacobian = cv2.projectPoints( chainPos , rotation_vector, 
			  translation_vector, camera_matrix, distortion_coeffs )
nose_end_point2D500 , jacobian = cv2.projectPoints( np.array(  [ 0., 0. , 500.] ) + chainPos, 
			rotation_vector, translation_vector, camera_matrix, distortion_coeffs )

i = 0
for p in image_points:
	cv2.circle( img, ( int( p[0] ) , int( p[1] ) ) , 7 , ( i , 0, 0 ) , -1 )
	i += 20
	
p1 = ( int( zero[0][0][0] ) , int( zero[0][0][1] )  )
p3 = ( int( nose_end_point2D500[0][0][0] ) , int( nose_end_point2D500[0][0][1] )  )

cv2.line( img, p1, p3, (0, 255, 255 ), 2 )

cv2.imshow( "RESULT", img )
cv2.waitKey(0)
cv2.destroyAllWindows()

なんとなくうまくいっているようにも見えます。アゴから顔の向きの棒が伸びるようにしていますが、ちょっと起点がずれてますね。アゴの位置を image_points から拾うのではなく、solvePnP で取得したrotation_vector, translation_vector でアゴの頂点座標を2D上にマッピングしているせいです(多分)。元となるメッシュの座標がこの女性の形状と一致していない、ということなのだと思います。けど、悪くはない、ような気がします。

コメント ( 0 )|Trackback ( )

円安

与太話 |2022-06-15

経済音痴な私の元にも、円安、ってお話が聞こえてきます。3月ごろは120円に満たなかった米ドルと円の関係が現在は135円に迫る数字になっている。まあ大変です。いろんなものの値上げが始まってますけど、Apple製品も先日発表された製品から値上げを始めてきました。Mac Studioを頑張って45万ほどで3/9に注文したのですけど、今同じ構成で注文すると53万円だそうです。AppleCareもしれっと5000円値上がりしているので、今注文しようとしたら、ちょっと躊躇したかもしれない…。

さらに言えば、去年の2月末に注文したMacBook Airですけど、こちらは17万円で発注しました。M2のMacBook Airの登場で、M1 MacBook Airは値下げされてる米国価格と違い日本では値上がりし、今同じ構成で注文すると22万円だそうです。1年以上経過した型落ちにも関わらずですよ。

という現実を目の当たりにして、ちょっとおののいている今日この頃です。

今年はiPhoneを買い換えるつもりでいるけど、その金額もだいぶ上がりそうです。構えておかないと価格発表されて逡巡して、iPhone 11 Proをもう一年とかなりかねないすな。

コメント ( 0 )|Trackback ( )

WWDC開幕

mac |2022-06-07

Appleのデベロッパー向けのイベントであるところのWWDCが始まり、そのオープニングとしてキーノートのストリーミングが行われ、例年通り各種OSのアップデートといくつかの新機種の発表が行われました。日本時間6月7日午前2時から始まったストリーミングを枕元のiPadで再生しながら見ようとしていたのだけど、M2の発表のところまで、ほぼほぼ寝てましたな。

OS周りの新機能はテキスト入力とテキスト認識が日本語環境でどこまで使えるようになっているか興味があるところです。iOS 15まで、カメラで撮影した写真内の文字列を即認識していましたけど、日本語に対しては無力だったのが改善されることになりますから、より利便性が高まることが期待できます。

macOS、iPadOS両者に共通した新機能がStage Managerってことですが、アプリごとにウインドウをまとめるってところまではこれはWindowsのタスクバーも同様ですけど、アプリケーションのグループ化が特徴でしょうか。とはいえデモを見てもそれが使いやすいものなのかちょっと分かりませんでした。この辺のウインドウを行き来して作業を行うってのは各人が自分のスタイルを持っているでしょうから、この新しい機能が支持されるのかは興味あるところです。

そんな新OSの用意する機能の中で個人的に一番興味を持っているのはMetal 3なわけですが、MetalFX Upscaling(時間差で解像度を上げたレンダリングを行なっていく?)とデータのロードを高速化するFast resource loading APIといったゲーム周りに特化した説明でした。

WWDCのセッションでMetal 3に関するものをながめていると、"Transform your geometry with Metal mesh shaders"ってのがあるのに気付きます。なんとなく待ち望んでいた進化のような気がするので動向に注目です。

さて、Macです。ハードウェアの発表としてApple SiliconのM2が出ました。無印のM1の純粋な後継と言っていいSoCなのだと思います。 8 Core CPU(4 high-performance cores / 4 high-efficiency cores)という構成はM1と同じですが、M1と比較して18%パフォーマンスが向上しているとしています。GPUは2コア増えまして、対M1比で35%向上したと言ってます。同じ消費電力ではM1の25%上の性能ってことですから、単にコア数が増えただけとも言えましょうが、より高い電圧で動作させられるようになったのかな?(あるいは電力消費をある程度度外するべきMac Proでの使用が視野に入っているとか(妄想))。Neural Engine、Media Engineも強化され、それでいて、同じ電力では他社のチップと比べて大幅に性能が上回っている、としていますな。同じ電力消費ってところがミソですね、うん。

そうしてMacBook Airが新しい筐体となって発表されました。MacBook Pro 2021の14インチ16インチモデルをそのまま薄くしたようなイメージの筐体ですが、良いですね。欲しいですね。
ディスプレイやマイク・スピーカー・カメラといった部分が割と高級な作りになっているように見えます。そしてファンレスです。
同時に大分扱いが軽い感じで発表された従来の筐体にM2を入れた13インチ MacBook Proと一緒に性能を並べると以下の通り。

  MacBook Pro MacBook Air MacBook Air
 チップ Apple M2チップ
4つの高性能コアと4つの高効率コアを搭載した8コアCPU
10コアGPU
16コアNeural Engine
100GB/sのメモリ帯域幅
メディアエンジン
ハードウェアアクセラレーテッドH.264、HEVC、ProRes、ProRes RAW
ビデオデコードエンジン
ビデオエンコードエンジン
ProResエンコード/デコードエンジン
Apple M2チップ
4つの高性能コアと4つの高効率コアを搭載した8コアCPU
8コアGPU
16コアNeural Engine
100GB/sのメモリ帯域幅
メディアエンジン
ハードウェアアクセラレーテッドH.264、HEVC、ProRes、ProRes RAW
ビデオデコードエンジン
ビデオエンコードエンジン
ProResエンコード/デコードエンジン
ディスプレイ IPSテクノロジー搭載13.3インチLEDバックライトディスプレイ
2,560 x 1,600ピクセル標準解像度
227ppi、数百万色以上対応
500ニトの輝度
広色域(P3)
True Toneテクノロジー
Liquid Retinaディスプレイ
IPSテクノロジー搭載13.6インチLEDバックライトディスプレイ
2,560 x 1,664ピクセル標準解像度
224ppi、10億色対応
500ニトの輝度
広色域(P3)
True Toneテクノロジー
拡張性 3.5mmヘッドフォンジャック
2つのThunderbolt / USB 4ポート
MagSafe 3充電ポート
3.5mmヘッドフォンジャック
2つのThunderbolt / USB 4ポート
Touch Bar  
Touch ID
ワイヤレス Wi-Fi
802.11ax Wi-Fi 6ワイヤレスネットワーク接続
IEEE 802.11a/b/g/n/acに対応
Bluetooth
Bluetooth 5.0ワイヤレステクノロジー
カメラ 720p FaceTime HDカメラ
コンピュテーショナルビデオを活用した先進的な画像信号プロセッサ

1080p FaceTime HDカメラ

コンピュテーショナルビデオを活用した先進的な画像信号プロセッサ

オーディオ ハイダイナミックレンジステレオスピーカー
内蔵スピーカーでのドルビーアトモスの音楽またはビデオ再生時は空間オーディオに対応
AirPods(第3世代)、AirPods Pro、AirPods Max使用時の空間オーディオとダイナミックヘッドトラッキング

高い信号対雑音比と指向性ビームフォーミングを持つスタジオ品質の3マイクアレイ
ハイインピーダンスヘッドフォンに高度に対応する3.5mmヘッドフォンジャック
4スピーカーサウンドシステム
内蔵スピーカーでのドルビーアトモスの音楽またはビデオ再生時は空間オーディオに対応
AirPods(第3世代)、AirPods Pro、AirPods Max使用時の空間オーディオとダイナミックヘッドトラッキング

指向性ビームフォーミングを持つ3マイクアレイ
ハイインピーダンスヘッドフォンに高度に対応する3.5mmヘッドフォンジャック
サイズと重さ 高さ:1.56 cm
幅:30.41 cm
奥行き:21.24 cm
重量:1.4 kg
高さ:1.13 cm
幅:30.41 cm
奥行き:21.5 cm
重量:1.24 kg

ディスプレイは表示色数的にAirの方が上。スピーカーはAirが4スピーカーと言ってます。Proはステレオ。カメラはAirが1080pでProが720p。マイクは両者とも3マイクアレイとありますけど、Proだけ信号対雑音比が向上したことを記しているから、あるいはちょっと性能が違うかなと疑うもののちょっとわからない。Thunderbolt が3の仕様のままで変わらなずなのは残念ですかね。ただ、Airは電源が専用のポートになったことで、Thnderboltポートが2つ確実にあくことになります。これは大きいと個人的には思います。

ということでAirの方が魅力的に見えますけど、お値段は似たようなもので、これはなかなかに迷いどころかもしれません。まあ多分どっちも買いませんが。

コメント ( 0 )|Trackback ( )
  ・