
512
5
章 機械学習
Ni, Nj = positive_patches[0].shape
indices = np.array(indices)
for i, j in indices[labels == 1]:
ax.add_patch(plt.Rectangle((j, i), Nj, Ni, edgecolor='red',
alpha=0.3, lw=2,
facecolor='none'))
図5-152 顔を含むと判断されたウィンドウ
検出されたパッチはすべて重なり合い、画像内の顔を見つけました。
Python
の数行のコードに
しては上々な結果です。
5.14.3
課題と改善
上記のコードとサンプルを少しでも深く掘り下げたなら、この顔検出器を実環境で使用するに
は、まだ少し準備が足りないことがわかるはずです。この例にはいくつかの問題があり、改善を必
要としています。
学習データセットは、特に陰性の特徴に対して不十分
顔に似た構造はさまざまに存在しますが、その多くが学習セットに含まれていない点が大
きな問題です。そのため、現在のモデルは誤検出が起こりやすくなっていますトリミング
を行わない宇宙飛行士の元画像
*
1
で前のアルゴリズムを試してみるとわかります。現在の
モデルは、画像の他のさまざまな箇所で多くの誤検出を引き起こしてしまいます。
陰性の学習セットに幅広い種類の画像を追加することによって、多少の改善が得られ
るでしょう。これに対処する別の方法は、
ハードネガティブマイニング(
hard negative ...