<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>oprogramowanie - Inero Software - Rozwiązania IT i Konsulting</title>
	<atom:link href="https://inero-software.com/pl/tag/oprogramowanie/feed/" rel="self" type="application/rss+xml" />
	<link>https://inero-software.com/pl/tag/oprogramowanie/</link>
	<description>Tworzymy cyfrowe innowacje</description>
	<lastBuildDate>Mon, 26 May 2025 09:01:23 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://inero-software.com/wp-content/uploads/2018/11/inero-logo-favicon.png</url>
	<title>oprogramowanie - Inero Software - Rozwiązania IT i Konsulting</title>
	<link>https://inero-software.com/pl/tag/oprogramowanie/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">153509928</site>	<item>
		<title>Gotowość technologiczna przedsiębiorstwa. Jak określić czy Twoja firma jest gotowa na wdrożenie nowej technologii</title>
		<link>https://inero-software.com/pl/gotowosc-technologiczna-przedsiebiorstwa-jak-okreslic-czy-twoja-firma-jest-gotowa-na-wdrozenie-nowej-technologii/</link>
		
		<dc:creator><![CDATA[Marta Kuprasz]]></dc:creator>
		<pubDate>Wed, 21 May 2025 11:48:05 +0000</pubDate>
				<category><![CDATA[Blog_pl]]></category>
		<category><![CDATA[Firma]]></category>
		<category><![CDATA[aplikacja]]></category>
		<category><![CDATA[digitalizacja]]></category>
		<category><![CDATA[duże modele językowe]]></category>
		<category><![CDATA[oprogramowanie]]></category>
		<category><![CDATA[optymalizacja procesów biznesowych]]></category>
		<guid isPermaLink="false">https://inero-software.com/?p=8018</guid>

					<description><![CDATA[<p>Gotowość technologiczna przedsiębiorstwa to szerokie pojęcie, obejmujące infrastrukturę IT, kompetencje zespołu, dojrzałość procesów biznesowych, gotowość organizacyjną do zmian oraz zgodność z regulacjami prawnymi i politykami bezpieczeństwa. </p>
<p>Artykuł <a href="https://inero-software.com/pl/gotowosc-technologiczna-przedsiebiorstwa-jak-okreslic-czy-twoja-firma-jest-gotowa-na-wdrozenie-nowej-technologii/">Gotowość technologiczna przedsiębiorstwa. Jak określić czy Twoja firma jest gotowa na wdrożenie nowej technologii</a> pochodzi z serwisu <a href="https://inero-software.com/pl">Inero Software - Rozwiązania IT i Konsulting</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="8018" class="elementor elementor-8018" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-93f5e59 e-flex e-con-boxed e-con e-parent" data-id="93f5e59" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-771d181 elementor-widget elementor-widget-html" data-id="771d181" data-element_type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
			 		</div>
				</div>
				<div class="elementor-element elementor-element-7af37b7 elementor-widget elementor-widget-text-editor" data-id="7af37b7" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h4><b><span data-contrast="auto">W publikacji „Intelligent Agents in AI Really Can Work Alone. </span></b><b><span data-contrast="auto">Here’s How.” przygotowanej przez Gartner, autorzy przewidują, że do 2028 roku 33% aplikacji biznesowych będzie wykorzystywać agentyczną sztuczną inteligencję, w porównaniu do mniej niż 1% w roku 2024. Umożliwi to autonomiczne podejmowanie aż 15% codziennych decyzji operacyjnych. Czy Twoja firma jest przygotowana, by z tych zmian skorzystać?</span></b><span data-ccp-props="{}"> </span></h4>						</div>
				</div>
				<div class="elementor-element elementor-element-4cc6de5 elementor-widget elementor-widget-text-editor" data-id="4cc6de5" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span class="TextRun SCXW116628205 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SCXW116628205 BCX0">Gotowość technologiczna </span><span class="NormalTextRun SCXW116628205 BCX0">przedsiębiorstwa to </span><span class="NormalTextRun SCXW116628205 BCX0">szer</span><span class="NormalTextRun SCXW116628205 BCX0">okie</span><span class="NormalTextRun SCXW116628205 BCX0"> pojęcie, </span><span class="NormalTextRun SCXW116628205 BCX0">obejmujące</span><span class="NormalTextRun SCXW116628205 BCX0"> infrastrukturę IT, kompetencje zespołu, dojrzałość procesów biznesowych, gotowość organizacyjną do zmian oraz zgodność z regulacjami prawnymi i politykami bezpieczeństwa. Jeśli firma planuje wdrożenie systemu klasy ERP, narzędzia do zarządzania tożsamością (IAM) czy rozwiązań opartych o sztuczną inteligencję, potrzebuje solidnej podstawy technicznej i operacyjnej.</span></span><span class="EOP SCXW116628205 BCX0" data-ccp-props="{}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-a92ded9 elementor-widget elementor-widget-heading" data-id="a92ded9" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Jak ocenić gotowość technologiczną przedsiębiorstwa? </h3>		</div>
				</div>
				<div class="elementor-element elementor-element-d7b7a9d elementor-widget elementor-widget-text-editor" data-id="d7b7a9d" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span class="TextRun SCXW137886006 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SCXW137886006 BCX0">Aby rzetelnie określić gotowość technologiczną przedsiębiorstwa, warto przeprowadzić ocenę w kilku kluczowych obszarach. Proces ten przypomina audyt, który pozwala odpowiedzieć na pytanie: czy firma jest przygotowana na skuteczne wdrożenie i wykorzystanie nowej technologi</span><span class="NormalTextRun SCXW137886006 BCX0">i</span><span class="NormalTextRun SCXW137886006 BCX0">. </span></span><span class="EOP SCXW137886006 BCX0" data-ccp-props="{}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-eff7699 elementor-widget elementor-widget-heading" data-id="eff7699" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h4 class="elementor-heading-title elementor-size-default">Infrastruktura IT </h4>		</div>
				</div>
				<div class="elementor-element elementor-element-57a46ad elementor-widget elementor-widget-text-editor" data-id="57a46ad" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span class="TextRun SCXW20367956 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SCXW20367956 BCX0">Ocena infrastruktury IT powinna być poprzedzona dokładnym określeniem wymagań nowej technologii. To one definiują, jakie zasoby będą niezbędne – zarówno pod względem wydajności, jak i architektury, bezpieczeństwa czy dostępności.</span></span><span class="EOP SCXW20367956 BCX0" data-ccp-props="{}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-cb596ae elementor-widget elementor-widget-text-editor" data-id="cb596ae" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span class="TextRun SCXW119338481 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SCXW119338481 BCX0">Dopiero mając specyfikację technologiczną, można rzetelnie ocenić, czy obecne środowisko IT jest w stanie spełnić te wymagania. </span><span class="NormalTextRun SCXW119338481 BCX0">Jeśli zastanawiasz</span><span class="NormalTextRun SCXW119338481 BCX0"> nad wprowadzeniem do organizacji narzędzi opartych na sztucznej inteligencji i chcesz wiedzieć dokładnie </span><span class="NormalTextRun SCXW119338481 BCX0">jakie koszty są związane z wdrożeniem i utrzymaniem dużego modelu językowego, to koniecznie poznaj naszą najnowszą analizę. </span></span><span class="EOP SCXW119338481 BCX0" data-ccp-props="{}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-070761f elementor-widget elementor-widget-heading" data-id="070761f" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h5 class="elementor-heading-title elementor-size-default"><a href="https://inero-software.com/pl/ile-kosztuje-wdrozenie-i-utrzymanie-modelu-llm-w-firmie-szczegolowa-analiza/">Ile kosztuje wdrożenie i utrzymanie modelu LLM w firmie? Szczegółowa analiza </a></h5>		</div>
				</div>
				<div class="elementor-element elementor-element-3c405e1 elementor-widget elementor-widget-heading" data-id="3c405e1" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h4 class="elementor-heading-title elementor-size-default">Zarządzanie i dostępność danych </h4>		</div>
				</div>
				<div class="elementor-element elementor-element-c61aabf elementor-widget elementor-widget-text-editor" data-id="c61aabf" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span data-contrast="auto">Ocena zarządzania danymi powinna rozpocząć się od określenia, jakie dane będą wykorzystywane przez wdrażaną technologię, w jakim formacie, z jaką częstotliwością oraz z jakich źródeł. To wymagania systemu definiują, jakie dane są potrzebne i w jakiej formie muszą być dostępne.</span><span data-ccp-props="{}"> </span></p><p><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">Dopiero na tej podstawie można stwierdzić, czy dane w organizacji są gotowe do użycia. Należy zweryfikować, czy istnieją techniczne możliwości pobierania danych ze źródeł (np. API, pliki wymiany danych), czy dane mają ujednoliconą strukturę i czy spełniają minimalne kryteria jakościowe. Brak spójności, duplikaty, niepełne rekordy lub niestrukturalne dane mogą wymagać dodatkowego etapu przetwarzania, zanim zostaną wykorzystane.</span><span data-ccp-props="{}"> </span></p><p><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">Istotna jest również dostępność organizacyjna – dane muszą być dostępne nie tylko technicznie, ale też zgodnie z wewnętrznymi zasadami i przepisami. W przypadku danych wrażliwych należy potwierdzić, że ich udostępnienie jest zgodne z polityką bezpieczeństwa i przepisami takimi jak RODO.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">Jeśli planowana technologia zakłada integrację wielu źródeł, analizę w czasie rzeczywistym lub przetwarzanie dużych wolumenów danych, konieczne może być przygotowanie osobnej warstwy integracyjnej lub reorganizacja sposobu zarządzania danymi w firmie.</span><span data-ccp-props="{}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-51cd659 elementor-widget elementor-widget-heading" data-id="51cd659" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h4 class="elementor-heading-title elementor-size-default">Przygotowanie i szkolenie zespołu </h4>		</div>
				</div>
				<div class="elementor-element elementor-element-4b1a7d2 elementor-widget elementor-widget-text-editor" data-id="4b1a7d2" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span data-contrast="auto">Ocena gotowości zespołu powinna być poprzedzona analizą kompetencji wymaganych do obsługi wdrażanej technologii. W zależności od rodzaju rozwiązania może to obejmować zarówno umiejętności techniczne (np. konfiguracja systemów, analiza danych), jak i operacyjne (np. znajomość procesów, interpretacja wyników działania systemu).</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">Dopiero mając zdefiniowany zakres ról i zadań w nowym środowisku, można ocenić, czy zespół posiada odpowiednie kwalifikacje, czy też konieczne będzie uzupełnienie wiedzy. Może to oznaczać przeprowadzenie szkoleń, zaangażowanie zewnętrznych ekspertów lub czasowe wsparcie dostawcy technologii.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">Szczególną uwagę należy zwrócić na osoby odpowiedzialne za utrzymanie i rozwój systemu – to one powinny z wyprzedzeniem poznać jego architekturę, model danych, scenariusze awaryjne oraz sposób zarządzania dostępem. W przeciwnym razie nowa technologia stanie się tzw. „czarną skrzynką”, co zwiększa ryzyko błędów operacyjnych i utrudnia dalsze usprawnienia.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">Przygotowanie zespołu nie powinno być działaniem jednorazowym. Warto zaplanować również działania po wdrożeniu – w tym mentoring, dokumentację wewnętrzną oraz systematyczne rozwijanie kompetencji w obszarach, które technologia będzie wspierać.</span><span data-ccp-props="{}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-6538e7d elementor-widget elementor-widget-heading" data-id="6538e7d" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Jak mierzyć gotowość przedsiębiorstwa? </h3>		</div>
				</div>
				<div class="elementor-element elementor-element-972d797 elementor-widget elementor-widget-text-editor" data-id="972d797" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span class="TextRun SCXW249918616 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SCXW249918616 BCX0">Ocena gotowości technologicznej powinna być traktowana jako proces</span><span class="NormalTextRun SCXW249918616 BCX0">. </span><span class="NormalTextRun SCXW249918616 BCX0">Najbardziej efektywnym podejściem jest zaplanowanie </span><span class="NormalTextRun SpellingErrorV2Themed SCXW249918616 BCX0">roadmapy</span><span class="NormalTextRun SCXW249918616 BCX0"> działań przygotowawczych, a następnie mierzenie postępów w oparciu o jasno określone etapy i kryteria oceny.</span></span><span class="EOP SCXW249918616 BCX0" data-ccp-props="{&quot;469777462&quot;:[2568],&quot;469777927&quot;:[0],&quot;469777928&quot;:[1]}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-884da4f elementor-widget elementor-widget-image" data-id="884da4f" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
													<img fetchpriority="high" decoding="async" data-attachment-id="8020" data-permalink="https://inero-software.com/pl/gotowosc-technologiczna-przedsiebiorstwa-jak-okreslic-czy-twoja-firma-jest-gotowa-na-wdrozenie-nowej-technologii/output/" data-orig-file="https://inero-software.com/wp-content/uploads/2025/05/output.png" data-orig-size="2379,580" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="output" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2025/05/output-300x73.png" data-large-file="https://inero-software.com/wp-content/uploads/2025/05/output-1030x251.png" tabindex="0" role="button" width="1030" height="251" src="https://inero-software.com/wp-content/uploads/2025/05/output-1030x251.png" class="attachment-large size-large wp-image-8020" alt="" srcset="https://inero-software.com/wp-content/uploads/2025/05/output-1030x251.png 1030w, https://inero-software.com/wp-content/uploads/2025/05/output-300x73.png 300w, https://inero-software.com/wp-content/uploads/2025/05/output-768x187.png 768w, https://inero-software.com/wp-content/uploads/2025/05/output-1536x374.png 1536w, https://inero-software.com/wp-content/uploads/2025/05/output-2048x499.png 2048w, https://inero-software.com/wp-content/uploads/2025/05/output-1231x300.png 1231w" sizes="(max-width: 1030px) 100vw, 1030px" data-attachment-id="8020" data-permalink="https://inero-software.com/pl/gotowosc-technologiczna-przedsiebiorstwa-jak-okreslic-czy-twoja-firma-jest-gotowa-na-wdrozenie-nowej-technologii/output/" data-orig-file="https://inero-software.com/wp-content/uploads/2025/05/output.png" data-orig-size="2379,580" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="output" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2025/05/output-300x73.png" data-large-file="https://inero-software.com/wp-content/uploads/2025/05/output-1030x251.png" role="button" />													</div>
				</div>
				<div class="elementor-element elementor-element-e5c2153 elementor-widget elementor-widget-text-editor" data-id="e5c2153" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span class="TextRun SCXW210090867 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SpellingErrorV2Themed SCXW210090867 BCX0">Roadmapa</span><span class="NormalTextRun SCXW210090867 BCX0"> powinna zawierać kluczowe obszary, takie jak: infrastruktura IT, dostępność danych, przygotowanie zespołu, integracja systemów, zarządzanie zmianą i zgodność z regulacjami. Dla każdego z tych obszarów warto określić wymagania docelowe oraz stan obecny. To pozwala nie tylko oszacować poziom gotowości, ale również zidentyfikować konkretne przeszkody i słabe ogniwa, które mogą utrudnić wdrożenie.</span></span><span class="EOP SCXW210090867 BCX0" data-ccp-props="{&quot;469777462&quot;:[2568],&quot;469777927&quot;:[0],&quot;469777928&quot;:[1]}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-e0da900 elementor-widget elementor-widget-text-editor" data-id="e0da900" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span data-contrast="auto">Ocena krok po kroku – na bazie harmonogramu i zadań przypisanych do poszczególnych zespołów – pozwala na bieżąco weryfikować, czy firma przesuwa się w stronę operacyjnej gotowości. Takie podejście minimalizuje ryzyko nieplanowanych opóźnień i kosztów, ponieważ ewentualne problemy są wychwytywane wcześniej, zanim przejdzie się do właściwego etapu wdrożeniowego.</span><span data-ccp-props="{&quot;469777462&quot;:[2568],&quot;469777927&quot;:[0],&quot;469777928&quot;:[1]}"> </span></p><p><span data-contrast="auto">Gotowość technologiczna nie sprowadza się do jednego wyniku końcowego. To suma wielu elementów – technicznych, organizacyjnych i kompetencyjnych – które powinny być oceniane w kontekście konkretnego wdrożenia i jego wymagań.</span><span data-ccp-props="{&quot;469777462&quot;:[2568],&quot;469777927&quot;:[0],&quot;469777928&quot;:[1]}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-019d1a0 elementor-widget elementor-widget-heading" data-id="019d1a0" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Jak my to robimy</h3>		</div>
				</div>
				<div class="elementor-element elementor-element-87f3fac elementor-widget elementor-widget-text-editor" data-id="87f3fac" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span data-contrast="auto">W pracy z klientami przy wdrażaniu nowych aplikacji i systemów zawsze zaczynamy od rozmowy o kontekście biznesowym i rzeczywistych potrzebach organizacji. Nie rekomendujemy gotowych rozwiązań bez analizy – pomagamy zrozumieć, jakie technologie mają szansę realnie usprawnić procesy, a które mogą generować niepotrzebne koszty i komplikacje.</span><span data-ccp-props="{&quot;469777462&quot;:[2568],&quot;469777927&quot;:[0],&quot;469777928&quot;:[1]}"> </span></p><p><span data-contrast="auto">Bazując na naszych doświadczeniach z projektami IT realizowanymi w różnych branżach, doradzamy krok po kroku: od etapu planowania, przez ocenę gotowości, po właściwe wdrożenie i stabilizację. Dbamy o to, aby technologia była dopasowana do możliwości organizacji i rzeczywiście wspierała jej rozwój operacyjny, a nie stawała się dodatkowym obciążeniem.</span><span data-ccp-props="{&quot;469777462&quot;:[2568],&quot;469777927&quot;:[0],&quot;469777928&quot;:[1]}"> </span></p><p><span data-contrast="auto">Dobrze zaplanowane wdrożenie to takie, które kończy się nie tylko uruchomieniem aplikacji, ale przede wszystkim osiągnięciem zakładanych efektów biznesowych.</span><span data-ccp-props="{&quot;469777462&quot;:[2568],&quot;469777927&quot;:[0],&quot;469777928&quot;:[1]}"> </span></p>						</div>
				</div>
					</div>
				</div>
				</div>
		<p>Artykuł <a href="https://inero-software.com/pl/gotowosc-technologiczna-przedsiebiorstwa-jak-okreslic-czy-twoja-firma-jest-gotowa-na-wdrozenie-nowej-technologii/">Gotowość technologiczna przedsiębiorstwa. Jak określić czy Twoja firma jest gotowa na wdrożenie nowej technologii</a> pochodzi z serwisu <a href="https://inero-software.com/pl">Inero Software - Rozwiązania IT i Konsulting</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">8018</post-id>	</item>
		<item>
		<title>Dowiedź się jak skorzystać z bezpłatnych szkoleń prowadzonych przez ekspertów Inero Software w ramach PDiH</title>
		<link>https://inero-software.com/pl/dowiedz-sie-jak-skorzystac-z-bezplatnych-szkolen-prowadzonych-przez-ekspertow-inero/</link>
		
		<dc:creator><![CDATA[Marta Kuprasz]]></dc:creator>
		<pubDate>Mon, 31 Mar 2025 07:43:33 +0000</pubDate>
				<category><![CDATA[Firma]]></category>
		<category><![CDATA[Agenci AI]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[bezpłatne]]></category>
		<category><![CDATA[biznes]]></category>
		<category><![CDATA[digitalizacja]]></category>
		<category><![CDATA[MŚP]]></category>
		<category><![CDATA[oprogramowanie]]></category>
		<category><![CDATA[optymalizacja procesów biznesowych]]></category>
		<category><![CDATA[PDIH]]></category>
		<category><![CDATA[rozwiązania logistyczne]]></category>
		<category><![CDATA[szkolenia]]></category>
		<category><![CDATA[sztuczna inteligencja]]></category>
		<category><![CDATA[współpraca]]></category>
		<guid isPermaLink="false">https://inero-software.com/?p=7672</guid>

					<description><![CDATA[<p>Uczestnicy bezpłatnych szkoleń realizowanych w ramach Pomorskiego Hubu Innowacji Cyfrowych (PDiH) zdobędą praktyczną wiedzę, którą będą mogli wykorzystać w swoich firmach — m.in. do usprawnienia procesów, przeprowadzania dokładniejszych analiz oraz automatyzacji rutynowych, czasochłonnych zadań. </p>
<p>Artykuł <a href="https://inero-software.com/pl/dowiedz-sie-jak-skorzystac-z-bezplatnych-szkolen-prowadzonych-przez-ekspertow-inero/">Dowiedź się jak skorzystać z bezpłatnych szkoleń prowadzonych przez ekspertów Inero Software w ramach PDiH</a> pochodzi z serwisu <a href="https://inero-software.com/pl">Inero Software - Rozwiązania IT i Konsulting</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="7672" class="elementor elementor-7672" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-5e2edbf e-flex e-con-boxed e-con e-parent" data-id="5e2edbf" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-ba2a2a0 elementor-widget elementor-widget-html" data-id="ba2a2a0" data-element_type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
			 		</div>
				</div>
				<div class="elementor-element elementor-element-d4d9ee6 elementor-widget elementor-widget-image" data-id="d4d9ee6" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
													<img decoding="async" data-attachment-id="7608" data-permalink="https://inero-software.com/pl/optymalizacja-procesow-back-office-dzieki-wdrozeniu-agenta-ai-praktyczny-przyklad/pdih-logotypy/" data-orig-file="https://inero-software.com/wp-content/uploads/2025/03/pdih-logotypy.png" data-orig-size="1080,117" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="pdih-logotypy" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2025/03/pdih-logotypy-300x33.png" data-large-file="https://inero-software.com/wp-content/uploads/2025/03/pdih-logotypy-1030x112.png" tabindex="0" role="button" width="1030" height="112" src="https://inero-software.com/wp-content/uploads/2025/03/pdih-logotypy-1030x112.png" class="attachment-large size-large wp-image-7608" alt="" srcset="https://inero-software.com/wp-content/uploads/2025/03/pdih-logotypy-1030x112.png 1030w, https://inero-software.com/wp-content/uploads/2025/03/pdih-logotypy-300x33.png 300w, https://inero-software.com/wp-content/uploads/2025/03/pdih-logotypy-768x83.png 768w, https://inero-software.com/wp-content/uploads/2025/03/pdih-logotypy.png 1080w" sizes="(max-width: 1030px) 100vw, 1030px" data-attachment-id="7608" data-permalink="https://inero-software.com/pl/optymalizacja-procesow-back-office-dzieki-wdrozeniu-agenta-ai-praktyczny-przyklad/pdih-logotypy/" data-orig-file="https://inero-software.com/wp-content/uploads/2025/03/pdih-logotypy.png" data-orig-size="1080,117" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="pdih-logotypy" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2025/03/pdih-logotypy-300x33.png" data-large-file="https://inero-software.com/wp-content/uploads/2025/03/pdih-logotypy-1030x112.png" role="button" />													</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-dada224 e-flex e-con-boxed e-con e-parent" data-id="dada224" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-cd6a075 elementor-widget elementor-widget-text-editor" data-id="cd6a075" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h4><span class="TextRun SCXW253295989 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SCXW253295989 BCX0">Cyfryzacja i wdrażanie nowoczesnych technologii otwierają przed MŚP wiele możliwości. Uczestnicy bezpłatnych szkoleń realizowanych w ramach Pomorskiego </span><span class="NormalTextRun SpellingErrorV2Themed SCXW253295989 BCX0">Hubu</span><span class="NormalTextRun SCXW253295989 BCX0"> Innowacji Cyfrowych (</span><span class="NormalTextRun SpellingErrorV2Themed SCXW253295989 BCX0">PDiH</span><span class="NormalTextRun SCXW253295989 BCX0">) zdobędą praktyczną wiedzę, którą będą mogli wykorzystać w swoich firmach — m.in. do usprawnienia procesów, przeprowadzania dokładniejszych analiz oraz automatyzacji rutynowych, czasochłonnych zadań.</span></span><span class="EOP SCXW253295989 BCX0" data-ccp-props="{}"> </span></h4>						</div>
				</div>
				<div class="elementor-element elementor-element-7c3c6cd elementor-widget elementor-widget-text-editor" data-id="7c3c6cd" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span class="TextRun SCXW115472613 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SpellingErrorV2Themed SCXW115472613 BCX0">PDiH</span><span class="NormalTextRun SCXW115472613 BCX0"> kieruje swoją ofertę do mikro, małych i średnich przedsiębiorstw, oferując bezpłatne usługi w ramach pomocy de </span><span class="NormalTextRun SpellingErrorV2Themed SCXW115472613 BCX0">minimis</span><span class="NormalTextRun SCXW115472613 BCX0">. W katalogu dostępnych jest ponad 80 usług z obszarów takich jak: Przemysł 4.0, robotyzacja, AI, VR/AR oraz </span><span class="NormalTextRun SpellingErrorV2Themed SCXW115472613 BCX0">cyberbezpieczeństwo</span><span class="NormalTextRun SCXW115472613 BCX0">.</span></span><span class="EOP SCXW115472613 BCX0" data-ccp-props="{}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-57f988e elementor-widget elementor-widget-heading" data-id="57f988e" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Szkolenia oferowane przez Inero Software </h3>		</div>
				</div>
				<div class="elementor-element elementor-element-57db23c elementor-widget elementor-widget-text-editor" data-id="57db23c" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span data-contrast="auto">W pierwszym etapie proponujemy dwa dwudniowe szkolenia:</span><span data-ccp-props="{}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-8a61934 elementor-widget elementor-widget-text-editor" data-id="8a61934" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<ol><li><b><span data-contrast="auto">Usługa edukacyjno-szkoleniowa w zakresie automatyzacji procesów back-office</span></b><span data-contrast="auto"> – obejmuje integrację i wdrożenie narzędzi AI/ML w infrastrukturze chmurowej.</span><span data-ccp-props="{}"> </span></li><li><b><span data-contrast="auto">Warsztaty praktyczne: Demonstrator technologii DeliverM8</span></b><span data-contrast="auto"> – prezentacja platformy do optymalizacji zadań logistycznych w obszarze ostatniej mili.</span><span data-ccp-props="{}"> </span></li></ol>						</div>
				</div>
				<div class="elementor-element elementor-element-6c0d315 elementor-widget elementor-widget-heading" data-id="6c0d315" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Zakres usług i wiedza praktyczna </h3>		</div>
				</div>
				<div class="elementor-element elementor-element-491b292 elementor-widget elementor-widget-text-editor" data-id="491b292" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><strong>Co zyskujesz dzięki udziałowi w szkoleniu? </strong></p><ul><li style="list-style-type: none;"><ul><li data-leveltext="" data-font="Symbol" data-listid="6" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Wiedzę praktyczną opartą na realnych wdrożeniach,</span><span data-ccp-props="{}"> </span></li></ul></li></ul><ul><li style="list-style-type: none;"><ul><li data-leveltext="" data-font="Symbol" data-listid="6" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">Możliwość pracy z nowoczesnymi narzędziami AI i ML,</span><span data-ccp-props="{}"> </span></li></ul></li></ul><ul><li style="list-style-type: none;"><ul><li data-leveltext="" data-font="Symbol" data-listid="6" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">Praktyczną wiedzę ekspertów, która jest kluczowa podczas wdrażaniu technologii w firmie,</span><span data-ccp-props="{}"> </span></li></ul></li></ul><ul><li style="list-style-type: none;"><ul><li data-leveltext="" data-font="Symbol" data-listid="6" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1"><span data-contrast="auto">Dostęp do materiałów edukacyjnych po zakończeniu szkolenia</span><span data-ccp-props="{}"> </span></li></ul></li></ul>						</div>
				</div>
				<div class="elementor-element elementor-element-eb9300a elementor-widget elementor-widget-text-editor" data-id="eb9300a" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span data-contrast="auto">Nasza firma świadczy usługi doradcze m.in. w zakresie budowy dedykowanych agentów AI do automatyzacji procesów back-office. Uczestnicy szkolenia dowiedzą się, jak stworzyć wirtualnego asystenta głosowego lub tekstowego, który może wspierać firmę m.in. w:</span><span data-ccp-props="{}"> </span></p><ul><li style="list-style-type: none;"><ul><li data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">przygotowywaniu ofert,</span><span data-ccp-props="{}"> </span></li></ul></li></ul><ul><li style="list-style-type: none;"><ul><li data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">komunikacji z klientami,</span><span data-ccp-props="{}"> </span></li></ul></li></ul><ul><li style="list-style-type: none;"><ul><li data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">analizie i weryfikacji dokumentacji transportowej,</span><span data-ccp-props="{}"> </span></li></ul></li></ul><ul><li style="list-style-type: none;"><ul><li data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1"><span data-contrast="auto">obsłudze zapytań związanych z ubezpieczeniami i polisami.</span><span data-ccp-props="{}"> </span></li></ul></li></ul>						</div>
				</div>
				<div class="elementor-element elementor-element-13bab0d elementor-widget elementor-widget-text-editor" data-id="13bab0d" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span data-contrast="auto">Przykłady zastosowań agentów AI opisaliśmy w artykułach:</span><span data-ccp-props="{}"> </span></p><p><a href="https://inero-software.com/pl/optymalizacja-procesow-back-office-dzieki-wdrozeniu-agenta-ai-praktyczny-przyklad/"><i><span data-contrast="auto">Optymalizacja procesów back-office dzięki wdrożeniu agenta AI. Praktyczny przykład</span></i><span data-ccp-props="{}"> </span></a></p><p><a href="https://inero-software.com/pl/poznaj-swojego-osobistego-agenta-ai-case-study-dla-firmy-spedycyjnej/"><i><span data-contrast="auto">Poznaj swojego osobistego Agenta AI: Case study dla firmy spedycyjnej</span></i><span data-ccp-props="{}"> </span></a></p>						</div>
				</div>
				<div class="elementor-element elementor-element-f096f52 elementor-widget elementor-widget-heading" data-id="f096f52" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Czym są Agenci AI? </h3>		</div>
				</div>
				<div class="elementor-element elementor-element-8343c25 elementor-widget elementor-widget-text-editor" data-id="8343c25" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span data-contrast="auto">Agenci AI to inteligentne systemy oparte na algorytmach uczenia maszynowego, przetwarzaniu języka naturalnego (NLP) oraz dużych modelach językowych (LLM). Ich zadaniem jest automatyzacja procesów, wspieranie decyzji oraz prowadzenie naturalnej interakcji z użytkownikami, dostosowanej do kontekstu biznesowego.</span><span data-ccp-props="{}"> </span></p><p><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">W odróżnieniu od samych modeli językowych, agenci AI są projektowani do wykonywania konkretnych zadań w sposób autonomiczny. Oznacza to, że mogą pobierać informacje, przetwarzać dane w czasie rzeczywistym oraz podejmować decyzje na podstawie zdefiniowanych reguł.</span><span data-ccp-props="{}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-6fa7003 elementor-widget elementor-widget-text-editor" data-id="6fa7003" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span class="TextRun SCXW53421105 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SCXW53421105 BCX0">Więcej na ten temat piszemy w artykule:</span> </span><a href="https://inero-software.com/pl/czym-sa-agenci-ai-i-jak-moga-pomoc-w-twojej-firmie/"><span class="TextRun SCXW53421105 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SCXW53421105 BCX0">Czym są Agenci AI i jak mogą pomóc w Twojej firmie?</span></span><span class="EOP SCXW53421105 BCX0" data-ccp-props="{}"> </span></a></p>						</div>
				</div>
				<div class="elementor-element elementor-element-dcd636b elementor-widget elementor-widget-heading" data-id="dcd636b" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Platforma, która wspiera logistykę </h3>		</div>
				</div>
				<div class="elementor-element elementor-element-a29f956 elementor-widget elementor-widget-text-editor" data-id="a29f956" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span data-contrast="auto">Drugie szkolenie obejmuje prezentację platformy umożliwiającej planowanie, monitorowanie i optymalizację zadań transportowych – zarówno w ramach dostaw ostatniej mili, jak i dla transportu międzynarodowego.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">Rozwiązanie to wykorzystywane jest m.in. w aplikacji </span><a href="https://inero-software.com/pl/goracy-posilek-pomaga-pomagac/"><b><span data-contrast="auto">Gorący Posiłek</span></b></a><span data-contrast="auto">, wspierającej fundacje oraz jednostki pomocy społecznej w realizacji i rozliczaniu dostaw gorących posiłków. Model ten można z powodzeniem wykorzystać w realizacji zadań MŚP, związanych z planowaniem i monitorowaniem dostaw. </span><span data-ccp-props="{}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-93f9aea elementor-widget elementor-widget-text-editor" data-id="93f9aea" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span class="TextRun SCXW19566687 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SCXW19566687 BCX0">Uczestnicy szkoleń nie tylko zdobędą praktyczne umiejętności, ale także poznają konkretne narzędzia i przykłady wdrożeń, które mogą zastosować u siebie niemal od razu. Każde szkolenie kończy się podsumowaniem oraz zestawem materiałów do dalszej pracy.</span></span><span class="EOP SCXW19566687 BCX0" data-ccp-props="{}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-ec000fc elementor-widget elementor-widget-heading" data-id="ec000fc" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Kto może wziąć udział i jak wygląda proces zgłoszenia? </h3>		</div>
				</div>
				<div class="elementor-element elementor-element-857503f elementor-widget elementor-widget-text-editor" data-id="857503f" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span class="TextRun SCXW96146999 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SCXW96146999 BCX0">Z bezpłatnych usług w ramach projektu </span><span class="NormalTextRun SpellingErrorV2Themed SCXW96146999 BCX0">PDiH</span><span class="NormalTextRun SCXW96146999 BCX0"> mogą skorzystać mikro, małe i średnie przedsiębiorstwa z siedzibą w Polsce, prowadzące działalność gospodarczą.</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW96146999 BCX0"><span class="SCXW96146999 BCX0"> </span><br class="SCXW96146999 BCX0" /></span><span class="TextRun SCXW96146999 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SCXW96146999 BCX0">Warunkiem udziału jest kwalifikacja firmy do sektora MŚP oraz spełnienie wymagań pomocy de </span><span class="NormalTextRun SpellingErrorV2Themed SCXW96146999 BCX0">minimis</span><span class="NormalTextRun SCXW96146999 BCX0">.</span></span><span class="EOP SCXW96146999 BCX0" data-ccp-props="{}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-04bc3cd elementor-widget elementor-widget-text-editor" data-id="04bc3cd" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span data-contrast="auto">Proces zgłoszeniowy obejmuje:</span><span data-ccp-props="{}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-d1434db elementor-widget elementor-widget-text-editor" data-id="d1434db" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<ol><li><span data-contrast="auto">Wypełnienie formularza zgłoszeniowego.</span><span data-ccp-props="{}"> </span></li><li><span data-contrast="auto">Weryfikację kwalifikowalności przedsiębiorstwa.</span><span data-ccp-props="{}"> </span></li><li><span data-contrast="auto">Podpisanie umowy świadczenia usługi w ramach pomocy de minimis.</span><span data-ccp-props="{}"> </span></li></ol><p><span data-contrast="auto">Cały proces jest wspierany przez zespół ekspertów GPNT, który pomaga firmom przejść go sprawnie. Dane kontaktowe do ekspertów GPNT, którzy wspierają firmy w procesie rekrutacji, znajdują się tutaj: </span><a href="https://gpnt.pl/kontakt-pdih"><span data-contrast="none">https://gpnt.pl/kontakt-pdih</span></a><span data-contrast="auto">.</span><span data-ccp-props="{}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-3afc987 elementor-widget elementor-widget-text-editor" data-id="3afc987" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span class="TextRun SCXW4868182 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SCXW4868182 BCX0">Szczegóły dotyczące zasad udziału i dokumentacji znajdują się w regulaminie projektu </span><span class="NormalTextRun SpellingErrorV2Themed SCXW4868182 BCX0">PDiH</span><span class="NormalTextRun SCXW4868182 BCX0">, dostępnym</span></span> <span class="TextRun SCXW4868182 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SCXW4868182 BCX0">tutaj:</span></span> <a class="Hyperlink SCXW4868182 BCX0" href="https://gpnt.pl/uploads/media/67657983ba862-regulamin-swiadczenia-uslug-w-projekcie-pdih.pdf" target="_blank" rel="noreferrer noopener"><span class="TextRun Underlined SCXW4868182 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="none"><span class="NormalTextRun SCXW4868182 BCX0" data-ccp-charstyle="Hyperlink">Regulamin świadczenia usług w projekcie PDiH (PDF)</span></span></a><span class="EOP SCXW4868182 BCX0" data-ccp-props="{}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-ed5c410 elementor-widget elementor-widget-text-editor" data-id="ed5c410" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span class="TextRun SCXW15008491 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SCXW15008491 BCX0">Jeśli chcesz dowiedzieć się, jak w praktyce wdrożyć narzędzia AI i usprawnić działanie swojej firmy — zgłoś się już dziś.</span><span class="NormalTextRun SCXW15008491 BCX0"> Możesz to zrobić za pomocą naszego formularza kontaktowego. Napisz nam, które szkolenie jest dla Ciebie interesujące i pozostaw swoje dane kontaktowe.</span></span><span class="EOP SCXW15008491 BCX0" data-ccp-props="{}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-03fd4c7 elementor-cta--skin-cover elementor-animated-content elementor-bg-transform elementor-bg-transform-zoom-in elementor-widget elementor-widget-call-to-action" data-id="03fd4c7" data-element_type="widget" data-widget_type="call-to-action.default">
				<div class="elementor-widget-container">
					<div class="elementor-cta">
					<div class="elementor-cta__bg-wrapper">
				<div class="elementor-cta__bg elementor-bg" style="background-image: url(https://inero-software.com/wp-content/uploads/2025/03/cta-1903-1030x579.png);" role="img" aria-label="cta 1903"></div>
				<div class="elementor-cta__bg-overlay"></div>
			</div>
							<div class="elementor-cta__content">
				
									<h2 class="elementor-cta__title elementor-cta__content-item elementor-content-item elementor-animated-item--grow">
						Zapisz się na bezpłatne szkolenie 					</h2>
				
									<div class="elementor-cta__description elementor-cta__content-item elementor-content-item elementor-animated-item--grow">
						Wypełnij formularz, a my skontaktujemy się z Tobą. 					</div>
				
									<div class="elementor-cta__button-wrapper elementor-cta__content-item elementor-content-item elementor-animated-item--grow">
					<a class="elementor-cta__button elementor-button elementor-size-" href="https://inero-software.com/pl/kontakt/">
						Wypełnij formularz 					</a>
					</div>
							</div>
						</div>
				</div>
				</div>
					</div>
				</div>
				</div>
		<p>Artykuł <a href="https://inero-software.com/pl/dowiedz-sie-jak-skorzystac-z-bezplatnych-szkolen-prowadzonych-przez-ekspertow-inero/">Dowiedź się jak skorzystać z bezpłatnych szkoleń prowadzonych przez ekspertów Inero Software w ramach PDiH</a> pochodzi z serwisu <a href="https://inero-software.com/pl">Inero Software - Rozwiązania IT i Konsulting</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">7672</post-id>	</item>
		<item>
		<title>Poznaj swojego osobistego Agenta AI: Case study dla firmy spedycyjnej</title>
		<link>https://inero-software.com/pl/poznaj-swojego-osobistego-agenta-ai-case-study-dla-firmy-spedycyjnej/</link>
		
		<dc:creator><![CDATA[Marta Kuprasz]]></dc:creator>
		<pubDate>Fri, 21 Feb 2025 10:33:14 +0000</pubDate>
				<category><![CDATA[Blog_pl]]></category>
		<category><![CDATA[Firma]]></category>
		<category><![CDATA[NASZE ROZWIĄZANIA]]></category>
		<category><![CDATA[Agent AI]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[analiza]]></category>
		<category><![CDATA[Asystent AI]]></category>
		<category><![CDATA[biznes]]></category>
		<category><![CDATA[Case study]]></category>
		<category><![CDATA[digitalizacja]]></category>
		<category><![CDATA[dokumenty]]></category>
		<category><![CDATA[Gemini]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[LLM]]></category>
		<category><![CDATA[oprogramowanie]]></category>
		<category><![CDATA[optymalizacja procesów biznesowych]]></category>
		<category><![CDATA[spedycja]]></category>
		<category><![CDATA[sztuczna inteligencja]]></category>
		<guid isPermaLink="false">https://inero-software.com/?p=7259</guid>

					<description><![CDATA[<p>Agenci AI mogą znaleźć zastosowanie w wielu branżach jak np. bankowość, sprzedaż czy zarządzanie zasobami ludzkimi. W tym tekście wykorzystamy przykład firmy spedycyjnej, która codziennie obsługuje od kilku do kilkudziesięciu frachtów.  </p>
<p>Artykuł <a href="https://inero-software.com/pl/poznaj-swojego-osobistego-agenta-ai-case-study-dla-firmy-spedycyjnej/">Poznaj swojego osobistego Agenta AI: Case study dla firmy spedycyjnej</a> pochodzi z serwisu <a href="https://inero-software.com/pl">Inero Software - Rozwiązania IT i Konsulting</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="7259" class="elementor elementor-7259" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-c1e7efe e-flex e-con-boxed e-con e-parent" data-id="c1e7efe" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-a609c1d elementor-widget elementor-widget-html" data-id="a609c1d" data-element_type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
			 		</div>
				</div>
				<div class="elementor-element elementor-element-ff753e4 elementor-widget elementor-widget-text-editor" data-id="ff753e4" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h5><span class="TextRun SCXW42291576 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SCXW42291576 BCX0">Narzędzia oparte na sztucznej inteligencji znajdują coraz szersze zastosowanie. Od projektowania prostych grafik, tłumaczeń, aż po zaawansowanie analizowanie dokumentów, maili i baz danych. W tym tekście pokażemy jeden z praktycznych przykładów wykorzystania takiego asystenta w praktyce. </span></span><span class="EOP SCXW42291576 BCX0" data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:0,&quot;335559737&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:279}"> </span></h5>						</div>
				</div>
				<div class="elementor-element elementor-element-ee85ecd elementor-widget elementor-widget-text-editor" data-id="ee85ecd" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span class="TextRun SCXW221803130 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SCXW221803130 BCX0">Obszar zastosowania Agentów AI jest bardzo szeroki i wciąż odkrywany jest ich potencjał.  Do największych zalet</span><span class="NormalTextRun SCXW221803130 BCX0"> asystentów opartych na sztucznej inteligencji</span><span class="NormalTextRun SCXW221803130 BCX0"> możemy zaliczyć:</span></span><span class="EOP SCXW221803130 BCX0" data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:0,&quot;335559737&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:279}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-06bf962 elementor-widget elementor-widget-text-editor" data-id="06bf962" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><strong>1. Automatyzacja rutynowych procesów</strong></p><p>Agenci AI mogą wykonywać powtarzalne zadania, takie jak obsługa zapytań klientów, analiza dokumentów czy zarządzanie danymi, co redukuje koszty operacyjne i zwiększa efektywność.</p><p><strong> </strong></p><p><strong>2. Personalizacja interakcji z klientem</strong></p><p>Dzięki analizie danych agenci AI mogą dostarczać spersonalizowane rekomendacje i oferty, co zwiększa zaangażowanie klientów i poprawia ich doświadczenia.</p><p><strong> </strong></p><p><strong>3. Szybkość i dostępność</strong></p><p>AI działa 24/7, zapewniając natychmiastowe odpowiedzi i obsługę w czasie rzeczywistym, co jest kluczowe w sektorach wymagających szybkiej reakcji, takich jak e-commerce, finanse czy logistyka.</p><p><strong> </strong></p><p><strong>4. Zaawansowana analiza danych</strong></p><p>Agenci AI mogą przetwarzać duże ilości danych w krótkim czasie, identyfikując wzorce i zależności, co wspiera podejmowanie trafnych decyzji biznesowych.</p><p><strong> </strong></p><p><strong>5. Optymalizacja procesów decyzyjnych</strong></p><p>Dzięki modelom predykcyjnym AI wspiera podejmowanie decyzji w obszarach takich jak prognozowanie popytu, zarządzanie ryzykiem czy optymalizacja łańcucha dostaw.</p><p><strong>6. Integracja z istniejącymi systemami</strong></p><p>Nowoczesne rozwiązania AI można łatwo wdrożyć w ramach istniejących systemów ERP, CRM czy platform analitycznych, co zwiększa ich funkcjonalność.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-11dd40f elementor-widget elementor-widget-heading" data-id="11dd40f" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Praktyczny przykład wykorzystania Agenta AI w branży transportowej </h3>		</div>
				</div>
				<div class="elementor-element elementor-element-49baa37 elementor-widget__width-initial elementor-widget elementor-widget-video" data-id="49baa37" data-element_type="widget" data-settings="{&quot;youtube_url&quot;:&quot;https:\/\/youtu.be\/B4VxxjWYzDM&quot;,&quot;video_type&quot;:&quot;youtube&quot;,&quot;controls&quot;:&quot;yes&quot;}" data-widget_type="video.default">
				<div class="elementor-widget-container">
					<div class="elementor-wrapper elementor-open-inline">
			<div class="elementor-video"></div>		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-a9b9980 elementor-widget elementor-widget-text-editor" data-id="a9b9980" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span data-contrast="auto">Agenci AI mogą znaleźć zastosowanie w wielu branżach jak np. bankowość, sprzedaż czy zarządzanie zasobami ludzkimi. W tym tekście wykorzystamy przykład firmy spedycyjnej, która codziennie obsługuje od kilku do kilkudziesięciu frachtów. </span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}">&nbsp;</span></p>
<p><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}">&nbsp;</span></p>
<p><span data-contrast="auto">Praca spedytorów wiąże się z koniecznością ciągłej komunikacji i weryfikacji wielu dokumentów. Każde z tych zadań, wiąże się z czasem, którego często bywa za mało, a wtedy łatwo o błędy.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}">&nbsp;</span></p>
<p><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}">&nbsp;</span></p>
<p><span data-contrast="auto">Jak więc lepiej zarządzać czasem? Automatyzując zadania, które są powtarzalne i przewidywalne. To zadanie dla Agenta AI. Oto przykład stworzonego przez nas asystenta, opartego na Dużym Modelu Językowym Gemini od Google. </span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}">&nbsp;</span></p>
<p><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}">&nbsp;</span></p>
<p><span data-contrast="auto">Możemy go wykorzystać na przykład w poniższym scenariuszu:</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}">&nbsp;</span></p>
<p><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}">&nbsp;</span></p>
<p><span data-contrast="auto">Spedytor otrzymuje mail, w którym powinny być polisa ubezpieczeniowa wraz z potwierdzeniem jej opłacenia. Agent AI samodzielnie, bez wywołania sprawdza czy otrzymany mail zawiera wspomniane wcześniej załączniki. Jeśli są dołączone, to w kolejnym kroku sprawdza następujące informacje:</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:0,&quot;335559739&quot;:0}">&nbsp;</span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-d2f738d elementor-widget elementor-widget-text-editor" data-id="d2f738d" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span data-contrast="auto">W polisie ubezpieczeniowej:</span><span data-ccp-props="{}"> </span></p><ul><li style="list-style-type: none;"><ul><li data-leveltext="-" data-font="Aptos" data-listid="3" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Aptos&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;-&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Numer polisy</span><span data-ccp-props="{}"> </span></li></ul></li></ul><ul><li style="list-style-type: none;"><ul><li data-leveltext="-" data-font="Aptos" data-listid="3" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Aptos&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;-&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">Okres ubezpieczenia i czy jest ona aktualnie ważna </span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559737&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:279,&quot;335559991&quot;:360}"> </span></li></ul></li></ul><ul><li style="list-style-type: none;"><ul><li data-leveltext="-" data-font="Aptos" data-listid="3" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Aptos&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;-&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1"><span class="TextRun SCXW205900233 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SCXW205900233 BCX0">Kto jest ubezpieczony, wraz z </span><span class="NormalTextRun SCXW205900233 BCX0">numerem identyfikacji podatkowej</span><span class="NormalTextRun SCXW205900233 BCX0"> i adresem</span></span><span class="EOP SCXW205900233 BCX0" data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559737&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:279,&quot;335559991&quot;:360}"> </span></li></ul></li></ul><ul><li style="list-style-type: none;"><ul><li data-leveltext="-" data-font="Aptos" data-listid="3" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Aptos&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;-&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1"><span data-contrast="auto">Numer konta na jaki należy przelać składkę </span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:720,&quot;335559737&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:279,&quot;335559991&quot;:360}"> </span></li></ul></li></ul><p><span data-contrast="auto">W potwierdzeniu przelewu:</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559737&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:279}"> </span></p><ul><li style="list-style-type: none;"><ul><li data-leveltext="-" data-font="Aptos" data-listid="4" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Aptos&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;-&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Tytuł przelewu</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559737&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:279}"> </span></li></ul></li></ul><ul><li style="list-style-type: none;"><ul><li data-leveltext="-" data-font="Aptos" data-listid="4" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Aptos&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;-&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">Kwota</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559737&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:279}"> </span></li></ul></li></ul><ul><li style="list-style-type: none;"><ul><li data-leveltext="-" data-font="Aptos" data-listid="4" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Aptos&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;-&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">Numer konta</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559737&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:279}"> </span></li></ul></li></ul><ul><li style="list-style-type: none;"><ul><li data-leveltext="-" data-font="Aptos" data-listid="4" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Aptos&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;-&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1"><span data-contrast="auto">Data płatności</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559737&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:279}"> </span></li></ul></li></ul><ul><li style="list-style-type: none;"><ul><li data-leveltext="-" data-font="Aptos" data-listid="4" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Aptos&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;-&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="5" data-aria-level="1"><span data-contrast="auto">Czy przelew dotyczy przesłanej polisy (np. na podstawie tytułu, numeru konta)</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559737&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:279}"> </span></li></ul></li></ul>						</div>
				</div>
				<div class="elementor-element elementor-element-3edb3a5 elementor-widget elementor-widget-image" data-id="3edb3a5" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
													<img decoding="async" data-attachment-id="7334" data-permalink="https://inero-software.com/pl/poznaj-swojego-osobistego-agenta-ai-case-study-dla-firmy-spedycyjnej/analysis-take1/" data-orig-file="https://inero-software.com/wp-content/uploads/2025/02/analysis-take1.png" data-orig-size="1722,612" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="analysis-take1" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2025/02/analysis-take1-300x107.png" data-large-file="https://inero-software.com/wp-content/uploads/2025/02/analysis-take1-1030x366.png" tabindex="0" role="button" width="1030" height="366" src="https://inero-software.com/wp-content/uploads/2025/02/analysis-take1-1030x366.png" class="attachment-large size-large wp-image-7334" alt="" srcset="https://inero-software.com/wp-content/uploads/2025/02/analysis-take1-1030x366.png 1030w, https://inero-software.com/wp-content/uploads/2025/02/analysis-take1-300x107.png 300w, https://inero-software.com/wp-content/uploads/2025/02/analysis-take1-768x273.png 768w, https://inero-software.com/wp-content/uploads/2025/02/analysis-take1-1536x546.png 1536w, https://inero-software.com/wp-content/uploads/2025/02/analysis-take1-844x300.png 844w, https://inero-software.com/wp-content/uploads/2025/02/analysis-take1.png 1722w" sizes="(max-width: 1030px) 100vw, 1030px" data-attachment-id="7334" data-permalink="https://inero-software.com/pl/poznaj-swojego-osobistego-agenta-ai-case-study-dla-firmy-spedycyjnej/analysis-take1/" data-orig-file="https://inero-software.com/wp-content/uploads/2025/02/analysis-take1.png" data-orig-size="1722,612" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="analysis-take1" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2025/02/analysis-take1-300x107.png" data-large-file="https://inero-software.com/wp-content/uploads/2025/02/analysis-take1-1030x366.png" role="button" />													</div>
				</div>
				<div class="elementor-element elementor-element-a59477b elementor-widget elementor-widget-text-editor" data-id="a59477b" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span data-contrast="auto">Następnie Agent AI przenosi znalezione dane do wskazanego pliku </span><span data-contrast="auto">excel, który jest na bieżąco aktualizowany. Plik z danymi może być formatowany, np. oznaczać kolorem czerwonym wpisy, w których polisa jest nieważna albo nie została zweryfikowana płatność.</span><span data-ccp-props="{}"> </span></p><p><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-ba91f9f elementor-widget elementor-widget-image" data-id="ba91f9f" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
													<img loading="lazy" decoding="async" data-attachment-id="7335" data-permalink="https://inero-software.com/pl/poznaj-swojego-osobistego-agenta-ai-case-study-dla-firmy-spedycyjnej/zrzut-ekranu-2025-02-21-112751/" data-orig-file="https://inero-software.com/wp-content/uploads/2025/02/Zrzut-ekranu-2025-02-21-112751.png" data-orig-size="1539,600" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Zrzut ekranu 2025-02-21 112751" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2025/02/Zrzut-ekranu-2025-02-21-112751-300x117.png" data-large-file="https://inero-software.com/wp-content/uploads/2025/02/Zrzut-ekranu-2025-02-21-112751-1030x402.png" tabindex="0" role="button" width="1030" height="402" src="https://inero-software.com/wp-content/uploads/2025/02/Zrzut-ekranu-2025-02-21-112751-1030x402.png" class="attachment-large size-large wp-image-7335" alt="" srcset="https://inero-software.com/wp-content/uploads/2025/02/Zrzut-ekranu-2025-02-21-112751-1030x402.png 1030w, https://inero-software.com/wp-content/uploads/2025/02/Zrzut-ekranu-2025-02-21-112751-300x117.png 300w, https://inero-software.com/wp-content/uploads/2025/02/Zrzut-ekranu-2025-02-21-112751-768x299.png 768w, https://inero-software.com/wp-content/uploads/2025/02/Zrzut-ekranu-2025-02-21-112751-1536x599.png 1536w, https://inero-software.com/wp-content/uploads/2025/02/Zrzut-ekranu-2025-02-21-112751-770x300.png 770w, https://inero-software.com/wp-content/uploads/2025/02/Zrzut-ekranu-2025-02-21-112751.png 1539w" sizes="(max-width: 1030px) 100vw, 1030px" data-attachment-id="7335" data-permalink="https://inero-software.com/pl/poznaj-swojego-osobistego-agenta-ai-case-study-dla-firmy-spedycyjnej/zrzut-ekranu-2025-02-21-112751/" data-orig-file="https://inero-software.com/wp-content/uploads/2025/02/Zrzut-ekranu-2025-02-21-112751.png" data-orig-size="1539,600" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Zrzut ekranu 2025-02-21 112751" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2025/02/Zrzut-ekranu-2025-02-21-112751-300x117.png" data-large-file="https://inero-software.com/wp-content/uploads/2025/02/Zrzut-ekranu-2025-02-21-112751-1030x402.png" role="button" />													</div>
				</div>
				<div class="elementor-element elementor-element-5abc3ea elementor-widget elementor-widget-text-editor" data-id="5abc3ea" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span data-contrast="auto">W ten prosty sposób, zamiast przeglądać skrzynkę mailową w poszukiwaniu właściwych wiadomości, spedytor może sprawdzić w pliku exel czy otrzymał dokumenty od konkretnego nadawcy i czy są one poprawne. To duża oszczędność czasu i pewność, że dane są prawidłowe. </span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p><p><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p><p><span data-contrast="auto">Jest wiele możliwości dalej rozbudowy naszego Asystenta AI. Możemy integrować go z innymi narzędziami, jak na przykład Slack lub inny komunikator, by wysłać powiadomienia o brakach w dokumentach albo by generować automatyczne odpowiedzi na wiadomości. Agent oparty na sztucznej inteligencji może być dostosowany do indywidualnych potrzeb danej firmy, jej działu lub indywidualnego stanowiska.</span><span data-ccp-props="{&quot;335551550&quot;:6,&quot;335551620&quot;:6}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-aee5ea0 elementor-cta--skin-cover elementor-widget__width-inherit elementor-hidden-mobile elementor-animated-content elementor-bg-transform elementor-bg-transform-zoom-in elementor-widget elementor-widget-call-to-action" data-id="aee5ea0" data-element_type="widget" data-widget_type="call-to-action.default">
				<div class="elementor-widget-container">
					<div class="elementor-cta">
					<div class="elementor-cta__bg-wrapper">
				<div class="elementor-cta__bg elementor-bg" style="background-image: url(https://inero-software.com/wp-content/uploads/2025/02/cta-AI2-1030x579.png);" role="img" aria-label="cta AI2"></div>
				<div class="elementor-cta__bg-overlay"></div>
			</div>
							<div class="elementor-cta__content">
				
									<h2 class="elementor-cta__title elementor-cta__content-item elementor-content-item elementor-animated-item--grow">
						Chcesz poznać możliwości Agentów AI?					</h2>
				
									<div class="elementor-cta__description elementor-cta__content-item elementor-content-item elementor-animated-item--grow">
						Umów spotkanie. Chętnie porozmawiamy o możliwościach.					</div>
				
									<div class="elementor-cta__button-wrapper elementor-cta__content-item elementor-content-item elementor-animated-item--grow">
					<a class="elementor-cta__button elementor-button elementor-size-" href="https://calendar.google.com/calendar/u/0/appointments/schedules/AcZssZ3e3C_1YeBkt1uCr_qfOnG_N298UgLFwORcSTXigrPfOk0ls3ok-Uw_dSeGCoLdtYsN13GMm-n-">
						UMÓW SPOTKANIE 					</a>
					</div>
							</div>
						</div>
				</div>
				</div>
					</div>
				</div>
				</div>
		<p>Artykuł <a href="https://inero-software.com/pl/poznaj-swojego-osobistego-agenta-ai-case-study-dla-firmy-spedycyjnej/">Poznaj swojego osobistego Agenta AI: Case study dla firmy spedycyjnej</a> pochodzi z serwisu <a href="https://inero-software.com/pl">Inero Software - Rozwiązania IT i Konsulting</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">7259</post-id>	</item>
		<item>
		<title>Cyberbezpieczeństwo to nie tylko programy antywirusowe</title>
		<link>https://inero-software.com/pl/cyberbezpieczenstwo-to-nie-tylko-programy-antywirusowe/</link>
		
		<dc:creator><![CDATA[Marta Kuprasz]]></dc:creator>
		<pubDate>Tue, 18 Feb 2025 12:19:03 +0000</pubDate>
				<category><![CDATA[Firma]]></category>
		<category><![CDATA[Keycloak]]></category>
		<category><![CDATA[ataki typu DDoS]]></category>
		<category><![CDATA[biznes]]></category>
		<category><![CDATA[cyberataki]]></category>
		<category><![CDATA[cyberbezpieczeństwo]]></category>
		<category><![CDATA[IAM]]></category>
		<category><![CDATA[keycloak]]></category>
		<category><![CDATA[oprogramowanie]]></category>
		<category><![CDATA[phishing]]></category>
		<category><![CDATA[programy antywirusowe]]></category>
		<category><![CDATA[ransomware]]></category>
		<category><![CDATA[wirusy]]></category>
		<category><![CDATA[zarządzanie dostępem i tożsamością]]></category>
		<guid isPermaLink="false">https://inero-software.com/?p=7215</guid>

					<description><![CDATA[<p>Dla wielu osób pierwszym skojarzeniem, gdy mowa o cyberbezpieczeństwa, są programy antywirusowe. Współczesne zagrożenia w cyberprzestrzeni wykraczają jednak znacznie dalej niż tylko klasyczne wirusy komputerowe.</p>
<p>Artykuł <a href="https://inero-software.com/pl/cyberbezpieczenstwo-to-nie-tylko-programy-antywirusowe/">Cyberbezpieczeństwo to nie tylko programy antywirusowe</a> pochodzi z serwisu <a href="https://inero-software.com/pl">Inero Software - Rozwiązania IT i Konsulting</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="7215" class="elementor elementor-7215" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-12e4585 e-flex e-con-boxed e-con e-parent" data-id="12e4585" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-bc76512 elementor-widget elementor-widget-html" data-id="bc76512" data-element_type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
			 		</div>
				</div>
				<div class="elementor-element elementor-element-3fd29b7 elementor-widget elementor-widget-text-editor" data-id="3fd29b7" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h4><span class="TextRun SCXW164501490 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SCXW164501490 BCX0">Dla wielu osób pierwszym skojarzeniem</span><span class="NormalTextRun SCXW164501490 BCX0">, gdy mowa o </span><span class="NormalTextRun SpellingErrorV2Themed SCXW164501490 BCX0">cyberbezpieczeństwa</span><span class="NormalTextRun SCXW164501490 BCX0">, są programy antywirusowe. </span><span class="NormalTextRun SCXW164501490 BCX0">Współczesne zagrożenia w cyberprzestrzeni wykraczają</span><span class="NormalTextRun SCXW164501490 BCX0"> jednak znacznie dalej</span> <span class="NormalTextRun SCXW164501490 BCX0">niż</span><span class="NormalTextRun SCXW164501490 BCX0"> tylko</span> <span class="NormalTextRun SCXW164501490 BCX0">klasyczne wirusy komputerowe. Choć oprogramowanie antywirusowe pozostaje ważnym elementem ochrony, skuteczna strategia</span> <span class="NormalTextRun SCXW164501490 BCX0">zapobiegania i ograniczająca ryzyko ataku i utraty danych lub </span><span class="NormalTextRun SCXW164501490 BCX0">pieniędzy</span><span class="NormalTextRun SCXW164501490 BCX0">,</span> <span class="NormalTextRun SCXW164501490 BCX0">musi uwzględniać znacznie szerszy zakres narzędzi i procesów. </span></span><span class="EOP SCXW164501490 BCX0" data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:284,&quot;335559731&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></h4>						</div>
				</div>
				<div class="elementor-element elementor-element-2c09ad5 elementor-widget elementor-widget-text-editor" data-id="2c09ad5" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span class="TextRun SCXW195997264 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SCXW195997264 BCX0">C</span><span class="NormalTextRun SCXW195997264 BCX0">yberprzestępcy</span><span class="NormalTextRun SCXW195997264 BCX0"> mają bardzo szeroki arsenał </span><span class="NormalTextRun SCXW195997264 BCX0">technik i</span><span class="NormalTextRun SCXW195997264 BCX0"> metod ataków</span><span class="NormalTextRun SCXW195997264 BCX0">. W przestrzeni publicznej bardzo często wymieniane są</span><span class="NormalTextRun SCXW195997264 BCX0"> takie </span><span class="NormalTextRun SCXW195997264 BCX0">hasła </span><span class="NormalTextRun SCXW195997264 BCX0">jak </span><span class="NormalTextRun SpellingErrorV2Themed SCXW195997264 BCX0">phishing</span><span class="NormalTextRun SCXW195997264 BCX0">, </span><span class="NormalTextRun SpellingErrorV2Themed SCXW195997264 BCX0">ransomware</span><span class="NormalTextRun SCXW195997264 BCX0">, ataki typu </span><span class="NormalTextRun SpellingErrorV2Themed SCXW195997264 BCX0">DDoS</span><span class="NormalTextRun SCXW195997264 BCX0"> (Distributed </span><span class="NormalTextRun SpellingErrorV2Themed SCXW195997264 BCX0">Denial</span><span class="NormalTextRun SCXW195997264 BCX0"> of Service), czy inżynieria społeczna. </span></span><span class="EOP SCXW195997264 BCX0" data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:284,&quot;335559731&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-cebf6fb elementor-widget elementor-widget-heading" data-id="cebf6fb" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Na które zagrożenia należy zwrócić szczególną uwagę w 2025? </h3>		</div>
				</div>
				<div class="elementor-element elementor-element-242a0b8 elementor-widget elementor-widget-text-editor" data-id="242a0b8" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span class="NormalTextRun SCXW61866030 BCX0">Eksperci w zakresie </span><span class="NormalTextRun SpellingErrorV2Themed SCXW61866030 BCX0">cyberbezpieczeństwa</span><span class="NormalTextRun SCXW61866030 BCX0"> zwracają uwagę, że techniki te wciąż ewoluują i dostosowują się by lepiej wpływać na potencjalne ofiary. W 2025 warto zwrócić uwagę na trzy zagadnienia:</span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-5f32fe9 elementor-widget__width-initial elementor-widget elementor-widget-facebook-embed" data-id="5f32fe9" data-element_type="widget" data-widget_type="facebook-embed.default">
				<div class="elementor-widget-container">
			<div style="min-height: 1px" class="elementor-facebook-widget fb-post" data-href="https://www.facebook.com/IneroSoftware/posts/pfbid0JL2d2Y1vxburNVFv8RYVzBFJKfsMtxtqnjDwnrSYP9njo4TmuG7TKUEYbGA1AWddl" data-show-text="false"></div>		</div>
				</div>
				<div class="elementor-element elementor-element-5d73e56 elementor-widget elementor-widget-heading" data-id="5d73e56" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h4 class="elementor-heading-title elementor-size-default">Klucze dostępu zastępują hasła </h4>		</div>
				</div>
				<div class="elementor-element elementor-element-26ddf4b elementor-widget elementor-widget-text-editor" data-id="26ddf4b" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span class="TextRun SCXW212628961 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SCXW212628961 BCX0">H</span><span class="NormalTextRun SCXW212628961 BCX0">asła pozostają słabym ogniwem. Wraz ze wzrostem liczby ataków </span><span class="NormalTextRun SpellingErrorV2Themed SCXW212628961 BCX0">phishingowych</span><span class="NormalTextRun SCXW212628961 BCX0"> i uwierzytelniających firmy przechodzą na klucze dostępu — biometryczne lub kryptograficzne metody uwierzytelniania, które zwiększają bezpieczeństwo i komfort użytkownika. Giganci tacy jak Google i Apple przewodzą tej zmianie.</span></span><span class="EOP SCXW212628961 BCX0" data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:284,&quot;335559731&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-850c83f elementor-widget elementor-widget-heading" data-id="850c83f" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h4 class="elementor-heading-title elementor-size-default">Phishing staje się hiperpersonalizowany  </h4>		</div>
				</div>
				<div class="elementor-element elementor-element-e3969c5 elementor-widget elementor-widget-text-editor" data-id="e3969c5" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span class="TextRun SCXW113212297 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SCXW113212297 BCX0">O</span><span class="NormalTextRun SCXW113212297 BCX0">gólne wiadomości e-mail </span><span class="NormalTextRun SpellingErrorV2Themed SCXW113212297 BCX0">phishingowe</span><span class="NormalTextRun SCXW113212297 BCX0"> należą już do przeszłości. Atakujący wykorzystują teraz dogłębne badania i dane z mediów społecznościowych do tworzenia wysoce ukierunkowanych kampanii, które wydają się legalne. Wiadomości generowane przez sztuczną inteligencję naśladują prawdziwe rozmowy, dzięki czemu inżynieria społeczna jest skuteczniejsza. Organizacje muszą inwestować w zaawansowane wykrywanie i świadomość pracowników.</span></span><span class="EOP SCXW113212297 BCX0" data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:284,&quot;335559731&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-f2cb24e elementor-widget elementor-widget-heading" data-id="f2cb24e" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h4 class="elementor-heading-title elementor-size-default">Deepfakes stanowią rosnące zagrożenie </h4>		</div>
				</div>
				<div class="elementor-element elementor-element-48cf76b elementor-widget elementor-widget-text-editor" data-id="48cf76b" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span class="TextRun SCXW223832779 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SCXW223832779 BCX0">T</span><span class="NormalTextRun SCXW223832779 BCX0">echnologia </span><span class="NormalTextRun SpellingErrorV2Themed SCXW223832779 BCX0">deepfake</span> <span class="NormalTextRun SCXW223832779 BCX0">oparta na AI </span><span class="NormalTextRun SCXW223832779 BCX0">stanowi </span><span class="NormalTextRun SCXW223832779 BCX0">coraz większe</span><span class="NormalTextRun SCXW223832779 BCX0"> zagrożenie dla </span><span class="NormalTextRun SpellingErrorV2Themed SCXW223832779 BCX0">cyberbezpieczeństwa</span><span class="NormalTextRun SCXW223832779 BCX0">. Przestępcy wykorzystują generowane przez sztuczną inteligencję profile podszywające się pod managerów lub inne zaufane osoby, aby ominąć zabezpieczenia i manipulować pracownikami, aby ujawnili poufne informacje. Jedna ze znanych metod polega na stosowaniu filtrów podczas rozmów wideo w celu podszywania się pod kogoś innego w czasie rzeczywistym. Firmy muszą wzmocnić protokoły weryfikacji i </span><span class="NormalTextRun SCXW223832779 BCX0">edukować</span><span class="NormalTextRun SCXW223832779 BCX0"> pracowników w zakresie wykrywania </span><span class="NormalTextRun SpellingErrorV2Themed SCXW223832779 BCX0">deepfake&#8217;ów</span><span class="NormalTextRun SCXW223832779 BCX0">.</span></span><span class="EOP SCXW223832779 BCX0" data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:284,&quot;335559731&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}">&nbsp;</span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-090c57a elementor-widget elementor-widget-heading" data-id="090c57a" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Gdy program antywirusowy to za mało  </h3>		</div>
				</div>
				<div class="elementor-element elementor-element-634421f elementor-widget elementor-widget-text-editor" data-id="634421f" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span class="NormalTextRun SCXW93381307 BCX0">Programy antywirusowe to oprogramowanie zaprojektowane do wykrywania, blokowania i usuwania złośliwego oprogramowania, takiego jak wirusy, </span><span class="NormalTextRun SpellingErrorV2Themed SCXW93381307 BCX0">trojany</span><span class="NormalTextRun SCXW93381307 BCX0"> czy spyware. Ich działanie opiera się na bazach danych znanych</span><span class="NormalTextRun SCXW93381307 BCX0"> już</span><span class="NormalTextRun SCXW93381307 BCX0"> zagrożeń</span><span class="NormalTextRun SCXW93381307 BCX0">. Techniki wykorzystywane przez cyberprzestępców</span><span class="NormalTextRun SCXW93381307 BCX0"> ewoluują </span><span class="NormalTextRun SCXW93381307 BCX0">jednak </span><span class="NormalTextRun SCXW93381307 BCX0">w sposób, który znacznie wykracza poza możliwości tradycyjnych programów antywirusowych. Ataki typu </span><span class="NormalTextRun SpellingErrorV2Themed SCXW93381307 BCX0">phishing</span><span class="NormalTextRun SCXW93381307 BCX0">, </span><span class="NormalTextRun SpellingErrorV2Themed SCXW93381307 BCX0">ransomware</span><span class="NormalTextRun SCXW93381307 BCX0">, inżynieria społeczna czy </span><span class="NormalTextRun SpellingErrorV2Themed SCXW93381307 BCX0">deepfake</span><span class="NormalTextRun SCXW93381307 BCX0"> nie są bezpośrednio powiązane z klasycznym złośliwym oprogramowaniem i często wymagają bardziej zaawansowanych metod ochrony.</span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-7fb7ea2 elementor-widget elementor-widget-heading" data-id="7fb7ea2" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Jak zachować bezpieczeństwo? </h3>		</div>
				</div>
				<div class="elementor-element elementor-element-ad58dd6 elementor-widget elementor-widget-text-editor" data-id="ad58dd6" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span class="TextRun SCXW164715379 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SCXW164715379 BCX0">Przede wszystkim wdrażając nowoczesne metody uwierzytelniania, zarządzania tożsamościami oraz wykrywania incydentów, które mogą świadczyć o próbie ataku. Obejmuje to zastosowanie wieloskładnikowego uwierzytelniania (MFA), integrację z systemami zarządzania tożsamością jak </span><span class="NormalTextRun SpellingErrorV2Themed SCXW164715379 BCX0">Keycloak</span><span class="NormalTextRun SCXW164715379 BCX0">, oraz monitorowanie aktywności poprzez narzędzia klasy SIEM (Security Information and Event Management). Takie podejście pozwala na bieżąco identyfikować i reagować na nietypowe zachowania, które mogą być oznaką kompromitacji systemu.</span></span><span class="EOP SCXW164715379 BCX0" data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:284,&quot;335559731&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-dc608e7 elementor-widget elementor-widget-text-editor" data-id="dc608e7" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h5><a href="https://inero-software.com/pl/systemy-security-information-and-event-management-dlaczego-warto-dodac-do-nich-keycloak/"><span class="TextRun SCXW151688280 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SCXW151688280 BCX0">O </span><span class="NormalTextRun ContextualSpellingAndGrammarErrorV2Themed SCXW151688280 BCX0">tym</span><span class="NormalTextRun SCXW151688280 BCX0"> dlaczego warto zintegrować </span><span class="NormalTextRun SpellingErrorV2Themed SCXW151688280 BCX0">Keycloak</span><span class="NormalTextRun SCXW151688280 BCX0"> z programem typu Security Information and Event Management (SIEM) pisaliśmy tu.</span></span><span class="EOP SCXW151688280 BCX0" data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:284,&quot;335559731&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></a></h5>						</div>
				</div>
				<div class="elementor-element elementor-element-1f7db8f elementor-widget elementor-widget-heading" data-id="1f7db8f" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Zacznij od ułożenia procesu </h3>		</div>
				</div>
				<div class="elementor-element elementor-element-b0838c2 elementor-widget elementor-widget-text-editor" data-id="b0838c2" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p data-ccp-border-bottom="0px none #000000" data-ccp-padding-bottom="0px" data-ccp-border-between="0px none #000000" data-ccp-padding-between="0px"><span data-contrast="auto">Dobrze ułożony proces dotyczący cyberbezpieczeństwa zaczyna się od gruntownej oceny ryzyka i identyfikacji zagrożeń. Na tym etapie organizacja dokonuje inwentaryzacji wszystkich zasobów IT, takich jak urządzenia, systemy, aplikacje i dane. Kluczowe jest określenie, które z tych zasobów są najbardziej wrażliwe i wymagają szczególnej ochrony. Następnie należy przeprowadzić analizę ryzyka, która polega na ocenie potencjalnych zagrożeń, ich wpływu na działalność firmy oraz prawdopodobieństwa ich wystąpienia. Dzięki temu można zidentyfikować najważniejsze obszary wymagające ochrony.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:284,&quot;335559731&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}">&nbsp;</span></p>
<p data-ccp-border-bottom="0px none #000000" data-ccp-padding-bottom="0px" data-ccp-border-between="0px none #000000" data-ccp-padding-between="0px"><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:284,&quot;335559731&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}">&nbsp;</span></p>
<p data-ccp-border-bottom="0px none #000000" data-ccp-padding-bottom="0px" data-ccp-border-between="0px none #000000" data-ccp-padding-between="0px"><span data-contrast="auto">Kolejnym krokiem jest stworzenie kompleksowej polityki bezpieczeństwa. Obejmuje ona zestaw zasad i procedur regulujących wszystkie aspekty korzystania z technologii w organizacji – od zarządzania hasłami i dostępem do systemów, po zasady korzystania z urządzeń przenośnych i pracy zdalnej. Na tym etapie niezwykle istotne jest uwzględnienie obowiązujących przepisów prawnych, takich jak RODO, oraz standardów branżowych.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:284,&quot;335559731&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}">&nbsp;</span></p>
<p data-ccp-border-bottom="0px none #000000" data-ccp-padding-bottom="0px" data-ccp-border-between="0px none #000000" data-ccp-padding-between="0px"><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:284,&quot;335559731&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}">&nbsp;</span></p>
<p data-ccp-border-bottom="0px none #000000" data-ccp-padding-bottom="0px" data-ccp-border-between="0px none #000000" data-ccp-padding-between="0px"><span data-contrast="auto">Po opracowaniu polityk, niezbędne jest wdrożenie odpowiednich technologii zabezpieczających oraz narzędzi jak wspomniany już wcześniej Keycloak. Na tym etapie wprowadzane są do organizacji zabezpieczenia jak uwierzytelnianie wieloskładnikowe (MFA), szyfrowanie danych oraz systemy monitorujące infrastrukturę IT, takie jak SIEM (Security Information and Event Management). Równolegle należy wprowadzić mechanizmy regularnych aktualizacji oprogramowania i tworzenia kopii zapasowych, co pozwala na szybkie przywrócenie systemów w razie incydentu.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:284,&quot;335559731&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}">&nbsp;</span></p>
<p data-ccp-border-bottom="0px none #000000" data-ccp-padding-bottom="0px" data-ccp-border-between="0px none #000000" data-ccp-padding-between="0px"><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:284,&quot;335559731&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}">&nbsp;</span></p>
<p data-ccp-border-bottom="0px none #000000" data-ccp-padding-bottom="0px" data-ccp-border-between="0px none #000000" data-ccp-padding-between="0px"><span data-contrast="auto">Opracowując proces, należy mieć świadomość, że często najsłabszym ogniwem zabezpieczeń jest po prostu człowiek. Bardzo ważne jest zwiększanie świadomości pracowników poprzez programy szkoleniowe, które zapoznają ich z różnymi technikami ataków i przykładami z życia wziętymi, pomagając im rozpoznawać różne zagrożenia.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:284,&quot;335559731&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}">&nbsp;</span></p>
<p data-ccp-border-bottom="0px none #000000" data-ccp-padding-bottom="0px" data-ccp-border-between="0px none #000000" data-ccp-padding-between="0px"><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:284,&quot;335559731&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}">&nbsp;</span></p>
<p data-ccp-border-between="0px none #000000" data-ccp-padding-between="0px"><span data-contrast="auto">Ostatnim, ale nie mniej ważnym elementem jest monitorowanie i reagowanie na incydenty. Organizacja powinna mieć jasno określone procedury reagowania na naruszenia bezpieczeństwa, które pozwalają na szybkie wykrycie, analizę i minimalizację skutków ataków.&nbsp;</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:284,&quot;335559731&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}">&nbsp;</span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-d699b05 elementor-cta--skin-cover elementor-hidden-mobile elementor-animated-content elementor-bg-transform elementor-bg-transform-zoom-in elementor-widget elementor-widget-call-to-action" data-id="d699b05" data-element_type="widget" data-widget_type="call-to-action.default">
				<div class="elementor-widget-container">
					<div class="elementor-cta">
					<div class="elementor-cta__bg-wrapper">
				<div class="elementor-cta__bg elementor-bg" style="background-image: url(https://inero-software.com/wp-content/uploads/2024/12/1-1030x1030.png);" role="img" aria-label="1"></div>
				<div class="elementor-cta__bg-overlay"></div>
			</div>
							<div class="elementor-cta__content">
				
									<h2 class="elementor-cta__title elementor-cta__content-item elementor-content-item elementor-animated-item--grow">
						Pomożemy Ci wdrożyć Keycloak 					</h2>
				
									<div class="elementor-cta__description elementor-cta__content-item elementor-content-item elementor-animated-item--grow">
						Umów spotkanie, aby dowiedzieć się jak możemy pomóc Ci z wdrożeniem oraz kompleksowym utrzymaniem Keycloak w Twojej organizacji. 					</div>
				
									<div class="elementor-cta__button-wrapper elementor-cta__content-item elementor-content-item elementor-animated-item--grow">
					<a class="elementor-cta__button elementor-button elementor-size-" href="https://calendar.google.com/calendar/u/0/appointments/schedules/AcZssZ3e3C_1YeBkt1uCr_qfOnG_N298UgLFwORcSTXigrPfOk0ls3ok-Uw_dSeGCoLdtYsN13GMm-n-">
						Umów spotkanie 					</a>
					</div>
							</div>
						</div>
				</div>
				</div>
					</div>
				</div>
				</div>
		<p>Artykuł <a href="https://inero-software.com/pl/cyberbezpieczenstwo-to-nie-tylko-programy-antywirusowe/">Cyberbezpieczeństwo to nie tylko programy antywirusowe</a> pochodzi z serwisu <a href="https://inero-software.com/pl">Inero Software - Rozwiązania IT i Konsulting</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">7215</post-id>	</item>
		<item>
		<title>Systemy Security Information and Event Management. Dlaczego warto dodać do nich Keycloak?</title>
		<link>https://inero-software.com/pl/systemy-security-information-and-event-management-dlaczego-warto-dodac-do-nich-keycloak/</link>
		
		<dc:creator><![CDATA[Marta Kuprasz]]></dc:creator>
		<pubDate>Thu, 06 Feb 2025 08:35:21 +0000</pubDate>
				<category><![CDATA[Firma]]></category>
		<category><![CDATA[Keycloak]]></category>
		<category><![CDATA[biznes]]></category>
		<category><![CDATA[cyberbezpieczeństwo]]></category>
		<category><![CDATA[IAM]]></category>
		<category><![CDATA[keycloak]]></category>
		<category><![CDATA[MFA]]></category>
		<category><![CDATA[oprogramowanie]]></category>
		<category><![CDATA[SIEM]]></category>
		<category><![CDATA[Systemy Security Information and Event Management]]></category>
		<category><![CDATA[współpraca]]></category>
		<category><![CDATA[zarządzanie dostępem i tożsamością]]></category>
		<guid isPermaLink="false">https://inero-software.com/?p=6923</guid>

					<description><![CDATA[<p>Z tego bloga dowiesz się, jak Keycloak może wspierać Twój system SIEM.  </p>
<p>Artykuł <a href="https://inero-software.com/pl/systemy-security-information-and-event-management-dlaczego-warto-dodac-do-nich-keycloak/">Systemy Security Information and Event Management. Dlaczego warto dodać do nich Keycloak?</a> pochodzi z serwisu <a href="https://inero-software.com/pl">Inero Software - Rozwiązania IT i Konsulting</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="6923" class="elementor elementor-6923" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-3de08d1 e-flex e-con-boxed e-con e-parent" data-id="3de08d1" data-element_type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-2840281 e-con-full e-flex e-con e-child" data-id="2840281" data-element_type="container">
				</div>
		<div class="elementor-element elementor-element-743954c e-con-full e-flex e-con e-child" data-id="743954c" data-element_type="container">
				<div class="elementor-element elementor-element-123bd75 elementor-widget elementor-widget-html" data-id="123bd75" data-element_type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
			 		</div>
				</div>
				<div class="elementor-element elementor-element-e5f96e1 elementor-widget elementor-widget-text-editor" data-id="e5f96e1" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h4 data-ccp-border-bottom="0px none #000000" data-ccp-padding-bottom="0px" data-ccp-border-between="0px none #000000" data-ccp-padding-between="0px"><b><span data-contrast="auto">Systemy Security Information and Event Management (SIEM) pozwalają na zbieranie i analizowanie informacji na temat aktywności użytkowników, dostępu do systemów i zdarzeń związanych z cyberbezpieczeństwem, aby wykrywać zagrożenia i reagować na incydenty w czasie rzeczywistym. Z kolei informacji o aktywności użytkowników dostarczają systemy typu IAM (Identity and Access Management). Z tego bloga dowiesz się, jak Keycloak może wspierać Twój system SIEM. </span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:0,&quot;335559731&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></h4>						</div>
				</div>
				<div class="elementor-element elementor-element-6d65b13 elementor-widget elementor-widget-text-editor" data-id="6d65b13" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p data-ccp-border-bottom="0px none #000000" data-ccp-padding-bottom="0px" data-ccp-border-between="0px none #000000" data-ccp-padding-between="0px"><span data-contrast="auto">W raporcie o stanie bezpieczeństwa cyberprzestrzeni RP w 2023 roku przygotowanym przez CSIRT GOV, wskazano, że wśród zagrożeń utrzymujących się w cyberprzestrzeni RP w omawianym roku, które miały szczególny wpływ na ocenę ryzyka, należy wymienić ataki socjotechniczne oraz ataki typu brute-force.  Ataki socjotechniczne polegają na manipulacji użytkownikami w celu uzyskania nieautoryzowanego dostępu do systemów, podczas gdy ataki brute-force opierają się na automatycznym próbowaniu różnych kombinacji haseł w celu złamania zabezpieczeń.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:0,&quot;335559731&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></p><p data-ccp-border-bottom="0px none #000000" data-ccp-padding-bottom="0px" data-ccp-border-between="0px none #000000" data-ccp-padding-between="0px"><span data-contrast="auto">Odpowiednie zarządzanie tożsamościami i monitoring logów to kluczowe elementy ochrony przed takimi atakami. Właśnie dlatego integracja Keycloak z SIEM pozwala organizacjom skuteczniej wykrywać zagrożenia i natychmiast na nie reagować.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:0,&quot;335559731&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-458b119 elementor-widget elementor-widget-heading" data-id="458b119" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Dlaczego warto integrować SIEM z Keycloak? </h3>		</div>
				</div>
				<div class="elementor-element elementor-element-df01dde elementor-widget elementor-widget-text-editor" data-id="df01dde" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p data-ccp-border-bottom="0px none #000000" data-ccp-padding-bottom="0px" data-ccp-border-between="0px none #000000" data-ccp-padding-between="0px"><span data-contrast="auto">Każda organizacja korzystająca z systemu SIEM dąży do wykrywania jak największej liczby zagrożeń i możliwie szybkiej reakcji na incydenty. Informacje o tym, kto, skąd i kiedy próbował uzyskać dostęp do systemów, mogą być kluczowe w wykrywaniu ataków oraz nieautoryzowanych prób logowania. Właśnie tutaj Keycloak – popularna platforma IAM typu open source – może znacząco wzbogacić ekosystem SIEM, dostarczając cennych informacji o procesach uwierzytelniania, autoryzacji i zarządzania sesjami.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:0,&quot;335559731&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></p><p data-ccp-border-bottom="0px none #000000" data-ccp-padding-bottom="0px" data-ccp-border-between="0px none #000000" data-ccp-padding-between="0px"><span data-contrast="auto">Keycloak jest rozwijany przez społeczność Red Hat i oferuje kompleksowe rozwiązania do uwierzytelniania i autoryzacji użytkowników w aplikacjach webowych, mobilnych i usługach backendowych. Opisaliśmy go dokładnie tu https://inero-software.com/pl/keycloak/</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:0,&quot;335559731&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-cfe258a elementor-widget elementor-widget-text-editor" data-id="cfe258a" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p data-ccp-border-between="0px none #000000" data-ccp-padding-between="0px"><span data-contrast="auto">Keycloak może dostarczyć danych o:</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:0,&quot;335559731&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></p><ul><li data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Próbach logowania – zarówno udanych, jak i nieudanych, wraz z informacją o źródłowym adresie IP.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></li></ul><ul><li data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">Wymuszeniach resetu hasła i zmianach w polityce dostępów – pozwala to monitorować potencjalne próby przejęcia konta.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></li></ul><ul><li data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">Sesjach użytkowników – w tym nietypowych logowaniach z nowych lokalizacji lub urządzeń.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></li></ul><ul><li data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1"><span data-contrast="auto">Wykrytych zagrożeniach, takich jak podejrzane próby wielokrotnego logowania (np. ataki brute-force, polegające na łamaniu haseł lub kluczy kryptograficznych w celu sprawdzenia wszystkich możliwych kombinacji).</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></li></ul><p data-ccp-border-bottom="0px none #000000" data-ccp-padding-bottom="0px" data-ccp-border-between="0px none #000000" data-ccp-padding-between="0px"><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:0,&quot;335559731&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></p><p data-ccp-border-between="0px none #000000" data-ccp-padding-between="0px"><span data-contrast="auto">Z kolei system SIEM może analizować te dane i korelować je z innymi zdarzeniami, np.:</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:0,&quot;335559731&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></p><ul><li data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Próby logowania z nietypowej lokalizacji powiązane z podejrzanym ruchem sieciowym.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></li></ul><ul><li data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">Wielokrotne błędne logowania pochodzące z jednego IP – sygnał ataku brute-force.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></li></ul><ul><li data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">Nagłe zmiany uprawnień użytkownika powiązane z podejrzanym dostępem do systemu.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></li></ul>						</div>
				</div>
				<div class="elementor-element elementor-element-4686a0e elementor-widget elementor-widget-text-editor" data-id="4686a0e" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span class="TextRun SCXW240654469 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SCXW240654469 BCX0">Jako przykład skutecznej integracji możemy wskazać sytuację, w której</span><span class="NormalTextRun SCXW240654469 BCX0"> użytkownik wielokrotnie wprowadza błędne hasło w krótkim czasie, </span><span class="NormalTextRun SpellingErrorV2Themed SCXW240654469 BCX0">Keycloak</span><span class="NormalTextRun SCXW240654469 BCX0"> rejestruje to jako podejrzaną aktywność. SIEM może połączyć te dane z próbami logowania z różnych lokalizacji i podjąć działania, np. tymczasowo blokując konto lub wymuszając dodatkowe uwierzytelnienie.</span></span><span class="EOP SCXW240654469 BCX0" data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:0,&quot;335559731&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-96d9b04 elementor-widget elementor-widget-heading" data-id="96d9b04" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Jak Keycloak uzupełnia system SIEM? </h3>		</div>
				</div>
				<div class="elementor-element elementor-element-3550cbc elementor-widget elementor-widget-text-editor" data-id="3550cbc" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span class="TextRun SCXW30192237 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SpellingErrorV2Themed SCXW30192237 BCX0">Keycloak</span><span class="NormalTextRun SCXW30192237 BCX0"> i systemy Security Information and Event Management służą różnym celom w zakresie zarządzania tożsamością i bezpieczeństwa IT</span><span class="NormalTextRun SCXW30192237 BCX0">, ale świetnie się uzupełniają. </span></span><span class="EOP SCXW30192237 BCX0" data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:0,&quot;335559731&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-22daa90 elementor-widget elementor-widget-text-editor" data-id="22daa90" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<table style="font-weight: 400;" data-tablestyle="MsoNormalTable" data-tablelook="1184" aria-rowcount="9">
<tbody>
<tr aria-rowindex="1">
<td data-celllook="4369">
<p data-ccp-border-bottom="0px none #000000" data-ccp-padding-bottom="0px" data-ccp-border-between="0px none #000000" data-ccp-padding-between="0px"><b><span data-contrast="auto">Cecha</span></b></p>
</td>
<td data-celllook="4369">
<p data-ccp-border-bottom="0px none #000000" data-ccp-padding-bottom="0px" data-ccp-border-between="0px none #000000" data-ccp-padding-between="0px"><b><span data-contrast="auto">SIEM (Security Information and Event Management)</span></b></p>
</td>
<td data-celllook="4369">
<p data-ccp-border-bottom="0px none #000000" data-ccp-padding-bottom="0px" data-ccp-border-between="0px none #000000" data-ccp-padding-between="0px"><b><span data-contrast="auto">IAM (Identity and Access Management – Keycloak)</span></b></p>
</td>
</tr>
<tr aria-rowindex="2">
<td data-celllook="4369">
<p><b><span data-contrast="auto">Główna funkcja</span></b></p>
</td>
<td data-celllook="4369">
<p><span data-contrast="auto">Monitorowanie i analiza zdarzeń bezpieczeństwa</span></p>
</td>
<td data-celllook="4369">
<p><span data-contrast="auto">Zarządzanie tożsamością i dostępem użytkowników</span></p>
</td>
</tr>
<tr aria-rowindex="3">
<td data-celllook="4369">
<p><b><span data-contrast="auto">Zakres działania</span></b></p>
</td>
<td data-celllook="4369">
<p><span data-contrast="auto">Zbieranie logów, analiza incydentów, wykrywanie zagrożeń</span></p>
</td>
<td data-celllook="4369">
<p><span data-contrast="auto">Uwierzytelnianie, autoryzacja, kontrola dostępu</span></p>
</td>
</tr>
<tr aria-rowindex="4">
<td data-celllook="4369">
<p><b><span data-contrast="auto">Rodzaje danych</span></b></p>
</td>
<td data-celllook="4369">
<p><span data-contrast="auto">Logi systemowe, ruch sieciowy, alerty bezpieczeństwa</span></p>
</td>
<td data-celllook="4369">
<p><span data-contrast="auto">Sesje użytkowników, logi uwierzytelniania, żądania autoryzacji</span></p>
</td>
</tr>
<tr aria-rowindex="5">
<td data-celllook="4369">
<p><b><span data-contrast="auto">Sposób działania</span></b></p>
</td>
<td data-celllook="4369">
<p><span data-contrast="auto">Agregacja i korelacja zdarzeń z wielu źródeł</span></p>
</td>
<td data-celllook="4369">
<p><span data-contrast="auto">Weryfikacja tożsamości użytkowników i ich uprawnień</span></p>
</td>
</tr>
<tr aria-rowindex="6">
<td data-celllook="4369">
<p><b><span data-contrast="auto">Główne zastosowania</span></b></p>
</td>
<td data-celllook="4369">
<p><span data-contrast="auto">Wykrywanie anomalii, reagowanie na incydenty, compliance</span></p>
</td>
<td data-celllook="4369">
<p><span data-contrast="auto">Single Sign-On (SSO), federacja tożsamości, MFA</span></p>
</td>
</tr>
<tr aria-rowindex="7">
<td data-celllook="4369">
<p><b><span data-contrast="auto">Przykłady zagrożeń</span></b></p>
</td>
<td data-celllook="4369">
<p><span data-contrast="auto">Ataki DDoS, malware, eskalacja uprawnień</span></p>
</td>
<td data-celllook="4369">
<p><span data-contrast="auto">Próby ataku brute-force, przejęcie konta, nadużycie uprawnień</span></p>
</td>
</tr>
<tr aria-rowindex="8">
<td data-celllook="4369">
<p><b><span data-contrast="auto">Reakcja na zagrożenia</span></b></p>
</td>
<td data-celllook="4369">
<p><span data-contrast="auto">Generowanie alertów, automatyczne blokady, raportowanie</span></p>
</td>
<td data-celllook="4369">
<p><span data-contrast="auto">Blokowanie kont, wymuszanie MFA, zarządzanie sesjami</span></p>
</td>
</tr>
<tr aria-rowindex="9">
<td data-celllook="4369">
<p><b><span data-contrast="auto">Integracja z innymi systemami</span></b></p>
</td>
<td data-celllook="4369">
<p><span data-contrast="auto">Tak – zbiera logi z systemów SIEM, IDS, firewalli</span></p>
</td>
<td data-celllook="4369">
<p><span data-contrast="auto">Tak – integracja z LDAP, AD, bazami danych, SIEM</span></p>
</td>
</tr>
</tbody>
</table>
						</div>
				</div>
				<div class="elementor-element elementor-element-b2b34d4 elementor-widget elementor-widget-heading" data-id="b2b34d4" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Jak wdrożyć Keycloak? </h3>		</div>
				</div>
				<div class="elementor-element elementor-element-ff3536d elementor-widget elementor-widget-text-editor" data-id="ff3536d" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p data-ccp-border-bottom="0px none #000000" data-ccp-padding-bottom="0px" data-ccp-border-between="0px none #000000" data-ccp-padding-between="0px"><span data-contrast="auto">Integracja Keycloak z systemem SIEM pozwala zwiększyć poziom bezpieczeństwa IT, ponieważ dostarcza dodatkowych informacji o użytkownikach i ich zachowaniu. Dzięki temu organizacje mogą lepiej wykrywać zagrożenia oraz szybciej reagować na incydenty. </span></p><p data-ccp-border-bottom="0px none #000000" data-ccp-padding-bottom="0px" data-ccp-border-between="0px none #000000" data-ccp-padding-between="0px"><span data-contrast="auto">Jeśli zastanawiasz się jak wdrożyć i skonfigurować Keycloak dla swojej organizacji koniecznie przeczytaj artykuły  „Praktyczne wprowadzenie do Keycloak SSO: Od konfiguracji do integracji” </span><a href="https://inero-software.com/pl/praktyczne-wprowadzenie-do-keycloak-sso-od-konfiguracji-do-integracji/?utm_source=chatgpt.com"><span data-contrast="none">https://inero-software.com/pl/praktyczne-wprowadzenie-do-keycloak-sso-od-konfiguracji-do-integracji/?utm_source=chatgpt.com</span></a><span data-contrast="auto"> oraz „Przewodnik integracji Keycloak: Zabezpieczanie punktów końcowych Java Spring za pomocą Keycloak” </span><span style="font-family: Roboto, sans-serif; font-size: 14.25px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; color: var( --e-global-color-text );">https://inero-software.com/pl/zabezpieczanie-punktow-koncowych-java-spring-za-pomoca-keycloak/</span><span style="text-indent: 0em; color: var( --e-global-color-text );" data-contrast="auto"> .</span><span style="text-indent: 0em; color: var( --e-global-color-text );" data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:0,&quot;335559731&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></p><p data-ccp-border-bottom="0px none #000000" data-ccp-padding-bottom="0px" data-ccp-border-between="0px none #000000" data-ccp-padding-between="0px"><span data-contrast="auto">Dostarczają one praktycznych wskazówek dotyczących konfiguracji i integracji Keycloak z różnymi systemami. Co ważne, jedną z kluczowych funkcji Keycloak jest zdolność do integracji z katalogami Lightweight Directory Access Protocol (LDAP), o których pisaliśmy tu </span><a href="https://inero-software.com/pl/integracja-keycloak-i-lightweight-directory-access-protocol/?utm_source=chatgpt.com"><span data-contrast="none">https://inero-software.com/pl/integracja-keycloak-i-lightweight-directory-access-protocol/?utm_source=chatgpt.com</span></a><span data-contrast="auto">. </span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:0,&quot;335559731&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></p><p data-ccp-border-bottom="0px none #000000" data-ccp-padding-bottom="0px" data-ccp-border-between="0px none #000000" data-ccp-padding-between="0px"><span data-contrast="auto">Na rynku dostępnych jest wiele rozwiązań SIEM, dlatego przed podjęciem decyzji warto przeprowadzić audyt bezpieczeństwa w organizacji, aby dokładnie zidentyfikować potencjalne słabe punkty. Wybór i wdrożenie odpowiedniego systemu zarządzania incydentami, wzbogaconego o integrację z Keycloak, pozwoli skuteczniej monitorować zagrożenia i zwiększyć ochronę danych w organizacji.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:0,&quot;335559731&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-de50613 elementor-cta--skin-cover elementor-animated-content elementor-bg-transform elementor-bg-transform-zoom-in elementor-widget elementor-widget-call-to-action" data-id="de50613" data-element_type="widget" data-widget_type="call-to-action.default">
				<div class="elementor-widget-container">
					<div class="elementor-cta">
					<div class="elementor-cta__bg-wrapper">
				<div class="elementor-cta__bg elementor-bg" style="background-image: url(https://inero-software.com/wp-content/uploads/2024/11/tlo-popup-keycloak-1030x731.png);" role="img" aria-label="tło popup keycloak"></div>
				<div class="elementor-cta__bg-overlay"></div>
			</div>
							<div class="elementor-cta__content">
				
									<h2 class="elementor-cta__title elementor-cta__content-item elementor-content-item elementor-animated-item--grow">
						Chcesz wdrożyć Keycloak?					</h2>
				
									<div class="elementor-cta__description elementor-cta__content-item elementor-content-item elementor-animated-item--grow">
						Skorzystaj z naszego doświadczenia. Zrealizowaliśmy liczne wdrożenia dla SME oraz dużych organizacji. Chętnie porozmawiamy o możliwościach współpracy. 					</div>
				
									<div class="elementor-cta__button-wrapper elementor-cta__content-item elementor-content-item elementor-animated-item--grow">
					<a class="elementor-cta__button elementor-button elementor-size-" href="https://calendar.google.com/calendar/u/0/appointments/schedules/AcZssZ3e3C_1YeBkt1uCr_qfOnG_N298UgLFwORcSTXigrPfOk0ls3ok-Uw_dSeGCoLdtYsN13GMm-n-">
						Umów spotkanie 					</a>
					</div>
							</div>
						</div>
				</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-951e079 e-con-full e-flex e-con e-child" data-id="951e079" data-element_type="container">
				</div>
					</div>
				</div>
				</div>
		<p>Artykuł <a href="https://inero-software.com/pl/systemy-security-information-and-event-management-dlaczego-warto-dodac-do-nich-keycloak/">Systemy Security Information and Event Management. Dlaczego warto dodać do nich Keycloak?</a> pochodzi z serwisu <a href="https://inero-software.com/pl">Inero Software - Rozwiązania IT i Konsulting</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6923</post-id>	</item>
		<item>
		<title>Organizacje w Keycloak: Zarządzanie i personalizacja autentykacji</title>
		<link>https://inero-software.com/pl/organizacje-w-keycloak-zarzadzanie-i-personalizacja-autentykacji/</link>
		
		<dc:creator><![CDATA[Marta Kuprasz]]></dc:creator>
		<pubDate>Thu, 05 Dec 2024 13:26:13 +0000</pubDate>
				<category><![CDATA[Firma]]></category>
		<category><![CDATA[Keycloak]]></category>
		<category><![CDATA[bezpieczeństwo]]></category>
		<category><![CDATA[biznes]]></category>
		<category><![CDATA[cyberbezpieczeństwo]]></category>
		<category><![CDATA[digitalizacja]]></category>
		<category><![CDATA[IAM]]></category>
		<category><![CDATA[keycloak]]></category>
		<category><![CDATA[oprogramowanie]]></category>
		<category><![CDATA[organizacje]]></category>
		<category><![CDATA[zarządzanie]]></category>
		<guid isPermaLink="false">https://inero-software.com/?p=6437</guid>

					<description><![CDATA[<p>Organizacja w Keycloak reprezentuje podmiot. Może nim być klient lub partner biznesowy. Funkcja ta pozwala na:</p>
<p>Artykuł <a href="https://inero-software.com/pl/organizacje-w-keycloak-zarzadzanie-i-personalizacja-autentykacji/">Organizacje w Keycloak: Zarządzanie i personalizacja autentykacji</a> pochodzi z serwisu <a href="https://inero-software.com/pl">Inero Software - Rozwiązania IT i Konsulting</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="6437" class="elementor elementor-6437" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-ec3d021 e-flex e-con-boxed e-con e-parent" data-id="ec3d021" data-element_type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-df86188 e-con-full e-flex e-con e-child" data-id="df86188" data-element_type="container">
				</div>
		<div class="elementor-element elementor-element-535eacc e-con-full e-flex e-con e-child" data-id="535eacc" data-element_type="container">
				<div class="elementor-element elementor-element-e8c961e elementor-widget elementor-widget-html" data-id="e8c961e" data-element_type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
			 		</div>
				</div>
				<div class="elementor-element elementor-element-0e4ca7a elementor-widget elementor-widget-text-editor" data-id="0e4ca7a" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h4>Keycloak w wersji 26 przyniósł kilka ciekawych rozwiązań, które mogą z powodzeniem być wykorzystywane w średnich i dużych przedsiębiorstwach. Jednym z nich jest funkcja „Organizacje”, na której skupimy się w poniższym tekście. Omówimy sposób korzystania, konfiguracji oraz to, w jaki sposób może usprawnić zarządzanie użytkownikami w złożonych środowiskach.</h4>						</div>
				</div>
				<div class="elementor-element elementor-element-eda2ae2 elementor-widget elementor-widget-heading" data-id="eda2ae2" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Czym są organizacje w Keycloak?</h3>		</div>
				</div>
				<div class="elementor-element elementor-element-9f9e70f elementor-widget elementor-widget-text-editor" data-id="9f9e70f" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Organizacja w Keycloak reprezentuje podmiot. Może nim być klient lub partner biznesowy. Funkcja ta pozwala na:</p><ul><li>Przypisywanie użytkowników jako członków konkretnej organizacji.</li><li>Definiowanie dedykowanego administratora dla organizacji.</li><li>Ustalanie specyficznych procesów autentykacji dla każdej organizacji.</li></ul>						</div>
				</div>
				<div class="elementor-element elementor-element-608b622 elementor-widget elementor-widget-text-editor" data-id="608b622" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Dzięki zastosowaniu tej funkcji Keycloak umożliwia tworzenie indywidualnych procesów logowania dla różnych klientów w ramach jednego systemu. Na przykład użytkownicy mogą być rozpoznawani na podstawie domeny ich adresu e-mail, co automatycznie kieruje ich do odpowiedniego procesu logowania.</p><p>Funkcjonalność organizacji jest szczególnie istotna w środowiskach korporacyjnych i międzyorganizacyjnych, gdzie zarządzanie użytkownikami jest złożone. Organizacje w Keycloak rozwiązują problem obsługi różnorodnych procesów logowania i personalizacji uwierzytelniania. Przykładowo:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-245a5fb elementor-widget elementor-widget-text-editor" data-id="245a5fb" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<ul><li>Firmy świadczące usługi dla wielu klientów mogą tworzyć różne metody logowania i integracji z systemami klientów.</li><li>Organizacje składające się z wielu jednostek biznesowych mogą niezależnie zarządzać użytkownikami i ich uprawnieniami.</li><li>Systemy wymagające federacji z zewnętrznymi dostawcami tożsamości mogą korzystać z dedykowanych flow autentykacji.</li></ul>						</div>
				</div>
				<div class="elementor-element elementor-element-965d1fa elementor-widget elementor-widget-heading" data-id="965d1fa" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Organizacje vs. Grupy – jakie są różnice?</h3>		</div>
				</div>
				<div class="elementor-element elementor-element-3655c50 elementor-widget elementor-widget-text-editor" data-id="3655c50" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>W Keycloak 26 funkcjonalność organizacji i grup pełni różne role, mimo że oba mechanizmy służą do zarządzania użytkownikami. Organizacje są przeznaczone do obsługi bardziej złożonych scenariuszy, takich jak zarządzanie użytkownikami w kontekście różnych klientów lub partnerów biznesowych. Skupiają się na flow autentykacji oraz federacji tożsamości, umożliwiając precyzyjne dopasowanie procesów uwierzytelniania do potrzeb zewnętrznych podmiotów. Z kolei grupy lepiej sprawdzają się przy organizowaniu użytkowników w ramach jednej aplikacji, na przykład do przypisywania uprawnień lub definiowania dostępu do zasobów.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-f7bc14c elementor-widget elementor-widget-image" data-id="f7bc14c" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
														<a href="https://inero-software.com/pl/najlepsze-praktyki-w-keycloak-zadbaj-o-bezpieczenstwo-w-5-krokach/">
							<img loading="lazy" decoding="async" width="800" height="200" src="https://inero-software.com/wp-content/uploads/2024/11/Najlepsze-praktyki-w-Keycloak.-Zadbaj-o-bezpieczenstwo-w-5-krokach.png" class="attachment-large size-large wp-image-6349" alt="" srcset="https://inero-software.com/wp-content/uploads/2024/11/Najlepsze-praktyki-w-Keycloak.-Zadbaj-o-bezpieczenstwo-w-5-krokach.png 800w, https://inero-software.com/wp-content/uploads/2024/11/Najlepsze-praktyki-w-Keycloak.-Zadbaj-o-bezpieczenstwo-w-5-krokach-300x75.png 300w, https://inero-software.com/wp-content/uploads/2024/11/Najlepsze-praktyki-w-Keycloak.-Zadbaj-o-bezpieczenstwo-w-5-krokach-768x192.png 768w" sizes="(max-width: 800px) 100vw, 800px" data-attachment-id="6349" data-permalink="https://inero-software.com/pl/zarzadzanie-tozsamoscia-i-dostepem-jak-przygotowac-sie-do-wdrozenia-systemu-iam-w-przedsiebiorstwie/najlepsze-praktyki-w-keycloak-zadbaj-o-bezpieczenstwo-w-5-krokach-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2024/11/Najlepsze-praktyki-w-Keycloak.-Zadbaj-o-bezpieczenstwo-w-5-krokach.png" data-orig-size="800,200" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Najlepsze praktyki w Keycloak. Zadbaj o bezpieczeństwo w 5 krokach" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2024/11/Najlepsze-praktyki-w-Keycloak.-Zadbaj-o-bezpieczenstwo-w-5-krokach-300x75.png" data-large-file="https://inero-software.com/wp-content/uploads/2024/11/Najlepsze-praktyki-w-Keycloak.-Zadbaj-o-bezpieczenstwo-w-5-krokach.png" role="button" />								</a>
													</div>
				</div>
				<div class="elementor-element elementor-element-1a23477 elementor-widget elementor-widget-heading" data-id="1a23477" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Konfiguracja organizacji</h3>		</div>
				</div>
				<div class="elementor-element elementor-element-ab30fd0 elementor-widget elementor-widget-text-editor" data-id="ab30fd0" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>W przypadku rozbudowanych systemów uwierzytelniania funkcjonalność organizacji pozwala na bardziej precyzyjne zarządzanie użytkownikami i ich dostępem w ramach określonych struktur. W dalszej części artykułu pokażemy, jak krok po kroku skonfigurować organizacje w Keycloak, od aktywacji tej funkcji w ustawieniach realmu, po przypisywanie użytkowników do konkretnych grup.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-7e086f9 elementor-widget elementor-widget-text-editor" data-id="7e086f9" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><strong>1. Włączenie funkcjonalności organizacji w realmie</strong><br />Aby skorzystać z funkcji organizacji, należy ją aktywować w ramach ustawień realmu:<br />Przejdź do <strong>Realm Settings</strong> &gt; <strong>General</strong>, a następnie włącz opcję <strong>Switch Organizations</strong>.<br />Po aktywacji w menu po lewej stronie pojawi się nowa zakładka: <strong>Organizations</strong>.</p><p><strong>2. Tworzenie nowej organizacji</strong><br />Wejdź w zakładkę <strong>Organizations</strong>, wybierz <strong>Add Organization</strong>, a następnie wypełnij kluczowe pola:</p><ul><li style="list-style-type: none;"><ul><li><strong>Name</strong>: Unikalna nazwa organizacji, wyświetlana w interfejsie.</li><li><strong>Alias</strong>: Unikalny alias używany w URL&#8217;ach (niezmienny po zapisaniu).</li><li><strong>Redirect URL</strong>: Adres, na który użytkownik zostanie przekierowany po rejestracji lub zaakceptowaniu zaproszenia.</li><li><strong>Domains</strong>: Domena używana do rozpoznawania organizacji na podstawie adresu e-mail użytkownika.</li></ul></li></ul>						</div>
				</div>
				<div class="elementor-element elementor-element-49f4953 elementor-widget elementor-widget-text-editor" data-id="49f4953" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><strong>Automatyczne przypisywanie na podstawie domeny:</strong><br />Podczas logowania użytkownik podaje adres e-mail. Keycloak analizuje jego domenę i automatycznie przypisuje go do odpowiedniej organizacji. Dzięki temu użytkownik korzysta z dedykowanego flow autentykacji. Warto zaznaczyć, że Keycloak obsługuje wildcardy w konfiguracji domen, co pozwala na przypisywanie subdomen (np. *.example.com) do tej samej organizacji.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-837a416 elementor-widget elementor-widget-text-editor" data-id="837a416" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><strong> 3. Dodawanie użytkowników do organizacji</strong><br />Użytkowników można przypisać do organizacji na kilka sposobów:</p><ul><li style="list-style-type: none;"><ul><li><strong>Istniejący użytkownicy:</strong> Dodaj użytkowników już obecnych w realmie (<strong>Organizations</strong> &gt; <strong>Members</strong> &gt; <strong>Add Realm User</strong>).</li><li><strong>Zaproszenia:</strong> Wyślij zaproszenie do nowego lub istniejącego użytkownika (<strong>Organizations</strong> &gt; <strong>Members</strong> &gt; <strong>Add Member</strong> &gt; <strong>Invite Member</strong>).</li><li><strong>Identity Provider:</strong> Powiąż dostawcę tożsamości z organizacją, aby automatycznie przypisywać użytkowników (<strong>Organizations</strong> &gt; <strong>Identity Providers</strong> &gt; <strong>Link Identity Provider</strong>).</li></ul></li></ul>						</div>
				</div>
				<div class="elementor-element elementor-element-eb3d203 elementor-widget elementor-widget-text-editor" data-id="eb3d203" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><strong>4. Wyświetlanie użytkowników w organizacji</strong><br />Lista użytkowników organizacji jest dostępna w sekcji <strong>Organizations &gt; [Nazwa Organizacji] &gt; Members</strong>. Informacja o przynależności do organizacji może być zawarta w tokenach jako claim organization. Dzięki temu aplikacje mogą różnicować uprawnienia użytkowników.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-51a908e elementor-widget elementor-widget-text-editor" data-id="51a908e" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><strong>5. Zarządzanie flow autentykacji</strong><br />Organizacje w Keycloak umożliwiają zastosowanie dedykowanych flow autentykacji dla użytkowników.</p><ul><li style="list-style-type: none;"><ul><li><strong>Identity-first login:</strong> Użytkownik podaje najpierw adres e-mail lub nazwę użytkownika, co pozwala Keycloakowi rozpoznać organizację i zastosować dedykowany flow.</li><li><strong>Customizacja flow:</strong> Każda organizacja może mieć własny flow autentykacji, co pozwala dostosować procesy logowania do specyficznych wymagań klientów.</li></ul></li></ul>						</div>
				</div>
				<div class="elementor-element elementor-element-7e49a18 elementor-widget elementor-widget-text-editor" data-id="7e49a18" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Dzięki zastosowaniu funkcji organizacji Keycloak umożliwia zaawansowaną personalizację w systemach IAM, upraszczając jednocześnie zarządzanie użytkownikami i ich dostępem w złożonych środowiskach.</p>						</div>
				</div>
		<div class="elementor-element elementor-element-425fca2 e-grid e-con-full e-con e-child" data-id="425fca2" data-element_type="container">
				<div class="elementor-element elementor-element-c141544 elementor-widget elementor-widget-image" data-id="c141544" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
													<img decoding="async" src="https://inero-software.com/wp-content/uploads/2024/12/Andrzej-kwadrat.png" title="Andrzej kwadrat" alt="Andrzej kwadrat" loading="lazy" />													</div>
				</div>
				<div class="elementor-element elementor-element-bd8139d elementor-widget elementor-widget-text-editor" data-id="bd8139d" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<blockquote><p>Nowa funkcja zarządzania organizacjami w Keycloak umożliwia tworzenie i administrowanie strukturami organizacyjnymi, takimi jak działy czy zespoły, co znacząco może usprawnić procesy takie jak onboarding czy offboarding pracowników oraz kwestie bezpieczeństwa z nimi związane. Przykładowo, podczas onboardingu nowy pracownik może zostać przypisany do odpowiedniej jednostki organizacyjnej, co automatycznie nadaje mu właściwe uprawnienia i dostęp do niezbędnych zasobów, które mogą mieć także charakter tymczasowy (np. dla pracowników tymczasowych). Analogicznie, w przypadku offboardingu usunięcie pracownika z danej jednostki powoduje natychmiastowe cofnięcie jego uprawnień i dostępu do firmowych zasobów, zwiększając tym samym bezpieczeństwo danych. Dzięki tej funkcji zarządzanie dostępami staje się bardziej zautomatyzowane i bezpieczne, co upraszcza procesy kadrowe w organizacji.</p></blockquote><p>dr inż. Andrzej Chybicki CEO Inero Software</p>						</div>
				</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-77ae6ff e-con-full e-flex e-con e-child" data-id="77ae6ff" data-element_type="container">
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-db58e60 e-flex e-con-boxed e-con e-parent" data-id="db58e60" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-7b0bf1b elementor-cta--skin-classic elementor-animated-content elementor-bg-transform elementor-bg-transform-zoom-in elementor-widget elementor-widget-call-to-action" data-id="7b0bf1b" data-element_type="widget" data-widget_type="call-to-action.default">
				<div class="elementor-widget-container">
					<div class="elementor-cta">
					<div class="elementor-cta__bg-wrapper">
				<div class="elementor-cta__bg elementor-bg" style="background-image: url(https://inero-software.com/wp-content/uploads/2024/12/tlo-popup-keycloak-2-1030x731.png);" role="img" aria-label="tło popup keycloak (2)"></div>
				<div class="elementor-cta__bg-overlay"></div>
			</div>
							<div class="elementor-cta__content">
				
									<h2 class="elementor-cta__title elementor-cta__content-item elementor-content-item">
						Napisz do nas					</h2>
				
									<div class="elementor-cta__description elementor-cta__content-item elementor-content-item">
						Zapewniamy kompleksowe wdrożenie i administrację systemami typu IAM 					</div>
				
									<div class="elementor-cta__button-wrapper elementor-cta__content-item elementor-content-item ">
					<a class="elementor-cta__button elementor-button elementor-size-" href="https://inero-software.com/pl/kontakt/">
						Napisz wiadomość 					</a>
					</div>
							</div>
						</div>
				</div>
				</div>
					</div>
				</div>
				</div>
		<p>Artykuł <a href="https://inero-software.com/pl/organizacje-w-keycloak-zarzadzanie-i-personalizacja-autentykacji/">Organizacje w Keycloak: Zarządzanie i personalizacja autentykacji</a> pochodzi z serwisu <a href="https://inero-software.com/pl">Inero Software - Rozwiązania IT i Konsulting</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6437</post-id>	</item>
		<item>
		<title>Sieci neuronowe w przeglądarce: Przewodnik na przykładzie customowej sieci YOLO do wykrywania twarzy</title>
		<link>https://inero-software.com/pl/sieci-neuronowe-w-przegladarce-przewodnik-na-przykladzie-customowej-sieci-yolo-do-wykrywania-twarzy/</link>
		
		<dc:creator><![CDATA[Martyna Mul]]></dc:creator>
		<pubDate>Thu, 10 Oct 2024 11:20:57 +0000</pubDate>
				<category><![CDATA[Firma]]></category>
		<category><![CDATA[ML]]></category>
		<category><![CDATA[NLP]]></category>
		<category><![CDATA[oprogramowanie]]></category>
		<category><![CDATA[optymalizacja procesów biznesowych]]></category>
		<category><![CDATA[repozytorium]]></category>
		<category><![CDATA[sieci neuronowe]]></category>
		<category><![CDATA[yolo]]></category>
		<category><![CDATA[zarządzanie danymi]]></category>
		<guid isPermaLink="false">https://inero-software.com/?p=6230</guid>

					<description><![CDATA[<p>Wraz z rosnącym zapotrzebowaniem na aplikacje działające w czasie rzeczywistym, uruchamianie modeli głębokiego uczenia w przeglądarce staje się coraz bardziej dostępne i wydajne. W tym artykule pokażemy, jak zaimplementować wykrywanie obiektów bezpośrednio w przeglądarce, wykorzystując YOLO (You Only Look Once) oraz TensorFlow.js. Skoncentrujemy się na zastosowaniu wytrenowanego przez nas niestandardowego&#8230;</p>
<p>Artykuł <a href="https://inero-software.com/pl/sieci-neuronowe-w-przegladarce-przewodnik-na-przykladzie-customowej-sieci-yolo-do-wykrywania-twarzy/">Sieci neuronowe w przeglądarce: Przewodnik na przykładzie customowej sieci YOLO do wykrywania twarzy</a> pochodzi z serwisu <a href="https://inero-software.com/pl">Inero Software - Rozwiązania IT i Konsulting</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="6230" class="elementor elementor-6230" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-d225397 e-flex e-con-boxed e-con e-parent" data-id="d225397" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-4df78db elementor-widget elementor-widget-html" data-id="4df78db" data-element_type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
					</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-0827b19 e-flex e-con-boxed e-con e-parent" data-id="0827b19" data-element_type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-afa200d e-con-full e-flex e-con e-child" data-id="afa200d" data-element_type="container">
				</div>
		<div class="elementor-element elementor-element-3302212 e-con-full e-flex e-con e-child" data-id="3302212" data-element_type="container">
				<div class="elementor-element elementor-element-640ca1b elementor-widget elementor-widget-text-editor" data-id="640ca1b" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><strong>Wraz z rosnącym zapotrzebowaniem na aplikacje działające w czasie rzeczywistym, uruchamianie modeli głębokiego uczenia w przeglądarce staje się coraz bardziej dostępne i wydajne. W tym artykule pokażemy, jak zaimplementować wykrywanie obiektów bezpośrednio w przeglądarce, wykorzystując YOLO (You Only Look Once) oraz TensorFlow.js. Skoncentrujemy się na zastosowaniu wytrenowanego przez nas niestandardowego modelu YOLOv8 do wykrywania ludzkich twarzy. Na końcu tego przewodnika dowiesz się, jak skonfigurować i uruchomić model YOLO do wykrywania twarzy za pomocą TensorFlow.js, przetworzyć wyniki i zoptymalizować wydajność – wszystko to bez potrzeby korzystania z serwera czy przetwarzania po stronie backendu.</strong></p>						</div>
				</div>
				<div class="elementor-element elementor-element-aed25a2 elementor-widget elementor-widget-heading" data-id="aed25a2" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Dlaczego warto korzystać z sieci neuronowych w przeglądarce?</h3>		</div>
				</div>
				<div class="elementor-element elementor-element-344fad5 elementor-widget elementor-widget-text-editor" data-id="344fad5" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Uruchamianie sieci neuronowych w przeglądarce ma wiele zalet. Najważniejsze z nich to:</p><ol><li><strong>Niskie opóźnienia</strong>: Wszystko odbywa się po stronie klienta, co eliminuje opóźnienia wynikające z przesyłania danych na serwer i oczekiwania na odpowiedź.</li><li><strong>Większa prywatność</strong>: Wrażliwe dane pozostają na urządzeniu użytkownika, co minimalizuje ryzyko ich naruszenia lub ujawnienia.</li><li><strong> Możliwość użycia offline</strong>: Użytkownicy mogą korzystać z funkcji uczenia maszynowego nawet bez stałego połączenia z internetem.</li><li><strong>Kompatybilność między platformami</strong>: Aplikacja działa na każdym urządzeniu z przeglądarką – niezależnie czy to komputer, tablet, czy smartfon.</li></ol>						</div>
				</div>
				<div class="elementor-element elementor-element-9e13d20 elementor-widget elementor-widget-heading" data-id="9e13d20" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Wybór i przygotowanie sieci neuronowej</h3>		</div>
				</div>
				<div class="elementor-element elementor-element-769829b elementor-widget elementor-widget-text-editor" data-id="769829b" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Przy wyborze sieci neuronowej do implementacji w przeglądarce warto uwzględnić takie czynniki jak rozmiar modelu, szybkość działania, zużycie pamięci oraz kompatybilność z technologiami przeglądarkowymi, np. WebGL. Dla optymalnej wydajności na urządzeniach o ograniczonych zasobach zaleca się stosowanie modeli o rozmiarze poniżej 30 MB. Do odpowiednich modeli należą MobileNetV2, SqueezeNet, EfficientNet oraz wybrane warianty YOLO. My zdecydowaliśmy się na wytrenowany przez nas model YOLOv8 do wykrywania ludzkich twarzy na obrazach.</p><p>Jeśli Twój model przekracza zalecany rozmiar, warto rozważyć techniki optymalizacji, takie jak kwantyzacja (quantization) i przycinanie (pruning). Kwantyzacja zmniejsza precyzję wag modelu, zazwyczaj konwertując wartości zmiennoprzecinkowe 32-bitowe na liczby zmiennoprzecinkowe 16-bitowe lub całkowite 8-bitowe. Przycinanie usuwa zbędne połączenia w sieci neuronowej. Obie metody zmniejszają rozmiar modelu i redukują złożoność obliczeniową, co poprawia szybkość inferencji – szczególnie na urządzeniach takich jak smartfony – choć mogą one nieznacznie wpłynąć na dokładność.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-76a71b3 elementor-widget elementor-widget-heading" data-id="76a71b3" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Optymalizacja YOLOv8 do wykrywania twarzy: wyniki naszego niestandardowego modelu
</h3>		</div>
				</div>
				<div class="elementor-element elementor-element-9111e72 elementor-widget elementor-widget-text-editor" data-id="9111e72" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Nasz model YOLOv8 został wytrenowany na niestandardowym zbiorze danych w celu automatycznego sprawdzania, czy załącznik zawiera wyraźne zdjęcie ludzkiej twarzy, skierowanej na wprost i niezasłoniętej, np. przez maskę. Taka funkcjonalność jest szczególnie przydatna w systemach obiegu dokumentów, gdzie weryfikacja tożsamości wymaga widoczności twarzy. Zbiór danych składał się z 1500 obrazów, z czego 1200 wykorzystano do treningu, a 300 do walidacji. Dataset zawierał zdjęcia twarzy fotografowanych z różnych kątów, twarzy częściowo zasłoniętych oraz zdjęcia innych obiektów. Dzięki treningowi model nauczył się skutecznie wykrywać twarze spełniające wymagane kryteria. Poniższe przykłady ilustrują, jak model działa w praktyce. Dwie twarze po lewej stronie zostały poprawnie wykryte, podczas gdy dwie po prawej nie zostały rozpoznane, ponieważ były częściowo zasłonięte:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-fd798a3 elementor-widget elementor-widget-image" data-id="fd798a3" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
													<img loading="lazy" decoding="async" width="934" height="258" src="https://inero-software.com/wp-content/uploads/2024/10/9102024gr1.jpg" class="attachment-large size-large wp-image-6206" alt="" srcset="https://inero-software.com/wp-content/uploads/2024/10/9102024gr1.jpg 934w, https://inero-software.com/wp-content/uploads/2024/10/9102024gr1-300x83.jpg 300w, https://inero-software.com/wp-content/uploads/2024/10/9102024gr1-768x212.jpg 768w" sizes="(max-width: 934px) 100vw, 934px" data-attachment-id="6206" data-permalink="https://inero-software.com/running-ai-in-client-side-real-time-face-detection-in-the-browser-using-yolo-and-tensorflow-js-use-case-study/9102024gr1/" data-orig-file="https://inero-software.com/wp-content/uploads/2024/10/9102024gr1.jpg" data-orig-size="934,258" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="9102024gr1" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2024/10/9102024gr1-300x83.jpg" data-large-file="https://inero-software.com/wp-content/uploads/2024/10/9102024gr1.jpg" role="button" />													</div>
				</div>
				<div class="elementor-element elementor-element-34bbb24 elementor-widget elementor-widget-heading" data-id="34bbb24" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<p class="elementor-heading-title elementor-size-default">(source of images: https://www.kaggle.com/datasets/ashwingupta3012/human-faces, https://www.kaggle.com/datasets/andrewmvd/face-mask-detection) </p>		</div>
				</div>
				<div class="elementor-element elementor-element-12bfcb4 elementor-widget elementor-widget-text-editor" data-id="12bfcb4" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Wyniki wnioskowania na czterech przykładach – dwie twarze po lewej stronie zostały poprawnie wykryte, natomiast dwie po prawej nie, ponieważ były częściowo zasłonięte.</p><p>Jako bazowy model dla naszego projektu wybraliśmy YOLOv8s (small), co dało model o rozmiarze 44 MB, osiągający 99,9% precyzji (ang. precision) oraz 99,1% czułości (ang. recall) na naszym niestandardowym zbiorze danych walidacyjnych. W celu optymalizacji przetestowaliśmy również mniejszy model bazowy, YOLOv8n (nano), oraz przeanalizowaliśmy efekty kwantyzacji. Trening z modelem YOLOv8n dał model o rozmiarze zaledwie 12 MB, przy niemal identycznych wynikach – 99,7% precyzji i 99,1% czułości. Następnie przeprowadziliśmy kwantyzację obu modeli, a ich rozmiary oraz dokładność po kwantyzacji zostały zaprezentowane w poniższej tabeli:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-859298c elementor-widget elementor-widget-text-editor" data-id="859298c" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<table class=" aligncenter" style="font-weight: 400;" data-tablestyle="MsoNormalTable" data-tablelook="1568" aria-rowcount="4"><tbody><tr aria-rowindex="1"><td colspan="1" rowspan="2" data-celllook="69905"><p><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559740&quot;:360}"> </span></p></td><td colspan="3" data-celllook="69905"><p><strong>Model bazowy</strong></p><p> </p></td><td colspan="3" data-celllook="69905"><p><strong>Model kwantyzowany 16-bitowy</strong></p><p> </p></td></tr><tr aria-rowindex="2"><td data-celllook="69905"><p><b><span data-contrast="auto">Rozmiar</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559740&quot;:360}"> </span></p></td><td data-celllook="69905"><p><b>Precyzja</b></p></td><td data-celllook="69905"><p><b><span data-contrast="auto">Recall</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559740&quot;:360}"> </span></p></td><td data-celllook="69905"><p><b><span data-contrast="auto">Rozmiar</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559740&quot;:360}"> </span></p></td><td data-celllook="69905"><p><b>Precyzja</b></p></td><td data-celllook="69905"><p><b><span data-contrast="auto">Recall</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559740&quot;:360}"> </span></p></td></tr><tr aria-rowindex="3"><td data-celllook="69905"><p><b><span data-contrast="auto">YOLOv8 small</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559740&quot;:360}"> </span></p></td><td data-celllook="69905"><p><b><span data-contrast="auto">44 MB</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559740&quot;:360}"> </span></p></td><td data-celllook="69905"><p><span data-contrast="auto">0.999</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559740&quot;:360}"> </span></p></td><td data-celllook="69905"><p><span data-contrast="auto">0.991</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559740&quot;:360}"> </span></p></td><td data-celllook="69905"><p><span data-contrast="auto">22 MB</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559740&quot;:360}"> </span></p></td><td data-celllook="69905"><p><span data-contrast="auto">0.997</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559740&quot;:360}"> </span></p></td><td data-celllook="69905"><p><span data-contrast="auto">0.991</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559740&quot;:360}"> </span></p></td></tr><tr aria-rowindex="4"><td data-celllook="69905"><p><b><span data-contrast="auto">YOLOv8 nano</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559740&quot;:360}"> </span></p></td><td data-celllook="69905"><p><span data-contrast="auto">12 MB</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559740&quot;:360}"> </span></p></td><td data-celllook="69905"><p><span data-contrast="auto">0.997</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559740&quot;:360}"> </span></p></td><td data-celllook="69905"><p><span data-contrast="auto">0.991</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559740&quot;:360}"> </span></p></td><td data-celllook="69905"><p><b><span data-contrast="auto">6 MB</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559740&quot;:360}"> </span></p></td><td data-celllook="69905"><p><span data-contrast="auto">0.989</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559740&quot;:360}"> </span></p></td><td data-celllook="69905"><p><span data-contrast="auto">0.991</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559740&quot;:360}"> </span></p></td></tr></tbody></table>						</div>
				</div>
				<div class="elementor-element elementor-element-a7be2ba elementor-widget elementor-widget-text-editor" data-id="a7be2ba" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><strong>Uwaga: </strong>Czułość mierzy, ile rzeczywistych pozytywnych próbek zostało poprawnie zidentyfikowanych (tutaj: ile twarzy zostało poprawnie wykrytych), natomiast precyzja wskazuje, ile próbek zidentyfikowanych przez model jako pozytywne było faktycznie pozytywnych (tutaj: ile obiektów wykrytych przez model to faktycznie ludzkie twarze). W idealnym przypadku oba wskaźniki wynoszą 1.</p><p>W naszym przykładzie, zastosowanie mniejszego modelu bazowego wraz z kwantyzacją zmniejszyło dokładność o mniej niż 1%, jednocześnie redukując rozmiar modelu z 44 MB do zaledwie 6 MB.</p><p>Poniżej przedstawiamy kilka przykładowych zdjęć, które pokazują, jak działają dwa modele: YOLOv8s i YOLOv8n z kwantyzacją.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-ba300a9 elementor-widget elementor-widget-image" data-id="ba300a9" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
													<img loading="lazy" decoding="async" width="934" height="307" src="https://inero-software.com/wp-content/uploads/2024/10/9102024gr2.jpg" class="attachment-large size-large wp-image-6208" alt="" srcset="https://inero-software.com/wp-content/uploads/2024/10/9102024gr2.jpg 934w, https://inero-software.com/wp-content/uploads/2024/10/9102024gr2-300x99.jpg 300w, https://inero-software.com/wp-content/uploads/2024/10/9102024gr2-768x252.jpg 768w, https://inero-software.com/wp-content/uploads/2024/10/9102024gr2-913x300.jpg 913w" sizes="(max-width: 934px) 100vw, 934px" data-attachment-id="6208" data-permalink="https://inero-software.com/running-ai-in-client-side-real-time-face-detection-in-the-browser-using-yolo-and-tensorflow-js-use-case-study/9102024gr2/" data-orig-file="https://inero-software.com/wp-content/uploads/2024/10/9102024gr2.jpg" data-orig-size="934,307" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="9102024gr2" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2024/10/9102024gr2-300x99.jpg" data-large-file="https://inero-software.com/wp-content/uploads/2024/10/9102024gr2.jpg" role="button" />													</div>
				</div>
				<div class="elementor-element elementor-element-3d14285 elementor-widget elementor-widget-text-editor" data-id="3d14285" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Wyniki inferencji z modelem YOLOv8s, bez kwantyzacji (o rozmiarze 44 MB):</p><p><span class="TextRun SCXW46079478 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW46079478 BCX0">(source of images: </span><span class="NormalTextRun SCXW46079478 BCX0">https://www.kaggle.com/datasets/ashwingupta3012/human-faces</span><span class="NormalTextRun SCXW46079478 BCX0">).</span></span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-e4f1955 elementor-widget elementor-widget-image" data-id="e4f1955" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
													<img loading="lazy" decoding="async" width="934" height="313" src="https://inero-software.com/wp-content/uploads/2024/10/9102024gr3.jpg" class="attachment-large size-large wp-image-6207" alt="" srcset="https://inero-software.com/wp-content/uploads/2024/10/9102024gr3.jpg 934w, https://inero-software.com/wp-content/uploads/2024/10/9102024gr3-300x101.jpg 300w, https://inero-software.com/wp-content/uploads/2024/10/9102024gr3-768x257.jpg 768w, https://inero-software.com/wp-content/uploads/2024/10/9102024gr3-895x300.jpg 895w" sizes="(max-width: 934px) 100vw, 934px" data-attachment-id="6207" data-permalink="https://inero-software.com/running-ai-in-client-side-real-time-face-detection-in-the-browser-using-yolo-and-tensorflow-js-use-case-study/9102024gr3/" data-orig-file="https://inero-software.com/wp-content/uploads/2024/10/9102024gr3.jpg" data-orig-size="934,313" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="9102024gr3" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2024/10/9102024gr3-300x101.jpg" data-large-file="https://inero-software.com/wp-content/uploads/2024/10/9102024gr3.jpg" role="button" />													</div>
				</div>
				<div class="elementor-element elementor-element-8185505 elementor-widget elementor-widget-text-editor" data-id="8185505" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Wyniki inferencji z modelem YOLOv8n po kwantyzacji 16-bitowej (o rozmiarze 6 MB). Różnica w poziomie ufności jest minimalna, natomiast położenie wykrytych obiektów pozostało takie samo.</p><p>Przetestowaliśmy wydajność dwóch modeli — YOLOv8s (44 MB) i YOLOv8n po kwantyzacji 16-bitowej (6 MB) — na trzech różnych procesorach. Mniejszy model, YOLOv8n, konsekwentnie przewyższał swój większy odpowiednik pod względem czasu wczytania modelu oraz szybkości pojedynczej inferencji. Szczegółowe dane dotyczące wydajności zostały podsumowane w tabeli poniżej.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-bba7a47 elementor-widget elementor-widget-text-editor" data-id="bba7a47" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<table style="font-weight: 400;" data-tablestyle="MsoTableGrid" data-tablelook="1696" aria-rowcount="5"><tbody><tr aria-rowindex="1"><td colspan="1" rowspan="2" data-celllook="0"><p><span data-ccp-props="{}"> </span></p></td><td colspan="3" data-celllook="0"><p><strong>Ładowanie modelu</strong></p></td><td colspan="3" data-celllook="0"><p><strong>Pojedyncze wnioskowanie</strong></p></td></tr><tr aria-rowindex="2"><td data-celllook="0"><p><b><span data-contrast="auto">CPU 1</span></b><span data-ccp-props="{}"> </span></p></td><td data-celllook="0"><p><b><span data-contrast="auto">CPU 2</span></b><span data-ccp-props="{}"> </span></p></td><td data-celllook="0"><p><b><span data-contrast="auto">CPU 3</span></b><span data-ccp-props="{}"> </span></p></td><td data-celllook="0"><p><b><span data-contrast="auto">CPU 1</span></b><span data-ccp-props="{}"> </span></p></td><td data-celllook="0"><p><b><span data-contrast="auto">CPU 2</span></b><span data-ccp-props="{}"> </span></p></td><td data-celllook="0"><p><b><span data-contrast="auto">CPU 3</span></b><span data-ccp-props="{}"> </span></p></td></tr><tr aria-rowindex="3"><td data-celllook="0"><p><b><span data-contrast="auto">YOLOv8 small</span></b><span data-ccp-props="{}"> </span></p></td><td data-celllook="0"><p><span data-contrast="auto">1050 ms</span><span data-ccp-props="{}"> </span></p></td><td data-celllook="0"><p><span data-contrast="auto">3700 ms</span><span data-ccp-props="{}"> </span></p></td><td data-celllook="0"><p><span data-contrast="auto">4200 ms</span><span data-ccp-props="{}"> </span></p></td><td data-celllook="0"><p><span data-contrast="auto">21 ms</span><span data-ccp-props="{}"> </span></p></td><td data-celllook="0"><p><span data-contrast="auto">117.5 ms</span><span data-ccp-props="{}"> </span></p></td><td data-celllook="0"><p><span data-contrast="auto">196.5 ms</span><span data-ccp-props="{}"> </span></p></td></tr><tr aria-rowindex="4"><td data-celllook="0"><p><b><span data-contrast="auto">YOLOv8 nano 16-bit</span></b><span data-ccp-props="{}"> </span></p></td><td data-celllook="0"><p><span data-contrast="auto">980 ms</span><span data-ccp-props="{}"> </span></p></td><td data-celllook="0"><p><span data-contrast="auto">3200 ms</span><span data-ccp-props="{}"> </span></p></td><td data-celllook="0"><p><span data-contrast="auto">3700 ms</span><span data-ccp-props="{}"> </span></p></td><td data-celllook="0"><p><span data-contrast="auto">16 ms</span><span data-ccp-props="{}"> </span></p></td><td data-celllook="0"><p><span data-contrast="auto">112.5 ms</span><span data-ccp-props="{}"> </span></p></td><td data-celllook="0"><p><span data-contrast="auto">189 ms</span><span data-ccp-props="{}"> </span></p></td></tr><tr aria-rowindex="5"><td data-celllook="0"><p>Przyspieszenie</p></td><td data-celllook="0"><p><span data-contrast="auto">6.7 %</span><span data-ccp-props="{}"> </span></p></td><td data-celllook="0"><p><span data-contrast="auto">13.5 %</span><span data-ccp-props="{}"> </span></p></td><td data-celllook="0"><p><span data-contrast="auto">11.9 %</span><span data-ccp-props="{}"> </span></p></td><td data-celllook="0"><p><span data-contrast="auto">23.8 %</span><span data-ccp-props="{}"> </span></p></td><td data-celllook="0"><p><span data-contrast="auto">4.2 %</span><span data-ccp-props="{}"> </span></p></td><td data-celllook="0"><p><span data-contrast="auto">3.8 %</span><span data-ccp-props="{}"> </span></p></td></tr></tbody></table>						</div>
				</div>
				<div class="elementor-element elementor-element-cc12989 elementor-widget elementor-widget-text-editor" data-id="cc12989" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Oprócz czasu wczytania modelu i inferencji, istotnym czynnikiem do rozważenia jest również czas pobrania modelu, który nie został uwzględniony w tabeli. Czas ten jest bezpośrednio proporcjonalny do rozmiaru modelu i w znacznym stopniu zależy od prędkości połączenia internetowego użytkownika.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-d6f4734 elementor-widget elementor-widget-heading" data-id="d6f4734" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Praktyczna implementacja krok po kroku</h3>		</div>
				</div>
				<div class="elementor-element elementor-element-e00fb33 elementor-widget elementor-widget-text-editor" data-id="e00fb33" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Aby wdrożyć model uczenia maszynowego w przeglądarce, skorzystamy z TensorFlow.js — popularnej biblioteki, która umożliwia uruchamianie wytrenowanych modeli lub całkowite trenowanie nowych modeli bezpośrednio w przeglądarce. W tym przewodniku skupimy się na wdrożeniu wytrenowanego modelu YOLOv8 do wykrywania twarzy. Poniżej znajdziesz instrukcję, jak krok po kroku skonfigurować środowisko i uruchomić model z TensorFlow.js.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-d18e614 elementor-widget elementor-widget-heading" data-id="d18e614" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h4 class="elementor-heading-title elementor-size-default">1. Instalacja TensorFlow.js </h4>		</div>
				</div>
				<div class="elementor-element elementor-element-cb9241f elementor-widget elementor-widget-text-editor" data-id="cb9241f" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Najłatwiejszą metodą instalacji Tensorflow.js jest użycie npm:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-c5deef0 elementor-widget elementor-widget-text-editor" data-id="c5deef0" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<pre>npm install @tensorflow/tfjs </pre>						</div>
				</div>
				<div class="elementor-element elementor-element-cd338d1 elementor-widget elementor-widget-heading" data-id="cd338d1" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h4 class="elementor-heading-title elementor-size-default">2. Wczytanie modelu</h4>		</div>
				</div>
				<div class="elementor-element elementor-element-d54d572 elementor-widget elementor-widget-text-editor" data-id="d54d572" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Ponieważ używamy biblioteki TensorFlow.js, musisz przekonwertować swój model na format TensorFlow.js (Tf.js). W przypadku modeli YOLO, twórcy Ultralytics udostępnili łatwy sposób na dokonanie tego za pomocą prostego polecenia:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-8acf4f8 elementor-widget elementor-widget-text-editor" data-id="8acf4f8" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<pre><span class="TextRun Highlight SCXW164933469 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW164933469 BCX0">yolo </span></span><span class="TextRun Highlight SCXW164933469 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW164933469 BCX0">export</span></span><span class="TextRun Highlight SCXW164933469 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW164933469 BCX0"> model=path/to/best.pt format=tfjs</span></span><span class="EOP SCXW164933469 BCX0" data-ccp-props="{&quot;134245417&quot;:false,&quot;201341983&quot;:0,&quot;335559740&quot;:360,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></pre>						</div>
				</div>
				<div class="elementor-element elementor-element-a9c3625 elementor-widget elementor-widget-text-editor" data-id="a9c3625" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Po konwersji Twój model zostanie zapisany jako pliki binarne wraz z plikiem JSON o nazwie <strong>model.json</strong>. Wówczas możesz wczytać model korzystając z funkcji <strong>tf.loadGraphModel()</strong>. Poniżej znajdziesz przykład implementacji. Zwróć uwagę na dodatkowy etap &#8222;rozgrzewki&#8221; modelu, poprzez wykonanie jednokrotnej inferencji na losowych danych wejściowych. Ten krok poprawi wydajność modelu przy kolejnej inferencji.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-8ae265d elementor-widget elementor-widget-text-editor" data-id="8ae265d" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<pre><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0">export</span></span> <span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0">async</span></span> <span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0">function</span></span> <span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0">loadModel</span></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0">(modelPath) {</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW28304209 BCX0"><span class="SCXW28304209 BCX0"> </span><br class="SCXW28304209 BCX0" /></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0">  </span></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0">try</span></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0"> {</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW28304209 BCX0"><span class="SCXW28304209 BCX0"> </span><br class="SCXW28304209 BCX0" /></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0">    </span></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0">// Load the model using a URL</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW28304209 BCX0"><span class="SCXW28304209 BCX0"> </span><br class="SCXW28304209 BCX0" /></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0">    </span></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0">const</span></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0"> model = </span></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0">await</span></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0"> tf.loadGraphModel(</span></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0">`${modelPath}/model.json`</span></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0">);</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW28304209 BCX0"><span class="SCXW28304209 BCX0"> </span><br class="SCXW28304209 BCX0" /></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0">    </span></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0">// Warm up the model</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW28304209 BCX0"><span class="SCXW28304209 BCX0"> </span><br class="SCXW28304209 BCX0" /></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0">    </span></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0">const</span></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0"> dummyInput = tf.ones(model.inputs[</span></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0">0</span></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0">].shape);</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW28304209 BCX0"><span class="SCXW28304209 BCX0"> </span><br class="SCXW28304209 BCX0" /></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0">    </span></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0">await</span></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0"> model.execute(dummyInput);</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW28304209 BCX0"><span class="SCXW28304209 BCX0"> </span><br class="SCXW28304209 BCX0" /></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0">    </span></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0">return</span></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0"> model;</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW28304209 BCX0"><span class="SCXW28304209 BCX0"> </span><br class="SCXW28304209 BCX0" /></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0">  } </span></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0">catch</span></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0"> (error) {</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW28304209 BCX0"><span class="SCXW28304209 BCX0"> </span><br class="SCXW28304209 BCX0" /></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0">    </span></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0">throw</span></span> <span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0">new</span></span> <span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0">Error</span></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0">(</span></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0">`Failed to load model: ${error.message}`</span></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0">);</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW28304209 BCX0"><span class="SCXW28304209 BCX0"> </span><br class="SCXW28304209 BCX0" /></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0">  }</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW28304209 BCX0"><span class="SCXW28304209 BCX0"> </span><br class="SCXW28304209 BCX0" /></span><span class="TextRun Highlight SCXW28304209 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW28304209 BCX0">}</span></span><span class="EOP SCXW28304209 BCX0" data-ccp-props="{&quot;134245417&quot;:false,&quot;201341983&quot;:0,&quot;335559740&quot;:360,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></pre>						</div>
				</div>
				<div class="elementor-element elementor-element-4fb7ba0 elementor-widget elementor-widget-heading" data-id="4fb7ba0" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h4 class="elementor-heading-title elementor-size-default">3. Przygotowanie danych wejściowych</h4>		</div>
				</div>
				<div class="elementor-element elementor-element-bcd536f elementor-widget elementor-widget-text-editor" data-id="bcd536f" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Przed uruchomieniem modelu musimy odpowiednio przygotować obraz wejściowy. Modele YOLO oczekują obrazów o określonym rozmiarze, takim samym jaki został użyty podczas treningu sieci. Zamiast jednak zmieniać rozmiar obrazu (np. funkcją resize()), zalecamy bardziej zaawansowaną metodę przetwarzania obrazu, która zachowuje proporcje i stosuje wypełnienie (letterbox padding). Takie podejście jest zgodne z przetwarzaniem stosowanym przez Ultralytics podczas trenowania modelu YOLO i zapewni najlepszą skuteczność.</p><p>Poniższa funkcja skaluje obraz tak, aby największy jego wymiar zgadzał się z tym oczekiwanym przez model, dodaje wypełnienie aby dopasować drugi wymiar obrazu (jeżeli trzeba) i normalizuje obraz wejściowy:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-dd83945 elementor-widget elementor-widget-text-editor" data-id="dd83945" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<pre><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">function</span></span> <span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">preprocessImage</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">(base64Image, imgSize) {</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW147374849 BCX0"><span class="SCXW147374849 BCX0"> </span><br class="SCXW147374849 BCX0" /></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">  </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">const</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0"> image = </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">new</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0"> Image();</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW147374849 BCX0"><span class="SCXW147374849 BCX0"> </span><br class="SCXW147374849 BCX0" /></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">  image.src = base64Image;</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW147374849 BCX0"><span class="SCXW147374849 BCX0"> </span><br class="SCXW147374849 BCX0" /></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">  </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">const</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0"> canvas = </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">document</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">.createElement(</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">'canvas'</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">);</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW147374849 BCX0"><span class="SCXW147374849 BCX0"> </span><br class="SCXW147374849 BCX0" /></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">  canvas.width = image.width;</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW147374849 BCX0"><span class="SCXW147374849 BCX0"> </span><br class="SCXW147374849 BCX0" /></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">  canvas.height = image.height;</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW147374849 BCX0"><span class="SCXW147374849 BCX0"> </span><br class="SCXW147374849 BCX0" /></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">  </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">const</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0"> ctx = canvas.getContext(</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">'2d'</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">);</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW147374849 BCX0"><span class="SCXW147374849 BCX0"> </span><br class="SCXW147374849 BCX0" /></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">  ctx.drawImage(image, </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">0</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">, </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">0</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">, image.width, image.height);</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW147374849 BCX0"><span class="SCXW147374849 BCX0"> </span><br class="SCXW147374849 BCX0" /></span><span class="LineBreakBlob BlobObject DragDrop SCXW147374849 BCX0"><span class="SCXW147374849 BCX0"> </span><br class="SCXW147374849 BCX0" /></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">  </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">// Convert canvas image to a tensor</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW147374849 BCX0"><span class="SCXW147374849 BCX0"> </span><br class="SCXW147374849 BCX0" /></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">  </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">let</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0"> imgTensor = tf.browser.fromPixels(canvas);</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW147374849 BCX0"><span class="SCXW147374849 BCX0"> </span><br class="SCXW147374849 BCX0" /></span><span class="LineBreakBlob BlobObject DragDrop SCXW147374849 BCX0"><span class="SCXW147374849 BCX0"> </span><br class="SCXW147374849 BCX0" /></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">  </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">// Determine rescale factor</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW147374849 BCX0"><span class="SCXW147374849 BCX0"> </span><br class="SCXW147374849 BCX0" /></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">  </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">const</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0"> xFactor = image.width / imgSize;</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW147374849 BCX0"><span class="SCXW147374849 BCX0"> </span><br class="SCXW147374849 BCX0" /></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">  </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">const</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0"> yFactor = image.height / imgSize;</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW147374849 BCX0"><span class="SCXW147374849 BCX0"> </span><br class="SCXW147374849 BCX0" /></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">  </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">const</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0"> factor = </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">Math</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">.max(xFactor, yFactor);</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW147374849 BCX0"><span class="SCXW147374849 BCX0"> </span><br class="SCXW147374849 BCX0" /></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">  </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">const</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0"> newWidth = </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">Math</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">.round(image.width / factor);</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW147374849 BCX0"><span class="SCXW147374849 BCX0"> </span><br class="SCXW147374849 BCX0" /></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">  </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">const</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0"> newHeight = </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">Math</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">.round(image.height / factor);</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW147374849 BCX0"><span class="SCXW147374849 BCX0"> </span><br class="SCXW147374849 BCX0" /></span><span class="LineBreakBlob BlobObject DragDrop SCXW147374849 BCX0"><span class="SCXW147374849 BCX0"> </span><br class="SCXW147374849 BCX0" /></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">  </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">// Resize to expected input shape </span></span><span class="LineBreakBlob BlobObject DragDrop SCXW147374849 BCX0"><span class="SCXW147374849 BCX0"> </span><br class="SCXW147374849 BCX0" /></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">  imgTensor = tf.image.resizeBilinear(imgTensor, [newHeight, newWidth]);</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW147374849 BCX0"><span class="SCXW147374849 BCX0"> </span><br class="SCXW147374849 BCX0" /></span><span class="LineBreakBlob BlobObject DragDrop SCXW147374849 BCX0"><span class="SCXW147374849 BCX0"> </span><br class="SCXW147374849 BCX0" /></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">  </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">// Add padding</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW147374849 BCX0"><span class="SCXW147374849 BCX0"> </span><br class="SCXW147374849 BCX0" /></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">  </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">const</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0"> xPad = (imgSize - newWidth) / </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">2</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">;</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW147374849 BCX0"><span class="SCXW147374849 BCX0"> </span><br class="SCXW147374849 BCX0" /></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">  </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">const</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0"> yPad = (imgSize - newHeight) / </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">2</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">;</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW147374849 BCX0"><span class="SCXW147374849 BCX0"> </span><br class="SCXW147374849 BCX0" /></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">  </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">const</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0"> top = </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">Math</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">.floor(yPad);</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW147374849 BCX0"><span class="SCXW147374849 BCX0"> </span><br class="SCXW147374849 BCX0" /></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">  </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">co</span><span class="NormalTextRun SCXW147374849 BCX0">nst</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0"> bottom = </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">Math</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">.ceil(yPad);</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW147374849 BCX0"><span class="SCXW147374849 BCX0"> </span><br class="SCXW147374849 BCX0" /></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">  </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">const</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0"> left = </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">Math</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">.floor(xPad);</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW147374849 BCX0"><span class="SCXW147374849 BCX0"> </span><br class="SCXW147374849 BCX0" /></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">  </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">const</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0"> right = </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">Math</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">.ceil(xPad);</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW147374849 BCX0"><span class="SCXW147374849 BCX0"> </span><br class="SCXW147374849 BCX0" /></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">  imgTensor = tf.pad(imgTensor, [[top, bottom], [left, right], [</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">0</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">, </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">0</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">]], </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">114</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">);</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW147374849 BCX0"><span class="SCXW147374849 BCX0"> </span><br class="SCXW147374849 BCX0" /></span><span class="LineBreakBlob BlobObject DragDrop SCXW147374849 BCX0"><span class="SCXW147374849 BCX0"> </span><br class="SCXW147374849 BCX0" /></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">  </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">// Normalize pixel values</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW147374849 BCX0"><span class="SCXW147374849 BCX0"> </span><br class="SCXW147374849 BCX0" /></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">  imgTensor = imgTensor.div(</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">255.0</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">).expandDims(</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">0</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">); </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">// Add batch dimension</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW147374849 BCX0"><span class="SCXW147374849 BCX0"> </span><br class="SCXW147374849 BCX0" /></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">  </span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">return</span></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0"> { imgTensor, left, top, factor };</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW147374849 BCX0"><span class="SCXW147374849 BCX0"> </span><br class="SCXW147374849 BCX0" /></span><span class="LineBreakBlob BlobObject DragDrop SCXW147374849 BCX0"><span class="SCXW147374849 BCX0"> </span><br class="SCXW147374849 BCX0" /></span><span class="TextRun Highlight SCXW147374849 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW147374849 BCX0">}</span></span><span class="EOP SCXW147374849 BCX0" data-ccp-props="{&quot;134245417&quot;:false,&quot;201341983&quot;:0,&quot;335559740&quot;:360,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></pre>						</div>
				</div>
				<div class="elementor-element elementor-element-183b6cf elementor-widget elementor-widget-heading" data-id="183b6cf" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h4 class="elementor-heading-title elementor-size-default">4. Uruchom inferencję modelu</h4>		</div>
				</div>
				<div class="elementor-element elementor-element-639b754 elementor-widget elementor-widget-text-editor" data-id="639b754" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Po załadowaniu modelu i przetworzeniu danych wejściowych, wykonanie inferencji odbywa się za pomocą tej linii kodu:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-25f3c6b elementor-widget elementor-widget-text-editor" data-id="25f3c6b" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<pre><span class="TextRun Highlight SCXW75192197 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW75192197 BCX0">const</span></span><span class="TextRun Highlight SCXW75192197 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW75192197 BCX0"> prediction = </span></span><span class="TextRun Highlight SCXW75192197 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW75192197 BCX0">await</span></span><span class="TextRun Highlight SCXW75192197 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW75192197 BCX0"> model.execute(inputTensor);</span></span><span class="EOP SCXW75192197 BCX0" data-ccp-props="{&quot;134245417&quot;:false,&quot;201341983&quot;:0,&quot;335559740&quot;:360,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></pre>						</div>
				</div>
				<div class="elementor-element elementor-element-0830169 elementor-widget elementor-widget-heading" data-id="0830169" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h4 class="elementor-heading-title elementor-size-default">5. Przetwarzanie wyników modelu</h4>		</div>
				</div>
				<div class="elementor-element elementor-element-aeca953 elementor-widget elementor-widget-text-editor" data-id="aeca953" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Wynik sieci YOLO to tensor, który należy odpowiednio zinterpretować. Poniżej znajdują się kroki w naszej funkcji <span style="color: #008000;">postprocessInferenceResults()</span>, które pozwalają na wyodrębnienie współrzędnych wszystkich wykrytych obiektów:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-04c9010 elementor-widget elementor-widget-text-editor" data-id="04c9010" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<pre data-ccp-border-bottom="0px none #000000" data-ccp-padding-bottom="0px" data-ccp-border-between="0px none #000000" data-ccp-padding-between="0px"><span data-contrast="none">const</span><span data-contrast="none"> results = prediction.transpose([</span><span data-contrast="none">0</span><span data-contrast="none">, </span><span data-contrast="none">2</span><span data-contrast="none">, </span><span data-contrast="none">1</span><span data-contrast="none">]); </span> <br /><span data-contrast="none">const</span><span data-contrast="none"> numClass = </span><span data-contrast="none">1</span><span data-contrast="none">; </span><span data-contrast="none">// Only one class in our case</span> <br /><span data-contrast="none">const</span><span data-contrast="none"> boxes = tf.tidy(() =&gt; {</span> <br /><span data-contrast="none">const</span><span data-contrast="none"> w = results.slice([</span><span data-contrast="none">0</span><span data-contrast="none">, </span><span data-contrast="none">0</span><span data-contrast="none">, </span><span data-contrast="none">2</span><span data-contrast="none">], [</span><span data-contrast="none">-1</span><span data-contrast="none">, </span><span data-contrast="none">-1</span><span data-contrast="none">, </span><span data-contrast="none">1</span><span data-contrast="none">]); </span><span data-contrast="none">// Get width</span> <br /><span data-contrast="none">const</span><span data-contrast="none"> h = results.slice([</span><span data-contrast="none">0</span><span data-contrast="none">, </span><span data-contrast="none">0</span><span data-contrast="none">, </span><span data-contrast="none">3</span><span data-contrast="none">], [</span><span data-contrast="none">-1</span><span data-contrast="none">, </span><span data-contrast="none">-1</span><span data-contrast="none">, </span><span data-contrast="none">1</span><span data-contrast="none">]); </span><span data-contrast="none">// Get height</span> <br /><span data-contrast="none">const</span><span data-contrast="none"> x1 = tf.sub(results.slice([</span><span data-contrast="none">0</span><span data-contrast="none">, </span><span data-contrast="none">0</span><span data-contrast="none">, </span><span data-contrast="none">0</span><span data-contrast="none">], [</span><span data-contrast="none">-1</span><span data-contrast="none">, </span><span data-contrast="none">-1</span><span data-contrast="none">, </span><span data-contrast="none">1</span><span data-contrast="none">]), tf.div(w, </span><span data-contrast="none">2</span><span data-contrast="none">)); </span><span data-contrast="none">// Get x1</span><span data-ccp-props="{&quot;134245417&quot;:false,&quot;201341983&quot;:0,&quot;335559740&quot;:360,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span><br /><br /><span data-contrast="none">const</span><span data-contrast="none"> y1 = tf.sub(results.slice([</span><span data-contrast="none">0</span><span data-contrast="none">, </span><span data-contrast="none">0</span><span data-contrast="none">, </span><span data-contrast="none">1</span><span data-contrast="none">], [</span><span data-contrast="none">-1</span><span data-contrast="none">, </span><span data-contrast="none">-1</span><span data-contrast="none">, </span><span data-contrast="none">1</span><span data-contrast="none">]), tf.div(h, </span><span data-contrast="none">2</span><span data-contrast="none">)); </span><span data-contrast="none">// Get y1</span> <br /><span data-contrast="none">return</span><span data-contrast="none"> tf.concat([y1, x1, y1.add(h), x1.add(w)], </span><span data-contrast="none">2</span><span data-contrast="none">).squeeze();</span> <br /><span data-contrast="none">});</span><span data-ccp-props="{&quot;134245417&quot;:false,&quot;201341983&quot;:0,&quot;335559740&quot;:360,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></pre>						</div>
				</div>
				<div class="elementor-element elementor-element-70bdd06 elementor-widget elementor-widget-text-editor" data-id="70bdd06" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Aby wyodrębnić klasy i poziomy ufności dla każdego obiektu:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-4e859a7 elementor-widget elementor-widget-text-editor" data-id="4e859a7" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<pre><span class="TextRun Highlight SCXW92870568 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW92870568 BCX0">const</span></span><span class="TextRun Highlight SCXW92870568 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW92870568 BCX0"> numClass = labels.length;</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW92870568 BCX0"><span class="SCXW92870568 BCX0"> </span><br class="SCXW92870568 BCX0" /></span><span class="TextRun Highlight SCXW92870568 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW92870568 BCX0">const</span></span><span class="TextRun Highlight SCXW92870568 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW92870568 BCX0"> [scores, classes] = tf.tidy(() =&gt; {</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW92870568 BCX0"><span class="SCXW92870568 BCX0"> </span><br class="SCXW92870568 BCX0" /></span><span class="TextRun Highlight SCXW92870568 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW92870568 BCX0">const</span></span><span class="TextRun Highlight SCXW92870568 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW92870568 BCX0"> rawData = results.slice([</span></span><span class="TextRun Highlight SCXW92870568 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW92870568 BCX0">0</span></span><span class="TextRun Highlight SCXW92870568 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW92870568 BCX0">, </span></span><span class="TextRun Highlight SCXW92870568 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW92870568 BCX0">0</span></span><span class="TextRun Highlight SCXW92870568 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW92870568 BCX0">, </span></span><span class="TextRun Highlight SCXW92870568 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW92870568 BCX0">4</span></span><span class="TextRun Highlight SCXW92870568 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW92870568 BCX0">], [</span></span><span class="TextRun Highlight SCXW92870568 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW92870568 BCX0">-1</span></span><span class="TextRun Highlight SCXW92870568 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW92870568 BCX0">, </span></span><span class="TextRun Highlight SCXW92870568 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW92870568 BCX0">-1</span></span><span class="TextRun Highlight SCXW92870568 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW92870568 BCX0">, numClass]).squeeze(</span></span><span class="TextRun Highlight SCXW92870568 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW92870568 BCX0">0</span></span><span class="TextRun Highlight SCXW92870568 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW92870568 BCX0">);</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW92870568 BCX0"><span class="SCXW92870568 BCX0"> </span><br class="SCXW92870568 BCX0" /></span><span class="TextRun Highlight SCXW92870568 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW92870568 BCX0">  </span></span><span class="TextRun Highlight SCXW92870568 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW92870568 BCX0">return</span></span><span class="TextRun Highlight SCXW92870568 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW92870568 BCX0"> [rawData.max(</span></span><span class="TextRun Highlight SCXW92870568 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW92870568 BCX0">1</span></span><span class="TextRun Highlight SCXW92870568 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW92870568 BCX0">), rawData.argMax(</span></span><span class="TextRun Highlight SCXW92870568 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW92870568 BCX0">1</span></span><span class="TextRun Highlight SCXW92870568 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW92870568 BCX0">)];</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW92870568 BCX0"><span class="SCXW92870568 BCX0"> </span><br class="SCXW92870568 BCX0" /></span><span class="TextRun Highlight SCXW92870568 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW92870568 BCX0">});</span></span><span class="EOP SCXW92870568 BCX0" data-ccp-props="{&quot;134245417&quot;:false,&quot;201341983&quot;:0,&quot;335559740&quot;:360,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></pre>						</div>
				</div>
				<div class="elementor-element elementor-element-c29f2bf elementor-widget elementor-widget-text-editor" data-id="c29f2bf" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Następnie należy pozbyć się wyników z poziomem ufności poniżej ustalonego progu (u nas był to 0.4):</p>						</div>
				</div>
				<div class="elementor-element elementor-element-2bbe314 elementor-widget elementor-widget-text-editor" data-id="2bbe314" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<pre><span class="TextRun Highlight SCXW227521811 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW227521811 BCX0">const</span></span><span class="TextRun Highlight SCXW227521811 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW227521811 BCX0"> array = </span></span><span class="TextRun Highlight SCXW227521811 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW227521811 BCX0">await</span></span><span class="TextRun Highlight SCXW227521811 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW227521811 BCX0"> scores.array();</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW227521811 BCX0"><span class="SCXW227521811 BCX0"> </span><br class="SCXW227521811 BCX0" /></span><span class="TextRun Highlight SCXW227521811 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW227521811 BCX0">const</span></span><span class="TextRun Highlight SCXW227521811 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW227521811 BCX0"> highConfidenceIndices = array.reduce((acc, value, index) =&gt; {</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW227521811 BCX0"><span class="SCXW227521811 BCX0"> </span><br class="SCXW227521811 BCX0" /></span><span class="TextRun Highlight SCXW227521811 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW227521811 BCX0">  </span></span><span class="TextRun Highlight SCXW227521811 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW227521811 BCX0">if</span></span><span class="TextRun Highlight SCXW227521811 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW227521811 BCX0"> (value &gt; </span></span><span class="TextRun Highlight SCXW227521811 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW227521811 BCX0">0.4</span></span><span class="TextRun Highlight SCXW227521811 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW227521811 BCX0">) acc.push(index);</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW227521811 BCX0"><span class="SCXW227521811 BCX0"> </span><br class="SCXW227521811 BCX0" /></span><span class="TextRun Highlight SCXW227521811 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW227521811 BCX0">  </span></span><span class="TextRun Highlight SCXW227521811 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW227521811 BCX0">return</span></span><span class="TextRun Highlight SCXW227521811 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW227521811 BCX0"> acc;</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW227521811 BCX0"><span class="SCXW227521811 BCX0"> </span><br class="SCXW227521811 BCX0" /></span><span class="TextRun Highlight SCXW227521811 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW227521811 BCX0">}, []);</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW227521811 BCX0"><span class="SCXW227521811 BCX0"> </span><br class="SCXW227521811 BCX0" /></span><span class="LineBreakBlob BlobObject DragDrop SCXW227521811 BCX0"><span class="SCXW227521811 BCX0"> </span><br class="SCXW227521811 BCX0" /></span><span class="TextRun Highlight SCXW227521811 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW227521811 BCX0">const</span></span><span class="TextRun Highlight SCXW227521811 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW227521811 BCX0"> highConfidenceBoxes = boxes.gather(highConfidenceIndices);</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW227521811 BCX0"><span class="SCXW227521811 BCX0"> </span><br class="SCXW227521811 BCX0" /></span><span class="TextRun Highlight SCXW227521811 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW227521811 BCX0">const</span></span><span class="TextRun Highlight SCXW227521811 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW227521811 BCX0"> highConfidenceScores = scores.gather(highConfidenceIndices);</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW227521811 BCX0"><span class="SCXW227521811 BCX0"> </span><br class="SCXW227521811 BCX0" /></span><span class="TextRun Highlight SCXW227521811 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW227521811 BCX0">const</span></span><span class="TextRun Highlight SCXW227521811 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW227521811 BCX0"> highConfidenceClasses = classes.gather(highConfidenceIndices);</span></span><span class="EOP SCXW227521811 BCX0" data-ccp-props="{&quot;134245417&quot;:false,&quot;201341983&quot;:0,&quot;335559740&quot;:360,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></pre>						</div>
				</div>
				<div class="elementor-element elementor-element-6d455b0 elementor-widget elementor-widget-text-editor" data-id="6d455b0" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Na koniec zastosuj Non-Max Suppression (NMS), aby odfiltrować duplikaty, tzn. wykryte obiekty, które się na siebie nakładają:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-a51ed9c elementor-widget elementor-widget-text-editor" data-id="a51ed9c" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<pre><span class="TextRun Highlight SCXW150352841 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW150352841 BCX0">const</span></span><span class="TextRun Highlight SCXW150352841 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW150352841 BCX0"> nms = </span></span><span class="TextRun Highlight SCXW150352841 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW150352841 BCX0">await</span></span><span class="TextRun Highlight SCXW150352841 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW150352841 BCX0"> tf.image.nonMaxSuppressionAsync(highConfidenceBoxes, highConfidenceScores, </span></span><span class="TextRun Highlight SCXW150352841 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW150352841 BCX0">40</span></span><span class="TextRun Highlight SCXW150352841 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW150352841 BCX0">, </span></span><span class="TextRun Highlight SCXW150352841 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW150352841 BCX0">0.45</span></span><span class="TextRun Highlight SCXW150352841 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW150352841 BCX0">, </span></span><span class="TextRun Highlight SCXW150352841 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW150352841 BCX0">0.4</span></span><span class="TextRun Highlight SCXW150352841 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW150352841 BCX0">); </span></span><span class="TextRun Highlight SCXW150352841 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW150352841 BCX0">// NMS to filter boxes</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW150352841 BCX0"><span class="SCXW150352841 BCX0"> </span><br class="SCXW150352841 BCX0" /></span><span class="LineBreakBlob BlobObject DragDrop SCXW150352841 BCX0"><span class="SCXW150352841 BCX0"> </span><br class="SCXW150352841 BCX0" /></span><span class="TextRun Highlight SCXW150352841 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW150352841 BCX0">const</span></span><span class="TextRun Highlight SCXW150352841 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW150352841 BCX0"> boxesData = highConfidenceBoxes.gather(nms, </span></span><span class="TextRun Highlight SCXW150352841 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW150352841 BCX0">0</span></span><span class="TextRun Highlight SCXW150352841 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW150352841 BCX0">); </span></span><span class="TextRun Highlight SCXW150352841 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW150352841 BCX0">// Indexing boxes by NMS index</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW150352841 BCX0"><span class="SCXW150352841 BCX0"> </span><br class="SCXW150352841 BCX0" /></span><span class="TextRun Highlight SCXW150352841 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW150352841 BCX0">const</span></span><span class="TextRun Highlight SCXW150352841 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW150352841 BCX0"> scoresData = highConfidenceScores.gather(nms, </span></span><span class="TextRun Highlight SCXW150352841 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW150352841 BCX0">0</span></span><span class="TextRun Highlight SCXW150352841 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW150352841 BCX0">).dataSync(); </span></span><span class="TextRun Highlight SCXW150352841 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW150352841 BCX0">// Indexing scores by</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW150352841 BCX0"><span class="SCXW150352841 BCX0"> </span><br class="SCXW150352841 BCX0" /></span><span class="TextRun Highlight SCXW150352841 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW150352841 BCX0">const</span></span><span class="TextRun Highlight SCXW150352841 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW150352841 BCX0"> classesData = highConfidenceClasses.gather(nms, </span></span><span class="TextRun Highlight SCXW150352841 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW150352841 BCX0">0</span></span><span class="TextRun Highlight SCXW150352841 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW150352841 BCX0">).dataSync(); </span></span><span class="TextRun Highlight SCXW150352841 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW150352841 BCX0">// Indexing classes by NMS index</span></span><span class="EOP SCXW150352841 BCX0" data-ccp-props="{&quot;134245417&quot;:false,&quot;201341983&quot;:0,&quot;335559740&quot;:360,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></pre>						</div>
				</div>
				<div class="elementor-element elementor-element-a61bead elementor-widget elementor-widget-text-editor" data-id="a61bead" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Ostatnim krokiem jest przeskalowanie współrzędnych, aby dopasować je do kształtu oryginalnego obrazu:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-84b07f0 elementor-widget elementor-widget-text-editor" data-id="84b07f0" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<pre><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0">// Precompute the margins and factors outside the stack</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW260954935 BCX0"><span class="SCXW260954935 BCX0"> </span><br class="SCXW260954935 BCX0" /></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0">const</span></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0"> yMarginTensor = tf.scalar(yMargin);</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW260954935 BCX0"><span class="SCXW260954935 BCX0"> </span><br class="SCXW260954935 BCX0" /></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0">const</span></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0"> xMarginTensor = tf.scalar(xMargin);</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW260954935 BCX0"><span class="SCXW260954935 BCX0"> </span><br class="SCXW260954935 BCX0" /></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0">const</span></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0"> resizeFactorTensor = tf.scalar(resizeFactor);</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW260954935 BCX0"><span class="SCXW260954935 BCX0"> </span><br class="SCXW260954935 BCX0" /></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0">// Slice the boxesData and apply transformations in one step</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW260954935 BCX0"><span class="SCXW260954935 BCX0"> </span><br class="SCXW260954935 BCX0" /></span><span class="LineBreakBlob BlobObject DragDrop SCXW260954935 BCX0"><span class="SCXW260954935 BCX0"> </span><br class="SCXW260954935 BCX0" /></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0">const</span></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0"> [yCoordinates, xCoordinates, height, width] = </span></span><span class="LineBreakBlob BlobObject DragDrop SCXW260954935 BCX0"><span class="SCXW260954935 BCX0"> </span><br class="SCXW260954935 BCX0" /></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0">  [</span></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0">'0'</span></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0">, </span></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0">'1'</span></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0">, </span></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0">'2'</span></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0">, </span></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0">'3'</span></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0">].map((index) =&gt; </span></span><span class="LineBreakBlob BlobObject DragDrop SCXW260954935 BCX0"><span class="SCXW260954935 BCX0"> </span><br class="SCXW260954935 BCX0" /></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0">    boxesData.slice([</span></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0">0</span></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0">, </span></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0">parseInt</span></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0">(index)], [</span></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0">-1</span></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0">, </span></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0">1</span></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0">]).sub(index % </span></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0">2</span></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0"> === </span></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0">0</span></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0"> ? yMarginTensor : xMarginTensor).mul(resizeFactorTensor)</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW260954935 BCX0"><span class="SCXW260954935 BCX0"> </span><br class="SCXW260954935 BCX0" /></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0">);</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW260954935 BCX0"><span class="SCXW260954935 BCX0"> </span><br class="SCXW260954935 BCX0" /></span><span class="LineBreakBlob BlobObject DragDrop SCXW260954935 BCX0"><span class="SCXW260954935 BCX0"> </span><br class="SCXW260954935 BCX0" /></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0">// Stack the tensors without converting to arrays (unless needed)</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW260954935 BCX0"><span class="SCXW260954935 BCX0"> </span><br class="SCXW260954935 BCX0" /></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0">const</span></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0"> bbox = tf.stack([yCoordinates, xCoordinates, height, width], </span></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0">1</span></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0">);</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW260954935 BCX0"><span class="SCXW260954935 BCX0"> </span><br class="SCXW260954935 BCX0" /></span><span class="LineBreakBlob BlobObject DragDrop SCXW260954935 BCX0"><span class="SCXW260954935 BCX0"> </span><br class="SCXW260954935 BCX0" /></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0">// Convert to an array only if absolutely necessary</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW260954935 BCX0"><span class="SCXW260954935 BCX0"> </span><br class="SCXW260954935 BCX0" /></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0">const</span></span><span class="TextRun Highlight SCXW260954935 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW260954935 BCX0"> bboxArray = bbox.arraySync();</span></span><span class="EOP SCXW260954935 BCX0" data-ccp-props="{&quot;134245417&quot;:false,&quot;201341983&quot;:0,&quot;335559740&quot;:360,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></pre>						</div>
				</div>
				<div class="elementor-element elementor-element-b542632 elementor-widget elementor-widget-text-editor" data-id="b542632" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Na końcu możemy zdefiniować funkcję <strong>runInference()</strong>, która zawiera cały opisany powyżej proces wykrywania obiektów. Ta funkcja zawiera przygotowanie obrazu, uruchomienie inferencji modelu oraz przetworzenie wyników. Oto jak wygląda:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-d6642ff elementor-widget elementor-widget-text-editor" data-id="d6642ff" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<pre><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">export</span></span> <span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">async</span></span> <span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">function</span></span> <span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">runInference</span></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">(model, labels, image, confidenceThreshold = </span></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">0.4</span></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">) {</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW217269171 BCX0"><span class="SCXW217269171 BCX0"> </span><br class="SCXW217269171 BCX0" /></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">  </span></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">try</span></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0"> {</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW217269171 BCX0"><span class="SCXW217269171 BCX0"> </span><br class="SCXW217269171 BCX0" /></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">    </span></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">// Preprocess the image</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW217269171 BCX0"><span class="SCXW217269171 BCX0"> </span><br class="SCXW217269171 BCX0" /></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">    </span></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">const</span></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0"> imgSize = model.inputs[</span></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">0</span></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">].shape[</span></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">1</span></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">];</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW217269171 BCX0"><span class="SCXW217269171 BCX0"> </span><br class="SCXW217269171 BCX0" /></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">    </span></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">const</span></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0"> { imgTensor: inputTensor, left: xMargin, top: yMargin, factor: resizeFactor } = preprocessImage(image, imgSize);</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW217269171 BCX0"><span class="SCXW217269171 BCX0"> </span><br class="SCXW217269171 BCX0" /></span><span class="LineBreakBlob BlobObject DragDrop SCXW217269171 BCX0"><span class="SCXW217269171 BCX0"> </span><br class="SCXW217269171 BCX0" /></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">    </span></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">// Run inference</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW217269171 BCX0"><span class="SCXW217269171 BCX0"> </span><br class="SCXW217269171 BCX0" /></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">    </span></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">const</span></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0"> prediction = </span></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">await</span></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0"> model.execute(inputTensor);</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW217269171 BCX0"><span class="SCXW217269171 BCX0"> </span><br class="SCXW217269171 BCX0" /></span><span class="LineBreakBlob BlobObject DragDrop SCXW217269171 BCX0"><span class="SCXW217269171 BCX0"> </span><br class="SCXW217269171 BCX0" /></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">    </span></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">// Post-process the model output</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW217269171 BCX0"><span class="SCXW217269171 BCX0"> </span><br class="SCXW217269171 BCX0" /></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">    </span></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">const</span></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0"> [boxes, scores, classes] = </span></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">await</span></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0"> postprocessInferenceResults(prediction, labels, xMargin, yMargin, resizeFactor, confidenceThreshold);</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW217269171 BCX0"><span class="SCXW217269171 BCX0"> </span><br class="SCXW217269171 BCX0" /></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">    </span></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">return</span></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0"> [boxes, scores, classes];</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW217269171 BCX0"><span class="SCXW217269171 BCX0"> </span><br class="SCXW217269171 BCX0" /></span><span class="LineBreakBlob BlobObject DragDrop SCXW217269171 BCX0"><span class="SCXW217269171 BCX0"> </span><br class="SCXW217269171 BCX0" /></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">  } </span></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">catch</span></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0"> (error) {</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW217269171 BCX0"><span class="SCXW217269171 BCX0"> </span><br class="SCXW217269171 BCX0" /></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">    </span></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">throw</span></span> <span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">new</span></span> <span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">Error</span></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">(</span></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">`Inference failed: ${error.message}`</span></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">);</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW217269171 BCX0"><span class="SCXW217269171 BCX0"> </span><br class="SCXW217269171 BCX0" /></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">  }</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW217269171 BCX0"><span class="SCXW217269171 BCX0"> </span><br class="SCXW217269171 BCX0" /></span><span class="TextRun Highlight SCXW217269171 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW217269171 BCX0">}</span></span><span class="EOP SCXW217269171 BCX0" data-ccp-props="{&quot;134245417&quot;:false,&quot;201341983&quot;:0,&quot;335559740&quot;:360,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></pre>						</div>
				</div>
				<div class="elementor-element elementor-element-d087385 elementor-widget elementor-widget-heading" data-id="d087385" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h4 class="elementor-heading-title elementor-size-default">6. Wizualizacja wyników </h4>		</div>
				</div>
				<div class="elementor-element elementor-element-84689b0 elementor-widget elementor-widget-text-editor" data-id="84689b0" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Na samym końcu, gdy mamy już gotowe wyniki detekcji, możemy narysować wykryte obiekty na obrazie:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-d769790 elementor-widget elementor-widget-text-editor" data-id="d769790" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<pre><span class="TextRun Highlight SCXW6384134 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW6384134 BCX0">function</span></span> <span class="TextRun Highlight SCXW6384134 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW6384134 BCX0">drawBoxesOnCanvas</span></span><span class="TextRun Highlight SCXW6384134 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW6384134 BCX0">(ctx, boxes, classes, scores, colors) {</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW6384134 BCX0"><span class="SCXW6384134 BCX0"> </span><br class="SCXW6384134 BCX0" /></span><span class="TextRun Highlight SCXW6384134 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW6384134 BCX0">  boxes.forEach((box, i) =&gt; {</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW6384134 BCX0"><span class="SCXW6384134 BCX0"> </span><br class="SCXW6384134 BCX0" /></span><span class="TextRun Highlight SCXW6384134 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW6384134 BCX0">    </span></span><span class="TextRun Highlight SCXW6384134 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW6384134 BCX0">const</span></span><span class="TextRun Highlight SCXW6384134 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW6384134 BCX0"> [x1, y1, x2, y2] = box;</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW6384134 BCX0"><span class="SCXW6384134 BCX0"> </span><br class="SCXW6384134 BCX0" /></span><span class="TextRun Highlight SCXW6384134 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW6384134 BCX0">    ctx.strokeStyle = colors[classes[i]];</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW6384134 BCX0"><span class="SCXW6384134 BCX0"> </span><br class="SCXW6384134 BCX0" /></span><span class="TextRun Highlight SCXW6384134 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW6384134 BCX0">    ctx.lineWidth = </span></span><span class="TextRun Highlight SCXW6384134 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW6384134 BCX0">2</span></span><span class="TextRun Highlight SCXW6384134 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW6384134 BCX0">;</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW6384134 BCX0"><span class="SCXW6384134 BCX0"> </span><br class="SCXW6384134 BCX0" /></span><span class="TextRun Highlight SCXW6384134 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW6384134 BCX0">    ctx.strokeRect(x1, y1, x2 - x1, y2 - y1);</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW6384134 BCX0"><span class="SCXW6384134 BCX0"> </span><br class="SCXW6384134 BCX0" /></span><span class="TextRun Highlight SCXW6384134 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW6384134 BCX0">    ctx.fillStyle = colors[classes[i]];</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW6384134 BCX0"><span class="SCXW6384134 BCX0"> </span><br class="SCXW6384134 BCX0" /></span><span class="TextRun Highlight SCXW6384134 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW6384134 BCX0">    ctx.fillText(</span></span><span class="TextRun Highlight SCXW6384134 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW6384134 BCX0">`${labels[classes[i]]} (${</span></span><span class="TextRun Highlight SCXW6384134 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW6384134 BCX0">Math</span></span><span class="TextRun Highlight SCXW6384134 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW6384134 BCX0">.round(scores[i] * </span></span><span class="TextRun Highlight SCXW6384134 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW6384134 BCX0">100</span></span><span class="TextRun Highlight SCXW6384134 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW6384134 BCX0">)}%)`</span></span><span class="TextRun Highlight SCXW6384134 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW6384134 BCX0">, x1, y1);</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW6384134 BCX0"><span class="SCXW6384134 BCX0"> </span><br class="SCXW6384134 BCX0" /></span><span class="TextRun Highlight SCXW6384134 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW6384134 BCX0">  });</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW6384134 BCX0"><span class="SCXW6384134 BCX0"> </span><br class="SCXW6384134 BCX0" /></span><span class="TextRun Highlight SCXW6384134 BCX0" lang="PL" xml:lang="PL" data-contrast="none"><span class="NormalTextRun SCXW6384134 BCX0">}</span></span><span class="EOP SCXW6384134 BCX0" data-ccp-props="{&quot;134245417&quot;:false,&quot;201341983&quot;:0,&quot;335559740&quot;:360,&quot;335572071&quot;:0,&quot;335572072&quot;:0,&quot;335572073&quot;:0,&quot;335572075&quot;:0,&quot;335572076&quot;:0,&quot;335572077&quot;:0,&quot;335572079&quot;:0,&quot;335572080&quot;:0,&quot;335572081&quot;:0,&quot;335572083&quot;:0,&quot;335572084&quot;:0,&quot;335572085&quot;:0,&quot;335572087&quot;:0,&quot;335572088&quot;:0,&quot;335572089&quot;:0,&quot;469789798&quot;:&quot;nil&quot;,&quot;469789802&quot;:&quot;nil&quot;,&quot;469789806&quot;:&quot;nil&quot;,&quot;469789810&quot;:&quot;nil&quot;,&quot;469789814&quot;:&quot;nil&quot;}"> </span></pre>						</div>
				</div>
				<div class="elementor-element elementor-element-0a7536b elementor-widget elementor-widget-text-editor" data-id="0a7536b" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Podsumowując, uruchamianie modelu YOLO do wykrywania obiektów bezpośrednio w przeglądarce przy użyciu TensorFlow.js otwiera nowe możliwości dla aplikacji real-time. W tym wpisie przedstawiliśmy wszystkie kroki, od konfiguracji TensorFlow.js, przez ładowanie modeli, przetwarzanie obrazów, uruchamianie wnioskowania, aż po wizualizację wyników, wraz ze wskazówkami jak zrobić to efektywnie. W miarę dalszego zgłębiania tej ciekawej technologii, warto eksperymentować z różnymi modelami, technikami optymalizacji oraz przypadkami użycia, aby w pełni wykorzystać potencjał uczenia maszynowego w aplikacjach internetowych.</p>						</div>
				</div>
		<div class="elementor-element elementor-element-b23a8f8 e-grid e-con-full e-con e-child" data-id="b23a8f8" data-element_type="container">
				<div class="elementor-element elementor-element-2e189c2 elementor-widget elementor-widget-heading" data-id="2e189c2" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h4 class="elementor-heading-title elementor-size-default">Zapraszam do kontaktu, jeśli masz pytania lub chciałbyś podzielić się swoimi implementacjami!</h4>		</div>
				</div>
				<div class="elementor-element elementor-element-a749555 elementor-button-success elementor-align-center elementor-widget elementor-widget-button" data-id="a749555" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
							<div class="elementor-button-wrapper">
					<a class="elementor-button elementor-button-link elementor-size-sm" href="https://inero-software.com/pl/kontakt/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-envelope" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z"></path></svg>			</span>
									<span class="elementor-button-text">KONTAKT</span>
					</span>
					</a>
				</div>
						</div>
				</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-38cdd54 e-con-full e-flex e-con e-child" data-id="38cdd54" data-element_type="container">
				</div>
					</div>
				</div>
				</div>
		<p>Artykuł <a href="https://inero-software.com/pl/sieci-neuronowe-w-przegladarce-przewodnik-na-przykladzie-customowej-sieci-yolo-do-wykrywania-twarzy/">Sieci neuronowe w przeglądarce: Przewodnik na przykładzie customowej sieci YOLO do wykrywania twarzy</a> pochodzi z serwisu <a href="https://inero-software.com/pl">Inero Software - Rozwiązania IT i Konsulting</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6230</post-id>	</item>
		<item>
		<title>Możliwości, które niesie rozwój i popularyzacja sztucznej inteligencji w zarządzaniu przedsiębiorstwami</title>
		<link>https://inero-software.com/pl/mozliwosci-ktore-niesie-rozwoj-i-popularyzacja-sztucznej-inteligencji-w-zarzadzaniu-przedsiebiorstwami/</link>
		
		<dc:creator><![CDATA[Marta Kuprasz]]></dc:creator>
		<pubDate>Mon, 25 Mar 2024 13:35:33 +0000</pubDate>
				<category><![CDATA[Blog_pl]]></category>
		<category><![CDATA[Firma]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[biznes]]></category>
		<category><![CDATA[DocsQuality]]></category>
		<category><![CDATA[LLM]]></category>
		<category><![CDATA[oprogramowanie]]></category>
		<category><![CDATA[optymalizacja procesów biznesowych]]></category>
		<category><![CDATA[sztuczna inteligencja]]></category>
		<category><![CDATA[uczenie maszynowe]]></category>
		<guid isPermaLink="false">https://inero-software.com/?p=5511</guid>

					<description><![CDATA[<p>Rozwój szeroko rozumianej sztucznej inteligencji nabiera tempa. Świadczy o tym powszechne zainteresowanie tą tematyką, a wraz z nim rosnąca liczba artykułów medialnych oraz publikacji. Tym co zwraca szczególną uwagę są dane, które obrazują, ile środków finansowych jest przeznaczanych na  inwestycje w technologie półprzewodnikowe, czyli możliwości obliczeniowe i pamięciowe nowych centrów&#8230;</p>
<p>Artykuł <a href="https://inero-software.com/pl/mozliwosci-ktore-niesie-rozwoj-i-popularyzacja-sztucznej-inteligencji-w-zarzadzaniu-przedsiebiorstwami/">Możliwości, które niesie rozwój i popularyzacja sztucznej inteligencji w zarządzaniu przedsiębiorstwami</a> pochodzi z serwisu <a href="https://inero-software.com/pl">Inero Software - Rozwiązania IT i Konsulting</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><strong></strong></p>
<h3>Rozwój szeroko rozumianej sztucznej inteligencji nabiera tempa. Świadczy o tym powszechne zainteresowanie tą tematyką, a wraz z nim rosnąca liczba artykułów medialnych oraz publikacji. Tym co zwraca szczególną uwagę są dane, które obrazują, ile środków finansowych jest przeznaczanych na  inwestycje w technologie półprzewodnikowe, czyli możliwości obliczeniowe i pamięciowe nowych centrów danych AI. Wszystko wskazuje, że ten rozwój w najbliższych latach będzie bardzo dynamiczny.</h3>
<p>&nbsp;</p>
<p>Raporty takie jak &#8222;The Future of Jobs Report 2020&#8221; opracowany przez Światowe Forum Ekonomiczne oraz badania przeprowadzone przez firmę doradczą McKinsey &amp; Company zawracają uwagę na dynamiczne zmiany na rynku pracy, które będą miały miejsce w najbliższych latach. Oba źródła zgodnie wskazują, że będziemy świadkami znaczących przemian w zakresie zawodów i obowiązków, wynikających z postępu technologicznego, automatyzacji oraz zmieniających się potrzeb gospodarczych i społecznych.</p>
<p>W artykule „Większość zawodów 2030 roku jeszcze nie została wynaleziona”<a href="#_ftn1" name="_ftnref1">[1]</a> możemy przeczytać:</p>
<blockquote><p>„IFTF, organizacja non-profit, która stara się identyfikować pojawiające się trendy i ich wpływ na globalne społeczeństwo, prognozuje, że wiele zadań, obowiązków i zawodów, które dzisiejsi młodzi ludzie będą pełnić w 2030 roku, jeszcze nie istnieje.”</p></blockquote>
<p>źródło: https://www.voanews.com/a/most-of-2030-s-jobs-haven-t-been-invented-yet/4778002.html</p>
<p><a href="https://docsquality.com/pl/2024/03/14/sztuczna-inteligencja-w-zarzadzaniu-dokumentami-strategia-partnerstwa/"><img loading="lazy" decoding="async" data-attachment-id="5512" data-permalink="https://inero-software.com/pl/mozliwosci-ktore-niesie-rozwoj-i-popularyzacja-sztucznej-inteligencji-w-zarzadzaniu-przedsiebiorstwami/baner-pl-dq-25032024/" data-orig-file="https://inero-software.com/wp-content/uploads/2024/03/baner-PL-DQ-25032024.png" data-orig-size="1700,200" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="baner PL DQ 25032024" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2024/03/baner-PL-DQ-25032024-300x35.png" data-large-file="https://inero-software.com/wp-content/uploads/2024/03/baner-PL-DQ-25032024-1030x121.png" tabindex="0" role="button" class=" wp-image-5512 aligncenter" src="https://inero-software.com/wp-content/uploads/2024/03/baner-PL-DQ-25032024-300x35.png" alt="" width="1046" height="122" srcset="https://inero-software.com/wp-content/uploads/2024/03/baner-PL-DQ-25032024-300x35.png 300w, https://inero-software.com/wp-content/uploads/2024/03/baner-PL-DQ-25032024-1030x121.png 1030w, https://inero-software.com/wp-content/uploads/2024/03/baner-PL-DQ-25032024-768x90.png 768w, https://inero-software.com/wp-content/uploads/2024/03/baner-PL-DQ-25032024-1536x181.png 1536w, https://inero-software.com/wp-content/uploads/2024/03/baner-PL-DQ-25032024-1520x179.png 1520w, https://inero-software.com/wp-content/uploads/2024/03/baner-PL-DQ-25032024.png 1700w" sizes="(max-width: 1046px) 100vw, 1046px" /></a>Obecna sytuacja, z punktu widzenia kadry zarządzającej jest to nie lada  wyzwanie. To jak będą się kształtować relacje i obowiązki pomiędzy pracownikami różnych działów, znacząco zmieni sposób pracy wielu organizacji. Identyfikacja tych obszarów oraz ewentualnych konsekwencji wynikających z rewolucji AI będzie decydować o sukcesie w nadchodzących latach.</p>
<blockquote><p>„<strong>W mojej ocenie,</strong> <strong>rozumienie możliwości jakie dają nowe technologie oraz ocena tego jak mogą usprawnić daną organizację, będzie kluczową umiejętnością menadżerską w najbliższej dekadzie. – Podkreśla CEO Inero Software Andrzej Chybicki</strong></p></blockquote>
<p><strong>Wskazuje on na dwa sposoby rozwoju świadomości technologicznej przedsiębiorstw w zakresie AI:</strong></p>
<p>Pierwszym jest eksploracja dostępnych na rynku produktów lub usług, które mogą być zastosowane jako gotowe rozwiązania. Decyzja o ich wdrożeniu zależeć będzie od stopnia, w jakim te rozwiązania mogą być dopasowane do specyficznych procesów wymagających optymalizacji i automatyzacji. Ważne jest jednak, aby być świadomym, że takie oprogramowanie jest dostarczane w formie pewnej &#8222;bryły&#8221;, którą trzeba nie tylko zaimplementować, ale również dostosować procesy wewnątrz organizacji, aby mogły efektywnie współpracować z nowo wdrożonym produktem.</p>
<p>Alternatywą jest tworzenze wewnętrznych rozwiązań opartych o AI, na które już teraz decydują się duże firmy. To na  przykład, projektowanie własnych modeli językowych, dopasowanych do  indywidualnych potrzeb i wymogów danego przedsiębiorstwa. To zwykle wielomilionowe  projekty, ale są też takie, które mogą zamknąć się w mniejszym budżecie.</p>
<p>Jedną z globalnych marek, która zdecydowała się stworzyć własny model LLM jest Amazon. Zadaniem modelu „Rufus” jest wsparcie potencjalnych klientów na każdym etapie ścieżki zakupowej. Celem jego wdrożenia jest asystowanie użytkownikom i optymalizacja procesu składania zamówień.</p>
<blockquote><p>„<strong>W Inero stosujemy podejście produktowo- usługowe. Mając wiedzę jak się rozwiązuje pewne problemy, za pomocą naszych autorskich systemów jak <a href="https://docsquality.com/pl/">DocQuality</a> lub </strong><strong><a href="https://deliverm8-fm.com/#/landing">DeliverM8 &#8211; Freight Matching Platform</a>, </strong><strong>staramy się zaprezentować pewien szablon rozwiązania i jego potencjał. Następnie dostosowujemy go do konkretnych potrzeb i procesów realizowanych w strukturze firmy klienta, a nie na odwrót. Nasze produkty stanowią pewien szablon możliwości jakie dają nowe technologie.” – zaznacza Andrzej Chybicki</strong></p></blockquote>
<p>Jest to rozwiązanie, które ma w sobie dobre cechy podejścia produktowego, ale zarazem daje pewną elastyczność, wynikającą z podejścia usługowego, przy czym koszt jest zdecydowanie  bardziej przystępny. Jako przykład można wskazać aplikację <a href="https://docsquality.com/pl/">DocsQuality</a>, która wykorzystuje techniki uczenia maszynowego do kategoryzacji dokumentów i rozpoznawania nieczytelnych fragmentów plików. Program ten można w łatwy i szybki sposób zintegrować z wewnętrzną infrastrukturą klienta, optymalizując proces obiegu dokumentów o wykrywanie problematycznych dokumentów.</p>
<p><a href="https://docsquality.com/pl/"><img loading="lazy" decoding="async" data-attachment-id="5514" data-permalink="https://inero-software.com/pl/mozliwosci-ktore-niesie-rozwoj-i-popularyzacja-sztucznej-inteligencji-w-zarzadzaniu-przedsiebiorstwami/bane-12022024-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2024/03/bane-12022024-1.png" data-orig-size="1700,200" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="bane 12022024" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2024/03/bane-12022024-1-300x35.png" data-large-file="https://inero-software.com/wp-content/uploads/2024/03/bane-12022024-1-1030x121.png" tabindex="0" role="button" class="wp-image-5514 aligncenter" src="https://inero-software.com/wp-content/uploads/2024/03/bane-12022024-1-300x35.png" alt="" width="1054" height="123" srcset="https://inero-software.com/wp-content/uploads/2024/03/bane-12022024-1-300x35.png 300w, https://inero-software.com/wp-content/uploads/2024/03/bane-12022024-1-1030x121.png 1030w, https://inero-software.com/wp-content/uploads/2024/03/bane-12022024-1-768x90.png 768w, https://inero-software.com/wp-content/uploads/2024/03/bane-12022024-1-1536x181.png 1536w, https://inero-software.com/wp-content/uploads/2024/03/bane-12022024-1-1520x179.png 1520w, https://inero-software.com/wp-content/uploads/2024/03/bane-12022024-1.png 1700w" sizes="(max-width: 1054px) 100vw, 1054px" /></a></p>
<p>Podsumowując, rozwój sztucznej inteligencji w zarządzaniu przedsiębiorstwami niesie ze sobą przestrzeń dla innowacji. Wyzwania związane z adaptacją nowych technologii wymagają strategicznego podejścia, zarówno w kontekście implementacji gotowych rozwiązań, jak i tworzenia wewnętrznych systemów AI. Sukces w nadchodzącej dekadzie będzie zależał od zdolności menedżerskich w zrozumieniu i wykorzystaniu potencjału technologicznego oraz umiejętności zarządzania zmieniającym się zespołem, który będzie wymagał wdrożenia nowych narzędzi, dopasowanych do nowych zadań.</p>
<p><a href="https://app.docsquality.com/register?lang=pl"><img loading="lazy" decoding="async" data-attachment-id="5513" data-permalink="https://inero-software.com/pl/mozliwosci-ktore-niesie-rozwoj-i-popularyzacja-sztucznej-inteligencji-w-zarzadzaniu-przedsiebiorstwami/wzd-png/" data-orig-file="https://inero-software.com/wp-content/uploads/2024/03/wzd.png.jpg" data-orig-size="1780,467" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="wzd.png" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2024/03/wzd.png-300x79.jpg" data-large-file="https://inero-software.com/wp-content/uploads/2024/03/wzd.png-1030x270.jpg" tabindex="0" role="button" class="wp-image-5513 aligncenter" src="https://inero-software.com/wp-content/uploads/2024/03/wzd.png-300x79.jpg" alt="" width="1006" height="265" srcset="https://inero-software.com/wp-content/uploads/2024/03/wzd.png-300x79.jpg 300w, https://inero-software.com/wp-content/uploads/2024/03/wzd.png-1030x270.jpg 1030w, https://inero-software.com/wp-content/uploads/2024/03/wzd.png-768x201.jpg 768w, https://inero-software.com/wp-content/uploads/2024/03/wzd.png-1536x403.jpg 1536w, https://inero-software.com/wp-content/uploads/2024/03/wzd.png-1143x300.jpg 1143w, https://inero-software.com/wp-content/uploads/2024/03/wzd.png.jpg 1780w" sizes="(max-width: 1006px) 100vw, 1006px" /></a></p>
<p>Artykuł <a href="https://inero-software.com/pl/mozliwosci-ktore-niesie-rozwoj-i-popularyzacja-sztucznej-inteligencji-w-zarzadzaniu-przedsiebiorstwami/">Możliwości, które niesie rozwój i popularyzacja sztucznej inteligencji w zarządzaniu przedsiębiorstwami</a> pochodzi z serwisu <a href="https://inero-software.com/pl">Inero Software - Rozwiązania IT i Konsulting</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5511</post-id>	</item>
		<item>
		<title>Optymalizacja procesu gromadzenia danych dzięki algorytmom AI</title>
		<link>https://inero-software.com/pl/optymalizacja-procesu-gromadzenia-danych-dzieki-algorytmom-ai/</link>
		
		<dc:creator><![CDATA[Marta Kuprasz]]></dc:creator>
		<pubDate>Tue, 12 Sep 2023 08:48:59 +0000</pubDate>
				<category><![CDATA[Blog_pl]]></category>
		<category><![CDATA[Firma]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[biznes]]></category>
		<category><![CDATA[digitalizacja]]></category>
		<category><![CDATA[DocsQuality]]></category>
		<category><![CDATA[dokumentacja]]></category>
		<category><![CDATA[integracja]]></category>
		<category><![CDATA[jakość]]></category>
		<category><![CDATA[LLM]]></category>
		<category><![CDATA[modele]]></category>
		<category><![CDATA[NLP]]></category>
		<category><![CDATA[oprogramowanie]]></category>
		<category><![CDATA[sztuczna inteligencja]]></category>
		<guid isPermaLink="false">https://inero-software.com/?p=5052</guid>

					<description><![CDATA[<p>Optymalizacja procesu gromadzenia danych dzięki algorytmom AI W dobie postępu i licznych osiągnięć w dziedzinie przetwarzania języka naturalnego, widzimy coraz większe możliwości w zakresie analizy i wnioskowania, na podstawie danych zgromadzonych w nieustrukturyzowanych archiwach tekstowych i dokumentach. Koniecznym krokiem staje się więc, usprawnienie działań biznesowych i wdrożenie do nich narzędzi&#8230;</p>
<p>Artykuł <a href="https://inero-software.com/pl/optymalizacja-procesu-gromadzenia-danych-dzieki-algorytmom-ai/">Optymalizacja procesu gromadzenia danych dzięki algorytmom AI</a> pochodzi z serwisu <a href="https://inero-software.com/pl">Inero Software - Rozwiązania IT i Konsulting</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h3></h3>
<h1><span style="color: #800080;">Optymalizacja procesu gromadzenia danych dzięki algorytmom AI</span></h1>
<p><span data-contrast="auto"><span class="TextRun SCXW189727610 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW189727610 BCX0"><span class="TextRun SCXW21457896 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW21457896 BCX0"><img loading="lazy" decoding="async" class=" wp-image-2768 alignleft" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" alt="" width="71" height="71" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-50x50.png 50w" sizes="(max-width: 71px) 100vw, 71px" /></span></span></span></span></span></p>
<p>W dobie postępu i licznych osiągnięć w dziedzinie przetwarzania języka naturalnego, widzimy coraz większe możliwości w zakresie analizy i wnioskowania, na podstawie danych zgromadzonych w nieustrukturyzowanych archiwach tekstowych i dokumentach. Koniecznym krokiem staje się więc, usprawnienie działań biznesowych i wdrożenie do nich narzędzi związanych z NLP i LLM. Digitalizacja procesów biznesowych sprawia, że wiele zadań przenosi się do świata wirtualnego, a kontrola i analiza dużej ilości zgromadzonych danych staje się poważnym wyzwaniem.</p>
<p><span id="more-5052"></span></p>
<h2>Kluczowy jest oczywiście czas</h2>
<p>W erze ciągłego pośpiechu, żmudne zadania analityczne, wymagające skupienia, dokładności i sumienności stają się prawdziwym ciężarem dla sprawnych i często rozproszonych zespołów. Nowoczesny biznes działa szybko. Jest wiele branż, w których dbałość o jakość dokumentacji odgrywa bardzo ważną rolę i znacząco wpływa na efektywność pracy w grupie. To między innymi sektor księgowy, kancelarie prawnicze, branża ubezpieczeniowa czy transportowa. Właśnie tą ostatnią posłużymy się jako przykładem. Firmy TSL codziennie realizują nawet po kilkadziesiąt frachtów. Każdy z nich generuje dużą ilość dokumentacji, jak faktury, umowy, polisy, WZ, karty pracy kierowców itp.. Dodając je do wewnętrznego obiegu administracyjnego, łatwo przeoczyć dokument nieczytelny (np. pośpiesznie zeskanowany), który na pewnym etapie zakłóci proces obiegu dokumentów i będzie wymagał korekty, przez co liczba zadań do wykonania znacznie się wydłuży. Może mieć to wpływ na zachwianie przepływów pieniężnych. Optymalizacja procesu gromadzenia danych we właściwej jakości staje się więc kluczowa.</p>
<p>&nbsp;</p>
<h2>Tradycyjne metody stają się mniej skuteczne</h2>
<p>Tradycyjne metody rozwoju oprogramowania stają się mniej skuteczne w przypadku dużych baz danych. Często opierają się wyłącznie na strukturalnie przetwarzanych danych i z góry określonych regułach, które mogą być nieodpowiednie do pracy z nieustrukturyzowanym tekstem i subtelnościami naturalnego pisma. Klasyczne podejście do tworzenia oprogramowania załamuje się w obliczu wielkoskalowych baz wiedzy. Pracując nad DocsQuality obniżamy barierę dostępu zespołów do narzędzi związanych z NLP (programowaniem neurolingwistycznym) i LLM (z ang. Large Language Model), aby mogły one w sposób prosty pobierać dane z archiwów nieustrukturyzowanych tekstów i dokumentów.</p>
<p>Zadaniem oprogramowania <a href="https://docsquality.com/">DocsQuality</a> jest ocena atrybutów dokumentu, przed jego zaimportowaniem do obiegu księgowego. Oceni on w czasie rzeczywistym, między innymi czytelność, wyrazistość i jakość pliku. Oprogramowanie od razu poinformuje o problemach związanych np. z załącznikiem do maila, dając sygnał, że już na tym etapie system nie powinien przyjąć tego dokumentu do obiegu.</p>
<p><img loading="lazy" decoding="async" data-attachment-id="5054" data-permalink="https://inero-software.com/pl/optymalizacja-procesu-gromadzenia-danych-dzieki-algorytmom-ai/page1/" data-orig-file="https://inero-software.com/wp-content/uploads/2023/09/page1.png" data-orig-size="766,282" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="page1" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2023/09/page1-300x110.png" data-large-file="https://inero-software.com/wp-content/uploads/2023/09/page1.png" tabindex="0" role="button" class=" wp-image-5054 aligncenter" src="https://inero-software.com/wp-content/uploads/2023/09/page1-300x110.png" alt="" width="352" height="129" srcset="https://inero-software.com/wp-content/uploads/2023/09/page1-300x110.png 300w, https://inero-software.com/wp-content/uploads/2023/09/page1.png 766w" sizes="(max-width: 352px) 100vw, 352px" /></p>
<h2>Modele NLP i LLM</h2>
<p>Połączenie i zastosowanie modeli NLP i LLM to nowa, innowacyjna metoda oceny jakości dokumentacji. Przy tworzeniu oprogramowania, NLP może być używane do wyodrębnienia tekstu ze zdjęć dokumentów. Jest to związane z techniką OCR (Optical Character Recognition) i pozwala przekształcić tekst z obrazu na tekst edytowalny, który można ocenić pod kątem jakości. Z kolei modele LLM, mogą przeczytać i zrozumieć tekst w dokumencie PDF, pozwalając na ocenę czytelności, gramatyki, składni oraz poprawności ortografii w dokumencie, a w kolejnym etapie analizę, wnioskowanie i rozumienie treści.</p>
<h2>DocsQuality</h2>
<p>Inżynierowie Inero Software wiąż rozwijają funkcjonalności, które oferuje DocsQuality. Tworzenie nowego oprogramowania  w tak dynamicznym środowisku, wymaga ciągłego udoskonalania i szukania optymalnych rozwiązań. Potencjał, który ma w sobie wdrożenie do niego narzędzi związanych z NLP i LLM, pozwoli w przyszłości na jeszcze dokładniejszą analizę dokumentacji.</p>
<p>Jeśli zainteresowało Cię oprogramowanie DocsQuality zapraszamy na stronę <a href="https://docsquality.com/">https://docsquality.com/</a> oraz do kontaktu mailowego <a href="mailto:hi@docsquality.com">hi@docs-quality.com</a>. Chętnie odpowiemy na wszystkie pytania i przedstawimy jego funkcjonalność i sposób wdrożenia. DocsQuality można z powodzeniem zintegrować z działającym systemem ERP.  Pozwoli to na rozszerzenie oferowanych funkcjonalności o skuteczny monitoring jakości dokumentów, pozwalający wyłapywać problematyczne pliki przed ich wdrożeniem do obiegu księgowego.</p>
<p>Artykuł <a href="https://inero-software.com/pl/optymalizacja-procesu-gromadzenia-danych-dzieki-algorytmom-ai/">Optymalizacja procesu gromadzenia danych dzięki algorytmom AI</a> pochodzi z serwisu <a href="https://inero-software.com/pl">Inero Software - Rozwiązania IT i Konsulting</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5052</post-id>	</item>
	</channel>
</rss>
