Jeśli jest to jednorazowy przypadek, możesz po prostu ponownie przeszkolić sieć neuronową. Jeśli często musisz dodawać nowe klasy, to zły pomysł. To, co chcesz zrobić w takich przypadkach, to pobieranie obrazów oparte na treści (CBIR) lub po prostu pobieranie obrazów lub wyszukiwanie wizualne. Oba przypadki wyjaśnię w mojej odpowiedzi poniżej.
Przypadek jednorazowy
Jeśli zdarzy się to tylko raz - zapomnisz 11 klasy lub klient zmienił zdanie - ale to się nie powtórzy , to możesz po prostu 11 węzła wyjściowego do ostatniej warstwy. Inicjuj wagi dla tego węzła losowo, ale używaj wag, które już masz dla innych danych wyjściowych. Następnie po prostu trenuj jak zwykle. Pomocne może być ustalenie niektórych ciężarów, tj. Nie trenuj ich.
Skrajnym przypadkiem byłoby trenowanie tylko nowych obciążników i pozostawienie wszystkich pozostałych na stałym poziomie. Ale nie jestem pewien, czy to zadziała tak dobrze - może warto spróbować.
Pobieranie obrazu na podstawie zawartości
Rozważ następujący przykład: pracujesz dla sklepu z płytami CD, który chce, aby ich klienci mogli zrobić zdjęcie okładki albumu, a aplikacja pokazuje im płytę CD, którą zeskanowali w swoim sklepie internetowym. W takim przypadku konieczne będzie ponowne przeszkolenie sieci dla każdej nowej płyty CD, którą mają w sklepie. Może to być 5 nowych płyt CD każdego dnia, więc ponowne szkolenie sieci w ten sposób nie jest odpowiednie.
Rozwiązaniem jest wyszkolenie sieci, która odwzorowuje obraz na przestrzeń funkcji. Każdy obraz będzie reprezentowany przez deskryptor, który jest np. 256-wymiarowym wektorem. Możesz „sklasyfikować” obraz, obliczając ten deskryptor i porównując go z bazą danych deskryptorów (tj. Deskryptorów wszystkich płyt CD, które masz w sklepie). Wygrywa najbliższy deskryptor w bazie danych.
Jak trenujesz sieć neuronową, aby nauczyć się takiego wektora deskryptora? To jest aktywny obszar badań. Najnowsze prace można znaleźć, wyszukując słowa kluczowe takie jak „wyszukiwanie obrazów” lub „uczenie się metryk”.
W tej chwili ludzie zwykle biorą wstępnie przeszkoloną sieć, np. VGG-16, odcinają warstwy FC i używają ostatecznej splotowej jako wektora deskryptora. Możesz dalej trenować tę sieć, np. Używając sieci syjamskiej z utratą trojaczki.