Deepfake Detection Challenge - 4
Identify videos with facial or voice manipulations
*本日の予定:ミニモデルを作り始めよう。
*スコアの計算ができるようにしよう。
・jupyter notebookを立ち上げて、計算式をつくる。
・自分で式をつくっていたが、scikit-learnにあった。
>>> from sklearn.metrics import log_loss >>> y_true = [0, 0, 1, 1] >>> y_pred = [[.9, .1], [.8, .2], [.3, .7], [.01, .99]] >>> log_loss(y_true, y_pred) 0.1738...
sklearn.metricsには、Classificationだけでも、これだけある。
‘accuracy’ |
||
‘balanced_accuracy’ |
||
‘average_precision’ |
||
‘neg_brier_score’ |
||
‘f1’ |
for binary targets |
|
‘f1_micro’ |
micro-averaged |
|
‘f1_macro’ |
macro-averaged |
|
‘f1_weighted’ |
weighted average |
|
‘f1_samples’ |
by multilabel sample |
|
‘neg_log_loss’ |
requires |
|
‘precision’ etc. |
suffixes apply as with ‘f1’ |
|
‘recall’ etc. |
suffixes apply as with ‘f1’ |
|
‘jaccard’ etc. |
suffixes apply as with ‘f1’ |
|
‘roc_auc’ |
||
‘roc_auc_ovr’ |
||
‘roc_auc_ovo’ |
||
‘roc_auc_ovr_weighted’ |
||
‘roc_auc_ovo_weighted’ |
・y_trueは、0か1であるが、y_predはどう表現するのか。
・結果は、log-lossの数値が小さいほど良い。
・log-lossは対数なので、予測結果を、真が偽かで、全て0か1にしてしまうと、それが間違っている場合には、かなり大きな値になってしまうようだ。
・evaluationの説明のところで、そのように書いているように思う。
・ここは、考えどころかもしれない。
*データベースの内容を確認する。
・小さいデータベースをダウンロードした。
・次に、大きな訓練用データベースの50分の1をダウンロードした。
・trainデータのfake, trueのテーブルを、pandasで確認した。
・横長で見づらかったので、transpose()で、縦に変換した。
meta = pd.read_json(metadata).transpose()
*次は、動画(mp4)を読み込もう。(動画を扱うのは初めてなので手間取るかも)
・ 何を使えばいいのかな。
・やっぱり、cv2、かな。
・指定したファイルパスの動画の読込:cap_video = cv2.VideoCapture(path_video)
・動画の枚数:cap_video.get(cv2.CAP_PROP_FRAME_COUNT)
・動画のサイズ:
幅:cap_video.get(cv2.CAP_PROP_FRAME_WIDTH)
高さ:cap_video.get(cv2.CAP_PROP_FRAME_HEIGHT)
・numpy配列に読み込む:ret, frame = cap_video.read()
*明日は、400の動画から、各10枚の静止画像を抽出し、fakeファイルとtrueファイルに名前を付けて投げ込む。
・それがうまくいけば、次に、この2種類の画像をCNNで分類できるかどうか、試してみる。
・ここまでが第一ステップとなる。
つづく