ECM 與 EMM 小註解

初學的時候, 對這兩個名詞很容易搞混, 只是硬記.

ECM = Entitlement Control Messages

EMM = Entitlement Management Messages

後來看了 RDK Summit 2019 的文件, 覺得解釋得很好. 在腦海中翻譯成中文後就更加心領神會了.

首先我有一個受保護的資料要解擾, 因此用一個 Control Word 來解擾它. 解擾和解密的差異在於 Control Word 會一直換, 達到擾亂的目的. 就算一時可以矇對, 可能每隔 15 秒就換一次 Control Word. 

Control 是控制的意思. 我們那屆的控制系, 班服背後就寫著大大的 “Everything is under Control" , 穿起來很風光. 而我們電信系的班服上的 “Commuication" 因為少了一個 n 所以很少人穿.  咳… 管理 Control word 的資訊當然就是 Control Message. 因為表彰管理權限, 給予權利, 所以是 Entitlement Control Message.

ECM –> Decrypt –> Control Word 

Scrambled data + Control Word –> Discramble –> Clear data

控制是針對普遍性, 但管理要考慮獨特性. 因此在控制的上面要多一層管理. 對事情、對人、對 key 都用這個聯想, 就變好記了. 國有國法、家有家規, 凡事都按照規定來做是控制, 而上面要有一個 Manager 就是要管理差異性.

EMM + Device Unique Key –> ECM key

ECM + ECM Key  –> Dercypt –> Control Word

Scrambled data + Control Word –> Discramble –> Clear data

美國股市鎔斷小筆記

最近一週美國股市上上下下, 蔚為奇觀. 所以筆記起來供日後參考.

當然大家都知道這次災難的主因就是武漢肺炎, 又名新冠病毒, 或者 Covid-19. 但是後續發展充分展現了各國不同的世界觀, 透過這個窗戶, 我又重新認識了這個地球. 

病毒剛發生的時候, 大陸應該是最嚴重的地區, 但是我手中的中國 ETF 不跌反漲, 即使不計歷年領到的股息, 股價也突破了我過去的買點, 在 2020/1/14 來到最高點.我只能說根本在護盤.

美國人大概認為那是中國人的事, 就算世界工廠震盪一下, 也不影響他們. 所以股市穩定到 2020/2/24 左右. 在這段期間, 我個人當然也就歡樂地創下個人資產新高. 後來美股稍微走勢疲軟, 陸股也慢慢有點不行了. 這段期間都還是高檔盤旋.

我從同事們聊天的訊息中得知, 上下游廠商的訂單都還不鬆手, 大家都樂觀地等著大陸的疫情收斂, 然後加班兩個月把失去的一個月產能補足, 這樣今年還是可以跟往常一樣過去.

接著在 228 假期當晚, 美股出現了大跌. 才跌個 3~4%, 朋友便用大屠殺來形容. 所以我也開始執行先前宣告的 QQQ 買進計畫.  話說錢從那裡來呢? 因為我認為大陸根本護盤, 所以就不老實也不客氣地把手中的中國 ETF 賣賣賣賣賣…, 抽出幾千萬貝里來備戰, 時間非常充裕.

2020/2/28 我第一次試買 QQQ, 當時買在 200 USD 以下就覺得很便宜了. 到 2020/3/3 美股回彈還小賺. 畢竟已經有幾次一日危機的歷史經驗, 只跌一兩天確實並非不可能. 我看到網路上有人說這是非經濟因素, 不需要恐慌. 但我認為人命關天, 會死人就是最基本的經濟因素, 沒有人哪有經濟呢! 同理, 外星人入侵也是經濟因素, 外星人會顛覆社會價值觀, 推翻宗教, 幾十億人的想法都改變當然會影響經濟.

喔, 言歸正傳. 美股鎔斷的 (收盤) 數據整理在下面, 寫著寫著又多了一筆, 根本投資人的日常.

日期 道瓊跌點 道瓊跌幅 Nasdak跌點 Nasdak跌幅 S&P500跌點 S&P500跌幅 近因
1997/10/27 554.26 7.18% 亞洲金融風暴
2020/3/9 2013.76 7.79% 624.94 7.29% 225.81 7.6% 新冠肺炎+原油價格戰
2020/3/12 2352.6 9.99% 750.25 9.43% 260.74 9.51% 新冠肺炎+禁歐洲令
2020/3/16 2880.01 12.12% 976.74 12.4% 326.03 12.02% 降息 4 碼
2020/3/18 1338.46 6.3% 344.94 4.7% 131.09 5.18% 撒1.2兆美元?

