2022/8/29

rknn toolkit install log

流水帳:

don't know why it needs 1.11.0, and suggested python version is 3.5
but tesnorflow 1.11.0 say: protobuf requires Python '>=3.7' but the running Python is 3.5.6 but... with python 3.6.13, install OK

the origional requrement.txt:
tensorflow==1.11.0
torchvision==0.4.0
torch==1.5.1
mxnet-cu101==1.5.0
tochvision 0.4.0 need torch 1.2.1,
so remove the version label. install OK.
result: (pip list)
torch               1.5.1
torchvision         0.6.1
final : install local whl
python 3.6, so choose cp36
pip install rknn_toolkit-1.6.0-cp36-cp36m-linux_x86_64.whl
test:
$python
Python 3.6.13 |Anaconda, Inc.| (default, Jun  4 2021, 14:25:59) 
[GCC 7.5.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from rknn.api import RKNN
>>>
另外要run test.py 的話,還要 install opencv-python


更新:

根據 Rockchip github repo 的說明。
最新版本已經到 1,7.3,已經support ubuntu 20.04 了,猜已經 update 了 requirement packages dep
並且,因為 whl 檔案太大,沒有放到 git repo 中,改為到release 下載 zip file

2022/8/12

依照時間切割影片

ref: 我用一個"%" 才成功
 ffmpeg -i C0.avi -c copy -map 0 -segment_time 8 -f segment video%03d.avi
8 的單位是 sec

然後,只有第一個file 能播,所以.. 加上 -reset-timestamps 1
ffmpeg -i C0.avi -c copy -map 0 -segment_time 60 -f segment -reset_timestamps 1 C0_%02d.avi


一些 ffmpeg transcode 的 option 說明:

2022/8/9

grep binary as text

ref: 有時候grep 會出現:
Binary file messages.0.txt matches
然後一堆string 都沒搜尋出來。

因為 grep 的文件中有 none-ascii code。
如果要 grep 不管 none-ascii,一律當 ascii 來搜尋,可以用 '-a' option
grep -a history mymessages

2022/8/8

CVAT 標示 object detection 資料

安裝

follow Installation 官網說明。
CVAT 是用 Docker compose 寫的一堆服務組成,所以要用 docker run
clone docker compose yml 後,依照需要修改 docker compose file。
再啟動所有的 containers.
CVAT default 對 127.0.0.1 服務,如果要改變,可以用環境變數 : CVAT_HOST 來改變。
container 啟動後,必須要執行 container 中的 shell command 來 create superuser (不是Default 就 create 好)
然後,就可以用這個帳號 login 了。
git clone https://github.com/opencv/cvat
cd cvat
export CVAT_HOST=your-ip-address
docker-compose up -d
docker exec -it cvat bash -ic 'python3 ~/manage.py createsuperuser'
輸入 admin 和 password。
然後就可以用 browser 開啟剛剛設定的 your-ip-address:8080/ 進行登入。


標示

先 follow 這個 create 一個標示的 task。
在 "select file" 的階段,選擇影片檔 (AABB.mp4)。

然後到 Jobs 去打開剛剛 create 好的 task
進入標示的 UI
以 object detection 來說,最有用的就是左邊 menu 的 'Draw New Retangle', mouse 靠近後,會顯示內容,'shape' 跟 'track'。
選 track 的話,他就會自動在下一個 frame 標示。
選 track 後,在畫面上框出 object。
右邊panel 就會出現框出來的 object。
點選上方control 的 '>' 會到下一個 frame,剛剛的匡會繼續。
可以多跑幾個 frame 後,等object 跑遠了,但是框都沒跟上,把框拉到正確位置。
這時候,用 '^lt;' 看一下前幾個 frame,他就會依照移動比例,移動框了。
對於 tracking,CVAT 把手工調整過的,叫 key frame,他會把相應兩個 key frame 間的 frame,依照比例,改變其中的 frame 的框。
所以可以用 'F', 'D' 顯示前,後 frame,如果是線性就不用調整。有太大改變再手動調整。

ref:track mode advanve

Export

CVAT export supporty Yolo 的格式,標好,save 後,選左上menu 的 export,格式選 yolo v1 ,跟 save image ,就會把 image, txt 輸出成 zip file
export 的 image 格式是 PNG,檔案很大。
可以參靠convert png to jpg 的作法:
mogrify -format jpg *.png

bookmark : docker compose commands

ref: 大概就跟 docker command 一樣,只不過,docker-compose 要在docker-compose.yml 所在目錄下,才會正常動作。

啟動 (-d 代表 daemon)
# docker-compose up -d 

要是有修改 docker-compose.yml,就用
# docker-compose up -d --no-recreate

看看所有(相關的) container 狀態:
# docker-compose ps

停止所有(相關的)docker container:
# docker-compose stop

刪除所有(相關的)container:
# docker-compose rm -f

刪除所有(相關的) volume:
# docker-compose rm -v

2022/8/4

OpenBmc test build (for raspberry pi 3)

git clone https://github.com/openbmc/openbmc
cd openbmc
git checkout 2.11.0
export TEMPLATECONF=meta-evb/meta-evb-raspberrypi/conf
. openbmc-env
修改 build/conf/local.conf:
我把
MACHINE ??= "raspberrypi3"
和加上
GPU_MEM = "16"
IMAGE_FSTYPES += " rpi-sdimg"
讓輸出成 sd card img 格式。

然後修改 meta-phosphor/classes/image_types_phosphor.bbclass
FLASH_SIZE ?= "131072"
不然build 完會有 too large 的 Error.

就可以到 build 下開始 build
bitbake obmc-phosphor-image
build 完,在 /build/tmp/deploy/images 下的 *sdimg 就是燒錄檔。
dd 到 sdcard 後,mount 回來,在 boot partition (vfat) 家上
enable_uart=1
插入 pi3 開機,等一下就可以在 uart console 看到 login prompt (沒有 boot log)
default root password 是 0penBmc (zero-bmc)


OpenBmc 就是一個標準的 linux,沒什麼特別的,只是裝了一些 bmc 的 tool,以往的 bmc snmp, rest4, gprc web 等服務,都是 linux 標準 packages.