如先前所說, 要付應美元貶值造成的匯損, 就是要買美元資產. 現在美元資產便宜, 美金實質貶值, 手邊的美金要加速用掉. 倒是美國大量印錢撒錢之際, 美金反而對台幣升值, 可見外資對台股相對更加恐慌. 如果我是外資, 應該會捨跌得慢的台積電去買鎔斷 4 次美股. 畢竟下游不好, 上游也好不到哪裡去. 只是比較晚衰退而已.

[2020/3/20 後記]

2020/3/19 也發生台股跌破十年線這件事 (9112~9114 左右), 按照往例, 此時買進不會虧. 你不買國安基金會來買. 所以儘管外資不斷提款台積電 (還是持有 75%), 但內資昨天買, 等國安抬轎也是一個不錯的選擇. 本來我已經退出台股了, 昨天還是買了一點點. 

fc_for_tsmc-768x575

YOLO V3 + Tensorflow V2 小筆記

去年我寫了一個專利, 到現在專利事務所還沒完成申請流程, 這樣我就不能公開啦! Anyway, 我來研究實作技巧吧.

首先, 我需要 YOLO V3. 前幾年研究的 Facenet 是用 Tensorflow 1.10, 現在上網一查, 人家已經用 Yolo V3 搭 Tensorflow V2 [1] 了. 首先需要 TF V2 [2]. 然後用上次的老招升級成 tensorflow-gpu

pip3 install --ignore-installed --upgrade tensorflow-gpu

此時遇到下面 error

distributed 1.21.8 requires msgpack, which is not installed.

用 pip3 install msgpack 解決.

接著在 Yolo V3 的安裝過程中, 需要多安裝 git for windows, 這可以參考 [3]. 至於 wget 在 Anaconda3/Lib 底下有.

一切搞定後, 進入 Anaconda3 的 TF2 (自己取的) 虛擬環境, 進行 Yolo v3 的訓練. 此時會報一個錯. 

File "C:\AI\Anaconda3\envs\TF2\tensorflow-yolov3\core\config.py", line 14, in <module>
from easydict import EasyDict as edict
ModuleNotFoundError: No module named 'easydict'

這時只要安裝 easydict 就好, 就可以堂堂跑 Yolo V3 了. 看樣子也真的有去找 GPU.

PS C:\AI\Anaconda3\envs\TF2\tensorflow-yolov3> python train.py
2020-03-04 23:31:09.283568: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
2020-03-04 23:31:10.297903: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1411] Found device 0 with properties:
name: GeForce GTX 1050 major: 6 minor: 1 memoryClockRate(GHz): 1.493
pciBusID: 0000:02:00.0
totalMemory: 2.00GiB freeMemory: 1.61GiB
2020-03-04 23:31:10.345495: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1490] Adding visible gpu devices: 0

接下來就是去洗澡, 看要多久才會 train 完. 可是, 六分鐘護一生之後, Python 把環境建好, 開始讀檔案要 training 時就出錯了. 原來是個豬頭 bug 把路徑名稱寫錯, 這題還研究了半天, 以至於學會了 os.path.normpath, os.path.join 的用法…

重新起跑後不久, 又遇到了 memory 不足的問題:

OP_REQUIRES failed at gpu_swapping_kernels.cc:72 : Resource exhausted: OOM when allocating tensor with shape[1024] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc

這算是老問題了. 我的 Notebook 只有 2GB GPU RAM, 普通的 Yolo V3 要 4GB DDR, 所以應該要用 tiny 版本的 Yolo 才有機會. 此時找到 [4] 這篇滿實用的, 介紹得很清楚, 每個 model 要用多少 GPU RAM. 雖然它是用 Darknet, 但也有豐富的連結到其他 framework. 因此下一篇我將轉往 CPU only 或 Yolo Tiny 的方法.

另外就是下次買 Graphic card 做 AI 實驗, 內建 GDDR 的大小的重要性遠勝過計算能力. 能夠有 4GB free 就可以, 因此最好是內建 6 GB 吧, 不然就是要兩張卡了. 兩張卡的用法可以參考 tensorflow 官網 [5].

ˋ[Note]

  1. https://github.com/YunYang1994/tensorflow-yolov3&nbsp;
  2. https://medium.com/@shaolinkhoa/install-tensorflow-gpu-2-0-alpha-on-anaconda-for-windows-10-ubuntu-ced099010b21
  3. https://gitforwindows.org/
  4. https://gitee.com/suiyifan/darknet
  5. https://www.tensorflow.org/